Sha256: 4c65af1869bb59d8d62db828c90113be38a289a14e8b7f5778eb7f00af9c3904

Contents?: true

Size: 1.72 KB

Versions: 29

Compression:

Stored size: 1.72 KB

Contents

var hiddenKeys = require('../internals/hidden-keys');
var isObject = require('../internals/is-object');
var has = require('../internals/has');
var defineProperty = require('../internals/object-define-property').f;
var uid = require('../internals/uid');
var FREEZING = require('../internals/freezing');

var METADATA = uid('meta');
var id = 0;

var isExtensible = Object.isExtensible || function () {
  return true;
};

var setMetadata = function (it) {
  defineProperty(it, METADATA, { value: {
    objectID: 'O' + ++id, // object ID
    weakData: {}          // weak collections IDs
  } });
};

var fastKey = function (it, create) {
  // return a primitive with prefix
  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
  if (!has(it, METADATA)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return 'F';
    // not necessary to add metadata
    if (!create) return 'E';
    // add missing metadata
    setMetadata(it);
  // return object ID
  } return it[METADATA].objectID;
};

var getWeakData = function (it, create) {
  if (!has(it, METADATA)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return true;
    // not necessary to add metadata
    if (!create) return false;
    // add missing metadata
    setMetadata(it);
  // return the store of weak collections IDs
  } return it[METADATA].weakData;
};

// add metadata on freeze-family methods calling
var onFreeze = function (it) {
  if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);
  return it;
};

var meta = module.exports = {
  REQUIRED: false,
  fastKey: fastKey,
  getWeakData: getWeakData,
  onFreeze: onFreeze
};

hiddenKeys[METADATA] = true;

Version data entries

29 entries across 28 versions & 9 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/core-js/internals/internal-metadata.js
disco_app-0.18.0 test/dummy/node_modules/core-js/internals/internal-metadata.js
disco_app-0.18.2 test/dummy/node_modules/core-js/internals/internal-metadata.js
tang-0.2.1 spec/tang_app/node_modules/core-js/internals/internal-metadata.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/core-js/internals/internal-metadata.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/core-js/internals/internal-metadata.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/core-js/internals/internal-metadata.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/core-js/internals/internal-metadata.js
tang-0.2.0 spec/tang_app/node_modules/core-js/internals/internal-metadata.js
tang-0.1.0 spec/tang_app/node_modules/core-js/internals/internal-metadata.js
tang-0.0.9 spec/tang_app/node_modules/core-js/internals/internal-metadata.js
enju_library-0.3.8 spec/dummy/node_modules/core-js/internals/internal-metadata.js
condenser-0.3 lib/condenser/processors/node_modules/core-js-pure/internals/internal-metadata.js
condenser-0.2 lib/condenser/processors/node_modules/core-js-pure/internals/internal-metadata.js
condenser-0.1 lib/condenser/processors/node_modules/core-js-pure/internals/internal-metadata.js
condenser-0.0.12 lib/condenser/processors/node_modules/core-js-pure/internals/internal-metadata.js
condenser-0.0.11 lib/condenser/processors/node_modules/core-js-pure/internals/internal-metadata.js
condenser-0.0.10 lib/condenser/processors/node_modules/core-js-pure/internals/internal-metadata.js
condenser-0.0.9 lib/condenser/processors/node_modules/core-js-pure/internals/internal-metadata.js
condenser-0.0.8 lib/condenser/processors/node_modules/core-js-pure/internals/internal-metadata.js