{"version":3,"file":"side-channel.11a852d1.js","sources":["../../../node_modules/side-channel/index.js"],"sourcesContent":["'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n"],"names":["GetIntrinsic","require$$0","callBound","require$$1","inspect","require$$2","$TypeError","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","list","key","prev","curr","listGet","objects","node","listSet","value","listHas","sideChannel","$wm","$m","$o","channel"],"mappings":"wIAEA,IAAIA,EAAeC,EACfC,EAAYC,EACZC,EAAUC,EAEVC,EAAaN,EAAa,aAAa,EACvCO,EAAWP,EAAa,YAAa,EAAI,EACzCQ,EAAOR,EAAa,QAAS,EAAI,EAEjCS,EAAcP,EAAU,wBAAyB,EAAI,EACrDQ,EAAcR,EAAU,wBAAyB,EAAI,EACrDS,EAAcT,EAAU,wBAAyB,EAAI,EACrDU,EAAUV,EAAU,oBAAqB,EAAI,EAC7CW,EAAUX,EAAU,oBAAqB,EAAI,EAC7CY,EAAUZ,EAAU,oBAAqB,EAAI,EAU7Ca,EAAc,SAAUC,EAAMC,EAAK,CACtC,QAASC,EAAOF,EAAMG,GAAOA,EAAOD,EAAK,QAAU,KAAMA,EAAOC,EAC/D,GAAIA,EAAK,MAAQF,EAChB,OAAAC,EAAK,KAAOC,EAAK,KACjBA,EAAK,KAAOH,EAAK,KACjBA,EAAK,KAAOG,EACLA,CAGV,EAEIC,EAAU,SAAUC,EAASJ,EAAK,CACrC,IAAIK,EAAOP,EAAYM,EAASJ,CAAG,EACnC,OAAOK,GAAQA,EAAK,KACrB,EACIC,EAAU,SAAUF,EAASJ,EAAKO,EAAO,CAC5C,IAAIF,EAAOP,EAAYM,EAASJ,CAAG,EAC/BK,EACHA,EAAK,MAAQE,EAGbH,EAAQ,KAAO,CACd,IAAKJ,EACL,KAAMI,EAAQ,KACd,MAAOG,CACV,CAEA,EACIC,EAAU,SAAUJ,EAASJ,EAAK,CACrC,MAAO,CAAC,CAACF,EAAYM,EAASJ,CAAG,CAClC,EAEAS,EAAiB,UAA0B,CAC1C,IAAIC,EACAC,EACAC,EACAC,EAAU,CACb,OAAQ,SAAUb,EAAK,CACtB,GAAI,CAACa,EAAQ,IAAIb,CAAG,EACnB,MAAM,IAAIX,EAAW,iCAAmCF,EAAQa,CAAG,CAAC,CAErE,EACD,IAAK,SAAUA,EAAK,CACnB,GAAIV,GAAYU,IAAQ,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,aACjE,GAAIU,EACH,OAAOlB,EAAYkB,EAAKV,CAAG,UAElBT,GACV,GAAIoB,EACH,OAAOhB,EAAQgB,EAAIX,CAAG,UAGnBY,EACH,OAAOT,EAAQS,EAAIZ,CAAG,CAGxB,EACD,IAAK,SAAUA,EAAK,CACnB,GAAIV,GAAYU,IAAQ,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,aACjE,GAAIU,EACH,OAAOhB,EAAYgB,EAAKV,CAAG,UAElBT,GACV,GAAIoB,EACH,OAAOd,EAAQc,EAAIX,CAAG,UAGnBY,EACH,OAAOJ,EAAQI,EAAIZ,CAAG,EAGxB,MAAO,EACP,EACD,IAAK,SAAUA,EAAKO,EAAO,CACtBjB,GAAYU,IAAQ,OAAOA,GAAQ,UAAY,OAAOA,GAAQ,aAC5DU,IACJA,EAAM,IAAIpB,GAEXG,EAAYiB,EAAKV,EAAKO,CAAK,GACjBhB,GACLoB,IACJA,EAAK,IAAIpB,GAEVK,EAAQe,EAAIX,EAAKO,CAAK,IAEjBK,IAMJA,EAAK,CAAE,IAAK,CAAE,EAAE,KAAM,IAAI,GAE3BN,EAAQM,EAAIZ,EAAKO,CAAK,EAEvB,CACH,EACC,OAAOM,CACR"}