| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 'use strict';var global = require('../internals/global');var uncurryThis = require('../internals/function-uncurry-this');var defineBuiltIns = require('../internals/define-built-ins');var InternalMetadataModule = require('../internals/internal-metadata');var collection = require('../internals/collection');var collectionWeak = require('../internals/collection-weak');var isObject = require('../internals/is-object');var isExtensible = require('../internals/object-is-extensible');var enforceInternalState = require('../internals/internal-state').enforce;var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;var InternalWeakMap;var wrapper = function (init) {  return function WeakMap() {    return init(this, arguments.length ? arguments[0] : undefined);  };};// `WeakMap` constructor// https://tc39.es/ecma262/#sec-weakmap-constructorvar $WeakMap = collection('WeakMap', wrapper, collectionWeak);// IE11 WeakMap frozen keys fix// We can't use feature detection because it crash some old IE builds// https://github.com/zloirock/core-js/issues/485if (NATIVE_WEAK_MAP && IS_IE11) {  InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);  InternalMetadataModule.enable();  var WeakMapPrototype = $WeakMap.prototype;  var nativeDelete = uncurryThis(WeakMapPrototype['delete']);  var nativeHas = uncurryThis(WeakMapPrototype.has);  var nativeGet = uncurryThis(WeakMapPrototype.get);  var nativeSet = uncurryThis(WeakMapPrototype.set);  defineBuiltIns(WeakMapPrototype, {    'delete': function (key) {      if (isObject(key) && !isExtensible(key)) {        var state = enforceInternalState(this);        if (!state.frozen) state.frozen = new InternalWeakMap();        return nativeDelete(this, key) || state.frozen['delete'](key);      } return nativeDelete(this, key);    },    has: function has(key) {      if (isObject(key) && !isExtensible(key)) {        var state = enforceInternalState(this);        if (!state.frozen) state.frozen = new InternalWeakMap();        return nativeHas(this, key) || state.frozen.has(key);      } return nativeHas(this, key);    },    get: function get(key) {      if (isObject(key) && !isExtensible(key)) {        var state = enforceInternalState(this);        if (!state.frozen) state.frozen = new InternalWeakMap();        return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);      } return nativeGet(this, key);    },    set: function set(key, value) {      if (isObject(key) && !isExtensible(key)) {        var state = enforceInternalState(this);        if (!state.frozen) state.frozen = new InternalWeakMap();        nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);      } else nativeSet(this, key, value);      return this;    }  });}
 |