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/pipe.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
const
|
|
1
|
+
const areAnyValuesPromises = require('./_internal/areAnyValuesPromises')
|
|
2
|
+
const promiseAll = require('./_internal/promiseAll')
|
|
2
3
|
const funcConcat = require('./_internal/funcConcat')
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const funcApply = require('./_internal/funcApply')
|
|
5
|
+
const curry2 = require('./_internal/curry2')
|
|
6
|
+
const __ = require('./_internal/placeholder')
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* @name pipe
|
|
@@ -15,7 +16,7 @@ const isAsyncGeneratorFunction = require('./_internal/isAsyncGeneratorFunction')
|
|
|
15
16
|
* ```
|
|
16
17
|
*
|
|
17
18
|
* @description
|
|
18
|
-
* Creates a function pipeline
|
|
19
|
+
* Creates a function pipeline from an array of functions, where each function passes its return value as a single argument to the next function until all functions have executed. The first function is called with the arguments to the pipeline, while the result of the pipeline execution is the return of its last function. If any function of the pipeline is asynchronous, the result of the execution is a Promise.
|
|
19
20
|
*
|
|
20
21
|
* ```javascript [playground]
|
|
21
22
|
* const syncAdd123 = pipe([
|
|
@@ -53,55 +54,17 @@ const isAsyncGeneratorFunction = require('./_internal/isAsyncGeneratorFunction')
|
|
|
53
54
|
*/
|
|
54
55
|
const pipe = function (...args) {
|
|
55
56
|
const funcs = args.pop()
|
|
57
|
+
const pipeline = funcs.reduce(funcConcat)
|
|
56
58
|
|
|
57
|
-
if (args.length
|
|
58
|
-
return
|
|
59
|
+
if (args.length == 0) {
|
|
60
|
+
return pipeline
|
|
59
61
|
}
|
|
60
62
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return function pipeline(...args) {
|
|
64
|
-
const firstArg = args[0]
|
|
65
|
-
|
|
66
|
-
if (
|
|
67
|
-
typeof firstArg == 'function'
|
|
68
|
-
&& !isGeneratorFunction(firstArg)
|
|
69
|
-
&& !isAsyncGeneratorFunction(firstArg)
|
|
70
|
-
) {
|
|
71
|
-
if (functionComposition == noop) {
|
|
72
|
-
functionComposition = funcs.reduceRight(funcConcat)
|
|
73
|
-
}
|
|
74
|
-
return functionComposition(firstArg)
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
if (functionPipeline == noop) {
|
|
78
|
-
functionPipeline = funcs.reduce(funcConcat)
|
|
79
|
-
}
|
|
80
|
-
return functionPipeline(...args)
|
|
63
|
+
if (areAnyValuesPromises(args)) {
|
|
64
|
+
return promiseAll(args).then(curry2(funcApply, pipeline, __))
|
|
81
65
|
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// funcs Array<function> -> pipeline function
|
|
85
|
-
const pipeSync = funcs => funcs.reduce(funcConcatSync)
|
|
86
66
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
*
|
|
90
|
-
* @synopsis
|
|
91
|
-
* ```coffeescript [specscript]
|
|
92
|
-
* pipe.sync(funcs Array<function>)(...args) -> result Promise|any
|
|
93
|
-
* ```
|
|
94
|
-
*
|
|
95
|
-
* @description
|
|
96
|
-
* A synchronous version of `pipe` that does not resolve promises by default.
|
|
97
|
-
*
|
|
98
|
-
* ```javascript [playground]
|
|
99
|
-
* pipe.sync([
|
|
100
|
-
* value => Promise.resolve(value),
|
|
101
|
-
* promise => promise.then(console.log)
|
|
102
|
-
* ])('hey') // hey
|
|
103
|
-
* ```
|
|
104
|
-
*/
|
|
105
|
-
pipe.sync = pipeSync
|
|
67
|
+
return pipeline(...args)
|
|
68
|
+
}
|
|
106
69
|
|
|
107
70
|
module.exports = pipe
|
package/reduce.js
CHANGED
|
@@ -1,39 +1,44 @@
|
|
|
1
1
|
const isPromise = require('./_internal/isPromise')
|
|
2
2
|
const __ = require('./_internal/placeholder')
|
|
3
3
|
const curry3 = require('./_internal/curry3')
|
|
4
|
-
const curryArgs3 = require('./_internal/curryArgs3')
|
|
5
4
|
const genericReduce = require('./_internal/genericReduce')
|
|
6
5
|
|
|
6
|
+
// _reduce(collection any, reducer function, initialValue function|any) -> Promise
|
|
7
|
+
const _reduce = function (collection, reducer, initialValue) {
|
|
8
|
+
if (typeof initialValue == 'function') {
|
|
9
|
+
const actualInitialValue = initialValue(collection)
|
|
10
|
+
return isPromise(actualInitialValue)
|
|
11
|
+
? actualInitialValue.then(curry3(genericReduce, collection, reducer, __))
|
|
12
|
+
: genericReduce(collection, reducer, actualInitialValue)
|
|
13
|
+
}
|
|
14
|
+
return isPromise(initialValue)
|
|
15
|
+
? initialValue.then(curry3(genericReduce, collection, reducer, __))
|
|
16
|
+
: genericReduce(collection, reducer, initialValue)
|
|
17
|
+
}
|
|
18
|
+
|
|
7
19
|
/**
|
|
8
20
|
* @name reduce
|
|
9
21
|
*
|
|
10
22
|
* @synopsis
|
|
11
23
|
* ```coffeescript [specscript]
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* reduce(
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* reduce(
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* reduce(reducer, initialValue?)(iterator Iterator) -> result Promise|any
|
|
31
|
-
* reduce(iterator Iterator, reducer, initialValue?) -> result Promise|any
|
|
32
|
-
*
|
|
33
|
-
* reduce(reducer, initialValue?)(asyncIterator AsyncIterator)
|
|
34
|
-
* -> result Promise|any
|
|
35
|
-
* reduce(asyncIterator AsyncIterator, reducer, initialValue?)
|
|
36
|
-
* -> result Promise|any
|
|
24
|
+
* type Foldable = Array|Object|Map|Iterator|AsyncIterator
|
|
25
|
+
* type Reducer = (
|
|
26
|
+
* accumulator any,
|
|
27
|
+
* value any,
|
|
28
|
+
* indexOrKey? number|string,
|
|
29
|
+
* collection? Foldable,
|
|
30
|
+
* )=>(nextAccumulator Promise|any)
|
|
31
|
+
*
|
|
32
|
+
* reduce(
|
|
33
|
+
* collection Foldable,
|
|
34
|
+
* reducer Reducer,
|
|
35
|
+
* initialValue? function|any
|
|
36
|
+
* ) -> result Promise|any
|
|
37
|
+
*
|
|
38
|
+
* reduce(
|
|
39
|
+
* reducer Reducer,
|
|
40
|
+
* initialValue? function|any
|
|
41
|
+
* )(collection Foldable) -> result Promise|any
|
|
37
42
|
* ```
|
|
38
43
|
*
|
|
39
44
|
* @description
|
|
@@ -46,7 +51,7 @@ const genericReduce = require('./_internal/genericReduce')
|
|
|
46
51
|
* * `Iterator`/`Generator`
|
|
47
52
|
* * `AsyncIterator`/`AsyncGenerator`
|
|
48
53
|
*
|
|
49
|
-
* For arrays (type `Array`), `reduce` executes the reducer function for each item of the array in order, returning a new result at each execution to be used in the next execution.
|
|
54
|
+
* For arrays (type `Array`), `reduce` executes the reducer function for each item of the array in order, returning a new result at each execution to be used in the next execution. On each iteration, the reducer is passed the accumulator, the item of the iteration, the index of the item in the array, and a reference to the original array.
|
|
50
55
|
*
|
|
51
56
|
* ```javascript [playground]
|
|
52
57
|
* const max = (a, b) => a > b ? a : b
|
|
@@ -84,7 +89,7 @@ const genericReduce = require('./_internal/genericReduce')
|
|
|
84
89
|
* // ['initial length 5', 1, 4, 9, 16, 25]
|
|
85
90
|
* ```
|
|
86
91
|
*
|
|
87
|
-
* For objects (type `Object`), `reduce` executes the reducer function for each value of the object.
|
|
92
|
+
* For objects (type `Object`), `reduce` executes the reducer function for each value of the object. On each iteration, the reducer is passed the accumulator, the object value, the key of the object value, and a reference to the original object.
|
|
88
93
|
*
|
|
89
94
|
* ```javascript [playground]
|
|
90
95
|
* const add = (a, b) => a + b
|
|
@@ -100,7 +105,7 @@ const genericReduce = require('./_internal/genericReduce')
|
|
|
100
105
|
* ) // 15
|
|
101
106
|
* ```
|
|
102
107
|
*
|
|
103
|
-
* For sets (type `Set`), `reduce` executes the reducer function for each item of the set.
|
|
108
|
+
* For sets (type `Set`), `reduce` executes the reducer function for each item of the set. On each iteration, the reducer is passed the accumulator and item of the set.
|
|
104
109
|
*
|
|
105
110
|
* ```javascript [playground]
|
|
106
111
|
* const add = (a, b) => a + b
|
|
@@ -116,7 +121,7 @@ const genericReduce = require('./_internal/genericReduce')
|
|
|
116
121
|
* ) // 15
|
|
117
122
|
* ```
|
|
118
123
|
*
|
|
119
|
-
* For maps (type `Map`), `reduce` executes the reducer function for each value of each entry of the map.
|
|
124
|
+
* For maps (type `Map`), `reduce` executes the reducer function for each value of each entry of the map. On each iteration, the reducer is passed the accumulator, the map item, the key of the map item, and a reference to the original map.
|
|
120
125
|
*
|
|
121
126
|
* ```javascript [playground]
|
|
122
127
|
* const add = (a, b) => a + b
|
|
@@ -132,7 +137,7 @@ const genericReduce = require('./_internal/genericReduce')
|
|
|
132
137
|
* ) // 15
|
|
133
138
|
* ```
|
|
134
139
|
*
|
|
135
|
-
* For iterators (type `Iterator`) and generators (type `Generator`), `reduce` executes the reducer function for each value of the iterator/generator. The iterator/generator is consumed in the process.
|
|
140
|
+
* For iterators (type `Iterator`) and generators (type `Generator`), `reduce` executes the reducer function for each value of the iterator/generator. On each iteration, the reducer is passed the accumulator and the item of the iteration. The iterator/generator is consumed in the process.
|
|
136
141
|
*
|
|
137
142
|
* ```javascript [playground]
|
|
138
143
|
* const add = (a, b) => a + b
|
|
@@ -150,7 +155,7 @@ const genericReduce = require('./_internal/genericReduce')
|
|
|
150
155
|
* ) // 15
|
|
151
156
|
* ```
|
|
152
157
|
*
|
|
153
|
-
* For asyncIterators (type `AsyncIterator`) and asyncGenerators (type `AsyncGenerator`), `reduce` executes the reducer function for each value of the asyncIterator/asyncGenerator. The asyncIterator/asyncGenerator is consumed in the process.
|
|
158
|
+
* For asyncIterators (type `AsyncIterator`) and asyncGenerators (type `AsyncGenerator`), `reduce` executes the reducer function for each value of the asyncIterator/asyncGenerator. On each iteration, the reducer is passed the accumulator and the item of the async iteration. The asyncIterator/asyncGenerator is consumed in the process.
|
|
154
159
|
*
|
|
155
160
|
* ```javascript [playground]
|
|
156
161
|
* const asyncAdd = async (a, b) => a + b
|
|
@@ -174,27 +179,13 @@ const genericReduce = require('./_internal/genericReduce')
|
|
|
174
179
|
*/
|
|
175
180
|
|
|
176
181
|
const reduce = function (...args) {
|
|
177
|
-
if (typeof args[0]
|
|
178
|
-
|
|
179
|
-
const initialValue = args[2]
|
|
180
|
-
if (typeof initialValue == 'function') {
|
|
181
|
-
return genericReduce([args[0]], reducer, initialValue(args[0]))
|
|
182
|
-
}
|
|
183
|
-
return genericReduce([args[0]], reducer, initialValue)
|
|
182
|
+
if (typeof args[0] == 'function') {
|
|
183
|
+
return curry3(_reduce, __, args[0], args[1])
|
|
184
184
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
const initialValue = args[1]
|
|
188
|
-
|
|
189
|
-
if (typeof initialValue == 'function') {
|
|
190
|
-
return function reducing(...args) {
|
|
191
|
-
const result = initialValue(...args)
|
|
192
|
-
return isPromise(result)
|
|
193
|
-
? result.then(curry3(genericReduce, args, reducer, __))
|
|
194
|
-
: genericReduce(args, reducer, result)
|
|
195
|
-
}
|
|
185
|
+
if (isPromise(args[0])) {
|
|
186
|
+
return args[0].then(curry3(_reduce, __, args[1], args[2]))
|
|
196
187
|
}
|
|
197
|
-
return
|
|
188
|
+
return _reduce(args[0], args[1], args[2])
|
|
198
189
|
}
|
|
199
190
|
|
|
200
191
|
module.exports = reduce
|
package/rubico.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
const pipe = require('./pipe')
|
|
2
|
-
const
|
|
3
|
-
const assign = require('./assign')
|
|
2
|
+
const compose = require('./compose')
|
|
4
3
|
const tap = require('./tap')
|
|
4
|
+
const all = require('./all')
|
|
5
|
+
const assign = require('./assign')
|
|
5
6
|
const tryCatch = require('./tryCatch')
|
|
6
7
|
const switchCase = require('./switchCase')
|
|
7
8
|
const map = require('./map')
|
|
@@ -9,8 +10,9 @@ const filter = require('./filter')
|
|
|
9
10
|
const reduce = require('./reduce')
|
|
10
11
|
const transform = require('./transform')
|
|
11
12
|
const flatMap = require('./flatMap')
|
|
12
|
-
const
|
|
13
|
-
const
|
|
13
|
+
const forEach = require('./forEach')
|
|
14
|
+
const some = require('./some')
|
|
15
|
+
const every = require('./every')
|
|
14
16
|
const and = require('./and')
|
|
15
17
|
const or = require('./or')
|
|
16
18
|
const not = require('./not')
|
|
@@ -42,14 +44,23 @@ const __ = require('./__')
|
|
|
42
44
|
*/
|
|
43
45
|
|
|
44
46
|
const rubico = {
|
|
45
|
-
pipe,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
pipe, compose,
|
|
48
|
+
|
|
49
|
+
tap, forEach,
|
|
50
|
+
|
|
51
|
+
switchCase,
|
|
52
|
+
|
|
53
|
+
tryCatch,
|
|
54
|
+
|
|
55
|
+
all, assign, get, set, pick, omit,
|
|
56
|
+
|
|
57
|
+
map, filter, flatMap, reduce, transform,
|
|
58
|
+
|
|
59
|
+
and, or, not, some, every,
|
|
60
|
+
|
|
50
61
|
eq, gt, lt, gte, lte,
|
|
51
|
-
|
|
52
|
-
curry, __,
|
|
62
|
+
|
|
63
|
+
thunkify, always, curry, __,
|
|
53
64
|
}
|
|
54
65
|
|
|
55
66
|
module.exports = rubico
|
package/set.js
CHANGED
|
@@ -3,12 +3,48 @@ const setByPath = require('./_internal/setByPath')
|
|
|
3
3
|
const curry3 = require('./_internal/curry3')
|
|
4
4
|
const __ = require('./_internal/placeholder')
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* @name _set
|
|
8
|
+
*
|
|
9
|
+
* @synopsis
|
|
10
|
+
* ```coffeescript [specscript]
|
|
11
|
+
* _set(
|
|
12
|
+
* obj Object,
|
|
13
|
+
* path string|Array<string|number>,
|
|
14
|
+
* value function|any,
|
|
15
|
+
* ) -> result Promise|Object
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
const _set = function (obj, path, value) {
|
|
19
|
+
if (typeof value == 'function') {
|
|
20
|
+
const actualValue = value(obj)
|
|
21
|
+
if (isPromise(actualValue)) {
|
|
22
|
+
return actualValue.then(
|
|
23
|
+
curry3(setByPath, obj, __, path)
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
return setByPath(obj, actualValue, path)
|
|
27
|
+
}
|
|
28
|
+
if (isPromise(value)) {
|
|
29
|
+
return value.then(
|
|
30
|
+
curry3(setByPath, obj, __, path)
|
|
31
|
+
)
|
|
32
|
+
}
|
|
33
|
+
return setByPath(obj, value, path)
|
|
34
|
+
}
|
|
35
|
+
|
|
6
36
|
/**
|
|
7
37
|
* @name set
|
|
8
38
|
*
|
|
9
39
|
* @synopsis
|
|
10
40
|
* ```coffeescript [specscript]
|
|
11
41
|
* set(
|
|
42
|
+
* object Object,
|
|
43
|
+
* path string|Array<string|number>,
|
|
44
|
+
* value function|any,
|
|
45
|
+
* ) -> result Promise|Object
|
|
46
|
+
*
|
|
47
|
+
* set(
|
|
12
48
|
* path string|Array<string|number>,
|
|
13
49
|
* value function|any,
|
|
14
50
|
* )(object Object) -> result Promise|Object
|
|
@@ -48,17 +84,14 @@ const __ = require('./_internal/placeholder')
|
|
|
48
84
|
* @since 1.7.0
|
|
49
85
|
*/
|
|
50
86
|
|
|
51
|
-
const set = (
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
if (isPromise(actualValue)) {
|
|
55
|
-
return actualValue.then(
|
|
56
|
-
curry3(setByPath, obj, __, path)
|
|
57
|
-
)
|
|
58
|
-
}
|
|
59
|
-
return setByPath(obj, actualValue, path)
|
|
87
|
+
const set = function (arg0, arg1, arg2) {
|
|
88
|
+
if (arg2 == null) {
|
|
89
|
+
return curry3(_set, __, arg0, arg1)
|
|
60
90
|
}
|
|
61
|
-
|
|
91
|
+
if (isPromise(arg0)) {
|
|
92
|
+
return arg0.then(curry3(_set, __, arg1, arg2))
|
|
93
|
+
}
|
|
94
|
+
return _set(arg0, arg1, arg2)
|
|
62
95
|
}
|
|
63
96
|
|
|
64
97
|
module.exports = set
|
package/some.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
const isPromise = require('./_internal/isPromise')
|
|
2
|
+
const __ = require('./_internal/placeholder')
|
|
3
|
+
const curry2 = require('./_internal/curry2')
|
|
4
|
+
const isArray = require('./_internal/isArray')
|
|
5
|
+
const objectValues = require('./_internal/objectValues')
|
|
6
|
+
const arraySome = require('./_internal/arraySome')
|
|
7
|
+
const iteratorSome = require('./_internal/iteratorSome')
|
|
8
|
+
const asyncIteratorSome = require('./_internal/asyncIteratorSome')
|
|
9
|
+
const reducerSome = require('./_internal/reducerSome')
|
|
10
|
+
const symbolIterator = require('./_internal/symbolIterator')
|
|
11
|
+
const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
12
|
+
|
|
13
|
+
// _some(collection Array|Iterable|AsyncIterable|{ reduce: function }|Object, predicate function) -> Promise|boolean
|
|
14
|
+
const _some = function (collection, predicate) {
|
|
15
|
+
if (isArray(collection)) {
|
|
16
|
+
return arraySome(collection, predicate)
|
|
17
|
+
}
|
|
18
|
+
if (collection == null) {
|
|
19
|
+
return predicate(collection)
|
|
20
|
+
}
|
|
21
|
+
if (typeof collection[symbolIterator] == 'function') {
|
|
22
|
+
return iteratorSome(collection[symbolIterator](), predicate)
|
|
23
|
+
}
|
|
24
|
+
if (typeof collection[symbolAsyncIterator] == 'function') {
|
|
25
|
+
return asyncIteratorSome(
|
|
26
|
+
collection[symbolAsyncIterator](), predicate, new Set()
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
if (typeof collection.reduce == 'function') {
|
|
30
|
+
return collection.reduce(reducerSome(predicate), false)
|
|
31
|
+
}
|
|
32
|
+
if (collection.constructor == Object) {
|
|
33
|
+
return arraySome(objectValues(collection), predicate)
|
|
34
|
+
}
|
|
35
|
+
return predicate(collection)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @name some
|
|
40
|
+
*
|
|
41
|
+
* @synopsis
|
|
42
|
+
* ```coffeescript [specscript]
|
|
43
|
+
* type Foldable = Array|Iterable|AsyncIterable|{ reduce: function }|Object
|
|
44
|
+
*
|
|
45
|
+
* some(collection Foldable, predicate function) -> Promise|boolean
|
|
46
|
+
*
|
|
47
|
+
* some(predicate function)(collection Foldable) -> Promise|boolean
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @description
|
|
51
|
+
* Test a predicate concurrently across all items of a collection, returning true if any executions return truthy.
|
|
52
|
+
*
|
|
53
|
+
* ```javascript [playground]
|
|
54
|
+
* const isOdd = number => number % 2 == 1
|
|
55
|
+
*
|
|
56
|
+
* console.log(
|
|
57
|
+
* some([1, 2, 3, 4, 5], isOdd),
|
|
58
|
+
* ) // true
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* The collection can be any iterable, async iterable, or object values iterable collection. Below is an example of `some` accepting an async generator as the collection.
|
|
62
|
+
*
|
|
63
|
+
* ```javascript [playground]
|
|
64
|
+
* const toTodosUrl = id => 'https://jsonplaceholder.typicode.com/todos/' + id
|
|
65
|
+
*
|
|
66
|
+
* const fetchedToJson = fetched => fetched.json()
|
|
67
|
+
*
|
|
68
|
+
* const fetchTodo = pipe([
|
|
69
|
+
* toTodosUrl,
|
|
70
|
+
* fetch,
|
|
71
|
+
* fetchedToJson,
|
|
72
|
+
* ])
|
|
73
|
+
*
|
|
74
|
+
* const todoIDsGenerator = async function* () {
|
|
75
|
+
* yield 1; yield 2; yield 3; yield 4; yield 5
|
|
76
|
+
* }
|
|
77
|
+
*
|
|
78
|
+
* some(pipe([
|
|
79
|
+
* fetchTodo,
|
|
80
|
+
* todo => todo.title.startsWith('fugiat'),
|
|
81
|
+
* ]))(todoIDsGenerator()).then(console.log) // true
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @execution concurrent
|
|
85
|
+
*
|
|
86
|
+
* @muxing
|
|
87
|
+
*
|
|
88
|
+
* @related or
|
|
89
|
+
*/
|
|
90
|
+
|
|
91
|
+
const some = function (...args) {
|
|
92
|
+
const predicate = args.pop()
|
|
93
|
+
if (args.length == 0) {
|
|
94
|
+
return curry2(_some, __, predicate)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const collection = args[0]
|
|
98
|
+
if (isPromise(collection)) {
|
|
99
|
+
return collection.then(curry2(_some, __, predicate))
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return _some(collection, predicate)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
module.exports = some
|
package/switchCase.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
const promiseAll = require('./_internal/promiseAll')
|
|
2
|
+
const areAnyValuesPromises = require('./_internal/areAnyValuesPromises')
|
|
1
3
|
const arrayConditional = require('./_internal/arrayConditional')
|
|
2
4
|
const areAllValuesNonfunctions = require('./_internal/areAllValuesNonfunctions')
|
|
3
5
|
const nonfunctionsConditional = require('./_internal/nonfunctionsConditional')
|
|
6
|
+
const __ = require('./_internal/placeholder')
|
|
7
|
+
const curry3 = require('./_internal/curry3')
|
|
8
|
+
const curryArgs3 = require('./_internal/curryArgs3')
|
|
4
9
|
|
|
5
10
|
/**
|
|
6
11
|
* @name switchCase
|
|
@@ -57,13 +62,18 @@ const nonfunctionsConditional = require('./_internal/nonfunctionsConditional')
|
|
|
57
62
|
*
|
|
58
63
|
* @execution series
|
|
59
64
|
*/
|
|
60
|
-
const switchCase =
|
|
65
|
+
const switchCase = (...args) => {
|
|
66
|
+
const values = args.pop()
|
|
61
67
|
if (areAllValuesNonfunctions(values)) {
|
|
62
68
|
return nonfunctionsConditional(values, -2)
|
|
63
69
|
}
|
|
64
|
-
|
|
65
|
-
return arrayConditional
|
|
70
|
+
if (args.length == 0) {
|
|
71
|
+
return curryArgs3(arrayConditional, values, __, -2)
|
|
66
72
|
}
|
|
73
|
+
if (areAnyValuesPromises(args)) {
|
|
74
|
+
return promiseAll(args).then(curry3(arrayConditional, values, __, -2))
|
|
75
|
+
}
|
|
76
|
+
return arrayConditional(values, args, -2)
|
|
67
77
|
}
|
|
68
78
|
|
|
69
79
|
module.exports = switchCase
|
package/tap.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
const isPromise = require('./_internal/isPromise')
|
|
2
2
|
const always = require('./_internal/always')
|
|
3
|
-
const tapSync = require('./_internal/tapSync')
|
|
4
3
|
const thunkifyArgs = require('./_internal/thunkifyArgs')
|
|
5
4
|
const thunkConditional = require('./_internal/thunkConditional')
|
|
6
5
|
const curry3 = require('./_internal/curry3')
|
|
@@ -35,29 +34,6 @@ const tap = func => function tapping(...args) {
|
|
|
35
34
|
return isPromise(call) ? call.then(always(result)) : result
|
|
36
35
|
}
|
|
37
36
|
|
|
38
|
-
/**
|
|
39
|
-
* @name tap.sync
|
|
40
|
-
*
|
|
41
|
-
* @synopsis
|
|
42
|
-
* ```coffeescript [specscript]
|
|
43
|
-
* tap.sync(func function)(...args) -> args[0]
|
|
44
|
-
* ```
|
|
45
|
-
*
|
|
46
|
-
* @description
|
|
47
|
-
* Synchronous `tap`
|
|
48
|
-
*
|
|
49
|
-
* ```javascript [playground]
|
|
50
|
-
* const pipeline = pipe([
|
|
51
|
-
* tap.sync(number => console.log('square', number ** 2)),
|
|
52
|
-
* tap.sync(number => console.log('cube', number ** 3)),
|
|
53
|
-
* ])
|
|
54
|
-
*
|
|
55
|
-
* pipeline(3) // 9
|
|
56
|
-
* // 27
|
|
57
|
-
* ```
|
|
58
|
-
*/
|
|
59
|
-
tap.sync = tapSync
|
|
60
|
-
|
|
61
37
|
/**
|
|
62
38
|
* @name tap.if
|
|
63
39
|
*
|