18c402d5b3bf8ab5b018669ce16579722258a830
[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 sharedKey = require('../internals/shared-key');
7 var hiddenKeys = require('../internals/hidden-keys');
8
9 var WeakMap = global.WeakMap;
10 var set, get, has;
11
12 var enforce = function (it) {
13   return has(it) ? get(it) : set(it, {});
14 };
15
16 var getterFor = function (TYPE) {
17   return function (it) {
18     var state;
19     if (!isObject(it) || (state = get(it)).type !== TYPE) {
20       throw TypeError('Incompatible receiver, ' + TYPE + ' required');
21     } return state;
22   };
23 };
24
25 if (NATIVE_WEAK_MAP) {
26   var store = new WeakMap();
27   var wmget = store.get;
28   var wmhas = store.has;
29   var wmset = store.set;
30   set = function (it, metadata) {
31     wmset.call(store, it, metadata);
32     return metadata;
33   };
34   get = function (it) {
35     return wmget.call(store, it) || {};
36   };
37   has = function (it) {
38     return wmhas.call(store, it);
39   };
40 } else {
41   var STATE = sharedKey('state');
42   hiddenKeys[STATE] = true;
43   set = function (it, metadata) {
44     createNonEnumerableProperty(it, STATE, metadata);
45     return metadata;
46   };
47   get = function (it) {
48     return objectHas(it, STATE) ? it[STATE] : {};
49   };
50   has = function (it) {
51     return objectHas(it, STATE);
52   };
53 }
54
55 module.exports = {
56   set: set,
57   get: get,
58   has: has,
59   enforce: enforce,
60   getterFor: getterFor
61 };