Repository URL to install this package:
|
Version:
1.1.21 ▾
|
"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;