Musique/node_modules/ext/lib/private/define-function-length.js

57 lines
1.5 KiB
JavaScript
Raw Permalink Normal View History

"use strict";
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");
}
};