| 123456789101112131415161718192021222324252627282930313233343536373839404142 | 'use strict';var GetIntrinsic = require('get-intrinsic');var $gOPD = require('../helpers/getOwnPropertyDescriptor');var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%');var $TypeError = GetIntrinsic('%TypeError%');var every = require('../helpers/every');var IsDataDescriptor = require('./IsDataDescriptor');var IsExtensible = require('./IsExtensible');var ToPropertyDescriptor = require('./ToPropertyDescriptor');var Type = require('./Type');// https://ecma-international.org/ecma-262/6.0/#sec-testintegritylevelmodule.exports = function TestIntegrityLevel(O, level) {	if (Type(O) !== 'Object') {		throw new $TypeError('Assertion failed: Type(O) is not Object');	}	if (level !== 'sealed' && level !== 'frozen') {		throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`');	}	var status = IsExtensible(O);	if (status) {		return false;	}	var theKeys = $gOPN(O);	return theKeys.length === 0 || every(theKeys, function (k) {		var currentDesc = $gOPD(O, k);		if (typeof currentDesc !== 'undefined') {			if (currentDesc.configurable) {				return false;			}			if (level === 'frozen' && IsDataDescriptor(ToPropertyDescriptor(currentDesc)) && currentDesc.writable) {				return false;			}		}		return true;	});};
 |