rubico 1.9.7 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +5 -0
- package/.eslintrc.js +3 -2
- package/.github/workflows/nodejs.yml +1 -1
- package/AggregateReducer.js +19 -0
- package/AggregateReducer.test.js +82 -0
- package/CHANGELOG.md +22 -1
- package/README.md +158 -81
- package/Transducer.js +75 -26
- package/Transducer.test.js +117 -0
- package/_internal/ComparisonOperator.js +68 -0
- package/_internal/File.js +41 -0
- package/_internal/FlatMappingAsyncIterator.js +4 -4
- package/_internal/FlatMappingIterator.js +1 -1
- package/_internal/TimeInLoopSuite.js +138 -0
- package/_internal/areAnyValuesPromises.js +23 -0
- package/_internal/{arrayAll.js → arrayEvery.js} +4 -4
- package/_internal/arrayExtend.js +3 -2
- package/_internal/arrayFilter.js +3 -4
- package/_internal/{arrayAny.js → arraySome.js} +8 -8
- package/_internal/{asyncIteratorAll.js → asyncIteratorEvery.js} +4 -4
- package/_internal/{asyncIteratorAny.js → asyncIteratorSome.js} +4 -4
- package/_internal/curry4.test.js +25 -0
- package/_internal/curry5.test.js +29 -0
- package/_internal/curryArgs2.js +43 -0
- package/_internal/curryArgs3.test.js +21 -0
- package/_internal/curryArgs4.js +65 -0
- package/_internal/curryArgs4.test.js +25 -0
- package/_internal/equals.js +13 -0
- package/_internal/findAllFilePaths.js +22 -0
- package/_internal/funcApply.js +2 -0
- package/_internal/funcCall.js +14 -0
- package/_internal/functionArrayAll.js +26 -0
- package/_internal/functionArrayAllSeries.js +55 -0
- package/_internal/functionObjectAll.js +32 -0
- package/_internal/genericReduce.js +4 -22
- package/_internal/genericTransform.js +15 -15
- package/_internal/improvedGenericTransform.js +93 -0
- package/_internal/{iteratorAll.js → iteratorEvery.js} +4 -4
- package/_internal/{iteratorAny.js → iteratorSome.js} +6 -6
- package/_internal/leftResolverRightResolverCompare.js +19 -0
- package/_internal/leftResolverRightValueCompare.js +16 -0
- package/_internal/leftValueRightResolverCompare.js +16 -0
- package/_internal/objectReduce.js +0 -1
- package/_internal/pathResolve.js +6 -0
- package/_internal/{reducerAll.js → reducerEvery.js} +4 -4
- package/_internal/reducerFlatMap.js +4 -4
- package/_internal/reducerFlatten.js +1 -1
- package/_internal/{reducerAny.js → reducerSome.js} +4 -4
- package/_internal/timeInLoop.js +37 -0
- package/_internal/timeInLoop.test.js +18 -0
- package/_internal/timeInLoopAsync.js +35 -0
- package/_internal/timeInLoopAsync.test.js +22 -0
- package/all.js +106 -40
- package/and.js +54 -36
- package/archive/{FlatMappingIteratorCool.js → FlatMappingIterator-2020-09-28.js} +1 -1
- package/archive/_Promise-2023-05-29.js +93 -0
- package/archive/arrayMap2-2023-05-29.js +73 -0
- package/archive/benchmarks-v1.9.7/all.js +34 -0
- package/archive/benchmarks-v1.9.7/and.js +24 -0
- package/archive/benchmarks-v1.9.7/assign.js +174 -0
- package/archive/benchmarks-v1.9.7/curry.js +55 -0
- package/archive/benchmarks-v1.9.7/eq.js +25 -0
- package/archive/benchmarks-v1.9.7/filter.js +1322 -0
- package/archive/benchmarks-v1.9.7/flatMap.js +48 -0
- package/archive/benchmarks-v1.9.7/get.js +44 -0
- package/archive/benchmarks-v1.9.7/gt.js +25 -0
- package/archive/benchmarks-v1.9.7/gte.js +25 -0
- package/archive/benchmarks-v1.9.7/lt.js +25 -0
- package/archive/benchmarks-v1.9.7/lte.js +25 -0
- package/archive/benchmarks-v1.9.7/map.js +892 -0
- package/archive/benchmarks-v1.9.7/omit.js +28 -0
- package/archive/benchmarks-v1.9.7/or.js +51 -0
- package/archive/benchmarks-v1.9.7/pick.js +24 -0
- package/archive/benchmarks-v1.9.7/pipe.js +152 -0
- package/archive/benchmarks-v1.9.7/reduce.js +739 -0
- package/archive/benchmarks-v1.9.7/switchCase.js +256 -0
- package/archive/benchmarks-v1.9.7/tap.js +90 -0
- package/archive/benchmarks-v1.9.7/transform.js +218 -0
- package/archive/benchmarks-v1.9.7/tryCatch.js +108 -0
- package/assign.js +18 -8
- package/bench +65 -0
- package/benchmark-output/v1.9.7 +268 -0
- package/benchmarks/all.async.js +43 -0
- package/benchmarks/all.js +42 -33
- package/benchmarks/always.js +15 -0
- package/benchmarks/and.async.js +25 -0
- package/benchmarks/and.js +20 -19
- package/benchmarks/assign.async.js +27 -0
- package/benchmarks/assign.js +20 -167
- package/benchmarks/curry.js +34 -54
- package/benchmarks/eq.async.js +23 -0
- package/benchmarks/eq.js +17 -19
- package/benchmarks/every.async.js +19 -0
- package/benchmarks/every.js +19 -0
- package/benchmarks/filter.async.js +32 -0
- package/benchmarks/filter.js +27 -1311
- package/benchmarks/flatMap.async.js +26 -0
- package/benchmarks/flatMap.js +26 -36
- package/benchmarks/get.async.js +19 -0
- package/benchmarks/get.js +27 -32
- package/benchmarks/gt.async.js +23 -0
- package/benchmarks/gt.js +17 -19
- package/benchmarks/gte.async.js +23 -0
- package/benchmarks/gte.js +17 -19
- package/benchmarks/lt.async.js +23 -0
- package/benchmarks/lt.js +17 -19
- package/benchmarks/lte.async.js +23 -0
- package/benchmarks/lte.js +17 -19
- package/benchmarks/map.async.js +43 -0
- package/benchmarks/map.js +24 -876
- package/benchmarks/misc/Promise.js +26 -0
- package/benchmarks/misc/isPromise.js +30 -0
- package/benchmarks/misc/promiseAll.js +36 -0
- package/benchmarks/not.js +23 -0
- package/benchmarks/omit.js +30 -20
- package/benchmarks/or.async.js +25 -0
- package/benchmarks/or.js +23 -49
- package/benchmarks/pick.js +30 -16
- package/benchmarks/pipe.async.js +47 -0
- package/benchmarks/pipe.js +46 -151
- package/benchmarks/reduce.async.js +32 -0
- package/benchmarks/reduce.js +27 -728
- package/benchmarks/set.async.js +19 -0
- package/benchmarks/set.js +41 -0
- package/benchmarks/some.async.js +19 -0
- package/benchmarks/some.js +19 -0
- package/benchmarks/switchCase.async.js +27 -0
- package/benchmarks/switchCase.js +55 -256
- package/benchmarks/tap.js +10 -85
- package/benchmarks/thunkify.js +15 -0
- package/benchmarks/transform.async.js +27 -0
- package/benchmarks/transform.js +28 -206
- package/benchmarks/tryCatch.async.js +25 -0
- package/benchmarks/tryCatch.js +24 -100
- package/build +472 -0
- package/compose.js +46 -0
- package/dist/Transducer.es.js +481 -0
- package/dist/Transducer.es.min.js +7 -0
- package/dist/Transducer.js +488 -0
- package/dist/Transducer.min.js +8 -0
- package/dist/Transducer.mjs +481 -0
- package/dist/__.es.js +2 -2
- package/dist/__.es.min.js +2 -2
- package/dist/__.js +2 -2
- package/dist/__.min.js +2 -2
- package/dist/__.mjs +2 -2
- package/dist/all.es.js +173 -92
- package/dist/all.es.min.js +3 -3
- package/dist/all.js +173 -92
- package/dist/all.min.js +3 -3
- package/dist/all.mjs +173 -92
- package/dist/always.es.js +2 -2
- package/dist/always.es.min.js +2 -2
- package/dist/always.js +2 -2
- package/dist/always.min.js +2 -2
- package/dist/always.mjs +2 -2
- package/dist/and.es.js +101 -32
- package/dist/and.es.min.js +3 -3
- package/dist/and.js +101 -32
- package/dist/and.min.js +3 -3
- package/dist/and.mjs +101 -32
- package/dist/assign.es.js +37 -10
- package/dist/assign.es.min.js +3 -3
- package/dist/assign.js +37 -10
- package/dist/assign.min.js +3 -3
- package/dist/assign.mjs +37 -10
- package/dist/compose.es.js +71 -0
- package/dist/compose.es.min.js +7 -0
- package/dist/compose.js +78 -0
- package/dist/compose.min.js +8 -0
- package/dist/compose.mjs +71 -0
- package/dist/curry.es.js +2 -2
- package/dist/curry.es.min.js +2 -2
- package/dist/curry.js +2 -2
- package/dist/curry.min.js +2 -2
- package/dist/curry.mjs +2 -2
- package/dist/eq.es.js +172 -49
- package/dist/eq.es.min.js +3 -3
- package/dist/eq.js +172 -49
- package/dist/eq.min.js +3 -3
- package/dist/eq.mjs +172 -49
- package/dist/every.es.js +194 -0
- package/dist/every.es.min.js +7 -0
- package/dist/every.js +201 -0
- package/dist/every.min.js +8 -0
- package/dist/every.mjs +194 -0
- package/dist/filter.es.js +14 -108
- package/dist/filter.es.min.js +3 -3
- package/dist/filter.js +14 -108
- package/dist/filter.min.js +3 -3
- package/dist/filter.mjs +14 -108
- package/dist/flatMap.es.js +27 -214
- package/dist/flatMap.es.min.js +3 -3
- package/dist/flatMap.js +27 -214
- package/dist/flatMap.min.js +3 -3
- package/dist/flatMap.mjs +27 -214
- package/dist/{x/forEach.es.js → forEach.es.js} +52 -70
- package/dist/forEach.es.min.js +7 -0
- package/dist/{x/forEach.js → forEach.js} +52 -70
- package/dist/forEach.min.js +8 -0
- package/dist/{x/forEach.mjs → forEach.mjs} +52 -70
- package/dist/get.es.js +60 -5
- package/dist/get.es.min.js +3 -3
- package/dist/get.js +60 -5
- package/dist/get.min.js +3 -3
- package/dist/get.mjs +60 -5
- package/dist/gt.es.js +171 -48
- package/dist/gt.es.min.js +3 -3
- package/dist/gt.js +171 -48
- package/dist/gt.min.js +3 -3
- package/dist/gt.mjs +171 -48
- package/dist/gte.es.js +171 -48
- package/dist/gte.es.min.js +3 -3
- package/dist/gte.js +171 -48
- package/dist/gte.min.js +3 -3
- package/dist/gte.mjs +171 -48
- package/dist/lt.es.js +171 -48
- package/dist/lt.es.min.js +3 -3
- package/dist/lt.js +171 -48
- package/dist/lt.min.js +3 -3
- package/dist/lt.mjs +171 -48
- package/dist/lte.es.js +171 -48
- package/dist/lte.es.min.js +3 -3
- package/dist/lte.js +171 -48
- package/dist/lte.min.js +3 -3
- package/dist/lte.mjs +171 -48
- package/dist/map.es.js +12 -101
- package/dist/map.es.min.js +3 -3
- package/dist/map.js +12 -101
- package/dist/map.min.js +3 -3
- package/dist/map.mjs +12 -101
- package/dist/not.es.js +75 -14
- package/dist/not.es.min.js +3 -3
- package/dist/not.js +75 -14
- package/dist/not.min.js +3 -3
- package/dist/not.mjs +75 -14
- package/dist/omit.es.js +7 -2
- package/dist/omit.es.min.js +3 -3
- package/dist/omit.js +7 -2
- package/dist/omit.min.js +3 -3
- package/dist/omit.mjs +7 -2
- package/dist/or.es.js +99 -31
- package/dist/or.es.min.js +3 -3
- package/dist/or.js +99 -31
- package/dist/or.min.js +3 -3
- package/dist/or.mjs +99 -31
- package/dist/pick.es.js +8 -3
- package/dist/pick.es.min.js +3 -3
- package/dist/pick.js +8 -3
- package/dist/pick.min.js +3 -3
- package/dist/pick.mjs +8 -3
- package/dist/pipe.es.js +42 -46
- package/dist/pipe.es.min.js +3 -3
- package/dist/pipe.js +42 -46
- package/dist/pipe.min.js +3 -3
- package/dist/pipe.mjs +42 -46
- package/dist/reduce.es.js +52 -94
- package/dist/reduce.es.min.js +3 -3
- package/dist/reduce.js +52 -94
- package/dist/reduce.min.js +3 -3
- package/dist/reduce.mjs +52 -94
- package/dist/rubico.es.js +762 -883
- package/dist/rubico.es.min.js +3 -3
- package/dist/rubico.global.js +2794 -0
- package/dist/rubico.global.min.js +8 -0
- package/dist/rubico.js +739 -869
- package/dist/rubico.min.js +3 -3
- package/dist/rubico.mjs +762 -883
- package/dist/set.es.js +18 -3
- package/dist/set.es.min.js +3 -3
- package/dist/set.js +18 -3
- package/dist/set.min.js +3 -3
- package/dist/set.mjs +18 -3
- package/dist/{any.js → some.es.js} +64 -54
- package/dist/some.es.min.js +7 -0
- package/dist/{any.mjs → some.js} +72 -48
- package/dist/some.min.js +8 -0
- package/dist/{any.es.js → some.mjs} +65 -48
- package/dist/switchCase.es.js +55 -5
- package/dist/switchCase.es.min.js +3 -3
- package/dist/switchCase.js +55 -5
- package/dist/switchCase.min.js +3 -3
- package/dist/switchCase.mjs +55 -5
- package/dist/tap.es.js +2 -9
- package/dist/tap.es.min.js +3 -3
- package/dist/tap.js +2 -9
- package/dist/tap.min.js +3 -3
- package/dist/tap.mjs +2 -9
- package/dist/thunkify.es.js +45 -2
- package/dist/thunkify.es.min.js +3 -3
- package/dist/thunkify.js +45 -2
- package/dist/thunkify.min.js +3 -3
- package/dist/thunkify.mjs +45 -2
- package/dist/transform.es.js +35 -71
- package/dist/transform.es.min.js +3 -3
- package/dist/transform.js +35 -71
- package/dist/transform.min.js +3 -3
- package/dist/transform.mjs +35 -71
- package/dist/tryCatch.es.js +33 -17
- package/dist/tryCatch.es.min.js +3 -3
- package/dist/tryCatch.js +33 -17
- package/dist/tryCatch.min.js +3 -3
- package/dist/tryCatch.mjs +33 -17
- package/dist/x/append.es.js +2 -2
- package/dist/x/append.es.min.js +2 -2
- package/dist/x/append.js +2 -2
- package/dist/x/append.min.js +2 -2
- package/dist/x/append.mjs +2 -2
- package/dist/x/callProp.es.js +2 -2
- package/dist/x/callProp.es.min.js +2 -2
- package/dist/x/callProp.js +2 -2
- package/dist/x/callProp.min.js +2 -2
- package/dist/x/callProp.mjs +2 -2
- package/dist/x/defaultsDeep.es.js +2 -2
- package/dist/x/defaultsDeep.es.min.js +2 -2
- package/dist/x/defaultsDeep.js +2 -2
- package/dist/x/defaultsDeep.min.js +2 -2
- package/dist/x/defaultsDeep.mjs +2 -2
- package/dist/x/differenceWith.es.js +7 -7
- package/dist/x/differenceWith.es.min.js +3 -3
- package/dist/x/differenceWith.js +7 -7
- package/dist/x/differenceWith.min.js +2 -2
- package/dist/x/differenceWith.mjs +7 -7
- package/dist/x/filterOut.es.js +60 -117
- package/dist/x/filterOut.es.min.js +3 -3
- package/dist/x/filterOut.js +60 -117
- package/dist/x/filterOut.min.js +3 -3
- package/dist/x/filterOut.mjs +60 -117
- package/dist/x/find.es.js +2 -2
- package/dist/x/find.es.min.js +2 -2
- package/dist/x/find.js +2 -2
- package/dist/x/find.min.js +2 -2
- package/dist/x/find.mjs +2 -2
- package/dist/x/findIndex.es.js +2 -2
- package/dist/x/findIndex.es.min.js +2 -2
- package/dist/x/findIndex.js +2 -2
- package/dist/x/findIndex.min.js +2 -2
- package/dist/x/findIndex.mjs +2 -2
- package/dist/x/first.es.js +2 -2
- package/dist/x/first.es.min.js +2 -2
- package/dist/x/first.js +2 -2
- package/dist/x/first.min.js +2 -2
- package/dist/x/first.mjs +2 -2
- package/dist/x/flatten.es.js +20 -207
- package/dist/x/flatten.es.min.js +3 -3
- package/dist/x/flatten.js +20 -207
- package/dist/x/flatten.min.js +3 -3
- package/dist/x/flatten.mjs +20 -207
- package/dist/x/groupBy.es.js +52 -94
- package/dist/x/groupBy.es.min.js +3 -3
- package/dist/x/groupBy.js +52 -94
- package/dist/x/groupBy.min.js +3 -3
- package/dist/x/groupBy.mjs +52 -94
- package/dist/x/has.es.js +2 -2
- package/dist/x/has.es.min.js +2 -2
- package/dist/x/has.js +2 -2
- package/dist/x/has.min.js +2 -2
- package/dist/x/has.mjs +2 -2
- package/dist/x/identity.es.js +2 -2
- package/dist/x/identity.es.min.js +2 -2
- package/dist/x/identity.js +2 -2
- package/dist/x/identity.min.js +2 -2
- package/dist/x/identity.mjs +2 -2
- package/dist/x/includes.es.js +2 -2
- package/dist/x/includes.es.min.js +2 -2
- package/dist/x/includes.js +2 -2
- package/dist/x/includes.min.js +2 -2
- package/dist/x/includes.mjs +2 -2
- package/dist/x/isDeepEqual.es.js +2 -2
- package/dist/x/isDeepEqual.es.min.js +2 -2
- package/dist/x/isDeepEqual.js +2 -2
- package/dist/x/isDeepEqual.min.js +2 -2
- package/dist/x/isDeepEqual.mjs +2 -2
- package/dist/x/isEmpty.es.js +2 -2
- package/dist/x/isEmpty.es.min.js +2 -2
- package/dist/x/isEmpty.js +2 -2
- package/dist/x/isEmpty.min.js +2 -2
- package/dist/x/isEmpty.mjs +2 -2
- package/dist/x/isEqual.es.js +2 -2
- package/dist/x/isEqual.es.min.js +2 -2
- package/dist/x/isEqual.js +2 -2
- package/dist/x/isEqual.min.js +2 -2
- package/dist/x/isEqual.mjs +2 -2
- package/dist/x/isFunction.es.js +2 -2
- package/dist/x/isFunction.es.min.js +2 -2
- package/dist/x/isFunction.js +2 -2
- package/dist/x/isFunction.min.js +2 -2
- package/dist/x/isFunction.mjs +2 -2
- package/dist/x/isIn.es.js +2 -2
- package/dist/x/isIn.es.min.js +2 -2
- package/dist/x/isIn.js +2 -2
- package/dist/x/isIn.min.js +2 -2
- package/dist/x/isIn.mjs +2 -2
- package/dist/x/isObject.es.js +2 -2
- package/dist/x/isObject.es.min.js +2 -2
- package/dist/x/isObject.js +2 -2
- package/dist/x/isObject.min.js +2 -2
- package/dist/x/isObject.mjs +2 -2
- package/dist/x/isString.es.js +2 -2
- package/dist/x/isString.es.min.js +2 -2
- package/dist/x/isString.js +2 -2
- package/dist/x/isString.min.js +2 -2
- package/dist/x/isString.mjs +2 -2
- package/dist/x/keys.es.js +2 -2
- package/dist/x/keys.es.min.js +2 -2
- package/dist/x/keys.js +2 -2
- package/dist/x/keys.min.js +2 -2
- package/dist/x/keys.mjs +2 -2
- package/dist/x/last.es.js +2 -2
- package/dist/x/last.es.min.js +2 -2
- package/dist/x/last.js +2 -2
- package/dist/x/last.min.js +2 -2
- package/dist/x/last.mjs +2 -2
- package/dist/x/maxBy.es.js +59 -6
- package/dist/x/maxBy.es.min.js +3 -3
- package/dist/x/maxBy.js +59 -6
- package/dist/x/maxBy.min.js +3 -3
- package/dist/x/maxBy.mjs +59 -6
- package/dist/x/noop.es.js +2 -2
- package/dist/x/noop.es.min.js +2 -2
- package/dist/x/noop.js +2 -2
- package/dist/x/noop.min.js +2 -2
- package/dist/x/noop.mjs +2 -2
- package/dist/x/pluck.es.js +32 -103
- package/dist/x/pluck.es.min.js +3 -3
- package/dist/x/pluck.js +32 -103
- package/dist/x/pluck.min.js +3 -3
- package/dist/x/pluck.mjs +32 -103
- package/dist/x/prepend.es.js +2 -2
- package/dist/x/prepend.es.min.js +2 -2
- package/dist/x/prepend.js +2 -2
- package/dist/x/prepend.min.js +2 -2
- package/dist/x/prepend.mjs +2 -2
- package/dist/x/size.es.js +2 -2
- package/dist/x/size.es.min.js +2 -2
- package/dist/x/size.js +2 -2
- package/dist/x/size.min.js +2 -2
- package/dist/x/size.mjs +2 -2
- package/dist/x/trace.es.js +2 -9
- package/dist/x/trace.es.min.js +3 -3
- package/dist/x/trace.js +2 -9
- package/dist/x/trace.min.js +3 -3
- package/dist/x/trace.mjs +2 -9
- package/dist/x/unionWith.es.js +2 -2
- package/dist/x/unionWith.es.min.js +2 -2
- package/dist/x/unionWith.js +2 -2
- package/dist/x/unionWith.min.js +2 -2
- package/dist/x/unionWith.mjs +2 -2
- package/dist/x/uniq.es.js +2 -2
- package/dist/x/uniq.es.min.js +2 -2
- package/dist/x/uniq.js +2 -2
- package/dist/x/uniq.min.js +2 -2
- package/dist/x/uniq.mjs +2 -2
- package/dist/x/unless.es.js +2 -2
- package/dist/x/unless.es.min.js +2 -2
- package/dist/x/unless.js +2 -2
- package/dist/x/unless.min.js +2 -2
- package/dist/x/unless.mjs +2 -2
- package/dist/x/values.es.js +2 -2
- package/dist/x/values.es.min.js +2 -2
- package/dist/x/values.js +2 -2
- package/dist/x/values.min.js +2 -2
- package/dist/x/values.mjs +2 -2
- package/dist/x/when.es.js +2 -2
- package/dist/x/when.es.min.js +2 -2
- package/dist/x/when.js +2 -2
- package/dist/x/when.min.js +2 -2
- package/dist/x/when.mjs +2 -2
- package/dist-test.js +31 -2042
- package/eq.js +21 -63
- package/es.js +739 -869
- package/every.js +94 -0
- package/filter.js +23 -91
- package/flatMap.js +75 -70
- package/forEach.js +82 -0
- package/get.js +23 -6
- package/global.js +6 -4
- package/gt.js +15 -58
- package/gte.js +14 -57
- package/index.js +739 -869
- package/lt.js +17 -60
- package/lte.js +14 -57
- package/map.js +9 -94
- package/memory-usage/reduce.js +2 -2
- package/not.js +27 -45
- package/omit.js +4 -0
- package/or.js +50 -33
- package/package.json +7 -7
- package/pick.js +5 -1
- package/pipe.js +13 -50
- package/reduce.js +42 -51
- package/rubico.js +22 -11
- package/set.js +43 -10
- package/some.js +105 -0
- package/switchCase.js +13 -3
- package/tap.js +0 -24
- package/test.js +847 -1096
- package/thunkify.js +9 -0
- package/tmp.js +1 -0
- package/transform.js +31 -16
- package/tryCatch.js +19 -15
- package/x/differenceWith.js +3 -3
- package/x/filterOut.test.js +6 -6
- package/x/flatten.js +1 -1
- package/x/flatten.test.js +0 -8
- package/x/index.js +0 -2
- package/x/pluck.js +18 -27
- package/x/pluck.test.js +3 -7
- package/x/timeInLoop.js +16 -25
- package/x/timeInLoop.test.js +8 -4
- package/any.js +0 -82
- package/dist/__.min.mjs +0 -7
- package/dist/all.min.mjs +0 -7
- package/dist/always.min.mjs +0 -7
- package/dist/and.min.mjs +0 -7
- package/dist/any.es.min.js +0 -7
- package/dist/any.min.js +0 -8
- package/dist/any.min.mjs +0 -7
- package/dist/assign.min.mjs +0 -7
- package/dist/curry.min.mjs +0 -7
- package/dist/eq.min.mjs +0 -7
- package/dist/filter.min.mjs +0 -7
- package/dist/flatMap.min.mjs +0 -7
- package/dist/fork.es.js +0 -159
- package/dist/fork.es.min.js +0 -7
- package/dist/fork.js +0 -166
- package/dist/fork.min.js +0 -8
- package/dist/fork.min.mjs +0 -7
- package/dist/fork.mjs +0 -159
- package/dist/get.min.mjs +0 -7
- package/dist/gt.min.mjs +0 -7
- package/dist/gte.min.mjs +0 -7
- package/dist/lt.min.mjs +0 -7
- package/dist/lte.min.mjs +0 -7
- package/dist/map.min.mjs +0 -7
- package/dist/not.min.mjs +0 -7
- package/dist/omit.min.mjs +0 -7
- package/dist/or.min.mjs +0 -7
- package/dist/pick.min.mjs +0 -7
- package/dist/pipe.min.mjs +0 -7
- package/dist/reduce.min.mjs +0 -7
- package/dist/rubico.min.mjs +0 -7
- package/dist/set.min.mjs +0 -7
- package/dist/switchCase.min.mjs +0 -7
- package/dist/tap.min.mjs +0 -7
- package/dist/thunkify.min.mjs +0 -7
- package/dist/transform.min.mjs +0 -7
- package/dist/tryCatch.min.mjs +0 -7
- package/dist/x/append.min.mjs +0 -7
- package/dist/x/callProp.min.mjs +0 -7
- package/dist/x/defaultsDeep.min.mjs +0 -7
- package/dist/x/differenceWith.min.mjs +0 -7
- package/dist/x/filterOut.min.mjs +0 -7
- package/dist/x/find.min.mjs +0 -7
- package/dist/x/findIndex.min.mjs +0 -7
- package/dist/x/first.min.mjs +0 -7
- package/dist/x/flatten.min.mjs +0 -7
- package/dist/x/forEach.es.min.js +0 -7
- package/dist/x/forEach.min.js +0 -8
- package/dist/x/forEach.min.mjs +0 -7
- package/dist/x/groupBy.min.mjs +0 -7
- package/dist/x/has.min.mjs +0 -7
- package/dist/x/identity.min.mjs +0 -7
- package/dist/x/includes.min.mjs +0 -7
- package/dist/x/isDeepEqual.min.mjs +0 -7
- package/dist/x/isEmpty.min.mjs +0 -7
- package/dist/x/isEqual.min.mjs +0 -7
- package/dist/x/isFunction.min.mjs +0 -7
- package/dist/x/isIn.min.mjs +0 -7
- package/dist/x/isObject.min.mjs +0 -7
- package/dist/x/isString.min.mjs +0 -7
- package/dist/x/keys.min.mjs +0 -7
- package/dist/x/last.min.mjs +0 -7
- package/dist/x/maxBy.min.mjs +0 -7
- package/dist/x/noop.min.mjs +0 -7
- package/dist/x/pluck.min.mjs +0 -7
- package/dist/x/prepend.min.mjs +0 -7
- package/dist/x/size.min.mjs +0 -7
- package/dist/x/trace.min.mjs +0 -7
- package/dist/x/unionWith.min.mjs +0 -7
- package/dist/x/uniq.min.mjs +0 -7
- package/dist/x/unless.min.mjs +0 -7
- package/dist/x/values.min.mjs +0 -7
- package/dist/x/when.min.mjs +0 -7
- package/distributor.js +0 -495
- package/fork.js +0 -101
- package/x/forEach.js +0 -93
- package/x/forEach.test.js +0 -218
- /package/{benchmarks → archive/benchmarks-v1.9.7}/any.js +0 -0
- /package/{x/forEach.benchmark.js → archive/benchmarks-v1.9.7/forEach.js} +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/fork.js +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/integration.js +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/misc.js +0 -0
package/dist/all.mjs
CHANGED
|
@@ -1,14 +1,94 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico
|
|
2
|
+
* rubico v2.0.1
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
|
-
* (c) 2019-
|
|
4
|
+
* (c) 2019-2023 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
const isPromise = value => value != null && typeof value.then == 'function'
|
|
9
|
+
|
|
10
|
+
const areAnyValuesPromises = function (values) {
|
|
11
|
+
const length = values.length
|
|
12
|
+
let index = -1
|
|
13
|
+
while (++index < length) {
|
|
14
|
+
const value = values[index]
|
|
15
|
+
if (isPromise(value)) {
|
|
16
|
+
return true
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return false
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const promiseAll = Promise.all.bind(Promise)
|
|
23
|
+
|
|
8
24
|
const isArray = Array.isArray
|
|
9
25
|
|
|
10
26
|
const __ = Symbol.for('placeholder')
|
|
11
27
|
|
|
28
|
+
// argument resolver for curry2
|
|
29
|
+
const curry2ResolveArg0 = (
|
|
30
|
+
baseFunc, arg1,
|
|
31
|
+
) => function arg0Resolver(arg0) {
|
|
32
|
+
return baseFunc(arg0, arg1)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// argument resolver for curry2
|
|
36
|
+
const curry2ResolveArg1 = (
|
|
37
|
+
baseFunc, arg0,
|
|
38
|
+
) => function arg1Resolver(arg1) {
|
|
39
|
+
return baseFunc(arg0, arg1)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const curry2 = function (baseFunc, arg0, arg1) {
|
|
43
|
+
return arg0 == __
|
|
44
|
+
? curry2ResolveArg0(baseFunc, arg1)
|
|
45
|
+
: curry2ResolveArg1(baseFunc, arg0)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// argument resolver for curryArgs2
|
|
49
|
+
const curryArgs2ResolveArgs0 = (
|
|
50
|
+
baseFunc, arg1, arg2,
|
|
51
|
+
) => function args0Resolver(...args) {
|
|
52
|
+
return baseFunc(args, arg1)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// argument resolver for curryArgs2
|
|
56
|
+
const curryArgs2ResolveArgs1 = (
|
|
57
|
+
baseFunc, arg0, arg2,
|
|
58
|
+
) => function arg1Resolver(...args) {
|
|
59
|
+
return baseFunc(arg0, args)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const curryArgs2 = function (baseFunc, arg0, arg1) {
|
|
63
|
+
if (arg0 == __) {
|
|
64
|
+
return curryArgs2ResolveArgs0(baseFunc, arg1)
|
|
65
|
+
}
|
|
66
|
+
return curryArgs2ResolveArgs1(baseFunc, arg0)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const functionArrayAll = function (funcs, args) {
|
|
70
|
+
const funcsLength = funcs.length,
|
|
71
|
+
result = Array(funcsLength)
|
|
72
|
+
let funcsIndex = -1, isAsync = false
|
|
73
|
+
while (++funcsIndex < funcsLength) {
|
|
74
|
+
const resultItem = funcs[funcsIndex](...args)
|
|
75
|
+
if (isPromise(resultItem)) {
|
|
76
|
+
isAsync = true
|
|
77
|
+
}
|
|
78
|
+
result[funcsIndex] = resultItem
|
|
79
|
+
}
|
|
80
|
+
return isAsync ? promiseAll(result) : result
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const funcConcat = (
|
|
84
|
+
funcA, funcB,
|
|
85
|
+
) => function pipedFunction(...args) {
|
|
86
|
+
const intermediate = funcA(...args)
|
|
87
|
+
return isPromise(intermediate)
|
|
88
|
+
? intermediate.then(funcB)
|
|
89
|
+
: funcB(intermediate)
|
|
90
|
+
}
|
|
91
|
+
|
|
12
92
|
// argument resolver for curry3
|
|
13
93
|
const curry3ResolveArg0 = (
|
|
14
94
|
baseFunc, arg1, arg2,
|
|
@@ -40,118 +120,119 @@ const curry3 = function (baseFunc, arg0, arg1, arg2) {
|
|
|
40
120
|
return curry3ResolveArg2(baseFunc, arg0, arg1)
|
|
41
121
|
}
|
|
42
122
|
|
|
43
|
-
|
|
123
|
+
// argument resolver for curry4
|
|
124
|
+
const curry4ResolveArg0 = (
|
|
125
|
+
baseFunc, arg1, arg2, arg3,
|
|
126
|
+
) => function arg0Resolver(arg0) {
|
|
127
|
+
return baseFunc(arg0, arg1, arg2, arg3)
|
|
128
|
+
}
|
|
44
129
|
|
|
45
|
-
|
|
130
|
+
// argument resolver for curry4
|
|
131
|
+
const curry4ResolveArg1 = (
|
|
132
|
+
baseFunc, arg0, arg2, arg3,
|
|
133
|
+
) => function arg1Resolver(arg1) {
|
|
134
|
+
return baseFunc(arg0, arg1, arg2, arg3)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// argument resolver for curry4
|
|
138
|
+
const curry4ResolveArg2 = (
|
|
139
|
+
baseFunc, arg0, arg1, arg3,
|
|
140
|
+
) => function arg2Resolver(arg2) {
|
|
141
|
+
return baseFunc(arg0, arg1, arg2, arg3)
|
|
142
|
+
}
|
|
46
143
|
|
|
47
|
-
|
|
144
|
+
// argument resolver for curry4
|
|
145
|
+
const curry4ResolveArg3 = (
|
|
146
|
+
baseFunc, arg0, arg1, arg2,
|
|
147
|
+
) => function arg3Resolver(arg3) {
|
|
148
|
+
return baseFunc(arg0, arg1, arg2, arg3)
|
|
149
|
+
}
|
|
48
150
|
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
let index = -1
|
|
53
|
-
while (++index < arrayLength) {
|
|
54
|
-
const predication = predicate(array[index])
|
|
55
|
-
if (isPromise(predication)) {
|
|
56
|
-
promises.push(predication)
|
|
57
|
-
} else if (!predication) {
|
|
58
|
-
return false
|
|
59
|
-
}
|
|
151
|
+
const curry4 = function (baseFunc, arg0, arg1, arg2, arg3) {
|
|
152
|
+
if (arg0 == __) {
|
|
153
|
+
return curry4ResolveArg0(baseFunc, arg1, arg2, arg3)
|
|
60
154
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const iteratorAll = function (iterator, predicate) {
|
|
67
|
-
const promises = []
|
|
68
|
-
for (const item of iterator) {
|
|
69
|
-
const predication = predicate(item)
|
|
70
|
-
if (isPromise(predication)) {
|
|
71
|
-
promises.push(predication)
|
|
72
|
-
} else if (!predication) {
|
|
73
|
-
return false
|
|
74
|
-
}
|
|
155
|
+
if (arg1 == __) {
|
|
156
|
+
return curry4ResolveArg1(baseFunc, arg0, arg2, arg3)
|
|
157
|
+
}
|
|
158
|
+
if (arg2 == __) {
|
|
159
|
+
return curry4ResolveArg2(baseFunc, arg0, arg1, arg3)
|
|
75
160
|
}
|
|
76
|
-
return
|
|
77
|
-
? true
|
|
78
|
-
: promiseAll(promises).then(curry3(callPropUnary, __, 'every', Boolean))
|
|
161
|
+
return curry4ResolveArg3(baseFunc, arg0, arg1, arg2)
|
|
79
162
|
}
|
|
80
163
|
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
return
|
|
164
|
+
const objectSet = function (object, property, value) {
|
|
165
|
+
object[property] = value
|
|
166
|
+
return object
|
|
84
167
|
}
|
|
85
168
|
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
)
|
|
91
|
-
let iteration = await asyncIterator.next()
|
|
92
|
-
while (!iteration.done) {
|
|
93
|
-
if (promisesInFlight.size >= maxConcurrency) {
|
|
94
|
-
const [predication, promise] = await promiseRace(promisesInFlight)
|
|
95
|
-
promisesInFlight.delete(promise)
|
|
96
|
-
if (!predication) {
|
|
97
|
-
return false
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
const predication = predicate(iteration.value)
|
|
102
|
-
if (isPromise(predication)) {
|
|
103
|
-
promisesInFlight.add(SelfReferencingPromise(predication))
|
|
104
|
-
} else if (!predication) {
|
|
105
|
-
return false
|
|
106
|
-
}
|
|
107
|
-
iteration = await asyncIterator.next()
|
|
169
|
+
const asyncFunctionArrayAllSeries = async function (funcs, args, result, funcsIndex) {
|
|
170
|
+
const funcsLength = funcs.length
|
|
171
|
+
while (++funcsIndex < funcsLength) {
|
|
172
|
+
const resultItem = funcs[funcsIndex](...args)
|
|
173
|
+
result[funcsIndex] = isPromise(resultItem) ? await resultItem : resultItem
|
|
108
174
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
175
|
+
return result
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
const functionArrayAllSeries = function (funcs, args) {
|
|
179
|
+
const funcsLength = funcs.length, result = []
|
|
180
|
+
let funcsIndex = -1
|
|
181
|
+
while (++funcsIndex < funcsLength) {
|
|
182
|
+
const resultItem = funcs[funcsIndex](...args)
|
|
183
|
+
if (isPromise(resultItem)) {
|
|
184
|
+
return resultItem.then(funcConcat(
|
|
185
|
+
curry3(objectSet, result, funcsIndex, __),
|
|
186
|
+
curry4(asyncFunctionArrayAllSeries, funcs, args, __, funcsIndex)))
|
|
114
187
|
}
|
|
188
|
+
result[funcsIndex] = resultItem
|
|
115
189
|
}
|
|
116
|
-
return
|
|
190
|
+
return result
|
|
117
191
|
}
|
|
118
192
|
|
|
119
|
-
const
|
|
193
|
+
const always = value => function getter() { return value }
|
|
120
194
|
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
curry3(
|
|
127
|
-
|
|
195
|
+
const functionObjectAll = function (funcs, args) {
|
|
196
|
+
const result = {}, promises = []
|
|
197
|
+
for (const key in funcs) {
|
|
198
|
+
const resultItem = funcs[key](...args)
|
|
199
|
+
if (isPromise(resultItem)) {
|
|
200
|
+
promises.push(resultItem.then(curry3(objectSet, result, key, __)))
|
|
201
|
+
} else {
|
|
202
|
+
result[key] = resultItem
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return promises.length == 0 ? result : promiseAll(promises).then(always(result))
|
|
128
206
|
}
|
|
129
207
|
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
return arrayAll(value, predicate)
|
|
137
|
-
}
|
|
138
|
-
if (value == null) {
|
|
139
|
-
return predicate(value)
|
|
208
|
+
const all = function (...args) {
|
|
209
|
+
const funcs = args.pop()
|
|
210
|
+
if (args.length == 0) {
|
|
211
|
+
return isArray(funcs)
|
|
212
|
+
? curryArgs2(functionArrayAll, funcs, __)
|
|
213
|
+
: curryArgs2(functionObjectAll, funcs, __)
|
|
140
214
|
}
|
|
141
215
|
|
|
142
|
-
if (
|
|
143
|
-
return
|
|
216
|
+
if (areAnyValuesPromises(args)) {
|
|
217
|
+
return isArray(funcs)
|
|
218
|
+
? promiseAll(args).then(curry2(functionArrayAll, funcs, __))
|
|
219
|
+
: promiseAll(args).then(curry2(functionObjectAll, funcs, __))
|
|
144
220
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
221
|
+
|
|
222
|
+
return isArray(funcs)
|
|
223
|
+
? functionArrayAll(funcs, args)
|
|
224
|
+
: functionObjectAll(funcs, args)
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
all.series = function allSeries(...args) {
|
|
228
|
+
const funcs = args.pop()
|
|
229
|
+
if (args.length == 0) {
|
|
230
|
+
return curryArgs2(functionArrayAllSeries, funcs, __)
|
|
150
231
|
}
|
|
151
|
-
if (
|
|
152
|
-
return
|
|
232
|
+
if (areAnyValuesPromises(args)) {
|
|
233
|
+
return promiseAll(args).then(curry2(functionArrayAllSeries, funcs, __))
|
|
153
234
|
}
|
|
154
|
-
return
|
|
235
|
+
return functionArrayAllSeries(funcs, args)
|
|
155
236
|
}
|
|
156
237
|
|
|
157
238
|
export default all
|
package/dist/always.es.js
CHANGED
package/dist/always.es.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico
|
|
2
|
+
* rubico v2.0.1
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
|
-
* (c) 2019-
|
|
4
|
+
* (c) 2019-2023 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
const always=a=>function(){return a};export default always;
|
package/dist/always.js
CHANGED
package/dist/always.min.js
CHANGED
package/dist/always.mjs
CHANGED
package/dist/and.es.js
CHANGED
|
@@ -1,14 +1,48 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico
|
|
2
|
+
* rubico v2.0.1
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
|
-
* (c) 2019-
|
|
4
|
+
* (c) 2019-2023 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
const promiseAll = Promise.all.bind(Promise)
|
|
9
|
+
|
|
8
10
|
const isPromise = value => value != null && typeof value.then == 'function'
|
|
9
11
|
|
|
12
|
+
const areAnyValuesPromises = function (values) {
|
|
13
|
+
const length = values.length
|
|
14
|
+
let index = -1
|
|
15
|
+
while (++index < length) {
|
|
16
|
+
const value = values[index]
|
|
17
|
+
if (isPromise(value)) {
|
|
18
|
+
return true
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return false
|
|
22
|
+
}
|
|
23
|
+
|
|
10
24
|
const __ = Symbol.for('placeholder')
|
|
11
25
|
|
|
26
|
+
// argument resolver for curry2
|
|
27
|
+
const curry2ResolveArg0 = (
|
|
28
|
+
baseFunc, arg1,
|
|
29
|
+
) => function arg0Resolver(arg0) {
|
|
30
|
+
return baseFunc(arg0, arg1)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// argument resolver for curry2
|
|
34
|
+
const curry2ResolveArg1 = (
|
|
35
|
+
baseFunc, arg0,
|
|
36
|
+
) => function arg1Resolver(arg1) {
|
|
37
|
+
return baseFunc(arg0, arg1)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const curry2 = function (baseFunc, arg0, arg1) {
|
|
41
|
+
return arg0 == __
|
|
42
|
+
? curry2ResolveArg0(baseFunc, arg1)
|
|
43
|
+
: curry2ResolveArg1(baseFunc, arg0)
|
|
44
|
+
}
|
|
45
|
+
|
|
12
46
|
// argument resolver for curry3
|
|
13
47
|
const curry3ResolveArg0 = (
|
|
14
48
|
baseFunc, arg1, arg2,
|
|
@@ -40,6 +74,27 @@ const curry3 = function (baseFunc, arg0, arg1, arg2) {
|
|
|
40
74
|
return curry3ResolveArg2(baseFunc, arg0, arg1)
|
|
41
75
|
}
|
|
42
76
|
|
|
77
|
+
// argument resolver for curryArgs2
|
|
78
|
+
const curryArgs2ResolveArgs0 = (
|
|
79
|
+
baseFunc, arg1, arg2,
|
|
80
|
+
) => function args0Resolver(...args) {
|
|
81
|
+
return baseFunc(args, arg1)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// argument resolver for curryArgs2
|
|
85
|
+
const curryArgs2ResolveArgs1 = (
|
|
86
|
+
baseFunc, arg0, arg2,
|
|
87
|
+
) => function arg1Resolver(...args) {
|
|
88
|
+
return baseFunc(arg0, args)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const curryArgs2 = function (baseFunc, arg0, arg1) {
|
|
92
|
+
if (arg0 == __) {
|
|
93
|
+
return curryArgs2ResolveArgs0(baseFunc, arg1)
|
|
94
|
+
}
|
|
95
|
+
return curryArgs2ResolveArgs1(baseFunc, arg0)
|
|
96
|
+
}
|
|
97
|
+
|
|
43
98
|
const thunkConditional = (
|
|
44
99
|
conditionalExpression, thunkOnTruthy, thunkOnFalsy,
|
|
45
100
|
) => conditionalExpression ? thunkOnTruthy() : thunkOnFalsy()
|
|
@@ -65,15 +120,15 @@ const thunkify3 = (func, arg0, arg1, arg2) => function thunk() {
|
|
|
65
120
|
|
|
66
121
|
const always = value => function getter() { return value }
|
|
67
122
|
|
|
68
|
-
const
|
|
123
|
+
const areAllValuesTruthy = function (predicates, index) {
|
|
69
124
|
const length = predicates.length
|
|
70
125
|
while (++index < length) {
|
|
71
|
-
|
|
126
|
+
const predicate = predicates[index]
|
|
72
127
|
if (isPromise(predicate)) {
|
|
73
128
|
return predicate.then(curry3(
|
|
74
129
|
thunkConditional,
|
|
75
130
|
__,
|
|
76
|
-
thunkify2(
|
|
131
|
+
thunkify2(areAllValuesTruthy, predicates, index),
|
|
77
132
|
always(false),
|
|
78
133
|
))
|
|
79
134
|
}
|
|
@@ -84,12 +139,12 @@ const areAllNonfunctionsTruthy = function (predicates, index) {
|
|
|
84
139
|
return true
|
|
85
140
|
}
|
|
86
141
|
|
|
87
|
-
const asyncArePredicatesAllTruthy = async function (
|
|
142
|
+
const asyncArePredicatesAllTruthy = async function (args, predicates, index) {
|
|
88
143
|
const length = predicates.length
|
|
89
144
|
while (++index < length) {
|
|
90
145
|
let predicate = predicates[index]
|
|
91
146
|
if (typeof predicate == 'function') {
|
|
92
|
-
predicate = predicate(
|
|
147
|
+
predicate = predicate(...args)
|
|
93
148
|
}
|
|
94
149
|
if (isPromise(predicate)) {
|
|
95
150
|
predicate = await predicate
|
|
@@ -101,33 +156,47 @@ const asyncArePredicatesAllTruthy = async function (predicates, point, index) {
|
|
|
101
156
|
return true
|
|
102
157
|
}
|
|
103
158
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
let
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
}
|
|
125
|
-
if (!predicate) {
|
|
126
|
-
return false
|
|
127
|
-
}
|
|
159
|
+
// areAllPredicatesTruthy(args Array, predicates Array<function>) -> Promise|boolean
|
|
160
|
+
const areAllPredicatesTruthy = function (args, predicates) {
|
|
161
|
+
const length = predicates.length
|
|
162
|
+
let index = -1
|
|
163
|
+
|
|
164
|
+
while (++index < length) {
|
|
165
|
+
let predicate = predicates[index]
|
|
166
|
+
if (typeof predicate == 'function') {
|
|
167
|
+
predicate = predicate(...args)
|
|
168
|
+
}
|
|
169
|
+
if (isPromise(predicate)) {
|
|
170
|
+
return predicate.then(curry3(
|
|
171
|
+
thunkConditional,
|
|
172
|
+
__,
|
|
173
|
+
thunkify3(asyncArePredicatesAllTruthy, args, predicates, index),
|
|
174
|
+
always(false),
|
|
175
|
+
))
|
|
176
|
+
}
|
|
177
|
+
if (!predicate) {
|
|
178
|
+
return false
|
|
128
179
|
}
|
|
129
|
-
return true
|
|
130
180
|
}
|
|
181
|
+
return true
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const and = function (...args) {
|
|
185
|
+
const predicatesOrValues = args.pop()
|
|
186
|
+
if (areAllValuesNonfunctions(predicatesOrValues)) {
|
|
187
|
+
return areAllValuesTruthy(predicatesOrValues, -1)
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
if (args.length == 0) {
|
|
191
|
+
return curryArgs2(areAllPredicatesTruthy, __, predicatesOrValues)
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (areAnyValuesPromises(args)) {
|
|
195
|
+
return promiseAll(args)
|
|
196
|
+
.then(curry2(areAllPredicatesTruthy, __, predicatesOrValues))
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return areAllPredicatesTruthy(args, predicatesOrValues)
|
|
131
200
|
}
|
|
132
201
|
|
|
133
202
|
export default and
|
package/dist/and.es.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico
|
|
2
|
+
* rubico v2.0.1
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
|
-
* (c) 2019-
|
|
4
|
+
* (c) 2019-2023 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
6
6
|
*/
|
|
7
|
-
const isPromise=
|
|
7
|
+
const promiseAll=Promise.all.bind(Promise),isPromise=r=>null!=r&&"function"==typeof r.then,areAnyValuesPromises=function(r){const e=r.length;let n=-1;for(;++n<e;){const e=r[n];if(isPromise(e))return!0}return!1},__=Symbol.for("placeholder"),curry2ResolveArg0=(r,e)=>function(n){return r(n,e)},curry2ResolveArg1=(r,e)=>function(n){return r(e,n)},curry2=function(r,e,n){return e==__?curry2ResolveArg0(r,n):curry2ResolveArg1(r,e)},curry3ResolveArg0=(r,e,n)=>function(t){return r(t,e,n)},curry3ResolveArg1=(r,e,n)=>function(t){return r(e,t,n)},curry3ResolveArg2=(r,e,n)=>function(t){return r(e,n,t)},curry3=function(r,e,n,t){return e==__?curry3ResolveArg0(r,n,t):n==__?curry3ResolveArg1(r,e,t):curry3ResolveArg2(r,e,n)},curryArgs2ResolveArgs0=(r,e,n)=>function(...n){return r(n,e)},curryArgs2ResolveArgs1=(r,e,n)=>function(...n){return r(e,n)},curryArgs2=function(r,e,n){return e==__?curryArgs2ResolveArgs0(r,n):curryArgs2ResolveArgs1(r,e)},thunkConditional=(r,e,n)=>r?e():n(),areAllValuesNonfunctions=function(r){const e=r.length;let n=-1;for(;++n<e;)if("function"==typeof r[n])return!1;return!0},thunkify2=(r,e,n)=>function(){return r(e,n)},thunkify3=(r,e,n,t)=>function(){return r(e,n,t)},always=r=>function(){return r},areAllValuesTruthy=function(r,e){const n=r.length;for(;++e<n;){const n=r[e];if(isPromise(n))return n.then(curry3(thunkConditional,__,thunkify2(areAllValuesTruthy,r,e),always(!1)));if(!n)return!1}return!0},asyncArePredicatesAllTruthy=async function(r,e,n){const t=e.length;for(;++n<t;){let t=e[n];if("function"==typeof t&&(t=t(...r)),isPromise(t)&&(t=await t),!t)return!1}return!0},areAllPredicatesTruthy=function(r,e){const n=e.length;let t=-1;for(;++t<n;){let n=e[t];if("function"==typeof n&&(n=n(...r)),isPromise(n))return n.then(curry3(thunkConditional,__,thunkify3(asyncArePredicatesAllTruthy,r,e,t),always(!1)));if(!n)return!1}return!0},and=function(...r){const e=r.pop();return areAllValuesNonfunctions(e)?areAllValuesTruthy(e,-1):0==r.length?(n=areAllPredicatesTruthy,u=e,(t=__)==__?curryArgs2ResolveArgs0(n,u):curryArgs2ResolveArgs1(n,t)):areAnyValuesPromises(r)?promiseAll(r).then(curry2(areAllPredicatesTruthy,__,e)):areAllPredicatesTruthy(r,e);var n,t,u};export default and;
|