UNPKG

@beenotung/tslib

Version:
29 lines (28 loc) 976 B
"use strict"; 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;