first
This commit is contained in:
71
node_modules/core-js/internals/internal-state.js
generated
vendored
Normal file
71
node_modules/core-js/internals/internal-state.js
generated
vendored
Normal file
@ -0,0 +1,71 @@
|
||||
'use strict';
|
||||
var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');
|
||||
var global = require('../internals/global');
|
||||
var isObject = require('../internals/is-object');
|
||||
var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
|
||||
var hasOwn = require('../internals/has-own-property');
|
||||
var shared = require('../internals/shared-store');
|
||||
var sharedKey = require('../internals/shared-key');
|
||||
var hiddenKeys = require('../internals/hidden-keys');
|
||||
|
||||
var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
|
||||
var TypeError = global.TypeError;
|
||||
var WeakMap = global.WeakMap;
|
||||
var set, get, has;
|
||||
|
||||
var enforce = function (it) {
|
||||
return has(it) ? get(it) : set(it, {});
|
||||
};
|
||||
|
||||
var getterFor = function (TYPE) {
|
||||
return function (it) {
|
||||
var state;
|
||||
if (!isObject(it) || (state = get(it)).type !== TYPE) {
|
||||
throw TypeError('Incompatible receiver, ' + TYPE + ' required');
|
||||
} return state;
|
||||
};
|
||||
};
|
||||
|
||||
if (NATIVE_WEAK_MAP || shared.state) {
|
||||
var store = shared.state || (shared.state = new WeakMap());
|
||||
/* eslint-disable no-self-assign -- prototype methods protection */
|
||||
store.get = store.get;
|
||||
store.has = store.has;
|
||||
store.set = store.set;
|
||||
/* eslint-enable no-self-assign -- prototype methods protection */
|
||||
set = function (it, metadata) {
|
||||
if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);
|
||||
metadata.facade = it;
|
||||
store.set(it, metadata);
|
||||
return metadata;
|
||||
};
|
||||
get = function (it) {
|
||||
return store.get(it) || {};
|
||||
};
|
||||
has = function (it) {
|
||||
return store.has(it);
|
||||
};
|
||||
} else {
|
||||
var STATE = sharedKey('state');
|
||||
hiddenKeys[STATE] = true;
|
||||
set = function (it, metadata) {
|
||||
if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);
|
||||
metadata.facade = it;
|
||||
createNonEnumerableProperty(it, STATE, metadata);
|
||||
return metadata;
|
||||
};
|
||||
get = function (it) {
|
||||
return hasOwn(it, STATE) ? it[STATE] : {};
|
||||
};
|
||||
has = function (it) {
|
||||
return hasOwn(it, STATE);
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
set: set,
|
||||
get: get,
|
||||
has: has,
|
||||
enforce: enforce,
|
||||
getterFor: getterFor
|
||||
};
|
Reference in New Issue
Block a user