Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / internals / internal-state.js
1 var NATIVE_WEAK_MAP = require('../internals/native-weak-map');
2 var global = require('../internals/global');
3 var isObject = require('../internals/is-object');
4 var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
5 var objectHas = require('../internals/has');
6 var shared = require('../internals/shared-store');
7 var sharedKey = require('../internals/shared-key');
8 var hiddenKeys = require('../internals/hidden-keys');
9
10 var WeakMap = global.WeakMap;
11 var set, get, has;
12
13 var enforce = function (it) {
14   return has(it) ? get(it) : set(it, {});
15 };
16
17 var getterFor = function (TYPE) {
18   return function (it) {
19     var state;
20     if (!isObject(it) || (state = get(it)).type !== TYPE) {
21       throw TypeError('Incompatible receiver, ' + TYPE + ' required');
22     } return state;
23   };
24 };
25
26 if (NATIVE_WEAK_MAP) {
27   var store = shared.state || (shared.state = new WeakMap());
28   var wmget = store.get;
29   var wmhas = store.has;
30   var wmset = store.set;
31   set = function (it, metadata) {
32     metadata.facade = it;
33     wmset.call(store, it, metadata);
34     return metadata;
35   };
36   get = function (it) {
37     return wmget.call(store, it) || {};
38   };
39   has = function (it) {
40     return wmhas.call(store, it);
41   };
42 } else {
43   var STATE = sharedKey('state');
44   hiddenKeys[STATE] = true;
45   set = function (it, metadata) {
46     metadata.facade = it;
47     createNonEnumerableProperty(it, STATE, metadata);
48     return metadata;
49   };
50   get = function (it) {
51     return objectHas(it, STATE) ? it[STATE] : {};
52   };
53   has = function (it) {
54     return objectHas(it, STATE);
55   };
56 }
57
58 module.exports = {
59   set: set,
60   get: get,
61   has: has,
62   enforce: enforce,
63   getterFor: getterFor
64 };