massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / modules / es.weak-map.js
1 'use strict';
2 var global = require('../internals/global');
3 var uncurryThis = require('../internals/function-uncurry-this');
4 var redefineAll = require('../internals/redefine-all');
5 var InternalMetadataModule = require('../internals/internal-metadata');
6 var collection = require('../internals/collection');
7 var collectionWeak = require('../internals/collection-weak');
8 var isObject = require('../internals/is-object');
9 var isExtensible = require('../internals/object-is-extensible');
10 var enforceIternalState = require('../internals/internal-state').enforce;
11 var NATIVE_WEAK_MAP = require('../internals/native-weak-map');
12
13 var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;
14 var InternalWeakMap;
15
16 var wrapper = function (init) {
17   return function WeakMap() {
18     return init(this, arguments.length ? arguments[0] : undefined);
19   };
20 };
21
22 // `WeakMap` constructor
23 // https://tc39.es/ecma262/#sec-weakmap-constructor
24 var $WeakMap = collection('WeakMap', wrapper, collectionWeak);
25
26 // IE11 WeakMap frozen keys fix
27 // We can't use feature detection because it crash some old IE builds
28 // https://github.com/zloirock/core-js/issues/485
29 if (NATIVE_WEAK_MAP && IS_IE11) {
30   InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);
31   InternalMetadataModule.enable();
32   var WeakMapPrototype = $WeakMap.prototype;
33   var nativeDelete = uncurryThis(WeakMapPrototype['delete']);
34   var nativeHas = uncurryThis(WeakMapPrototype.has);
35   var nativeGet = uncurryThis(WeakMapPrototype.get);
36   var nativeSet = uncurryThis(WeakMapPrototype.set);
37   redefineAll(WeakMapPrototype, {
38     'delete': function (key) {
39       if (isObject(key) && !isExtensible(key)) {
40         var state = enforceIternalState(this);
41         if (!state.frozen) state.frozen = new InternalWeakMap();
42         return nativeDelete(this, key) || state.frozen['delete'](key);
43       } return nativeDelete(this, key);
44     },
45     has: function has(key) {
46       if (isObject(key) && !isExtensible(key)) {
47         var state = enforceIternalState(this);
48         if (!state.frozen) state.frozen = new InternalWeakMap();
49         return nativeHas(this, key) || state.frozen.has(key);
50       } return nativeHas(this, key);
51     },
52     get: function get(key) {
53       if (isObject(key) && !isExtensible(key)) {
54         var state = enforceIternalState(this);
55         if (!state.frozen) state.frozen = new InternalWeakMap();
56         return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);
57       } return nativeGet(this, key);
58     },
59     set: function set(key, value) {
60       if (isObject(key) && !isExtensible(key)) {
61         var state = enforceIternalState(this);
62         if (!state.frozen) state.frozen = new InternalWeakMap();
63         nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);
64       } else nativeSet(this, key, value);
65       return this;
66     }
67   });
68 }