123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- 'use strict';
- var GetIntrinsic = require('get-intrinsic');
- var callBound = require('call-bound');
- var inspect = require('object-inspect');
- var getSideChannelMap = require('side-channel-map');
- var $TypeError = require('es-errors/type');
- var $WeakMap = GetIntrinsic('%WeakMap%', true);
- var $weakMapGet = callBound('WeakMap.prototype.get', true);
- var $weakMapSet = callBound('WeakMap.prototype.set', true);
- var $weakMapHas = callBound('WeakMap.prototype.has', true);
- var $weakMapDelete = callBound('WeakMap.prototype.delete', true);
- module.exports = $WeakMap
- ? function getSideChannelWeakMap() {
-
-
-
- var $wm;
- var $m;
-
- var channel = {
- assert: function (key) {
- if (!channel.has(key)) {
- throw new $TypeError('Side channel does not contain ' + inspect(key));
- }
- },
- 'delete': function (key) {
- if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
- if ($wm) {
- return $weakMapDelete($wm, key);
- }
- } else if (getSideChannelMap) {
- if ($m) {
- return $m['delete'](key);
- }
- }
- return false;
- },
- get: function (key) {
- if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
- if ($wm) {
- return $weakMapGet($wm, key);
- }
- }
- return $m && $m.get(key);
- },
- has: function (key) {
- if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
- if ($wm) {
- return $weakMapHas($wm, key);
- }
- }
- return !!$m && $m.has(key);
- },
- set: function (key, value) {
- if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {
- if (!$wm) {
- $wm = new $WeakMap();
- }
- $weakMapSet($wm, key, value);
- } else if (getSideChannelMap) {
- if (!$m) {
- $m = getSideChannelMap();
- }
-
- ($m).set(key, value);
- }
- }
- };
-
- return channel;
- }
- : getSideChannelMap;
|