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/thunkify.js
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
|
+
const areAnyValuesPromises = require('./_internal/areAnyValuesPromises')
|
|
2
|
+
const promiseAll = require('./_internal/promiseAll')
|
|
3
|
+
const curry2 = require('./_internal/curry2')
|
|
4
|
+
const __ = require('./_internal/placeholder')
|
|
5
|
+
const funcApply = require('./_internal/funcApply')
|
|
6
|
+
|
|
1
7
|
/**
|
|
2
8
|
* @name thunkify
|
|
3
9
|
*
|
|
4
10
|
* @synopsis
|
|
5
11
|
* ```coffeescript [specscript]
|
|
6
|
-
*
|
|
7
|
-
* args ...any
|
|
8
|
-
*
|
|
9
|
-
* thunkify(func, ...args) -> thunk ()=>func(...args)
|
|
12
|
+
* thunkify(func function, ...args) -> thunk ()=>func(...args)
|
|
10
13
|
* ```
|
|
11
14
|
*
|
|
12
15
|
* @description
|
|
13
|
-
* Create a thunk from
|
|
16
|
+
* Create a thunk function from another function and any number of arguments. The thunk function takes no arguments, and when called, executes the other function with the provided arguments. The other function is said to be "thunkified".
|
|
14
17
|
*
|
|
15
18
|
* ```javascript [playground]
|
|
16
19
|
* const add = (a, b) => a + b
|
|
@@ -21,6 +24,9 @@
|
|
|
21
24
|
* ```
|
|
22
25
|
*/
|
|
23
26
|
const thunkify = (func, ...args) => function thunk() {
|
|
27
|
+
if (areAnyValuesPromises(args)) {
|
|
28
|
+
return promiseAll(args).then(curry2(funcApply, func, __))
|
|
29
|
+
}
|
|
24
30
|
return func(...args)
|
|
25
31
|
}
|
|
26
32
|
|
package/transform.js
CHANGED
|
@@ -3,36 +3,55 @@ const __ = require('./_internal/placeholder')
|
|
|
3
3
|
const curry3 = require('./_internal/curry3')
|
|
4
4
|
const genericTransform = require('./_internal/genericTransform')
|
|
5
5
|
|
|
6
|
+
// _transform(collection any, transducer function, initialValue function|any) -> Promise
|
|
7
|
+
const _transform = function (collection, transducer, initialValue) {
|
|
8
|
+
if (typeof initialValue == 'function') {
|
|
9
|
+
const actualInitialValue = initialValue(collection)
|
|
10
|
+
return isPromise(actualInitialValue)
|
|
11
|
+
? actualInitialValue.then(curry3(genericTransform, collection, transducer, __))
|
|
12
|
+
: genericTransform(collection, transducer, actualInitialValue)
|
|
13
|
+
}
|
|
14
|
+
return isPromise(initialValue)
|
|
15
|
+
? initialValue.then(curry3(genericTransform, collection, transducer, __))
|
|
16
|
+
: genericTransform(collection, transducer, initialValue)
|
|
17
|
+
}
|
|
18
|
+
|
|
6
19
|
/**
|
|
7
20
|
* @name transform
|
|
8
21
|
*
|
|
9
22
|
* @synopsis
|
|
10
23
|
* ```coffeescript [specscript]
|
|
11
|
-
* Reducer
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* Foldable
|
|
15
|
-
*
|
|
16
|
-
* var T any,
|
|
17
|
-
* args ...any,
|
|
18
|
-
* transducer Reducer=>Reducer,
|
|
19
|
-
* init (...args=>Promise|Semigroup<T>)|Semigroup<T>,
|
|
20
|
-
* foldable Foldable<T>,
|
|
21
|
-
* generatorFunction ...args=>Generator<T>,
|
|
22
|
-
* asyncGeneratorFunction ...args=>AsyncGenerator<T>,
|
|
23
|
-
* reducers ...Reducer<T>
|
|
24
|
+
* type Reducer = (result any, item any)=>(result any)
|
|
25
|
+
* type Transducer = Reducer=>Reducer
|
|
26
|
+
* type Transformable = Array|String|Set|TypedArray|{ concat: function }|{ write: function }|Object
|
|
27
|
+
* type Foldable = Iterable|AsyncIterable|Object<value any>
|
|
24
28
|
*
|
|
25
|
-
*
|
|
29
|
+
* initialValue Transformable|((foldable Foldable)=>Promise|Transformable)
|
|
26
30
|
*
|
|
27
|
-
* transform(
|
|
28
|
-
*
|
|
29
|
-
*
|
|
31
|
+
* transform(
|
|
32
|
+
* foldable Foldable,
|
|
33
|
+
* transducer Transducer,
|
|
34
|
+
* initialValue? Transformable|(Foldable=>Promise|Transformable),
|
|
35
|
+
* ) -> result Promise|Transformable
|
|
30
36
|
*
|
|
31
|
-
* transform(
|
|
37
|
+
* transform(
|
|
38
|
+
* transducer Transducer,
|
|
39
|
+
* initialValue? Transformable|(Foldable=>Promise|Transformable),
|
|
40
|
+
* )(foldable Foldable) -> result Promise|Transformable
|
|
32
41
|
* ```
|
|
33
42
|
*
|
|
34
43
|
* @description
|
|
35
|
-
*
|
|
44
|
+
* Transforms a transformable collection into any other transformable collection. The type of transformation depends on the collection provided by the initial value. If the initial is a function it is used as a resolver for the provided collection. `transform` accepts transformable collections, or collections that support a concatenation operation:
|
|
45
|
+
*
|
|
46
|
+
* * `Array`; concatenation defined by `result.concat(values)`
|
|
47
|
+
* * `string`; concatenation defined by `result + values`
|
|
48
|
+
* * `Set`; concatenation defined by `result.add(...values)`
|
|
49
|
+
* * `TypedArray`; concatenation defined by `result.set(prevResult); result.set(values, offset)`
|
|
50
|
+
* * `{ concat: function }`; concatenation defined by `result.concat(values)`
|
|
51
|
+
* * `{ write: function }`; concatenation defined by `result.write(item)`
|
|
52
|
+
* * `Object`; concatenation defined by `({ ...result, ...values })`
|
|
53
|
+
*
|
|
54
|
+
* `transform` can transform any of the above collections into any of the other above collections.
|
|
36
55
|
*
|
|
37
56
|
* ```javascript [playground]
|
|
38
57
|
* const square = number => number ** 2
|
|
@@ -44,29 +63,28 @@ const genericTransform = require('./_internal/genericTransform')
|
|
|
44
63
|
* map(square),
|
|
45
64
|
* ])
|
|
46
65
|
*
|
|
66
|
+
* // transform arrays into arrays
|
|
47
67
|
* console.log(
|
|
48
|
-
* transform(squaredOdds,
|
|
68
|
+
* transform(squaredOdds, [])([1, 2, 3, 4, 5])
|
|
49
69
|
* ) // [1, 9, 25]
|
|
50
70
|
*
|
|
71
|
+
* // transform arrays into strings
|
|
51
72
|
* console.log(
|
|
52
|
-
* transform(squaredOdds, '')([1, 2, 3, 4, 5])
|
|
73
|
+
* transform(squaredOdds, '')([1, 2, 3, 4, 5])
|
|
53
74
|
* ) // '1925'
|
|
54
75
|
*
|
|
76
|
+
* // transform arrays into sets
|
|
77
|
+
* console.log(
|
|
78
|
+
* transform(squaredOdds, new Set())([1, 2, 3, 4, 5])
|
|
79
|
+
* ) // Set (3) { 1, 9, 25 }
|
|
80
|
+
*
|
|
81
|
+
* // transform arrays into typed arrays
|
|
55
82
|
* console.log(
|
|
56
|
-
* transform(squaredOdds,
|
|
83
|
+
* transform(squaredOdds, new Uint8Array())([1, 2, 3, 4, 5]),
|
|
57
84
|
* ) // Uint8Array(3) [ 1, 9, 25 ]
|
|
58
85
|
* ```
|
|
59
86
|
*
|
|
60
|
-
*
|
|
61
|
-
* * `Array` - `result.concat(values)`
|
|
62
|
-
* * `string` - `result + values`
|
|
63
|
-
* * `Set` - `result.add(...values)`
|
|
64
|
-
* * `TypedArray` - `result.set(prevResult); result.set(values, offset)`
|
|
65
|
-
* * `{ concat: function }` - `result.concat(values)`
|
|
66
|
-
* * `{ write: function }` - essentially `item.pipe(result)` or `result.write(item)`
|
|
67
|
-
* * `Object` - `({ ...result, ...values })`
|
|
68
|
-
*
|
|
69
|
-
* Here is a simple `Semigroup` as an object that implements `.concat`.
|
|
87
|
+
* `transform` arrays into objects that implement `.concat`.
|
|
70
88
|
*
|
|
71
89
|
* ```javascript [playground]
|
|
72
90
|
* const square = number => number ** 2
|
|
@@ -86,7 +104,7 @@ const genericTransform = require('./_internal/genericTransform')
|
|
|
86
104
|
* // 25
|
|
87
105
|
* ```
|
|
88
106
|
*
|
|
89
|
-
*
|
|
107
|
+
* `transform` an async generator into `process.stdout`, a Node.js writable stream that implements `.write`.
|
|
90
108
|
*
|
|
91
109
|
* ```javascript [node]
|
|
92
110
|
* // this example is duplicated in rubico/examples/transformStreamRandomInts.js
|
|
@@ -110,62 +128,20 @@ const genericTransform = require('./_internal/genericTransform')
|
|
|
110
128
|
* )(streamRandomInts()) // 9216576529289484980147613249169774446246768649...
|
|
111
129
|
* ```
|
|
112
130
|
*
|
|
113
|
-
* `transform`, like `reduce`, supports reducer combination. This variant of state management automatically assigns (`Object.assign`) pipeline objects into the aggregate state object.
|
|
114
|
-
*
|
|
115
|
-
* ```javascript [playground]
|
|
116
|
-
* const reducerA = async (state, action) => {
|
|
117
|
-
* if (action.type == 'A') return { ...state, A: true }
|
|
118
|
-
* return state
|
|
119
|
-
* }
|
|
120
|
-
*
|
|
121
|
-
* const reducerB = async (state, action) => {
|
|
122
|
-
* if (action.type == 'B') return { ...state, B: true }
|
|
123
|
-
* return state
|
|
124
|
-
* }
|
|
125
|
-
*
|
|
126
|
-
* const reducerC = async (state, action) => {
|
|
127
|
-
* if (action.type == 'C') return { ...state, C: true }
|
|
128
|
-
* return state
|
|
129
|
-
* }
|
|
130
|
-
*
|
|
131
|
-
* const logAction = function (action) {
|
|
132
|
-
* console.log('action', action)
|
|
133
|
-
* return action
|
|
134
|
-
* }
|
|
135
|
-
*
|
|
136
|
-
* const reducingABC = transform(
|
|
137
|
-
* map(logAction), // transducer logger middleware
|
|
138
|
-
* () => ({}), // initial state resolver
|
|
139
|
-
* )(reducerA, reducerB, reducerC)
|
|
140
|
-
*
|
|
141
|
-
* const actions = [{ type: 'A' }, { type: 'B' }, { type: 'C' }]
|
|
142
|
-
*
|
|
143
|
-
* reducingABC(actions).then(
|
|
144
|
-
* state => console.log('state', state))
|
|
145
|
-
* // action { type: 'A' }
|
|
146
|
-
* // action { type: 'B' }
|
|
147
|
-
* // action { type: 'C' }
|
|
148
|
-
* // state { A: true, B: true, C: true }
|
|
149
|
-
* ```
|
|
150
|
-
*
|
|
151
131
|
* @execution series
|
|
152
132
|
*
|
|
153
133
|
* @transducing
|
|
154
134
|
*
|
|
155
135
|
* TODO explore Semigroup = Iterator|AsyncIterator
|
|
156
136
|
*/
|
|
157
|
-
const transform = function (
|
|
158
|
-
if (typeof
|
|
159
|
-
return
|
|
160
|
-
const result = init(...args)
|
|
161
|
-
return isPromise(result)
|
|
162
|
-
? result.then(curry3(genericTransform, args, transducer, __))
|
|
163
|
-
: genericTransform(args, transducer, result)
|
|
164
|
-
}
|
|
137
|
+
const transform = function (...args) {
|
|
138
|
+
if (typeof args[0] == 'function') {
|
|
139
|
+
return curry3(_transform, __, args[0], args[1])
|
|
165
140
|
}
|
|
166
|
-
|
|
167
|
-
return
|
|
141
|
+
if (isPromise(args[0])) {
|
|
142
|
+
return args[0].then(curry3(_transform, __, args[1], args[2]))
|
|
168
143
|
}
|
|
144
|
+
return _transform(args[0], args[1], args[2])
|
|
169
145
|
}
|
|
170
146
|
|
|
171
147
|
module.exports = transform
|
package/tryCatch.js
CHANGED
|
@@ -1,39 +1,55 @@
|
|
|
1
1
|
const isPromise = require('./_internal/isPromise')
|
|
2
|
+
const promiseAll = require('./_internal/promiseAll')
|
|
2
3
|
const __ = require('./_internal/placeholder')
|
|
3
4
|
const curry3 = require('./_internal/curry3')
|
|
4
5
|
const catcherApply = require('./_internal/catcherApply')
|
|
6
|
+
const areAnyValuesPromises = require('./_internal/areAnyValuesPromises')
|
|
7
|
+
|
|
8
|
+
// _tryCatch(tryer function, catcher function, args Array) -> Promise
|
|
9
|
+
const _tryCatch = function (tryer, catcher, args) {
|
|
10
|
+
try {
|
|
11
|
+
const result = tryer(...args)
|
|
12
|
+
return isPromise(result)
|
|
13
|
+
? result.catch(curry3(catcherApply, catcher, __, args))
|
|
14
|
+
: result
|
|
15
|
+
} catch (error) {
|
|
16
|
+
return catcher(error, ...args)
|
|
17
|
+
}
|
|
18
|
+
}
|
|
5
19
|
|
|
6
20
|
/**
|
|
7
21
|
* @name tryCatch
|
|
8
22
|
*
|
|
9
23
|
* @synopsis
|
|
10
24
|
* ```coffeescript [specscript]
|
|
11
|
-
*
|
|
12
|
-
* tryer ...args=>Promise|any,
|
|
13
|
-
* catcher (error Error, ...args)=>Promise|any
|
|
25
|
+
* tryCatch(tryer function, catcher function)(...args) -> Promise|any
|
|
14
26
|
*
|
|
15
|
-
* tryCatch(tryer, catcher)
|
|
27
|
+
* tryCatch(...args, tryer function, catcher function) -> Promise|any
|
|
16
28
|
* ```
|
|
17
29
|
*
|
|
18
30
|
* @description
|
|
19
|
-
*
|
|
31
|
+
* Handles errors with a `tryer` and a `catcher` function. Calls the `tryer` function with the provided arguments and catches any errors thrown by the `tryer` function with the `catcher` function. If the `tryer` function is asynchronous and returns a rejected promise, the `catcher` function will execute with the value of the rejected promise. The `catcher` function is called with the error and all arguments supplied to the `tryer` function.
|
|
20
32
|
*
|
|
21
33
|
* ```javascript [playground]
|
|
22
|
-
* const
|
|
23
|
-
*
|
|
24
|
-
* throw new Error(
|
|
25
|
-
* }
|
|
26
|
-
* (
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* )
|
|
34
|
+
* const throwsIfOdd = number => {
|
|
35
|
+
* if (number % 2 == 1) {
|
|
36
|
+
* throw new Error(`${number} is odd`)
|
|
37
|
+
* }
|
|
38
|
+
* console.log('did not throw for', number)
|
|
39
|
+
* }
|
|
40
|
+
*
|
|
41
|
+
* const errorHandler = tryCatch(throwsIfOdd, (error, number) => {
|
|
42
|
+
* console.log('caught error from number', number)
|
|
43
|
+
* console.log(error)
|
|
44
|
+
* })
|
|
45
|
+
*
|
|
46
|
+
* errorHandler(2) // did not throw for 2
|
|
47
|
+
* errorHandler(3) // caught error from number 3
|
|
48
|
+
* // Error: 3 is odd
|
|
31
49
|
*
|
|
32
|
-
* console.log(errorThrower('hello')) // Error: hello
|
|
33
|
-
* // hello from catcher
|
|
34
50
|
* ```
|
|
35
51
|
*
|
|
36
|
-
* `tryCatch` behaves eagerly when passed any amount of arguments before the tryer and catcher.
|
|
52
|
+
* `tryCatch` behaves eagerly (executes immediately with a single call and not with multiple calls like a higher order function) when passed any amount of nonfunction (primitive or object) arguments before the `tryer` and `catcher` functions.
|
|
37
53
|
*
|
|
38
54
|
* ```javascript [playground]
|
|
39
55
|
* const add = (a, b) => a + b
|
|
@@ -51,27 +67,17 @@ const tryCatch = function (...args) {
|
|
|
51
67
|
if (args.length > 2) {
|
|
52
68
|
const catcher = args.pop(),
|
|
53
69
|
tryer = args.pop()
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
? result.catch(curry3(catcherApply, catcher, __, args))
|
|
58
|
-
: result
|
|
59
|
-
} catch (error) {
|
|
60
|
-
return catcher(error, ...args)
|
|
70
|
+
if (areAnyValuesPromises(args)) {
|
|
71
|
+
return promiseAll(args)
|
|
72
|
+
.then(curry3(_tryCatch, tryer, catcher, __))
|
|
61
73
|
}
|
|
74
|
+
return _tryCatch(tryer, catcher, args)
|
|
62
75
|
}
|
|
63
76
|
|
|
64
77
|
const tryer = args[0],
|
|
65
78
|
catcher = args[1]
|
|
66
79
|
return function tryCatcher(...args) {
|
|
67
|
-
|
|
68
|
-
const result = tryer(...args)
|
|
69
|
-
return isPromise(result)
|
|
70
|
-
? result.catch(curry3(catcherApply, catcher, __, args))
|
|
71
|
-
: result
|
|
72
|
-
} catch (error) {
|
|
73
|
-
return catcher(error, ...args)
|
|
74
|
-
}
|
|
80
|
+
return _tryCatch(tryer, catcher, args)
|
|
75
81
|
}
|
|
76
82
|
}
|
|
77
83
|
|
package/x/differenceWith.js
CHANGED
|
@@ -6,7 +6,7 @@ const thunkify5 = require('../_internal/thunkify5')
|
|
|
6
6
|
const thunkConditional = require('../_internal/thunkConditional')
|
|
7
7
|
const isPromise = require('../_internal/isPromise')
|
|
8
8
|
const isArray = require('../_internal/isArray')
|
|
9
|
-
const
|
|
9
|
+
const arraySome = require('../_internal/arraySome')
|
|
10
10
|
const arrayPush = require('../_internal/arrayPush')
|
|
11
11
|
const funcConcatSync = require('../_internal/funcConcatSync')
|
|
12
12
|
const noop = require('../_internal/noop')
|
|
@@ -33,7 +33,7 @@ const differenceWithArrayAsync = async function (
|
|
|
33
33
|
const allValuesLength = allValues.length
|
|
34
34
|
while (++index < allValuesLength) {
|
|
35
35
|
const item = allValues[index]
|
|
36
|
-
let doesItemExistByComparator =
|
|
36
|
+
let doesItemExistByComparator = arraySome(array, curry2(comparator, item, __))
|
|
37
37
|
if (isPromise(doesItemExistByComparator)) {
|
|
38
38
|
doesItemExistByComparator = await doesItemExistByComparator
|
|
39
39
|
}
|
|
@@ -62,7 +62,7 @@ const differenceWithArray = function (comparator, allValues, array) {
|
|
|
62
62
|
let index = -1
|
|
63
63
|
while (++index < allValuesLength) {
|
|
64
64
|
const item = allValues[index],
|
|
65
|
-
doesItemExistByComparator =
|
|
65
|
+
doesItemExistByComparator = arraySome(array, curry2(comparator, item, __))
|
|
66
66
|
if (isPromise(doesItemExistByComparator)) {
|
|
67
67
|
return doesItemExistByComparator.then(funcConcatSync(
|
|
68
68
|
curry3(thunkConditional, __, noop, thunkify2(arrayPush, result, item)),
|
package/x/filterOut.test.js
CHANGED
|
@@ -40,13 +40,13 @@ describe('filterOut', () => {
|
|
|
40
40
|
|
|
41
41
|
it('creates a rejecting generator function when passed a generator', () => {
|
|
42
42
|
const rejectOdds = filterOut(number => number % 2 == 1)
|
|
43
|
-
const
|
|
43
|
+
const oddsRejectingGenerator = rejectOdds((function* (array) {
|
|
44
44
|
for (const value of array) {
|
|
45
45
|
yield value
|
|
46
46
|
}
|
|
47
|
-
})
|
|
47
|
+
})([1, 2, 3, 4, 5]))
|
|
48
48
|
const evensArray = []
|
|
49
|
-
for (const number of
|
|
49
|
+
for (const number of oddsRejectingGenerator) {
|
|
50
50
|
evensArray.push(number)
|
|
51
51
|
}
|
|
52
52
|
assert.deepEqual(evensArray, [2, 4])
|
|
@@ -54,13 +54,13 @@ describe('filterOut', () => {
|
|
|
54
54
|
|
|
55
55
|
it('creates a rejecting generator function when passed an async generator', async () => {
|
|
56
56
|
const asyncRejectOdds = filterOut(async number => number % 2 == 1)
|
|
57
|
-
const
|
|
57
|
+
const oddsRejectingGenerator = asyncRejectOdds((async function* (array) {
|
|
58
58
|
for (const value of array) {
|
|
59
59
|
yield value
|
|
60
60
|
}
|
|
61
|
-
})
|
|
61
|
+
})([1, 2, 3, 4, 5]))
|
|
62
62
|
const evensArray = []
|
|
63
|
-
for await (const number of
|
|
63
|
+
for await (const number of oddsRejectingGenerator) {
|
|
64
64
|
evensArray.push(number)
|
|
65
65
|
}
|
|
66
66
|
assert.deepEqual(evensArray, [2, 4])
|
package/x/flatten.js
CHANGED
package/x/flatten.test.js
CHANGED
|
@@ -34,12 +34,4 @@ describe('flatten', () => {
|
|
|
34
34
|
it('flatten(undefined)', async () => {
|
|
35
35
|
assert.strictEqual(flatten(undefined), undefined)
|
|
36
36
|
})
|
|
37
|
-
it('flatteningReducer', async () => {
|
|
38
|
-
const add = (a, b) => a + b
|
|
39
|
-
const flatteningAdd = flatten(add)
|
|
40
|
-
assert.strictEqual(
|
|
41
|
-
[[1], [2], [3], [4], [5]].reduce(flatteningAdd, 0),
|
|
42
|
-
15,
|
|
43
|
-
)
|
|
44
|
-
})
|
|
45
37
|
})
|
package/x/index.js
CHANGED
|
@@ -7,7 +7,6 @@ const find = require('./find')
|
|
|
7
7
|
const findIndex = require('./findIndex')
|
|
8
8
|
const first = require('./first')
|
|
9
9
|
const flatten = require('./flatten')
|
|
10
|
-
const forEach = require('./forEach')
|
|
11
10
|
const groupBy = require('./groupBy')
|
|
12
11
|
const has = require('./has')
|
|
13
12
|
const identity = require('./identity')
|
|
@@ -43,7 +42,6 @@ const rubicoX = {
|
|
|
43
42
|
findIndex,
|
|
44
43
|
first,
|
|
45
44
|
flatten,
|
|
46
|
-
forEach,
|
|
47
45
|
groupBy,
|
|
48
46
|
has,
|
|
49
47
|
identity,
|
package/x/pluck.js
CHANGED
|
@@ -7,28 +7,19 @@ const get = require('../get')
|
|
|
7
7
|
*
|
|
8
8
|
* @synopsis
|
|
9
9
|
* ```coffeescript [specscript]
|
|
10
|
-
*
|
|
11
|
-
* Reducer<T> = (any, T)=>Promise|any
|
|
10
|
+
* pluck(path string)(array Array) -> result Array
|
|
12
11
|
*
|
|
13
|
-
*
|
|
14
|
-
* mapper T=>Promise|any,
|
|
15
|
-
* functor Functor<T>
|
|
16
|
-
* args ...any,
|
|
17
|
-
* generatorFunction ...args=>Generator<T>,
|
|
18
|
-
* asyncGeneratorFunction ...args=>AsyncGenerator<T>,
|
|
19
|
-
* reducer Reducer<T>
|
|
20
|
-
*
|
|
21
|
-
* pluck(functor) -> Promise|Functor
|
|
22
|
-
*
|
|
23
|
-
* pluck(generatorFunction) -> ...args=>Generator
|
|
24
|
-
*
|
|
25
|
-
* pluck(asyncGeneratorFunction) -> ...args=>AsyncGenerator
|
|
26
|
-
*
|
|
27
|
-
* pluck(reducer) -> Reducer
|
|
12
|
+
* pluck(array Array, path string) -> result Array
|
|
28
13
|
* ```
|
|
29
14
|
*
|
|
30
15
|
* @description
|
|
31
|
-
*
|
|
16
|
+
* Creates an array of picked properties denoted by a path from another array.
|
|
17
|
+
*
|
|
18
|
+
* `pluck` supports three types of path patterns for nested property access.
|
|
19
|
+
*
|
|
20
|
+
* * dot delimited - `'a.b.c'`
|
|
21
|
+
* * bracket notation - `'a[0].value'`
|
|
22
|
+
* * an array of keys or indices - `['a', 0, 'value']`
|
|
32
23
|
*
|
|
33
24
|
* ```javascript [playground]
|
|
34
25
|
* import pluck from 'https://unpkg.com/rubico/dist/x/pluck.es.js'
|
|
@@ -39,18 +30,18 @@ const get = require('../get')
|
|
|
39
30
|
* { name: 'Jim', age: 22 },
|
|
40
31
|
* ]
|
|
41
32
|
*
|
|
42
|
-
* const usernames = pluck('name')
|
|
33
|
+
* const usernames = pluck(users, 'name')
|
|
43
34
|
*
|
|
44
35
|
* console.log(usernames) // ['George', 'Jane', 'Jim']
|
|
45
|
-
*
|
|
46
|
-
* const add = (a, b) => a + b
|
|
47
|
-
*
|
|
48
|
-
* console.log(
|
|
49
|
-
* 'total age:',
|
|
50
|
-
* users.reduce(pluck('age')(add), 0),
|
|
51
|
-
* ) // total age: 96
|
|
52
36
|
* ```
|
|
53
37
|
*/
|
|
54
|
-
const pluck =
|
|
38
|
+
const pluck = function (...args) {
|
|
39
|
+
const path = args.pop()
|
|
40
|
+
const getter = get(path)
|
|
41
|
+
if (args.length == 0) {
|
|
42
|
+
return map(getter)
|
|
43
|
+
}
|
|
44
|
+
return map(args[0], getter)
|
|
45
|
+
}
|
|
55
46
|
|
|
56
47
|
module.exports = pluck
|
package/x/pluck.test.js
CHANGED
|
@@ -5,17 +5,13 @@ const createAbc = v => ({ a: { b: { c: v } } })
|
|
|
5
5
|
|
|
6
6
|
describe('pluck', () => {
|
|
7
7
|
it('creates a new collection by getting a path from every item of an old collection', async () => {
|
|
8
|
+
const nested = [1, 2, 3].map(createAbc)
|
|
8
9
|
assert.deepEqual(
|
|
9
|
-
pluck('a.b.c')(
|
|
10
|
+
pluck('a.b.c')(nested),
|
|
10
11
|
[1, 2, 3],
|
|
11
12
|
)
|
|
12
|
-
})
|
|
13
|
-
it('works in transducer position', async () => {
|
|
14
13
|
assert.deepEqual(
|
|
15
|
-
|
|
16
|
-
pluck('a.b.c')((a, b) => a.concat([b])),
|
|
17
|
-
[],
|
|
18
|
-
),
|
|
14
|
+
pluck(nested, 'a.b.c'),
|
|
19
15
|
[1, 2, 3],
|
|
20
16
|
)
|
|
21
17
|
})
|
package/x/timeInLoop.js
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
|
+
const _timeInLoop = require('../_internal/timeInLoop')
|
|
2
|
+
const timeInLoopAsync = require('../_internal/timeInLoopAsync')
|
|
3
|
+
|
|
1
4
|
/**
|
|
2
5
|
* @name timeInLoop
|
|
3
6
|
*
|
|
4
7
|
* @synopsis
|
|
5
8
|
* timeInLoop(desc string, loopCount number, fn function) -> undefined
|
|
6
9
|
*
|
|
7
|
-
* @
|
|
8
|
-
*
|
|
10
|
+
* @description
|
|
11
|
+
* Logs the amount of time required for a function to run a certain number of times
|
|
12
|
+
*
|
|
13
|
+
* ```coffeescript [specscript]
|
|
14
|
+
* timeInLoop('hello', 1e6, () => 'hello') // hello: 1e+6: 3.474ms
|
|
15
|
+
* ```
|
|
9
16
|
*
|
|
10
|
-
*
|
|
11
|
-
* timeInLoop('yo', 1e6, () => 'yo') // yo: 1e+6: 3.474ms
|
|
17
|
+
* Reference: https://gist.github.com/funfunction/91b5876a5f562e1e352aed0fcabc3858
|
|
12
18
|
*/
|
|
13
|
-
const timeInLoop =
|
|
14
|
-
const d = `${desc}: ${loopCount.toExponential()}`
|
|
15
|
-
console.time(d)
|
|
16
|
-
for (let i = 0; i < loopCount; i++) {
|
|
17
|
-
fn()
|
|
18
|
-
}
|
|
19
|
-
console.timeEnd(d)
|
|
20
|
-
}
|
|
19
|
+
const timeInLoop = _timeInLoop
|
|
21
20
|
|
|
22
21
|
/**
|
|
23
22
|
* @name timeInLoop.async
|
|
@@ -25,21 +24,13 @@ const timeInLoop = (desc, loopCount, fn) => {
|
|
|
25
24
|
* @synopsis
|
|
26
25
|
* timeInLoop.async(desc string, loopCount number, fn function) -> undefined
|
|
27
26
|
*
|
|
28
|
-
* @
|
|
27
|
+
* @description
|
|
29
28
|
* Like timeInLoop, but every call is awaited
|
|
30
29
|
*
|
|
31
|
-
*
|
|
32
|
-
* timeInLoop.async('
|
|
30
|
+
* ```coffeescript [specscript]
|
|
31
|
+
* timeInLoop.async('async hello', 1e6, async () => 'hello') // async hello: 1e+6: 116.006ms
|
|
32
|
+
* ```
|
|
33
33
|
*/
|
|
34
|
-
timeInLoop.async =
|
|
35
|
-
const d = `${desc}: ${loopCount.toExponential()}`
|
|
36
|
-
console.time(d)
|
|
37
|
-
for (let i = 0; i < loopCount; i++) {
|
|
38
|
-
await fn()
|
|
39
|
-
}
|
|
40
|
-
console.timeEnd(d)
|
|
41
|
-
}
|
|
34
|
+
timeInLoop.async = timeInLoopAsync
|
|
42
35
|
|
|
43
36
|
module.exports = timeInLoop
|
|
44
|
-
|
|
45
|
-
// thanks: https://gist.github.com/funfunction/91b5876a5f562e1e352aed0fcabc3858
|
package/x/timeInLoop.test.js
CHANGED
|
@@ -3,14 +3,18 @@ const timeInLoop = require('./timeInLoop')
|
|
|
3
3
|
|
|
4
4
|
describe('timeInLoop', () => {
|
|
5
5
|
it('timeInLoop(desc string, loopCount number, fn function) -> y undefined', async () => {
|
|
6
|
-
const
|
|
7
|
-
assert.
|
|
6
|
+
const result = timeInLoop('hey', 1e5, () => 'hey')
|
|
7
|
+
assert.equal(result.description, 'hey')
|
|
8
|
+
assert.equal(result.loopCount, 1e5)
|
|
9
|
+
assert.equal(typeof result.duration, 'number')
|
|
8
10
|
})
|
|
9
11
|
|
|
10
12
|
it('timeInLoop.async(desc string, loopCount number, fn function) -> y undefined', async () => {
|
|
11
13
|
const p = timeInLoop.async('asyncHey', 1e5, async () => 'asyncHey')
|
|
12
14
|
assert(p instanceof Promise)
|
|
13
|
-
const
|
|
14
|
-
assert.
|
|
15
|
+
const result = await p
|
|
16
|
+
assert.equal(result.description, 'asyncHey')
|
|
17
|
+
assert.equal(result.loopCount, 1e5)
|
|
18
|
+
assert.equal(typeof result.duration, 'number')
|
|
15
19
|
})
|
|
16
20
|
})
|