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