Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/modules / ___dist / thisless / toBlankObj.js
Size: Mime:
"use strict";

const _require = require("./getOwnPrototypeNames"),
      getOwnPrototypeNames = _require.getOwnPrototypeNames;

let scopedTapDescriptor = false;
/**
* @desc takes all prototype methods,
*       sets them all to enumerable
*       creates a blank object
*       defines the enumerable methods on a blank object
*
* @param {Object} obj
* @return {BlankObject}
* @example Object.create(null, descriptors(obj))
*/

function toBlankObj(obj) {
  const blankObj = Object.create(null);
  getOwnPrototypeNames(obj).forEach(key => {
    let descriptor = Object.getOwnPropertyDescriptor(obj, key);
    descriptor.enumerable = true;

    if (scopedTapDescriptor) {
      descriptor = scopedTapDescriptor(descriptor);
    }

    Object.defineProperty(blankObj, key, descriptor);
  });
  return blankObj;
}

function setDescriptorMiddleware(fn) {
  scopedTapDescriptor = fn;
}

exports.toBlankObj = toBlankObj;
exports.setDescriptorMiddleware = setDescriptorMiddleware;