Sha256: 08d79bfd7e091dff8f24368eab12dc2e1a61a70053cb432b61658229e75d4a98

Contents?: true

Size: 1.44 KB

Versions: 10

Compression:

Stored size: 1.44 KB

Contents

var NATIVE_WEAK_MAP = require('../internals/native-weak-map');
var global = require('../internals/global');
var isObject = require('../internals/is-object');
var hide = require('../internals/hide');
var objectHas = require('../internals/has');
var sharedKey = require('../internals/shared-key');
var hiddenKeys = require('../internals/hidden-keys');

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) {
  var store = new WeakMap();
  var wmget = store.get;
  var wmhas = store.has;
  var wmset = store.set;
  set = function (it, metadata) {
    wmset.call(store, it, metadata);
    return metadata;
  };
  get = function (it) {
    return wmget.call(store, it) || {};
  };
  has = function (it) {
    return wmhas.call(store, it);
  };
} else {
  var STATE = sharedKey('state');
  hiddenKeys[STATE] = true;
  set = function (it, metadata) {
    hide(it, STATE, metadata);
    return metadata;
  };
  get = function (it) {
    return objectHas(it, STATE) ? it[STATE] : {};
  };
  has = function (it) {
    return objectHas(it, STATE);
  };
}

module.exports = {
  set: set,
  get: get,
  has: has,
  enforce: enforce,
  getterFor: getterFor
};

Version data entries

10 entries across 10 versions & 3 rubygems

Version Path
condenser-0.0.8 lib/condenser/processors/node_modules/core-js-pure/internals/internal-state.js
jester-data-8.0.0 node_modules/core-js/internals/internal-state.js
ezii-os-5.2.1 node_modules/core-js/internals/internal-state.js
ezii-os-2.0.1 node_modules/core-js/internals/internal-state.js
ezii-os-1.1.0 node_modules/core-js/internals/internal-state.js
ezii-os-1.0.0 node_modules/core-js/internals/internal-state.js
condenser-0.0.7 lib/condenser/processors/node_modules/core-js-pure/internals/internal-state.js
ezii-os-0.0.0.1.0 node_modules/core-js/internals/internal-state.js
ezii-os-0.0.0.0.1 node_modules/core-js/internals/internal-state.js
condenser-0.0.5 lib/condenser/processors/node_modules/core-js-pure/internals/internal-state.js