| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 'use strict';var GetIntrinsic = require('get-intrinsic');var has = require('has');var channel = require('side-channel')();var $TypeError = GetIntrinsic('%TypeError%');var SLOT = {	assert: function (O, slot) {		if (!O || (typeof O !== 'object' && typeof O !== 'function')) {			throw new $TypeError('`O` is not an object');		}		if (typeof slot !== 'string') {			throw new $TypeError('`slot` must be a string');		}		channel.assert(O);	},	get: function (O, slot) {		if (!O || (typeof O !== 'object' && typeof O !== 'function')) {			throw new $TypeError('`O` is not an object');		}		if (typeof slot !== 'string') {			throw new $TypeError('`slot` must be a string');		}		var slots = channel.get(O);		return slots && slots['$' + slot];	},	has: function (O, slot) {		if (!O || (typeof O !== 'object' && typeof O !== 'function')) {			throw new $TypeError('`O` is not an object');		}		if (typeof slot !== 'string') {			throw new $TypeError('`slot` must be a string');		}		var slots = channel.get(O);		return !!slots && has(slots, '$' + slot);	},	set: function (O, slot, V) {		if (!O || (typeof O !== 'object' && typeof O !== 'function')) {			throw new $TypeError('`O` is not an object');		}		if (typeof slot !== 'string') {			throw new $TypeError('`slot` must be a string');		}		var slots = channel.get(O);		if (!slots) {			slots = {};			channel.set(O, slots);		}		slots['$' + slot] = V;	}};if (Object.freeze) {	Object.freeze(SLOT);}module.exports = SLOT;
 |