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
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
const timeInLoop = require('./timeInLoop')
|
|
2
|
+
const timeInLoopAsync = require('./timeInLoopAsync')
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @name formatRunOutput
|
|
6
|
+
*
|
|
7
|
+
* @synopsis
|
|
8
|
+
* ```coffeescript [specscript]
|
|
9
|
+
* formatRunOutput(
|
|
10
|
+
* description string,
|
|
11
|
+
* loopCount number,
|
|
12
|
+
* duration number
|
|
13
|
+
* ) -> formatted string
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
const formatRunOutput = function (description, loopCount, duration) {
|
|
17
|
+
const formattedDuration = duration < 1e3
|
|
18
|
+
? `${duration.toFixed(3)}ms`
|
|
19
|
+
: `${(duration / 1e3).toFixed(3)}s`
|
|
20
|
+
return `
|
|
21
|
+
${description}: ${loopCount.toExponential()}: ${formattedDuration}
|
|
22
|
+
`.trim()
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @name TimeInLoopSuite
|
|
27
|
+
*
|
|
28
|
+
* @synopsis
|
|
29
|
+
* ```coffeescript [specscript]
|
|
30
|
+
* new TimeInLoopSuite(options? {
|
|
31
|
+
* loopCount?: number,
|
|
32
|
+
* runs?: number,
|
|
33
|
+
* async?: boolean,
|
|
34
|
+
* }) -> TimeInLoopSuite
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
const TimeInLoopSuite = function (options = {}) {
|
|
38
|
+
this.loopCount = options.loopCount ?? 1e6
|
|
39
|
+
this.runs = options.runs ?? 5
|
|
40
|
+
this.isAsync = options.async ?? false
|
|
41
|
+
this.benchmarkCases = []
|
|
42
|
+
this.handlerMap = new Map()
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @name TimeInLoopSuite.prototype.emit
|
|
48
|
+
*
|
|
49
|
+
* @synopsis
|
|
50
|
+
* ```coffeescript [specscript]
|
|
51
|
+
* new TimeInLoopSuite(...).emit(eventName string, event Object) -> ()
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
TimeInLoopSuite.prototype.emit = function (eventName, event) {
|
|
55
|
+
const handlerMap = this.handlerMap
|
|
56
|
+
if (handlerMap.has(eventName)) {
|
|
57
|
+
handlerMap.get(eventName).forEach(handler => handler(event))
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @name TimeInLoopSuite.prototype.on
|
|
63
|
+
*
|
|
64
|
+
* @synopsis
|
|
65
|
+
* ```coffeescript [specscript]
|
|
66
|
+
* new TimeInLoopSuite(...).on(eventName string, handler function) -> ()
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
TimeInLoopSuite.prototype.on = function (eventName, handler) {
|
|
70
|
+
const handlerMap = this.handlerMap
|
|
71
|
+
if (handlerMap.has(eventName)) {
|
|
72
|
+
handlerMap.get(eventName).add(handler)
|
|
73
|
+
} else {
|
|
74
|
+
handlerMap.set(eventName, new Set([handler]))
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* @name TimeInLoopSuite.prototype.add
|
|
80
|
+
*
|
|
81
|
+
* @synopsis
|
|
82
|
+
* ```coffeescript [specscript]
|
|
83
|
+
* new TimeInLoopSuite(...).add(description string, func function) -> ()
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
TimeInLoopSuite.prototype.add = function (description, func) {
|
|
87
|
+
const { loopCount, isAsync } = this
|
|
88
|
+
this.benchmarkCases.push({
|
|
89
|
+
description,
|
|
90
|
+
loopCount,
|
|
91
|
+
benchmark: isAsync
|
|
92
|
+
? () => timeInLoopAsync(description, loopCount, func, { silent: true })
|
|
93
|
+
: () => timeInLoop(description, loopCount, func, { silent: true }),
|
|
94
|
+
})
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* @name TimeInLoopSuite.prototype.run
|
|
99
|
+
*
|
|
100
|
+
* @synopsis
|
|
101
|
+
* ```coffeescript [specscript]
|
|
102
|
+
* new TimeInLoopSuite(...).run() -> Promise<>
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
TimeInLoopSuite.prototype.run = async function () {
|
|
106
|
+
const caseBestRuns = []
|
|
107
|
+
for (const { description, loopCount, benchmark } of this.benchmarkCases) {
|
|
108
|
+
const durations = []
|
|
109
|
+
let runCount = 0
|
|
110
|
+
while (runCount < this.runs) {
|
|
111
|
+
const { duration } = await benchmark()
|
|
112
|
+
durations.push(duration)
|
|
113
|
+
runCount += 1
|
|
114
|
+
this.emit('run', { description, duration, loopCount })
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
const caseBestDuration = Math.min(...durations)
|
|
118
|
+
|
|
119
|
+
const caseBestRun = {
|
|
120
|
+
description,
|
|
121
|
+
duration: caseBestDuration,
|
|
122
|
+
loopCount,
|
|
123
|
+
output: formatRunOutput(description, loopCount, caseBestDuration),
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
caseBestRuns.push(caseBestRun)
|
|
127
|
+
|
|
128
|
+
this.emit('caseBestRun', caseBestRun)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const suiteBestRun = caseBestRuns.reduce(
|
|
132
|
+
(suiteBest, run) => run.duration < suiteBest.duration ? run : suiteBest
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
this.emit('suiteBestRun', suiteBestRun)
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
module.exports = TimeInLoopSuite
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const isPromise = require('./isPromise')
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @name areAnyValuesPromises
|
|
5
|
+
*
|
|
6
|
+
* @synopsis
|
|
7
|
+
* ```coffeescript [specscript]
|
|
8
|
+
* areAnyValuesPromises(values Array) -> boolean
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
const areAnyValuesPromises = function (values) {
|
|
12
|
+
const length = values.length
|
|
13
|
+
let index = -1
|
|
14
|
+
while (++index < length) {
|
|
15
|
+
const value = values[index]
|
|
16
|
+
if (isPromise(value)) {
|
|
17
|
+
return true
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return false
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
module.exports = areAnyValuesPromises
|
|
@@ -5,14 +5,14 @@ const promiseAll = require('./promiseAll')
|
|
|
5
5
|
const callPropUnary = require('./callPropUnary')
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* @name
|
|
8
|
+
* @name arrayEvery
|
|
9
9
|
*
|
|
10
10
|
* @synopsis
|
|
11
11
|
* ```coffeescript [specscript]
|
|
12
|
-
*
|
|
12
|
+
* arrayEvery(array Array, predicate ...any=>boolean) -> boolean
|
|
13
13
|
* ```
|
|
14
14
|
*/
|
|
15
|
-
const
|
|
15
|
+
const arrayEvery = function (array, predicate) {
|
|
16
16
|
const arrayLength = array.length,
|
|
17
17
|
promises = []
|
|
18
18
|
let index = -1
|
|
@@ -29,4 +29,4 @@ const arrayAll = function (array, predicate) {
|
|
|
29
29
|
: promiseAll(promises).then(curry3(callPropUnary, __, 'every', Boolean))
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
module.exports =
|
|
32
|
+
module.exports = arrayEvery
|
package/_internal/arrayExtend.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
const
|
|
1
|
+
const isArray = require('./isArray')
|
|
2
|
+
const isBinary = require('./isBinary')
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* @name _arrayExtend
|
|
@@ -30,7 +31,7 @@ const _arrayExtend = function (array, values) {
|
|
|
30
31
|
* Extend an array with values.
|
|
31
32
|
*/
|
|
32
33
|
const arrayExtend = function (array, values) {
|
|
33
|
-
if (
|
|
34
|
+
if (isArray(values) || isBinary(values)) {
|
|
34
35
|
return _arrayExtend(array, values)
|
|
35
36
|
}
|
|
36
37
|
array.push(values)
|
package/_internal/arrayFilter.js
CHANGED
|
@@ -26,12 +26,11 @@ const arrayFilter = function (array, predicate) {
|
|
|
26
26
|
resultIndex = -1
|
|
27
27
|
while (++index < arrayLength) {
|
|
28
28
|
const item = array[index],
|
|
29
|
-
shouldIncludeItem = predicate(item)
|
|
29
|
+
shouldIncludeItem = predicate(item, index, array)
|
|
30
30
|
if (isPromise(shouldIncludeItem)) {
|
|
31
31
|
return promiseAll(
|
|
32
|
-
arrayExtendMap(
|
|
33
|
-
|
|
34
|
-
curry4(arrayFilterByConditions, array, result, index - 1, __))
|
|
32
|
+
arrayExtendMap([shouldIncludeItem], array, predicate, index)
|
|
33
|
+
).then(curry4(arrayFilterByConditions, array, result, index - 1, __))
|
|
35
34
|
}
|
|
36
35
|
if (shouldIncludeItem) {
|
|
37
36
|
result[++resultIndex] = item
|
|
@@ -3,11 +3,11 @@ const isPromise = require('./isPromise')
|
|
|
3
3
|
const promiseRace = require('./promiseRace')
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* @name
|
|
6
|
+
* @name asyncArraySome
|
|
7
7
|
*
|
|
8
8
|
* @synopsis
|
|
9
9
|
* ```coffeescript [specscript]
|
|
10
|
-
*
|
|
10
|
+
* asyncArraySome(
|
|
11
11
|
* array Array,
|
|
12
12
|
* predicate any=>Promise|boolean,
|
|
13
13
|
* index number,
|
|
@@ -15,7 +15,7 @@ const promiseRace = require('./promiseRace')
|
|
|
15
15
|
* ) -> boolean
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
|
-
const
|
|
18
|
+
const asyncArraySome = async function (
|
|
19
19
|
array, predicate, index, promisesInFlight,
|
|
20
20
|
) {
|
|
21
21
|
const length = array.length
|
|
@@ -39,23 +39,23 @@ const asyncArrayAny = async function (
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
|
-
* @name
|
|
42
|
+
* @name arraySome
|
|
43
43
|
*
|
|
44
44
|
* @synopsis
|
|
45
45
|
* ```coffeescript [specscript]
|
|
46
|
-
*
|
|
46
|
+
* arraySome(
|
|
47
47
|
* array Array,
|
|
48
48
|
* predicate any=>Promise|boolean,
|
|
49
49
|
* ) -> boolean
|
|
50
50
|
* ```
|
|
51
51
|
*/
|
|
52
|
-
const
|
|
52
|
+
const arraySome = function (array, predicate) {
|
|
53
53
|
const length = array.length
|
|
54
54
|
let index = -1
|
|
55
55
|
while (++index < length) {
|
|
56
56
|
const predication = predicate(array[index])
|
|
57
57
|
if (isPromise(predication)) {
|
|
58
|
-
return
|
|
58
|
+
return asyncArraySome(
|
|
59
59
|
array, predicate, index, new Set([SelfReferencingPromise(predication)]))
|
|
60
60
|
}
|
|
61
61
|
if (predication) {
|
|
@@ -65,4 +65,4 @@ const arrayAny = function (array, predicate) {
|
|
|
65
65
|
return false
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
module.exports =
|
|
68
|
+
module.exports = arraySome
|
|
@@ -3,7 +3,7 @@ const isPromise = require('./isPromise')
|
|
|
3
3
|
const promiseRace = require('./promiseRace')
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* @name
|
|
6
|
+
* @name asyncIteratorEvery
|
|
7
7
|
*
|
|
8
8
|
* @synopsis
|
|
9
9
|
* var T any,
|
|
@@ -12,11 +12,11 @@ const promiseRace = require('./promiseRace')
|
|
|
12
12
|
* promisesInFlight Set<Promise<[T, Promise]>>,
|
|
13
13
|
* maxConcurrency number
|
|
14
14
|
*
|
|
15
|
-
*
|
|
15
|
+
* asyncIteratorEvery(
|
|
16
16
|
* asyncIterator, predicate, promisesInFlight, maxConcurrency,
|
|
17
17
|
* ) -> Promise<boolean>
|
|
18
18
|
*/
|
|
19
|
-
const
|
|
19
|
+
const asyncIteratorEvery = async function (
|
|
20
20
|
asyncIterator, predicate, promisesInFlight, maxConcurrency = 20,
|
|
21
21
|
) {
|
|
22
22
|
let iteration = await asyncIterator.next()
|
|
@@ -47,4 +47,4 @@ const asyncIteratorAll = async function (
|
|
|
47
47
|
return true
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
module.exports =
|
|
50
|
+
module.exports = asyncIteratorEvery
|
|
@@ -3,11 +3,11 @@ const isPromise = require('./isPromise')
|
|
|
3
3
|
const promiseRace = require('./promiseRace')
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* @name
|
|
6
|
+
* @name asyncIteratorSome
|
|
7
7
|
*
|
|
8
8
|
* @synopsis
|
|
9
9
|
* ```coffeescript [specscript]
|
|
10
|
-
*
|
|
10
|
+
* asyncIteratorSome(
|
|
11
11
|
* iterator Iterator|AsyncIterator,
|
|
12
12
|
* predicate any=>Promise|boolean,
|
|
13
13
|
* index number,
|
|
@@ -16,7 +16,7 @@ const promiseRace = require('./promiseRace')
|
|
|
16
16
|
* ) -> boolean
|
|
17
17
|
* ```
|
|
18
18
|
*/
|
|
19
|
-
const
|
|
19
|
+
const asyncIteratorSome = async function (
|
|
20
20
|
iterator, predicate, promisesInFlight, maxConcurrency = 20,
|
|
21
21
|
) {
|
|
22
22
|
let iteration = iterator.next()
|
|
@@ -53,4 +53,4 @@ const asyncIteratorAny = async function (
|
|
|
53
53
|
return false
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
module.exports =
|
|
56
|
+
module.exports = asyncIteratorSome
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const assert = require('assert')
|
|
2
|
+
const curry4 = require('./curry4')
|
|
3
|
+
const __ = require('./placeholder')
|
|
4
|
+
|
|
5
|
+
describe('curry4', () => {
|
|
6
|
+
const func = function (a, b, c, d) {
|
|
7
|
+
return [a, b, c, d]
|
|
8
|
+
}
|
|
9
|
+
it('resolves arguments in __ position for arg0', async () => {
|
|
10
|
+
const curried = curry4(func, __, 1, 2, 3)
|
|
11
|
+
assert.deepEqual(curried(4), [4, 1, 2, 3])
|
|
12
|
+
})
|
|
13
|
+
it('resolves arguments in __ position for arg1', async () => {
|
|
14
|
+
const curried = curry4(func, 1, __, 2, 3)
|
|
15
|
+
assert.deepEqual(curried(4), [1, 4, 2, 3])
|
|
16
|
+
})
|
|
17
|
+
it('resolves arguments in __ position for arg2', async () => {
|
|
18
|
+
const curried = curry4(func, 1, 2, __, 3)
|
|
19
|
+
assert.deepEqual(curried(4), [1, 2, 4, 3])
|
|
20
|
+
})
|
|
21
|
+
it('resolves arguments in __ position for arg3', async () => {
|
|
22
|
+
const curried = curry4(func, 1, 2, 3, __)
|
|
23
|
+
assert.deepEqual(curried(4), [1, 2, 3, 4])
|
|
24
|
+
})
|
|
25
|
+
})
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const assert = require('assert')
|
|
2
|
+
const curry5 = require('./curry5')
|
|
3
|
+
const __ = require('./placeholder')
|
|
4
|
+
|
|
5
|
+
describe('curry5', () => {
|
|
6
|
+
const func = function (a, b, c, d, e) {
|
|
7
|
+
return [a, b, c, d, e]
|
|
8
|
+
}
|
|
9
|
+
it('resolves arguments in __ position for arg0', async () => {
|
|
10
|
+
const curried = curry5(func, __, 1, 2, 3, 4)
|
|
11
|
+
assert.deepEqual(curried(5), [5, 1, 2, 3, 4])
|
|
12
|
+
})
|
|
13
|
+
it('resolves arguments in __ position for arg1', async () => {
|
|
14
|
+
const curried = curry5(func, 1, __, 2, 3, 4)
|
|
15
|
+
assert.deepEqual(curried(5), [1, 5, 2, 3, 4])
|
|
16
|
+
})
|
|
17
|
+
it('resolves arguments in __ position for arg2', async () => {
|
|
18
|
+
const curried = curry5(func, 1, 2, __, 3, 4)
|
|
19
|
+
assert.deepEqual(curried(5), [1, 2, 5, 3, 4])
|
|
20
|
+
})
|
|
21
|
+
it('resolves arguments in __ position for arg3', async () => {
|
|
22
|
+
const curried = curry5(func, 1, 2, 3, __, 4)
|
|
23
|
+
assert.deepEqual(curried(5), [1, 2, 3, 5, 4])
|
|
24
|
+
})
|
|
25
|
+
it('resolves arguments in __ position for arg4', async () => {
|
|
26
|
+
const curried = curry5(func, 1, 2, 3, 4, __)
|
|
27
|
+
assert.deepEqual(curried(5), [1, 2, 3, 4, 5])
|
|
28
|
+
})
|
|
29
|
+
})
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const __ = require('./placeholder')
|
|
2
|
+
|
|
3
|
+
// argument resolver for curryArgs2
|
|
4
|
+
const curryArgs2ResolveArgs0 = (
|
|
5
|
+
baseFunc, arg1, arg2,
|
|
6
|
+
) => function args0Resolver(...args) {
|
|
7
|
+
return baseFunc(args, arg1)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// argument resolver for curryArgs2
|
|
11
|
+
const curryArgs2ResolveArgs1 = (
|
|
12
|
+
baseFunc, arg0, arg2,
|
|
13
|
+
) => function arg1Resolver(...args) {
|
|
14
|
+
return baseFunc(arg0, args)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @name curryArgs2
|
|
19
|
+
*
|
|
20
|
+
* @synopsis
|
|
21
|
+
* ```coffeescript [specscript]
|
|
22
|
+
* type __ = Symbol('placeholder')
|
|
23
|
+
*
|
|
24
|
+
* curryArgs2(
|
|
25
|
+
* baseFunc function,
|
|
26
|
+
* arg0 __|any,
|
|
27
|
+
* arg1 __|any,
|
|
28
|
+
* ) -> function
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @description
|
|
32
|
+
* Curry arguments for a 2-ary function. Arguments are supplied in placeholder position as an array.
|
|
33
|
+
*
|
|
34
|
+
* Note: at least one argument must be the placeholder
|
|
35
|
+
*/
|
|
36
|
+
const curryArgs2 = function (baseFunc, arg0, arg1) {
|
|
37
|
+
if (arg0 == __) {
|
|
38
|
+
return curryArgs2ResolveArgs0(baseFunc, arg1)
|
|
39
|
+
}
|
|
40
|
+
return curryArgs2ResolveArgs1(baseFunc, arg0)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
module.exports = curryArgs2
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const assert = require('assert')
|
|
2
|
+
const curryArgs3 = require('./curryArgs3')
|
|
3
|
+
const __ = require('./placeholder')
|
|
4
|
+
|
|
5
|
+
describe('curryArgs3', () => {
|
|
6
|
+
const func = function (a, b, c) {
|
|
7
|
+
return [a, b, c]
|
|
8
|
+
}
|
|
9
|
+
it('resolves arguments in __ position for arg0', async () => {
|
|
10
|
+
const curried = curryArgs3(func, __, 1, 2)
|
|
11
|
+
assert.deepEqual(curried(3), [[3], 1, 2])
|
|
12
|
+
})
|
|
13
|
+
it('resolves arguments in __ position for arg1', async () => {
|
|
14
|
+
const curried = curryArgs3(func, 1, __, 2)
|
|
15
|
+
assert.deepEqual(curried(3), [1, [3], 2])
|
|
16
|
+
})
|
|
17
|
+
it('resolves arguments in __ position for arg2', async () => {
|
|
18
|
+
const curried = curryArgs3(func, 1, 2, __)
|
|
19
|
+
assert.deepEqual(curried(3), [1, 2, [3]])
|
|
20
|
+
})
|
|
21
|
+
})
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
const __ = require('./placeholder')
|
|
2
|
+
|
|
3
|
+
// argument resolver for curryArgs4
|
|
4
|
+
const curryArgs4ResolveArgs0 = (
|
|
5
|
+
baseFunc, arg1, arg2, arg3,
|
|
6
|
+
) => function args0Resolver(...args) {
|
|
7
|
+
return baseFunc(args, arg1, arg2, arg3)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// argument resolver for curryArgs4
|
|
11
|
+
const curryArgs4ResolveArgs1 = (
|
|
12
|
+
baseFunc, arg0, arg2, arg3,
|
|
13
|
+
) => function args1Resolver(...args) {
|
|
14
|
+
return baseFunc(arg0, args, arg2, arg3)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// argument resolver for curryArgs4
|
|
18
|
+
const curryArgs4ResolveArgs2 = (
|
|
19
|
+
baseFunc, arg0, arg1, arg3,
|
|
20
|
+
) => function args2Resolver(...args) {
|
|
21
|
+
return baseFunc(arg0, arg1, args, arg3)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// argument resolver for curryArgs4
|
|
25
|
+
const curryArgs4ResolveArgs3 = (
|
|
26
|
+
baseFunc, arg0, arg1, arg2,
|
|
27
|
+
) => function args3Resolver(...args) {
|
|
28
|
+
return baseFunc(arg0, arg1, arg2, args)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @name curryArgs4
|
|
33
|
+
*
|
|
34
|
+
* @synopsis
|
|
35
|
+
* ```coffeescript [specscript]
|
|
36
|
+
* __ = Symbol('placeholder')
|
|
37
|
+
*
|
|
38
|
+
* curryArgs4(
|
|
39
|
+
* baseFunc function,
|
|
40
|
+
* arg0 __|any,
|
|
41
|
+
* arg1 __|any,
|
|
42
|
+
* arg2 __|any
|
|
43
|
+
* arg3 __|any,
|
|
44
|
+
* ) -> function
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @description
|
|
48
|
+
* Curry arguments for a 4-ary function. Arguments are supplied in placeholder position as an array.
|
|
49
|
+
*
|
|
50
|
+
* Note: at least one argument must be the placeholder
|
|
51
|
+
*/
|
|
52
|
+
const curryArgs4 = function (baseFunc, arg0, arg1, arg2, arg3) {
|
|
53
|
+
if (arg0 == __) {
|
|
54
|
+
return curryArgs4ResolveArgs0(baseFunc, arg1, arg2, arg3)
|
|
55
|
+
}
|
|
56
|
+
if (arg1 == __) {
|
|
57
|
+
return curryArgs4ResolveArgs1(baseFunc, arg0, arg2, arg3)
|
|
58
|
+
}
|
|
59
|
+
if (arg2 == __) {
|
|
60
|
+
return curryArgs4ResolveArgs2(baseFunc, arg0, arg1, arg3)
|
|
61
|
+
}
|
|
62
|
+
return curryArgs4ResolveArgs3(baseFunc, arg0, arg1, arg2)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
module.exports = curryArgs4
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const assert = require('assert')
|
|
2
|
+
const curryArgs4 = require('./curryArgs4')
|
|
3
|
+
const __ = require('./placeholder')
|
|
4
|
+
|
|
5
|
+
describe('curryArgs4', () => {
|
|
6
|
+
const func = function (a, b, c, d) {
|
|
7
|
+
return [a, b, c, d]
|
|
8
|
+
}
|
|
9
|
+
it('resolves arguments in __ position for arg0', async () => {
|
|
10
|
+
const curried = curryArgs4(func, __, 1, 2, 3)
|
|
11
|
+
assert.deepEqual(curried(1, 2, 3), [[1, 2, 3], 1, 2, 3])
|
|
12
|
+
})
|
|
13
|
+
it('resolves arguments in __ position for arg1', async () => {
|
|
14
|
+
const curried = curryArgs4(func, 1, __, 2, 3)
|
|
15
|
+
assert.deepEqual(curried(1, 2, 3), [1, [1, 2, 3], 2, 3])
|
|
16
|
+
})
|
|
17
|
+
it('resolves arguments in __ position for arg2', async () => {
|
|
18
|
+
const curried = curryArgs4(func, 1, 2, __, 3)
|
|
19
|
+
assert.deepEqual(curried(1, 2, 3), [1, 2, [1, 2, 3], 3])
|
|
20
|
+
})
|
|
21
|
+
it('resolves arguments in __ position for arg3', async () => {
|
|
22
|
+
const curried = curryArgs4(func, 1, 2, 3, __)
|
|
23
|
+
assert.deepEqual(curried(1, 2, 3), [1, 2, 3, [1, 2, 3]])
|
|
24
|
+
})
|
|
25
|
+
})
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const fs = require('fs')
|
|
2
|
+
const pathResolve = require('./pathResolve')
|
|
3
|
+
|
|
4
|
+
// findAllFilePaths(path string) -> filePaths Promise<Array<string>>
|
|
5
|
+
const findAllFilePaths = async function (path) {
|
|
6
|
+
const files = await fs.promises.readdir(path, {
|
|
7
|
+
withFileTypes: true,
|
|
8
|
+
recursive: true,
|
|
9
|
+
})
|
|
10
|
+
const result = []
|
|
11
|
+
for (const file of files) {
|
|
12
|
+
if (file.isDirectory()) {
|
|
13
|
+
const filePaths = await findAllFilePaths(pathResolve(path, file.name))
|
|
14
|
+
result.push(...filePaths)
|
|
15
|
+
} else {
|
|
16
|
+
result.push(pathResolve(path, file.name))
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return result
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
module.exports = findAllFilePaths
|
package/_internal/funcApply.js
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name funcCall
|
|
3
|
+
*
|
|
4
|
+
* @synopsis
|
|
5
|
+
* ```coffeescript [specscript]
|
|
6
|
+
* funcCall(func function, context Object, ...args) -> any
|
|
7
|
+
* ```
|
|
8
|
+
*
|
|
9
|
+
* @description
|
|
10
|
+
* Apply arguments to a function.
|
|
11
|
+
*/
|
|
12
|
+
const funcCall = (func, context, ...args) => func.call(context, ...args)
|
|
13
|
+
|
|
14
|
+
module.exports = funcCall
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const isPromise = require('./isPromise')
|
|
2
|
+
const promiseAll = require('./promiseAll')
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @name functionArrayAll
|
|
6
|
+
*
|
|
7
|
+
* @synopsis
|
|
8
|
+
* ```coffeescript [specscript]
|
|
9
|
+
* functionArrayAll(funcs Array<function>, args Array) -> Promise|Array
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
const functionArrayAll = function (funcs, args) {
|
|
13
|
+
const funcsLength = funcs.length,
|
|
14
|
+
result = Array(funcsLength)
|
|
15
|
+
let funcsIndex = -1, isAsync = false
|
|
16
|
+
while (++funcsIndex < funcsLength) {
|
|
17
|
+
const resultItem = funcs[funcsIndex](...args)
|
|
18
|
+
if (isPromise(resultItem)) {
|
|
19
|
+
isAsync = true
|
|
20
|
+
}
|
|
21
|
+
result[funcsIndex] = resultItem
|
|
22
|
+
}
|
|
23
|
+
return isAsync ? promiseAll(result) : result
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
module.exports = functionArrayAll
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const funcConcat = require('./funcConcat')
|
|
2
|
+
const isPromise = require('./isPromise')
|
|
3
|
+
const __ = require('./placeholder')
|
|
4
|
+
const curry3 = require('./curry3')
|
|
5
|
+
const curry4 = require('./curry4')
|
|
6
|
+
const objectSet = require('./objectSet')
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @name asyncFunctionArrayAllSeries
|
|
10
|
+
*
|
|
11
|
+
* @synopsis
|
|
12
|
+
* ```coffeescript [specscript]
|
|
13
|
+
* asyncFunctionArrayAllSeries(
|
|
14
|
+
* funcs Array<function>,
|
|
15
|
+
* args Array,
|
|
16
|
+
* result Array,
|
|
17
|
+
* funcsIndex number
|
|
18
|
+
* ) -> Promise|Array
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @TODO benchmark vs regular promise handling
|
|
22
|
+
*/
|
|
23
|
+
const asyncFunctionArrayAllSeries = async function (funcs, args, result, funcsIndex) {
|
|
24
|
+
const funcsLength = funcs.length
|
|
25
|
+
while (++funcsIndex < funcsLength) {
|
|
26
|
+
const resultItem = funcs[funcsIndex](...args)
|
|
27
|
+
result[funcsIndex] = isPromise(resultItem) ? await resultItem : resultItem
|
|
28
|
+
}
|
|
29
|
+
return result
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @name functionArrayAllSeries
|
|
34
|
+
*
|
|
35
|
+
* @synopsis
|
|
36
|
+
* ```coffeescript [specscript]
|
|
37
|
+
* functionArrayAllSeries(funcs Array<function>, args Array) -> Promise|Array
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
const functionArrayAllSeries = function (funcs, args) {
|
|
41
|
+
const funcsLength = funcs.length, result = []
|
|
42
|
+
let funcsIndex = -1
|
|
43
|
+
while (++funcsIndex < funcsLength) {
|
|
44
|
+
const resultItem = funcs[funcsIndex](...args)
|
|
45
|
+
if (isPromise(resultItem)) {
|
|
46
|
+
return resultItem.then(funcConcat(
|
|
47
|
+
curry3(objectSet, result, funcsIndex, __),
|
|
48
|
+
curry4(asyncFunctionArrayAllSeries, funcs, args, __, funcsIndex)))
|
|
49
|
+
}
|
|
50
|
+
result[funcsIndex] = resultItem
|
|
51
|
+
}
|
|
52
|
+
return result
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
module.exports = functionArrayAllSeries
|