UNPKG

foop

Version:

interfaces that describe their intentions.

58 lines (55 loc) 7.05 kB
/* eslint complexity: "OFF" */ /* eslint consistent-return: "OFF" */ /* eslint max-len: "OFF" */ /* eslint no-unused-vars: "OFF" */ /* istanbul ignore next: metadata, one is covered, all are covered */ /* prettier-ignore */ /** * @desc just for `.length` of a function, to know how many args * @memberOf fp * * @since 5.0.0 * @param {number} n number of arguments * @param {Function} fn function to wrap * @return {Function} function with params * * @tests fp/arity * * {@link https://github.com/blakeembrey/nary nary} * {@link https://www.npmjs.com/package/util-arity util-arity} * {@link https://docs.microsoft.com/en-us/scripting/javascript/reference/length-property-function-javascript microsoft-func-length} * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/arity mozilla-func-arity} * @see {@link mozilla-func-arity} * @see {@link microsoft-func-length} * @see {@link util-arity} * @see {@link nary} * * @NOTE keeping this means uglify `keep_func_args: false` * * @example * * const wan = one => console.log(one) * arity(1, wan) * => function(one => wan(one)) * * const five = ($1, $2, $3, $4, $5) => console.log.apply(console, arguments) * arity(5, five).length * //=> 5 * */ module.exports = function _arity(n, fn) { // if (n === 0 || n > 5) if (n === 1) { return function($0) { return fn.apply(this, arguments) } } else if (n === 2) { return function($0, $1) { return fn.apply(this, arguments) } } else if (n === 3) { return function($0, $1, $2) { return fn.apply(this, arguments) } } else if (n === 4) { return function($0, $1, $2, $3) { return fn.apply(this, arguments) } } else if (n === 5) { return function($0, $1, $2, $3, $4) { return fn.apply(this, arguments) } } else { return function() { return fn.apply(this, arguments) } } // @NOTE ignoring // else if (n === 6) return function(a0, a1, a2, a3, a4, a5) { return fn.apply(this, arguments) } // else if (n === 7) return function(a0, a1, a2, a3, a4, a5, a6) { return fn.apply(this, arguments) } // else if (n === 8) return function(a0, a1, a2, a3, a4, a5, a6, a7) { return fn.apply(this, arguments) } // else if (n === 9) return function(a0, a1, a2, a3, a4, a5, a6, a7, a8) { return fn.apply(this, arguments) } // else if (n === 10) return function(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) { return fn.apply(this, arguments) } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpdHkuanMiLCJzb3VyY2VzIjpbImFyaXR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludCBjb21wbGV4aXR5OiBcIk9GRlwiICovXG4vKiBlc2xpbnQgY29uc2lzdGVudC1yZXR1cm46IFwiT0ZGXCIgKi9cbi8qIGVzbGludCBtYXgtbGVuOiBcIk9GRlwiICovXG4vKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IFwiT0ZGXCIgKi9cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQ6IG1ldGFkYXRhLCBvbmUgaXMgY292ZXJlZCwgYWxsIGFyZSBjb3ZlcmVkICovXG4vKiBwcmV0dGllci1pZ25vcmUgKi9cbi8qKlxuICogQGRlc2MganVzdCBmb3IgYC5sZW5ndGhgIG9mIGEgZnVuY3Rpb24sIHRvIGtub3cgaG93IG1hbnkgYXJnc1xuICogQG1lbWJlck9mIGZwXG4gKlxuICogQHNpbmNlIDUuMC4wXG4gKiBAcGFyYW0ge251bWJlcn0gbiBudW1iZXIgb2YgYXJndW1lbnRzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBmdW5jdGlvbiB0byB3cmFwXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gZnVuY3Rpb24gd2l0aCBwYXJhbXNcbiAqXG4gKiBAdGVzdHMgZnAvYXJpdHlcbiAqXG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2JsYWtlZW1icmV5L25hcnkgbmFyeX1cbiAqIHtAbGluayBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS91dGlsLWFyaXR5IHV0aWwtYXJpdHl9XG4gKiB7QGxpbmsgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvc2NyaXB0aW5nL2phdmFzY3JpcHQvcmVmZXJlbmNlL2xlbmd0aC1wcm9wZXJ0eS1mdW5jdGlvbi1qYXZhc2NyaXB0IG1pY3Jvc29mdC1mdW5jLWxlbmd0aH1cbiAqIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9GdW5jdGlvbi9hcml0eSBtb3ppbGxhLWZ1bmMtYXJpdHl9XG4gKiBAc2VlIHtAbGluayBtb3ppbGxhLWZ1bmMtYXJpdHl9XG4gKiBAc2VlIHtAbGluayBtaWNyb3NvZnQtZnVuYy1sZW5ndGh9XG4gKiBAc2VlIHtAbGluayB1dGlsLWFyaXR5fVxuICogQHNlZSB7QGxpbmsgbmFyeX1cbiAqXG4gKiBATk9URSBrZWVwaW5nIHRoaXMgbWVhbnMgdWdsaWZ5IGBrZWVwX2Z1bmNfYXJnczogZmFsc2VgXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgY29uc3Qgd2FuID0gb25lID0+IGNvbnNvbGUubG9nKG9uZSlcbiAqICBhcml0eSgxLCB3YW4pXG4gKiAgPT4gZnVuY3Rpb24ob25lID0+IHdhbihvbmUpKVxuICpcbiAqICBjb25zdCBmaXZlID0gKCQxLCAkMiwgJDMsICQ0LCAkNSkgPT4gY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSwgYXJndW1lbnRzKVxuICogIGFyaXR5KDUsIGZpdmUpLmxlbmd0aFxuICogIC8vPT4gNVxuICpcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBfYXJpdHkobiwgZm4pIHtcbiAgLy8gaWYgKG4gPT09IDAgfHwgbiA+IDUpXG4gIGlmIChuID09PSAxKSByZXR1cm4gZnVuY3Rpb24oJDApIHsgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfVxuICBlbHNlIGlmIChuID09PSAyKSByZXR1cm4gZnVuY3Rpb24oJDAsICQxKSB7IHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpIH1cbiAgZWxzZSBpZiAobiA9PT0gMykgcmV0dXJuIGZ1bmN0aW9uKCQwLCAkMSwgJDIpIHsgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfVxuICBlbHNlIGlmIChuID09PSA0KSByZXR1cm4gZnVuY3Rpb24oJDAsICQxLCAkMiwgJDMpIHsgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfVxuICBlbHNlIGlmIChuID09PSA1KSByZXR1cm4gZnVuY3Rpb24oJDAsICQxLCAkMiwgJDMsICQ0KSB7IHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpIH1cbiAgZWxzZSByZXR1cm4gZnVuY3Rpb24oKSB7IHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpIH1cblxuICAvLyBATk9URSBpZ25vcmluZ1xuICAvLyBlbHNlIGlmIChuID09PSA2KSByZXR1cm4gZnVuY3Rpb24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgeyByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKSB9XG4gIC8vIGVsc2UgaWYgKG4gPT09IDcpIHJldHVybiBmdW5jdGlvbihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNikgeyByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKSB9XG4gIC8vIGVsc2UgaWYgKG4gPT09IDgpIHJldHVybiBmdW5jdGlvbihhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcpIHsgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfVxuICAvLyBlbHNlIGlmIChuID09PSA5KSByZXR1cm4gZnVuY3Rpb24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCkgeyByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKSB9XG4gIC8vIGVsc2UgaWYgKG4gPT09IDEwKSByZXR1cm4gZnVuY3Rpb24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkpIHsgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0NBLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTs7RUFFdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUEsT0FBTyxTQUFTLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBQTtPQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBQSxPQUFPLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBQTtPQUN6RSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBQSxPQUFPLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUE7T0FDN0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUEsT0FBTyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBQTtPQUNqRixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBQSxPQUFPLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBQTtPQUNyRixFQUFBLE9BQU8sV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBQTs7Ozs7Ozs7Q0FRNUQ7In0=