rubico 1.9.7 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +5 -0
- package/.eslintrc.js +3 -2
- package/.github/workflows/nodejs.yml +1 -1
- package/AggregateReducer.js +19 -0
- package/AggregateReducer.test.js +82 -0
- package/CHANGELOG.md +22 -1
- package/Transducer.js +75 -26
- package/Transducer.test.js +117 -0
- package/_internal/ComparisonOperator.js +68 -0
- package/_internal/File.js +41 -0
- package/_internal/FlatMappingAsyncIterator.js +4 -4
- package/_internal/FlatMappingIterator.js +1 -1
- package/_internal/TimeInLoopSuite.js +138 -0
- package/_internal/areAnyValuesPromises.js +23 -0
- package/_internal/{arrayAll.js → arrayEvery.js} +4 -4
- package/_internal/arrayExtend.js +3 -2
- package/_internal/arrayFilter.js +3 -4
- package/_internal/{arrayAny.js → arraySome.js} +8 -8
- package/_internal/{asyncIteratorAll.js → asyncIteratorEvery.js} +4 -4
- package/_internal/{asyncIteratorAny.js → asyncIteratorSome.js} +4 -4
- package/_internal/curry4.test.js +25 -0
- package/_internal/curry5.test.js +29 -0
- package/_internal/curryArgs2.js +43 -0
- package/_internal/curryArgs3.test.js +21 -0
- package/_internal/curryArgs4.js +65 -0
- package/_internal/curryArgs4.test.js +25 -0
- package/_internal/equals.js +13 -0
- package/_internal/findAllFilePaths.js +22 -0
- package/_internal/funcApply.js +2 -0
- package/_internal/funcCall.js +14 -0
- package/_internal/functionArrayAll.js +26 -0
- package/_internal/functionArrayAllSeries.js +55 -0
- package/_internal/functionObjectAll.js +32 -0
- package/_internal/genericReduce.js +4 -22
- package/_internal/genericTransform.js +15 -15
- package/_internal/improvedGenericTransform.js +93 -0
- package/_internal/{iteratorAll.js → iteratorEvery.js} +4 -4
- package/_internal/{iteratorAny.js → iteratorSome.js} +6 -6
- package/_internal/leftResolverRightResolverCompare.js +19 -0
- package/_internal/leftResolverRightValueCompare.js +16 -0
- package/_internal/leftValueRightResolverCompare.js +16 -0
- package/_internal/objectReduce.js +0 -1
- package/_internal/pathResolve.js +6 -0
- package/_internal/{reducerAll.js → reducerEvery.js} +4 -4
- package/_internal/reducerFlatMap.js +4 -4
- package/_internal/reducerFlatten.js +1 -1
- package/_internal/{reducerAny.js → reducerSome.js} +4 -4
- package/_internal/timeInLoop.js +37 -0
- package/_internal/timeInLoop.test.js +18 -0
- package/_internal/timeInLoopAsync.js +35 -0
- package/_internal/timeInLoopAsync.test.js +22 -0
- package/all.js +106 -40
- package/and.js +54 -36
- package/archive/{FlatMappingIteratorCool.js → FlatMappingIterator-2020-09-28.js} +1 -1
- package/archive/_Promise-2023-05-29.js +93 -0
- package/archive/arrayMap2-2023-05-29.js +73 -0
- package/archive/benchmarks-v1.9.7/all.js +34 -0
- package/archive/benchmarks-v1.9.7/and.js +24 -0
- package/archive/benchmarks-v1.9.7/assign.js +174 -0
- package/archive/benchmarks-v1.9.7/curry.js +55 -0
- package/archive/benchmarks-v1.9.7/eq.js +25 -0
- package/archive/benchmarks-v1.9.7/filter.js +1322 -0
- package/archive/benchmarks-v1.9.7/flatMap.js +48 -0
- package/archive/benchmarks-v1.9.7/get.js +44 -0
- package/archive/benchmarks-v1.9.7/gt.js +25 -0
- package/archive/benchmarks-v1.9.7/gte.js +25 -0
- package/archive/benchmarks-v1.9.7/lt.js +25 -0
- package/archive/benchmarks-v1.9.7/lte.js +25 -0
- package/archive/benchmarks-v1.9.7/map.js +892 -0
- package/archive/benchmarks-v1.9.7/omit.js +28 -0
- package/archive/benchmarks-v1.9.7/or.js +51 -0
- package/archive/benchmarks-v1.9.7/pick.js +24 -0
- package/archive/benchmarks-v1.9.7/pipe.js +152 -0
- package/archive/benchmarks-v1.9.7/reduce.js +739 -0
- package/archive/benchmarks-v1.9.7/switchCase.js +256 -0
- package/archive/benchmarks-v1.9.7/tap.js +90 -0
- package/archive/benchmarks-v1.9.7/transform.js +218 -0
- package/archive/benchmarks-v1.9.7/tryCatch.js +108 -0
- package/assign.js +18 -8
- package/bench +65 -0
- package/benchmark-output/v1.9.7 +268 -0
- package/benchmarks/all.async.js +43 -0
- package/benchmarks/all.js +42 -33
- package/benchmarks/always.js +15 -0
- package/benchmarks/and.async.js +25 -0
- package/benchmarks/and.js +20 -19
- package/benchmarks/assign.async.js +27 -0
- package/benchmarks/assign.js +20 -167
- package/benchmarks/curry.js +34 -54
- package/benchmarks/eq.async.js +23 -0
- package/benchmarks/eq.js +17 -19
- package/benchmarks/every.async.js +19 -0
- package/benchmarks/every.js +19 -0
- package/benchmarks/filter.async.js +32 -0
- package/benchmarks/filter.js +27 -1311
- package/benchmarks/flatMap.async.js +26 -0
- package/benchmarks/flatMap.js +26 -36
- package/benchmarks/get.async.js +19 -0
- package/benchmarks/get.js +27 -32
- package/benchmarks/gt.async.js +23 -0
- package/benchmarks/gt.js +17 -19
- package/benchmarks/gte.async.js +23 -0
- package/benchmarks/gte.js +17 -19
- package/benchmarks/lt.async.js +23 -0
- package/benchmarks/lt.js +17 -19
- package/benchmarks/lte.async.js +23 -0
- package/benchmarks/lte.js +17 -19
- package/benchmarks/map.async.js +43 -0
- package/benchmarks/map.js +24 -876
- package/benchmarks/misc/Promise.js +26 -0
- package/benchmarks/misc/isPromise.js +30 -0
- package/benchmarks/misc/promiseAll.js +36 -0
- package/benchmarks/not.js +23 -0
- package/benchmarks/omit.js +30 -20
- package/benchmarks/or.async.js +25 -0
- package/benchmarks/or.js +23 -49
- package/benchmarks/pick.js +30 -16
- package/benchmarks/pipe.async.js +47 -0
- package/benchmarks/pipe.js +46 -151
- package/benchmarks/reduce.async.js +32 -0
- package/benchmarks/reduce.js +27 -728
- package/benchmarks/set.async.js +19 -0
- package/benchmarks/set.js +41 -0
- package/benchmarks/some.async.js +19 -0
- package/benchmarks/some.js +19 -0
- package/benchmarks/switchCase.async.js +27 -0
- package/benchmarks/switchCase.js +55 -256
- package/benchmarks/tap.js +10 -85
- package/benchmarks/thunkify.js +15 -0
- package/benchmarks/transform.async.js +27 -0
- package/benchmarks/transform.js +28 -206
- package/benchmarks/tryCatch.async.js +25 -0
- package/benchmarks/tryCatch.js +24 -100
- package/{distributor.js → build} +50 -50
- package/compose.js +46 -0
- package/dist/__.es.js +2 -2
- package/dist/__.es.min.js +2 -2
- package/dist/__.js +2 -2
- package/dist/__.min.js +2 -2
- package/dist/__.min.mjs +2 -2
- package/dist/__.mjs +2 -2
- package/dist/all.es.js +173 -92
- package/dist/all.es.min.js +3 -3
- package/dist/all.js +173 -92
- package/dist/all.min.js +3 -3
- package/dist/all.min.mjs +3 -3
- package/dist/all.mjs +173 -92
- package/dist/always.es.js +2 -2
- package/dist/always.es.min.js +2 -2
- package/dist/always.js +2 -2
- package/dist/always.min.js +2 -2
- package/dist/always.min.mjs +2 -2
- package/dist/always.mjs +2 -2
- package/dist/and.es.js +101 -32
- package/dist/and.es.min.js +3 -3
- package/dist/and.js +101 -32
- package/dist/and.min.js +3 -3
- package/dist/and.min.mjs +3 -3
- package/dist/and.mjs +101 -32
- package/dist/assign.es.js +37 -10
- package/dist/assign.es.min.js +3 -3
- package/dist/assign.js +37 -10
- package/dist/assign.min.js +3 -3
- package/dist/assign.min.mjs +3 -3
- package/dist/assign.mjs +37 -10
- package/dist/compose.es.js +71 -0
- package/dist/compose.es.min.js +7 -0
- package/dist/compose.js +78 -0
- package/dist/compose.min.js +8 -0
- package/dist/compose.min.mjs +7 -0
- package/dist/compose.mjs +71 -0
- package/dist/curry.es.js +2 -2
- package/dist/curry.es.min.js +2 -2
- package/dist/curry.js +2 -2
- package/dist/curry.min.js +2 -2
- package/dist/curry.min.mjs +2 -2
- package/dist/curry.mjs +2 -2
- package/dist/eq.es.js +172 -49
- package/dist/eq.es.min.js +3 -3
- package/dist/eq.js +172 -49
- package/dist/eq.min.js +3 -3
- package/dist/eq.min.mjs +3 -3
- package/dist/eq.mjs +172 -49
- package/dist/every.es.js +194 -0
- package/dist/every.es.min.js +7 -0
- package/dist/every.js +201 -0
- package/dist/every.min.js +8 -0
- package/dist/every.min.mjs +7 -0
- package/dist/every.mjs +194 -0
- package/dist/filter.es.js +14 -108
- package/dist/filter.es.min.js +3 -3
- package/dist/filter.js +14 -108
- package/dist/filter.min.js +3 -3
- package/dist/filter.min.mjs +3 -3
- package/dist/filter.mjs +14 -108
- package/dist/flatMap.es.js +27 -214
- package/dist/flatMap.es.min.js +3 -3
- package/dist/flatMap.js +27 -214
- package/dist/flatMap.min.js +3 -3
- package/dist/flatMap.min.mjs +3 -3
- package/dist/flatMap.mjs +27 -214
- package/dist/{x/forEach.es.js → forEach.es.js} +52 -70
- package/dist/forEach.es.min.js +7 -0
- package/dist/{x/forEach.js → forEach.js} +52 -70
- package/dist/forEach.min.js +8 -0
- package/dist/forEach.min.mjs +7 -0
- package/dist/{x/forEach.mjs → forEach.mjs} +52 -70
- package/dist/get.es.js +60 -5
- package/dist/get.es.min.js +3 -3
- package/dist/get.js +60 -5
- package/dist/get.min.js +3 -3
- package/dist/get.min.mjs +3 -3
- package/dist/get.mjs +60 -5
- package/dist/gt.es.js +171 -48
- package/dist/gt.es.min.js +3 -3
- package/dist/gt.js +171 -48
- package/dist/gt.min.js +3 -3
- package/dist/gt.min.mjs +3 -3
- package/dist/gt.mjs +171 -48
- package/dist/gte.es.js +171 -48
- package/dist/gte.es.min.js +3 -3
- package/dist/gte.js +171 -48
- package/dist/gte.min.js +3 -3
- package/dist/gte.min.mjs +3 -3
- package/dist/gte.mjs +171 -48
- package/dist/lt.es.js +171 -48
- package/dist/lt.es.min.js +3 -3
- package/dist/lt.js +171 -48
- package/dist/lt.min.js +3 -3
- package/dist/lt.min.mjs +3 -3
- package/dist/lt.mjs +171 -48
- package/dist/lte.es.js +171 -48
- package/dist/lte.es.min.js +3 -3
- package/dist/lte.js +171 -48
- package/dist/lte.min.js +3 -3
- package/dist/lte.min.mjs +3 -3
- package/dist/lte.mjs +171 -48
- package/dist/map.es.js +12 -101
- package/dist/map.es.min.js +3 -3
- package/dist/map.js +12 -101
- package/dist/map.min.js +3 -3
- package/dist/map.min.mjs +3 -3
- package/dist/map.mjs +12 -101
- package/dist/not.es.js +75 -14
- package/dist/not.es.min.js +3 -3
- package/dist/not.js +75 -14
- package/dist/not.min.js +3 -3
- package/dist/not.min.mjs +3 -3
- package/dist/not.mjs +75 -14
- package/dist/omit.es.js +7 -2
- package/dist/omit.es.min.js +3 -3
- package/dist/omit.js +7 -2
- package/dist/omit.min.js +3 -3
- package/dist/omit.min.mjs +3 -3
- package/dist/omit.mjs +7 -2
- package/dist/or.es.js +99 -31
- package/dist/or.es.min.js +3 -3
- package/dist/or.js +99 -31
- package/dist/or.min.js +3 -3
- package/dist/or.min.mjs +3 -3
- package/dist/or.mjs +99 -31
- package/dist/pick.es.js +8 -3
- package/dist/pick.es.min.js +3 -3
- package/dist/pick.js +8 -3
- package/dist/pick.min.js +3 -3
- package/dist/pick.min.mjs +3 -3
- package/dist/pick.mjs +8 -3
- package/dist/pipe.es.js +42 -46
- package/dist/pipe.es.min.js +3 -3
- package/dist/pipe.js +42 -46
- package/dist/pipe.min.js +3 -3
- package/dist/pipe.min.mjs +3 -3
- package/dist/pipe.mjs +42 -46
- package/dist/reduce.es.js +52 -94
- package/dist/reduce.es.min.js +3 -3
- package/dist/reduce.js +52 -94
- package/dist/reduce.min.js +3 -3
- package/dist/reduce.min.mjs +3 -3
- package/dist/reduce.mjs +52 -94
- package/dist/rubico.es.js +730 -869
- package/dist/rubico.es.min.js +3 -3
- package/dist/rubico.js +730 -869
- package/dist/rubico.min.js +3 -3
- package/dist/rubico.min.mjs +3 -3
- package/dist/rubico.mjs +730 -869
- package/dist/set.es.js +18 -3
- package/dist/set.es.min.js +3 -3
- package/dist/set.js +18 -3
- package/dist/set.min.js +3 -3
- package/dist/set.min.mjs +3 -3
- package/dist/set.mjs +18 -3
- package/dist/{any.js → some.es.js} +64 -54
- package/dist/some.es.min.js +7 -0
- package/dist/{any.mjs → some.js} +72 -48
- package/dist/some.min.js +8 -0
- package/dist/some.min.mjs +7 -0
- package/dist/{any.es.js → some.mjs} +65 -48
- package/dist/switchCase.es.js +55 -5
- package/dist/switchCase.es.min.js +3 -3
- package/dist/switchCase.js +55 -5
- package/dist/switchCase.min.js +3 -3
- package/dist/switchCase.min.mjs +3 -3
- package/dist/switchCase.mjs +55 -5
- package/dist/tap.es.js +2 -9
- package/dist/tap.es.min.js +3 -3
- package/dist/tap.js +2 -9
- package/dist/tap.min.js +3 -3
- package/dist/tap.min.mjs +3 -3
- package/dist/tap.mjs +2 -9
- package/dist/thunkify.es.js +45 -2
- package/dist/thunkify.es.min.js +3 -3
- package/dist/thunkify.js +45 -2
- package/dist/thunkify.min.js +3 -3
- package/dist/thunkify.min.mjs +3 -3
- package/dist/thunkify.mjs +45 -2
- package/dist/transform.es.js +35 -71
- package/dist/transform.es.min.js +3 -3
- package/dist/transform.js +35 -71
- package/dist/transform.min.js +3 -3
- package/dist/transform.min.mjs +3 -3
- package/dist/transform.mjs +35 -71
- package/dist/tryCatch.es.js +33 -17
- package/dist/tryCatch.es.min.js +3 -3
- package/dist/tryCatch.js +33 -17
- package/dist/tryCatch.min.js +3 -3
- package/dist/tryCatch.min.mjs +3 -3
- package/dist/tryCatch.mjs +33 -17
- package/dist/x/append.es.js +2 -2
- package/dist/x/append.es.min.js +2 -2
- package/dist/x/append.js +2 -2
- package/dist/x/append.min.js +2 -2
- package/dist/x/append.min.mjs +2 -2
- package/dist/x/append.mjs +2 -2
- package/dist/x/callProp.es.js +2 -2
- package/dist/x/callProp.es.min.js +2 -2
- package/dist/x/callProp.js +2 -2
- package/dist/x/callProp.min.js +2 -2
- package/dist/x/callProp.min.mjs +2 -2
- package/dist/x/callProp.mjs +2 -2
- package/dist/x/defaultsDeep.es.js +2 -2
- package/dist/x/defaultsDeep.es.min.js +2 -2
- package/dist/x/defaultsDeep.js +2 -2
- package/dist/x/defaultsDeep.min.js +2 -2
- package/dist/x/defaultsDeep.min.mjs +2 -2
- package/dist/x/defaultsDeep.mjs +2 -2
- package/dist/x/differenceWith.es.js +7 -7
- package/dist/x/differenceWith.es.min.js +3 -3
- package/dist/x/differenceWith.js +7 -7
- package/dist/x/differenceWith.min.js +2 -2
- package/dist/x/differenceWith.min.mjs +3 -3
- package/dist/x/differenceWith.mjs +7 -7
- package/dist/x/filterOut.es.js +60 -117
- package/dist/x/filterOut.es.min.js +3 -3
- package/dist/x/filterOut.js +60 -117
- package/dist/x/filterOut.min.js +3 -3
- package/dist/x/filterOut.min.mjs +3 -3
- package/dist/x/filterOut.mjs +60 -117
- package/dist/x/find.es.js +2 -2
- package/dist/x/find.es.min.js +2 -2
- package/dist/x/find.js +2 -2
- package/dist/x/find.min.js +2 -2
- package/dist/x/find.min.mjs +2 -2
- package/dist/x/find.mjs +2 -2
- package/dist/x/findIndex.es.js +2 -2
- package/dist/x/findIndex.es.min.js +2 -2
- package/dist/x/findIndex.js +2 -2
- package/dist/x/findIndex.min.js +2 -2
- package/dist/x/findIndex.min.mjs +2 -2
- package/dist/x/findIndex.mjs +2 -2
- package/dist/x/first.es.js +2 -2
- package/dist/x/first.es.min.js +2 -2
- package/dist/x/first.js +2 -2
- package/dist/x/first.min.js +2 -2
- package/dist/x/first.min.mjs +2 -2
- package/dist/x/first.mjs +2 -2
- package/dist/x/flatten.es.js +20 -207
- package/dist/x/flatten.es.min.js +3 -3
- package/dist/x/flatten.js +20 -207
- package/dist/x/flatten.min.js +3 -3
- package/dist/x/flatten.min.mjs +3 -3
- package/dist/x/flatten.mjs +20 -207
- package/dist/x/groupBy.es.js +52 -94
- package/dist/x/groupBy.es.min.js +3 -3
- package/dist/x/groupBy.js +52 -94
- package/dist/x/groupBy.min.js +3 -3
- package/dist/x/groupBy.min.mjs +3 -3
- package/dist/x/groupBy.mjs +52 -94
- package/dist/x/has.es.js +2 -2
- package/dist/x/has.es.min.js +2 -2
- package/dist/x/has.js +2 -2
- package/dist/x/has.min.js +2 -2
- package/dist/x/has.min.mjs +2 -2
- package/dist/x/has.mjs +2 -2
- package/dist/x/identity.es.js +2 -2
- package/dist/x/identity.es.min.js +2 -2
- package/dist/x/identity.js +2 -2
- package/dist/x/identity.min.js +2 -2
- package/dist/x/identity.min.mjs +2 -2
- package/dist/x/identity.mjs +2 -2
- package/dist/x/includes.es.js +2 -2
- package/dist/x/includes.es.min.js +2 -2
- package/dist/x/includes.js +2 -2
- package/dist/x/includes.min.js +2 -2
- package/dist/x/includes.min.mjs +2 -2
- package/dist/x/includes.mjs +2 -2
- package/dist/x/isDeepEqual.es.js +2 -2
- package/dist/x/isDeepEqual.es.min.js +2 -2
- package/dist/x/isDeepEqual.js +2 -2
- package/dist/x/isDeepEqual.min.js +2 -2
- package/dist/x/isDeepEqual.min.mjs +2 -2
- package/dist/x/isDeepEqual.mjs +2 -2
- package/dist/x/isEmpty.es.js +2 -2
- package/dist/x/isEmpty.es.min.js +2 -2
- package/dist/x/isEmpty.js +2 -2
- package/dist/x/isEmpty.min.js +2 -2
- package/dist/x/isEmpty.min.mjs +2 -2
- package/dist/x/isEmpty.mjs +2 -2
- package/dist/x/isEqual.es.js +2 -2
- package/dist/x/isEqual.es.min.js +2 -2
- package/dist/x/isEqual.js +2 -2
- package/dist/x/isEqual.min.js +2 -2
- package/dist/x/isEqual.min.mjs +2 -2
- package/dist/x/isEqual.mjs +2 -2
- package/dist/x/isFunction.es.js +2 -2
- package/dist/x/isFunction.es.min.js +2 -2
- package/dist/x/isFunction.js +2 -2
- package/dist/x/isFunction.min.js +2 -2
- package/dist/x/isFunction.min.mjs +2 -2
- package/dist/x/isFunction.mjs +2 -2
- package/dist/x/isIn.es.js +2 -2
- package/dist/x/isIn.es.min.js +2 -2
- package/dist/x/isIn.js +2 -2
- package/dist/x/isIn.min.js +2 -2
- package/dist/x/isIn.min.mjs +2 -2
- package/dist/x/isIn.mjs +2 -2
- package/dist/x/isObject.es.js +2 -2
- package/dist/x/isObject.es.min.js +2 -2
- package/dist/x/isObject.js +2 -2
- package/dist/x/isObject.min.js +2 -2
- package/dist/x/isObject.min.mjs +2 -2
- package/dist/x/isObject.mjs +2 -2
- package/dist/x/isString.es.js +2 -2
- package/dist/x/isString.es.min.js +2 -2
- package/dist/x/isString.js +2 -2
- package/dist/x/isString.min.js +2 -2
- package/dist/x/isString.min.mjs +2 -2
- package/dist/x/isString.mjs +2 -2
- package/dist/x/keys.es.js +2 -2
- package/dist/x/keys.es.min.js +2 -2
- package/dist/x/keys.js +2 -2
- package/dist/x/keys.min.js +2 -2
- package/dist/x/keys.min.mjs +2 -2
- package/dist/x/keys.mjs +2 -2
- package/dist/x/last.es.js +2 -2
- package/dist/x/last.es.min.js +2 -2
- package/dist/x/last.js +2 -2
- package/dist/x/last.min.js +2 -2
- package/dist/x/last.min.mjs +2 -2
- package/dist/x/last.mjs +2 -2
- package/dist/x/maxBy.es.js +59 -6
- package/dist/x/maxBy.es.min.js +3 -3
- package/dist/x/maxBy.js +59 -6
- package/dist/x/maxBy.min.js +3 -3
- package/dist/x/maxBy.min.mjs +3 -3
- package/dist/x/maxBy.mjs +59 -6
- package/dist/x/noop.es.js +2 -2
- package/dist/x/noop.es.min.js +2 -2
- package/dist/x/noop.js +2 -2
- package/dist/x/noop.min.js +2 -2
- package/dist/x/noop.min.mjs +2 -2
- package/dist/x/noop.mjs +2 -2
- package/dist/x/pluck.es.js +32 -103
- package/dist/x/pluck.es.min.js +3 -3
- package/dist/x/pluck.js +32 -103
- package/dist/x/pluck.min.js +3 -3
- package/dist/x/pluck.min.mjs +3 -3
- package/dist/x/pluck.mjs +32 -103
- package/dist/x/prepend.es.js +2 -2
- package/dist/x/prepend.es.min.js +2 -2
- package/dist/x/prepend.js +2 -2
- package/dist/x/prepend.min.js +2 -2
- package/dist/x/prepend.min.mjs +2 -2
- package/dist/x/prepend.mjs +2 -2
- package/dist/x/size.es.js +2 -2
- package/dist/x/size.es.min.js +2 -2
- package/dist/x/size.js +2 -2
- package/dist/x/size.min.js +2 -2
- package/dist/x/size.min.mjs +2 -2
- package/dist/x/size.mjs +2 -2
- package/dist/x/trace.es.js +2 -9
- package/dist/x/trace.es.min.js +3 -3
- package/dist/x/trace.js +2 -9
- package/dist/x/trace.min.js +3 -3
- package/dist/x/trace.min.mjs +3 -3
- package/dist/x/trace.mjs +2 -9
- package/dist/x/unionWith.es.js +2 -2
- package/dist/x/unionWith.es.min.js +2 -2
- package/dist/x/unionWith.js +2 -2
- package/dist/x/unionWith.min.js +2 -2
- package/dist/x/unionWith.min.mjs +2 -2
- package/dist/x/unionWith.mjs +2 -2
- package/dist/x/uniq.es.js +2 -2
- package/dist/x/uniq.es.min.js +2 -2
- package/dist/x/uniq.js +2 -2
- package/dist/x/uniq.min.js +2 -2
- package/dist/x/uniq.min.mjs +2 -2
- package/dist/x/uniq.mjs +2 -2
- package/dist/x/unless.es.js +2 -2
- package/dist/x/unless.es.min.js +2 -2
- package/dist/x/unless.js +2 -2
- package/dist/x/unless.min.js +2 -2
- package/dist/x/unless.min.mjs +2 -2
- package/dist/x/unless.mjs +2 -2
- package/dist/x/values.es.js +2 -2
- package/dist/x/values.es.min.js +2 -2
- package/dist/x/values.js +2 -2
- package/dist/x/values.min.js +2 -2
- package/dist/x/values.min.mjs +2 -2
- package/dist/x/values.mjs +2 -2
- package/dist/x/when.es.js +2 -2
- package/dist/x/when.es.min.js +2 -2
- package/dist/x/when.js +2 -2
- package/dist/x/when.min.js +2 -2
- package/dist/x/when.min.mjs +2 -2
- package/dist/x/when.mjs +2 -2
- package/dist-test.js +9 -2042
- package/eq.js +21 -63
- package/es.js +730 -869
- package/every.js +94 -0
- package/filter.js +23 -91
- package/flatMap.js +75 -70
- package/forEach.js +82 -0
- package/get.js +23 -6
- package/global.js +6 -4
- package/gt.js +15 -58
- package/gte.js +14 -57
- package/index.js +730 -869
- package/lt.js +17 -60
- package/lte.js +14 -57
- package/map.js +9 -94
- package/memory-usage/reduce.js +2 -2
- package/not.js +27 -45
- package/omit.js +4 -0
- package/or.js +50 -33
- package/package.json +7 -7
- package/pick.js +5 -1
- package/pipe.js +13 -50
- package/reduce.js +42 -51
- package/rubico.js +10 -8
- package/set.js +43 -10
- package/some.js +105 -0
- package/switchCase.js +13 -3
- package/tap.js +0 -24
- package/test.js +847 -1096
- package/thunkify.js +9 -0
- package/transform.js +31 -16
- package/tryCatch.js +19 -15
- package/x/differenceWith.js +3 -3
- package/x/filterOut.test.js +6 -6
- package/x/flatten.js +1 -1
- package/x/flatten.test.js +0 -8
- package/x/index.js +0 -2
- package/x/pluck.js +18 -27
- package/x/pluck.test.js +3 -7
- package/x/timeInLoop.js +16 -25
- package/x/timeInLoop.test.js +8 -4
- package/any.js +0 -82
- package/dist/any.es.min.js +0 -7
- package/dist/any.min.js +0 -8
- package/dist/any.min.mjs +0 -7
- package/dist/fork.es.js +0 -159
- package/dist/fork.es.min.js +0 -7
- package/dist/fork.js +0 -166
- package/dist/fork.min.js +0 -8
- package/dist/fork.min.mjs +0 -7
- package/dist/fork.mjs +0 -159
- package/dist/x/forEach.es.min.js +0 -7
- package/dist/x/forEach.min.js +0 -8
- package/dist/x/forEach.min.mjs +0 -7
- package/fork.js +0 -101
- package/x/forEach.js +0 -93
- package/x/forEach.test.js +0 -218
- /package/{benchmarks → archive/benchmarks-v1.9.7}/any.js +0 -0
- /package/{x/forEach.benchmark.js → archive/benchmarks-v1.9.7/forEach.js} +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/fork.js +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/integration.js +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/misc.js +0 -0
package/thunkify.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
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
|
*
|
|
@@ -18,6 +24,9 @@
|
|
|
18
24
|
* ```
|
|
19
25
|
*/
|
|
20
26
|
const thunkify = (func, ...args) => function thunk() {
|
|
27
|
+
if (areAnyValuesPromises(args)) {
|
|
28
|
+
return promiseAll(args).then(curry2(funcApply, func, __))
|
|
29
|
+
}
|
|
21
30
|
return func(...args)
|
|
22
31
|
}
|
|
23
32
|
|
package/transform.js
CHANGED
|
@@ -3,6 +3,19 @@ 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
|
*
|
|
@@ -10,19 +23,25 @@ const genericTransform = require('./_internal/genericTransform')
|
|
|
10
23
|
* ```coffeescript [specscript]
|
|
11
24
|
* type Reducer = (result any, item any)=>(result any)
|
|
12
25
|
* type Transducer = Reducer=>Reducer
|
|
13
|
-
* type
|
|
14
|
-
* type Foldable = Iterable|AsyncIterable|Object
|
|
26
|
+
* type Transformable = Array|String|Set|TypedArray|{ concat: function }|{ write: function }|Object
|
|
27
|
+
* type Foldable = Iterable|AsyncIterable|Object<value any>
|
|
15
28
|
*
|
|
16
|
-
* initialValue
|
|
29
|
+
* initialValue Transformable|((foldable Foldable)=>Promise|Transformable)
|
|
30
|
+
*
|
|
31
|
+
* transform(
|
|
32
|
+
* foldable Foldable,
|
|
33
|
+
* transducer Transducer,
|
|
34
|
+
* initialValue? Transformable|(Foldable=>Promise|Transformable),
|
|
35
|
+
* ) -> result Promise|Transformable
|
|
17
36
|
*
|
|
18
37
|
* transform(
|
|
19
38
|
* transducer Transducer,
|
|
20
|
-
* initialValue
|
|
21
|
-
* )(foldable Foldable) -> result Promise|
|
|
39
|
+
* initialValue? Transformable|(Foldable=>Promise|Transformable),
|
|
40
|
+
* )(foldable Foldable) -> result Promise|Transformable
|
|
22
41
|
* ```
|
|
23
42
|
*
|
|
24
43
|
* @description
|
|
25
|
-
* Transforms a
|
|
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:
|
|
26
45
|
*
|
|
27
46
|
* * `Array`; concatenation defined by `result.concat(values)`
|
|
28
47
|
* * `string`; concatenation defined by `result + values`
|
|
@@ -115,18 +134,14 @@ const genericTransform = require('./_internal/genericTransform')
|
|
|
115
134
|
*
|
|
116
135
|
* TODO explore Semigroup = Iterator|AsyncIterator
|
|
117
136
|
*/
|
|
118
|
-
const transform = function (
|
|
119
|
-
if (typeof
|
|
120
|
-
return
|
|
121
|
-
const result = init(...args)
|
|
122
|
-
return isPromise(result)
|
|
123
|
-
? result.then(curry3(genericTransform, args, transducer, __))
|
|
124
|
-
: genericTransform(args, transducer, result)
|
|
125
|
-
}
|
|
137
|
+
const transform = function (...args) {
|
|
138
|
+
if (typeof args[0] == 'function') {
|
|
139
|
+
return curry3(_transform, __, args[0], args[1])
|
|
126
140
|
}
|
|
127
|
-
|
|
128
|
-
return
|
|
141
|
+
if (isPromise(args[0])) {
|
|
142
|
+
return args[0].then(curry3(_transform, __, args[1], args[2]))
|
|
129
143
|
}
|
|
144
|
+
return _transform(args[0], args[1], args[2])
|
|
130
145
|
}
|
|
131
146
|
|
|
132
147
|
module.exports = transform
|
package/tryCatch.js
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
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
|
|
@@ -53,27 +67,17 @@ const tryCatch = function (...args) {
|
|
|
53
67
|
if (args.length > 2) {
|
|
54
68
|
const catcher = args.pop(),
|
|
55
69
|
tryer = args.pop()
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
? result.catch(curry3(catcherApply, catcher, __, args))
|
|
60
|
-
: result
|
|
61
|
-
} catch (error) {
|
|
62
|
-
return catcher(error, ...args)
|
|
70
|
+
if (areAnyValuesPromises(args)) {
|
|
71
|
+
return promiseAll(args)
|
|
72
|
+
.then(curry3(_tryCatch, tryer, catcher, __))
|
|
63
73
|
}
|
|
74
|
+
return _tryCatch(tryer, catcher, args)
|
|
64
75
|
}
|
|
65
76
|
|
|
66
77
|
const tryer = args[0],
|
|
67
78
|
catcher = args[1]
|
|
68
79
|
return function tryCatcher(...args) {
|
|
69
|
-
|
|
70
|
-
const result = tryer(...args)
|
|
71
|
-
return isPromise(result)
|
|
72
|
-
? result.catch(curry3(catcherApply, catcher, __, args))
|
|
73
|
-
: result
|
|
74
|
-
} catch (error) {
|
|
75
|
-
return catcher(error, ...args)
|
|
76
|
-
}
|
|
80
|
+
return _tryCatch(tryer, catcher, args)
|
|
77
81
|
}
|
|
78
82
|
}
|
|
79
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
|
})
|
package/any.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
const isArray = require('./_internal/isArray')
|
|
2
|
-
const objectValues = require('./_internal/objectValues')
|
|
3
|
-
const arrayAny = require('./_internal/arrayAny')
|
|
4
|
-
const iteratorAny = require('./_internal/iteratorAny')
|
|
5
|
-
const asyncIteratorAny = require('./_internal/asyncIteratorAny')
|
|
6
|
-
const reducerAny = require('./_internal/reducerAny')
|
|
7
|
-
const symbolIterator = require('./_internal/symbolIterator')
|
|
8
|
-
const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @name any
|
|
12
|
-
*
|
|
13
|
-
* @synopsis
|
|
14
|
-
* ```coffeescript [specscript]
|
|
15
|
-
* type Foldable = Iterable|AsyncIterable|Object
|
|
16
|
-
*
|
|
17
|
-
* any(predicate function)(collection Foldable) -> result Promise|boolean
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* @description
|
|
21
|
-
* Test a predicate concurrently across all items of a collection, returning true if any executions return truthy.
|
|
22
|
-
*
|
|
23
|
-
* ```javascript [playground]
|
|
24
|
-
* const isOdd = number => number % 2 == 1
|
|
25
|
-
*
|
|
26
|
-
* console.log(
|
|
27
|
-
* any(isOdd)([1, 2, 3, 4, 5]),
|
|
28
|
-
* ) // true
|
|
29
|
-
* ```
|
|
30
|
-
*
|
|
31
|
-
* The collection can be any iterable, async iterable, or object values iterable collection. Below is an example of `any` accepting an async generator as the collection.
|
|
32
|
-
*
|
|
33
|
-
* ```javascript [playground]
|
|
34
|
-
* const toTodosUrl = id => 'https://jsonplaceholder.typicode.com/todos/' + id
|
|
35
|
-
*
|
|
36
|
-
* const fetchedToJson = fetched => fetched.json()
|
|
37
|
-
*
|
|
38
|
-
* const fetchTodo = pipe([
|
|
39
|
-
* toTodosUrl,
|
|
40
|
-
* fetch,
|
|
41
|
-
* fetchedToJson,
|
|
42
|
-
* ])
|
|
43
|
-
*
|
|
44
|
-
* const todoIDsGenerator = async function* () {
|
|
45
|
-
* yield 1; yield 2; yield 3; yield 4; yield 5
|
|
46
|
-
* }
|
|
47
|
-
*
|
|
48
|
-
* any(pipe([
|
|
49
|
-
* fetchTodo,
|
|
50
|
-
* todo => todo.title.startsWith('fugiat'),
|
|
51
|
-
* ]))(todoIDsGenerator()).then(console.log) // true
|
|
52
|
-
* ```
|
|
53
|
-
*
|
|
54
|
-
* @execution concurrent
|
|
55
|
-
*
|
|
56
|
-
* @muxing
|
|
57
|
-
*
|
|
58
|
-
* @related or
|
|
59
|
-
*/
|
|
60
|
-
const any = predicate => function anyTruthy(value) {
|
|
61
|
-
if (isArray(value)) {
|
|
62
|
-
return arrayAny(value, predicate)
|
|
63
|
-
}
|
|
64
|
-
if (value == null) {
|
|
65
|
-
return predicate(value)
|
|
66
|
-
}
|
|
67
|
-
if (typeof value[symbolIterator] == 'function') {
|
|
68
|
-
return iteratorAny(value[symbolIterator](), predicate)
|
|
69
|
-
}
|
|
70
|
-
if (typeof value[symbolAsyncIterator] == 'function') {
|
|
71
|
-
return asyncIteratorAny(value[symbolAsyncIterator](), predicate, new Set())
|
|
72
|
-
}
|
|
73
|
-
if (typeof value.reduce == 'function') {
|
|
74
|
-
return value.reduce(reducerAny(predicate), false)
|
|
75
|
-
}
|
|
76
|
-
if (value.constructor == Object) {
|
|
77
|
-
return arrayAny(objectValues(value), predicate)
|
|
78
|
-
}
|
|
79
|
-
return predicate(value)
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
module.exports = any
|
package/dist/any.es.min.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* rubico v1.9.7
|
|
3
|
-
* https://github.com/a-synchronous/rubico
|
|
4
|
-
* (c) 2019-2021 Richard Tong
|
|
5
|
-
* rubico may be freely distributed under the MIT license.
|
|
6
|
-
*/
|
|
7
|
-
const isArray=Array.isArray,objectValues=Object.values,SelfReferencingPromise=function(r){const e=r.then((r=>[r,e]));return e},isPromise=r=>null!=r&&"function"==typeof r.then,promiseRace=Promise.race.bind(Promise),asyncArrayAny=async function(r,e,n,t){const o=r.length;for(;++n<o;){const o=e(r[n]);if(isPromise(o))t.add(SelfReferencingPromise(o));else if(o)return!0}for(;t.size>0;){const[r,e]=await promiseRace(t);if(t.delete(e),r)return!0}return!1},arrayAny=function(r,e){const n=r.length;let t=-1;for(;++t<n;){const n=e(r[t]);if(isPromise(n))return asyncArrayAny(r,e,t,new Set([SelfReferencingPromise(n)]));if(n)return!0}return!1},asyncIteratorAny=async function(r,e,n,t=20){let o=r.next();for(isPromise(o)&&(o=await o);!o.done;){if(n.size>=t){const[r,e]=await promiseRace(n);if(n.delete(e),r)return!0}const i=e(o.value);if(isPromise(i))n.add(SelfReferencingPromise(i));else if(i)return!0;o=r.next(),isPromise(o)&&(o=await o)}for(;n.size>0;){const[r,e]=await promiseRace(n);if(n.delete(e),r)return!0}return!1},iteratorAny=function(r,e){for(const n of r){const t=e(n);if(isPromise(t))return asyncIteratorAny(r,e,new Set([SelfReferencingPromise(t)]));if(t)return!0}return!1},reducerAnySync=r=>function(e,n){return!!e||r(n)},__=Symbol.for("placeholder"),curry2ResolveArg0=(r,e)=>function(n){return r(n,e)},curry2ResolveArg1=(r,e)=>function(n){return r(e,n)},curry2=function(r,e,n){return e==__?curry2ResolveArg0(r,n):curry2ResolveArg1(r,e)},reducerAny=r=>function(e,n){return!0===e?e:isPromise(e)?e.then((t=reducerAnySync(r),i=n,(o=__)==__?curry2ResolveArg0(t,i):curry2ResolveArg1(t,o))):!!e||r(n);var t,o,i},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,any=r=>function(e){return isArray(e)?arrayAny(e,r):null==e?r(e):"function"==typeof e[symbolIterator]?iteratorAny(e[symbolIterator](),r):"function"==typeof e[symbolAsyncIterator]?asyncIteratorAny(e[symbolAsyncIterator](),r,new Set):"function"==typeof e.reduce?e.reduce(reducerAny(r),!1):e.constructor==Object?arrayAny(objectValues(e),r):r(e)};export default any;
|
package/dist/any.min.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* rubico v1.9.7
|
|
3
|
-
* https://github.com/a-synchronous/rubico
|
|
4
|
-
* (c) 2019-2021 Richard Tong
|
|
5
|
-
* rubico may be freely distributed under the MIT license.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
!function(t,n){"object"==typeof module?module.exports=n:"function"==typeof define?define((()=>n)):t.any=n}("object"==typeof globalThis?globalThis:this,function(){"use strict";const t=Array.isArray,n=Object.values,e=function(t){const n=t.then((t=>[t,n]));return n},r=t=>null!=t&&"function"==typeof t.then,o=Promise.race.bind(Promise),i=async function(t,n,i,u){const f=t.length;for(;++i<f;){const o=n(t[i]);if(r(o))u.add(e(o));else if(o)return!0}for(;u.size>0;){const[t,n]=await o(u);if(u.delete(n),t)return!0}return!1},u=function(t,n){const o=t.length;let u=-1;for(;++u<o;){const o=n(t[u]);if(r(o))return i(t,n,u,new Set([e(o)]));if(o)return!0}return!1},f=async function(t,n,i,u=20){let f=t.next();for(r(f)&&(f=await f);!f.done;){if(i.size>=u){const[t,n]=await o(i);if(i.delete(n),t)return!0}const c=n(f.value);if(r(c))i.add(e(c));else if(c)return!0;f=t.next(),r(f)&&(f=await f)}for(;i.size>0;){const[t,n]=await o(i);if(i.delete(n),t)return!0}return!1},c=Symbol.for("placeholder"),s=t=>function(n,e){return!0===n?n:r(n)?n.then((o=(t=>function(n,e){return!!n||t(e)})(t),u=e,(i=c)==c?((t,n)=>function(e){return t(e,n)})(o,u):((t,n)=>function(e){return t(n,e)})(o,i))):!!n||t(e);var o,i,u},a=Symbol.iterator,l=Symbol.asyncIterator;return o=>function(i){return t(i)?u(i,o):null==i?o(i):"function"==typeof i[a]?function(t,n){for(const o of t){const i=n(o);if(r(i))return f(t,n,new Set([e(i)]));if(i)return!0}return!1}(i[a](),o):"function"==typeof i[l]?f(i[l](),o,new Set):"function"==typeof i.reduce?i.reduce(s(o),!1):i.constructor==Object?u(n(i),o):o(i)}}());
|
package/dist/any.min.mjs
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* rubico v1.9.7
|
|
3
|
-
* https://github.com/a-synchronous/rubico
|
|
4
|
-
* (c) 2019-2021 Richard Tong
|
|
5
|
-
* rubico may be freely distributed under the MIT license.
|
|
6
|
-
*/
|
|
7
|
-
const isArray=Array.isArray,objectValues=Object.values,SelfReferencingPromise=function(r){const e=r.then((r=>[r,e]));return e},isPromise=r=>null!=r&&"function"==typeof r.then,promiseRace=Promise.race.bind(Promise),asyncArrayAny=async function(r,e,n,t){const o=r.length;for(;++n<o;){const o=e(r[n]);if(isPromise(o))t.add(SelfReferencingPromise(o));else if(o)return!0}for(;t.size>0;){const[r,e]=await promiseRace(t);if(t.delete(e),r)return!0}return!1},arrayAny=function(r,e){const n=r.length;let t=-1;for(;++t<n;){const n=e(r[t]);if(isPromise(n))return asyncArrayAny(r,e,t,new Set([SelfReferencingPromise(n)]));if(n)return!0}return!1},asyncIteratorAny=async function(r,e,n,t=20){let o=r.next();for(isPromise(o)&&(o=await o);!o.done;){if(n.size>=t){const[r,e]=await promiseRace(n);if(n.delete(e),r)return!0}const i=e(o.value);if(isPromise(i))n.add(SelfReferencingPromise(i));else if(i)return!0;o=r.next(),isPromise(o)&&(o=await o)}for(;n.size>0;){const[r,e]=await promiseRace(n);if(n.delete(e),r)return!0}return!1},iteratorAny=function(r,e){for(const n of r){const t=e(n);if(isPromise(t))return asyncIteratorAny(r,e,new Set([SelfReferencingPromise(t)]));if(t)return!0}return!1},reducerAnySync=r=>function(e,n){return!!e||r(n)},__=Symbol.for("placeholder"),curry2ResolveArg0=(r,e)=>function(n){return r(n,e)},curry2ResolveArg1=(r,e)=>function(n){return r(e,n)},curry2=function(r,e,n){return e==__?curry2ResolveArg0(r,n):curry2ResolveArg1(r,e)},reducerAny=r=>function(e,n){return!0===e?e:isPromise(e)?e.then((t=reducerAnySync(r),i=n,(o=__)==__?curry2ResolveArg0(t,i):curry2ResolveArg1(t,o))):!!e||r(n);var t,o,i},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,any=r=>function(e){return isArray(e)?arrayAny(e,r):null==e?r(e):"function"==typeof e[symbolIterator]?iteratorAny(e[symbolIterator](),r):"function"==typeof e[symbolAsyncIterator]?asyncIteratorAny(e[symbolAsyncIterator](),r,new Set):"function"==typeof e.reduce?e.reduce(reducerAny(r),!1):e.constructor==Object?arrayAny(objectValues(e),r):r(e)};export default any;
|