| | |
| | | var NATIVE_WEAK_MAP = require('../internals/native-weak-map'); |
| | | var global = require('../internals/global'); |
| | | var uncurryThis = require('../internals/function-uncurry-this'); |
| | | var isObject = require('../internals/is-object'); |
| | | var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); |
| | | var hasOwn = require('../internals/has-own-property'); |
| | |
| | | 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; |
| | | |
| | |
| | | |
| | | if (NATIVE_WEAK_MAP || shared.state) { |
| | | var store = shared.state || (shared.state = new WeakMap()); |
| | | var wmget = store.get; |
| | | var wmhas = store.has; |
| | | var wmset = store.set; |
| | | var wmget = uncurryThis(store.get); |
| | | var wmhas = uncurryThis(store.has); |
| | | var wmset = uncurryThis(store.set); |
| | | set = function (it, metadata) { |
| | | if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); |
| | | if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED); |
| | | metadata.facade = it; |
| | | wmset.call(store, it, metadata); |
| | | wmset(store, it, metadata); |
| | | return metadata; |
| | | }; |
| | | get = function (it) { |
| | | return wmget.call(store, it) || {}; |
| | | return wmget(store, it) || {}; |
| | | }; |
| | | has = function (it) { |
| | | return wmhas.call(store, it); |
| | | return wmhas(store, it); |
| | | }; |
| | | } else { |
| | | var STATE = sharedKey('state'); |