@beenotung/tslib
Version:
utils library in Typescript
29 lines (28 loc) • 976 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.wrapFunction = void 0;
function wrapFunction_defineProperty(fn, length = fn.length, name = fn.name) {
const f = function () {
return fn.apply(null, arguments);
};
Object.defineProperty(f, 'name', { value: name });
Object.defineProperty(f, 'length', { value: length });
return f;
}
function wrapFunction_newFunction_eval(fn, length = fn.length, name = fn.name) {
const args = new Array(length).fill(0).map((_, i) => 'a' + (i + 1));
const wrapper = new Function('fn', `
return function ${name}(${args}) {
return fn.apply(null, arguments)
}
`);
return wrapper(fn);
}
// for testing only
exports.default = {
wrapFunction_defineProperty,
wrapFunction_newFunction_eval,
};
exports.wrapFunction = 'defineProperty' in Object && typeof Object.defineProperty === 'function'
? wrapFunction_defineProperty
: wrapFunction_newFunction_eval;