1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 'use strict';
- var GetIntrinsic = require('get-intrinsic');
- var callBound = require('call-bound');
- var inspect = require('object-inspect');
- var $TypeError = require('es-errors/type');
- var $Map = GetIntrinsic('%Map%', true);
- var $mapGet = callBound('Map.prototype.get', true);
- var $mapSet = callBound('Map.prototype.set', true);
- var $mapHas = callBound('Map.prototype.has', true);
- var $mapDelete = callBound('Map.prototype.delete', true);
- var $mapSize = callBound('Map.prototype.size', true);
- module.exports = !!$Map && function getSideChannelMap() {
-
-
-
- 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 ($m) {
- var result = $mapDelete($m, key);
- if ($mapSize($m) === 0) {
- $m = void undefined;
- }
- return result;
- }
- return false;
- },
- get: function (key) {
- if ($m) {
- return $mapGet($m, key);
- }
- },
- has: function (key) {
- if ($m) {
- return $mapHas($m, key);
- }
- return false;
- },
- set: function (key, value) {
- if (!$m) {
-
- $m = new $Map();
- }
- $mapSet($m, key, value);
- }
- };
-
- return channel;
- };
|