UNPKG

stick-js

Version:

Fast toolkit for functional programming in JS. Provides idioms for referentially transparent expressions, clear separation of mutable and immutable operations, object factories, function calls based on English grammar, and pipe & compose operators.

154 lines 38.2 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.divideBy=exports.discardPrototype=exports.die=exports.defaultToV=exports.defaultTo=exports.deconstructN=exports.deconstruct2=exports.deconstruct=exports.containsV=exports.contains=exports.condS=exports.condPredicateDiscard=exports.condPredicate=exports.condN=exports.condElse=exports.cond=exports.concatToM=exports.concatTo=exports.concatM=exports.concat=exports.composeRight=exports.composeAsMethodsRight=exports.composeAsMethods=exports.compose=exports.compactOk=exports.compact=exports.cascade=exports.callOnN=exports.callOn5=exports.callOn4=exports.callOn3=exports.callOn2=exports.callOn1=exports.callOn=exports.bothAgainst=exports.blush=exports.bitwiseXor=exports.bitwiseRightZeroFillBy=exports.bitwiseRightZeroFill=exports.bitwiseRightBy=exports.bitwiseRight=exports.bitwiseOr=exports.bitwiseNot=exports.bitwiseLeftBy=exports.bitwiseLeft=exports.bitwiseAnd=exports.bindTryTo=exports.bindTryPropTo=exports.bindTryProp=exports.bindTry=exports.bindTo=exports.bindPropTo=exports.bindProp=exports.bindLatePropTo=exports.bindLateProp=exports.bind=exports.asteriskN=exports.asterisk5=exports.asterisk4=exports.asterisk3=exports.asterisk2=exports.asterisk1=exports.assocPathM=exports.assocPath=exports.assocM=exports.assoc=exports.arg6=exports.arg5=exports.arg4=exports.arg3=exports.arg2=exports.arg1=exports.arg0=exports.applyToN=exports.applyTo5=exports.applyTo4=exports.applyTo3=exports.applyTo2=exports.applyTo1=exports.appendToM=exports.appendTo=exports.appendM=exports.append=exports.anyAgainst=exports.andNot=exports.and=exports.ampersandN=exports.always=exports.allAgainst=exports.againstEither=exports.againstBoth=exports.againstAny=exports.againstAll=exports.addIndex2=exports.addIndex=exports.addCollection2=exports.addCollection=exports.add=exports.T=exports.F=void 0;exports.mapTuples=exports.mapKeys=exports.map=exports.lte=exports.lt=exports.list=exports.lets6=exports.lets5=exports.lets4=exports.lets3=exports.lets2=exports.lets1=exports.lets=exports.letV=exports.letS=exports.letNV=exports.letN=exports.last=exports.keys=exports.join=exports.isYes=exports.isType=exports.isTruthy=exports.isTrue=exports.isSymbol=exports.isString=exports.isSet=exports.isRegExp=exports.isObject=exports.isNumber=exports.isNo=exports.isMap=exports.isInteger=exports.isFunction=exports.isFalsy=exports.isFalse=exports.isDate=exports.isBoolean=exports.isArray=exports.invoke=exports.ifYes=exports.ifXReplaceStrFlags=exports.ifXReplaceStr=exports.ifXReplace=exports.ifTruthy=exports.ifTrue=exports.ifReplace=exports.ifPredicateWithResults=exports.ifPredicateV=exports.ifPredicateResults=exports.ifPredicate=exports.ifOk=exports.ifNotOk=exports.ifNo=exports.ifNil=exports.ifHasIn=exports.ifHas=exports.ifFalsy=exports.ifFalse=exports.ifBind=exports.ifAlways=exports.id=exports.head=exports.hasIn=exports.has=exports.guard_=exports.guardV=exports.guard=exports.gte=exports.gt=exports.getType=exports.fromPairs=exports.flip5=exports.flip4=exports.flip3=exports.flip=exports.flattenPrototype=exports.findWithIndex=exports.findIndex=exports.find=exports.filter=exports.factoryStatics=exports.factoryProps=exports.factoryInit=exports.factory=exports.exception=exports.eq=exports.eitherAgainst=exports.eachObjIn=exports.eachObj=exports.each=exports.drop=exports.dotN=exports.dot5=exports.dot4=exports.dot3=exports.dot2=exports.dot1=exports.dot=exports.divideInto=void 0;exports.rangeToBy=exports.rangeTo=exports.rangeFromByDesc=exports.rangeFromByAsc=exports.rangeFromBy=exports.rangeFrom=exports.raise=exports.provideToN=exports.provideTo5=exports.provideTo4=exports.provideTo3=exports.provideTo2=exports.provideTo1=exports.provideTo=exports.propOf=exports.prop=exports.prependToM=exports.prependTo=exports.prependM=exports.prepend=exports.precatTo=exports.precat=exports.plus=exports.pipe=exports.pathOf=exports.path=exports.passToN=exports.passTo=exports.otherwise=exports.orNot=exports.or=exports.ok=exports.notOk=exports.not=exports.noop=exports.nil=exports.neuN=exports.neu5=exports.neu4=exports.neu3=exports.neu2=exports.neu1=exports.neu=exports.ne=exports.multiply=exports.moduloWholePart=exports.modulo=exports.mixinPreNM=exports.mixinPreM=exports.mixinNM=exports.mixinM=exports.minus=exports.mergeWith=exports.mergeWhen=exports.mergeToSym=exports.mergeToMSym=exports.mergeToM=exports.mergeTo=exports.mergeSym=exports.mergeMSym=exports.mergeM=exports.mergeInToSym=exports.mergeInToMSym=exports.mergeInToM=exports.mergeInTo=exports.mergeInSym=exports.mergeInMSym=exports.mergeInM=exports.mergeIn=exports.mergeAllIn=exports.merge=exports.match=exports.mapValues=void 0;Object.defineProperty(exports,"recurry",{enumerable:true,get:function get(){return _curry.recurry;}});exports.reverseM=exports.reverse=exports.repeatV=exports.repeatSide=exports.repeatF=exports.remapValues=exports.remapTuples=exports.remapKeys=exports.reject=exports.reduceRightC=exports.reduceRight=exports.reduceObjIn=exports.reduceObj=exports.reduceAbort=exports.reduce=exports.recurry2=void 0;Object.defineProperty(exports,"roll",{enumerable:true,get:function get(){return _curry.roll;}});exports.spreadTo=exports.split=exports.sideN=exports.side5=exports.side4=exports.side3=exports.side2=exports.side1=exports.side=void 0;exports.zipAll=exports.xReplaceStrFlags=exports.xReplaceStr=exports.xReplace=exports.xRegExpStr=exports.xRegExpFlags=exports.xRegExp=exports.xMatchStrFlags=exports.xMatchStr=exports.xMatchGlobal=exports.xMatch=exports.withFilter=exports.whenYes=exports.whenTruthy=exports.whenTrue=exports.whenPredicateWithResults=exports.whenPredicateV=exports.whenPredicateResults=exports.whenPredicate=exports.whenOk=exports.whenNotOk=exports.whenNo=exports.whenNil=exports.whenHasIn=exports.whenHas=exports.whenFalsy=exports.whenFalse=exports.whenBind=exports.whenAlways=exports.values=exports.updatePathM=exports.updatePath=exports.updateM=exports.update=exports.tryCatch=exports.toThe=exports.toPairs=exports.timesV=exports.timesSide=exports.timesF=exports.tap=exports.take=exports.tail=exports.subtractFrom=exports.subtract=exports.sprintfN=exports.sprintf1=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _curry=require("./curry.js");var _internal=require("./internal.js");var _manual=require("./manual.js");var _operator=require("./operator.js");var _map=require("./map.js");function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2.default)(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}var pipe=exports.pipe=_manual.pipe;var composeRight=exports.composeRight=_manual.composeRight;var compose=exports.compose=_manual.compose;var composeAsMethodsRight=exports.composeAsMethodsRight=_manual.composeAsMethodsRight;var composeAsMethods=exports.composeAsMethods=_manual.composeAsMethods;// @todo composeAsMany(Left/Right), composeAsMany(Left/Right)N /* * Similar to `ramda.uncurryN`, but faster, as it has fewer features. * * We use this function internally; a more useful version for most cases is `recurry`. * * Takes a manually curried function like * * f = a => b => ... => z => body * * And produces a new function `g`, which can be called like * * g (a, b, ..., z) * * Caveats: * * `g` is curried, but only if you use the manual style: * * g (1) (2) (3) * * and not * * g (1, 2) (3) * * `g` does not have a well-defined arity, i.e., `g.length` is not useful. If this is a problem, * consider using `ramda.uncurryN`, which (despite the name) results in a curried function which can * be called using either style and which also has a well-defined arity. *//* * Takes a manually curried function and allows it to be called using either of the two calling * styles. * * const add = recurry (3) ( * (x) => (y) => (z) => x + y + z, * ) * add (1) (2) (3) = 6 * add (1, 2) (3) = 6 * add (1, 2, 3) = 6 * * Must be called using the manual style. * * As with `roll`, the recurried function does not have a well-defined arity. *//* * @experimental * * Identical to `recurry`, but can be called with either style. * const add = recurry2 (3) (x => y => z => x + y + z) * const add = recurry2 (3, x => y => z => x + y + z) * * This is accomplished by calling `recurry` on itself. */var recurry2=exports.recurry2=(0,_curry.recurry)(2)(_curry.recurry);/* The implementation of `recurry` used in this module; currently identical to * `recurry`. */var _recurry=_curry.recurry;var blush=exports.blush=_manual.always;var always=exports.always=_manual.always;// --- different from R.equals, which considers two different objects equal if their contents are // the same (equivalent). // --- different from R.identical, which has some different semantics involving e.g. 0 and -0. // --- literally just wraps ===. // rationale: must be able to confidently refactor working code which uses === var eq=exports.eq=/*#__PURE__*/_recurry(2)(_manual.eq);var ne=exports.ne=/*#__PURE__*/_recurry(2)(_manual.ne);var gt=exports.gt=/*#__PURE__*/_recurry(2)(_manual.gt);var gte=exports.gte=/*#__PURE__*/_recurry(2)(_manual.gte);var lt=exports.lt=/*#__PURE__*/_recurry(2)(_manual.lt);var lte=exports.lte=/*#__PURE__*/_recurry(2)(_manual.lte);var id=exports.id=function id(x){return x;};var tap=exports.tap=/*#__PURE__*/_recurry(2)(_manual.tap);var dot=exports.dot=/*#__PURE__*/_recurry(2)(_manual.dot);var dot1=exports.dot1=/*#__PURE__*/_recurry(3)(_manual.dot1);var dot2=exports.dot2=/*#__PURE__*/_recurry(4)(_manual.dot2);var dot3=exports.dot3=/*#__PURE__*/_recurry(5)(_manual.dot3);var dot4=exports.dot4=/*#__PURE__*/_recurry(6)(_manual.dot4);var dot5=exports.dot5=/*#__PURE__*/_recurry(7)(_manual.dot5);var dotN=exports.dotN=/*#__PURE__*/_recurry(3)(_manual.dotN);var side=exports.side=/*#__PURE__*/_recurry(2)(_manual.side);var side1=exports.side1=/*#__PURE__*/_recurry(3)(_manual.side1);var side2=exports.side2=/*#__PURE__*/_recurry(4)(_manual.side2);var side3=exports.side3=/*#__PURE__*/_recurry(5)(_manual.side3);var side4=exports.side4=/*#__PURE__*/_recurry(6)(_manual.side4);var side5=exports.side5=/*#__PURE__*/_recurry(7)(_manual.side5);var sideN=exports.sideN=/*#__PURE__*/_recurry(3)(_manual.sideN);/* Note that something like ifNotPredicate would be confusing: * should it match falsy or false? If falsy, it breaks symmetry with ifPredicate; if * false, it behaves differently than ifPredicate (pred >> not), which is also confusing. */var isTrue=exports.isTrue=_manual.isTrue;var isFalse=exports.isFalse=_manual.isFalse;var isYes=exports.isYes=_manual.isYes;var isNo=exports.isNo=_manual.isNo;var isTruthy=exports.isTruthy=isYes;var isFalsy=exports.isFalsy=isNo;var ifPredicate=exports.ifPredicate=/*#__PURE__*/_recurry(4)(_manual.ifPredicate);var whenPredicate=exports.whenPredicate=/*#__PURE__*/_recurry(3)(_manual.whenPredicate);var ifPredicateResults=exports.ifPredicateResults=/*#__PURE__*/_recurry(4)(_manual.ifPredicateResults);var whenPredicateResults=exports.whenPredicateResults=/*#__PURE__*/_recurry(3)(_manual.whenPredicateResults);var ifPredicateWithResults=exports.ifPredicateWithResults=/*#__PURE__*/_recurry(4)(_manual.ifPredicateWithResults);var whenPredicateWithResults=exports.whenPredicateWithResults=/*#__PURE__*/_recurry(3)(_manual.whenPredicateWithResults);var ifPredicateV=exports.ifPredicateV=/*#__PURE__*/_recurry(4)(_manual.ifPredicateV);var whenPredicateV=exports.whenPredicateV=/*#__PURE__*/_recurry(3)(_manual.whenPredicateV);// --- same arity as ifPredicate / whenPredicate, because of composeRight. var ifAlways=exports.ifAlways=/*#__PURE__*/_recurry(4)(_manual.ifAlways);var whenAlways=exports.whenAlways=/*#__PURE__*/_recurry(3)(_manual.whenAlways);var ok=exports.ok=/*#__PURE__*/_manual.ok;var notOk=exports.notOk=/*#__PURE__*/_manual.notOk;var not=exports.not=/*#__PURE__*/_manual.not;var nil=exports.nil=/*#__PURE__*/notOk;var noop=exports.noop=/*#__PURE__*/_manual.noop;// --- we do these here instead of in manual so we don't have to recurry them all // (we use our (recurried) versions of ifPredicate/whenPredicate). var ifOk=exports.ifOk=/*#__PURE__*/ifPredicate(ok);var whenOk=exports.whenOk=/*#__PURE__*/whenPredicate(ok);var ifNotOk=exports.ifNotOk=/*#__PURE__*/ifPredicate(notOk);var whenNotOk=exports.whenNotOk=/*#__PURE__*/whenPredicate(notOk);var ifTrue=exports.ifTrue=/*#__PURE__*/ifPredicate(isTrue);var whenTrue=exports.whenTrue=/*#__PURE__*/whenPredicate(isTrue);var ifFalse=exports.ifFalse=/*#__PURE__*/ifPredicate(isFalse);var whenFalse=exports.whenFalse=/*#__PURE__*/whenPredicate(isFalse);var ifYes=exports.ifYes=/*#__PURE__*/ifPredicate(isYes);var whenYes=exports.whenYes=/*#__PURE__*/whenPredicate(isYes);var ifNo=exports.ifNo=/*#__PURE__*/ifPredicate(isNo);var whenNo=exports.whenNo=/*#__PURE__*/whenPredicate(isNo);var ifNil=exports.ifNil=/*#__PURE__*/ifNotOk;var whenNil=exports.whenNil=/*#__PURE__*/whenNotOk;var ifTruthy=exports.ifTruthy=/*#__PURE__*/ifYes;var whenTruthy=exports.whenTruthy=/*#__PURE__*/whenYes;var ifFalsy=exports.ifFalsy=/*#__PURE__*/ifNo;var whenFalsy=exports.whenFalsy=/*#__PURE__*/whenNo;// --- these have a different calling convention, so their names are a bit misleading based on the // above pattern. var ifHas=exports.ifHas=/*#__PURE__*/_recurry(3)(_manual.ifHas);var whenHas=exports.whenHas=/*#__PURE__*/_recurry(2)(_manual.whenHas);var ifHasIn=exports.ifHasIn=/*#__PURE__*/_recurry(3)(_manual.ifHasIn);var whenHasIn=exports.whenHasIn=/*#__PURE__*/_recurry(2)(_manual.whenHasIn);var ifBind=exports.ifBind=/*#__PURE__*/_recurry(3)(_manual.ifBind);var whenBind=exports.whenBind=/*#__PURE__*/_recurry(2)(_manual.whenBind);var cond=exports.cond=/*#__PURE__*/_manual.cond;var condN=exports.condN=/*#__PURE__*/function condN(blocks){return cond.apply(void 0,(0,_toConsumableArray2.default)(blocks));};var condS=exports.condS=/*#__PURE__*/_recurry(2)(_manual.condS);// ------ exceptions. var exception=exports.exception=/*#__PURE__*/_manual.exception;var raise=exports.raise=/*#__PURE__*/_manual.raise;var tryCatch=exports.tryCatch=/*#__PURE__*/_recurry(3)(_manual.tryCatch);var die=exports.die=/*#__PURE__*/_manual.die;// ------ cascade var cascade=exports.cascade=/*#__PURE__*/function cascade(val){for(var _len=arguments.length,fxs=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){fxs[_key-1]=arguments[_key];}return fxs.reduce(function(a,b){return b(a);},val);};// --------- data. // ------ defaultTo. var defaultTo=exports.defaultTo=/*#__PURE__*/_recurry(2)(_manual.defaultTo);// ------ join, split etc. var split=exports.split=/*#__PURE__*/_recurry(2)(_manual.split);var join=exports.join=/*#__PURE__*/_recurry(2)(_manual.join);// ------ objects. var has=exports.has=/*#__PURE__*/_recurry(2)(_manual.has);var hasIn=exports.hasIn=/*#__PURE__*/_recurry(2)(_manual.hasIn);var prop=exports.prop=/*#__PURE__*/_recurry(2)(_manual.prop);var propOf=exports.propOf=/*#__PURE__*/_recurry(2)(_manual.propOf);// --- only traverses "typeof = 'object'" nodes; thinks like Date result in undefined. var path=exports.path=/*#__PURE__*/_recurry(2)(_manual.path);var pathOf=exports.pathOf=/*#__PURE__*/_recurry(2)(_manual.pathOf);var assoc=exports.assoc=/*#__PURE__*/_recurry(3)(_manual.assoc);var assocM=exports.assocM=/*#__PURE__*/_recurry(3)(_manual.assocM);var assocPath=exports.assocPath=/*#__PURE__*/_recurry(3)(_manual.assocPath);var assocPathM=exports.assocPathM=/*#__PURE__*/_recurry(3)(_manual.assocPathM);var updateM=exports.updateM=/*#__PURE__*/_recurry(3)(_manual.updateM);var update=exports.update=/*#__PURE__*/_recurry(3)(_manual.update);var updatePathM=exports.updatePathM=/*#__PURE__*/_recurry(3)(_manual.updatePathM);var updatePath=exports.updatePath=/*#__PURE__*/_recurry(3)(_manual.updatePath);// ------ append. // --- 4 | appendTo ([1, 2, 3]) // --- ([1, 2, 3]) | append (4) var append=exports.append=/*#__PURE__*/_recurry(2)(_manual.append);var appendTo=exports.appendTo=/*#__PURE__*/_recurry(2)(_manual.appendTo);var appendM=exports.appendM=/*#__PURE__*/_recurry(2)(_manual.appendM);var appendToM=exports.appendToM=/*#__PURE__*/_recurry(2)(_manual.appendToM);// ------ prepend. // --- 1 | prependTo ([2, 3, 4]) // --- ([2, 3, 4]) | prepend (1) var prependTo=exports.prependTo=/*#__PURE__*/_recurry(2)(_manual.prependTo);var prepend=exports.prepend=/*#__PURE__*/_recurry(2)(_manual.prepend);var prependM=exports.prependM=/*#__PURE__*/_recurry(2)(_manual.prependM);var prependToM=exports.prependToM=/*#__PURE__*/_recurry(2)(_manual.prependToM);// --- arrays or strings // --- ramda's concat does more type checking and also allows fantasy land semigroups. // --- [4] | concatTo ([1, 2, 3]) // --- [1, 2, 3] | concat ([4]) // --- [1, 2, 3] | concat ([4]) var concatTo=exports.concatTo=/*#__PURE__*/_recurry(2)(_manual.concatTo);var concat=exports.concat=/*#__PURE__*/_recurry(2)(_manual.concat);var precatTo=exports.precatTo=/*#__PURE__*/concat;var precat=exports.precat=/*#__PURE__*/concatTo;// --- only arrays (strings will throw) var concatToM=exports.concatToM=/*#__PURE__*/_recurry(2)(_manual.concatToM);var concatM=exports.concatM=/*#__PURE__*/_recurry(2)(_manual.concatM);// --- own properties, including null/undefined. // --- 2x faster than Object.assign. // --- @todo: why is it so much faster? // --- reminder: Object.assign and {...} only take own values. // --- { b: 2 } | mergeTo ({ a: 1, b: null }) // --- ({ a: 1, b: null }) | merge ({ b: 2 }) // --- ({ a: 1, b: null }) | merge ({ b: 2 }) // ---- these are the eight basis functions. // they are not composed using our 'decorator' pattern, and the implementation is as fast (and ugly) // possible. var mergeTo=exports.mergeTo=/*#__PURE__*/_recurry(2)(_manual.mergeTo);var merge=exports.merge=/*#__PURE__*/_recurry(2)(_manual.merge);var mergeM=exports.mergeM=/*#__PURE__*/_recurry(2)(_manual.mergeM);var mergeToM=exports.mergeToM=/*#__PURE__*/_recurry(2)(_manual.mergeToM);// --- all enumerable properties (non-own and own) on the src will be copied to the tgt. var mergeInToM=exports.mergeInToM=/*#__PURE__*/_recurry(2)(_manual.mergeInToM);var mergeInM=exports.mergeInM=/*#__PURE__*/_recurry(2)(_manual.mergeInM);// /--- // --- all enumerable properties (non-own and own) on both the src and tgt will be copied to the new // object. var mergeIn=exports.mergeIn=/*#__PURE__*/_recurry(2)(_manual.mergeIn);var mergeInTo=exports.mergeInTo=/*#__PURE__*/_recurry(2)(_manual.mergeInTo);// /--- // /---- basis // --- 'when' forms run the predicate on both the src and tgt, testing for truthiness. var mergeWhen=exports.mergeWhen=/*#__PURE__*/_recurry(3)(_manual.mergeWhen);// --- the 'own'-ness ('in') of the merge function will take effect on both tgt & src // -- not possible to mix and match. var mergeWith=exports.mergeWith=/*#__PURE__*/_recurry(4)(_manual.mergeWith);var mergeAllIn=exports.mergeAllIn=_manual.mergeAllIn;var mergeToMSym=exports.mergeToMSym=_manual.mergeToMSym;var mergeToSym=exports.mergeToSym=_manual.mergeToSym;var mergeMSym=exports.mergeMSym=_manual.mergeMSym;var mergeSym=exports.mergeSym=_manual.mergeSym;var mergeInToMSym=exports.mergeInToMSym=_manual.mergeInToMSym;var mergeInToSym=exports.mergeInToSym=_manual.mergeInToSym;var mergeInMSym=exports.mergeInMSym=_manual.mergeInMSym;var mergeInSym=exports.mergeInSym=_manual.mergeInSym;// ------ map. // --- simple dispatches to Array.prototype functions, but capped. var map=exports.map=/*#__PURE__*/_recurry(2)(_manual.map);var each=exports.each=/*#__PURE__*/_recurry(2)(_manual.each);var reduce=exports.reduce=/*#__PURE__*/_recurry(3)(_manual.reduce);var reduceRight=exports.reduceRight=/*#__PURE__*/_recurry(3)(_manual.reduceRight);var reduceRightC=exports.reduceRightC=/*#__PURE__*/_recurry(3)(_manual.reduceRightC);var reduceAbort=exports.reduceAbort=/*#__PURE__*/_recurry(4)(_manual.reduceAbort);var filter=exports.filter=/*#__PURE__*/_recurry(2)(_manual.filter);var reject=exports.reject=/*#__PURE__*/_recurry(2)(_manual.reject);var find=exports.find=/*#__PURE__*/_recurry(2)(_manual.find);var findIndex=exports.findIndex=/*#__PURE__*/_recurry(2)(_manual.findIndex);var contains=exports.contains=/*#__PURE__*/_recurry(2)(_manual.contains);var containsV=exports.containsV=/*#__PURE__*/_recurry(2)(_manual.containsV);var findWithIndex=exports.findWithIndex=/*#__PURE__*/_recurry(2)(_manual.findWithIndex);var reverseM=exports.reverseM=/*#__PURE__*/dot('reverse');var reverse=exports.reverse=/*#__PURE__*/function reverse(xs){return reduceRight(function(x,acc){return acc.push(x),acc;},[],xs);};// --- undef on empty array, like ramda var last=exports.last=function last(xs){return xs[xs.length-1];};// --- undef on empty array, like ramda var head=exports.head=function head(xs){return xs[0];};var tail=exports.tail=function tail(xs){return xs.slice(1);};var drop=exports.drop=/*#__PURE__*/_recurry(2)(_manual.drop);var take=exports.take=/*#__PURE__*/_recurry(2)(_manual.take);var addIndex=exports.addIndex=/*#__PURE__*/_recurry(2)(_manual.addIndex);var addCollection=exports.addCollection=/*#__PURE__*/_recurry(3)(_manual.addCollection);var addIndex2=exports.addIndex2=/*#__PURE__*/_recurry(3)(_manual.addIndex2);var addCollection2=exports.addCollection2=/*#__PURE__*/_recurry(4)(_manual.addCollection2);var eachObj=exports.eachObj=/*#__PURE__*/_recurry(2)(_manual.eachObj);var eachObjIn=exports.eachObjIn=/*#__PURE__*/_recurry(2)(_manual.eachObjIn);var reduceObj=exports.reduceObj=/*#__PURE__*/_recurry(3)(_manual.reduceObj);var reduceObjIn=exports.reduceObjIn=/*#__PURE__*/_recurry(3)(_manual.reduceObjIn);// --- fs `ampersand` x = map map' fs where map' f = f x var ampersandN=exports.ampersandN=/*#__PURE__*/_recurry(2)(_manual.ampersandN);var asterisk1=exports.asterisk1=/*#__PURE__*/_recurry(2)(_manual.asterisk1);var asterisk2=exports.asterisk2=/*#__PURE__*/_recurry(4)(_manual.asterisk2);var asterisk3=exports.asterisk3=/*#__PURE__*/_recurry(6)(_manual.asterisk3);var asterisk4=exports.asterisk4=/*#__PURE__*/_recurry(8)(_manual.asterisk4);var asterisk5=exports.asterisk5=/*#__PURE__*/_recurry(10)(_manual.asterisk5);var asteriskN=exports.asteriskN=/*#__PURE__*/_recurry(2)(_manual.asteriskN);// --- 'call' and 'provide' always mean pass a context. // --- 'apply' always means 'apply this function to some params' // --- 'pass' means 'pass these params to a function' // --- 'invoke' means just call this function, no context or params. // ------ ; {}.toString | callOn ([]) var callOn=exports.callOn=/*#__PURE__*/_recurry(2)(_manual.callOn);var callOn1=exports.callOn1=/*#__PURE__*/_recurry(3)(_manual.callOn1);var callOn2=exports.callOn2=/*#__PURE__*/_recurry(4)(_manual.callOn2);var callOn3=exports.callOn3=/*#__PURE__*/_recurry(5)(_manual.callOn3);var callOn4=exports.callOn4=/*#__PURE__*/_recurry(6)(_manual.callOn4);var callOn5=exports.callOn5=/*#__PURE__*/_recurry(7)(_manual.callOn5);var callOnN=exports.callOnN=/*#__PURE__*/_recurry(3)(_manual.callOnN);// ------ ; [] | provideTo ({}.toString) var provideTo=exports.provideTo=/*#__PURE__*/_recurry(2)(_manual.provideTo);var provideTo1=exports.provideTo1=/*#__PURE__*/_recurry(3)(_manual.provideTo1);var provideTo2=exports.provideTo2=/*#__PURE__*/_recurry(4)(_manual.provideTo2);var provideTo3=exports.provideTo3=/*#__PURE__*/_recurry(5)(_manual.provideTo3);var provideTo4=exports.provideTo4=/*#__PURE__*/_recurry(6)(_manual.provideTo4);var provideTo5=exports.provideTo5=/*#__PURE__*/_recurry(7)(_manual.provideTo5);var provideToN=exports.provideToN=/*#__PURE__*/_recurry(3)(_manual.provideToN);var invoke=exports.invoke=/*#__PURE__*/_manual.invoke;// ------ sum | applyToN ([1, 2, 3]) var applyTo1=exports.applyTo1=/*#__PURE__*/_recurry(2)(_manual.applyTo1);var applyTo2=exports.applyTo2=/*#__PURE__*/_recurry(3)(_manual.applyTo2);var applyTo3=exports.applyTo3=/*#__PURE__*/_recurry(4)(_manual.applyTo3);var applyTo4=exports.applyTo4=/*#__PURE__*/_recurry(5)(_manual.applyTo4);var applyTo5=exports.applyTo5=/*#__PURE__*/_recurry(6)(_manual.applyTo5);var applyToN=exports.applyToN=/*#__PURE__*/_recurry(2)(_manual.applyToN);// --- passTo is not called apply ... // --- 1 | passTo (double) var passTo=exports.passTo=/*#__PURE__*/_recurry(2)(_manual.passTo);// --- ; [1, 2, 3] | passToN (sum) var passToN=exports.passToN=/*#__PURE__*/_recurry(2)(_manual.passToN);var spreadTo=exports.spreadTo=/*#__PURE__*/_manual.spreadTo;// --- flip first and second args of a curried function, even for functions with more than 2 args // and for manually curried functions, unlike R.flip. // --- does not work with non-curried functions. var flip=exports.flip=/*#__PURE__*/_recurry(3)(_manual.flip);var flip3=exports.flip3=/*#__PURE__*/_recurry(4)(_manual.flip3);var flip4=exports.flip4=/*#__PURE__*/_recurry(5)(_manual.flip4);var flip5=exports.flip5=/*#__PURE__*/_recurry(6)(_manual.flip5);// ------ sprintf var sprintf1=exports.sprintf1=/*#__PURE__*/_recurry(2)(_manual.sprintf1);var sprintfN=exports.sprintfN=/*#__PURE__*/_recurry(2)(_manual.sprintfN);// --- R.zip only takes two. var zipAll=exports.zipAll=function zipAll(){var ret=[];for(var _len2=arguments.length,xss=new Array(_len2),_key2=0;_key2<_len2;_key2++){xss[_key2]=arguments[_key2];}var l=xss[0].length;var _loop=function _loop(i){ret.push(xss.map(function(xs){return xs[i];}));};for(var i=0;i<l;i++){_loop(i);}return ret;};// ------ repeat, side var repeatV=exports.repeatV=/*#__PURE__*/_recurry(2)(_manual.repeatV);var repeatF=exports.repeatF=/*#__PURE__*/_recurry(2)(_manual.repeatF);var repeatSide=exports.repeatSide=/*#__PURE__*/_recurry(2)(_manual.repeatSide);var timesV=exports.timesV=/*#__PURE__*/_recurry(2)(_manual.timesV);var timesF=exports.timesF=/*#__PURE__*/_recurry(2)(_manual.timesF);var timesSide=exports.timesSide=/*#__PURE__*/_recurry(2)(_manual.timesSide);var getType=exports.getType=/*#__PURE__*/_manual.getType;var isType=exports.isType=/*#__PURE__*/_manual.isType;var isFunction=exports.isFunction=/*#__PURE__*/_manual.isFunction;var isArray=exports.isArray=/*#__PURE__*/_manual.isArray;var isObject=exports.isObject=/*#__PURE__*/_manual.isObject;var isNumber=exports.isNumber=/*#__PURE__*/_manual.isNumber;var isRegExp=exports.isRegExp=/*#__PURE__*/_manual.isRegExp;var isBoolean=exports.isBoolean=/*#__PURE__*/_manual.isBoolean;var isString=exports.isString=/*#__PURE__*/_manual.isString;var isSymbol=exports.isSymbol=/*#__PURE__*/_manual.isSymbol;var isDate=exports.isDate=/*#__PURE__*/_manual.isDate;var isSet=exports.isSet=/*#__PURE__*/_manual.isSet;var isMap=exports.isMap=/*#__PURE__*/_manual.isMap;// --- assumed to be a Number. var isInteger=exports.isInteger=function isInteger(x){return x===Math.floor(x);};// --- excl, so it's like ramda. // --- note that `by` should be negative to count down -- we always add. var rangeFromBy=exports.rangeFromBy=/*#__PURE__*/_recurry(3)(_manual.rangeFromBy);var rangeFromByAsc=exports.rangeFromByAsc=/*#__PURE__*/_recurry(3)(_manual.rangeFromByAsc);var rangeFromByDesc=exports.rangeFromByDesc=/*#__PURE__*/_recurry(3)(_manual.rangeFromByDesc);var rangeToBy=exports.rangeToBy=/*#__PURE__*/_recurry(3)(_manual.rangeToBy);// export const rangeToByAsc = /*#__PURE__*/ _recurry (3) (manualRangeToByAsc) // export const rangeToByDesc = /*#__PURE__*/ _recurry (3) (manualRangeToByDesc) var rangeTo=exports.rangeTo=/*#__PURE__*/rangeToBy(1);var rangeFrom=exports.rangeFrom=/*#__PURE__*/rangeFromBy(1);var compact=exports.compact=/*#__PURE__*/filter(Boolean);var compactOk=exports.compactOk=/*#__PURE__*/reject(notOk);// --- turn positional args into a list with those values. var list=exports.list=/*#__PURE__*/function list(){for(var _len3=arguments.length,args=new Array(_len3),_key3=0;_key3<_len3;_key3++){args[_key3]=arguments[_key3];}return args;};// --------- lets / let... var letN=exports.letN=/*#__PURE__*/_manual.letN;var lets=exports.lets=/*#__PURE__*/_manual.lets;var lets1=exports.lets1=/*#__PURE__*/_manual.lets1;var lets2=exports.lets2=/*#__PURE__*/_manual.lets2;var lets3=exports.lets3=/*#__PURE__*/_manual.lets3;var lets4=exports.lets4=/*#__PURE__*/_manual.lets4;var lets5=exports.lets5=/*#__PURE__*/_manual.lets5;var lets6=exports.lets6=/*#__PURE__*/_manual.lets6;var letV=exports.letV=/*#__PURE__*/_manual.letV;var letNV=exports.letNV=/*#__PURE__*/_recurry(2)(_manual.letNV);var letS=exports.letS=/*#__PURE__*/_recurry(2)(_manual.letS);// --------- regex. var match=exports.match=/*#__PURE__*/_recurry(2)(_manual.match);// --- input: regex. var xMatch=exports.xMatch=/*#__PURE__*/_recurry(2)(_manual.xMatch);var xMatchGlobal=exports.xMatchGlobal=/*#__PURE__*/_recurry(3)(_manual.xMatchGlobal);// --- input: string. var xMatchStr=exports.xMatchStr=/*#__PURE__*/_recurry(2)(_manual.xMatchStr);// --- input: string. var xMatchStrFlags=exports.xMatchStrFlags=/*#__PURE__*/_recurry(3)(_manual.xMatchStrFlags);var xRegExp=exports.xRegExp=/*#__PURE__*/_manual.xRegExp;var xRegExpFlags=exports.xRegExpFlags=/*#__PURE__*/_manual.xRegExpFlags;var xRegExpStr=exports.xRegExpStr=/*#__PURE__*/_manual.xRegExpStr;var xReplace=exports.xReplace=/*#__PURE__*/_recurry(3)(_manual.xReplace);var xReplaceStr=exports.xReplaceStr=/*#__PURE__*/_recurry(3)(_manual.xReplaceStr);var xReplaceStrFlags=exports.xReplaceStrFlags=/*#__PURE__*/_recurry(4)(_manual.xReplaceStrFlags);var ifReplace=exports.ifReplace=/*#__PURE__*/_recurry(5)(_manual.ifReplace);var ifXReplace=exports.ifXReplace=/*#__PURE__*/_recurry(5)(_manual.ifXReplace);var ifXReplaceStr=exports.ifXReplaceStr=/*#__PURE__*/_recurry(5)(_manual.ifXReplaceStr);var ifXReplaceStrFlags=exports.ifXReplaceStrFlags=/*#__PURE__*/_recurry(6)(_manual.ifXReplaceStrFlags);// --------- new. var neu=exports.neu=/*#__PURE__*/function neu(x){return new x();};var neu1=exports.neu1=/*#__PURE__*/_recurry(2)(_manual.neu1);var neu2=exports.neu2=/*#__PURE__*/_recurry(3)(_manual.neu2);var neu3=exports.neu3=/*#__PURE__*/_recurry(4)(_manual.neu3);var neu4=exports.neu4=/*#__PURE__*/_recurry(5)(_manual.neu4);var neu5=exports.neu5=/*#__PURE__*/_recurry(6)(_manual.neu5);var neuN=exports.neuN=/*#__PURE__*/_recurry(2)(_manual.neuN);// --- returns a copy with prototype vals discarded. var discardPrototype=exports.discardPrototype=/*#__PURE__*/function discardPrototype(o){return _objectSpread({},o);};// --- returns a copy with prototype vals surfaced. var flattenPrototype=exports.flattenPrototype=/*#__PURE__*/mergeInToM((0,_internal.safeObject)());// --- using rest params to pluck it is about 4 times faster than writing the args out -- but even // the latter can do 1e5 iterations per ms. var arg0=exports.arg0=/*#__PURE__*/function arg0(){return arguments.length<=0?undefined:arguments[0];};var arg1=exports.arg1=/*#__PURE__*/function arg1(){return arguments.length<=1?undefined:arguments[1];};var arg2=exports.arg2=/*#__PURE__*/function arg2(){return arguments.length<=2?undefined:arguments[2];};var arg3=exports.arg3=/*#__PURE__*/function arg3(){return arguments.length<=3?undefined:arguments[3];};var arg4=exports.arg4=/*#__PURE__*/function arg4(){return arguments.length<=4?undefined:arguments[4];};var arg5=exports.arg5=/*#__PURE__*/function arg5(){return arguments.length<=5?undefined:arguments[5];};var arg6=exports.arg6=/*#__PURE__*/function arg6(){return arguments.length<=6?undefined:arguments[6];};var mixinPreM=exports.mixinPreM=/*#__PURE__*/_recurry(2)(_manual.mixinPreM);var mixinM=exports.mixinM=/*#__PURE__*/_recurry(2)(_manual.mixinM);var mixinPreNM=exports.mixinPreNM=/*#__PURE__*/_recurry(2)(_manual.mixinPreNM);var mixinNM=exports.mixinNM=/*#__PURE__*/_recurry(2)(_manual.mixinNM);var factoryProps=exports.factoryProps=/*#__PURE__*/_recurry(2)(_manual.factoryProps);var factoryInit=exports.factoryInit=/*#__PURE__*/_recurry(2)(_manual.factoryInit);var factory=exports.factory=/*#__PURE__*/factoryInit(function(o,props){if(props==null)return;for(var i in props)if(_internal.hasOwnProperty.call(props,i))o[i]=props[i];});var factoryStatics=exports.factoryStatics=/*#__PURE__*/mergeM;// ------ bind // 'log' | bindPropTo (console) // console | bindProp ('log') // --- dies if o[prop] is not a function. var bindPropTo=exports.bindPropTo=/*#__PURE__*/_recurry(2)(_manual.bindPropTo);var bindProp=exports.bindProp=/*#__PURE__*/_recurry(2)(_manual.bindProp);var bindTryPropTo=exports.bindTryPropTo=/*#__PURE__*/_recurry(2)(_manual.bindTryPropTo);var bindTryProp=exports.bindTryProp=/*#__PURE__*/_recurry(2)(_manual.bindTryProp);var bindTryTo=exports.bindTryTo=/*#__PURE__*/_recurry(2)(_manual.bindTryTo);var bindTry=exports.bindTry=/*#__PURE__*/_recurry(2)(_manual.bindTry);// console.log | bindTo (console) // console | bind (console.log) var bindTo=exports.bindTo=/*#__PURE__*/_recurry(2)(_manual.bindTo);var bind=exports.bind=/*#__PURE__*/_recurry(2)(_manual.bind);// --- returns a thunk representing the bind: // doesn't actually try to bind until that function is invoked. var bindLatePropTo=exports.bindLatePropTo=/*#__PURE__*/_recurry(2)(_manual.bindLatePropTo);var bindLateProp=exports.bindLateProp=/*#__PURE__*/_recurry(2)(_manual.bindLateProp);var subtract=exports.subtract=/*#__PURE__*/_recurry(2)(_manual.subtract);var subtractFrom=exports.subtractFrom=/*#__PURE__*/_recurry(2)(_manual.subtractFrom);var minus=exports.minus=/*#__PURE__*/subtract;var add=exports.add=/*#__PURE__*/_recurry(2)(_manual.add);var plus=exports.plus=/*#__PURE__*/add;var multiply=exports.multiply=/*#__PURE__*/_recurry(2)(_manual.multiply);var divideBy=exports.divideBy=/*#__PURE__*/_recurry(2)(_manual.divideBy);var divideInto=exports.divideInto=/*#__PURE__*/_recurry(2)(_manual.divideInto);var modulo=exports.modulo=/*#__PURE__*/_recurry(2)(_manual.modulo);var moduloWholePart=exports.moduloWholePart=/*#__PURE__*/_recurry(2)(_manual.moduloWholePart);var toThe=exports.toThe=/*#__PURE__*/_recurry(2)(_manual.toThe);var T=exports.T=/*#__PURE__*/_manual.T;var F=exports.F=/*#__PURE__*/_manual.F;var condElse=exports.condElse=/*#__PURE__*/T;var condPredicate=exports.condPredicate=/*#__PURE__*/_recurry(2)(_manual.condPredicate);var condPredicateDiscard=exports.condPredicateDiscard=/*#__PURE__*/_recurry(2)(_manual.condPredicateDiscard);var guard=exports.guard=/*#__PURE__*/condPredicate;var guard_=exports.guard_=/*#__PURE__*/condPredicateDiscard;var guardV=exports.guardV=/*#__PURE__*/composeRight(always,guard);var otherwise=exports.otherwise=/*#__PURE__*/condElse;var defaultToV=exports.defaultToV=/*#__PURE__*/composeRight(always,defaultTo);var withFilter=exports.withFilter=/*#__PURE__*/_map.withFilter;var remapKeys=exports.remapKeys=/*#__PURE__*/_map.remapKeys;var remapValues=exports.remapValues=/*#__PURE__*/_map.remapValues;var remapTuples=exports.remapTuples=/*#__PURE__*/_map.remapTuples;var mapKeys=exports.mapKeys=/*#__PURE__*/_map.mapKeys;var mapValues=exports.mapValues=/*#__PURE__*/_map.mapValues;var mapTuples=exports.mapTuples=/*#__PURE__*/_map.mapTuples;// --- @todo deprecate & move to cookbook? var fromPairs=exports.fromPairs=/*#__PURE__*/_map.fromPairs;var toPairs=exports.toPairs=/*#__PURE__*/_map.toPairs;// --- @todo use ownKeys? var keys=exports.keys=/*#__PURE__*/function keys(o){var ret=[];for(var k in o)if(_internal.hasOwnProperty.call(o,k))ret.push(k);return ret;};// --- @todo use ownKeys? var values=exports.values=function values(o){var ret=[];for(var k in o)if(_internal.hasOwnProperty.call(o,k))ret.push(o[k]);return ret;};var againstAll=exports.againstAll=/*#__PURE__*/_recurry(2)(_manual.againstAll);var againstAny=exports.againstAny=/*#__PURE__*/_recurry(2)(_manual.againstAny);var allAgainst=exports.allAgainst=/*#__PURE__*/_recurry(2)(_manual.allAgainst);var anyAgainst=exports.anyAgainst=/*#__PURE__*/_recurry(2)(_manual.anyAgainst);// --- @experimental var bothAgainst=exports.bothAgainst=function bothAgainst(p){return function(){for(var _len4=arguments.length,args=new Array(_len4),_key4=0;_key4<_len4;_key4++){args[_key4]=arguments[_key4];}return allAgainst(p)(args);};};// --- @experimental var eitherAgainst=exports.eitherAgainst=function eitherAgainst(p){return function(){for(var _len5=arguments.length,args=new Array(_len5),_key5=0;_key5<_len5;_key5++){args[_key5]=arguments[_key5];}return anyAgainst(p)(args);};};var againstBoth=exports.againstBoth=/*#__PURE__*/_recurry(3)(_manual.againstBoth);var againstEither=exports.againstEither=/*#__PURE__*/_recurry(3)(_manual.againstEither);var deconstruct=exports.deconstruct=/*#__PURE__*/_recurry(2)(_manual.deconstruct);var deconstruct2=exports.deconstruct2=/*#__PURE__*/_recurry(2)(_manual.deconstruct2);var deconstructN=exports.deconstructN=/*#__PURE__*/_recurry(2)(_manual.deconstructN);var and=exports.and=/*#__PURE__*/_recurry(2)(_manual.and);var andNot=exports.andNot=/*#__PURE__*/_recurry(2)(_manual.andNot);var or=exports.or=/*#__PURE__*/_recurry(2)(_manual.or);var orNot=exports.orNot=/*#__PURE__*/_recurry(2)(_manual.orNot);// ------ bitwise operators var bitwiseNot=exports.bitwiseNot=/*#__PURE__*/_operator.bitwiseNot;var bitwiseAnd=exports.bitwiseAnd=/*#__PURE__*/_recurry(2)(_operator.bitwiseAnd);var bitwiseOr=exports.bitwiseOr=/*#__PURE__*/_recurry(2)(_operator.bitwiseOr);var bitwiseXor=exports.bitwiseXor=/*#__PURE__*/_recurry(2)(_operator.bitwiseXor);var bitwiseLeft=exports.bitwiseLeft=/*#__PURE__*/_recurry(2)(_operator.bitwiseLeft);var bitwiseRight=exports.bitwiseRight=/*#__PURE__*/_recurry(2)(_operator.bitwiseRight);var bitwiseRightZeroFill=exports.bitwiseRightZeroFill=/*#__PURE__*/_recurry(2)(_operator.bitwiseRightZeroFill);var bitwiseLeftBy=exports.bitwiseLeftBy=/*#__PURE__*/_recurry(2)(_operator.bitwiseLeftBy);var bitwiseRightBy=exports.bitwiseRightBy=/*#__PURE__*/_recurry(2)(_operator.bitwiseRightBy);var bitwiseRightZeroFillBy=exports.bitwiseRightZeroFillBy=/*#__PURE__*/_recurry(2)(_operator.bitwiseRightZeroFillBy);