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
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const __ = require('./placeholder')
|
|
2
|
+
|
|
3
|
+
// argument resolver for curryArgs2
|
|
4
|
+
const curryArgs2ResolveArgs0 = (
|
|
5
|
+
baseFunc, arg1, arg2,
|
|
6
|
+
) => function args0Resolver(...args) {
|
|
7
|
+
return baseFunc(args, arg1)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// argument resolver for curryArgs2
|
|
11
|
+
const curryArgs2ResolveArgs1 = (
|
|
12
|
+
baseFunc, arg0, arg2,
|
|
13
|
+
) => function arg1Resolver(...args) {
|
|
14
|
+
return baseFunc(arg0, args)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @name curryArgs2
|
|
19
|
+
*
|
|
20
|
+
* @synopsis
|
|
21
|
+
* ```coffeescript [specscript]
|
|
22
|
+
* type __ = Symbol('placeholder')
|
|
23
|
+
*
|
|
24
|
+
* curryArgs2(
|
|
25
|
+
* baseFunc function,
|
|
26
|
+
* arg0 __|any,
|
|
27
|
+
* arg1 __|any,
|
|
28
|
+
* ) -> function
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @description
|
|
32
|
+
* Curry arguments for a 2-ary function. Arguments are supplied in placeholder position as an array.
|
|
33
|
+
*
|
|
34
|
+
* Note: at least one argument must be the placeholder
|
|
35
|
+
*/
|
|
36
|
+
const curryArgs2 = function (baseFunc, arg0, arg1) {
|
|
37
|
+
if (arg0 == __) {
|
|
38
|
+
return curryArgs2ResolveArgs0(baseFunc, arg1)
|
|
39
|
+
}
|
|
40
|
+
return curryArgs2ResolveArgs1(baseFunc, arg0)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
module.exports = curryArgs2
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const assert = require('assert')
|
|
2
|
+
const curryArgs3 = require('./curryArgs3')
|
|
3
|
+
const __ = require('./placeholder')
|
|
4
|
+
|
|
5
|
+
describe('curryArgs3', () => {
|
|
6
|
+
const func = function (a, b, c) {
|
|
7
|
+
return [a, b, c]
|
|
8
|
+
}
|
|
9
|
+
it('resolves arguments in __ position for arg0', async () => {
|
|
10
|
+
const curried = curryArgs3(func, __, 1, 2)
|
|
11
|
+
assert.deepEqual(curried(3), [[3], 1, 2])
|
|
12
|
+
})
|
|
13
|
+
it('resolves arguments in __ position for arg1', async () => {
|
|
14
|
+
const curried = curryArgs3(func, 1, __, 2)
|
|
15
|
+
assert.deepEqual(curried(3), [1, [3], 2])
|
|
16
|
+
})
|
|
17
|
+
it('resolves arguments in __ position for arg2', async () => {
|
|
18
|
+
const curried = curryArgs3(func, 1, 2, __)
|
|
19
|
+
assert.deepEqual(curried(3), [1, 2, [3]])
|
|
20
|
+
})
|
|
21
|
+
})
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
const __ = require('./placeholder')
|
|
2
|
+
|
|
3
|
+
// argument resolver for curryArgs4
|
|
4
|
+
const curryArgs4ResolveArgs0 = (
|
|
5
|
+
baseFunc, arg1, arg2, arg3,
|
|
6
|
+
) => function args0Resolver(...args) {
|
|
7
|
+
return baseFunc(args, arg1, arg2, arg3)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// argument resolver for curryArgs4
|
|
11
|
+
const curryArgs4ResolveArgs1 = (
|
|
12
|
+
baseFunc, arg0, arg2, arg3,
|
|
13
|
+
) => function args1Resolver(...args) {
|
|
14
|
+
return baseFunc(arg0, args, arg2, arg3)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// argument resolver for curryArgs4
|
|
18
|
+
const curryArgs4ResolveArgs2 = (
|
|
19
|
+
baseFunc, arg0, arg1, arg3,
|
|
20
|
+
) => function args2Resolver(...args) {
|
|
21
|
+
return baseFunc(arg0, arg1, args, arg3)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// argument resolver for curryArgs4
|
|
25
|
+
const curryArgs4ResolveArgs3 = (
|
|
26
|
+
baseFunc, arg0, arg1, arg2,
|
|
27
|
+
) => function args3Resolver(...args) {
|
|
28
|
+
return baseFunc(arg0, arg1, arg2, args)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @name curryArgs4
|
|
33
|
+
*
|
|
34
|
+
* @synopsis
|
|
35
|
+
* ```coffeescript [specscript]
|
|
36
|
+
* __ = Symbol('placeholder')
|
|
37
|
+
*
|
|
38
|
+
* curryArgs4(
|
|
39
|
+
* baseFunc function,
|
|
40
|
+
* arg0 __|any,
|
|
41
|
+
* arg1 __|any,
|
|
42
|
+
* arg2 __|any
|
|
43
|
+
* arg3 __|any,
|
|
44
|
+
* ) -> function
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @description
|
|
48
|
+
* Curry arguments for a 4-ary function. Arguments are supplied in placeholder position as an array.
|
|
49
|
+
*
|
|
50
|
+
* Note: at least one argument must be the placeholder
|
|
51
|
+
*/
|
|
52
|
+
const curryArgs4 = function (baseFunc, arg0, arg1, arg2, arg3) {
|
|
53
|
+
if (arg0 == __) {
|
|
54
|
+
return curryArgs4ResolveArgs0(baseFunc, arg1, arg2, arg3)
|
|
55
|
+
}
|
|
56
|
+
if (arg1 == __) {
|
|
57
|
+
return curryArgs4ResolveArgs1(baseFunc, arg0, arg2, arg3)
|
|
58
|
+
}
|
|
59
|
+
if (arg2 == __) {
|
|
60
|
+
return curryArgs4ResolveArgs2(baseFunc, arg0, arg1, arg3)
|
|
61
|
+
}
|
|
62
|
+
return curryArgs4ResolveArgs3(baseFunc, arg0, arg1, arg2)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
module.exports = curryArgs4
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const assert = require('assert')
|
|
2
|
+
const curryArgs4 = require('./curryArgs4')
|
|
3
|
+
const __ = require('./placeholder')
|
|
4
|
+
|
|
5
|
+
describe('curryArgs4', () => {
|
|
6
|
+
const func = function (a, b, c, d) {
|
|
7
|
+
return [a, b, c, d]
|
|
8
|
+
}
|
|
9
|
+
it('resolves arguments in __ position for arg0', async () => {
|
|
10
|
+
const curried = curryArgs4(func, __, 1, 2, 3)
|
|
11
|
+
assert.deepEqual(curried(1, 2, 3), [[1, 2, 3], 1, 2, 3])
|
|
12
|
+
})
|
|
13
|
+
it('resolves arguments in __ position for arg1', async () => {
|
|
14
|
+
const curried = curryArgs4(func, 1, __, 2, 3)
|
|
15
|
+
assert.deepEqual(curried(1, 2, 3), [1, [1, 2, 3], 2, 3])
|
|
16
|
+
})
|
|
17
|
+
it('resolves arguments in __ position for arg2', async () => {
|
|
18
|
+
const curried = curryArgs4(func, 1, 2, __, 3)
|
|
19
|
+
assert.deepEqual(curried(1, 2, 3), [1, 2, [1, 2, 3], 3])
|
|
20
|
+
})
|
|
21
|
+
it('resolves arguments in __ position for arg3', async () => {
|
|
22
|
+
const curried = curryArgs4(func, 1, 2, 3, __)
|
|
23
|
+
assert.deepEqual(curried(1, 2, 3), [1, 2, 3, [1, 2, 3]])
|
|
24
|
+
})
|
|
25
|
+
})
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const fs = require('fs')
|
|
2
|
+
const pathResolve = require('./pathResolve')
|
|
3
|
+
|
|
4
|
+
// findAllFilePaths(path string) -> filePaths Promise<Array<string>>
|
|
5
|
+
const findAllFilePaths = async function (path) {
|
|
6
|
+
const files = await fs.promises.readdir(path, {
|
|
7
|
+
withFileTypes: true,
|
|
8
|
+
recursive: true,
|
|
9
|
+
})
|
|
10
|
+
const result = []
|
|
11
|
+
for (const file of files) {
|
|
12
|
+
if (file.isDirectory()) {
|
|
13
|
+
const filePaths = await findAllFilePaths(pathResolve(path, file.name))
|
|
14
|
+
result.push(...filePaths)
|
|
15
|
+
} else {
|
|
16
|
+
result.push(pathResolve(path, file.name))
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return result
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
module.exports = findAllFilePaths
|
package/_internal/funcApply.js
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name funcCall
|
|
3
|
+
*
|
|
4
|
+
* @synopsis
|
|
5
|
+
* ```coffeescript [specscript]
|
|
6
|
+
* funcCall(func function, context Object, ...args) -> any
|
|
7
|
+
* ```
|
|
8
|
+
*
|
|
9
|
+
* @description
|
|
10
|
+
* Apply arguments to a function.
|
|
11
|
+
*/
|
|
12
|
+
const funcCall = (func, context, ...args) => func.call(context, ...args)
|
|
13
|
+
|
|
14
|
+
module.exports = funcCall
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const isPromise = require('./isPromise')
|
|
2
|
+
const promiseAll = require('./promiseAll')
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @name functionArrayAll
|
|
6
|
+
*
|
|
7
|
+
* @synopsis
|
|
8
|
+
* ```coffeescript [specscript]
|
|
9
|
+
* functionArrayAll(funcs Array<function>, args Array) -> Promise|Array
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
const functionArrayAll = function (funcs, args) {
|
|
13
|
+
const funcsLength = funcs.length,
|
|
14
|
+
result = Array(funcsLength)
|
|
15
|
+
let funcsIndex = -1, isAsync = false
|
|
16
|
+
while (++funcsIndex < funcsLength) {
|
|
17
|
+
const resultItem = funcs[funcsIndex](...args)
|
|
18
|
+
if (isPromise(resultItem)) {
|
|
19
|
+
isAsync = true
|
|
20
|
+
}
|
|
21
|
+
result[funcsIndex] = resultItem
|
|
22
|
+
}
|
|
23
|
+
return isAsync ? promiseAll(result) : result
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
module.exports = functionArrayAll
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const funcConcat = require('./funcConcat')
|
|
2
|
+
const isPromise = require('./isPromise')
|
|
3
|
+
const __ = require('./placeholder')
|
|
4
|
+
const curry3 = require('./curry3')
|
|
5
|
+
const curry4 = require('./curry4')
|
|
6
|
+
const objectSet = require('./objectSet')
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @name asyncFunctionArrayAllSeries
|
|
10
|
+
*
|
|
11
|
+
* @synopsis
|
|
12
|
+
* ```coffeescript [specscript]
|
|
13
|
+
* asyncFunctionArrayAllSeries(
|
|
14
|
+
* funcs Array<function>,
|
|
15
|
+
* args Array,
|
|
16
|
+
* result Array,
|
|
17
|
+
* funcsIndex number
|
|
18
|
+
* ) -> Promise|Array
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @TODO benchmark vs regular promise handling
|
|
22
|
+
*/
|
|
23
|
+
const asyncFunctionArrayAllSeries = async function (funcs, args, result, funcsIndex) {
|
|
24
|
+
const funcsLength = funcs.length
|
|
25
|
+
while (++funcsIndex < funcsLength) {
|
|
26
|
+
const resultItem = funcs[funcsIndex](...args)
|
|
27
|
+
result[funcsIndex] = isPromise(resultItem) ? await resultItem : resultItem
|
|
28
|
+
}
|
|
29
|
+
return result
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @name functionArrayAllSeries
|
|
34
|
+
*
|
|
35
|
+
* @synopsis
|
|
36
|
+
* ```coffeescript [specscript]
|
|
37
|
+
* functionArrayAllSeries(funcs Array<function>, args Array) -> Promise|Array
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
const functionArrayAllSeries = function (funcs, args) {
|
|
41
|
+
const funcsLength = funcs.length, result = []
|
|
42
|
+
let funcsIndex = -1
|
|
43
|
+
while (++funcsIndex < funcsLength) {
|
|
44
|
+
const resultItem = funcs[funcsIndex](...args)
|
|
45
|
+
if (isPromise(resultItem)) {
|
|
46
|
+
return resultItem.then(funcConcat(
|
|
47
|
+
curry3(objectSet, result, funcsIndex, __),
|
|
48
|
+
curry4(asyncFunctionArrayAllSeries, funcs, args, __, funcsIndex)))
|
|
49
|
+
}
|
|
50
|
+
result[funcsIndex] = resultItem
|
|
51
|
+
}
|
|
52
|
+
return result
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
module.exports = functionArrayAllSeries
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const always = require('./always')
|
|
2
|
+
const isPromise = require('./isPromise')
|
|
3
|
+
const promiseAll = require('./promiseAll')
|
|
4
|
+
const __ = require('./placeholder')
|
|
5
|
+
const curry3 = require('./curry3')
|
|
6
|
+
const objectSet = require('./objectSet')
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @name functionObjectAll
|
|
10
|
+
*
|
|
11
|
+
* @synopsis
|
|
12
|
+
* ```coffeescript [specscript]
|
|
13
|
+
* functionObjectAll(funcs Array<function>, args Array) -> Promise|Object
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @description
|
|
17
|
+
* Concurrently execute the same arguments for each function of an object of functions, returning an object of results.
|
|
18
|
+
*/
|
|
19
|
+
const functionObjectAll = function (funcs, args) {
|
|
20
|
+
const result = {}, promises = []
|
|
21
|
+
for (const key in funcs) {
|
|
22
|
+
const resultItem = funcs[key](...args)
|
|
23
|
+
if (isPromise(resultItem)) {
|
|
24
|
+
promises.push(resultItem.then(curry3(objectSet, result, key, __)))
|
|
25
|
+
} else {
|
|
26
|
+
result[key] = resultItem
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return promises.length == 0 ? result : promiseAll(promises).then(always(result))
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
module.exports = functionObjectAll
|
|
@@ -12,8 +12,6 @@ const curryArgs3 = require('./curryArgs3')
|
|
|
12
12
|
const arrayReduce = require('./arrayReduce')
|
|
13
13
|
const objectReduce = require('./objectReduce')
|
|
14
14
|
const mapReduce = require('./mapReduce')
|
|
15
|
-
const generatorFunctionReduce = require('./generatorFunctionReduce')
|
|
16
|
-
const asyncGeneratorFunctionReduce = require('./asyncGeneratorFunctionReduce')
|
|
17
15
|
const reducerConcat = require('./reducerConcat')
|
|
18
16
|
|
|
19
17
|
/**
|
|
@@ -25,7 +23,7 @@ const reducerConcat = require('./reducerConcat')
|
|
|
25
23
|
* |{ reduce: (any, T)=>any }|Object<T>
|
|
26
24
|
*
|
|
27
25
|
* genericReduce<T>(
|
|
28
|
-
*
|
|
26
|
+
* collection Foldable<T>,
|
|
29
27
|
* reducer (any, T)=>any,
|
|
30
28
|
* result any?,
|
|
31
29
|
* ) -> result
|
|
@@ -33,33 +31,17 @@ const reducerConcat = require('./reducerConcat')
|
|
|
33
31
|
*
|
|
34
32
|
* @related genericReduceConcurrent
|
|
35
33
|
*
|
|
36
|
-
* @TODO genericReduceSync(
|
|
34
|
+
* @TODO genericReduceSync(collection, reducer, init) - performance optimization for some of these genericReduces that we know are synchronous
|
|
37
35
|
*
|
|
38
|
-
* @TODO genericReducePool(poolSize,
|
|
36
|
+
* @TODO genericReducePool(poolSize, collection, reducer, init) - for some of these genericReduces that we want to race - result should not care about order of concatenations
|
|
39
37
|
* reduce.pool
|
|
40
38
|
* transform.pool
|
|
41
39
|
* flatMap.pool
|
|
42
40
|
*/
|
|
43
|
-
const genericReduce = function (
|
|
44
|
-
const collection = args[0]
|
|
41
|
+
const genericReduce = function (collection, reducer, result) {
|
|
45
42
|
if (isArray(collection)) {
|
|
46
43
|
return arrayReduce(collection, reducer, result)
|
|
47
44
|
}
|
|
48
|
-
if (typeof collection == 'function') {
|
|
49
|
-
if (isGeneratorFunction(collection)) {
|
|
50
|
-
return generatorFunctionReduce(collection, reducer, result)
|
|
51
|
-
}
|
|
52
|
-
if (isAsyncGeneratorFunction(collection)) {
|
|
53
|
-
return asyncGeneratorFunctionReduce(collection, reducer, result)
|
|
54
|
-
}
|
|
55
|
-
return curryArgs3(
|
|
56
|
-
genericReduce,
|
|
57
|
-
__,
|
|
58
|
-
args.length == 1
|
|
59
|
-
? reducerConcat(reducer, collection)
|
|
60
|
-
: args.reduce(reducerConcat, reducer),
|
|
61
|
-
result)
|
|
62
|
-
}
|
|
63
45
|
if (collection == null) {
|
|
64
46
|
return result === undefined
|
|
65
47
|
? curry2(reducer, collection, __)
|
|
@@ -24,7 +24,7 @@ const callConcat = require('./callConcat')
|
|
|
24
24
|
* Reducer = (any, any)=>Promise|any
|
|
25
25
|
*
|
|
26
26
|
* identityTransform<
|
|
27
|
-
*
|
|
27
|
+
* collection any,
|
|
28
28
|
* transducer Reducer=>Reducer,
|
|
29
29
|
* result undefined|null,
|
|
30
30
|
* >(args, transducer, result) -> Promise|result
|
|
@@ -33,8 +33,8 @@ const callConcat = require('./callConcat')
|
|
|
33
33
|
* @description
|
|
34
34
|
* Reduce a value, always returning the initial result
|
|
35
35
|
*/
|
|
36
|
-
const identityTransform = function (
|
|
37
|
-
const nil = genericReduce(
|
|
36
|
+
const identityTransform = function (collection, transducer, result) {
|
|
37
|
+
const nil = genericReduce(collection, transducer(noop), null)
|
|
38
38
|
return isPromise(nil) ? nil.then(always(result)) : result
|
|
39
39
|
}
|
|
40
40
|
|
|
@@ -48,44 +48,44 @@ const identityTransform = function (args, transducer, result) {
|
|
|
48
48
|
* |{ concat: function }|{ write: function }|Object
|
|
49
49
|
*
|
|
50
50
|
* genericTransform<
|
|
51
|
-
*
|
|
51
|
+
* collection any,
|
|
52
52
|
* transducer Reducer=>Reducer,
|
|
53
53
|
* result Semigroup|any,
|
|
54
|
-
* >(
|
|
54
|
+
* >(collection, transducer, result) -> result
|
|
55
55
|
* ```
|
|
56
56
|
*/
|
|
57
|
-
const genericTransform = function (
|
|
57
|
+
const genericTransform = function (collection, transducer, result) {
|
|
58
58
|
if (isArray(result)) {
|
|
59
|
-
return genericReduce(
|
|
59
|
+
return genericReduce(collection, transducer(arrayExtend), result)
|
|
60
60
|
}
|
|
61
61
|
if (isBinary(result)) {
|
|
62
|
-
const intermediateArray = genericReduce(
|
|
62
|
+
const intermediateArray = genericReduce(collection, transducer(arrayExtend), [])
|
|
63
63
|
return isPromise(intermediateArray)
|
|
64
64
|
? intermediateArray.then(curry2(binaryExtend, result, __))
|
|
65
65
|
: binaryExtend(result, intermediateArray)
|
|
66
66
|
}
|
|
67
67
|
if (result == null) {
|
|
68
|
-
return identityTransform(
|
|
68
|
+
return identityTransform(collection, transducer, result)
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
const resultConstructor = result.constructor
|
|
72
72
|
if (typeof result == 'string' || resultConstructor == String) {
|
|
73
73
|
// TODO: use array + join over adding
|
|
74
|
-
return genericReduce(
|
|
74
|
+
return genericReduce(collection, transducer(add), result)
|
|
75
75
|
}
|
|
76
76
|
if (typeof result.concat == 'function') {
|
|
77
|
-
return genericReduce(
|
|
77
|
+
return genericReduce(collection, transducer(callConcat), result)
|
|
78
78
|
}
|
|
79
79
|
if (typeof result.write == 'function') {
|
|
80
|
-
return genericReduce(
|
|
80
|
+
return genericReduce(collection, transducer(streamExtend), result)
|
|
81
81
|
}
|
|
82
82
|
if (resultConstructor == Set) {
|
|
83
|
-
return genericReduce(
|
|
83
|
+
return genericReduce(collection, transducer(setExtend), result)
|
|
84
84
|
}
|
|
85
85
|
if (resultConstructor == Object) {
|
|
86
|
-
return genericReduce(
|
|
86
|
+
return genericReduce(collection, transducer(objectAssign), result)
|
|
87
87
|
}
|
|
88
|
-
return identityTransform(
|
|
88
|
+
return identityTransform(collection, transducer, result)
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
module.exports = genericTransform
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
const isPromise = require('./isPromise')
|
|
2
|
+
const isArray = require('./isArray')
|
|
3
|
+
const isBinary = require('./isBinary')
|
|
4
|
+
const callPropUnary = require('./callPropUnary')
|
|
5
|
+
const __ = require('./placeholder')
|
|
6
|
+
const curry2 = require('./curry2')
|
|
7
|
+
const curry3 = require('./curry3')
|
|
8
|
+
const always = require('./always')
|
|
9
|
+
const noop = require('./noop')
|
|
10
|
+
const add = require('./add')
|
|
11
|
+
const genericReduce = require('./genericReduce')
|
|
12
|
+
const objectAssign = require('./objectAssign')
|
|
13
|
+
const arrayExtend = require('./arrayExtend')
|
|
14
|
+
const binaryExtend = require('./binaryExtend')
|
|
15
|
+
const streamExtend = require('./streamExtend')
|
|
16
|
+
const setExtend = require('./setExtend')
|
|
17
|
+
const callConcat = require('./callConcat')
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @name identityTransform
|
|
21
|
+
*
|
|
22
|
+
* @synopsis
|
|
23
|
+
* ```coffeescript [specscript]
|
|
24
|
+
* Reducer = (any, any)=>Promise|any
|
|
25
|
+
*
|
|
26
|
+
* identityTransform<
|
|
27
|
+
* collection any,
|
|
28
|
+
* transducer Reducer=>Reducer,
|
|
29
|
+
* accum undefined|null,
|
|
30
|
+
* >(args, transducer, accum) -> Promise|accum
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @description
|
|
34
|
+
* Reduce a value, always returning the initial accum
|
|
35
|
+
*/
|
|
36
|
+
const identityTransform = function (collection, transducer, accum) {
|
|
37
|
+
const nil = genericReduce(collection, transducer(noop), null)
|
|
38
|
+
return isPromise(nil) ? nil.then(always(accum)) : accum
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @name genericTransform
|
|
43
|
+
*
|
|
44
|
+
* @synopsis
|
|
45
|
+
* ```coffeescript [specscript]
|
|
46
|
+
* Reducer = (any, any)=>Promise|any
|
|
47
|
+
* Semigroup = Array|string|Set|TypedArray
|
|
48
|
+
* |{ concat: function }|{ write: function }|Object
|
|
49
|
+
*
|
|
50
|
+
* genericTransform<
|
|
51
|
+
* collection any,
|
|
52
|
+
* transducer Reducer=>Reducer,
|
|
53
|
+
* accum Semigroup|any,
|
|
54
|
+
* >(collection, transducer, accum) -> accum
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
const genericTransform = function (collection, transducer, accum) {
|
|
58
|
+
if (isArray(accum)) {
|
|
59
|
+
return genericReduce(collection, transducer(arrayExtend), accum)
|
|
60
|
+
}
|
|
61
|
+
if (isBinary(accum)) {
|
|
62
|
+
const intermediateArray = genericReduce(collection, transducer(arrayExtend), [])
|
|
63
|
+
return isPromise(intermediateArray)
|
|
64
|
+
? intermediateArray.then(curry2(binaryExtend, accum, __))
|
|
65
|
+
: binaryExtend(accum, intermediateArray)
|
|
66
|
+
}
|
|
67
|
+
if (accum == null) {
|
|
68
|
+
return identityTransform(collection, transducer, accum)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const constructor = accum.constructor
|
|
72
|
+
if (typeof accum == 'string' || constructor == String) {
|
|
73
|
+
const result = genericReduce(collection, transducer(arrayExtend), [accum])
|
|
74
|
+
return isPromise(result)
|
|
75
|
+
? result.then(curry3(callPropUnary, __, 'join', ''))
|
|
76
|
+
: result.join('')
|
|
77
|
+
}
|
|
78
|
+
if (typeof accum.concat == 'function') {
|
|
79
|
+
return genericReduce(collection, transducer(callConcat), accum)
|
|
80
|
+
}
|
|
81
|
+
if (typeof accum.write == 'function') {
|
|
82
|
+
return genericReduce(collection, transducer(streamExtend), accum)
|
|
83
|
+
}
|
|
84
|
+
if (constructor == Set) {
|
|
85
|
+
return genericReduce(collection, transducer(setExtend), accum)
|
|
86
|
+
}
|
|
87
|
+
if (constructor == Object) {
|
|
88
|
+
return genericReduce(collection, transducer(objectAssign), accum)
|
|
89
|
+
}
|
|
90
|
+
return identityTransform(collection, transducer, accum)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
module.exports = genericTransform
|
|
@@ -5,16 +5,16 @@ const curry3 = require('./curry3')
|
|
|
5
5
|
const callPropUnary = require('./callPropUnary')
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* @name
|
|
8
|
+
* @name iteratorEvery
|
|
9
9
|
*
|
|
10
10
|
* @synopsis
|
|
11
11
|
* ```coffeescript [specscript]
|
|
12
|
-
*
|
|
12
|
+
* iteratorEvery(iterator Iterator, predicate ...any=>boolean) -> boolean
|
|
13
13
|
* ```
|
|
14
14
|
*
|
|
15
15
|
* @TODO use .next() calls
|
|
16
16
|
*/
|
|
17
|
-
const
|
|
17
|
+
const iteratorEvery = function (iterator, predicate) {
|
|
18
18
|
const promises = []
|
|
19
19
|
for (const item of iterator) {
|
|
20
20
|
const predication = predicate(item)
|
|
@@ -29,4 +29,4 @@ const iteratorAll = function (iterator, predicate) {
|
|
|
29
29
|
: promiseAll(promises).then(curry3(callPropUnary, __, 'every', Boolean))
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
module.exports =
|
|
32
|
+
module.exports = iteratorEvery
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
const SelfReferencingPromise = require('./SelfReferencingPromise')
|
|
2
|
-
const
|
|
2
|
+
const asyncIteratorSome = require('./asyncIteratorSome')
|
|
3
3
|
const isPromise = require('./isPromise')
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* @name
|
|
6
|
+
* @name iteratorSome
|
|
7
7
|
*
|
|
8
8
|
* @synopsis
|
|
9
9
|
* ```coffeescript [specscript]
|
|
10
|
-
*
|
|
10
|
+
* iteratorSome(
|
|
11
11
|
* iterator Iterator,
|
|
12
12
|
* predicate any=>Promise|boolean,
|
|
13
13
|
* ) -> boolean
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
|
-
const
|
|
16
|
+
const iteratorSome = function (iterator, predicate) {
|
|
17
17
|
for (const item of iterator) {
|
|
18
18
|
const predication = predicate(item)
|
|
19
19
|
if (isPromise(predication)) {
|
|
20
|
-
return
|
|
20
|
+
return asyncIteratorSome(
|
|
21
21
|
iterator, predicate, new Set([SelfReferencingPromise(predication)]))
|
|
22
22
|
}
|
|
23
23
|
if (predication) {
|
|
@@ -27,4 +27,4 @@ const iteratorAny = function (iterator, predicate) {
|
|
|
27
27
|
return false
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
module.exports =
|
|
30
|
+
module.exports = iteratorSome
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const spread2 = require('./spread2')
|
|
2
|
+
const isPromise = require('./isPromise')
|
|
3
|
+
const promiseAll = require('./promiseAll')
|
|
4
|
+
|
|
5
|
+
// leftResolverRightResolverCompare(
|
|
6
|
+
// args Array, comparator function, left function, right function,
|
|
7
|
+
// ) -> Promise|boolean
|
|
8
|
+
const leftResolverRightResolverCompare = function (
|
|
9
|
+
args, comparator, left, right,
|
|
10
|
+
) {
|
|
11
|
+
const leftResult = left(...args),
|
|
12
|
+
rightResult = right(...args)
|
|
13
|
+
if (isPromise(leftResult) || isPromise(rightResult)) {
|
|
14
|
+
return promiseAll([leftResult, rightResult]).then(spread2(comparator))
|
|
15
|
+
}
|
|
16
|
+
return comparator(leftResult, rightResult)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
module.exports = leftResolverRightResolverCompare
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const spread2 = require('./spread2')
|
|
2
|
+
const isPromise = require('./isPromise')
|
|
3
|
+
const promiseAll = require('./promiseAll')
|
|
4
|
+
|
|
5
|
+
// leftResolverRightValueCompare(
|
|
6
|
+
// args Array, comparator function, left function, right any
|
|
7
|
+
// ) -> Promise|boolean
|
|
8
|
+
const leftResolverRightValueCompare = function (args, comparator, left, right) {
|
|
9
|
+
const leftResult = left(...args)
|
|
10
|
+
if (isPromise(leftResult) || isPromise(right)) {
|
|
11
|
+
return promiseAll([leftResult, right]).then(spread2(comparator))
|
|
12
|
+
}
|
|
13
|
+
return comparator(leftResult, right)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
module.exports = leftResolverRightValueCompare
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const spread2 = require('./spread2')
|
|
2
|
+
const isPromise = require('./isPromise')
|
|
3
|
+
const promiseAll = require('./promiseAll')
|
|
4
|
+
|
|
5
|
+
// leftValueRightResolverCompare(
|
|
6
|
+
// args Array, comparator function, left any, right any,
|
|
7
|
+
// ) -> Promise|boolean
|
|
8
|
+
const leftValueRightResolverCompare = function (args, comparator, left, right) {
|
|
9
|
+
const rightResult = right(...args)
|
|
10
|
+
if (isPromise(left) || isPromise(rightResult)) {
|
|
11
|
+
return promiseAll([left, rightResult]).then(spread2(comparator))
|
|
12
|
+
}
|
|
13
|
+
return comparator(left, rightResult)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
module.exports = leftValueRightResolverCompare
|