You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'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;
|