rubico 1.9.6 → 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 +162 -0
- 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 +105 -45
- package/always.js +3 -9
- package/and.js +69 -45
- 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 +45 -22
- 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/curry.js +20 -12
- 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 +38 -3
- package/dist/omit.es.min.js +3 -3
- package/dist/omit.js +38 -3
- package/dist/omit.min.js +3 -3
- package/dist/omit.min.mjs +3 -3
- package/dist/omit.mjs +38 -3
- 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 +38 -3
- package/dist/pick.es.min.js +3 -3
- package/dist/pick.js +38 -3
- package/dist/pick.min.js +3 -3
- package/dist/pick.min.mjs +3 -3
- package/dist/pick.mjs +38 -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 +746 -869
- package/dist/rubico.es.min.js +3 -3
- package/dist/rubico.js +746 -869
- package/dist/rubico.min.js +3 -3
- package/dist/rubico.min.mjs +3 -3
- package/dist/rubico.mjs +746 -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 -2025
- package/eq.js +21 -63
- package/es.js +746 -869
- package/every.js +94 -0
- package/filter.js +83 -125
- package/flatMap.js +105 -154
- package/forEach.js +82 -0
- package/get.js +44 -36
- package/global.js +6 -4
- package/gt.js +15 -58
- package/gte.js +14 -57
- package/index.js +746 -869
- package/lt.js +17 -60
- package/lte.js +14 -57
- package/map.js +153 -203
- package/memory-usage/reduce.js +2 -2
- package/not.js +30 -49
- package/omit.js +36 -13
- package/or.js +64 -41
- package/package.json +7 -7
- package/pick.js +52 -22
- package/pipe.js +27 -92
- package/reduce.js +114 -129
- package/rubico.js +10 -8
- package/set.js +60 -24
- package/some.js +105 -0
- package/switchCase.js +29 -25
- package/tap.js +15 -45
- package/test.js +847 -1083
- package/thunkify.js +11 -5
- package/transform.js +57 -81
- package/tryCatch.js +38 -32
- 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 -88
- 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 -91
- 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/lt.js
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
|
-
const
|
|
2
|
-
const isPromise = require('./_internal/isPromise')
|
|
3
|
-
const promiseAll = require('./_internal/promiseAll')
|
|
1
|
+
const ComparisonOperator = require('./_internal/ComparisonOperator')
|
|
4
2
|
const lessThan = require('./_internal/lessThan')
|
|
5
|
-
const curry2 = require('./_internal/curry2')
|
|
6
|
-
const always = require('./_internal/always')
|
|
7
|
-
const __ = require('./_internal/placeholder')
|
|
8
3
|
|
|
9
4
|
/**
|
|
10
5
|
* @name lt
|
|
11
6
|
*
|
|
12
7
|
* @synopsis
|
|
13
8
|
* ```coffeescript [specscript]
|
|
14
|
-
* lt(leftValue any, rightValue any) -> boolean
|
|
15
|
-
*
|
|
16
|
-
* lt(
|
|
17
|
-
* lt(
|
|
9
|
+
* lt(leftValue Promise|any, rightValue Promise|any) -> boolean
|
|
10
|
+
*
|
|
11
|
+
* lt(leftValue Promise|any, right function)(...args) -> Promise|boolean
|
|
12
|
+
* lt(...args, leftValue Promise|any, right function) -> Promise|boolean
|
|
13
|
+
*
|
|
14
|
+
* lt(left function, rightValue Promise|any)(...args) -> Promise|boolean
|
|
15
|
+
* lt(...args, left function, rightValue Promise|any) -> Promise|boolean
|
|
16
|
+
*
|
|
17
|
+
* lt(left function, right function)(...args) -> Promise|boolean
|
|
18
|
+
* lt(...args, left function, right function) -> Promise|boolean
|
|
18
19
|
* ```
|
|
19
20
|
*
|
|
20
21
|
* @description
|
|
21
|
-
* Test if a
|
|
22
|
-
*
|
|
23
|
-
* If both arguments are values, `lt` eagerly computes and returns a boolean value.
|
|
22
|
+
* Test if a value is less than (`<`) another value.
|
|
24
23
|
*
|
|
25
24
|
* ```javascript [playground]
|
|
26
25
|
* console.log(lt(1, 3)) // true
|
|
@@ -28,60 +27,18 @@ const __ = require('./_internal/placeholder')
|
|
|
28
27
|
* console.log(lt(4, 3)) // false
|
|
29
28
|
* ```
|
|
30
29
|
*
|
|
31
|
-
* If
|
|
32
|
-
*
|
|
33
|
-
* If only one argument is a function, `lt` still returns a function that resolves its arguments by the argument resolver, treating the value (non function) argument as an already resolved value for comparison.
|
|
30
|
+
* If either of the two values are resolver functions, `lt` returns a function that resolves the values to compare from its arguments.
|
|
34
31
|
*
|
|
35
32
|
* ```javascript [playground]
|
|
36
33
|
* const identity = value => value
|
|
37
34
|
*
|
|
38
35
|
* const isLessThan3 = lt(identity, 3)
|
|
39
36
|
*
|
|
40
|
-
* console.log(isLessThan3(1)
|
|
41
|
-
* console.log(isLessThan3(3)
|
|
42
|
-
* console.log(isLessThan3(5)
|
|
37
|
+
* console.log(isLessThan3(1)) // true
|
|
38
|
+
* console.log(isLessThan3(3)) // false
|
|
39
|
+
* console.log(isLessThan3(5)) // false
|
|
43
40
|
* ```
|
|
44
41
|
*/
|
|
45
|
-
const lt =
|
|
46
|
-
const isLeftResolver = typeof left == 'function',
|
|
47
|
-
isRightResolver = typeof right == 'function'
|
|
48
|
-
|
|
49
|
-
if (isLeftResolver && isRightResolver) {
|
|
50
|
-
return function lessThanBy(value) {
|
|
51
|
-
const leftResolve = left(value),
|
|
52
|
-
rightResolve = right(value)
|
|
53
|
-
const isLeftPromise = isPromise(leftResolve),
|
|
54
|
-
isRightPromise = isPromise(rightResolve)
|
|
55
|
-
if (isLeftPromise && isRightPromise) {
|
|
56
|
-
return promiseAll(
|
|
57
|
-
[leftResolve, rightResolve]).then(spread2(lessThan))
|
|
58
|
-
} else if (isLeftPromise) {
|
|
59
|
-
return leftResolve.then(curry2(lessThan, __, rightResolve))
|
|
60
|
-
} else if (isRightPromise) {
|
|
61
|
-
return rightResolve.then(curry2(lessThan, leftResolve, __))
|
|
62
|
-
}
|
|
63
|
-
return leftResolve < rightResolve
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (isLeftResolver) {
|
|
68
|
-
return function lessThanBy(value) {
|
|
69
|
-
const leftResolve = left(value)
|
|
70
|
-
return isPromise(leftResolve)
|
|
71
|
-
? leftResolve.then(curry2(lessThan, __, right))
|
|
72
|
-
: leftResolve < right
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (isRightResolver) {
|
|
76
|
-
return function lessThanBy(value) {
|
|
77
|
-
const rightResolve = right(value)
|
|
78
|
-
return isPromise(rightResolve)
|
|
79
|
-
? rightResolve.then(curry2(lessThan, left, __))
|
|
80
|
-
: left < rightResolve
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return left < right
|
|
85
|
-
}
|
|
42
|
+
const lt = ComparisonOperator(lessThan)
|
|
86
43
|
|
|
87
44
|
module.exports = lt
|
package/lte.js
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
|
-
const
|
|
2
|
-
const isPromise = require('./_internal/isPromise')
|
|
3
|
-
const promiseAll = require('./_internal/promiseAll')
|
|
1
|
+
const ComparisonOperator = require('./_internal/ComparisonOperator')
|
|
4
2
|
const lessThanOrEqual = require('./_internal/lessThanOrEqual')
|
|
5
|
-
const curry2 = require('./_internal/curry2')
|
|
6
|
-
const always = require('./_internal/always')
|
|
7
|
-
const __ = require('./_internal/placeholder')
|
|
8
3
|
|
|
9
4
|
/**
|
|
10
5
|
* @name lte
|
|
11
6
|
*
|
|
12
7
|
* @synopsis
|
|
13
8
|
* ```coffeescript [specscript]
|
|
14
|
-
* lte(leftValue any, rightValue any) -> boolean
|
|
15
|
-
*
|
|
16
|
-
* lte(
|
|
17
|
-
* lte(
|
|
9
|
+
* lte(leftValue Promise|any, rightValue Promise|any) -> boolean
|
|
10
|
+
*
|
|
11
|
+
* lte(leftValue Promise|any, right function)(...args) -> Promise|boolean
|
|
12
|
+
* lte(...args, leftValue Promise|any, right function) -> Promise|boolean
|
|
13
|
+
*
|
|
14
|
+
* lte(left function, rightValue Promise|any)(...args) -> Promise|boolean
|
|
15
|
+
* lte(...args, left function, rightValue Promise|any) -> Promise|boolean
|
|
16
|
+
*
|
|
17
|
+
* lte(left function, right function)(...args) -> Promise|boolean
|
|
18
|
+
* lte(...args, left function, right function) -> Promise|boolean
|
|
18
19
|
* ```
|
|
19
20
|
*
|
|
20
21
|
* @description
|
|
21
|
-
* Test if a
|
|
22
|
-
*
|
|
23
|
-
* If both arguments are values, `lte` eagerly computes and returns a boolean value.
|
|
22
|
+
* Test if a value is less than or equal (`<=`) to another value.
|
|
24
23
|
*
|
|
25
24
|
* ```javascript [playground]
|
|
26
25
|
* console.log(lte(1, 3)) // true
|
|
@@ -28,9 +27,7 @@ const __ = require('./_internal/placeholder')
|
|
|
28
27
|
* console.log(lte(4, 3)) // false
|
|
29
28
|
* ```
|
|
30
29
|
*
|
|
31
|
-
* If
|
|
32
|
-
*
|
|
33
|
-
* If only one argument is a function, `lte` still returns a function that resolves its arguments by the argument resolver, treating the value (non function) argument as an already resolved value for comparison.
|
|
30
|
+
* If either of the two values are resolver functions, `lte` returns a function that resolves the values to compare from its arguments.
|
|
34
31
|
*
|
|
35
32
|
* ```javascript [playground]
|
|
36
33
|
* const identity = value => value
|
|
@@ -42,46 +39,6 @@ const __ = require('./_internal/placeholder')
|
|
|
42
39
|
* console.log(isLessThanOrEqualTo3(5), false)
|
|
43
40
|
* ```
|
|
44
41
|
*/
|
|
45
|
-
const lte =
|
|
46
|
-
const isLeftResolver = typeof left == 'function',
|
|
47
|
-
isRightResolver = typeof right == 'function'
|
|
48
|
-
|
|
49
|
-
if (isLeftResolver && isRightResolver) {
|
|
50
|
-
return function lessThanOrEqualBy(value) {
|
|
51
|
-
const leftResolve = left(value),
|
|
52
|
-
rightResolve = right(value)
|
|
53
|
-
const isLeftPromise = isPromise(leftResolve),
|
|
54
|
-
isRightPromise = isPromise(rightResolve)
|
|
55
|
-
if (isLeftPromise && isRightPromise) {
|
|
56
|
-
return promiseAll(
|
|
57
|
-
[leftResolve, rightResolve]).then(spread2(lessThanOrEqual))
|
|
58
|
-
} else if (isLeftPromise) {
|
|
59
|
-
return leftResolve.then(curry2(lessThanOrEqual, __, rightResolve))
|
|
60
|
-
} else if (isRightPromise) {
|
|
61
|
-
return rightResolve.then(curry2(lessThanOrEqual, leftResolve, __))
|
|
62
|
-
}
|
|
63
|
-
return leftResolve <= rightResolve
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (isLeftResolver) {
|
|
68
|
-
return function lessThanOrEqualBy(value) {
|
|
69
|
-
const leftResolve = left(value)
|
|
70
|
-
return isPromise(leftResolve)
|
|
71
|
-
? leftResolve.then(curry2(lessThanOrEqual, __, right))
|
|
72
|
-
: leftResolve <= right
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
if (isRightResolver) {
|
|
76
|
-
return function lessThanOrEqualBy(value) {
|
|
77
|
-
const rightResolve = right(value)
|
|
78
|
-
return isPromise(rightResolve)
|
|
79
|
-
? rightResolve.then(curry2(lessThanOrEqual, left, __))
|
|
80
|
-
: left <= rightResolve
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return left <= right
|
|
85
|
-
}
|
|
42
|
+
const lte = ComparisonOperator(lessThanOrEqual)
|
|
86
43
|
|
|
87
44
|
module.exports = lte
|
package/map.js
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
|
+
const isPromise = require('./_internal/isPromise')
|
|
1
2
|
const MappingIterator = require('./_internal/MappingIterator')
|
|
2
3
|
const MappingAsyncIterator = require('./_internal/MappingAsyncIterator')
|
|
3
4
|
const __ = require('./_internal/placeholder')
|
|
4
5
|
const curry2 = require('./_internal/curry2')
|
|
5
6
|
const isArray = require('./_internal/isArray')
|
|
6
7
|
const isObject = require('./_internal/isObject')
|
|
7
|
-
const isGeneratorFunction = require('./_internal/isGeneratorFunction')
|
|
8
|
-
const isAsyncGeneratorFunction = require('./_internal/isAsyncGeneratorFunction')
|
|
9
8
|
const arrayMap = require('./_internal/arrayMap')
|
|
10
|
-
const generatorFunctionMap = require('./_internal/generatorFunctionMap')
|
|
11
|
-
const asyncGeneratorFunctionMap = require('./_internal/asyncGeneratorFunctionMap')
|
|
12
|
-
const reducerMap = require('./_internal/reducerMap')
|
|
13
9
|
const stringMap = require('./_internal/stringMap')
|
|
14
10
|
const setMap = require('./_internal/setMap')
|
|
15
11
|
const mapMap = require('./_internal/mapMap')
|
|
16
12
|
const objectMap = require('./_internal/objectMap')
|
|
17
13
|
const arrayMapSeries = require('./_internal/arrayMapSeries')
|
|
18
14
|
const arrayMapPool = require('./_internal/arrayMapPool')
|
|
19
|
-
const arrayMapWithIndex = require('./_internal/arrayMapWithIndex')
|
|
20
|
-
const objectMapOwn = require('./_internal/objectMapOwn')
|
|
21
15
|
const objectMapEntries = require('./_internal/objectMapEntries')
|
|
22
16
|
const mapMapEntries = require('./_internal/mapMapEntries')
|
|
23
17
|
const symbolIterator = require('./_internal/symbolIterator')
|
|
@@ -69,15 +63,6 @@ const _map = function (value, mapper) {
|
|
|
69
63
|
if (isArray(value)) {
|
|
70
64
|
return arrayMap(value, mapper)
|
|
71
65
|
}
|
|
72
|
-
if (typeof value == 'function') {
|
|
73
|
-
if (isGeneratorFunction(value)) {
|
|
74
|
-
return generatorFunctionMap(value, mapper)
|
|
75
|
-
}
|
|
76
|
-
if (isAsyncGeneratorFunction(value)) {
|
|
77
|
-
return asyncGeneratorFunctionMap(value, mapper)
|
|
78
|
-
}
|
|
79
|
-
return reducerMap(value, mapper)
|
|
80
|
-
}
|
|
81
66
|
if (value == null) {
|
|
82
67
|
return value
|
|
83
68
|
}
|
|
@@ -114,150 +99,186 @@ const _map = function (value, mapper) {
|
|
|
114
99
|
*
|
|
115
100
|
* @synopsis
|
|
116
101
|
* ```coffeescript [specscript]
|
|
117
|
-
*
|
|
118
|
-
* arrayMapper (value any, index number, array Array)=>Promise|any
|
|
119
|
-
* )(array Array) -> mappedArray Promise|Array
|
|
102
|
+
* arrayMapperFunc (value any, index number, array Array)=>Promise|any
|
|
120
103
|
*
|
|
121
|
-
* map(
|
|
122
|
-
*
|
|
123
|
-
* )(object Object) -> mappedObject Promise|Array
|
|
104
|
+
* map(arrayMapperFunc)(value Array) -> result Promise|Array
|
|
105
|
+
* map(value Array, arrayMapperFunc) -> result Promise|Array
|
|
124
106
|
*
|
|
125
|
-
*
|
|
126
|
-
* setMapper (value any, value, set Set)=>Promise|any,
|
|
127
|
-
* )(set Set) -> mappedSet Promise|Set
|
|
107
|
+
* objectMapperFunc (value any, key string, object Object)=>Promise|any
|
|
128
108
|
*
|
|
129
|
-
* map(
|
|
130
|
-
*
|
|
131
|
-
* )(originalMap Map) -> mappedMap Promise|Map
|
|
109
|
+
* map(objectMapperFunc)(value Object) -> result Promise|Array
|
|
110
|
+
* map(value Object, objectMapperFunc) -> result Promise|Array
|
|
132
111
|
*
|
|
133
|
-
*
|
|
134
|
-
* syncMapper (value any)=>any
|
|
135
|
-
* )(generatorFunction GeneratorFunction)
|
|
136
|
-
* -> mappingGeneratorFunction ...args=>Generator
|
|
112
|
+
* setMapperFunc (value any, value, set Set)=>Promise|any
|
|
137
113
|
*
|
|
138
|
-
* map(
|
|
139
|
-
*
|
|
140
|
-
* )(asyncGeneratorFunction AsyncGeneratorFunction)
|
|
141
|
-
* -> mappingAsyncGeneratorFunction ...args=>AsyncGenerator
|
|
114
|
+
* map(setMapperFunc)(value Set) -> result Promise|Set
|
|
115
|
+
* map(value Set, setMapperFunc) -> result Promise|Set
|
|
142
116
|
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
* )(
|
|
117
|
+
* mapMapperFunc (value any, key any, originalMap Map)=>Promise|any
|
|
118
|
+
*
|
|
119
|
+
* map(mapMapperFunc)(value Map) -> result Promise|Map
|
|
120
|
+
* map(value Map, mapMapperFunc) -> result Promise|Map
|
|
121
|
+
*
|
|
122
|
+
* iteratorMapperFunc (value any)=>any
|
|
123
|
+
*
|
|
124
|
+
* map(iteratorMapperFunc)(value Iterator|Generator) -> result Iterator
|
|
125
|
+
* map(value Iterator|Generator, iteratorMapperFunc) -> result Iterator
|
|
126
|
+
*
|
|
127
|
+
* asyncIteratorMapperFunc (value any)=>Promise|any
|
|
128
|
+
*
|
|
129
|
+
* map(asyncIteratorMapperFunc)(value AsyncIterator|AsyncGenerator)
|
|
130
|
+
* -> result AsyncIterator
|
|
131
|
+
* map(value AsyncIterator|AsyncGenerator, asyncIteratorMapperFunc)
|
|
132
|
+
* -> result AsyncIterator
|
|
146
133
|
* ```
|
|
147
134
|
*
|
|
148
135
|
* @description
|
|
149
|
-
*
|
|
136
|
+
* Applies a synchronous or asynchronous mapper function concurrently to each item of a collection, returning the results in a new collection of the same type. If order is implied by the collection, it is maintained in the result. `map` accepts the following collections:
|
|
150
137
|
*
|
|
151
|
-
* * `Array`
|
|
152
|
-
* * `Object`
|
|
153
|
-
* * `Set`
|
|
154
|
-
* * `Map`
|
|
155
|
-
* * `Iterator`/`Generator`
|
|
156
|
-
* * `AsyncIterator`/`AsyncGenerator`
|
|
157
|
-
*
|
|
138
|
+
* * `Array`
|
|
139
|
+
* * `Object`
|
|
140
|
+
* * `Set`
|
|
141
|
+
* * `Map`
|
|
142
|
+
* * `Iterator`/`Generator`
|
|
143
|
+
* * `AsyncIterator`/`AsyncGenerator`
|
|
144
|
+
*
|
|
145
|
+
* With arrays (type `Array`), `map` applies the mapper function to each item of the array, returning the transformed results in a new array ordered the same as the original array.
|
|
158
146
|
*
|
|
159
147
|
* ```javascript [playground]
|
|
160
148
|
* const square = number => number ** 2
|
|
161
149
|
*
|
|
162
|
-
*
|
|
163
|
-
* map(square)([1, 2, 3, 4, 5]),
|
|
164
|
-
* ) // [1, 4, 9, 16, 25]
|
|
150
|
+
* const array = [1, 2, 3, 4, 5]
|
|
165
151
|
*
|
|
166
152
|
* console.log(
|
|
167
|
-
* map(
|
|
168
|
-
* ) //
|
|
153
|
+
* map(array, square)
|
|
154
|
+
* ) // [1, 4, 9, 16, 25]
|
|
169
155
|
*
|
|
170
156
|
* console.log(
|
|
171
|
-
* map(square)(
|
|
172
|
-
* ) //
|
|
157
|
+
* map(square)(array)
|
|
158
|
+
* ) // [1, 4, 9, 16, 25]
|
|
173
159
|
* ```
|
|
174
160
|
*
|
|
175
|
-
* `map`
|
|
176
|
-
*
|
|
177
|
-
* * Generator Functions `function* () {}` - `map(mapper)(generatorFunction)` creates a generator function that generates generators of mapped values. Async mappers are yielded synchronously and may lead to unexpected results.
|
|
178
|
-
* * Async Generator Functions `async function* () {}` - `map(mapper)(asyncGeneratorFunction)` creates an async generator function that generates async generators of mapped values. Promises produced by async mappers are resolved.
|
|
179
|
-
* * Reducers `(accumulator, item)=>accumulator` - `map(mapper)(reducer)` creates a transducer that, when called with another reducer, creates a mapping step for each item of the reducer's reducing operation. Promises produced by async mappers are resolved.
|
|
180
|
-
*
|
|
181
|
-
* Use mapping generator functions to create lazy computations executed at iteration time.
|
|
161
|
+
* With objects (type `Object`), `map` applies the mapper function to each value of the object, returning the transformed results as values in a new object ordered by the keys of the original object
|
|
182
162
|
*
|
|
183
163
|
* ```javascript [playground]
|
|
184
|
-
* const
|
|
185
|
-
*
|
|
186
|
-
* const abc = function* () {
|
|
187
|
-
* yield 'a'; yield 'b'; yield 'c'
|
|
188
|
-
* }
|
|
164
|
+
* const square = number => number ** 2
|
|
189
165
|
*
|
|
190
|
-
* const
|
|
166
|
+
* const obj = { a: 1, b: 2, c: 3, d: 4, e: 5 }
|
|
191
167
|
*
|
|
192
|
-
*
|
|
168
|
+
* console.log(
|
|
169
|
+
* map(square)(obj)
|
|
170
|
+
* ) // { a: 1, b: 4, c: 9, d: 16, e: 25 }
|
|
193
171
|
*
|
|
194
|
-
*
|
|
172
|
+
* console.log(
|
|
173
|
+
* map(obj, square)
|
|
174
|
+
* ) // { a: 1, b: 4, c: 9, d: 16, e: 25 }
|
|
175
|
+
* ```
|
|
195
176
|
*
|
|
196
|
-
*
|
|
177
|
+
* With sets (type `Set`), `map` applies the mapper function to each value of the set, returning the transformed results unordered in a new set.
|
|
197
178
|
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
179
|
+
* ```javascript [playground]
|
|
180
|
+
* const square = number => number ** 2
|
|
200
181
|
*
|
|
201
|
-
*
|
|
182
|
+
* const set = new Set([1, 2, 3, 4, 5])
|
|
202
183
|
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
184
|
+
* console.log(
|
|
185
|
+
* map(set, square)
|
|
186
|
+
* ) // [1, 4, 9, 16, 25]
|
|
205
187
|
*
|
|
206
|
-
*
|
|
188
|
+
* console.log(
|
|
189
|
+
* map(square)(set)
|
|
190
|
+
* ) // [1, 4, 9, 16, 25]
|
|
207
191
|
* ```
|
|
208
192
|
*
|
|
209
|
-
*
|
|
193
|
+
* With maps (type `Map`), `map` applies the mapper function to each value of the map, returning the results at the same keys in a new map. The entries of the resulting map are in the same order as those of the original map
|
|
210
194
|
*
|
|
211
195
|
* ```javascript [playground]
|
|
212
196
|
* const square = number => number ** 2
|
|
213
197
|
*
|
|
214
|
-
* const
|
|
198
|
+
* const m = new Map([['a', 1], ['b', 2], ['c', 3], ['d', 4], ['e', 5]])
|
|
215
199
|
*
|
|
216
|
-
*
|
|
217
|
-
*
|
|
218
|
-
* //
|
|
200
|
+
* console.log(
|
|
201
|
+
* map(square)(m)
|
|
202
|
+
* ) // Map { 'a' => 1, 'b' => 4, 'c' => 9, 'd' => 16, 'e' => 25 }
|
|
219
203
|
*
|
|
220
204
|
* console.log(
|
|
221
|
-
*
|
|
222
|
-
* ) //
|
|
205
|
+
* map(m, square)
|
|
206
|
+
* ) // Map { 'a' => 1, 'b' => 4, 'c' => 9, 'd' => 16, 'e' => 25 }
|
|
207
|
+
* ```
|
|
223
208
|
*
|
|
224
|
-
*
|
|
225
|
-
* // now mapSquare is passed the function concat, so it assumes transducer
|
|
226
|
-
* // position. squareConcatReducer is a reducer with chained functionality
|
|
227
|
-
* // square and concat.
|
|
209
|
+
* With iterators (type `Iterator`) or generators (type `Generator`), `map` applies the mapper function lazily to each value of the iterator/generator, creating a new iterator with transformed iterations.
|
|
228
210
|
*
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
* ) // [1, 4, 9, 16, 25]
|
|
211
|
+
* ```javascript [playground]
|
|
212
|
+
* const capitalize = string => string.toUpperCase()
|
|
232
213
|
*
|
|
233
|
-
*
|
|
234
|
-
*
|
|
235
|
-
*
|
|
214
|
+
* const abcGeneratorFunc = function* () {
|
|
215
|
+
* yield 'a'; yield 'b'; yield 'c'
|
|
216
|
+
* }
|
|
217
|
+
*
|
|
218
|
+
* const abcGenerator = abcGeneratorFunc()
|
|
219
|
+
* const ABCGenerator = map(abcGeneratorFunc(), capitalize)
|
|
220
|
+
* const ABCGenerator2 = map(capitalize)(abcGeneratorFunc())
|
|
221
|
+
*
|
|
222
|
+
* console.log([...abcGenerator]) // ['a', 'b', 'c']
|
|
223
|
+
*
|
|
224
|
+
* console.log([...ABCGenerator]) // ['A', 'B', 'C']
|
|
225
|
+
*
|
|
226
|
+
* console.log([...ABCGenerator2]) // ['A', 'B', 'C']
|
|
236
227
|
* ```
|
|
237
228
|
*
|
|
238
|
-
* `
|
|
229
|
+
* With asyncIterators (type `AsyncIterator`, or `AsyncGenerator`), `map` applies the mapper function lazily to each value of the asyncIterator, creating a new asyncIterator with transformed iterations
|
|
239
230
|
*
|
|
240
231
|
* ```javascript [playground]
|
|
241
|
-
* const
|
|
232
|
+
* const capitalize = string => string.toUpperCase()
|
|
242
233
|
*
|
|
243
|
-
* const
|
|
234
|
+
* const abcAsyncGeneratorFunc = async function* () {
|
|
235
|
+
* yield 'a'; yield 'b'; yield 'c'
|
|
236
|
+
* }
|
|
244
237
|
*
|
|
245
|
-
*
|
|
238
|
+
* const abcAsyncGenerator = abcAsyncGeneratorFunc()
|
|
239
|
+
* const ABCGenerator = map(abcAsyncGeneratorFunc(), capitalize)
|
|
240
|
+
* const ABCGenerator2 = map(capitalize)(abcAsyncGeneratorFunc())
|
|
241
|
+
*
|
|
242
|
+
* ;(async function () {
|
|
243
|
+
* for await (const letter of abcAsyncGenerator) {
|
|
244
|
+
* console.log(letter)
|
|
245
|
+
* // a
|
|
246
|
+
* // b
|
|
247
|
+
* // c
|
|
248
|
+
* }
|
|
249
|
+
*
|
|
250
|
+
* for await (const letter of ABCGenerator) {
|
|
251
|
+
* console.log(letter)
|
|
252
|
+
* // A
|
|
253
|
+
* // B
|
|
254
|
+
* // C
|
|
255
|
+
* }
|
|
256
|
+
*
|
|
257
|
+
* for await (const letter of ABCGenerator2) {
|
|
258
|
+
* console.log(letter)
|
|
259
|
+
* // A
|
|
260
|
+
* // B
|
|
261
|
+
* // C
|
|
262
|
+
* }
|
|
263
|
+
* })()
|
|
246
264
|
* ```
|
|
247
265
|
*
|
|
248
266
|
* @execution concurrent
|
|
249
267
|
*
|
|
250
|
-
* @transducing
|
|
251
|
-
*
|
|
252
268
|
* @TODO streamMap
|
|
253
269
|
*/
|
|
254
270
|
|
|
255
271
|
const map = (...args) => {
|
|
256
272
|
const mapper = args.pop()
|
|
257
|
-
if (args.length
|
|
258
|
-
return _map
|
|
273
|
+
if (args.length == 0) {
|
|
274
|
+
return curry2(_map, __, mapper)
|
|
259
275
|
}
|
|
260
|
-
|
|
276
|
+
|
|
277
|
+
const collection = args[0]
|
|
278
|
+
if (isPromise(collection)) {
|
|
279
|
+
return collection.then(curry2(_map, __, mapper))
|
|
280
|
+
}
|
|
281
|
+
return _map(collection, mapper)
|
|
261
282
|
}
|
|
262
283
|
|
|
263
284
|
/**
|
|
@@ -271,13 +292,17 @@ const map = (...args) => {
|
|
|
271
292
|
* ```
|
|
272
293
|
*
|
|
273
294
|
* @description
|
|
274
|
-
* `map` over the entries of a `Map` or `Object`.
|
|
295
|
+
* `map` over the entries rather than the values of a collection. Accepts collections of type `Map` or `Object`.
|
|
296
|
+
*
|
|
275
297
|
* ```javascript [playground]
|
|
276
|
-
*
|
|
277
|
-
* map.entries(
|
|
278
|
-
*
|
|
279
|
-
*
|
|
280
|
-
*
|
|
298
|
+
* const upperCaseKeysAndSquareValues =
|
|
299
|
+
* map.entries(([key, value]) => [key.toUpperCase(), value ** 2])
|
|
300
|
+
*
|
|
301
|
+
* console.log(upperCaseKeysAndSquareValues({ a: 1, b: 2, c: 3 }))
|
|
302
|
+
* // { A: 1, B: 4, C: 9 }
|
|
303
|
+
*
|
|
304
|
+
* console.log(upperCaseKeysAndSquareValues(new Map([['a', 1], ['b', 2], ['c', 3]])))
|
|
305
|
+
* // Map(3) { 'A' => 1, 'B' => 4, 'C' => 9 }
|
|
281
306
|
* ```
|
|
282
307
|
*
|
|
283
308
|
* @since v1.7.0
|
|
@@ -302,11 +327,9 @@ map.entries = function mapEntries(mapper) {
|
|
|
302
327
|
*
|
|
303
328
|
* @synopsis
|
|
304
329
|
* ```coffeescript [specscript]
|
|
305
|
-
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
308
|
-
*
|
|
309
|
-
* map.series(mapper)(array) -> Promise|Array
|
|
330
|
+
* map.series(
|
|
331
|
+
* mapperFunc (value any)=>Promise|any,
|
|
332
|
+
* )(array Array) -> Promise|Array
|
|
310
333
|
* ```
|
|
311
334
|
*
|
|
312
335
|
* @description
|
|
@@ -338,27 +361,29 @@ map.series = mapper => function mappingInSeries(value) {
|
|
|
338
361
|
*
|
|
339
362
|
* @synopsis
|
|
340
363
|
* ```coffeescript [specscript]
|
|
341
|
-
*
|
|
342
|
-
*
|
|
343
|
-
* mapper
|
|
344
|
-
*
|
|
345
|
-
*
|
|
346
|
-
* map.pool(maxConcurrency, mapper)(array) -> Promise|Array
|
|
364
|
+
* map.pool(
|
|
365
|
+
* maxConcurrency number,
|
|
366
|
+
* mapper (value any)=>Promise|any,
|
|
367
|
+
* )(array Array) -> result Promise|Array
|
|
347
368
|
* ```
|
|
348
369
|
*
|
|
349
370
|
* @description
|
|
350
|
-
* `map`
|
|
371
|
+
* `map` that specifies the maximum concurrency (number of ongoing promises at any time) of the execution. Only works for arrays.
|
|
351
372
|
*
|
|
352
373
|
* ```javascript [playground]
|
|
353
|
-
* const
|
|
354
|
-
* setTimeout(function () {
|
|
355
|
-
* console.log(x)
|
|
356
|
-
* resolve()
|
|
357
|
-
* }, 1000)
|
|
358
|
-
* })
|
|
374
|
+
* const ids = [1, 2, 3, 4, 5]
|
|
359
375
|
*
|
|
360
|
-
*
|
|
361
|
-
*
|
|
376
|
+
* const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
|
|
377
|
+
*
|
|
378
|
+
* const delayedIdentity = async value => {
|
|
379
|
+
* await sleep(1000)
|
|
380
|
+
* return value
|
|
381
|
+
* }
|
|
382
|
+
*
|
|
383
|
+
* map.pool(2, pipe([
|
|
384
|
+
* delayedIdentity,
|
|
385
|
+
* console.log,
|
|
386
|
+
* ]))(ids)
|
|
362
387
|
* ```
|
|
363
388
|
*
|
|
364
389
|
* @TODO objectMapPool
|
|
@@ -372,79 +397,4 @@ map.pool = (concurrencyLimit, mapper) => function concurrentPoolMapping(value) {
|
|
|
372
397
|
throw new TypeError(`${value} is not an Array`)
|
|
373
398
|
}
|
|
374
399
|
|
|
375
|
-
/**
|
|
376
|
-
* @name map.withIndex
|
|
377
|
-
*
|
|
378
|
-
* @synopsis
|
|
379
|
-
* ```coffeescript [specscript]
|
|
380
|
-
* var T any,
|
|
381
|
-
* index number,
|
|
382
|
-
* array Array<T>,
|
|
383
|
-
* indexedMapper (T, index, array)=>Promise|any
|
|
384
|
-
*
|
|
385
|
-
* map.withIndex(indexedMapper)(array) -> Promise|Array
|
|
386
|
-
* ```
|
|
387
|
-
*
|
|
388
|
-
* @description
|
|
389
|
-
* `map` with an indexed mapper.
|
|
390
|
-
*
|
|
391
|
-
* ```javascript [playground]
|
|
392
|
-
* const range = length => map.withIndex(
|
|
393
|
-
* (_, index) => index + 1)(Array(length))
|
|
394
|
-
*
|
|
395
|
-
* console.log(range(5)) // [1, 2, 3, 4, 5]
|
|
396
|
-
* ```
|
|
397
|
-
*
|
|
398
|
-
* @execution concurrent
|
|
399
|
-
*
|
|
400
|
-
* @related
|
|
401
|
-
* map, filter.withIndex
|
|
402
|
-
*/
|
|
403
|
-
map.withIndex = mapper => function mappingWithIndex(value) {
|
|
404
|
-
if (isArray(value)) {
|
|
405
|
-
return arrayMapWithIndex(value, mapper)
|
|
406
|
-
}
|
|
407
|
-
throw new TypeError(`${value} is not an Array`)
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
/**
|
|
411
|
-
* @name map.own
|
|
412
|
-
*
|
|
413
|
-
* @synopsis
|
|
414
|
-
* ```coffeescript [specscript]
|
|
415
|
-
* var T any,
|
|
416
|
-
* object Object<T>,
|
|
417
|
-
* mapper T=>Promise|any
|
|
418
|
-
*
|
|
419
|
-
* map.own(mapper)(object) -> Promise|Object
|
|
420
|
-
* ```
|
|
421
|
-
*
|
|
422
|
-
* @description
|
|
423
|
-
* `map` over an object's own properties.
|
|
424
|
-
*
|
|
425
|
-
* ```javascript [playground]
|
|
426
|
-
* const Person = function (name) {
|
|
427
|
-
* this.name = name
|
|
428
|
-
* }
|
|
429
|
-
*
|
|
430
|
-
* Person.prototype.greet = function () {}
|
|
431
|
-
*
|
|
432
|
-
* const david = new Person('david')
|
|
433
|
-
* david.a = 1
|
|
434
|
-
* david.b = 2
|
|
435
|
-
* david.c = 3
|
|
436
|
-
*
|
|
437
|
-
* const square = number => number ** 2
|
|
438
|
-
* console.log(
|
|
439
|
-
* map.own(square)(david)
|
|
440
|
-
* ) // { name: NaN, a: 1, b: 4, c: 9 }
|
|
441
|
-
* ```
|
|
442
|
-
*/
|
|
443
|
-
map.own = mapper => function mappingOwnProperties(value) {
|
|
444
|
-
if (isObject(value) && !isArray(value)) {
|
|
445
|
-
return objectMapOwn(value, mapper)
|
|
446
|
-
}
|
|
447
|
-
throw new TypeError(`${value} is not an Object`)
|
|
448
|
-
}
|
|
449
|
-
|
|
450
400
|
module.exports = map
|