rubico 1.9.7 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +5 -0
- package/.eslintrc.js +3 -2
- package/.github/workflows/nodejs.yml +1 -1
- package/AggregateReducer.js +19 -0
- package/AggregateReducer.test.js +82 -0
- package/CHANGELOG.md +22 -1
- package/README.md +158 -81
- package/Transducer.js +75 -26
- package/Transducer.test.js +117 -0
- package/_internal/ComparisonOperator.js +68 -0
- package/_internal/File.js +41 -0
- package/_internal/FlatMappingAsyncIterator.js +4 -4
- package/_internal/FlatMappingIterator.js +1 -1
- package/_internal/TimeInLoopSuite.js +138 -0
- package/_internal/areAnyValuesPromises.js +23 -0
- package/_internal/{arrayAll.js → arrayEvery.js} +4 -4
- package/_internal/arrayExtend.js +3 -2
- package/_internal/arrayFilter.js +3 -4
- package/_internal/{arrayAny.js → arraySome.js} +8 -8
- package/_internal/{asyncIteratorAll.js → asyncIteratorEvery.js} +4 -4
- package/_internal/{asyncIteratorAny.js → asyncIteratorSome.js} +4 -4
- package/_internal/curry4.test.js +25 -0
- package/_internal/curry5.test.js +29 -0
- package/_internal/curryArgs2.js +43 -0
- package/_internal/curryArgs3.test.js +21 -0
- package/_internal/curryArgs4.js +65 -0
- package/_internal/curryArgs4.test.js +25 -0
- package/_internal/equals.js +13 -0
- package/_internal/findAllFilePaths.js +22 -0
- package/_internal/funcApply.js +2 -0
- package/_internal/funcCall.js +14 -0
- package/_internal/functionArrayAll.js +26 -0
- package/_internal/functionArrayAllSeries.js +55 -0
- package/_internal/functionObjectAll.js +32 -0
- package/_internal/genericReduce.js +4 -22
- package/_internal/genericTransform.js +15 -15
- package/_internal/improvedGenericTransform.js +93 -0
- package/_internal/{iteratorAll.js → iteratorEvery.js} +4 -4
- package/_internal/{iteratorAny.js → iteratorSome.js} +6 -6
- package/_internal/leftResolverRightResolverCompare.js +19 -0
- package/_internal/leftResolverRightValueCompare.js +16 -0
- package/_internal/leftValueRightResolverCompare.js +16 -0
- package/_internal/objectReduce.js +0 -1
- package/_internal/pathResolve.js +6 -0
- package/_internal/{reducerAll.js → reducerEvery.js} +4 -4
- package/_internal/reducerFlatMap.js +4 -4
- package/_internal/reducerFlatten.js +1 -1
- package/_internal/{reducerAny.js → reducerSome.js} +4 -4
- package/_internal/timeInLoop.js +37 -0
- package/_internal/timeInLoop.test.js +18 -0
- package/_internal/timeInLoopAsync.js +35 -0
- package/_internal/timeInLoopAsync.test.js +22 -0
- package/all.js +106 -40
- package/and.js +54 -36
- package/archive/{FlatMappingIteratorCool.js → FlatMappingIterator-2020-09-28.js} +1 -1
- package/archive/_Promise-2023-05-29.js +93 -0
- package/archive/arrayMap2-2023-05-29.js +73 -0
- package/archive/benchmarks-v1.9.7/all.js +34 -0
- package/archive/benchmarks-v1.9.7/and.js +24 -0
- package/archive/benchmarks-v1.9.7/assign.js +174 -0
- package/archive/benchmarks-v1.9.7/curry.js +55 -0
- package/archive/benchmarks-v1.9.7/eq.js +25 -0
- package/archive/benchmarks-v1.9.7/filter.js +1322 -0
- package/archive/benchmarks-v1.9.7/flatMap.js +48 -0
- package/archive/benchmarks-v1.9.7/get.js +44 -0
- package/archive/benchmarks-v1.9.7/gt.js +25 -0
- package/archive/benchmarks-v1.9.7/gte.js +25 -0
- package/archive/benchmarks-v1.9.7/lt.js +25 -0
- package/archive/benchmarks-v1.9.7/lte.js +25 -0
- package/archive/benchmarks-v1.9.7/map.js +892 -0
- package/archive/benchmarks-v1.9.7/omit.js +28 -0
- package/archive/benchmarks-v1.9.7/or.js +51 -0
- package/archive/benchmarks-v1.9.7/pick.js +24 -0
- package/archive/benchmarks-v1.9.7/pipe.js +152 -0
- package/archive/benchmarks-v1.9.7/reduce.js +739 -0
- package/archive/benchmarks-v1.9.7/switchCase.js +256 -0
- package/archive/benchmarks-v1.9.7/tap.js +90 -0
- package/archive/benchmarks-v1.9.7/transform.js +218 -0
- package/archive/benchmarks-v1.9.7/tryCatch.js +108 -0
- package/assign.js +18 -8
- package/bench +65 -0
- package/benchmark-output/v1.9.7 +268 -0
- package/benchmarks/all.async.js +43 -0
- package/benchmarks/all.js +42 -33
- package/benchmarks/always.js +15 -0
- package/benchmarks/and.async.js +25 -0
- package/benchmarks/and.js +20 -19
- package/benchmarks/assign.async.js +27 -0
- package/benchmarks/assign.js +20 -167
- package/benchmarks/curry.js +34 -54
- package/benchmarks/eq.async.js +23 -0
- package/benchmarks/eq.js +17 -19
- package/benchmarks/every.async.js +19 -0
- package/benchmarks/every.js +19 -0
- package/benchmarks/filter.async.js +32 -0
- package/benchmarks/filter.js +27 -1311
- package/benchmarks/flatMap.async.js +26 -0
- package/benchmarks/flatMap.js +26 -36
- package/benchmarks/get.async.js +19 -0
- package/benchmarks/get.js +27 -32
- package/benchmarks/gt.async.js +23 -0
- package/benchmarks/gt.js +17 -19
- package/benchmarks/gte.async.js +23 -0
- package/benchmarks/gte.js +17 -19
- package/benchmarks/lt.async.js +23 -0
- package/benchmarks/lt.js +17 -19
- package/benchmarks/lte.async.js +23 -0
- package/benchmarks/lte.js +17 -19
- package/benchmarks/map.async.js +43 -0
- package/benchmarks/map.js +24 -876
- package/benchmarks/misc/Promise.js +26 -0
- package/benchmarks/misc/isPromise.js +30 -0
- package/benchmarks/misc/promiseAll.js +36 -0
- package/benchmarks/not.js +23 -0
- package/benchmarks/omit.js +30 -20
- package/benchmarks/or.async.js +25 -0
- package/benchmarks/or.js +23 -49
- package/benchmarks/pick.js +30 -16
- package/benchmarks/pipe.async.js +47 -0
- package/benchmarks/pipe.js +46 -151
- package/benchmarks/reduce.async.js +32 -0
- package/benchmarks/reduce.js +27 -728
- package/benchmarks/set.async.js +19 -0
- package/benchmarks/set.js +41 -0
- package/benchmarks/some.async.js +19 -0
- package/benchmarks/some.js +19 -0
- package/benchmarks/switchCase.async.js +27 -0
- package/benchmarks/switchCase.js +55 -256
- package/benchmarks/tap.js +10 -85
- package/benchmarks/thunkify.js +15 -0
- package/benchmarks/transform.async.js +27 -0
- package/benchmarks/transform.js +28 -206
- package/benchmarks/tryCatch.async.js +25 -0
- package/benchmarks/tryCatch.js +24 -100
- package/build +472 -0
- package/compose.js +46 -0
- package/dist/Transducer.es.js +481 -0
- package/dist/Transducer.es.min.js +7 -0
- package/dist/Transducer.js +488 -0
- package/dist/Transducer.min.js +8 -0
- package/dist/Transducer.mjs +481 -0
- package/dist/__.es.js +2 -2
- package/dist/__.es.min.js +2 -2
- package/dist/__.js +2 -2
- package/dist/__.min.js +2 -2
- package/dist/__.mjs +2 -2
- package/dist/all.es.js +173 -92
- package/dist/all.es.min.js +3 -3
- package/dist/all.js +173 -92
- package/dist/all.min.js +3 -3
- package/dist/all.mjs +173 -92
- package/dist/always.es.js +2 -2
- package/dist/always.es.min.js +2 -2
- package/dist/always.js +2 -2
- package/dist/always.min.js +2 -2
- package/dist/always.mjs +2 -2
- package/dist/and.es.js +101 -32
- package/dist/and.es.min.js +3 -3
- package/dist/and.js +101 -32
- package/dist/and.min.js +3 -3
- package/dist/and.mjs +101 -32
- package/dist/assign.es.js +37 -10
- package/dist/assign.es.min.js +3 -3
- package/dist/assign.js +37 -10
- package/dist/assign.min.js +3 -3
- package/dist/assign.mjs +37 -10
- package/dist/compose.es.js +71 -0
- package/dist/compose.es.min.js +7 -0
- package/dist/compose.js +78 -0
- package/dist/compose.min.js +8 -0
- package/dist/compose.mjs +71 -0
- package/dist/curry.es.js +2 -2
- package/dist/curry.es.min.js +2 -2
- package/dist/curry.js +2 -2
- package/dist/curry.min.js +2 -2
- package/dist/curry.mjs +2 -2
- package/dist/eq.es.js +172 -49
- package/dist/eq.es.min.js +3 -3
- package/dist/eq.js +172 -49
- package/dist/eq.min.js +3 -3
- package/dist/eq.mjs +172 -49
- package/dist/every.es.js +194 -0
- package/dist/every.es.min.js +7 -0
- package/dist/every.js +201 -0
- package/dist/every.min.js +8 -0
- package/dist/every.mjs +194 -0
- package/dist/filter.es.js +14 -108
- package/dist/filter.es.min.js +3 -3
- package/dist/filter.js +14 -108
- package/dist/filter.min.js +3 -3
- package/dist/filter.mjs +14 -108
- package/dist/flatMap.es.js +27 -214
- package/dist/flatMap.es.min.js +3 -3
- package/dist/flatMap.js +27 -214
- package/dist/flatMap.min.js +3 -3
- package/dist/flatMap.mjs +27 -214
- package/dist/{x/forEach.es.js → forEach.es.js} +52 -70
- package/dist/forEach.es.min.js +7 -0
- package/dist/{x/forEach.js → forEach.js} +52 -70
- package/dist/forEach.min.js +8 -0
- package/dist/{x/forEach.mjs → forEach.mjs} +52 -70
- package/dist/get.es.js +60 -5
- package/dist/get.es.min.js +3 -3
- package/dist/get.js +60 -5
- package/dist/get.min.js +3 -3
- package/dist/get.mjs +60 -5
- package/dist/gt.es.js +171 -48
- package/dist/gt.es.min.js +3 -3
- package/dist/gt.js +171 -48
- package/dist/gt.min.js +3 -3
- package/dist/gt.mjs +171 -48
- package/dist/gte.es.js +171 -48
- package/dist/gte.es.min.js +3 -3
- package/dist/gte.js +171 -48
- package/dist/gte.min.js +3 -3
- package/dist/gte.mjs +171 -48
- package/dist/lt.es.js +171 -48
- package/dist/lt.es.min.js +3 -3
- package/dist/lt.js +171 -48
- package/dist/lt.min.js +3 -3
- package/dist/lt.mjs +171 -48
- package/dist/lte.es.js +171 -48
- package/dist/lte.es.min.js +3 -3
- package/dist/lte.js +171 -48
- package/dist/lte.min.js +3 -3
- package/dist/lte.mjs +171 -48
- package/dist/map.es.js +12 -101
- package/dist/map.es.min.js +3 -3
- package/dist/map.js +12 -101
- package/dist/map.min.js +3 -3
- package/dist/map.mjs +12 -101
- package/dist/not.es.js +75 -14
- package/dist/not.es.min.js +3 -3
- package/dist/not.js +75 -14
- package/dist/not.min.js +3 -3
- package/dist/not.mjs +75 -14
- package/dist/omit.es.js +7 -2
- package/dist/omit.es.min.js +3 -3
- package/dist/omit.js +7 -2
- package/dist/omit.min.js +3 -3
- package/dist/omit.mjs +7 -2
- package/dist/or.es.js +99 -31
- package/dist/or.es.min.js +3 -3
- package/dist/or.js +99 -31
- package/dist/or.min.js +3 -3
- package/dist/or.mjs +99 -31
- package/dist/pick.es.js +8 -3
- package/dist/pick.es.min.js +3 -3
- package/dist/pick.js +8 -3
- package/dist/pick.min.js +3 -3
- package/dist/pick.mjs +8 -3
- package/dist/pipe.es.js +42 -46
- package/dist/pipe.es.min.js +3 -3
- package/dist/pipe.js +42 -46
- package/dist/pipe.min.js +3 -3
- package/dist/pipe.mjs +42 -46
- package/dist/reduce.es.js +52 -94
- package/dist/reduce.es.min.js +3 -3
- package/dist/reduce.js +52 -94
- package/dist/reduce.min.js +3 -3
- package/dist/reduce.mjs +52 -94
- package/dist/rubico.es.js +762 -883
- package/dist/rubico.es.min.js +3 -3
- package/dist/rubico.global.js +2794 -0
- package/dist/rubico.global.min.js +8 -0
- package/dist/rubico.js +739 -869
- package/dist/rubico.min.js +3 -3
- package/dist/rubico.mjs +762 -883
- package/dist/set.es.js +18 -3
- package/dist/set.es.min.js +3 -3
- package/dist/set.js +18 -3
- package/dist/set.min.js +3 -3
- package/dist/set.mjs +18 -3
- package/dist/{any.js → some.es.js} +64 -54
- package/dist/some.es.min.js +7 -0
- package/dist/{any.mjs → some.js} +72 -48
- package/dist/some.min.js +8 -0
- package/dist/{any.es.js → some.mjs} +65 -48
- package/dist/switchCase.es.js +55 -5
- package/dist/switchCase.es.min.js +3 -3
- package/dist/switchCase.js +55 -5
- package/dist/switchCase.min.js +3 -3
- package/dist/switchCase.mjs +55 -5
- package/dist/tap.es.js +2 -9
- package/dist/tap.es.min.js +3 -3
- package/dist/tap.js +2 -9
- package/dist/tap.min.js +3 -3
- package/dist/tap.mjs +2 -9
- package/dist/thunkify.es.js +45 -2
- package/dist/thunkify.es.min.js +3 -3
- package/dist/thunkify.js +45 -2
- package/dist/thunkify.min.js +3 -3
- package/dist/thunkify.mjs +45 -2
- package/dist/transform.es.js +35 -71
- package/dist/transform.es.min.js +3 -3
- package/dist/transform.js +35 -71
- package/dist/transform.min.js +3 -3
- package/dist/transform.mjs +35 -71
- package/dist/tryCatch.es.js +33 -17
- package/dist/tryCatch.es.min.js +3 -3
- package/dist/tryCatch.js +33 -17
- package/dist/tryCatch.min.js +3 -3
- package/dist/tryCatch.mjs +33 -17
- package/dist/x/append.es.js +2 -2
- package/dist/x/append.es.min.js +2 -2
- package/dist/x/append.js +2 -2
- package/dist/x/append.min.js +2 -2
- package/dist/x/append.mjs +2 -2
- package/dist/x/callProp.es.js +2 -2
- package/dist/x/callProp.es.min.js +2 -2
- package/dist/x/callProp.js +2 -2
- package/dist/x/callProp.min.js +2 -2
- package/dist/x/callProp.mjs +2 -2
- package/dist/x/defaultsDeep.es.js +2 -2
- package/dist/x/defaultsDeep.es.min.js +2 -2
- package/dist/x/defaultsDeep.js +2 -2
- package/dist/x/defaultsDeep.min.js +2 -2
- package/dist/x/defaultsDeep.mjs +2 -2
- package/dist/x/differenceWith.es.js +7 -7
- package/dist/x/differenceWith.es.min.js +3 -3
- package/dist/x/differenceWith.js +7 -7
- package/dist/x/differenceWith.min.js +2 -2
- package/dist/x/differenceWith.mjs +7 -7
- package/dist/x/filterOut.es.js +60 -117
- package/dist/x/filterOut.es.min.js +3 -3
- package/dist/x/filterOut.js +60 -117
- package/dist/x/filterOut.min.js +3 -3
- package/dist/x/filterOut.mjs +60 -117
- package/dist/x/find.es.js +2 -2
- package/dist/x/find.es.min.js +2 -2
- package/dist/x/find.js +2 -2
- package/dist/x/find.min.js +2 -2
- package/dist/x/find.mjs +2 -2
- package/dist/x/findIndex.es.js +2 -2
- package/dist/x/findIndex.es.min.js +2 -2
- package/dist/x/findIndex.js +2 -2
- package/dist/x/findIndex.min.js +2 -2
- package/dist/x/findIndex.mjs +2 -2
- package/dist/x/first.es.js +2 -2
- package/dist/x/first.es.min.js +2 -2
- package/dist/x/first.js +2 -2
- package/dist/x/first.min.js +2 -2
- package/dist/x/first.mjs +2 -2
- package/dist/x/flatten.es.js +20 -207
- package/dist/x/flatten.es.min.js +3 -3
- package/dist/x/flatten.js +20 -207
- package/dist/x/flatten.min.js +3 -3
- package/dist/x/flatten.mjs +20 -207
- package/dist/x/groupBy.es.js +52 -94
- package/dist/x/groupBy.es.min.js +3 -3
- package/dist/x/groupBy.js +52 -94
- package/dist/x/groupBy.min.js +3 -3
- package/dist/x/groupBy.mjs +52 -94
- package/dist/x/has.es.js +2 -2
- package/dist/x/has.es.min.js +2 -2
- package/dist/x/has.js +2 -2
- package/dist/x/has.min.js +2 -2
- package/dist/x/has.mjs +2 -2
- package/dist/x/identity.es.js +2 -2
- package/dist/x/identity.es.min.js +2 -2
- package/dist/x/identity.js +2 -2
- package/dist/x/identity.min.js +2 -2
- package/dist/x/identity.mjs +2 -2
- package/dist/x/includes.es.js +2 -2
- package/dist/x/includes.es.min.js +2 -2
- package/dist/x/includes.js +2 -2
- package/dist/x/includes.min.js +2 -2
- package/dist/x/includes.mjs +2 -2
- package/dist/x/isDeepEqual.es.js +2 -2
- package/dist/x/isDeepEqual.es.min.js +2 -2
- package/dist/x/isDeepEqual.js +2 -2
- package/dist/x/isDeepEqual.min.js +2 -2
- package/dist/x/isDeepEqual.mjs +2 -2
- package/dist/x/isEmpty.es.js +2 -2
- package/dist/x/isEmpty.es.min.js +2 -2
- package/dist/x/isEmpty.js +2 -2
- package/dist/x/isEmpty.min.js +2 -2
- package/dist/x/isEmpty.mjs +2 -2
- package/dist/x/isEqual.es.js +2 -2
- package/dist/x/isEqual.es.min.js +2 -2
- package/dist/x/isEqual.js +2 -2
- package/dist/x/isEqual.min.js +2 -2
- package/dist/x/isEqual.mjs +2 -2
- package/dist/x/isFunction.es.js +2 -2
- package/dist/x/isFunction.es.min.js +2 -2
- package/dist/x/isFunction.js +2 -2
- package/dist/x/isFunction.min.js +2 -2
- package/dist/x/isFunction.mjs +2 -2
- package/dist/x/isIn.es.js +2 -2
- package/dist/x/isIn.es.min.js +2 -2
- package/dist/x/isIn.js +2 -2
- package/dist/x/isIn.min.js +2 -2
- package/dist/x/isIn.mjs +2 -2
- package/dist/x/isObject.es.js +2 -2
- package/dist/x/isObject.es.min.js +2 -2
- package/dist/x/isObject.js +2 -2
- package/dist/x/isObject.min.js +2 -2
- package/dist/x/isObject.mjs +2 -2
- package/dist/x/isString.es.js +2 -2
- package/dist/x/isString.es.min.js +2 -2
- package/dist/x/isString.js +2 -2
- package/dist/x/isString.min.js +2 -2
- package/dist/x/isString.mjs +2 -2
- package/dist/x/keys.es.js +2 -2
- package/dist/x/keys.es.min.js +2 -2
- package/dist/x/keys.js +2 -2
- package/dist/x/keys.min.js +2 -2
- package/dist/x/keys.mjs +2 -2
- package/dist/x/last.es.js +2 -2
- package/dist/x/last.es.min.js +2 -2
- package/dist/x/last.js +2 -2
- package/dist/x/last.min.js +2 -2
- package/dist/x/last.mjs +2 -2
- package/dist/x/maxBy.es.js +59 -6
- package/dist/x/maxBy.es.min.js +3 -3
- package/dist/x/maxBy.js +59 -6
- package/dist/x/maxBy.min.js +3 -3
- package/dist/x/maxBy.mjs +59 -6
- package/dist/x/noop.es.js +2 -2
- package/dist/x/noop.es.min.js +2 -2
- package/dist/x/noop.js +2 -2
- package/dist/x/noop.min.js +2 -2
- package/dist/x/noop.mjs +2 -2
- package/dist/x/pluck.es.js +32 -103
- package/dist/x/pluck.es.min.js +3 -3
- package/dist/x/pluck.js +32 -103
- package/dist/x/pluck.min.js +3 -3
- package/dist/x/pluck.mjs +32 -103
- package/dist/x/prepend.es.js +2 -2
- package/dist/x/prepend.es.min.js +2 -2
- package/dist/x/prepend.js +2 -2
- package/dist/x/prepend.min.js +2 -2
- package/dist/x/prepend.mjs +2 -2
- package/dist/x/size.es.js +2 -2
- package/dist/x/size.es.min.js +2 -2
- package/dist/x/size.js +2 -2
- package/dist/x/size.min.js +2 -2
- package/dist/x/size.mjs +2 -2
- package/dist/x/trace.es.js +2 -9
- package/dist/x/trace.es.min.js +3 -3
- package/dist/x/trace.js +2 -9
- package/dist/x/trace.min.js +3 -3
- package/dist/x/trace.mjs +2 -9
- package/dist/x/unionWith.es.js +2 -2
- package/dist/x/unionWith.es.min.js +2 -2
- package/dist/x/unionWith.js +2 -2
- package/dist/x/unionWith.min.js +2 -2
- package/dist/x/unionWith.mjs +2 -2
- package/dist/x/uniq.es.js +2 -2
- package/dist/x/uniq.es.min.js +2 -2
- package/dist/x/uniq.js +2 -2
- package/dist/x/uniq.min.js +2 -2
- package/dist/x/uniq.mjs +2 -2
- package/dist/x/unless.es.js +2 -2
- package/dist/x/unless.es.min.js +2 -2
- package/dist/x/unless.js +2 -2
- package/dist/x/unless.min.js +2 -2
- package/dist/x/unless.mjs +2 -2
- package/dist/x/values.es.js +2 -2
- package/dist/x/values.es.min.js +2 -2
- package/dist/x/values.js +2 -2
- package/dist/x/values.min.js +2 -2
- package/dist/x/values.mjs +2 -2
- package/dist/x/when.es.js +2 -2
- package/dist/x/when.es.min.js +2 -2
- package/dist/x/when.js +2 -2
- package/dist/x/when.min.js +2 -2
- package/dist/x/when.mjs +2 -2
- package/dist-test.js +31 -2042
- package/eq.js +21 -63
- package/es.js +739 -869
- package/every.js +94 -0
- package/filter.js +23 -91
- package/flatMap.js +75 -70
- package/forEach.js +82 -0
- package/get.js +23 -6
- package/global.js +6 -4
- package/gt.js +15 -58
- package/gte.js +14 -57
- package/index.js +739 -869
- package/lt.js +17 -60
- package/lte.js +14 -57
- package/map.js +9 -94
- package/memory-usage/reduce.js +2 -2
- package/not.js +27 -45
- package/omit.js +4 -0
- package/or.js +50 -33
- package/package.json +7 -7
- package/pick.js +5 -1
- package/pipe.js +13 -50
- package/reduce.js +42 -51
- package/rubico.js +22 -11
- package/set.js +43 -10
- package/some.js +105 -0
- package/switchCase.js +13 -3
- package/tap.js +0 -24
- package/test.js +847 -1096
- package/thunkify.js +9 -0
- package/tmp.js +1 -0
- package/transform.js +31 -16
- package/tryCatch.js +19 -15
- package/x/differenceWith.js +3 -3
- package/x/filterOut.test.js +6 -6
- package/x/flatten.js +1 -1
- package/x/flatten.test.js +0 -8
- package/x/index.js +0 -2
- package/x/pluck.js +18 -27
- package/x/pluck.test.js +3 -7
- package/x/timeInLoop.js +16 -25
- package/x/timeInLoop.test.js +8 -4
- package/any.js +0 -82
- package/dist/__.min.mjs +0 -7
- package/dist/all.min.mjs +0 -7
- package/dist/always.min.mjs +0 -7
- package/dist/and.min.mjs +0 -7
- package/dist/any.es.min.js +0 -7
- package/dist/any.min.js +0 -8
- package/dist/any.min.mjs +0 -7
- package/dist/assign.min.mjs +0 -7
- package/dist/curry.min.mjs +0 -7
- package/dist/eq.min.mjs +0 -7
- package/dist/filter.min.mjs +0 -7
- package/dist/flatMap.min.mjs +0 -7
- package/dist/fork.es.js +0 -159
- package/dist/fork.es.min.js +0 -7
- package/dist/fork.js +0 -166
- package/dist/fork.min.js +0 -8
- package/dist/fork.min.mjs +0 -7
- package/dist/fork.mjs +0 -159
- package/dist/get.min.mjs +0 -7
- package/dist/gt.min.mjs +0 -7
- package/dist/gte.min.mjs +0 -7
- package/dist/lt.min.mjs +0 -7
- package/dist/lte.min.mjs +0 -7
- package/dist/map.min.mjs +0 -7
- package/dist/not.min.mjs +0 -7
- package/dist/omit.min.mjs +0 -7
- package/dist/or.min.mjs +0 -7
- package/dist/pick.min.mjs +0 -7
- package/dist/pipe.min.mjs +0 -7
- package/dist/reduce.min.mjs +0 -7
- package/dist/rubico.min.mjs +0 -7
- package/dist/set.min.mjs +0 -7
- package/dist/switchCase.min.mjs +0 -7
- package/dist/tap.min.mjs +0 -7
- package/dist/thunkify.min.mjs +0 -7
- package/dist/transform.min.mjs +0 -7
- package/dist/tryCatch.min.mjs +0 -7
- package/dist/x/append.min.mjs +0 -7
- package/dist/x/callProp.min.mjs +0 -7
- package/dist/x/defaultsDeep.min.mjs +0 -7
- package/dist/x/differenceWith.min.mjs +0 -7
- package/dist/x/filterOut.min.mjs +0 -7
- package/dist/x/find.min.mjs +0 -7
- package/dist/x/findIndex.min.mjs +0 -7
- package/dist/x/first.min.mjs +0 -7
- package/dist/x/flatten.min.mjs +0 -7
- package/dist/x/forEach.es.min.js +0 -7
- package/dist/x/forEach.min.js +0 -8
- package/dist/x/forEach.min.mjs +0 -7
- package/dist/x/groupBy.min.mjs +0 -7
- package/dist/x/has.min.mjs +0 -7
- package/dist/x/identity.min.mjs +0 -7
- package/dist/x/includes.min.mjs +0 -7
- package/dist/x/isDeepEqual.min.mjs +0 -7
- package/dist/x/isEmpty.min.mjs +0 -7
- package/dist/x/isEqual.min.mjs +0 -7
- package/dist/x/isFunction.min.mjs +0 -7
- package/dist/x/isIn.min.mjs +0 -7
- package/dist/x/isObject.min.mjs +0 -7
- package/dist/x/isString.min.mjs +0 -7
- package/dist/x/keys.min.mjs +0 -7
- package/dist/x/last.min.mjs +0 -7
- package/dist/x/maxBy.min.mjs +0 -7
- package/dist/x/noop.min.mjs +0 -7
- package/dist/x/pluck.min.mjs +0 -7
- package/dist/x/prepend.min.mjs +0 -7
- package/dist/x/size.min.mjs +0 -7
- package/dist/x/trace.min.mjs +0 -7
- package/dist/x/unionWith.min.mjs +0 -7
- package/dist/x/uniq.min.mjs +0 -7
- package/dist/x/unless.min.mjs +0 -7
- package/dist/x/values.min.mjs +0 -7
- package/dist/x/when.min.mjs +0 -7
- package/distributor.js +0 -495
- package/fork.js +0 -101
- package/x/forEach.js +0 -93
- package/x/forEach.test.js +0 -218
- /package/{benchmarks → archive/benchmarks-v1.9.7}/any.js +0 -0
- /package/{x/forEach.benchmark.js → archive/benchmarks-v1.9.7/forEach.js} +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/fork.js +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/integration.js +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/misc.js +0 -0
package/dist/flatMap.es.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico
|
|
2
|
+
* rubico v2.0.1
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
|
-
* (c) 2019-
|
|
4
|
+
* (c) 2019-2023 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
const isPromise = value => value != null && typeof value.then == 'function'
|
|
9
|
+
|
|
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
|
package/dist/flatMap.es.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico
|
|
2
|
+
* rubico v2.0.1
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
|
-
* (c) 2019-
|
|
4
|
+
* (c) 2019-2023 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
6
6
|
*/
|
|
7
|
-
const isArray=Array.isArray,objectValues=Object.values,objectProto=Object.prototype,nativeObjectToString=objectProto.toString,objectToString=e=>nativeObjectToString.call(e),generatorFunctionTag="[object GeneratorFunction]",isGeneratorFunction=e=>objectToString(e)==generatorFunctionTag,asyncGeneratorFunctionTag="[object AsyncGeneratorFunction]",isAsyncGeneratorFunction=e=>objectToString(e)==asyncGeneratorFunctionTag,__=Symbol.for("placeholder"),curry3ResolveArg0=(e,r,t)=>function(n){return e(n,r,t)},curry3ResolveArg1=(e,r,t)=>function(n){return e(r,n,t)},curry3ResolveArg2=(e,r,t)=>function(n){return e(r,t,n)},curry3=function(e,r,t,n){return r==__?curry3ResolveArg0(e,t,n):t==__?curry3ResolveArg1(e,r,n):curry3ResolveArg2(e,r,t)},isPromise=e=>null!=e&&"function"==typeof e.then,iteratorReduceAsync=async function(e,r,t){let n=e.next();if(n.done)return t;for(;!n.done;)t=r(t,n.value),isPromise(t)&&(t=await t),n=e.next();return t},iteratorReduce=function(e,r,t){let n=e.next();if(n.done)return t;for(void 0===t&&(t=n.value,n=e.next());!n.done;){if(t=r(t,n.value),isPromise(t))return t.then(curry3(iteratorReduceAsync,e,r,__));n=e.next()}return t},asyncIteratorReduce=async function(e,r,t){let n=await e.next();if(n.done)return t;for(void 0===t&&(t=n.value,n=await e.next());!n.done;)t=await r(t,n.value),n=await e.next();return t},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,curry2ResolveArg0=(e,r)=>function(t){return e(t,r)},curry2ResolveArg1=(e,r)=>function(t){return e(r,t)},curry2=function(e,r,t){return r==__?curry2ResolveArg0(e,t):curry2ResolveArg1(e,r)},curryArgs3ResolveArgs0=(e,r,t)=>function(...n){return e(n,r,t)},curryArgs3ResolveArgs1=(e,r,t)=>function(...n){return e(r,n,t)},curryArgs3ResolveArgs2=(e,r,t)=>function(...n){return e(r,t,n)},curryArgs3=function(e,r,t,n){return r==__?curryArgs3ResolveArgs0(e,t,n):t==__?curryArgs3ResolveArgs1(e,r,n):curryArgs3ResolveArgs2(e,r,t)},curry4ResolveArg0=(e,r,t,n)=>function(o){return e(o,r,t,n)},curry4ResolveArg1=(e,r,t,n)=>function(o){return e(r,o,t,n)},curry4ResolveArg2=(e,r,t,n)=>function(o){return e(r,t,o,n)},curry4ResolveArg3=(e,r,t,n)=>function(o){return e(r,t,n,o)},curry4=function(e,r,t,n,o){return r==__?curry4ResolveArg0(e,t,n,o):t==__?curry4ResolveArg1(e,r,n,o):n==__?curry4ResolveArg2(e,r,t,o):curry4ResolveArg3(e,r,t,n)},arrayReduceAsync=async function(e,r,t,n){const o=e.length;for(;++n<o;)t=r(t,e[n],n,e),isPromise(t)&&(t=await t);return t},arrayReduce=function(e,r,t){const n=e.length;let o=-1;for(void 0===t&&(t=e[++o]);++o<n;)if(t=r(t,e[o],o,e),isPromise(t))return t.then(curry4(arrayReduceAsync,e,r,__,o));return t},curry5ResolveArg0=(e,r,t,n,o)=>function(c){return e(c,r,t,n,o)},curry5ResolveArg1=(e,r,t,n,o)=>function(c){return e(r,c,t,n,o)},curry5ResolveArg2=(e,r,t,n,o)=>function(c){return e(r,t,c,n,o)},curry5ResolveArg3=(e,r,t,n,o)=>function(c){return e(r,t,n,c,o)},curry5ResolveArg4=(e,r,t,n,o)=>function(c){return e(r,t,n,o,c)},curry5=function(e,r,t,n,o,c){return r==__?curry5ResolveArg0(e,t,n,o,c):t==__?curry5ResolveArg1(e,r,n,o,c):n==__?curry5ResolveArg2(e,r,t,o,c):o==__?curry5ResolveArg3(e,r,t,n,c):curry5ResolveArg4(e,r,t,n,o)},objectKeys=Object.keys,objectGetFirstKey=function(e){for(const r in e)return r},objectReduceAsync=async function(e,r,t,n,o){const c=n.length;for(;++o<c;){const c=n[o];t=r(t,e[c],c,e),isPromise(t)&&(t=await t)}return t},objectReduce=function(e,r,t){const n=objectKeys(e),o=n.length;let c=-1;for(void 0===t&&(t=e[n[++c]]);++c<o;){const o=n[c];if(t=r(t,e[o],o,e),isPromise(t))return t.then((s=objectReduceAsync,a=r,u=__,l=n,f=c,(i=e)==__?curry5ResolveArg0(s,a,u,l,f):a==__?curry5ResolveArg1(s,i,u,l,f):u==__?curry5ResolveArg2(s,i,a,l,f):l==__?curry5ResolveArg3(s,i,a,u,f):curry5ResolveArg4(s,i,a,u,l)))}var s,i,a,u,l,f;return t},mapReduceAsync=async function(e,r,t,n){for(const[o,c]of n)t=r(t,c,o,e),isPromise(t)&&(t=await t);return t},mapReduce=function(e,r,t){const n=e.entries();if(void 0===t){const e=n.next();if(e.done)return t;t=e.value[1]}for(const[o,c]of n)if(t=r(t,c,o,e),isPromise(t))return t.then(curry4(mapReduceAsync,e,r,__,n));return t},funcConcatSync=(e,r)=>function(...t){return r(e(...t))},generatorFunctionReduce=(e,r,t)=>funcConcatSync(e,curry3(iteratorReduce,__,r,t)),asyncGeneratorFunctionReduce=(e,r,t)=>funcConcatSync(e,curry3(asyncIteratorReduce,__,r,t)),reducerConcat=(e,r)=>function(t,n){const o=e(t,n);return isPromise(o)?o.then(curry2(r,__,n)):r(o,n)},genericReduce=function(e,r,t){const n=e[0];return isArray(n)?arrayReduce(n,r,t):"function"==typeof n?isGeneratorFunction(n)?generatorFunctionReduce(n,r,t):isAsyncGeneratorFunction(n)?asyncGeneratorFunctionReduce(n,r,t):curryArgs3(genericReduce,__,1==e.length?reducerConcat(r,n):e.reduce(reducerConcat,r),t):null==n?void 0===t?curry2(r,n,__):r(t,n):n.constructor==Map?mapReduce(n,r,t):"function"==typeof n[symbolIterator]?iteratorReduce(n[symbolIterator](),r,t):"function"==typeof n[symbolAsyncIterator]?asyncIteratorReduce(n[symbolAsyncIterator](),r,t):"function"==typeof n.reduce?n.reduce(r,t):"function"==typeof n.chain?n.chain(curry2(r,t,__)):"function"==typeof n.flatMap?n.flatMap(curry2(r,t,__)):n.constructor==Object?objectReduce(n,r,t):void 0===t?curry2(r,n,__):r(t,n)},arrayPush=function(e,r){return e.push(r),e},FlatMappingIterator=function(e,r){let t=[],n=0;return{[symbolIterator](){return this},next(){if(n<t.length){const e=t[n];return n+=1,{value:e,done:!1}}const o=e.next();if(o.done)return o;const c=genericReduce([r(o.value)],arrayPush,[]);return c.length>1&&(t=c,n=1),{value:c[0],done:!1}}}},promiseRace=Promise.race.bind(Promise),sleep=e=>new Promise((r=>{setTimeout(r,e)})),FlatMappingAsyncIterator=function(e,r){const t=[],n=new Set;return{isAsyncIteratorDone:!1,[symbolAsyncIterator](){return this},toString:()=>"[object FlatMappingAsyncIterator]",async next(){for(;!this.isAsyncIteratorDone||t.length>0||n.size>0;){if(!this.isAsyncIteratorDone){const{value:o,done:c}=await e.next();if(c)this.isAsyncIteratorDone=c;else{const e=r(o);if(isPromise(e)){const r=e.then(curryArgs3(genericReduce,__,arrayPush,t)).then((()=>n.delete(r)));n.add(r)}else{const r=genericReduce([e],arrayPush,t);if(isPromise(r)){const e=r.then((()=>n.delete(e)));n.add(e)}}}}if(t.length>0)return{value:t.shift(),done:!1};n.size>0&&await promiseRace([sleep(1e3),...n])}return{value:void 0,done:!0}}}},isBinary=ArrayBuffer.isView,always=e=>function(){return e},getArg1=(e,r)=>r,identity=e=>e,promiseAll=Promise.all.bind(Promise),asyncIteratorForEach=async function(e,r){const t=[];for await(const n of e){const e=r(n);isPromise(e)&&t.push(e)}return 0==t.length?e:promiseAll(t).then(always(e))},arrayFlatten=function(e){const r=e.length,t=[],n=[];let o=-1;for(;++o<r;){const r=e[o];if(isArray(r)){const e=r.length;let t=-1;for(;++t<e;)n.push(r[t])}else if(null==r)n.push(r);else if("function"==typeof r.then)t.push(r.then(curry2(arrayPush,n,__)));else if("function"==typeof r[symbolIterator])for(const e of r)n.push(e);else if("function"==typeof r[symbolAsyncIterator])t.push(asyncIteratorForEach(r[symbolAsyncIterator](),curry2(arrayPush,n,__)));else if("function"==typeof r.chain){const e=r.chain(identity);isPromise(e)?t.push(e.then(curry2(arrayPush,n,__))):n.push(e)}else if("function"==typeof r.flatMap){const e=r.flatMap(identity);isPromise(e)?t.push(e.then(curry2(arrayPush,n,__))):n.push(e)}else if("function"==typeof r.reduce){const e=r.reduce(funcConcatSync(getArg1,curry2(arrayPush,n,__)),null);isPromise(e)&&t.push(e)}else if(r.constructor==Object)for(const e in r)n.push(r[e]);else n.push(r)}return 0==t.length?n:promiseAll(t).then(always(n))},arrayMap=function(e,r){const t=e.length,n=Array(t);let o=-1,c=!1;for(;++o<t;){const t=r(e[o],o,e);isPromise(t)&&(c=!0),n[o]=t}return c?promiseAll(n):n},arrayFlatMap=function(e,r){const t=arrayMap(e,r);return isPromise(t)?t.then(arrayFlatten):arrayFlatten(t)},promiseObjectAllExecutor=e=>function(r){const t={};let n=0;for(const o in e){const c=e[o];isPromise(c)?(n+=1,c.then((e=>function(o){t[e]=o,n-=1,0==n&&r(t)})(o))):t[o]=c}0==n&&r(t)},promiseObjectAll=e=>new Promise(promiseObjectAllExecutor(e)),objectMap=function(e,r){const t={};let n=!1;for(const o in e){const c=r(e[o],o,e);isPromise(c)&&(n=!0),t[o]=c}return n?promiseObjectAll(t):t},objectAssign=Object.assign,objectFlatten=function(e){const r=[],t={},n=curry2(objectAssign,t,__),o=funcConcatSync(getArg1,n);for(const c in e){const s=e[c];if(null!=s)if("function"==typeof s[symbolIterator])for(const e of s)objectAssign(t,e);else if("function"==typeof s[symbolAsyncIterator])r.push(asyncIteratorForEach(s[symbolAsyncIterator](),n));else if("function"==typeof s.chain){const e=s.chain(identity);isPromise(e)?r.push(e.then(n)):objectAssign(t,e)}else if("function"==typeof s.flatMap){const e=s.flatMap(identity);isPromise(e)?r.push(e.then(n)):n(e)}else if("function"==typeof s.reduce){const e=s.reduce(o,null);isPromise(e)&&r.push(e)}else objectAssign(t,s)}return 0==r.length?t:promiseAll(r).then((()=>t))},objectFlatMap=function(e,r){const t=objectMap(e,r);return isPromise(t)?t.then(objectFlatten):objectFlatten(t)},callPropUnary=(e,r,t)=>e[r](t),setMap=function(e,r){const t=new Set,n=[];for(const o of e){const c=r(o,o,e);isPromise(c)?n.push(c.then(curry3(callPropUnary,t,"add",__))):t.add(c)}return 0==n.length?t:promiseAll(n).then(always(t))},setFlatten=function(e){e.size;const r=[],t=new Set,n=(e,r)=>t.add(r),o=curry3(callPropUnary,t,"add",__);for(const c of e)if(isArray(c)){const e=c.length;let r=-1;for(;++r<e;)t.add(c[r])}else if(null==c)t.add(c);else if("function"==typeof c[symbolIterator])for(const e of c)t.add(e);else if("function"==typeof c[symbolAsyncIterator])r.push(asyncIteratorForEach(c[symbolAsyncIterator](),o));else if("function"==typeof c.chain){const e=c.chain(identity);isPromise(e)?r.push(e.then(o)):t.add(e)}else if("function"==typeof c.flatMap){const e=c.flatMap(identity);isPromise(e)?r.push(e.then(o)):t.add(e)}else if("function"==typeof c.reduce){const e=c.reduce(n,null);isPromise(e)&&r.push(e)}else if(c.constructor==Object)for(const e in c)t.add(c[e]);else t.add(c);return 0==r.length?t:promiseAll(r).then((()=>t))},setFlatMap=function(e,r){const t=setMap(e,r);return isPromise(t)?t.then(setFlatten):setFlatten(t)},funcConcat=(e,r)=>function(...t){const n=e(...t);return isPromise(n)?n.then(r):r(n)},arrayJoin=(e,r)=>e.join(r),arrayFlattenToString=funcConcat(arrayFlatten,curry2(arrayJoin,__,"")),stringFlatMap=function(e,r){const t=arrayMap(e,r);return isPromise(t)?t.then(arrayFlattenToString):arrayFlattenToString(t)},streamWrite=function(e,r,t,n){return e.write(r,t,n),e},streamFlatExtend=async function(e,r){const t=curry2(streamWrite,e,__),n=funcConcatSync(getArg1,t),o=[];if(isArray(r)){const t=r.length;let n=-1;for(;++n<t;)e.write(r[n])}else if(null==r)e.write(r);else if("function"==typeof r[symbolIterator])for(const t of r)e.write(t);else if("function"==typeof r[symbolAsyncIterator])o.push(asyncIteratorForEach(r[symbolAsyncIterator](),t));else if("function"==typeof r.chain){const n=r.chain(identity);isPromise(n)?o.push(n.then(t)):e.write(n)}else if("function"==typeof r.flatMap){const n=r.flatMap(identity);isPromise(n)?o.push(n.then(t)):e.write(n)}else if("function"==typeof r.reduce){const e=r.reduce(n,null);isPromise(e)&&o.push(e)}else if(r.constructor==Object)for(const t in r)e.write(r[t]);else e.write(r);return 0==o.length?e:promiseAll(o).then(always(e))},streamFlatMap=async function(e,r){const t=new Set;for await(const n of e){const o=r(n);if(isPromise(o)){const r=o.then(curry2(streamFlatExtend,e,__)).then((()=>t.delete(r)));t.add(r)}else{const r=streamFlatExtend(e,o);if(isPromise(r)){const e=r.then((()=>t.delete(e)));t.add(e)}}}return await promiseAll(t),e},globalThisHasBuffer="function"==typeof Buffer,noop=function(){},bufferAlloc=globalThisHasBuffer?Buffer.alloc:noop,_binaryExtend=function(e,r){const t=e.length,n=globalThisHasBuffer&&e.constructor==Buffer?bufferAlloc(t+r.length):new e.constructor(t+r.length);return n.set(e),n.set(r,t),n},binaryExtend=function(e,r){return isArray(r)||isBinary(r)?_binaryExtend(e,r):_binaryExtend(e,[r])},arrayJoinToBinary=function(e,r){const t=e.length;let n=-1,o=r;for(;++n<t;)o=binaryExtend(o,e[n]);return o},arrayFlattenToBinary=function(e,r){const t=arrayFlatten(e);return isPromise(t)?t.then(curry2(arrayJoinToBinary,__,r)):arrayJoinToBinary(t,r)},binaryFlatMap=function(e,r){const t=arrayMap(e,r),n=globalThisHasBuffer&&e.constructor==Buffer?bufferAlloc(0):new e.constructor(0);return isPromise(t)?t.then(curry2(arrayFlattenToBinary,__,n)):arrayFlattenToBinary(t,n)},reducerFlatMap=(e,r)=>function(t,n){const o=r(n);return isPromise(o)?o.then(curryArgs3(genericReduce,__,e,t)):genericReduce([o],e,t)},generatorFunctionFlatMap=(e,r)=>function*(...t){yield*FlatMappingIterator(e(...t),r)},asyncGeneratorFunctionFlatMap=(e,r)=>async function*(...t){yield*FlatMappingAsyncIterator(e(...t),r)},flatMap=e=>function(r){if(isArray(r))return arrayFlatMap(r,e);if("function"==typeof r)return isGeneratorFunction(r)?generatorFunctionFlatMap(r,e):isAsyncGeneratorFunction(r)?asyncGeneratorFunctionFlatMap(r,e):reducerFlatMap(r,e);if(isBinary(r))return binaryFlatMap(r,e);if(null==r)return e(r);if("function"==typeof r.then)return r.then(e);if("function"==typeof r.next)return symbolIterator in r?FlatMappingIterator(r,e):FlatMappingAsyncIterator(r,e);if("function"==typeof r.chain)return r.chain(e);if("function"==typeof r.flatMap)return r.flatMap(e);if("function"==typeof r[symbolAsyncIterator]&&"function"==typeof r.write)return streamFlatMap(r,e);const t=r.constructor;return t==Object?objectFlatMap(r,e):t==Set?setFlatMap(r,e):"string"==typeof r||t==String?stringFlatMap(r,e):e(r)};export default flatMap;
|
|
7
|
+
const isPromise=r=>null!=r&&"function"==typeof r.then,isArray=Array.isArray,objectValues=Object.values,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,__=Symbol.for("placeholder"),curry3ResolveArg0=(r,e,t)=>function(n){return r(n,e,t)},curry3ResolveArg1=(r,e,t)=>function(n){return r(e,n,t)},curry3ResolveArg2=(r,e,t)=>function(n){return r(e,t,n)},curry3=function(r,e,t,n){return e==__?curry3ResolveArg0(r,t,n):t==__?curry3ResolveArg1(r,e,n):curry3ResolveArg2(r,e,t)},iteratorReduceAsync=async function(r,e,t){let n=r.next();if(n.done)return t;for(;!n.done;)t=e(t,n.value),isPromise(t)&&(t=await t),n=r.next();return t},iteratorReduce=function(r,e,t){let n=r.next();if(n.done)return t;for(void 0===t&&(t=n.value,n=r.next());!n.done;){if(t=e(t,n.value),isPromise(t))return t.then(curry3(iteratorReduceAsync,r,e,__));n=r.next()}return t},asyncIteratorReduce=async function(r,e,t){let n=await r.next();if(n.done)return t;for(void 0===t&&(t=n.value,n=await r.next());!n.done;)t=await e(t,n.value),n=await r.next();return t},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,curry2ResolveArg0=(r,e)=>function(t){return r(t,e)},curry2ResolveArg1=(r,e)=>function(t){return r(e,t)},curry2=function(r,e,t){return e==__?curry2ResolveArg0(r,t):curry2ResolveArg1(r,e)},curryArgs3ResolveArgs0=(r,e,t)=>function(...n){return r(n,e,t)},curryArgs3ResolveArgs1=(r,e,t)=>function(...n){return r(e,n,t)},curryArgs3ResolveArgs2=(r,e,t)=>function(...n){return r(e,t,n)},curryArgs3=function(r,e,t,n){return e==__?curryArgs3ResolveArgs0(r,t,n):t==__?curryArgs3ResolveArgs1(r,e,n):curryArgs3ResolveArgs2(r,e,t)},curry4ResolveArg0=(r,e,t,n)=>function(o){return r(o,e,t,n)},curry4ResolveArg1=(r,e,t,n)=>function(o){return r(e,o,t,n)},curry4ResolveArg2=(r,e,t,n)=>function(o){return r(e,t,o,n)},curry4ResolveArg3=(r,e,t,n)=>function(o){return r(e,t,n,o)},curry4=function(r,e,t,n,o){return e==__?curry4ResolveArg0(r,t,n,o):t==__?curry4ResolveArg1(r,e,n,o):n==__?curry4ResolveArg2(r,e,t,o):curry4ResolveArg3(r,e,t,n)},arrayReduceAsync=async function(r,e,t,n){const o=r.length;for(;++n<o;)t=e(t,r[n],n,r),isPromise(t)&&(t=await t);return t},arrayReduce=function(r,e,t){const n=r.length;let o=-1;for(void 0===t&&(t=r[++o]);++o<n;)if(t=e(t,r[o],o,r),isPromise(t))return t.then(curry4(arrayReduceAsync,r,e,__,o));return t},curry5ResolveArg0=(r,e,t,n,o)=>function(c){return r(c,e,t,n,o)},curry5ResolveArg1=(r,e,t,n,o)=>function(c){return r(e,c,t,n,o)},curry5ResolveArg2=(r,e,t,n,o)=>function(c){return r(e,t,c,n,o)},curry5ResolveArg3=(r,e,t,n,o)=>function(c){return r(e,t,n,c,o)},curry5ResolveArg4=(r,e,t,n,o)=>function(c){return r(e,t,n,o,c)},curry5=function(r,e,t,n,o,c){return e==__?curry5ResolveArg0(r,t,n,o,c):t==__?curry5ResolveArg1(r,e,n,o,c):n==__?curry5ResolveArg2(r,e,t,o,c):o==__?curry5ResolveArg3(r,e,t,n,c):curry5ResolveArg4(r,e,t,n,o)},objectKeys=Object.keys,objectReduceAsync=async function(r,e,t,n,o){const c=n.length;for(;++o<c;){const c=n[o];t=e(t,r[c],c,r),isPromise(t)&&(t=await t)}return t},objectReduce=function(r,e,t){const n=objectKeys(r),o=n.length;let c=-1;for(void 0===t&&(t=r[n[++c]]);++c<o;){const o=n[c];if(t=e(t,r[o],o,r),isPromise(t))return t.then((s=objectReduceAsync,u=e,a=__,l=n,y=c,(i=r)==__?curry5ResolveArg0(s,u,a,l,y):u==__?curry5ResolveArg1(s,i,a,l,y):a==__?curry5ResolveArg2(s,i,u,l,y):l==__?curry5ResolveArg3(s,i,u,a,y):curry5ResolveArg4(s,i,u,a,l)))}var s,i,u,a,l,y;return t},mapReduceAsync=async function(r,e,t,n){for(const[o,c]of n)t=e(t,c,o,r),isPromise(t)&&(t=await t);return t},mapReduce=function(r,e,t){const n=r.entries();if(void 0===t){const r=n.next();if(r.done)return t;t=r.value[1]}for(const[o,c]of n)if(t=e(t,c,o,r),isPromise(t))return t.then(curry4(mapReduceAsync,r,e,__,n));return t},reducerConcat=(r,e)=>function(t,n){const o=r(t,n);return isPromise(o)?o.then(curry2(e,__,n)):e(o,n)},genericReduce=function(r,e,t){return isArray(r)?arrayReduce(r,e,t):null==r?void 0===t?curry2(e,r,__):e(t,r):r.constructor==Map?mapReduce(r,e,t):"function"==typeof r[symbolIterator]?iteratorReduce(r[symbolIterator](),e,t):"function"==typeof r[symbolAsyncIterator]?asyncIteratorReduce(r[symbolAsyncIterator](),e,t):"function"==typeof r.reduce?r.reduce(e,t):"function"==typeof r.chain?r.chain(curry2(e,t,__)):"function"==typeof r.flatMap?r.flatMap(curry2(e,t,__)):r.constructor==Object?objectReduce(r,e,t):void 0===t?curry2(e,r,__):e(t,r)},arrayPush=function(r,e){return r.push(e),r},FlatMappingIterator=function(r,e){let t=[],n=0;return{[symbolIterator](){return this},next(){if(n<t.length){const r=t[n];return n+=1,{value:r,done:!1}}const o=r.next();if(o.done)return o;const c=genericReduce(e(o.value),arrayPush,[]);return c.length>1&&(t=c,n=1),{value:c[0],done:!1}}}},promiseRace=Promise.race.bind(Promise),sleep=r=>new Promise((e=>{setTimeout(e,r)})),FlatMappingAsyncIterator=function(r,e){const t=[],n=new Set;return{isAsyncIteratorDone:!1,[symbolAsyncIterator](){return this},toString:()=>"[object FlatMappingAsyncIterator]",async next(){for(;!this.isAsyncIteratorDone||t.length>0||n.size>0;){if(!this.isAsyncIteratorDone){const{value:o,done:c}=await r.next();if(c)this.isAsyncIteratorDone=c;else{const r=e(o);if(isPromise(r)){const e=r.then(curry3(genericReduce,__,arrayPush,t)).then((()=>n.delete(e)));n.add(e)}else{const e=genericReduce(r,arrayPush,t);if(isPromise(e)){const r=e.then((()=>n.delete(r)));n.add(r)}}}}if(t.length>0)return{value:t.shift(),done:!1};n.size>0&&await promiseRace([sleep(1e3),...n])}return{value:void 0,done:!0}}}},always=r=>function(){return r},getArg1=(r,e)=>e,identity=r=>r,promiseAll=Promise.all.bind(Promise),funcConcatSync=(r,e)=>function(...t){return e(r(...t))},asyncIteratorForEach=async function(r,e){const t=[];for await(const n of r){const r=e(n);isPromise(r)&&t.push(r)}return 0==t.length?r:promiseAll(t).then(always(r))},arrayFlatten=function(r){const e=r.length,t=[],n=[];let o=-1;for(;++o<e;){const e=r[o];if(isArray(e)){const r=e.length;let t=-1;for(;++t<r;)n.push(e[t])}else if(null==e)n.push(e);else if("function"==typeof e.then)t.push(e.then(curry2(arrayPush,n,__)));else if("function"==typeof e[symbolIterator])for(const r of e)n.push(r);else if("function"==typeof e[symbolAsyncIterator])t.push(asyncIteratorForEach(e[symbolAsyncIterator](),curry2(arrayPush,n,__)));else if("function"==typeof e.chain){const r=e.chain(identity);isPromise(r)?t.push(r.then(curry2(arrayPush,n,__))):n.push(r)}else if("function"==typeof e.flatMap){const r=e.flatMap(identity);isPromise(r)?t.push(r.then(curry2(arrayPush,n,__))):n.push(r)}else if("function"==typeof e.reduce){const r=e.reduce(funcConcatSync(getArg1,curry2(arrayPush,n,__)),null);isPromise(r)&&t.push(r)}else if(e.constructor==Object)for(const r in e)n.push(e[r]);else n.push(e)}return 0==t.length?n:promiseAll(t).then(always(n))},arrayMap=function(r,e){const t=r.length,n=Array(t);let o=-1,c=!1;for(;++o<t;){const t=e(r[o],o,r);isPromise(t)&&(c=!0),n[o]=t}return c?promiseAll(n):n},arrayFlatMap=function(r,e){const t=arrayMap(r,e);return isPromise(t)?t.then(arrayFlatten):arrayFlatten(t)},promiseObjectAllExecutor=r=>function(e){const t={};let n=0;for(const o in r){const c=r[o];isPromise(c)?(n+=1,c.then((r=>function(o){t[r]=o,n-=1,0==n&&e(t)})(o))):t[o]=c}0==n&&e(t)},promiseObjectAll=r=>new Promise(promiseObjectAllExecutor(r)),objectMap=function(r,e){const t={};let n=!1;for(const o in r){const c=e(r[o],o,r);isPromise(c)&&(n=!0),t[o]=c}return n?promiseObjectAll(t):t},objectAssign=Object.assign,objectFlatten=function(r){const e=[],t={},n=curry2(objectAssign,t,__),o=funcConcatSync(getArg1,n);for(const c in r){const s=r[c];if(null!=s)if("function"==typeof s[symbolIterator])for(const r of s)objectAssign(t,r);else if("function"==typeof s[symbolAsyncIterator])e.push(asyncIteratorForEach(s[symbolAsyncIterator](),n));else if("function"==typeof s.chain){const r=s.chain(identity);isPromise(r)?e.push(r.then(n)):objectAssign(t,r)}else if("function"==typeof s.flatMap){const r=s.flatMap(identity);isPromise(r)?e.push(r.then(n)):n(r)}else if("function"==typeof s.reduce){const r=s.reduce(o,null);isPromise(r)&&e.push(r)}else objectAssign(t,s)}return 0==e.length?t:promiseAll(e).then((()=>t))},objectFlatMap=function(r,e){const t=objectMap(r,e);return isPromise(t)?t.then(objectFlatten):objectFlatten(t)},callPropUnary=(r,e,t)=>r[e](t),setMap=function(r,e){const t=new Set,n=[];for(const o of r){const c=e(o,o,r);isPromise(c)?n.push(c.then(curry3(callPropUnary,t,"add",__))):t.add(c)}return 0==n.length?t:promiseAll(n).then(always(t))},setFlatten=function(r){r.size;const e=[],t=new Set,n=(r,e)=>t.add(e),o=curry3(callPropUnary,t,"add",__);for(const c of r)if(isArray(c)){const r=c.length;let e=-1;for(;++e<r;)t.add(c[e])}else if(null==c)t.add(c);else if("function"==typeof c[symbolIterator])for(const r of c)t.add(r);else if("function"==typeof c[symbolAsyncIterator])e.push(asyncIteratorForEach(c[symbolAsyncIterator](),o));else if("function"==typeof c.chain){const r=c.chain(identity);isPromise(r)?e.push(r.then(o)):t.add(r)}else if("function"==typeof c.flatMap){const r=c.flatMap(identity);isPromise(r)?e.push(r.then(o)):t.add(r)}else if("function"==typeof c.reduce){const r=c.reduce(n,null);isPromise(r)&&e.push(r)}else if(c.constructor==Object)for(const r in c)t.add(c[r]);else t.add(c);return 0==e.length?t:promiseAll(e).then((()=>t))},setFlatMap=function(r,e){const t=setMap(r,e);return isPromise(t)?t.then(setFlatten):setFlatten(t)},funcConcat=(r,e)=>function(...t){const n=r(...t);return isPromise(n)?n.then(e):e(n)},arrayJoin=(r,e)=>r.join(e),arrayFlattenToString=funcConcat(arrayFlatten,curry2(arrayJoin,__,"")),stringFlatMap=function(r,e){const t=arrayMap(r,e);return isPromise(t)?t.then(arrayFlattenToString):arrayFlattenToString(t)},_flatMap=function(r,e){if(isArray(r))return arrayFlatMap(r,e);if(null==r)return e(r);if("function"==typeof r.then)return r.then(e);if("function"==typeof r.next)return symbolIterator in r?FlatMappingIterator(r,e):FlatMappingAsyncIterator(r,e);if("function"==typeof r.chain)return r.chain(e);if("function"==typeof r.flatMap)return r.flatMap(e);const t=r.constructor;return t==Object?objectFlatMap(r,e):t==Set?setFlatMap(r,e):"string"==typeof r||t==String?stringFlatMap(r,e):e(r)},flatMap=(...r)=>{const e=r.pop();if(0==r.length)return curry2(_flatMap,__,e);const t=r[0];return isPromise(t)?t.then(curry2(_flatMap,__,e)):_flatMap(r[0],e)};export default flatMap;
|