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/every.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
const isPromise = require('./_internal/isPromise')
|
|
2
|
+
const __ = require('./_internal/placeholder')
|
|
3
|
+
const curry2 = require('./_internal/curry2')
|
|
4
|
+
const isArray = require('./_internal/isArray')
|
|
5
|
+
const arrayEvery = require('./_internal/arrayEvery')
|
|
6
|
+
const iteratorEvery = require('./_internal/iteratorEvery')
|
|
7
|
+
const asyncIteratorEvery = require('./_internal/asyncIteratorEvery')
|
|
8
|
+
const objectValues = require('./_internal/objectValues')
|
|
9
|
+
const reducerEvery = require('./_internal/reducerEvery')
|
|
10
|
+
const symbolIterator = require('./_internal/symbolIterator')
|
|
11
|
+
const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
12
|
+
|
|
13
|
+
// _every(collection Array|Iterable|AsyncIterable|{ reduce: function }|Object, predicate function) -> Promise|boolean
|
|
14
|
+
const _every = function (collection, predicate) {
|
|
15
|
+
if (isArray(collection)) {
|
|
16
|
+
return arrayEvery(collection, predicate)
|
|
17
|
+
}
|
|
18
|
+
if (collection == null) {
|
|
19
|
+
return predicate(collection)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (typeof collection[symbolIterator] == 'function') {
|
|
23
|
+
return iteratorEvery(collection[symbolIterator](), predicate)
|
|
24
|
+
}
|
|
25
|
+
if (typeof collection[symbolAsyncIterator] == 'function') {
|
|
26
|
+
return asyncIteratorEvery(
|
|
27
|
+
collection[symbolAsyncIterator](), predicate, new Set()
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
if (typeof collection.reduce == 'function') {
|
|
31
|
+
return collection.reduce(reducerEvery(predicate), true)
|
|
32
|
+
}
|
|
33
|
+
if (collection.constructor == Object) {
|
|
34
|
+
return arrayEvery(objectValues(collection), predicate)
|
|
35
|
+
}
|
|
36
|
+
return predicate(collection)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @name every
|
|
41
|
+
*
|
|
42
|
+
* @synopsis
|
|
43
|
+
* ```coffeescript [specscript]
|
|
44
|
+
* type Foldable = Array|Iterable|AsyncIterable|{ reduce: function }|Object
|
|
45
|
+
*
|
|
46
|
+
* every(collection Foldable, predicate function) -> result Promise|boolean
|
|
47
|
+
*
|
|
48
|
+
* every(predicate function)(collection Foldable) -> result Promise|boolean
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @description
|
|
52
|
+
* Test a predicate concurrently across all items of a collection, returning true if all predications are truthy.
|
|
53
|
+
*
|
|
54
|
+
* ```javascript [playground]
|
|
55
|
+
* const isOdd = number => number % 2 == 1
|
|
56
|
+
*
|
|
57
|
+
* console.log(
|
|
58
|
+
* every(isOdd)([1, 2, 3, 4, 5]),
|
|
59
|
+
* ) // false
|
|
60
|
+
*
|
|
61
|
+
* console.log(
|
|
62
|
+
* every(isOdd)([1, 3, 5]),
|
|
63
|
+
* ) // true
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* The collection can be any iterable, async iterable, or object values iterable collection. Below is an example of `every` accepting an async generator as the collection.
|
|
67
|
+
*
|
|
68
|
+
* ```javascript [playground]
|
|
69
|
+
* const asyncNumbers = async function* () {
|
|
70
|
+
* yield 1; yield 2; yield 3; yield 4; yield 5
|
|
71
|
+
* }
|
|
72
|
+
*
|
|
73
|
+
* every(async number => number < 6)(asyncNumbers()).then(console.log) // true
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* @execution concurrent
|
|
77
|
+
*
|
|
78
|
+
* @muxing
|
|
79
|
+
*/
|
|
80
|
+
const every = function (...args) {
|
|
81
|
+
const predicate = args.pop()
|
|
82
|
+
if (args.length == 0) {
|
|
83
|
+
return curry2(_every, __, predicate)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const collection = args[0]
|
|
87
|
+
if (isPromise(collection)) {
|
|
88
|
+
return collection.then(curry2(_every, __, predicate))
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return _every(collection, predicate)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
module.exports = every
|
package/filter.js
CHANGED
|
@@ -3,17 +3,11 @@ const curry2 = require('./_internal/curry2')
|
|
|
3
3
|
const FilteringIterator = require('./_internal/FilteringIterator')
|
|
4
4
|
const FilteringAsyncIterator = require('./_internal/FilteringAsyncIterator')
|
|
5
5
|
const isArray = require('./_internal/isArray')
|
|
6
|
-
const isGeneratorFunction = require('./_internal/isGeneratorFunction')
|
|
7
|
-
const isAsyncGeneratorFunction = require('./_internal/isAsyncGeneratorFunction')
|
|
8
6
|
const arrayFilter = require('./_internal/arrayFilter')
|
|
9
|
-
const generatorFunctionFilter = require('./_internal/generatorFunctionFilter')
|
|
10
|
-
const asyncGeneratorFunctionFilter = require('./_internal/asyncGeneratorFunctionFilter')
|
|
11
|
-
const reducerFilter = require('./_internal/reducerFilter')
|
|
12
7
|
const stringFilter = require('./_internal/stringFilter')
|
|
13
8
|
const setFilter = require('./_internal/setFilter')
|
|
14
9
|
const mapFilter = require('./_internal/mapFilter')
|
|
15
10
|
const objectFilter = require('./_internal/objectFilter')
|
|
16
|
-
const arrayFilterWithIndex = require('./_internal/arrayFilterWithIndex')
|
|
17
11
|
const symbolIterator = require('./_internal/symbolIterator')
|
|
18
12
|
const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
19
13
|
|
|
@@ -62,15 +56,6 @@ const _filter = function (value, predicate) {
|
|
|
62
56
|
if (isArray(value)) {
|
|
63
57
|
return arrayFilter(value, predicate)
|
|
64
58
|
}
|
|
65
|
-
if (typeof value == 'function') {
|
|
66
|
-
if (isGeneratorFunction(value)) {
|
|
67
|
-
return generatorFunctionFilter(value, predicate)
|
|
68
|
-
}
|
|
69
|
-
if (isAsyncGeneratorFunction(value)) {
|
|
70
|
-
return asyncGeneratorFunctionFilter(value, predicate)
|
|
71
|
-
}
|
|
72
|
-
return reducerFilter(value, predicate)
|
|
73
|
-
}
|
|
74
59
|
if (value == null) {
|
|
75
60
|
return value
|
|
76
61
|
}
|
|
@@ -104,39 +89,20 @@ const _filter = function (value, predicate) {
|
|
|
104
89
|
*
|
|
105
90
|
* @synopsis
|
|
106
91
|
* ```coffeescript [specscript]
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
* filter(
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
* filter(
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
* mapPredicate (value any, key any, map Map)=>Promise|boolean
|
|
123
|
-
*
|
|
124
|
-
* filter(mapPredicate)(map Map) -> filteredMap Promise|Map
|
|
125
|
-
* filter(map Map, mapPredicate) -> filteredMap Promise|Map
|
|
126
|
-
*
|
|
127
|
-
* iteratorPredicate (value any)=>any
|
|
128
|
-
*
|
|
129
|
-
* filter(iteratorPredicate)(iterator Iterator|Generator)
|
|
130
|
-
* -> filteredIterator Iterator|Generator
|
|
131
|
-
* filter(iterator Iterator|Generator, iteratorPredicate)
|
|
132
|
-
* -> filteredIterator Iterator|Generator
|
|
133
|
-
*
|
|
134
|
-
* asyncIteratorPredicate (value any)=>Promise|any
|
|
135
|
-
*
|
|
136
|
-
* filter(asyncIteratorPredicate)(asyncIterator AsyncIterator|AsyncGenerator)
|
|
137
|
-
* -> filteredAsyncIterator AsyncIterator|AsyncGenerator
|
|
138
|
-
* filter(asyncIterator AsyncIterator|AsyncGenerator, asyncIteratorPredicate)
|
|
139
|
-
* -> filteredAsyncIterator AsyncIterator|AsyncGenerator
|
|
92
|
+
* type Filterable = Array|Object|Set|Map|Iterator|AsyncIterator
|
|
93
|
+
* type Predicate = (
|
|
94
|
+
* value any,
|
|
95
|
+
* indexOrKey? number|string,
|
|
96
|
+
* collection? Filterable,
|
|
97
|
+
* )=>boolean
|
|
98
|
+
*
|
|
99
|
+
* filter(
|
|
100
|
+
* collection Filterable,
|
|
101
|
+
* predicate Predicate
|
|
102
|
+
* ) -> result Promise|Filterable
|
|
103
|
+
*
|
|
104
|
+
* filter(predicate Predicate)(collection Filterable)
|
|
105
|
+
* -> result Promise|Filterable
|
|
140
106
|
* ```
|
|
141
107
|
*
|
|
142
108
|
* @description
|
|
@@ -149,7 +115,7 @@ const _filter = function (value, predicate) {
|
|
|
149
115
|
* * `Iterator`/`Generator`
|
|
150
116
|
* * `AsyncIterator`/`AsyncGenerator`
|
|
151
117
|
*
|
|
152
|
-
*
|
|
118
|
+
* For arrays (type `Array`), `filter` applies the predicate function to each item of the array, returning a new array containing only the items that tested truthy by the predicate. The order of the items is preserved. On each iteration, the predicate is passed the item, the index of the item, and a reference to the array.
|
|
153
119
|
*
|
|
154
120
|
* ```javascript [playground]
|
|
155
121
|
* const isOdd = number => number % 2 == 1
|
|
@@ -160,7 +126,7 @@ const _filter = function (value, predicate) {
|
|
|
160
126
|
* console.log(filter(array, isOdd)) // [1, 3, 5]
|
|
161
127
|
* ```
|
|
162
128
|
*
|
|
163
|
-
*
|
|
129
|
+
* For objects (type `Object`), `filter` applies the predicate function to each value of the object, returning a new object containing only the values that tested truthy by the predicate. On each iteration, the predicate is passed the object value, the key of the object value, and a reference to the object.
|
|
164
130
|
*
|
|
165
131
|
* ```javascript [playground]
|
|
166
132
|
* const isOdd = number => number % 2 == 1
|
|
@@ -171,7 +137,7 @@ const _filter = function (value, predicate) {
|
|
|
171
137
|
* console.log(filter(obj, isOdd)) // { a: 1, c: 3, e: 5 }
|
|
172
138
|
* ```
|
|
173
139
|
*
|
|
174
|
-
*
|
|
140
|
+
* For sets (type `Set`), `filter` applies the predicate function to each item in the set, returning a new set containing only the items that tested truthy by the predicate. On each iteration, the predicate is passed the item, the same item as the key argument, and a reference to the set.
|
|
175
141
|
*
|
|
176
142
|
* ```javascript [playground]
|
|
177
143
|
* const isOdd = number => number % 2 == 1
|
|
@@ -182,7 +148,7 @@ const _filter = function (value, predicate) {
|
|
|
182
148
|
* console.log(filter(set, isOdd)) // Set { 1, 3, 5 }
|
|
183
149
|
* ```
|
|
184
150
|
*
|
|
185
|
-
*
|
|
151
|
+
* For maps (type `Map`), `filter` applies the predicate function to the value of each entry of the map, returning a new map containing only the entries where the values tested truthy by the predicate. The order of the entries are preserved. On each iteration, the predicate is passed the map value, the key of the value, and a reference to the map.
|
|
186
152
|
*
|
|
187
153
|
* ```javascript [playground]
|
|
188
154
|
* const isOdd = number => number % 2 == 1
|
|
@@ -194,7 +160,7 @@ const _filter = function (value, predicate) {
|
|
|
194
160
|
* console.log(filter(m, isOdd)) // Map(3) { 'a' => 1, 'c' => 3, 'e' => 5 }
|
|
195
161
|
* ```
|
|
196
162
|
*
|
|
197
|
-
*
|
|
163
|
+
* For iterators (type `Iterator`) or generators (type `Generator`), `filter` returns a lazily filtered iterator/generator; all values that are normally yielded by the iterator/generator that test falsy by the predicate function are skipped by the lazily filtered iterator/generator. On each iteration, the predicate is passed the iteration value only.
|
|
198
164
|
*
|
|
199
165
|
* ```javascript [playground]
|
|
200
166
|
* const isOdd = number => number % 2 == 1
|
|
@@ -228,7 +194,7 @@ const _filter = function (value, predicate) {
|
|
|
228
194
|
* }
|
|
229
195
|
* ```
|
|
230
196
|
*
|
|
231
|
-
* With asyncIterators (type `AsyncIterator`) or asyncGenerators (type `AsyncGenerator`), `filter` returns a lazily filtered asyncIterator/asyncGenerator; all values that are normally yielded by the asyncIterator/asyncGenerator that test falsy by the predicate function are skipped by the lazily filtered asyncIterator/asyncGenerator.
|
|
197
|
+
* With asyncIterators (type `AsyncIterator`) or asyncGenerators (type `AsyncGenerator`), `filter` returns a lazily filtered asyncIterator/asyncGenerator; all values that are normally yielded by the asyncIterator/asyncGenerator that test falsy by the predicate function are skipped by the lazily filtered asyncIterator/asyncGenerator. On each iteration, the predicate is passed the iteration value only.
|
|
232
198
|
*
|
|
233
199
|
* ```javascript [playground]
|
|
234
200
|
* const asyncIsOdd = async number => number % 2 == 1
|
|
@@ -271,44 +237,10 @@ const _filter = function (value, predicate) {
|
|
|
271
237
|
|
|
272
238
|
const filter = function (...args) {
|
|
273
239
|
const predicate = args.pop()
|
|
274
|
-
if (args.length
|
|
275
|
-
return _filter
|
|
276
|
-
}
|
|
277
|
-
return curry2(_filter, __, predicate)
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* @name filter.withIndex
|
|
282
|
-
*
|
|
283
|
-
* @synopsis
|
|
284
|
-
* ```coffeescript [specscript]
|
|
285
|
-
* filter.withIndex(
|
|
286
|
-
* indexedPredicate (item any, index number, array Array)=>Promise|boolean
|
|
287
|
-
* )(array Array) -> result Array
|
|
288
|
-
* ```
|
|
289
|
-
*
|
|
290
|
-
* @description
|
|
291
|
-
* `filter` with each predicate call supplemented by index and reference to original collection.
|
|
292
|
-
*
|
|
293
|
-
* ```javascript [playground]
|
|
294
|
-
* const uniq = filter.withIndex(
|
|
295
|
-
* (item, index, array) => item !== array[index + 1]
|
|
296
|
-
* )
|
|
297
|
-
*
|
|
298
|
-
* console.log(
|
|
299
|
-
* uniq([1, 1, 1, 2, 2, 2, 3, 3, 3]),
|
|
300
|
-
* ) // [1, 2, 3]
|
|
301
|
-
* ```
|
|
302
|
-
*
|
|
303
|
-
* @DEPRECATED
|
|
304
|
-
*
|
|
305
|
-
* @execution concurrent
|
|
306
|
-
*/
|
|
307
|
-
filter.withIndex = predicate => function filteringWithIndex(value) {
|
|
308
|
-
if (isArray(value)) {
|
|
309
|
-
return arrayFilterWithIndex(value, predicate)
|
|
240
|
+
if (args.length == 0) {
|
|
241
|
+
return curry2(_filter, __, predicate)
|
|
310
242
|
}
|
|
311
|
-
|
|
243
|
+
return _filter(args[0], predicate)
|
|
312
244
|
}
|
|
313
245
|
|
|
314
246
|
module.exports = filter
|
package/flatMap.js
CHANGED
|
@@ -1,36 +1,83 @@
|
|
|
1
|
+
const isPromise = require('./_internal/isPromise')
|
|
1
2
|
const FlatMappingIterator = require('./_internal/FlatMappingIterator')
|
|
2
3
|
const FlatMappingAsyncIterator = require('./_internal/FlatMappingAsyncIterator')
|
|
3
4
|
const isArray = require('./_internal/isArray')
|
|
4
|
-
const isGeneratorFunction = require('./_internal/isGeneratorFunction')
|
|
5
|
-
const isAsyncGeneratorFunction = require('./_internal/isAsyncGeneratorFunction')
|
|
6
|
-
const isBinary = require('./_internal/isBinary')
|
|
7
5
|
const arrayFlatMap = require('./_internal/arrayFlatMap')
|
|
8
6
|
const objectFlatMap = require('./_internal/objectFlatMap')
|
|
9
7
|
const setFlatMap = require('./_internal/setFlatMap')
|
|
10
8
|
const stringFlatMap = require('./_internal/stringFlatMap')
|
|
11
|
-
const streamFlatMap = require('./_internal/streamFlatMap')
|
|
12
|
-
const binaryFlatMap = require('./_internal/binaryFlatMap')
|
|
13
|
-
const reducerFlatMap = require('./_internal/reducerFlatMap')
|
|
14
|
-
const generatorFunctionFlatMap = require('./_internal/generatorFunctionFlatMap')
|
|
15
|
-
const asyncGeneratorFunctionFlatMap = require('./_internal/asyncGeneratorFunctionFlatMap')
|
|
16
9
|
const symbolIterator = require('./_internal/symbolIterator')
|
|
17
|
-
const
|
|
10
|
+
const curry2 = require('./_internal/curry2')
|
|
11
|
+
const __ = require('./_internal/placeholder')
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @name _flatMap
|
|
15
|
+
*
|
|
16
|
+
* @synopsis
|
|
17
|
+
* ```coffeescript [specscript]
|
|
18
|
+
* type FlatMappable = Array|String|Set|Iterator|AsyncIterator
|
|
19
|
+
* type Iterable = Iterable|AsyncIterable|Object<value any>
|
|
20
|
+
*
|
|
21
|
+
* _flatMap(
|
|
22
|
+
* value FlatMappable,
|
|
23
|
+
* flatMapper (item any)=>Promise|Iterable,
|
|
24
|
+
* ) -> result Promise|FlatMappable
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
const _flatMap = function (value, flatMapper) {
|
|
28
|
+
if (isArray(value)) {
|
|
29
|
+
return arrayFlatMap(value, flatMapper)
|
|
30
|
+
}
|
|
31
|
+
if (value == null) {
|
|
32
|
+
return flatMapper(value)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (typeof value.then == 'function') {
|
|
36
|
+
return value.then(flatMapper)
|
|
37
|
+
}
|
|
38
|
+
if (typeof value.next == 'function') {
|
|
39
|
+
return symbolIterator in value
|
|
40
|
+
? FlatMappingIterator(value, flatMapper)
|
|
41
|
+
: FlatMappingAsyncIterator(value, flatMapper)
|
|
42
|
+
}
|
|
43
|
+
if (typeof value.chain == 'function') {
|
|
44
|
+
return value.chain(flatMapper)
|
|
45
|
+
}
|
|
46
|
+
if (typeof value.flatMap == 'function') {
|
|
47
|
+
return value.flatMap(flatMapper)
|
|
48
|
+
}
|
|
49
|
+
const valueConstructor = value.constructor
|
|
50
|
+
if (valueConstructor == Object) {
|
|
51
|
+
return objectFlatMap(value, flatMapper)
|
|
52
|
+
}
|
|
53
|
+
if (valueConstructor == Set) {
|
|
54
|
+
return setFlatMap(value, flatMapper)
|
|
55
|
+
}
|
|
56
|
+
if (typeof value == 'string' || valueConstructor == String) {
|
|
57
|
+
return stringFlatMap(value, flatMapper)
|
|
58
|
+
}
|
|
59
|
+
return flatMapper(value)
|
|
60
|
+
}
|
|
18
61
|
|
|
19
62
|
/**
|
|
20
63
|
* @name flatMap
|
|
21
64
|
*
|
|
22
65
|
* @synopsis
|
|
23
66
|
* ```coffeescript [specscript]
|
|
24
|
-
* type
|
|
25
|
-
* type
|
|
67
|
+
* type FlatMappable = Array|String|Set|Iterator|AsyncIterator
|
|
68
|
+
* type Iterable = Iterable|AsyncIterable|Object<value any>
|
|
26
69
|
*
|
|
27
70
|
* flatMap(
|
|
28
|
-
*
|
|
29
|
-
*
|
|
71
|
+
* collection FlatMappable,
|
|
72
|
+
* flatMapper (item any)=>Promise|Iterable,
|
|
73
|
+
* ) -> result Promise|FlatMappable
|
|
74
|
+
*
|
|
75
|
+
* flatMap(flatMapper (item any)=>Promise|Iterable)(collection FlatMappable)
|
|
76
|
+
* -> result Promise|FlatMappable
|
|
30
77
|
* ```
|
|
31
78
|
*
|
|
32
79
|
* @description
|
|
33
|
-
* Applies a
|
|
80
|
+
* Applies a flatMapper function concurrently to each item of a collection, creating a new collection of the same type. A flatMapping operation iterates through each item of a collection and applies the flatMapper function to each item, flattening the result of the execution into the result collection. The result of an individual execution can be any iterable, async iterable, or object values iterable collection. The flatMapper function may be asynchronous.
|
|
34
81
|
*
|
|
35
82
|
* * `Iterable` - the execution result is iterated and each item is added to the result collection
|
|
36
83
|
* * `AsyncIterable` - the execution result is asynchronously iterated and each item is added to the result collection
|
|
@@ -52,7 +99,7 @@ const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
|
52
99
|
* // [1, 1, 2, 3, 3, 5, 5, 8, 7, 7]
|
|
53
100
|
* ```
|
|
54
101
|
*
|
|
55
|
-
* A flatMapping operation concatenates onto the
|
|
102
|
+
* A flatMapping operation concatenates onto the resulting collection synchronous values and muxes any asynchronous values. Muxing, or asynchronously "mixing", is the process of combining multiple asynchronous sources into one source, with order determined by the asynchronous resolution of the individual items.
|
|
56
103
|
*
|
|
57
104
|
* ```javascript [playground]
|
|
58
105
|
* const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
|
|
@@ -62,7 +109,7 @@ const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
|
62
109
|
* }
|
|
63
110
|
*
|
|
64
111
|
* console.log( // sync is concatenated
|
|
65
|
-
* flatMap(
|
|
112
|
+
* flatMap(['foo', 'bar', 'baz'], repeat3),
|
|
66
113
|
* ) // ['foo', 'foo', 'foo', 'bar', 'bar', 'bar', 'baz', 'baz', 'baz']
|
|
67
114
|
*
|
|
68
115
|
* const asyncRepeat3 = async function* (message) {
|
|
@@ -74,7 +121,7 @@ const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
|
74
121
|
* }
|
|
75
122
|
*
|
|
76
123
|
* // async is muxed
|
|
77
|
-
* flatMap(
|
|
124
|
+
* flatMap(['foo', 'bar', 'baz'], asyncRepeat3).then(console.log)
|
|
78
125
|
* // ['foo', 'bar', 'baz', 'foo', 'bar', 'baz', 'foo', 'bar', 'baz']
|
|
79
126
|
* ```
|
|
80
127
|
*
|
|
@@ -84,7 +131,7 @@ const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
|
84
131
|
* const duplicate = value => [value, value]
|
|
85
132
|
*
|
|
86
133
|
* console.log(
|
|
87
|
-
* flatMap(
|
|
134
|
+
* flatMap([1, 2, 3, 4, 5], duplicate)
|
|
88
135
|
* ) // [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
|
|
89
136
|
* ```
|
|
90
137
|
*
|
|
@@ -94,7 +141,7 @@ const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
|
94
141
|
* const duplicate = value => [value, value]
|
|
95
142
|
*
|
|
96
143
|
* console.log(
|
|
97
|
-
* flatMap(
|
|
144
|
+
* flatMap('12345', duplicate)
|
|
98
145
|
* ) // 1122334455
|
|
99
146
|
* ```
|
|
100
147
|
*
|
|
@@ -104,7 +151,7 @@ const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
|
104
151
|
* const pairPlus100 = value => [value, value + 100]
|
|
105
152
|
*
|
|
106
153
|
* console.log(
|
|
107
|
-
* flatMap(
|
|
154
|
+
* flatMap(new Set([1, 2, 3, 4, 5]), pairPlus100)
|
|
108
155
|
* ) // Set(10) { 1, 101, 2, 102, 3, 103, 4, 104, 5, 105 }
|
|
109
156
|
* ```
|
|
110
157
|
*
|
|
@@ -117,57 +164,15 @@ const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
|
117
164
|
*
|
|
118
165
|
* * For Node.js duplex streams (type [Stream](https://nodejs.org/api/stream.html#class-streamduplex)), `flatMap` applies a flatMapper function to each item of the stream, writing (`.write`) each item of each execution into the duplex stream
|
|
119
166
|
*/
|
|
120
|
-
const flatMap =
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if (typeof value == 'function') {
|
|
125
|
-
if (isGeneratorFunction(value)) {
|
|
126
|
-
return generatorFunctionFlatMap(value, flatMapper)
|
|
127
|
-
}
|
|
128
|
-
if (isAsyncGeneratorFunction(value)) {
|
|
129
|
-
return asyncGeneratorFunctionFlatMap(value, flatMapper)
|
|
130
|
-
}
|
|
131
|
-
return reducerFlatMap(value, flatMapper)
|
|
132
|
-
}
|
|
133
|
-
if (isBinary(value)) {
|
|
134
|
-
return binaryFlatMap(value, flatMapper)
|
|
135
|
-
}
|
|
136
|
-
if (value == null) {
|
|
137
|
-
return flatMapper(value)
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
if (typeof value.then == 'function') {
|
|
141
|
-
return value.then(flatMapper)
|
|
142
|
-
}
|
|
143
|
-
if (typeof value.next == 'function') {
|
|
144
|
-
return symbolIterator in value
|
|
145
|
-
? FlatMappingIterator(value, flatMapper)
|
|
146
|
-
: FlatMappingAsyncIterator(value, flatMapper)
|
|
147
|
-
}
|
|
148
|
-
if (typeof value.chain == 'function') {
|
|
149
|
-
return value.chain(flatMapper)
|
|
150
|
-
}
|
|
151
|
-
if (typeof value.flatMap == 'function') {
|
|
152
|
-
return value.flatMap(flatMapper)
|
|
153
|
-
}
|
|
154
|
-
if (
|
|
155
|
-
typeof value[symbolAsyncIterator] == 'function'
|
|
156
|
-
&& typeof value.write == 'function'
|
|
157
|
-
) {
|
|
158
|
-
return streamFlatMap(value, flatMapper)
|
|
167
|
+
const flatMap = (...args) => {
|
|
168
|
+
const flatMapper = args.pop()
|
|
169
|
+
if (args.length == 0) {
|
|
170
|
+
return curry2(_flatMap, __, flatMapper)
|
|
159
171
|
}
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
if (valueConstructor == Set) {
|
|
165
|
-
return setFlatMap(value, flatMapper)
|
|
166
|
-
}
|
|
167
|
-
if (typeof value == 'string' || valueConstructor == String) {
|
|
168
|
-
return stringFlatMap(value, flatMapper)
|
|
169
|
-
}
|
|
170
|
-
return flatMapper(value)
|
|
172
|
+
const collection = args[0]
|
|
173
|
+
return isPromise(collection)
|
|
174
|
+
? collection.then(curry2(_flatMap, __, flatMapper))
|
|
175
|
+
: _flatMap(args[0], flatMapper)
|
|
171
176
|
}
|
|
172
177
|
|
|
173
178
|
module.exports = flatMap
|
package/forEach.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
const isPromise = require('./_internal/isPromise')
|
|
2
|
+
const __ = require('./_internal/placeholder')
|
|
3
|
+
const curry2 = require('./_internal/curry2')
|
|
4
|
+
const isArray = require('./_internal/isArray')
|
|
5
|
+
const isGeneratorFunction = require('./_internal/isGeneratorFunction')
|
|
6
|
+
const isAsyncGeneratorFunction = require('./_internal/isAsyncGeneratorFunction')
|
|
7
|
+
const arrayForEach = require('./_internal/arrayForEach')
|
|
8
|
+
const objectForEach = require('./_internal/objectForEach')
|
|
9
|
+
const iteratorForEach = require('./_internal/iteratorForEach')
|
|
10
|
+
const asyncIteratorForEach = require('./_internal/asyncIteratorForEach')
|
|
11
|
+
const symbolIterator = require('./_internal/symbolIterator')
|
|
12
|
+
const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
13
|
+
|
|
14
|
+
// type Collection = Array|Iterable|AsyncIterable|{ forEach: function }|Object
|
|
15
|
+
// _forEach(collection Collection, callback function) -> collection Collection
|
|
16
|
+
const _forEach = function (collection, callback) {
|
|
17
|
+
if (isArray(collection)) {
|
|
18
|
+
return arrayForEach(collection, callback)
|
|
19
|
+
}
|
|
20
|
+
if (collection == null) {
|
|
21
|
+
return collection
|
|
22
|
+
}
|
|
23
|
+
if (typeof collection.forEach == 'function') {
|
|
24
|
+
return collection.forEach(callback)
|
|
25
|
+
}
|
|
26
|
+
if (typeof collection[symbolIterator] == 'function') {
|
|
27
|
+
return iteratorForEach(collection[symbolIterator](), callback)
|
|
28
|
+
}
|
|
29
|
+
if (typeof collection[symbolAsyncIterator] == 'function') {
|
|
30
|
+
return asyncIteratorForEach(collection[symbolAsyncIterator](), callback)
|
|
31
|
+
}
|
|
32
|
+
if (collection.constructor == Object) {
|
|
33
|
+
return objectForEach(collection, callback)
|
|
34
|
+
}
|
|
35
|
+
return collection
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @name forEach
|
|
40
|
+
*
|
|
41
|
+
* @synopsis
|
|
42
|
+
* ```coffeescript [specscript]
|
|
43
|
+
* type Collection = Array|Iterable|AsyncIterable|{ forEach: function }|Object
|
|
44
|
+
*
|
|
45
|
+
* forEach(collection Collection, callback function) -> collection Collection
|
|
46
|
+
*
|
|
47
|
+
* forEach(callback function)(collection Collection) -> collection Collection
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* @description
|
|
51
|
+
* Execute a callback for each item of a collection, returning a Promise if the execution is asynchronous.
|
|
52
|
+
*
|
|
53
|
+
* ```javascript [playground]
|
|
54
|
+
* forEach([1, 2, 3, 4, 5l], console.log) // 1 2 3 4 5
|
|
55
|
+
*
|
|
56
|
+
* forEach({ a: 1, b: 2, c: 3 }, console.log) // 1 2 3
|
|
57
|
+
* ```
|
|
58
|
+
*
|
|
59
|
+
* Omit the data argument for a composable API
|
|
60
|
+
*
|
|
61
|
+
* ```javascript [playground]
|
|
62
|
+
* pipe([1, 2, 3, 4, 5], [
|
|
63
|
+
* filter(number => number % 2 == 1),
|
|
64
|
+
* map(number => number ** 2),
|
|
65
|
+
* forEach(console.log), // 1
|
|
66
|
+
* // 9
|
|
67
|
+
* // 25
|
|
68
|
+
* ])
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
const forEach = function (...args) {
|
|
72
|
+
const callback = args.pop()
|
|
73
|
+
if (args.length == 0) {
|
|
74
|
+
return curry2(_forEach, __, callback)
|
|
75
|
+
}
|
|
76
|
+
const collection = args[0]
|
|
77
|
+
return isPromise(collection)
|
|
78
|
+
? collection.then(curry2(_forEach, __, callback))
|
|
79
|
+
: _forEach(collection, callback)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
module.exports = forEach
|
package/get.js
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
|
+
const isPromise = require('./_internal/isPromise')
|
|
2
|
+
const __ = require('./_internal/placeholder')
|
|
3
|
+
const curry3 = require('./_internal/curry3')
|
|
4
|
+
const isArray = require('./_internal/isArray')
|
|
5
|
+
const isObject = require('./_internal/isObject')
|
|
1
6
|
const getByPath = require('./_internal/getByPath')
|
|
2
7
|
|
|
8
|
+
// _get(object Object, path string, defaultValue function|any)
|
|
9
|
+
const _get = function (object, path, defaultValue) {
|
|
10
|
+
const result = object == null ? undefined : getByPath(object, path)
|
|
11
|
+
return result === undefined
|
|
12
|
+
? typeof defaultValue == 'function' ? defaultValue(object) : defaultValue
|
|
13
|
+
: result
|
|
14
|
+
}
|
|
15
|
+
|
|
3
16
|
/**
|
|
4
17
|
* @name get
|
|
5
18
|
*
|
|
@@ -7,7 +20,7 @@ const getByPath = require('./_internal/getByPath')
|
|
|
7
20
|
* ```coffeescript [specscript]
|
|
8
21
|
* get(
|
|
9
22
|
* path string|number|Array<string|number>,
|
|
10
|
-
* defaultValue function|any
|
|
23
|
+
* defaultValue? function|any
|
|
11
24
|
* )(object Object) -> result Promise|Object
|
|
12
25
|
* ```
|
|
13
26
|
*
|
|
@@ -52,11 +65,15 @@ const getByPath = require('./_internal/getByPath')
|
|
|
52
65
|
* console.log(get00000ArrayNotation([[[[['foo']]]]])) // foo
|
|
53
66
|
* ```
|
|
54
67
|
*/
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
68
|
+
|
|
69
|
+
const get = function (arg0, arg1, arg2) {
|
|
70
|
+
if (isPromise(arg0)) {
|
|
71
|
+
return arg0.then(curry3(_get, __, arg1, arg2))
|
|
72
|
+
}
|
|
73
|
+
if (isObject(arg0) && !isArray(arg0)) {
|
|
74
|
+
return _get(arg0, arg1, arg2)
|
|
75
|
+
}
|
|
76
|
+
return curry3(_get, __, arg0, arg1)
|
|
60
77
|
}
|
|
61
78
|
|
|
62
79
|
module.exports = get
|
package/global.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
globalThis.pipe = require('./pipe')
|
|
2
|
-
globalThis.
|
|
3
|
-
globalThis.assign = require('./assign')
|
|
2
|
+
globalThis.compose = require('./compose')
|
|
4
3
|
globalThis.tap = require('./tap')
|
|
4
|
+
globalThis.all = require('./all')
|
|
5
|
+
globalThis.assign = require('./assign')
|
|
5
6
|
globalThis.tryCatch = require('./tryCatch')
|
|
6
7
|
globalThis.switchCase = require('./switchCase')
|
|
7
8
|
globalThis.map = require('./map')
|
|
@@ -9,8 +10,9 @@ globalThis.filter = require('./filter')
|
|
|
9
10
|
globalThis.reduce = require('./reduce')
|
|
10
11
|
globalThis.transform = require('./transform')
|
|
11
12
|
globalThis.flatMap = require('./flatMap')
|
|
12
|
-
globalThis.
|
|
13
|
-
globalThis.
|
|
13
|
+
globalThis.forEach = require('./forEach')
|
|
14
|
+
globalThis.some = require('./some')
|
|
15
|
+
globalThis.every = require('./every')
|
|
14
16
|
globalThis.and = require('./and')
|
|
15
17
|
globalThis.or = require('./or')
|
|
16
18
|
globalThis.not = require('./not')
|