Current Dev State

This commit is contained in:
Tim Lorsbach
2025-06-23 20:13:54 +02:00
parent b4f9bb277d
commit ded50edaa2
22617 changed files with 4345095 additions and 174 deletions

View File

@ -0,0 +1,22 @@
"use strict";
var callable = require("../../object/valid-callable")
, aFrom = require("../../array/from")
, apply = Function.prototype.apply
, call = Function.prototype.call
, callFn = function (arg, fn) {
return call.call(fn, this, arg);
};
module.exports = function (fn /*, …fnn*/) {
var fns, first;
if (!fn) callable(fn);
fns = [this].concat(aFrom(arguments));
fns.forEach(callable);
fns = fns.reverse();
first = fns[0];
fns = fns.slice(1);
return function (argIgnored) {
return fns.reduce(callFn, apply.call(first, this, arguments));
};
};

View File

@ -0,0 +1,23 @@
"use strict";
var mixin = require("../../object/mixin")
, validFunction = require("../valid-function")
, re = /^\s*function\s*([\0-')-\uffff]+)*\s*\(([\0-(*-\uffff]*)\)\s*\{/;
module.exports = function () {
var match = String(validFunction(this)).match(re), fn;
// eslint-disable-next-line no-new-func
fn = new Function(
"fn",
"return function " +
match[1].trim() +
"(" +
match[2] +
") { return fn.apply(this, arguments); };"
)(this);
try {
mixin(fn, this);
} catch (ignore) {}
return fn;
};

View File

@ -0,0 +1,24 @@
"use strict";
var toPosInt = require("../../number/to-pos-integer")
, callable = require("../../object/valid-callable")
, defineLength = require("../_define-length")
, slice = Array.prototype.slice, apply = Function.prototype.apply
, curry;
curry = function self(fn, length, preArgs) {
return defineLength(function () {
var args = preArgs
? preArgs.concat(slice.call(arguments, 0, length - preArgs.length))
: slice.call(arguments, 0, length);
return args.length === length ? apply.call(fn, this, args)
: self(fn, length, args);
}, preArgs ? length - preArgs.length : length);
};
module.exports = function (/* Length*/) {
var length = arguments[0];
return curry(callable(this),
isNaN(length) ? toPosInt(this.length) : toPosInt(length));
};

View File

@ -0,0 +1,12 @@
"use strict";
module.exports = {
compose: require("./compose"),
copy: require("./copy"),
curry: require("./curry"),
lock: require("./lock"),
not: require("./not"),
partial: require("./partial"),
spread: require("./spread"),
toStringTokens: require("./to-string-tokens")
};

View File

@ -0,0 +1,14 @@
"use strict";
var callable = require("../../object/valid-callable")
, apply = Function.prototype.apply;
module.exports = function (/* …args*/) {
var fn = callable(this)
, args = arguments;
return function () {
return apply.call(fn, this, args);
};
};

View File

@ -0,0 +1,14 @@
"use strict";
var callable = require("../../object/valid-callable")
, defineLength = require("../_define-length")
, apply = Function.prototype.apply;
module.exports = function () {
var fn = callable(this);
return defineLength(function () {
return !apply.call(fn, this, arguments);
}, fn.length);
};

View File

@ -0,0 +1,16 @@
"use strict";
var callable = require("../../object/valid-callable")
, aFrom = require("../../array/from")
, defineLength = require("../_define-length")
, apply = Function.prototype.apply;
module.exports = function (/* …args*/) {
var fn = callable(this)
, args = aFrom(arguments);
return defineLength(function () {
return apply.call(fn, this, args.concat(aFrom(arguments)));
}, fn.length - args.length);
};

View File

@ -0,0 +1,12 @@
"use strict";
var callable = require("../../object/valid-callable")
, apply = Function.prototype.apply;
module.exports = function () {
var fn = callable(this);
return function (args) {
return apply.call(fn, this, args);
};
};

View File

@ -0,0 +1,17 @@
"use strict";
var validFunction = require("../valid-function");
var re1 = /^\s*function[\0-')-\uffff]*\(([\0-(*-\uffff]*)\)\s*\{([\0-\uffff]*)\}\s*$/
, re2 = /^\s*\(?([\0-'*-\uffff]*)\)?\s*=>\s*(\{?[\0-\uffff]*\}?)\s*$/;
module.exports = function () {
var str = String(validFunction(this)), data = str.match(re1);
if (!data) {
data = str.match(re2);
if (!data) throw new Error("Unrecognized string format");
data[1] = data[1].trim();
if (data[2][0] === "{") data[2] = data[2].trim().slice(1, -1);
}
return { args: data[1], body: data[2] };
};