source: imaps-frontend/node_modules/core-js/internals/internal-state.js

main
Last change on this file was 79a0317, checked in by stefan toskovski <stefantoska84@…>, 2 weeks ago

F4 Finalna Verzija

  • Property mode set to 100644
File size: 2.1 KB
RevLine 
[79a0317]1'use strict';
2var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');
3var globalThis = require('../internals/global-this');
4var isObject = require('../internals/is-object');
5var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
6var hasOwn = require('../internals/has-own-property');
7var shared = require('../internals/shared-store');
8var sharedKey = require('../internals/shared-key');
9var hiddenKeys = require('../internals/hidden-keys');
10
11var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
12var TypeError = globalThis.TypeError;
13var WeakMap = globalThis.WeakMap;
14var set, get, has;
15
16var enforce = function (it) {
17 return has(it) ? get(it) : set(it, {});
18};
19
20var getterFor = function (TYPE) {
21 return function (it) {
22 var state;
23 if (!isObject(it) || (state = get(it)).type !== TYPE) {
24 throw new TypeError('Incompatible receiver, ' + TYPE + ' required');
25 } return state;
26 };
27};
28
29if (NATIVE_WEAK_MAP || shared.state) {
30 var store = shared.state || (shared.state = new WeakMap());
31 /* eslint-disable no-self-assign -- prototype methods protection */
32 store.get = store.get;
33 store.has = store.has;
34 store.set = store.set;
35 /* eslint-enable no-self-assign -- prototype methods protection */
36 set = function (it, metadata) {
37 if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
38 metadata.facade = it;
39 store.set(it, metadata);
40 return metadata;
41 };
42 get = function (it) {
43 return store.get(it) || {};
44 };
45 has = function (it) {
46 return store.has(it);
47 };
48} else {
49 var STATE = sharedKey('state');
50 hiddenKeys[STATE] = true;
51 set = function (it, metadata) {
52 if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
53 metadata.facade = it;
54 createNonEnumerableProperty(it, STATE, metadata);
55 return metadata;
56 };
57 get = function (it) {
58 return hasOwn(it, STATE) ? it[STATE] : {};
59 };
60 has = function (it) {
61 return hasOwn(it, STATE);
62 };
63}
64
65module.exports = {
66 set: set,
67 get: get,
68 has: has,
69 enforce: enforce,
70 getterFor: getterFor
71};
Note: See TracBrowser for help on using the repository browser.