rubico 1.9.7 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +5 -0
- package/.eslintrc.js +3 -2
- package/.github/workflows/nodejs.yml +1 -1
- package/AggregateReducer.js +19 -0
- package/AggregateReducer.test.js +82 -0
- package/CHANGELOG.md +22 -1
- package/Transducer.js +75 -26
- package/Transducer.test.js +117 -0
- package/_internal/ComparisonOperator.js +68 -0
- package/_internal/File.js +41 -0
- package/_internal/FlatMappingAsyncIterator.js +4 -4
- package/_internal/FlatMappingIterator.js +1 -1
- package/_internal/TimeInLoopSuite.js +138 -0
- package/_internal/areAnyValuesPromises.js +23 -0
- package/_internal/{arrayAll.js → arrayEvery.js} +4 -4
- package/_internal/arrayExtend.js +3 -2
- package/_internal/arrayFilter.js +3 -4
- package/_internal/{arrayAny.js → arraySome.js} +8 -8
- package/_internal/{asyncIteratorAll.js → asyncIteratorEvery.js} +4 -4
- package/_internal/{asyncIteratorAny.js → asyncIteratorSome.js} +4 -4
- package/_internal/curry4.test.js +25 -0
- package/_internal/curry5.test.js +29 -0
- package/_internal/curryArgs2.js +43 -0
- package/_internal/curryArgs3.test.js +21 -0
- package/_internal/curryArgs4.js +65 -0
- package/_internal/curryArgs4.test.js +25 -0
- package/_internal/equals.js +13 -0
- package/_internal/findAllFilePaths.js +22 -0
- package/_internal/funcApply.js +2 -0
- package/_internal/funcCall.js +14 -0
- package/_internal/functionArrayAll.js +26 -0
- package/_internal/functionArrayAllSeries.js +55 -0
- package/_internal/functionObjectAll.js +32 -0
- package/_internal/genericReduce.js +4 -22
- package/_internal/genericTransform.js +15 -15
- package/_internal/improvedGenericTransform.js +93 -0
- package/_internal/{iteratorAll.js → iteratorEvery.js} +4 -4
- package/_internal/{iteratorAny.js → iteratorSome.js} +6 -6
- package/_internal/leftResolverRightResolverCompare.js +19 -0
- package/_internal/leftResolverRightValueCompare.js +16 -0
- package/_internal/leftValueRightResolverCompare.js +16 -0
- package/_internal/objectReduce.js +0 -1
- package/_internal/pathResolve.js +6 -0
- package/_internal/{reducerAll.js → reducerEvery.js} +4 -4
- package/_internal/reducerFlatMap.js +4 -4
- package/_internal/reducerFlatten.js +1 -1
- package/_internal/{reducerAny.js → reducerSome.js} +4 -4
- package/_internal/timeInLoop.js +37 -0
- package/_internal/timeInLoop.test.js +18 -0
- package/_internal/timeInLoopAsync.js +35 -0
- package/_internal/timeInLoopAsync.test.js +22 -0
- package/all.js +106 -40
- package/and.js +54 -36
- package/archive/{FlatMappingIteratorCool.js → FlatMappingIterator-2020-09-28.js} +1 -1
- package/archive/_Promise-2023-05-29.js +93 -0
- package/archive/arrayMap2-2023-05-29.js +73 -0
- package/archive/benchmarks-v1.9.7/all.js +34 -0
- package/archive/benchmarks-v1.9.7/and.js +24 -0
- package/archive/benchmarks-v1.9.7/assign.js +174 -0
- package/archive/benchmarks-v1.9.7/curry.js +55 -0
- package/archive/benchmarks-v1.9.7/eq.js +25 -0
- package/archive/benchmarks-v1.9.7/filter.js +1322 -0
- package/archive/benchmarks-v1.9.7/flatMap.js +48 -0
- package/archive/benchmarks-v1.9.7/get.js +44 -0
- package/archive/benchmarks-v1.9.7/gt.js +25 -0
- package/archive/benchmarks-v1.9.7/gte.js +25 -0
- package/archive/benchmarks-v1.9.7/lt.js +25 -0
- package/archive/benchmarks-v1.9.7/lte.js +25 -0
- package/archive/benchmarks-v1.9.7/map.js +892 -0
- package/archive/benchmarks-v1.9.7/omit.js +28 -0
- package/archive/benchmarks-v1.9.7/or.js +51 -0
- package/archive/benchmarks-v1.9.7/pick.js +24 -0
- package/archive/benchmarks-v1.9.7/pipe.js +152 -0
- package/archive/benchmarks-v1.9.7/reduce.js +739 -0
- package/archive/benchmarks-v1.9.7/switchCase.js +256 -0
- package/archive/benchmarks-v1.9.7/tap.js +90 -0
- package/archive/benchmarks-v1.9.7/transform.js +218 -0
- package/archive/benchmarks-v1.9.7/tryCatch.js +108 -0
- package/assign.js +18 -8
- package/bench +65 -0
- package/benchmark-output/v1.9.7 +268 -0
- package/benchmarks/all.async.js +43 -0
- package/benchmarks/all.js +42 -33
- package/benchmarks/always.js +15 -0
- package/benchmarks/and.async.js +25 -0
- package/benchmarks/and.js +20 -19
- package/benchmarks/assign.async.js +27 -0
- package/benchmarks/assign.js +20 -167
- package/benchmarks/curry.js +34 -54
- package/benchmarks/eq.async.js +23 -0
- package/benchmarks/eq.js +17 -19
- package/benchmarks/every.async.js +19 -0
- package/benchmarks/every.js +19 -0
- package/benchmarks/filter.async.js +32 -0
- package/benchmarks/filter.js +27 -1311
- package/benchmarks/flatMap.async.js +26 -0
- package/benchmarks/flatMap.js +26 -36
- package/benchmarks/get.async.js +19 -0
- package/benchmarks/get.js +27 -32
- package/benchmarks/gt.async.js +23 -0
- package/benchmarks/gt.js +17 -19
- package/benchmarks/gte.async.js +23 -0
- package/benchmarks/gte.js +17 -19
- package/benchmarks/lt.async.js +23 -0
- package/benchmarks/lt.js +17 -19
- package/benchmarks/lte.async.js +23 -0
- package/benchmarks/lte.js +17 -19
- package/benchmarks/map.async.js +43 -0
- package/benchmarks/map.js +24 -876
- package/benchmarks/misc/Promise.js +26 -0
- package/benchmarks/misc/isPromise.js +30 -0
- package/benchmarks/misc/promiseAll.js +36 -0
- package/benchmarks/not.js +23 -0
- package/benchmarks/omit.js +30 -20
- package/benchmarks/or.async.js +25 -0
- package/benchmarks/or.js +23 -49
- package/benchmarks/pick.js +30 -16
- package/benchmarks/pipe.async.js +47 -0
- package/benchmarks/pipe.js +46 -151
- package/benchmarks/reduce.async.js +32 -0
- package/benchmarks/reduce.js +27 -728
- package/benchmarks/set.async.js +19 -0
- package/benchmarks/set.js +41 -0
- package/benchmarks/some.async.js +19 -0
- package/benchmarks/some.js +19 -0
- package/benchmarks/switchCase.async.js +27 -0
- package/benchmarks/switchCase.js +55 -256
- package/benchmarks/tap.js +10 -85
- package/benchmarks/thunkify.js +15 -0
- package/benchmarks/transform.async.js +27 -0
- package/benchmarks/transform.js +28 -206
- package/benchmarks/tryCatch.async.js +25 -0
- package/benchmarks/tryCatch.js +24 -100
- package/{distributor.js → build} +50 -50
- package/compose.js +46 -0
- package/dist/__.es.js +2 -2
- package/dist/__.es.min.js +2 -2
- package/dist/__.js +2 -2
- package/dist/__.min.js +2 -2
- package/dist/__.min.mjs +2 -2
- package/dist/__.mjs +2 -2
- package/dist/all.es.js +173 -92
- package/dist/all.es.min.js +3 -3
- package/dist/all.js +173 -92
- package/dist/all.min.js +3 -3
- package/dist/all.min.mjs +3 -3
- package/dist/all.mjs +173 -92
- package/dist/always.es.js +2 -2
- package/dist/always.es.min.js +2 -2
- package/dist/always.js +2 -2
- package/dist/always.min.js +2 -2
- package/dist/always.min.mjs +2 -2
- package/dist/always.mjs +2 -2
- package/dist/and.es.js +101 -32
- package/dist/and.es.min.js +3 -3
- package/dist/and.js +101 -32
- package/dist/and.min.js +3 -3
- package/dist/and.min.mjs +3 -3
- package/dist/and.mjs +101 -32
- package/dist/assign.es.js +37 -10
- package/dist/assign.es.min.js +3 -3
- package/dist/assign.js +37 -10
- package/dist/assign.min.js +3 -3
- package/dist/assign.min.mjs +3 -3
- package/dist/assign.mjs +37 -10
- package/dist/compose.es.js +71 -0
- package/dist/compose.es.min.js +7 -0
- package/dist/compose.js +78 -0
- package/dist/compose.min.js +8 -0
- package/dist/compose.min.mjs +7 -0
- package/dist/compose.mjs +71 -0
- package/dist/curry.es.js +2 -2
- package/dist/curry.es.min.js +2 -2
- package/dist/curry.js +2 -2
- package/dist/curry.min.js +2 -2
- package/dist/curry.min.mjs +2 -2
- package/dist/curry.mjs +2 -2
- package/dist/eq.es.js +172 -49
- package/dist/eq.es.min.js +3 -3
- package/dist/eq.js +172 -49
- package/dist/eq.min.js +3 -3
- package/dist/eq.min.mjs +3 -3
- package/dist/eq.mjs +172 -49
- package/dist/every.es.js +194 -0
- package/dist/every.es.min.js +7 -0
- package/dist/every.js +201 -0
- package/dist/every.min.js +8 -0
- package/dist/every.min.mjs +7 -0
- package/dist/every.mjs +194 -0
- package/dist/filter.es.js +14 -108
- package/dist/filter.es.min.js +3 -3
- package/dist/filter.js +14 -108
- package/dist/filter.min.js +3 -3
- package/dist/filter.min.mjs +3 -3
- package/dist/filter.mjs +14 -108
- package/dist/flatMap.es.js +27 -214
- package/dist/flatMap.es.min.js +3 -3
- package/dist/flatMap.js +27 -214
- package/dist/flatMap.min.js +3 -3
- package/dist/flatMap.min.mjs +3 -3
- package/dist/flatMap.mjs +27 -214
- package/dist/{x/forEach.es.js → forEach.es.js} +52 -70
- package/dist/forEach.es.min.js +7 -0
- package/dist/{x/forEach.js → forEach.js} +52 -70
- package/dist/forEach.min.js +8 -0
- package/dist/forEach.min.mjs +7 -0
- package/dist/{x/forEach.mjs → forEach.mjs} +52 -70
- package/dist/get.es.js +60 -5
- package/dist/get.es.min.js +3 -3
- package/dist/get.js +60 -5
- package/dist/get.min.js +3 -3
- package/dist/get.min.mjs +3 -3
- package/dist/get.mjs +60 -5
- package/dist/gt.es.js +171 -48
- package/dist/gt.es.min.js +3 -3
- package/dist/gt.js +171 -48
- package/dist/gt.min.js +3 -3
- package/dist/gt.min.mjs +3 -3
- package/dist/gt.mjs +171 -48
- package/dist/gte.es.js +171 -48
- package/dist/gte.es.min.js +3 -3
- package/dist/gte.js +171 -48
- package/dist/gte.min.js +3 -3
- package/dist/gte.min.mjs +3 -3
- package/dist/gte.mjs +171 -48
- package/dist/lt.es.js +171 -48
- package/dist/lt.es.min.js +3 -3
- package/dist/lt.js +171 -48
- package/dist/lt.min.js +3 -3
- package/dist/lt.min.mjs +3 -3
- package/dist/lt.mjs +171 -48
- package/dist/lte.es.js +171 -48
- package/dist/lte.es.min.js +3 -3
- package/dist/lte.js +171 -48
- package/dist/lte.min.js +3 -3
- package/dist/lte.min.mjs +3 -3
- package/dist/lte.mjs +171 -48
- package/dist/map.es.js +12 -101
- package/dist/map.es.min.js +3 -3
- package/dist/map.js +12 -101
- package/dist/map.min.js +3 -3
- package/dist/map.min.mjs +3 -3
- package/dist/map.mjs +12 -101
- package/dist/not.es.js +75 -14
- package/dist/not.es.min.js +3 -3
- package/dist/not.js +75 -14
- package/dist/not.min.js +3 -3
- package/dist/not.min.mjs +3 -3
- package/dist/not.mjs +75 -14
- package/dist/omit.es.js +7 -2
- package/dist/omit.es.min.js +3 -3
- package/dist/omit.js +7 -2
- package/dist/omit.min.js +3 -3
- package/dist/omit.min.mjs +3 -3
- package/dist/omit.mjs +7 -2
- package/dist/or.es.js +99 -31
- package/dist/or.es.min.js +3 -3
- package/dist/or.js +99 -31
- package/dist/or.min.js +3 -3
- package/dist/or.min.mjs +3 -3
- package/dist/or.mjs +99 -31
- package/dist/pick.es.js +8 -3
- package/dist/pick.es.min.js +3 -3
- package/dist/pick.js +8 -3
- package/dist/pick.min.js +3 -3
- package/dist/pick.min.mjs +3 -3
- package/dist/pick.mjs +8 -3
- package/dist/pipe.es.js +42 -46
- package/dist/pipe.es.min.js +3 -3
- package/dist/pipe.js +42 -46
- package/dist/pipe.min.js +3 -3
- package/dist/pipe.min.mjs +3 -3
- package/dist/pipe.mjs +42 -46
- package/dist/reduce.es.js +52 -94
- package/dist/reduce.es.min.js +3 -3
- package/dist/reduce.js +52 -94
- package/dist/reduce.min.js +3 -3
- package/dist/reduce.min.mjs +3 -3
- package/dist/reduce.mjs +52 -94
- package/dist/rubico.es.js +730 -869
- package/dist/rubico.es.min.js +3 -3
- package/dist/rubico.js +730 -869
- package/dist/rubico.min.js +3 -3
- package/dist/rubico.min.mjs +3 -3
- package/dist/rubico.mjs +730 -869
- package/dist/set.es.js +18 -3
- package/dist/set.es.min.js +3 -3
- package/dist/set.js +18 -3
- package/dist/set.min.js +3 -3
- package/dist/set.min.mjs +3 -3
- package/dist/set.mjs +18 -3
- package/dist/{any.js → some.es.js} +64 -54
- package/dist/some.es.min.js +7 -0
- package/dist/{any.mjs → some.js} +72 -48
- package/dist/some.min.js +8 -0
- package/dist/some.min.mjs +7 -0
- package/dist/{any.es.js → some.mjs} +65 -48
- package/dist/switchCase.es.js +55 -5
- package/dist/switchCase.es.min.js +3 -3
- package/dist/switchCase.js +55 -5
- package/dist/switchCase.min.js +3 -3
- package/dist/switchCase.min.mjs +3 -3
- package/dist/switchCase.mjs +55 -5
- package/dist/tap.es.js +2 -9
- package/dist/tap.es.min.js +3 -3
- package/dist/tap.js +2 -9
- package/dist/tap.min.js +3 -3
- package/dist/tap.min.mjs +3 -3
- package/dist/tap.mjs +2 -9
- package/dist/thunkify.es.js +45 -2
- package/dist/thunkify.es.min.js +3 -3
- package/dist/thunkify.js +45 -2
- package/dist/thunkify.min.js +3 -3
- package/dist/thunkify.min.mjs +3 -3
- package/dist/thunkify.mjs +45 -2
- package/dist/transform.es.js +35 -71
- package/dist/transform.es.min.js +3 -3
- package/dist/transform.js +35 -71
- package/dist/transform.min.js +3 -3
- package/dist/transform.min.mjs +3 -3
- package/dist/transform.mjs +35 -71
- package/dist/tryCatch.es.js +33 -17
- package/dist/tryCatch.es.min.js +3 -3
- package/dist/tryCatch.js +33 -17
- package/dist/tryCatch.min.js +3 -3
- package/dist/tryCatch.min.mjs +3 -3
- package/dist/tryCatch.mjs +33 -17
- package/dist/x/append.es.js +2 -2
- package/dist/x/append.es.min.js +2 -2
- package/dist/x/append.js +2 -2
- package/dist/x/append.min.js +2 -2
- package/dist/x/append.min.mjs +2 -2
- package/dist/x/append.mjs +2 -2
- package/dist/x/callProp.es.js +2 -2
- package/dist/x/callProp.es.min.js +2 -2
- package/dist/x/callProp.js +2 -2
- package/dist/x/callProp.min.js +2 -2
- package/dist/x/callProp.min.mjs +2 -2
- package/dist/x/callProp.mjs +2 -2
- package/dist/x/defaultsDeep.es.js +2 -2
- package/dist/x/defaultsDeep.es.min.js +2 -2
- package/dist/x/defaultsDeep.js +2 -2
- package/dist/x/defaultsDeep.min.js +2 -2
- package/dist/x/defaultsDeep.min.mjs +2 -2
- package/dist/x/defaultsDeep.mjs +2 -2
- package/dist/x/differenceWith.es.js +7 -7
- package/dist/x/differenceWith.es.min.js +3 -3
- package/dist/x/differenceWith.js +7 -7
- package/dist/x/differenceWith.min.js +2 -2
- package/dist/x/differenceWith.min.mjs +3 -3
- package/dist/x/differenceWith.mjs +7 -7
- package/dist/x/filterOut.es.js +60 -117
- package/dist/x/filterOut.es.min.js +3 -3
- package/dist/x/filterOut.js +60 -117
- package/dist/x/filterOut.min.js +3 -3
- package/dist/x/filterOut.min.mjs +3 -3
- package/dist/x/filterOut.mjs +60 -117
- package/dist/x/find.es.js +2 -2
- package/dist/x/find.es.min.js +2 -2
- package/dist/x/find.js +2 -2
- package/dist/x/find.min.js +2 -2
- package/dist/x/find.min.mjs +2 -2
- package/dist/x/find.mjs +2 -2
- package/dist/x/findIndex.es.js +2 -2
- package/dist/x/findIndex.es.min.js +2 -2
- package/dist/x/findIndex.js +2 -2
- package/dist/x/findIndex.min.js +2 -2
- package/dist/x/findIndex.min.mjs +2 -2
- package/dist/x/findIndex.mjs +2 -2
- package/dist/x/first.es.js +2 -2
- package/dist/x/first.es.min.js +2 -2
- package/dist/x/first.js +2 -2
- package/dist/x/first.min.js +2 -2
- package/dist/x/first.min.mjs +2 -2
- package/dist/x/first.mjs +2 -2
- package/dist/x/flatten.es.js +20 -207
- package/dist/x/flatten.es.min.js +3 -3
- package/dist/x/flatten.js +20 -207
- package/dist/x/flatten.min.js +3 -3
- package/dist/x/flatten.min.mjs +3 -3
- package/dist/x/flatten.mjs +20 -207
- package/dist/x/groupBy.es.js +52 -94
- package/dist/x/groupBy.es.min.js +3 -3
- package/dist/x/groupBy.js +52 -94
- package/dist/x/groupBy.min.js +3 -3
- package/dist/x/groupBy.min.mjs +3 -3
- package/dist/x/groupBy.mjs +52 -94
- package/dist/x/has.es.js +2 -2
- package/dist/x/has.es.min.js +2 -2
- package/dist/x/has.js +2 -2
- package/dist/x/has.min.js +2 -2
- package/dist/x/has.min.mjs +2 -2
- package/dist/x/has.mjs +2 -2
- package/dist/x/identity.es.js +2 -2
- package/dist/x/identity.es.min.js +2 -2
- package/dist/x/identity.js +2 -2
- package/dist/x/identity.min.js +2 -2
- package/dist/x/identity.min.mjs +2 -2
- package/dist/x/identity.mjs +2 -2
- package/dist/x/includes.es.js +2 -2
- package/dist/x/includes.es.min.js +2 -2
- package/dist/x/includes.js +2 -2
- package/dist/x/includes.min.js +2 -2
- package/dist/x/includes.min.mjs +2 -2
- package/dist/x/includes.mjs +2 -2
- package/dist/x/isDeepEqual.es.js +2 -2
- package/dist/x/isDeepEqual.es.min.js +2 -2
- package/dist/x/isDeepEqual.js +2 -2
- package/dist/x/isDeepEqual.min.js +2 -2
- package/dist/x/isDeepEqual.min.mjs +2 -2
- package/dist/x/isDeepEqual.mjs +2 -2
- package/dist/x/isEmpty.es.js +2 -2
- package/dist/x/isEmpty.es.min.js +2 -2
- package/dist/x/isEmpty.js +2 -2
- package/dist/x/isEmpty.min.js +2 -2
- package/dist/x/isEmpty.min.mjs +2 -2
- package/dist/x/isEmpty.mjs +2 -2
- package/dist/x/isEqual.es.js +2 -2
- package/dist/x/isEqual.es.min.js +2 -2
- package/dist/x/isEqual.js +2 -2
- package/dist/x/isEqual.min.js +2 -2
- package/dist/x/isEqual.min.mjs +2 -2
- package/dist/x/isEqual.mjs +2 -2
- package/dist/x/isFunction.es.js +2 -2
- package/dist/x/isFunction.es.min.js +2 -2
- package/dist/x/isFunction.js +2 -2
- package/dist/x/isFunction.min.js +2 -2
- package/dist/x/isFunction.min.mjs +2 -2
- package/dist/x/isFunction.mjs +2 -2
- package/dist/x/isIn.es.js +2 -2
- package/dist/x/isIn.es.min.js +2 -2
- package/dist/x/isIn.js +2 -2
- package/dist/x/isIn.min.js +2 -2
- package/dist/x/isIn.min.mjs +2 -2
- package/dist/x/isIn.mjs +2 -2
- package/dist/x/isObject.es.js +2 -2
- package/dist/x/isObject.es.min.js +2 -2
- package/dist/x/isObject.js +2 -2
- package/dist/x/isObject.min.js +2 -2
- package/dist/x/isObject.min.mjs +2 -2
- package/dist/x/isObject.mjs +2 -2
- package/dist/x/isString.es.js +2 -2
- package/dist/x/isString.es.min.js +2 -2
- package/dist/x/isString.js +2 -2
- package/dist/x/isString.min.js +2 -2
- package/dist/x/isString.min.mjs +2 -2
- package/dist/x/isString.mjs +2 -2
- package/dist/x/keys.es.js +2 -2
- package/dist/x/keys.es.min.js +2 -2
- package/dist/x/keys.js +2 -2
- package/dist/x/keys.min.js +2 -2
- package/dist/x/keys.min.mjs +2 -2
- package/dist/x/keys.mjs +2 -2
- package/dist/x/last.es.js +2 -2
- package/dist/x/last.es.min.js +2 -2
- package/dist/x/last.js +2 -2
- package/dist/x/last.min.js +2 -2
- package/dist/x/last.min.mjs +2 -2
- package/dist/x/last.mjs +2 -2
- package/dist/x/maxBy.es.js +59 -6
- package/dist/x/maxBy.es.min.js +3 -3
- package/dist/x/maxBy.js +59 -6
- package/dist/x/maxBy.min.js +3 -3
- package/dist/x/maxBy.min.mjs +3 -3
- package/dist/x/maxBy.mjs +59 -6
- package/dist/x/noop.es.js +2 -2
- package/dist/x/noop.es.min.js +2 -2
- package/dist/x/noop.js +2 -2
- package/dist/x/noop.min.js +2 -2
- package/dist/x/noop.min.mjs +2 -2
- package/dist/x/noop.mjs +2 -2
- package/dist/x/pluck.es.js +32 -103
- package/dist/x/pluck.es.min.js +3 -3
- package/dist/x/pluck.js +32 -103
- package/dist/x/pluck.min.js +3 -3
- package/dist/x/pluck.min.mjs +3 -3
- package/dist/x/pluck.mjs +32 -103
- package/dist/x/prepend.es.js +2 -2
- package/dist/x/prepend.es.min.js +2 -2
- package/dist/x/prepend.js +2 -2
- package/dist/x/prepend.min.js +2 -2
- package/dist/x/prepend.min.mjs +2 -2
- package/dist/x/prepend.mjs +2 -2
- package/dist/x/size.es.js +2 -2
- package/dist/x/size.es.min.js +2 -2
- package/dist/x/size.js +2 -2
- package/dist/x/size.min.js +2 -2
- package/dist/x/size.min.mjs +2 -2
- package/dist/x/size.mjs +2 -2
- package/dist/x/trace.es.js +2 -9
- package/dist/x/trace.es.min.js +3 -3
- package/dist/x/trace.js +2 -9
- package/dist/x/trace.min.js +3 -3
- package/dist/x/trace.min.mjs +3 -3
- package/dist/x/trace.mjs +2 -9
- package/dist/x/unionWith.es.js +2 -2
- package/dist/x/unionWith.es.min.js +2 -2
- package/dist/x/unionWith.js +2 -2
- package/dist/x/unionWith.min.js +2 -2
- package/dist/x/unionWith.min.mjs +2 -2
- package/dist/x/unionWith.mjs +2 -2
- package/dist/x/uniq.es.js +2 -2
- package/dist/x/uniq.es.min.js +2 -2
- package/dist/x/uniq.js +2 -2
- package/dist/x/uniq.min.js +2 -2
- package/dist/x/uniq.min.mjs +2 -2
- package/dist/x/uniq.mjs +2 -2
- package/dist/x/unless.es.js +2 -2
- package/dist/x/unless.es.min.js +2 -2
- package/dist/x/unless.js +2 -2
- package/dist/x/unless.min.js +2 -2
- package/dist/x/unless.min.mjs +2 -2
- package/dist/x/unless.mjs +2 -2
- package/dist/x/values.es.js +2 -2
- package/dist/x/values.es.min.js +2 -2
- package/dist/x/values.js +2 -2
- package/dist/x/values.min.js +2 -2
- package/dist/x/values.min.mjs +2 -2
- package/dist/x/values.mjs +2 -2
- package/dist/x/when.es.js +2 -2
- package/dist/x/when.es.min.js +2 -2
- package/dist/x/when.js +2 -2
- package/dist/x/when.min.js +2 -2
- package/dist/x/when.min.mjs +2 -2
- package/dist/x/when.mjs +2 -2
- package/dist-test.js +9 -2042
- package/eq.js +21 -63
- package/es.js +730 -869
- package/every.js +94 -0
- package/filter.js +23 -91
- package/flatMap.js +75 -70
- package/forEach.js +82 -0
- package/get.js +23 -6
- package/global.js +6 -4
- package/gt.js +15 -58
- package/gte.js +14 -57
- package/index.js +730 -869
- package/lt.js +17 -60
- package/lte.js +14 -57
- package/map.js +9 -94
- package/memory-usage/reduce.js +2 -2
- package/not.js +27 -45
- package/omit.js +4 -0
- package/or.js +50 -33
- package/package.json +7 -7
- package/pick.js +5 -1
- package/pipe.js +13 -50
- package/reduce.js +42 -51
- package/rubico.js +10 -8
- package/set.js +43 -10
- package/some.js +105 -0
- package/switchCase.js +13 -3
- package/tap.js +0 -24
- package/test.js +847 -1096
- package/thunkify.js +9 -0
- package/transform.js +31 -16
- package/tryCatch.js +19 -15
- package/x/differenceWith.js +3 -3
- package/x/filterOut.test.js +6 -6
- package/x/flatten.js +1 -1
- package/x/flatten.test.js +0 -8
- package/x/index.js +0 -2
- package/x/pluck.js +18 -27
- package/x/pluck.test.js +3 -7
- package/x/timeInLoop.js +16 -25
- package/x/timeInLoop.test.js +8 -4
- package/any.js +0 -82
- package/dist/any.es.min.js +0 -7
- package/dist/any.min.js +0 -8
- package/dist/any.min.mjs +0 -7
- package/dist/fork.es.js +0 -159
- package/dist/fork.es.min.js +0 -7
- package/dist/fork.js +0 -166
- package/dist/fork.min.js +0 -8
- package/dist/fork.min.mjs +0 -7
- package/dist/fork.mjs +0 -159
- package/dist/x/forEach.es.min.js +0 -7
- package/dist/x/forEach.min.js +0 -8
- package/dist/x/forEach.min.mjs +0 -7
- package/fork.js +0 -101
- package/x/forEach.js +0 -93
- package/x/forEach.test.js +0 -218
- /package/{benchmarks → archive/benchmarks-v1.9.7}/any.js +0 -0
- /package/{x/forEach.benchmark.js → archive/benchmarks-v1.9.7/forEach.js} +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/fork.js +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/integration.js +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/misc.js +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const always = require('./always')
|
|
2
|
+
const isPromise = require('./isPromise')
|
|
3
|
+
const promiseAll = require('./promiseAll')
|
|
4
|
+
const __ = require('./placeholder')
|
|
5
|
+
const curry3 = require('./curry3')
|
|
6
|
+
const objectSet = require('./objectSet')
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @name functionObjectAll
|
|
10
|
+
*
|
|
11
|
+
* @synopsis
|
|
12
|
+
* ```coffeescript [specscript]
|
|
13
|
+
* functionObjectAll(funcs Array<function>, args Array) -> Promise|Object
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* @description
|
|
17
|
+
* Concurrently execute the same arguments for each function of an object of functions, returning an object of results.
|
|
18
|
+
*/
|
|
19
|
+
const functionObjectAll = function (funcs, args) {
|
|
20
|
+
const result = {}, promises = []
|
|
21
|
+
for (const key in funcs) {
|
|
22
|
+
const resultItem = funcs[key](...args)
|
|
23
|
+
if (isPromise(resultItem)) {
|
|
24
|
+
promises.push(resultItem.then(curry3(objectSet, result, key, __)))
|
|
25
|
+
} else {
|
|
26
|
+
result[key] = resultItem
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return promises.length == 0 ? result : promiseAll(promises).then(always(result))
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
module.exports = functionObjectAll
|
|
@@ -12,8 +12,6 @@ const curryArgs3 = require('./curryArgs3')
|
|
|
12
12
|
const arrayReduce = require('./arrayReduce')
|
|
13
13
|
const objectReduce = require('./objectReduce')
|
|
14
14
|
const mapReduce = require('./mapReduce')
|
|
15
|
-
const generatorFunctionReduce = require('./generatorFunctionReduce')
|
|
16
|
-
const asyncGeneratorFunctionReduce = require('./asyncGeneratorFunctionReduce')
|
|
17
15
|
const reducerConcat = require('./reducerConcat')
|
|
18
16
|
|
|
19
17
|
/**
|
|
@@ -25,7 +23,7 @@ const reducerConcat = require('./reducerConcat')
|
|
|
25
23
|
* |{ reduce: (any, T)=>any }|Object<T>
|
|
26
24
|
*
|
|
27
25
|
* genericReduce<T>(
|
|
28
|
-
*
|
|
26
|
+
* collection Foldable<T>,
|
|
29
27
|
* reducer (any, T)=>any,
|
|
30
28
|
* result any?,
|
|
31
29
|
* ) -> result
|
|
@@ -33,33 +31,17 @@ const reducerConcat = require('./reducerConcat')
|
|
|
33
31
|
*
|
|
34
32
|
* @related genericReduceConcurrent
|
|
35
33
|
*
|
|
36
|
-
* @TODO genericReduceSync(
|
|
34
|
+
* @TODO genericReduceSync(collection, reducer, init) - performance optimization for some of these genericReduces that we know are synchronous
|
|
37
35
|
*
|
|
38
|
-
* @TODO genericReducePool(poolSize,
|
|
36
|
+
* @TODO genericReducePool(poolSize, collection, reducer, init) - for some of these genericReduces that we want to race - result should not care about order of concatenations
|
|
39
37
|
* reduce.pool
|
|
40
38
|
* transform.pool
|
|
41
39
|
* flatMap.pool
|
|
42
40
|
*/
|
|
43
|
-
const genericReduce = function (
|
|
44
|
-
const collection = args[0]
|
|
41
|
+
const genericReduce = function (collection, reducer, result) {
|
|
45
42
|
if (isArray(collection)) {
|
|
46
43
|
return arrayReduce(collection, reducer, result)
|
|
47
44
|
}
|
|
48
|
-
if (typeof collection == 'function') {
|
|
49
|
-
if (isGeneratorFunction(collection)) {
|
|
50
|
-
return generatorFunctionReduce(collection, reducer, result)
|
|
51
|
-
}
|
|
52
|
-
if (isAsyncGeneratorFunction(collection)) {
|
|
53
|
-
return asyncGeneratorFunctionReduce(collection, reducer, result)
|
|
54
|
-
}
|
|
55
|
-
return curryArgs3(
|
|
56
|
-
genericReduce,
|
|
57
|
-
__,
|
|
58
|
-
args.length == 1
|
|
59
|
-
? reducerConcat(reducer, collection)
|
|
60
|
-
: args.reduce(reducerConcat, reducer),
|
|
61
|
-
result)
|
|
62
|
-
}
|
|
63
45
|
if (collection == null) {
|
|
64
46
|
return result === undefined
|
|
65
47
|
? curry2(reducer, collection, __)
|
|
@@ -24,7 +24,7 @@ const callConcat = require('./callConcat')
|
|
|
24
24
|
* Reducer = (any, any)=>Promise|any
|
|
25
25
|
*
|
|
26
26
|
* identityTransform<
|
|
27
|
-
*
|
|
27
|
+
* collection any,
|
|
28
28
|
* transducer Reducer=>Reducer,
|
|
29
29
|
* result undefined|null,
|
|
30
30
|
* >(args, transducer, result) -> Promise|result
|
|
@@ -33,8 +33,8 @@ const callConcat = require('./callConcat')
|
|
|
33
33
|
* @description
|
|
34
34
|
* Reduce a value, always returning the initial result
|
|
35
35
|
*/
|
|
36
|
-
const identityTransform = function (
|
|
37
|
-
const nil = genericReduce(
|
|
36
|
+
const identityTransform = function (collection, transducer, result) {
|
|
37
|
+
const nil = genericReduce(collection, transducer(noop), null)
|
|
38
38
|
return isPromise(nil) ? nil.then(always(result)) : result
|
|
39
39
|
}
|
|
40
40
|
|
|
@@ -48,44 +48,44 @@ const identityTransform = function (args, transducer, result) {
|
|
|
48
48
|
* |{ concat: function }|{ write: function }|Object
|
|
49
49
|
*
|
|
50
50
|
* genericTransform<
|
|
51
|
-
*
|
|
51
|
+
* collection any,
|
|
52
52
|
* transducer Reducer=>Reducer,
|
|
53
53
|
* result Semigroup|any,
|
|
54
|
-
* >(
|
|
54
|
+
* >(collection, transducer, result) -> result
|
|
55
55
|
* ```
|
|
56
56
|
*/
|
|
57
|
-
const genericTransform = function (
|
|
57
|
+
const genericTransform = function (collection, transducer, result) {
|
|
58
58
|
if (isArray(result)) {
|
|
59
|
-
return genericReduce(
|
|
59
|
+
return genericReduce(collection, transducer(arrayExtend), result)
|
|
60
60
|
}
|
|
61
61
|
if (isBinary(result)) {
|
|
62
|
-
const intermediateArray = genericReduce(
|
|
62
|
+
const intermediateArray = genericReduce(collection, transducer(arrayExtend), [])
|
|
63
63
|
return isPromise(intermediateArray)
|
|
64
64
|
? intermediateArray.then(curry2(binaryExtend, result, __))
|
|
65
65
|
: binaryExtend(result, intermediateArray)
|
|
66
66
|
}
|
|
67
67
|
if (result == null) {
|
|
68
|
-
return identityTransform(
|
|
68
|
+
return identityTransform(collection, transducer, result)
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
const resultConstructor = result.constructor
|
|
72
72
|
if (typeof result == 'string' || resultConstructor == String) {
|
|
73
73
|
// TODO: use array + join over adding
|
|
74
|
-
return genericReduce(
|
|
74
|
+
return genericReduce(collection, transducer(add), result)
|
|
75
75
|
}
|
|
76
76
|
if (typeof result.concat == 'function') {
|
|
77
|
-
return genericReduce(
|
|
77
|
+
return genericReduce(collection, transducer(callConcat), result)
|
|
78
78
|
}
|
|
79
79
|
if (typeof result.write == 'function') {
|
|
80
|
-
return genericReduce(
|
|
80
|
+
return genericReduce(collection, transducer(streamExtend), result)
|
|
81
81
|
}
|
|
82
82
|
if (resultConstructor == Set) {
|
|
83
|
-
return genericReduce(
|
|
83
|
+
return genericReduce(collection, transducer(setExtend), result)
|
|
84
84
|
}
|
|
85
85
|
if (resultConstructor == Object) {
|
|
86
|
-
return genericReduce(
|
|
86
|
+
return genericReduce(collection, transducer(objectAssign), result)
|
|
87
87
|
}
|
|
88
|
-
return identityTransform(
|
|
88
|
+
return identityTransform(collection, transducer, result)
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
module.exports = genericTransform
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
const isPromise = require('./isPromise')
|
|
2
|
+
const isArray = require('./isArray')
|
|
3
|
+
const isBinary = require('./isBinary')
|
|
4
|
+
const callPropUnary = require('./callPropUnary')
|
|
5
|
+
const __ = require('./placeholder')
|
|
6
|
+
const curry2 = require('./curry2')
|
|
7
|
+
const curry3 = require('./curry3')
|
|
8
|
+
const always = require('./always')
|
|
9
|
+
const noop = require('./noop')
|
|
10
|
+
const add = require('./add')
|
|
11
|
+
const genericReduce = require('./genericReduce')
|
|
12
|
+
const objectAssign = require('./objectAssign')
|
|
13
|
+
const arrayExtend = require('./arrayExtend')
|
|
14
|
+
const binaryExtend = require('./binaryExtend')
|
|
15
|
+
const streamExtend = require('./streamExtend')
|
|
16
|
+
const setExtend = require('./setExtend')
|
|
17
|
+
const callConcat = require('./callConcat')
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @name identityTransform
|
|
21
|
+
*
|
|
22
|
+
* @synopsis
|
|
23
|
+
* ```coffeescript [specscript]
|
|
24
|
+
* Reducer = (any, any)=>Promise|any
|
|
25
|
+
*
|
|
26
|
+
* identityTransform<
|
|
27
|
+
* collection any,
|
|
28
|
+
* transducer Reducer=>Reducer,
|
|
29
|
+
* accum undefined|null,
|
|
30
|
+
* >(args, transducer, accum) -> Promise|accum
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @description
|
|
34
|
+
* Reduce a value, always returning the initial accum
|
|
35
|
+
*/
|
|
36
|
+
const identityTransform = function (collection, transducer, accum) {
|
|
37
|
+
const nil = genericReduce(collection, transducer(noop), null)
|
|
38
|
+
return isPromise(nil) ? nil.then(always(accum)) : accum
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @name genericTransform
|
|
43
|
+
*
|
|
44
|
+
* @synopsis
|
|
45
|
+
* ```coffeescript [specscript]
|
|
46
|
+
* Reducer = (any, any)=>Promise|any
|
|
47
|
+
* Semigroup = Array|string|Set|TypedArray
|
|
48
|
+
* |{ concat: function }|{ write: function }|Object
|
|
49
|
+
*
|
|
50
|
+
* genericTransform<
|
|
51
|
+
* collection any,
|
|
52
|
+
* transducer Reducer=>Reducer,
|
|
53
|
+
* accum Semigroup|any,
|
|
54
|
+
* >(collection, transducer, accum) -> accum
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
const genericTransform = function (collection, transducer, accum) {
|
|
58
|
+
if (isArray(accum)) {
|
|
59
|
+
return genericReduce(collection, transducer(arrayExtend), accum)
|
|
60
|
+
}
|
|
61
|
+
if (isBinary(accum)) {
|
|
62
|
+
const intermediateArray = genericReduce(collection, transducer(arrayExtend), [])
|
|
63
|
+
return isPromise(intermediateArray)
|
|
64
|
+
? intermediateArray.then(curry2(binaryExtend, accum, __))
|
|
65
|
+
: binaryExtend(accum, intermediateArray)
|
|
66
|
+
}
|
|
67
|
+
if (accum == null) {
|
|
68
|
+
return identityTransform(collection, transducer, accum)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const constructor = accum.constructor
|
|
72
|
+
if (typeof accum == 'string' || constructor == String) {
|
|
73
|
+
const result = genericReduce(collection, transducer(arrayExtend), [accum])
|
|
74
|
+
return isPromise(result)
|
|
75
|
+
? result.then(curry3(callPropUnary, __, 'join', ''))
|
|
76
|
+
: result.join('')
|
|
77
|
+
}
|
|
78
|
+
if (typeof accum.concat == 'function') {
|
|
79
|
+
return genericReduce(collection, transducer(callConcat), accum)
|
|
80
|
+
}
|
|
81
|
+
if (typeof accum.write == 'function') {
|
|
82
|
+
return genericReduce(collection, transducer(streamExtend), accum)
|
|
83
|
+
}
|
|
84
|
+
if (constructor == Set) {
|
|
85
|
+
return genericReduce(collection, transducer(setExtend), accum)
|
|
86
|
+
}
|
|
87
|
+
if (constructor == Object) {
|
|
88
|
+
return genericReduce(collection, transducer(objectAssign), accum)
|
|
89
|
+
}
|
|
90
|
+
return identityTransform(collection, transducer, accum)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
module.exports = genericTransform
|
|
@@ -5,16 +5,16 @@ const curry3 = require('./curry3')
|
|
|
5
5
|
const callPropUnary = require('./callPropUnary')
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* @name
|
|
8
|
+
* @name iteratorEvery
|
|
9
9
|
*
|
|
10
10
|
* @synopsis
|
|
11
11
|
* ```coffeescript [specscript]
|
|
12
|
-
*
|
|
12
|
+
* iteratorEvery(iterator Iterator, predicate ...any=>boolean) -> boolean
|
|
13
13
|
* ```
|
|
14
14
|
*
|
|
15
15
|
* @TODO use .next() calls
|
|
16
16
|
*/
|
|
17
|
-
const
|
|
17
|
+
const iteratorEvery = function (iterator, predicate) {
|
|
18
18
|
const promises = []
|
|
19
19
|
for (const item of iterator) {
|
|
20
20
|
const predication = predicate(item)
|
|
@@ -29,4 +29,4 @@ const iteratorAll = function (iterator, predicate) {
|
|
|
29
29
|
: promiseAll(promises).then(curry3(callPropUnary, __, 'every', Boolean))
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
module.exports =
|
|
32
|
+
module.exports = iteratorEvery
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
const SelfReferencingPromise = require('./SelfReferencingPromise')
|
|
2
|
-
const
|
|
2
|
+
const asyncIteratorSome = require('./asyncIteratorSome')
|
|
3
3
|
const isPromise = require('./isPromise')
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* @name
|
|
6
|
+
* @name iteratorSome
|
|
7
7
|
*
|
|
8
8
|
* @synopsis
|
|
9
9
|
* ```coffeescript [specscript]
|
|
10
|
-
*
|
|
10
|
+
* iteratorSome(
|
|
11
11
|
* iterator Iterator,
|
|
12
12
|
* predicate any=>Promise|boolean,
|
|
13
13
|
* ) -> boolean
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
|
-
const
|
|
16
|
+
const iteratorSome = function (iterator, predicate) {
|
|
17
17
|
for (const item of iterator) {
|
|
18
18
|
const predication = predicate(item)
|
|
19
19
|
if (isPromise(predication)) {
|
|
20
|
-
return
|
|
20
|
+
return asyncIteratorSome(
|
|
21
21
|
iterator, predicate, new Set([SelfReferencingPromise(predication)]))
|
|
22
22
|
}
|
|
23
23
|
if (predication) {
|
|
@@ -27,4 +27,4 @@ const iteratorAny = function (iterator, predicate) {
|
|
|
27
27
|
return false
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
module.exports =
|
|
30
|
+
module.exports = iteratorSome
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const spread2 = require('./spread2')
|
|
2
|
+
const isPromise = require('./isPromise')
|
|
3
|
+
const promiseAll = require('./promiseAll')
|
|
4
|
+
|
|
5
|
+
// leftResolverRightResolverCompare(
|
|
6
|
+
// args Array, comparator function, left function, right function,
|
|
7
|
+
// ) -> Promise|boolean
|
|
8
|
+
const leftResolverRightResolverCompare = function (
|
|
9
|
+
args, comparator, left, right,
|
|
10
|
+
) {
|
|
11
|
+
const leftResult = left(...args),
|
|
12
|
+
rightResult = right(...args)
|
|
13
|
+
if (isPromise(leftResult) || isPromise(rightResult)) {
|
|
14
|
+
return promiseAll([leftResult, rightResult]).then(spread2(comparator))
|
|
15
|
+
}
|
|
16
|
+
return comparator(leftResult, rightResult)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
module.exports = leftResolverRightResolverCompare
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const spread2 = require('./spread2')
|
|
2
|
+
const isPromise = require('./isPromise')
|
|
3
|
+
const promiseAll = require('./promiseAll')
|
|
4
|
+
|
|
5
|
+
// leftResolverRightValueCompare(
|
|
6
|
+
// args Array, comparator function, left function, right any
|
|
7
|
+
// ) -> Promise|boolean
|
|
8
|
+
const leftResolverRightValueCompare = function (args, comparator, left, right) {
|
|
9
|
+
const leftResult = left(...args)
|
|
10
|
+
if (isPromise(leftResult) || isPromise(right)) {
|
|
11
|
+
return promiseAll([leftResult, right]).then(spread2(comparator))
|
|
12
|
+
}
|
|
13
|
+
return comparator(leftResult, right)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
module.exports = leftResolverRightValueCompare
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const spread2 = require('./spread2')
|
|
2
|
+
const isPromise = require('./isPromise')
|
|
3
|
+
const promiseAll = require('./promiseAll')
|
|
4
|
+
|
|
5
|
+
// leftValueRightResolverCompare(
|
|
6
|
+
// args Array, comparator function, left any, right any,
|
|
7
|
+
// ) -> Promise|boolean
|
|
8
|
+
const leftValueRightResolverCompare = function (args, comparator, left, right) {
|
|
9
|
+
const rightResult = right(...args)
|
|
10
|
+
if (isPromise(left) || isPromise(rightResult)) {
|
|
11
|
+
return promiseAll([left, rightResult]).then(spread2(comparator))
|
|
12
|
+
}
|
|
13
|
+
return comparator(left, rightResult)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
module.exports = leftValueRightResolverCompare
|
|
@@ -4,20 +4,20 @@ const curry3 = require('./curry3')
|
|
|
4
4
|
const reducerAllSync = require('./reducerAllSync')
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* @name
|
|
7
|
+
* @name reducerEvery
|
|
8
8
|
*
|
|
9
9
|
* @synopsis
|
|
10
10
|
* ```coffeescript [specscript]
|
|
11
|
-
*
|
|
11
|
+
* reducerEvery(
|
|
12
12
|
* predicate any=>boolean,
|
|
13
13
|
* ) -> reducer(result boolean, item any)=>boolean
|
|
14
14
|
* ```
|
|
15
15
|
*/
|
|
16
|
-
const
|
|
16
|
+
const reducerEvery = predicate => function allReducer(result, item) {
|
|
17
17
|
return result === false ? false
|
|
18
18
|
: isPromise(result) ? result.then(
|
|
19
19
|
curry3(reducerAllSync, predicate, __, item))
|
|
20
20
|
: result ? predicate(item) : false
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
module.exports =
|
|
23
|
+
module.exports = reducerEvery
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const
|
|
2
|
-
const genericReduce = require('./genericReduce')
|
|
1
|
+
const curry3 = require('./curry3')
|
|
3
2
|
const __ = require('./placeholder')
|
|
4
3
|
const isPromise = require('./isPromise')
|
|
4
|
+
const genericReduce = require('./genericReduce')
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* @name reducerFlatMap
|
|
@@ -26,8 +26,8 @@ const reducerFlatMap = (
|
|
|
26
26
|
) => function flatMappingReducer(result, value) {
|
|
27
27
|
const monad = flatMapper(value)
|
|
28
28
|
return isPromise(monad)
|
|
29
|
-
? monad.then(
|
|
30
|
-
: genericReduce(
|
|
29
|
+
? monad.then(curry3(genericReduce, __, reducer, result))
|
|
30
|
+
: genericReduce(monad, reducer, result)
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
module.exports = reducerFlatMap
|
|
@@ -26,7 +26,7 @@ const genericReduce = require('./genericReduce')
|
|
|
26
26
|
const reducerFlatten = reducer => function flatteningReducer(
|
|
27
27
|
result, reducerItem,
|
|
28
28
|
) {
|
|
29
|
-
return genericReduce(
|
|
29
|
+
return genericReduce(reducerItem, reducer, result)
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
module.exports = reducerFlatten
|
|
@@ -4,11 +4,11 @@ const __ = require('./placeholder')
|
|
|
4
4
|
const isPromise = require('./isPromise')
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* @name
|
|
7
|
+
* @name reducerSome
|
|
8
8
|
*
|
|
9
9
|
* @synopsis
|
|
10
10
|
* ```coffeescript [specscript]
|
|
11
|
-
*
|
|
11
|
+
* reducerSome(
|
|
12
12
|
* predicate any=>boolean,
|
|
13
13
|
* ) -> anyReducer (result boolean, item any)=>boolean
|
|
14
14
|
* ```
|
|
@@ -17,10 +17,10 @@ const isPromise = require('./isPromise')
|
|
|
17
17
|
*
|
|
18
18
|
* @TODO throw to break early?
|
|
19
19
|
*/
|
|
20
|
-
const
|
|
20
|
+
const reducerSome = predicate => function anyReducer(result, item) {
|
|
21
21
|
return result === true ? result
|
|
22
22
|
: isPromise(result) ? result.then(curry2(reducerAnySync(predicate), __, item))
|
|
23
23
|
: result ? true : predicate(item)
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
module.exports =
|
|
26
|
+
module.exports = reducerSome
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name timeInLoop
|
|
3
|
+
*
|
|
4
|
+
* @synopsis
|
|
5
|
+
* ```coffeescript [specscript]
|
|
6
|
+
* timeInLoop(description string, loopCount number, fn function, options? {
|
|
7
|
+
* silent?: boolean,
|
|
8
|
+
* }) -> undefined
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* @description
|
|
12
|
+
* Logs the amount of time required for a function to run a certain number of times
|
|
13
|
+
*
|
|
14
|
+
* ```js
|
|
15
|
+
* timeInLoop('hello', 1e6, () => 'hello') // hello: 1e+6: 3.474ms
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* Reference: https://gist.github.com/funfunction/91b5876a5f562e1e352aed0fcabc3858
|
|
19
|
+
*/
|
|
20
|
+
const timeInLoop = (description, loopCount, fn, options = {}) => {
|
|
21
|
+
const d = `${description}: ${loopCount.toExponential()}`
|
|
22
|
+
const start = performance.now()
|
|
23
|
+
for (let i = 0; i < loopCount; i++) {
|
|
24
|
+
fn()
|
|
25
|
+
}
|
|
26
|
+
const end = performance.now()
|
|
27
|
+
const duration = end - start
|
|
28
|
+
|
|
29
|
+
if (options.silent) {
|
|
30
|
+
return { description, loopCount, duration }
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
console.log(`${d}: ${duration}`)
|
|
34
|
+
return { description, loopCount, duration }
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
module.exports = timeInLoop
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const assert = require('assert')
|
|
2
|
+
const timeInLoop = require('./timeInLoop')
|
|
3
|
+
|
|
4
|
+
describe('timeInLoop', () => {
|
|
5
|
+
it('times a function in a loop', async () => {
|
|
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')
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
it('can be silent', async () => {
|
|
13
|
+
const result = timeInLoop('hey', 1e5, () => 'hey', { silent: true })
|
|
14
|
+
assert.equal(result.description, 'hey')
|
|
15
|
+
assert.equal(result.loopCount, 1e5)
|
|
16
|
+
assert.equal(typeof result.duration, 'number')
|
|
17
|
+
})
|
|
18
|
+
})
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name timeInLoopAsync
|
|
3
|
+
*
|
|
4
|
+
* @synopsis
|
|
5
|
+
* ```coffeescript [specscript]
|
|
6
|
+
* timeInLoop.async(description string, loopCount number, fn function, options? {
|
|
7
|
+
* silent?: boolean,
|
|
8
|
+
* }) -> undefined
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* @description
|
|
12
|
+
* Like timeInLoop, but every call is awaited
|
|
13
|
+
*
|
|
14
|
+
* ```js
|
|
15
|
+
* timeInLoop.async('async hello', 1e6, async () => 'hello') // async hello: 1e+6: 116.006ms
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
const timeInLoopAsync = async (description, loopCount, fn, options = {}) => {
|
|
19
|
+
const d = `${description}: ${loopCount.toExponential()}`
|
|
20
|
+
const start = performance.now()
|
|
21
|
+
for (let i = 0; i < loopCount; i++) {
|
|
22
|
+
await fn()
|
|
23
|
+
}
|
|
24
|
+
const end = performance.now()
|
|
25
|
+
const duration = end - start
|
|
26
|
+
|
|
27
|
+
if (options.silent) {
|
|
28
|
+
return { description, loopCount, duration }
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
console.log(`${d}: ${duration}`)
|
|
32
|
+
return { description, loopCount, duration }
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
module.exports = timeInLoopAsync
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const assert = require('assert')
|
|
2
|
+
const timeInLoopAsync = require('./timeInLoopAsync')
|
|
3
|
+
|
|
4
|
+
describe('timeInLoopAsync', () => {
|
|
5
|
+
it('times an async function in a loop', async () => {
|
|
6
|
+
const p = timeInLoopAsync('asyncHey', 1e5, async () => 'asyncHey')
|
|
7
|
+
assert(p instanceof Promise)
|
|
8
|
+
const result = await p
|
|
9
|
+
assert.equal(result.description, 'asyncHey')
|
|
10
|
+
assert.equal(result.loopCount, 1e5)
|
|
11
|
+
assert.equal(typeof result.duration, 'number')
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
it('can be silent', async () => {
|
|
15
|
+
const p = timeInLoopAsync('asyncHey', 1e5, async () => 'asyncHey', { silent: true })
|
|
16
|
+
assert(p instanceof Promise)
|
|
17
|
+
const result = await p
|
|
18
|
+
assert.equal(result.description, 'asyncHey')
|
|
19
|
+
assert.equal(result.loopCount, 1e5)
|
|
20
|
+
assert.equal(typeof result.duration, 'number')
|
|
21
|
+
})
|
|
22
|
+
})
|