Spaces:
Runtime error
Runtime error
; | |
var test = function (arg1, arg2) { return arg2; }; | |
try { | |
Object.defineProperty(test, "length", { | |
configurable: true, | |
writable: false, | |
enumerable: false, | |
value: 1 | |
}); | |
} | |
catch (ignore) {} | |
if (test.length === 1) { | |
// ES2015+ | |
var desc = { configurable: true, writable: false, enumerable: false }; | |
module.exports = function (length, fn) { | |
if (fn.length === length) return fn; | |
desc.value = length; | |
return Object.defineProperty(fn, "length", desc); | |
}; | |
return; | |
} | |
module.exports = function (length, fn) { | |
if (fn.length === length) return fn; | |
switch (length) { | |
case 0: | |
return function () { return fn.apply(this, arguments); }; | |
case 1: | |
return function (ignored1) { return fn.apply(this, arguments); }; | |
case 2: | |
return function (ignored1, ignored2) { return fn.apply(this, arguments); }; | |
case 3: | |
return function (ignored1, ignored2, ignored3) { return fn.apply(this, arguments); }; | |
case 4: | |
return function (ignored1, ignored2, ignored3, ignored4) { | |
return fn.apply(this, arguments); | |
}; | |
case 5: | |
return function (ignored1, ignored2, ignored3, ignored4, ignored5) { | |
return fn.apply(this, arguments); | |
}; | |
case 6: | |
return function (ignored1, ignored2, ignored3, ignored4, ignored5, ignored6) { | |
return fn.apply(this, arguments); | |
}; | |
case 7: | |
return function (ignored1, ignored2, ignored3, ignored4, ignored5, ignored6, ignored7) { | |
return fn.apply(this, arguments); | |
}; | |
default: | |
throw new Error("Usupported function length"); | |
} | |
}; | |