rubico 1.9.7 → 2.0.0
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/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/{distributor.js → build} +50 -50
- package/compose.js +46 -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/__.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +7 -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.min.mjs +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.min.mjs +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.min.mjs +7 -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.min.mjs +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.min.mjs +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/forEach.min.mjs +7 -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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +3 -3
- package/dist/reduce.mjs +52 -94
- package/dist/rubico.es.js +730 -869
- package/dist/rubico.es.min.js +3 -3
- package/dist/rubico.js +730 -869
- package/dist/rubico.min.js +3 -3
- package/dist/rubico.min.mjs +3 -3
- package/dist/rubico.mjs +730 -869
- 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.min.mjs +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/some.min.mjs +7 -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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +3 -3
- 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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +2 -2
- package/dist/x/when.mjs +2 -2
- package/dist-test.js +9 -2042
- package/eq.js +21 -63
- package/es.js +730 -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 +730 -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 +10 -8
- 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/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/any.es.min.js +0 -7
- package/dist/any.min.js +0 -8
- package/dist/any.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/x/forEach.es.min.js +0 -7
- package/dist/x/forEach.min.js +0 -8
- package/dist/x/forEach.min.mjs +0 -7
- package/fork.js +0 -101
- package/x/forEach.js +0 -93
- package/x/forEach.test.js +0 -218
- /package/{benchmarks → archive/benchmarks-v1.9.7}/any.js +0 -0
- /package/{x/forEach.benchmark.js → archive/benchmarks-v1.9.7/forEach.js} +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/fork.js +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/integration.js +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/misc.js +0 -0
package/dist/flatMap.mjs
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico
|
|
2
|
+
* rubico v2.0.0
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
|
-
* (c) 2019-
|
|
4
|
+
* (c) 2019-2023 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
const isPromise = value => value != null && typeof value.then == 'function'
|
|
9
|
+
|
|
8
10
|
const isArray = Array.isArray
|
|
9
11
|
|
|
10
12
|
const objectValues = Object.values
|
|
@@ -56,8 +58,6 @@ const curry3 = function (baseFunc, arg0, arg1, arg2) {
|
|
|
56
58
|
return curry3ResolveArg2(baseFunc, arg0, arg1)
|
|
57
59
|
}
|
|
58
60
|
|
|
59
|
-
const isPromise = value => value != null && typeof value.then == 'function'
|
|
60
|
-
|
|
61
61
|
const iteratorReduceAsync = async function (
|
|
62
62
|
iterator, reducer, result,
|
|
63
63
|
) {
|
|
@@ -289,13 +289,6 @@ const curry5 = function (baseFunc, arg0, arg1, arg2, arg3, arg4) {
|
|
|
289
289
|
|
|
290
290
|
const objectKeys = Object.keys
|
|
291
291
|
|
|
292
|
-
const objectGetFirstKey = function (object) {
|
|
293
|
-
for (const key in object) {
|
|
294
|
-
return key
|
|
295
|
-
}
|
|
296
|
-
return undefined
|
|
297
|
-
}
|
|
298
|
-
|
|
299
292
|
const objectReduceAsync = async function (object, reducer, result, keys, index) {
|
|
300
293
|
const keysLength = keys.length
|
|
301
294
|
while (++index < keysLength) {
|
|
@@ -356,24 +349,6 @@ const mapReduce = function (map, reducer, result) {
|
|
|
356
349
|
return result
|
|
357
350
|
}
|
|
358
351
|
|
|
359
|
-
const funcConcatSync = (
|
|
360
|
-
funcA, funcB,
|
|
361
|
-
) => function pipedFunction(...args) {
|
|
362
|
-
return funcB(funcA(...args))
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
const generatorFunctionReduce = (
|
|
366
|
-
generatorFunction, reducer, result,
|
|
367
|
-
) => funcConcatSync(
|
|
368
|
-
generatorFunction,
|
|
369
|
-
curry3(iteratorReduce, __, reducer, result))
|
|
370
|
-
|
|
371
|
-
const asyncGeneratorFunctionReduce = (
|
|
372
|
-
asyncGeneratorFunction, reducer, result,
|
|
373
|
-
) => funcConcatSync(
|
|
374
|
-
asyncGeneratorFunction,
|
|
375
|
-
curry3(asyncIteratorReduce, __, reducer, result))
|
|
376
|
-
|
|
377
352
|
const reducerConcat = (
|
|
378
353
|
reducerA, reducerB,
|
|
379
354
|
) => function pipedReducer(result, item) {
|
|
@@ -383,26 +358,10 @@ const reducerConcat = (
|
|
|
383
358
|
: reducerB(intermediate, item)
|
|
384
359
|
}
|
|
385
360
|
|
|
386
|
-
const genericReduce = function (
|
|
387
|
-
const collection = args[0]
|
|
361
|
+
const genericReduce = function (collection, reducer, result) {
|
|
388
362
|
if (isArray(collection)) {
|
|
389
363
|
return arrayReduce(collection, reducer, result)
|
|
390
364
|
}
|
|
391
|
-
if (typeof collection == 'function') {
|
|
392
|
-
if (isGeneratorFunction(collection)) {
|
|
393
|
-
return generatorFunctionReduce(collection, reducer, result)
|
|
394
|
-
}
|
|
395
|
-
if (isAsyncGeneratorFunction(collection)) {
|
|
396
|
-
return asyncGeneratorFunctionReduce(collection, reducer, result)
|
|
397
|
-
}
|
|
398
|
-
return curryArgs3(
|
|
399
|
-
genericReduce,
|
|
400
|
-
__,
|
|
401
|
-
args.length == 1
|
|
402
|
-
? reducerConcat(reducer, collection)
|
|
403
|
-
: args.reduce(reducerConcat, reducer),
|
|
404
|
-
result)
|
|
405
|
-
}
|
|
406
365
|
if (collection == null) {
|
|
407
366
|
return result === undefined
|
|
408
367
|
? curry2(reducer, collection, __)
|
|
@@ -461,7 +420,7 @@ const FlatMappingIterator = function (iterator, flatMapper) {
|
|
|
461
420
|
return iteration
|
|
462
421
|
}
|
|
463
422
|
const monadAsArray = genericReduce(
|
|
464
|
-
|
|
423
|
+
flatMapper(iteration.value),
|
|
465
424
|
arrayPush,
|
|
466
425
|
[]) // this will always have at least one item
|
|
467
426
|
if (monadAsArray.length > 1) {
|
|
@@ -507,12 +466,12 @@ const FlatMappingAsyncIterator = function (asyncIterator, flatMapper) {
|
|
|
507
466
|
} else {
|
|
508
467
|
const monad = flatMapper(value)
|
|
509
468
|
if (isPromise(monad)) {
|
|
510
|
-
const bufferLoading =
|
|
511
|
-
|
|
469
|
+
const bufferLoading =
|
|
470
|
+
monad.then(curry3(genericReduce, __, arrayPush, buffer))
|
|
512
471
|
const promise = bufferLoading.then(() => promises.delete(promise))
|
|
513
472
|
promises.add(promise)
|
|
514
473
|
} else {
|
|
515
|
-
const bufferLoading = genericReduce(
|
|
474
|
+
const bufferLoading = genericReduce(monad, arrayPush, buffer)
|
|
516
475
|
if (isPromise(bufferLoading)) {
|
|
517
476
|
const promise = bufferLoading.then(() => promises.delete(promise))
|
|
518
477
|
promises.add(promise)
|
|
@@ -532,8 +491,6 @@ const FlatMappingAsyncIterator = function (asyncIterator, flatMapper) {
|
|
|
532
491
|
}
|
|
533
492
|
}
|
|
534
493
|
|
|
535
|
-
const isBinary = ArrayBuffer.isView
|
|
536
|
-
|
|
537
494
|
const always = value => function getter() { return value }
|
|
538
495
|
|
|
539
496
|
const getArg1 = (arg0, arg1) => arg1
|
|
@@ -542,6 +499,12 @@ const identity = value => value
|
|
|
542
499
|
|
|
543
500
|
const promiseAll = Promise.all.bind(Promise)
|
|
544
501
|
|
|
502
|
+
const funcConcatSync = (
|
|
503
|
+
funcA, funcB,
|
|
504
|
+
) => function pipedFunction(...args) {
|
|
505
|
+
return funcB(funcA(...args))
|
|
506
|
+
}
|
|
507
|
+
|
|
545
508
|
const asyncIteratorForEach = async function (asyncIterator, callback) {
|
|
546
509
|
const promises = []
|
|
547
510
|
for await (const item of asyncIterator) {
|
|
@@ -811,165 +774,10 @@ const stringFlatMap = function (string, flatMapper) {
|
|
|
811
774
|
: arrayFlattenToString(monadArray)
|
|
812
775
|
}
|
|
813
776
|
|
|
814
|
-
const
|
|
815
|
-
stream.write(chunk, encoding, callback)
|
|
816
|
-
return stream
|
|
817
|
-
}
|
|
818
|
-
|
|
819
|
-
const streamFlatExtend = async function (stream, item) {
|
|
820
|
-
const resultStreamWrite = curry2(streamWrite, stream, __),
|
|
821
|
-
// resultStreamWriteReducer = (_, subItem) => stream.write(subItem),
|
|
822
|
-
resultStreamWriteReducer = funcConcatSync(getArg1, resultStreamWrite),
|
|
823
|
-
promises = []
|
|
824
|
-
if (isArray(item)) {
|
|
825
|
-
const itemLength = item.length
|
|
826
|
-
let itemIndex = -1
|
|
827
|
-
while (++itemIndex < itemLength) {
|
|
828
|
-
stream.write(item[itemIndex])
|
|
829
|
-
}
|
|
830
|
-
} else if (item == null) {
|
|
831
|
-
stream.write(item)
|
|
832
|
-
} else if (typeof item[symbolIterator] == 'function') {
|
|
833
|
-
for (const subItem of item) {
|
|
834
|
-
stream.write(subItem)
|
|
835
|
-
}
|
|
836
|
-
} else if (typeof item[symbolAsyncIterator] == 'function') {
|
|
837
|
-
promises.push(
|
|
838
|
-
asyncIteratorForEach(item[symbolAsyncIterator](), resultStreamWrite))
|
|
839
|
-
} else if (typeof item.chain == 'function') {
|
|
840
|
-
const monadValue = item.chain(identity)
|
|
841
|
-
isPromise(monadValue)
|
|
842
|
-
? promises.push(monadValue.then(resultStreamWrite))
|
|
843
|
-
: stream.write(monadValue)
|
|
844
|
-
} else if (typeof item.flatMap == 'function') {
|
|
845
|
-
const monadValue = item.flatMap(identity)
|
|
846
|
-
isPromise(monadValue)
|
|
847
|
-
? promises.push(monadValue.then(resultStreamWrite))
|
|
848
|
-
: stream.write(monadValue)
|
|
849
|
-
} else if (typeof item.reduce == 'function') {
|
|
850
|
-
const folded = item.reduce(resultStreamWriteReducer, null)
|
|
851
|
-
isPromise(folded) && promises.push(folded)
|
|
852
|
-
} else if (item.constructor == Object) {
|
|
853
|
-
for (const key in item) {
|
|
854
|
-
stream.write(item[key])
|
|
855
|
-
}
|
|
856
|
-
} else {
|
|
857
|
-
stream.write(item)
|
|
858
|
-
}
|
|
859
|
-
return promises.length == 0
|
|
860
|
-
? stream
|
|
861
|
-
: promiseAll(promises).then(always(stream))
|
|
862
|
-
}
|
|
863
|
-
|
|
864
|
-
const streamFlatMap = async function (stream, flatMapper) {
|
|
865
|
-
const promises = new Set()
|
|
866
|
-
for await (const item of stream) {
|
|
867
|
-
const monad = flatMapper(item)
|
|
868
|
-
if (isPromise(monad)) {
|
|
869
|
-
const selfDeletingPromise = monad.then(
|
|
870
|
-
curry2(streamFlatExtend, stream, __)).then(
|
|
871
|
-
() => promises.delete(selfDeletingPromise))
|
|
872
|
-
promises.add(selfDeletingPromise)
|
|
873
|
-
} else {
|
|
874
|
-
const streamFlatteningOperation = streamFlatExtend(stream, monad)
|
|
875
|
-
if (isPromise(streamFlatteningOperation)) {
|
|
876
|
-
const selfDeletingPromise = streamFlatteningOperation.then(
|
|
877
|
-
() => promises.delete(selfDeletingPromise))
|
|
878
|
-
promises.add(selfDeletingPromise)
|
|
879
|
-
}
|
|
880
|
-
}
|
|
881
|
-
}
|
|
882
|
-
await promiseAll(promises)
|
|
883
|
-
return stream
|
|
884
|
-
}
|
|
885
|
-
|
|
886
|
-
const globalThisHasBuffer = typeof Buffer == 'function'
|
|
887
|
-
|
|
888
|
-
const noop = function () {}
|
|
889
|
-
|
|
890
|
-
const bufferAlloc = globalThisHasBuffer ? Buffer.alloc : noop
|
|
891
|
-
|
|
892
|
-
const _binaryExtend = function (typedArray, array) {
|
|
893
|
-
const offset = typedArray.length
|
|
894
|
-
const result = globalThisHasBuffer && typedArray.constructor == Buffer
|
|
895
|
-
? bufferAlloc(offset + array.length)
|
|
896
|
-
: new typedArray.constructor(offset + array.length)
|
|
897
|
-
result.set(typedArray)
|
|
898
|
-
result.set(array, offset)
|
|
899
|
-
return result
|
|
900
|
-
}
|
|
901
|
-
|
|
902
|
-
const binaryExtend = function (typedArray, array) {
|
|
903
|
-
if (isArray(array) || isBinary(array)) {
|
|
904
|
-
return _binaryExtend(typedArray, array)
|
|
905
|
-
}
|
|
906
|
-
return _binaryExtend(typedArray, [array])
|
|
907
|
-
}
|
|
908
|
-
|
|
909
|
-
const arrayJoinToBinary = function (array, init) {
|
|
910
|
-
const length = array.length
|
|
911
|
-
let index = -1,
|
|
912
|
-
result = init
|
|
913
|
-
while (++index < length) {
|
|
914
|
-
result = binaryExtend(result, array[index])
|
|
915
|
-
}
|
|
916
|
-
return result
|
|
917
|
-
}
|
|
918
|
-
|
|
919
|
-
const arrayFlattenToBinary = function (array, result) {
|
|
920
|
-
const flattened = arrayFlatten(array)
|
|
921
|
-
return isPromise(flattened)
|
|
922
|
-
? flattened.then(curry2(arrayJoinToBinary, __, result))
|
|
923
|
-
: arrayJoinToBinary(flattened, result)
|
|
924
|
-
}
|
|
925
|
-
|
|
926
|
-
const binaryFlatMap = function (binary, flatMapper) {
|
|
927
|
-
const monadArray = arrayMap(binary, flatMapper),
|
|
928
|
-
result = globalThisHasBuffer && binary.constructor == Buffer
|
|
929
|
-
? bufferAlloc(0)
|
|
930
|
-
: new binary.constructor(0)
|
|
931
|
-
return isPromise(monadArray)
|
|
932
|
-
? monadArray.then(curry2(arrayFlattenToBinary, __, result))
|
|
933
|
-
: arrayFlattenToBinary(monadArray, result)
|
|
934
|
-
}
|
|
935
|
-
|
|
936
|
-
const reducerFlatMap = (
|
|
937
|
-
reducer, flatMapper,
|
|
938
|
-
) => function flatMappingReducer(result, value) {
|
|
939
|
-
const monad = flatMapper(value)
|
|
940
|
-
return isPromise(monad)
|
|
941
|
-
? monad.then(curryArgs3(genericReduce, __, reducer, result))
|
|
942
|
-
: genericReduce([monad], reducer, result)
|
|
943
|
-
}
|
|
944
|
-
|
|
945
|
-
const generatorFunctionFlatMap = (
|
|
946
|
-
generatorFunction, flatMapper,
|
|
947
|
-
) => function* flatMappingGeneratorFunction(...args) {
|
|
948
|
-
yield* FlatMappingIterator(generatorFunction(...args), flatMapper)
|
|
949
|
-
}
|
|
950
|
-
|
|
951
|
-
const asyncGeneratorFunctionFlatMap = (
|
|
952
|
-
asyncGeneratorFunction, flatMapper,
|
|
953
|
-
) => async function* flatMappingAsyncGeneratorFunction(...args) {
|
|
954
|
-
yield* FlatMappingAsyncIterator(asyncGeneratorFunction(...args), flatMapper)
|
|
955
|
-
}
|
|
956
|
-
|
|
957
|
-
const flatMap = flatMapper => function flatMapping(value) {
|
|
777
|
+
const _flatMap = function (value, flatMapper) {
|
|
958
778
|
if (isArray(value)) {
|
|
959
779
|
return arrayFlatMap(value, flatMapper)
|
|
960
780
|
}
|
|
961
|
-
if (typeof value == 'function') {
|
|
962
|
-
if (isGeneratorFunction(value)) {
|
|
963
|
-
return generatorFunctionFlatMap(value, flatMapper)
|
|
964
|
-
}
|
|
965
|
-
if (isAsyncGeneratorFunction(value)) {
|
|
966
|
-
return asyncGeneratorFunctionFlatMap(value, flatMapper)
|
|
967
|
-
}
|
|
968
|
-
return reducerFlatMap(value, flatMapper)
|
|
969
|
-
}
|
|
970
|
-
if (isBinary(value)) {
|
|
971
|
-
return binaryFlatMap(value, flatMapper)
|
|
972
|
-
}
|
|
973
781
|
if (value == null) {
|
|
974
782
|
return flatMapper(value)
|
|
975
783
|
}
|
|
@@ -988,12 +796,6 @@ const flatMap = flatMapper => function flatMapping(value) {
|
|
|
988
796
|
if (typeof value.flatMap == 'function') {
|
|
989
797
|
return value.flatMap(flatMapper)
|
|
990
798
|
}
|
|
991
|
-
if (
|
|
992
|
-
typeof value[symbolAsyncIterator] == 'function'
|
|
993
|
-
&& typeof value.write == 'function'
|
|
994
|
-
) {
|
|
995
|
-
return streamFlatMap(value, flatMapper)
|
|
996
|
-
}
|
|
997
799
|
const valueConstructor = value.constructor
|
|
998
800
|
if (valueConstructor == Object) {
|
|
999
801
|
return objectFlatMap(value, flatMapper)
|
|
@@ -1007,4 +809,15 @@ const flatMap = flatMapper => function flatMapping(value) {
|
|
|
1007
809
|
return flatMapper(value)
|
|
1008
810
|
}
|
|
1009
811
|
|
|
812
|
+
const flatMap = (...args) => {
|
|
813
|
+
const flatMapper = args.pop()
|
|
814
|
+
if (args.length == 0) {
|
|
815
|
+
return curry2(_flatMap, __, flatMapper)
|
|
816
|
+
}
|
|
817
|
+
const collection = args[0]
|
|
818
|
+
return isPromise(collection)
|
|
819
|
+
? collection.then(curry2(_flatMap, __, flatMapper))
|
|
820
|
+
: _flatMap(args[0], flatMapper)
|
|
821
|
+
}
|
|
822
|
+
|
|
1010
823
|
export default flatMap
|
|
@@ -1,10 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico
|
|
2
|
+
* rubico v2.0.0
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
|
-
* (c) 2019-
|
|
4
|
+
* (c) 2019-2023 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
const isPromise = value => value != null && typeof value.then == 'function'
|
|
9
|
+
|
|
10
|
+
const __ = Symbol.for('placeholder')
|
|
11
|
+
|
|
12
|
+
// argument resolver for curry2
|
|
13
|
+
const curry2ResolveArg0 = (
|
|
14
|
+
baseFunc, arg1,
|
|
15
|
+
) => function arg0Resolver(arg0) {
|
|
16
|
+
return baseFunc(arg0, arg1)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// argument resolver for curry2
|
|
20
|
+
const curry2ResolveArg1 = (
|
|
21
|
+
baseFunc, arg0,
|
|
22
|
+
) => function arg1Resolver(arg1) {
|
|
23
|
+
return baseFunc(arg0, arg1)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const curry2 = function (baseFunc, arg0, arg1) {
|
|
27
|
+
return arg0 == __
|
|
28
|
+
? curry2ResolveArg0(baseFunc, arg1)
|
|
29
|
+
: curry2ResolveArg1(baseFunc, arg0)
|
|
30
|
+
}
|
|
31
|
+
|
|
8
32
|
const isArray = Array.isArray
|
|
9
33
|
|
|
10
34
|
const objectProto = Object.prototype
|
|
@@ -21,8 +45,6 @@ const asyncGeneratorFunctionTag = '[object AsyncGeneratorFunction]'
|
|
|
21
45
|
|
|
22
46
|
const isAsyncGeneratorFunction = value => objectToString(value) == asyncGeneratorFunctionTag
|
|
23
47
|
|
|
24
|
-
const isPromise = value => value != null && typeof value.then == 'function'
|
|
25
|
-
|
|
26
48
|
const promiseAll = Promise.all.bind(Promise)
|
|
27
49
|
|
|
28
50
|
const always = value => function getter() { return value }
|
|
@@ -74,83 +96,43 @@ const asyncIteratorForEach = async function (asyncIterator, callback) {
|
|
|
74
96
|
: promiseAll(promises).then(always(asyncIterator))
|
|
75
97
|
}
|
|
76
98
|
|
|
77
|
-
const generatorFunctionForEach = (
|
|
78
|
-
generatorFunction, callback,
|
|
79
|
-
) => function* executingCallbackForEach(...args) {
|
|
80
|
-
const promises = [],
|
|
81
|
-
generator = generatorFunction(...args)
|
|
82
|
-
for (const item of generator) {
|
|
83
|
-
const operation = callback(item)
|
|
84
|
-
if (isPromise(operation)) {
|
|
85
|
-
promises.push(operation)
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return promises.length == 0 ? generator
|
|
89
|
-
: promiseAll(promises).then(always(generator))
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const asyncGeneratorFunctionForEach = (
|
|
93
|
-
asyncGeneratorFunction, callback,
|
|
94
|
-
) => async function* executingCallbackForEach(...args) {
|
|
95
|
-
const promises = [],
|
|
96
|
-
asyncIterator = asyncGeneratorFunction(...args)
|
|
97
|
-
for await (const item of asyncIterator) {
|
|
98
|
-
const operation = callback(item)
|
|
99
|
-
if (isPromise(operation)) {
|
|
100
|
-
promises.push(operation)
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return promises.length == 0 ? asyncIterator
|
|
104
|
-
: promiseAll(promises).then(always(asyncIterator))
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
const thunkify2 = (func, arg0, arg1) => function thunk() {
|
|
108
|
-
return func(arg0, arg1)
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
const reducerForEach = (
|
|
112
|
-
reducer, callback,
|
|
113
|
-
) => function executingForEach(result, item) {
|
|
114
|
-
const operation = callback(item)
|
|
115
|
-
if (isPromise(operation)) {
|
|
116
|
-
return operation.then(thunkify2(reducer, result, item))
|
|
117
|
-
}
|
|
118
|
-
return reducer(result, item)
|
|
119
|
-
}
|
|
120
|
-
|
|
121
99
|
const symbolIterator = Symbol.iterator
|
|
122
100
|
|
|
123
101
|
const symbolAsyncIterator = Symbol.asyncIterator
|
|
124
102
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
103
|
+
// type Collection = Array|Iterable|AsyncIterable|{ forEach: function }|Object
|
|
104
|
+
// _forEach(collection Collection, callback function) -> collection Collection
|
|
105
|
+
const _forEach = function (collection, callback) {
|
|
106
|
+
if (isArray(collection)) {
|
|
107
|
+
return arrayForEach(collection, callback)
|
|
128
108
|
}
|
|
129
|
-
if (
|
|
130
|
-
|
|
131
|
-
return generatorFunctionForEach(value, callback)
|
|
132
|
-
}
|
|
133
|
-
if (isAsyncGeneratorFunction(value)) {
|
|
134
|
-
return asyncGeneratorFunctionForEach(value, callback)
|
|
135
|
-
}
|
|
136
|
-
return reducerForEach(value, callback)
|
|
109
|
+
if (collection == null) {
|
|
110
|
+
return collection
|
|
137
111
|
}
|
|
138
|
-
if (
|
|
139
|
-
return
|
|
112
|
+
if (typeof collection.forEach == 'function') {
|
|
113
|
+
return collection.forEach(callback)
|
|
140
114
|
}
|
|
141
|
-
if (typeof
|
|
142
|
-
return
|
|
115
|
+
if (typeof collection[symbolIterator] == 'function') {
|
|
116
|
+
return iteratorForEach(collection[symbolIterator](), callback)
|
|
143
117
|
}
|
|
144
|
-
if (typeof
|
|
145
|
-
return
|
|
118
|
+
if (typeof collection[symbolAsyncIterator] == 'function') {
|
|
119
|
+
return asyncIteratorForEach(collection[symbolAsyncIterator](), callback)
|
|
146
120
|
}
|
|
147
|
-
if (
|
|
148
|
-
return
|
|
121
|
+
if (collection.constructor == Object) {
|
|
122
|
+
return objectForEach(collection, callback)
|
|
149
123
|
}
|
|
150
|
-
|
|
151
|
-
|
|
124
|
+
return collection
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const forEach = function (...args) {
|
|
128
|
+
const callback = args.pop()
|
|
129
|
+
if (args.length == 0) {
|
|
130
|
+
return curry2(_forEach, __, callback)
|
|
152
131
|
}
|
|
153
|
-
|
|
132
|
+
const collection = args[0]
|
|
133
|
+
return isPromise(collection)
|
|
134
|
+
? collection.then(curry2(_forEach, __, callback))
|
|
135
|
+
: _forEach(collection, callback)
|
|
154
136
|
}
|
|
155
137
|
|
|
156
138
|
export default forEach
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rubico v2.0.0
|
|
3
|
+
* https://github.com/a-synchronous/rubico
|
|
4
|
+
* (c) 2019-2023 Richard Tong
|
|
5
|
+
* rubico may be freely distributed under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
const isPromise=r=>null!=r&&"function"==typeof r.then,__=Symbol.for("placeholder"),curry2ResolveArg0=(r,o)=>function(t){return r(t,o)},curry2ResolveArg1=(r,o)=>function(t){return r(o,t)},curry2=function(r,o,t){return o==__?curry2ResolveArg0(r,t):curry2ResolveArg1(r,o)},isArray=Array.isArray,objectProto=Object.prototype,nativeObjectToString=objectProto.toString,objectToString=r=>nativeObjectToString.call(r),generatorFunctionTag="[object GeneratorFunction]",isGeneratorFunction=r=>objectToString(r)==generatorFunctionTag,asyncGeneratorFunctionTag="[object AsyncGeneratorFunction]",isAsyncGeneratorFunction=r=>objectToString(r)==asyncGeneratorFunctionTag,promiseAll=Promise.all.bind(Promise),always=r=>function(){return r},arrayForEach=function(r,o){const t=r.length,n=[];let e=-1;for(;++e<t;){const t=o(r[e]);isPromise(t)&&n.push(t)}return 0==n.length?r:promiseAll(n).then(always(r))},objectForEach=function(r,o){const t=[];for(const n in r){const e=o(r[n]);isPromise(e)&&t.push(e)}return 0==t.length?r:promiseAll(t).then(always(r))},iteratorForEach=function(r,o){const t=[];for(const n of r){const r=o(n);isPromise(r)&&t.push(r)}return 0==t.length?r:promiseAll(t).then(always(r))},asyncIteratorForEach=async function(r,o){const t=[];for await(const n of r){const r=o(n);isPromise(r)&&t.push(r)}return 0==t.length?r:promiseAll(t).then(always(r))},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,_forEach=function(r,o){return isArray(r)?arrayForEach(r,o):null==r?r:"function"==typeof r.forEach?r.forEach(o):"function"==typeof r[symbolIterator]?iteratorForEach(r[symbolIterator](),o):"function"==typeof r[symbolAsyncIterator]?asyncIteratorForEach(r[symbolAsyncIterator](),o):r.constructor==Object?objectForEach(r,o):r},forEach=function(...r){const o=r.pop();if(0==r.length)return curry2(_forEach,__,o);const t=r[0];return isPromise(t)?t.then(curry2(_forEach,__,o)):_forEach(t,o)};export default forEach;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico
|
|
2
|
+
* rubico v2.0.0
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
|
-
* (c) 2019-
|
|
4
|
+
* (c) 2019-2023 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -11,6 +11,30 @@
|
|
|
11
11
|
else (root.forEach = forEach) // Browser
|
|
12
12
|
}(typeof globalThis == 'object' ? globalThis : this, (function () { 'use strict'
|
|
13
13
|
|
|
14
|
+
const isPromise = value => value != null && typeof value.then == 'function'
|
|
15
|
+
|
|
16
|
+
const __ = Symbol.for('placeholder')
|
|
17
|
+
|
|
18
|
+
// argument resolver for curry2
|
|
19
|
+
const curry2ResolveArg0 = (
|
|
20
|
+
baseFunc, arg1,
|
|
21
|
+
) => function arg0Resolver(arg0) {
|
|
22
|
+
return baseFunc(arg0, arg1)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// argument resolver for curry2
|
|
26
|
+
const curry2ResolveArg1 = (
|
|
27
|
+
baseFunc, arg0,
|
|
28
|
+
) => function arg1Resolver(arg1) {
|
|
29
|
+
return baseFunc(arg0, arg1)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const curry2 = function (baseFunc, arg0, arg1) {
|
|
33
|
+
return arg0 == __
|
|
34
|
+
? curry2ResolveArg0(baseFunc, arg1)
|
|
35
|
+
: curry2ResolveArg1(baseFunc, arg0)
|
|
36
|
+
}
|
|
37
|
+
|
|
14
38
|
const isArray = Array.isArray
|
|
15
39
|
|
|
16
40
|
const objectProto = Object.prototype
|
|
@@ -27,8 +51,6 @@ const asyncGeneratorFunctionTag = '[object AsyncGeneratorFunction]'
|
|
|
27
51
|
|
|
28
52
|
const isAsyncGeneratorFunction = value => objectToString(value) == asyncGeneratorFunctionTag
|
|
29
53
|
|
|
30
|
-
const isPromise = value => value != null && typeof value.then == 'function'
|
|
31
|
-
|
|
32
54
|
const promiseAll = Promise.all.bind(Promise)
|
|
33
55
|
|
|
34
56
|
const always = value => function getter() { return value }
|
|
@@ -80,83 +102,43 @@ const asyncIteratorForEach = async function (asyncIterator, callback) {
|
|
|
80
102
|
: promiseAll(promises).then(always(asyncIterator))
|
|
81
103
|
}
|
|
82
104
|
|
|
83
|
-
const generatorFunctionForEach = (
|
|
84
|
-
generatorFunction, callback,
|
|
85
|
-
) => function* executingCallbackForEach(...args) {
|
|
86
|
-
const promises = [],
|
|
87
|
-
generator = generatorFunction(...args)
|
|
88
|
-
for (const item of generator) {
|
|
89
|
-
const operation = callback(item)
|
|
90
|
-
if (isPromise(operation)) {
|
|
91
|
-
promises.push(operation)
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return promises.length == 0 ? generator
|
|
95
|
-
: promiseAll(promises).then(always(generator))
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const asyncGeneratorFunctionForEach = (
|
|
99
|
-
asyncGeneratorFunction, callback,
|
|
100
|
-
) => async function* executingCallbackForEach(...args) {
|
|
101
|
-
const promises = [],
|
|
102
|
-
asyncIterator = asyncGeneratorFunction(...args)
|
|
103
|
-
for await (const item of asyncIterator) {
|
|
104
|
-
const operation = callback(item)
|
|
105
|
-
if (isPromise(operation)) {
|
|
106
|
-
promises.push(operation)
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return promises.length == 0 ? asyncIterator
|
|
110
|
-
: promiseAll(promises).then(always(asyncIterator))
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
const thunkify2 = (func, arg0, arg1) => function thunk() {
|
|
114
|
-
return func(arg0, arg1)
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const reducerForEach = (
|
|
118
|
-
reducer, callback,
|
|
119
|
-
) => function executingForEach(result, item) {
|
|
120
|
-
const operation = callback(item)
|
|
121
|
-
if (isPromise(operation)) {
|
|
122
|
-
return operation.then(thunkify2(reducer, result, item))
|
|
123
|
-
}
|
|
124
|
-
return reducer(result, item)
|
|
125
|
-
}
|
|
126
|
-
|
|
127
105
|
const symbolIterator = Symbol.iterator
|
|
128
106
|
|
|
129
107
|
const symbolAsyncIterator = Symbol.asyncIterator
|
|
130
108
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
109
|
+
// type Collection = Array|Iterable|AsyncIterable|{ forEach: function }|Object
|
|
110
|
+
// _forEach(collection Collection, callback function) -> collection Collection
|
|
111
|
+
const _forEach = function (collection, callback) {
|
|
112
|
+
if (isArray(collection)) {
|
|
113
|
+
return arrayForEach(collection, callback)
|
|
134
114
|
}
|
|
135
|
-
if (
|
|
136
|
-
|
|
137
|
-
return generatorFunctionForEach(value, callback)
|
|
138
|
-
}
|
|
139
|
-
if (isAsyncGeneratorFunction(value)) {
|
|
140
|
-
return asyncGeneratorFunctionForEach(value, callback)
|
|
141
|
-
}
|
|
142
|
-
return reducerForEach(value, callback)
|
|
115
|
+
if (collection == null) {
|
|
116
|
+
return collection
|
|
143
117
|
}
|
|
144
|
-
if (
|
|
145
|
-
return
|
|
118
|
+
if (typeof collection.forEach == 'function') {
|
|
119
|
+
return collection.forEach(callback)
|
|
146
120
|
}
|
|
147
|
-
if (typeof
|
|
148
|
-
return
|
|
121
|
+
if (typeof collection[symbolIterator] == 'function') {
|
|
122
|
+
return iteratorForEach(collection[symbolIterator](), callback)
|
|
149
123
|
}
|
|
150
|
-
if (typeof
|
|
151
|
-
return
|
|
124
|
+
if (typeof collection[symbolAsyncIterator] == 'function') {
|
|
125
|
+
return asyncIteratorForEach(collection[symbolAsyncIterator](), callback)
|
|
152
126
|
}
|
|
153
|
-
if (
|
|
154
|
-
return
|
|
127
|
+
if (collection.constructor == Object) {
|
|
128
|
+
return objectForEach(collection, callback)
|
|
155
129
|
}
|
|
156
|
-
|
|
157
|
-
|
|
130
|
+
return collection
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const forEach = function (...args) {
|
|
134
|
+
const callback = args.pop()
|
|
135
|
+
if (args.length == 0) {
|
|
136
|
+
return curry2(_forEach, __, callback)
|
|
158
137
|
}
|
|
159
|
-
|
|
138
|
+
const collection = args[0]
|
|
139
|
+
return isPromise(collection)
|
|
140
|
+
? collection.then(curry2(_forEach, __, callback))
|
|
141
|
+
: _forEach(collection, callback)
|
|
160
142
|
}
|
|
161
143
|
|
|
162
144
|
return forEach
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rubico v2.0.0
|
|
3
|
+
* https://github.com/a-synchronous/rubico
|
|
4
|
+
* (c) 2019-2023 Richard Tong
|
|
5
|
+
* rubico may be freely distributed under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
!function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.forEach=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=Symbol.for("placeholder"),o=function(n,o,e){return o==t?((n,t)=>function(o){return n(o,t)})(n,e):((n,t)=>function(o){return n(t,o)})(n,o)},e=Array.isArray,r=(Object.prototype.toString,Promise.all.bind(Promise)),c=n=>function(){return n},u=Symbol.iterator,f=Symbol.asyncIterator,i=function(t,o){return e(t)?function(t,o){const e=t.length,u=[];let f=-1;for(;++f<e;){const e=o(t[f]);n(e)&&u.push(e)}return 0==u.length?t:r(u).then(c(t))}(t,o):null==t?t:"function"==typeof t.forEach?t.forEach(o):"function"==typeof t[u]?function(t,o){const e=[];for(const r of t){const t=o(r);n(t)&&e.push(t)}return 0==e.length?t:r(e).then(c(t))}(t[u](),o):"function"==typeof t[f]?async function(t,o){const e=[];for await(const r of t){const t=o(r);n(t)&&e.push(t)}return 0==e.length?t:r(e).then(c(t))}(t[f](),o):t.constructor==Object?function(t,o){const e=[];for(const r in t){const c=o(t[r]);n(c)&&e.push(c)}return 0==e.length?t:r(e).then(c(t))}(t,o):t};return function(...e){const r=e.pop();if(0==e.length)return o(i,t,r);const c=e[0];return n(c)?c.then(o(i,t,r)):i(c,r)}}());
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rubico v2.0.0
|
|
3
|
+
* https://github.com/a-synchronous/rubico
|
|
4
|
+
* (c) 2019-2023 Richard Tong
|
|
5
|
+
* rubico may be freely distributed under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
const isPromise=r=>null!=r&&"function"==typeof r.then,__=Symbol.for("placeholder"),curry2ResolveArg0=(r,o)=>function(t){return r(t,o)},curry2ResolveArg1=(r,o)=>function(t){return r(o,t)},curry2=function(r,o,t){return o==__?curry2ResolveArg0(r,t):curry2ResolveArg1(r,o)},isArray=Array.isArray,objectProto=Object.prototype,nativeObjectToString=objectProto.toString,objectToString=r=>nativeObjectToString.call(r),generatorFunctionTag="[object GeneratorFunction]",isGeneratorFunction=r=>objectToString(r)==generatorFunctionTag,asyncGeneratorFunctionTag="[object AsyncGeneratorFunction]",isAsyncGeneratorFunction=r=>objectToString(r)==asyncGeneratorFunctionTag,promiseAll=Promise.all.bind(Promise),always=r=>function(){return r},arrayForEach=function(r,o){const t=r.length,n=[];let e=-1;for(;++e<t;){const t=o(r[e]);isPromise(t)&&n.push(t)}return 0==n.length?r:promiseAll(n).then(always(r))},objectForEach=function(r,o){const t=[];for(const n in r){const e=o(r[n]);isPromise(e)&&t.push(e)}return 0==t.length?r:promiseAll(t).then(always(r))},iteratorForEach=function(r,o){const t=[];for(const n of r){const r=o(n);isPromise(r)&&t.push(r)}return 0==t.length?r:promiseAll(t).then(always(r))},asyncIteratorForEach=async function(r,o){const t=[];for await(const n of r){const r=o(n);isPromise(r)&&t.push(r)}return 0==t.length?r:promiseAll(t).then(always(r))},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,_forEach=function(r,o){return isArray(r)?arrayForEach(r,o):null==r?r:"function"==typeof r.forEach?r.forEach(o):"function"==typeof r[symbolIterator]?iteratorForEach(r[symbolIterator](),o):"function"==typeof r[symbolAsyncIterator]?asyncIteratorForEach(r[symbolAsyncIterator](),o):r.constructor==Object?objectForEach(r,o):r},forEach=function(...r){const o=r.pop();if(0==r.length)return curry2(_forEach,__,o);const t=r[0];return isPromise(t)?t.then(curry2(_forEach,__,o)):_forEach(t,o)};export default forEach;
|