rubico 1.9.6 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +5 -0
- package/.eslintrc.js +3 -2
- package/.github/workflows/nodejs.yml +1 -1
- package/AggregateReducer.js +19 -0
- package/AggregateReducer.test.js +82 -0
- package/CHANGELOG.md +22 -1
- package/Transducer.js +162 -0
- package/Transducer.test.js +117 -0
- package/_internal/ComparisonOperator.js +68 -0
- package/_internal/File.js +41 -0
- package/_internal/FlatMappingAsyncIterator.js +4 -4
- package/_internal/FlatMappingIterator.js +1 -1
- package/_internal/TimeInLoopSuite.js +138 -0
- package/_internal/areAnyValuesPromises.js +23 -0
- package/_internal/{arrayAll.js → arrayEvery.js} +4 -4
- package/_internal/arrayExtend.js +3 -2
- package/_internal/arrayFilter.js +3 -4
- package/_internal/{arrayAny.js → arraySome.js} +8 -8
- package/_internal/{asyncIteratorAll.js → asyncIteratorEvery.js} +4 -4
- package/_internal/{asyncIteratorAny.js → asyncIteratorSome.js} +4 -4
- package/_internal/curry4.test.js +25 -0
- package/_internal/curry5.test.js +29 -0
- package/_internal/curryArgs2.js +43 -0
- package/_internal/curryArgs3.test.js +21 -0
- package/_internal/curryArgs4.js +65 -0
- package/_internal/curryArgs4.test.js +25 -0
- package/_internal/equals.js +13 -0
- package/_internal/findAllFilePaths.js +22 -0
- package/_internal/funcApply.js +2 -0
- package/_internal/funcCall.js +14 -0
- package/_internal/functionArrayAll.js +26 -0
- package/_internal/functionArrayAllSeries.js +55 -0
- package/_internal/functionObjectAll.js +32 -0
- package/_internal/genericReduce.js +4 -22
- package/_internal/genericTransform.js +15 -15
- package/_internal/improvedGenericTransform.js +93 -0
- package/_internal/{iteratorAll.js → iteratorEvery.js} +4 -4
- package/_internal/{iteratorAny.js → iteratorSome.js} +6 -6
- package/_internal/leftResolverRightResolverCompare.js +19 -0
- package/_internal/leftResolverRightValueCompare.js +16 -0
- package/_internal/leftValueRightResolverCompare.js +16 -0
- package/_internal/objectReduce.js +0 -1
- package/_internal/pathResolve.js +6 -0
- package/_internal/{reducerAll.js → reducerEvery.js} +4 -4
- package/_internal/reducerFlatMap.js +4 -4
- package/_internal/reducerFlatten.js +1 -1
- package/_internal/{reducerAny.js → reducerSome.js} +4 -4
- package/_internal/timeInLoop.js +37 -0
- package/_internal/timeInLoop.test.js +18 -0
- package/_internal/timeInLoopAsync.js +35 -0
- package/_internal/timeInLoopAsync.test.js +22 -0
- package/all.js +105 -45
- package/always.js +3 -9
- package/and.js +69 -45
- package/archive/{FlatMappingIteratorCool.js → FlatMappingIterator-2020-09-28.js} +1 -1
- package/archive/_Promise-2023-05-29.js +93 -0
- package/archive/arrayMap2-2023-05-29.js +73 -0
- package/archive/benchmarks-v1.9.7/all.js +34 -0
- package/archive/benchmarks-v1.9.7/and.js +24 -0
- package/archive/benchmarks-v1.9.7/assign.js +174 -0
- package/archive/benchmarks-v1.9.7/curry.js +55 -0
- package/archive/benchmarks-v1.9.7/eq.js +25 -0
- package/archive/benchmarks-v1.9.7/filter.js +1322 -0
- package/archive/benchmarks-v1.9.7/flatMap.js +48 -0
- package/archive/benchmarks-v1.9.7/get.js +44 -0
- package/archive/benchmarks-v1.9.7/gt.js +25 -0
- package/archive/benchmarks-v1.9.7/gte.js +25 -0
- package/archive/benchmarks-v1.9.7/lt.js +25 -0
- package/archive/benchmarks-v1.9.7/lte.js +25 -0
- package/archive/benchmarks-v1.9.7/map.js +892 -0
- package/archive/benchmarks-v1.9.7/omit.js +28 -0
- package/archive/benchmarks-v1.9.7/or.js +51 -0
- package/archive/benchmarks-v1.9.7/pick.js +24 -0
- package/archive/benchmarks-v1.9.7/pipe.js +152 -0
- package/archive/benchmarks-v1.9.7/reduce.js +739 -0
- package/archive/benchmarks-v1.9.7/switchCase.js +256 -0
- package/archive/benchmarks-v1.9.7/tap.js +90 -0
- package/archive/benchmarks-v1.9.7/transform.js +218 -0
- package/archive/benchmarks-v1.9.7/tryCatch.js +108 -0
- package/assign.js +45 -22
- package/bench +65 -0
- package/benchmark-output/v1.9.7 +268 -0
- package/benchmarks/all.async.js +43 -0
- package/benchmarks/all.js +42 -33
- package/benchmarks/always.js +15 -0
- package/benchmarks/and.async.js +25 -0
- package/benchmarks/and.js +20 -19
- package/benchmarks/assign.async.js +27 -0
- package/benchmarks/assign.js +20 -167
- package/benchmarks/curry.js +34 -54
- package/benchmarks/eq.async.js +23 -0
- package/benchmarks/eq.js +17 -19
- package/benchmarks/every.async.js +19 -0
- package/benchmarks/every.js +19 -0
- package/benchmarks/filter.async.js +32 -0
- package/benchmarks/filter.js +27 -1311
- package/benchmarks/flatMap.async.js +26 -0
- package/benchmarks/flatMap.js +26 -36
- package/benchmarks/get.async.js +19 -0
- package/benchmarks/get.js +27 -32
- package/benchmarks/gt.async.js +23 -0
- package/benchmarks/gt.js +17 -19
- package/benchmarks/gte.async.js +23 -0
- package/benchmarks/gte.js +17 -19
- package/benchmarks/lt.async.js +23 -0
- package/benchmarks/lt.js +17 -19
- package/benchmarks/lte.async.js +23 -0
- package/benchmarks/lte.js +17 -19
- package/benchmarks/map.async.js +43 -0
- package/benchmarks/map.js +24 -876
- package/benchmarks/misc/Promise.js +26 -0
- package/benchmarks/misc/isPromise.js +30 -0
- package/benchmarks/misc/promiseAll.js +36 -0
- package/benchmarks/not.js +23 -0
- package/benchmarks/omit.js +30 -20
- package/benchmarks/or.async.js +25 -0
- package/benchmarks/or.js +23 -49
- package/benchmarks/pick.js +30 -16
- package/benchmarks/pipe.async.js +47 -0
- package/benchmarks/pipe.js +46 -151
- package/benchmarks/reduce.async.js +32 -0
- package/benchmarks/reduce.js +27 -728
- package/benchmarks/set.async.js +19 -0
- package/benchmarks/set.js +41 -0
- package/benchmarks/some.async.js +19 -0
- package/benchmarks/some.js +19 -0
- package/benchmarks/switchCase.async.js +27 -0
- package/benchmarks/switchCase.js +55 -256
- package/benchmarks/tap.js +10 -85
- package/benchmarks/thunkify.js +15 -0
- package/benchmarks/transform.async.js +27 -0
- package/benchmarks/transform.js +28 -206
- package/benchmarks/tryCatch.async.js +25 -0
- package/benchmarks/tryCatch.js +24 -100
- package/{distributor.js → build} +50 -50
- package/compose.js +46 -0
- package/curry.js +20 -12
- package/dist/__.es.js +2 -2
- package/dist/__.es.min.js +2 -2
- package/dist/__.js +2 -2
- package/dist/__.min.js +2 -2
- package/dist/__.min.mjs +2 -2
- package/dist/__.mjs +2 -2
- package/dist/all.es.js +173 -92
- package/dist/all.es.min.js +3 -3
- package/dist/all.js +173 -92
- package/dist/all.min.js +3 -3
- package/dist/all.min.mjs +3 -3
- package/dist/all.mjs +173 -92
- package/dist/always.es.js +2 -2
- package/dist/always.es.min.js +2 -2
- package/dist/always.js +2 -2
- package/dist/always.min.js +2 -2
- package/dist/always.min.mjs +2 -2
- package/dist/always.mjs +2 -2
- package/dist/and.es.js +101 -32
- package/dist/and.es.min.js +3 -3
- package/dist/and.js +101 -32
- package/dist/and.min.js +3 -3
- package/dist/and.min.mjs +3 -3
- package/dist/and.mjs +101 -32
- package/dist/assign.es.js +37 -10
- package/dist/assign.es.min.js +3 -3
- package/dist/assign.js +37 -10
- package/dist/assign.min.js +3 -3
- package/dist/assign.min.mjs +3 -3
- package/dist/assign.mjs +37 -10
- package/dist/compose.es.js +71 -0
- package/dist/compose.es.min.js +7 -0
- package/dist/compose.js +78 -0
- package/dist/compose.min.js +8 -0
- package/dist/compose.min.mjs +7 -0
- package/dist/compose.mjs +71 -0
- package/dist/curry.es.js +2 -2
- package/dist/curry.es.min.js +2 -2
- package/dist/curry.js +2 -2
- package/dist/curry.min.js +2 -2
- package/dist/curry.min.mjs +2 -2
- package/dist/curry.mjs +2 -2
- package/dist/eq.es.js +172 -49
- package/dist/eq.es.min.js +3 -3
- package/dist/eq.js +172 -49
- package/dist/eq.min.js +3 -3
- package/dist/eq.min.mjs +3 -3
- package/dist/eq.mjs +172 -49
- package/dist/every.es.js +194 -0
- package/dist/every.es.min.js +7 -0
- package/dist/every.js +201 -0
- package/dist/every.min.js +8 -0
- package/dist/every.min.mjs +7 -0
- package/dist/every.mjs +194 -0
- package/dist/filter.es.js +14 -108
- package/dist/filter.es.min.js +3 -3
- package/dist/filter.js +14 -108
- package/dist/filter.min.js +3 -3
- package/dist/filter.min.mjs +3 -3
- package/dist/filter.mjs +14 -108
- package/dist/flatMap.es.js +27 -214
- package/dist/flatMap.es.min.js +3 -3
- package/dist/flatMap.js +27 -214
- package/dist/flatMap.min.js +3 -3
- package/dist/flatMap.min.mjs +3 -3
- package/dist/flatMap.mjs +27 -214
- package/dist/{x/forEach.es.js → forEach.es.js} +52 -70
- package/dist/forEach.es.min.js +7 -0
- package/dist/{x/forEach.js → forEach.js} +52 -70
- package/dist/forEach.min.js +8 -0
- package/dist/forEach.min.mjs +7 -0
- package/dist/{x/forEach.mjs → forEach.mjs} +52 -70
- package/dist/get.es.js +60 -5
- package/dist/get.es.min.js +3 -3
- package/dist/get.js +60 -5
- package/dist/get.min.js +3 -3
- package/dist/get.min.mjs +3 -3
- package/dist/get.mjs +60 -5
- package/dist/gt.es.js +171 -48
- package/dist/gt.es.min.js +3 -3
- package/dist/gt.js +171 -48
- package/dist/gt.min.js +3 -3
- package/dist/gt.min.mjs +3 -3
- package/dist/gt.mjs +171 -48
- package/dist/gte.es.js +171 -48
- package/dist/gte.es.min.js +3 -3
- package/dist/gte.js +171 -48
- package/dist/gte.min.js +3 -3
- package/dist/gte.min.mjs +3 -3
- package/dist/gte.mjs +171 -48
- package/dist/lt.es.js +171 -48
- package/dist/lt.es.min.js +3 -3
- package/dist/lt.js +171 -48
- package/dist/lt.min.js +3 -3
- package/dist/lt.min.mjs +3 -3
- package/dist/lt.mjs +171 -48
- package/dist/lte.es.js +171 -48
- package/dist/lte.es.min.js +3 -3
- package/dist/lte.js +171 -48
- package/dist/lte.min.js +3 -3
- package/dist/lte.min.mjs +3 -3
- package/dist/lte.mjs +171 -48
- package/dist/map.es.js +12 -101
- package/dist/map.es.min.js +3 -3
- package/dist/map.js +12 -101
- package/dist/map.min.js +3 -3
- package/dist/map.min.mjs +3 -3
- package/dist/map.mjs +12 -101
- package/dist/not.es.js +75 -14
- package/dist/not.es.min.js +3 -3
- package/dist/not.js +75 -14
- package/dist/not.min.js +3 -3
- package/dist/not.min.mjs +3 -3
- package/dist/not.mjs +75 -14
- package/dist/omit.es.js +38 -3
- package/dist/omit.es.min.js +3 -3
- package/dist/omit.js +38 -3
- package/dist/omit.min.js +3 -3
- package/dist/omit.min.mjs +3 -3
- package/dist/omit.mjs +38 -3
- package/dist/or.es.js +99 -31
- package/dist/or.es.min.js +3 -3
- package/dist/or.js +99 -31
- package/dist/or.min.js +3 -3
- package/dist/or.min.mjs +3 -3
- package/dist/or.mjs +99 -31
- package/dist/pick.es.js +38 -3
- package/dist/pick.es.min.js +3 -3
- package/dist/pick.js +38 -3
- package/dist/pick.min.js +3 -3
- package/dist/pick.min.mjs +3 -3
- package/dist/pick.mjs +38 -3
- package/dist/pipe.es.js +42 -46
- package/dist/pipe.es.min.js +3 -3
- package/dist/pipe.js +42 -46
- package/dist/pipe.min.js +3 -3
- package/dist/pipe.min.mjs +3 -3
- package/dist/pipe.mjs +42 -46
- package/dist/reduce.es.js +52 -94
- package/dist/reduce.es.min.js +3 -3
- package/dist/reduce.js +52 -94
- package/dist/reduce.min.js +3 -3
- package/dist/reduce.min.mjs +3 -3
- package/dist/reduce.mjs +52 -94
- package/dist/rubico.es.js +746 -869
- package/dist/rubico.es.min.js +3 -3
- package/dist/rubico.js +746 -869
- package/dist/rubico.min.js +3 -3
- package/dist/rubico.min.mjs +3 -3
- package/dist/rubico.mjs +746 -869
- package/dist/set.es.js +18 -3
- package/dist/set.es.min.js +3 -3
- package/dist/set.js +18 -3
- package/dist/set.min.js +3 -3
- package/dist/set.min.mjs +3 -3
- package/dist/set.mjs +18 -3
- package/dist/{any.js → some.es.js} +64 -54
- package/dist/some.es.min.js +7 -0
- package/dist/{any.mjs → some.js} +72 -48
- package/dist/some.min.js +8 -0
- package/dist/some.min.mjs +7 -0
- package/dist/{any.es.js → some.mjs} +65 -48
- package/dist/switchCase.es.js +55 -5
- package/dist/switchCase.es.min.js +3 -3
- package/dist/switchCase.js +55 -5
- package/dist/switchCase.min.js +3 -3
- package/dist/switchCase.min.mjs +3 -3
- package/dist/switchCase.mjs +55 -5
- package/dist/tap.es.js +2 -9
- package/dist/tap.es.min.js +3 -3
- package/dist/tap.js +2 -9
- package/dist/tap.min.js +3 -3
- package/dist/tap.min.mjs +3 -3
- package/dist/tap.mjs +2 -9
- package/dist/thunkify.es.js +45 -2
- package/dist/thunkify.es.min.js +3 -3
- package/dist/thunkify.js +45 -2
- package/dist/thunkify.min.js +3 -3
- package/dist/thunkify.min.mjs +3 -3
- package/dist/thunkify.mjs +45 -2
- package/dist/transform.es.js +35 -71
- package/dist/transform.es.min.js +3 -3
- package/dist/transform.js +35 -71
- package/dist/transform.min.js +3 -3
- package/dist/transform.min.mjs +3 -3
- package/dist/transform.mjs +35 -71
- package/dist/tryCatch.es.js +33 -17
- package/dist/tryCatch.es.min.js +3 -3
- package/dist/tryCatch.js +33 -17
- package/dist/tryCatch.min.js +3 -3
- package/dist/tryCatch.min.mjs +3 -3
- package/dist/tryCatch.mjs +33 -17
- package/dist/x/append.es.js +2 -2
- package/dist/x/append.es.min.js +2 -2
- package/dist/x/append.js +2 -2
- package/dist/x/append.min.js +2 -2
- package/dist/x/append.min.mjs +2 -2
- package/dist/x/append.mjs +2 -2
- package/dist/x/callProp.es.js +2 -2
- package/dist/x/callProp.es.min.js +2 -2
- package/dist/x/callProp.js +2 -2
- package/dist/x/callProp.min.js +2 -2
- package/dist/x/callProp.min.mjs +2 -2
- package/dist/x/callProp.mjs +2 -2
- package/dist/x/defaultsDeep.es.js +2 -2
- package/dist/x/defaultsDeep.es.min.js +2 -2
- package/dist/x/defaultsDeep.js +2 -2
- package/dist/x/defaultsDeep.min.js +2 -2
- package/dist/x/defaultsDeep.min.mjs +2 -2
- package/dist/x/defaultsDeep.mjs +2 -2
- package/dist/x/differenceWith.es.js +7 -7
- package/dist/x/differenceWith.es.min.js +3 -3
- package/dist/x/differenceWith.js +7 -7
- package/dist/x/differenceWith.min.js +2 -2
- package/dist/x/differenceWith.min.mjs +3 -3
- package/dist/x/differenceWith.mjs +7 -7
- package/dist/x/filterOut.es.js +60 -117
- package/dist/x/filterOut.es.min.js +3 -3
- package/dist/x/filterOut.js +60 -117
- package/dist/x/filterOut.min.js +3 -3
- package/dist/x/filterOut.min.mjs +3 -3
- package/dist/x/filterOut.mjs +60 -117
- package/dist/x/find.es.js +2 -2
- package/dist/x/find.es.min.js +2 -2
- package/dist/x/find.js +2 -2
- package/dist/x/find.min.js +2 -2
- package/dist/x/find.min.mjs +2 -2
- package/dist/x/find.mjs +2 -2
- package/dist/x/findIndex.es.js +2 -2
- package/dist/x/findIndex.es.min.js +2 -2
- package/dist/x/findIndex.js +2 -2
- package/dist/x/findIndex.min.js +2 -2
- package/dist/x/findIndex.min.mjs +2 -2
- package/dist/x/findIndex.mjs +2 -2
- package/dist/x/first.es.js +2 -2
- package/dist/x/first.es.min.js +2 -2
- package/dist/x/first.js +2 -2
- package/dist/x/first.min.js +2 -2
- package/dist/x/first.min.mjs +2 -2
- package/dist/x/first.mjs +2 -2
- package/dist/x/flatten.es.js +20 -207
- package/dist/x/flatten.es.min.js +3 -3
- package/dist/x/flatten.js +20 -207
- package/dist/x/flatten.min.js +3 -3
- package/dist/x/flatten.min.mjs +3 -3
- package/dist/x/flatten.mjs +20 -207
- package/dist/x/groupBy.es.js +52 -94
- package/dist/x/groupBy.es.min.js +3 -3
- package/dist/x/groupBy.js +52 -94
- package/dist/x/groupBy.min.js +3 -3
- package/dist/x/groupBy.min.mjs +3 -3
- package/dist/x/groupBy.mjs +52 -94
- package/dist/x/has.es.js +2 -2
- package/dist/x/has.es.min.js +2 -2
- package/dist/x/has.js +2 -2
- package/dist/x/has.min.js +2 -2
- package/dist/x/has.min.mjs +2 -2
- package/dist/x/has.mjs +2 -2
- package/dist/x/identity.es.js +2 -2
- package/dist/x/identity.es.min.js +2 -2
- package/dist/x/identity.js +2 -2
- package/dist/x/identity.min.js +2 -2
- package/dist/x/identity.min.mjs +2 -2
- package/dist/x/identity.mjs +2 -2
- package/dist/x/includes.es.js +2 -2
- package/dist/x/includes.es.min.js +2 -2
- package/dist/x/includes.js +2 -2
- package/dist/x/includes.min.js +2 -2
- package/dist/x/includes.min.mjs +2 -2
- package/dist/x/includes.mjs +2 -2
- package/dist/x/isDeepEqual.es.js +2 -2
- package/dist/x/isDeepEqual.es.min.js +2 -2
- package/dist/x/isDeepEqual.js +2 -2
- package/dist/x/isDeepEqual.min.js +2 -2
- package/dist/x/isDeepEqual.min.mjs +2 -2
- package/dist/x/isDeepEqual.mjs +2 -2
- package/dist/x/isEmpty.es.js +2 -2
- package/dist/x/isEmpty.es.min.js +2 -2
- package/dist/x/isEmpty.js +2 -2
- package/dist/x/isEmpty.min.js +2 -2
- package/dist/x/isEmpty.min.mjs +2 -2
- package/dist/x/isEmpty.mjs +2 -2
- package/dist/x/isEqual.es.js +2 -2
- package/dist/x/isEqual.es.min.js +2 -2
- package/dist/x/isEqual.js +2 -2
- package/dist/x/isEqual.min.js +2 -2
- package/dist/x/isEqual.min.mjs +2 -2
- package/dist/x/isEqual.mjs +2 -2
- package/dist/x/isFunction.es.js +2 -2
- package/dist/x/isFunction.es.min.js +2 -2
- package/dist/x/isFunction.js +2 -2
- package/dist/x/isFunction.min.js +2 -2
- package/dist/x/isFunction.min.mjs +2 -2
- package/dist/x/isFunction.mjs +2 -2
- package/dist/x/isIn.es.js +2 -2
- package/dist/x/isIn.es.min.js +2 -2
- package/dist/x/isIn.js +2 -2
- package/dist/x/isIn.min.js +2 -2
- package/dist/x/isIn.min.mjs +2 -2
- package/dist/x/isIn.mjs +2 -2
- package/dist/x/isObject.es.js +2 -2
- package/dist/x/isObject.es.min.js +2 -2
- package/dist/x/isObject.js +2 -2
- package/dist/x/isObject.min.js +2 -2
- package/dist/x/isObject.min.mjs +2 -2
- package/dist/x/isObject.mjs +2 -2
- package/dist/x/isString.es.js +2 -2
- package/dist/x/isString.es.min.js +2 -2
- package/dist/x/isString.js +2 -2
- package/dist/x/isString.min.js +2 -2
- package/dist/x/isString.min.mjs +2 -2
- package/dist/x/isString.mjs +2 -2
- package/dist/x/keys.es.js +2 -2
- package/dist/x/keys.es.min.js +2 -2
- package/dist/x/keys.js +2 -2
- package/dist/x/keys.min.js +2 -2
- package/dist/x/keys.min.mjs +2 -2
- package/dist/x/keys.mjs +2 -2
- package/dist/x/last.es.js +2 -2
- package/dist/x/last.es.min.js +2 -2
- package/dist/x/last.js +2 -2
- package/dist/x/last.min.js +2 -2
- package/dist/x/last.min.mjs +2 -2
- package/dist/x/last.mjs +2 -2
- package/dist/x/maxBy.es.js +59 -6
- package/dist/x/maxBy.es.min.js +3 -3
- package/dist/x/maxBy.js +59 -6
- package/dist/x/maxBy.min.js +3 -3
- package/dist/x/maxBy.min.mjs +3 -3
- package/dist/x/maxBy.mjs +59 -6
- package/dist/x/noop.es.js +2 -2
- package/dist/x/noop.es.min.js +2 -2
- package/dist/x/noop.js +2 -2
- package/dist/x/noop.min.js +2 -2
- package/dist/x/noop.min.mjs +2 -2
- package/dist/x/noop.mjs +2 -2
- package/dist/x/pluck.es.js +32 -103
- package/dist/x/pluck.es.min.js +3 -3
- package/dist/x/pluck.js +32 -103
- package/dist/x/pluck.min.js +3 -3
- package/dist/x/pluck.min.mjs +3 -3
- package/dist/x/pluck.mjs +32 -103
- package/dist/x/prepend.es.js +2 -2
- package/dist/x/prepend.es.min.js +2 -2
- package/dist/x/prepend.js +2 -2
- package/dist/x/prepend.min.js +2 -2
- package/dist/x/prepend.min.mjs +2 -2
- package/dist/x/prepend.mjs +2 -2
- package/dist/x/size.es.js +2 -2
- package/dist/x/size.es.min.js +2 -2
- package/dist/x/size.js +2 -2
- package/dist/x/size.min.js +2 -2
- package/dist/x/size.min.mjs +2 -2
- package/dist/x/size.mjs +2 -2
- package/dist/x/trace.es.js +2 -9
- package/dist/x/trace.es.min.js +3 -3
- package/dist/x/trace.js +2 -9
- package/dist/x/trace.min.js +3 -3
- package/dist/x/trace.min.mjs +3 -3
- package/dist/x/trace.mjs +2 -9
- package/dist/x/unionWith.es.js +2 -2
- package/dist/x/unionWith.es.min.js +2 -2
- package/dist/x/unionWith.js +2 -2
- package/dist/x/unionWith.min.js +2 -2
- package/dist/x/unionWith.min.mjs +2 -2
- package/dist/x/unionWith.mjs +2 -2
- package/dist/x/uniq.es.js +2 -2
- package/dist/x/uniq.es.min.js +2 -2
- package/dist/x/uniq.js +2 -2
- package/dist/x/uniq.min.js +2 -2
- package/dist/x/uniq.min.mjs +2 -2
- package/dist/x/uniq.mjs +2 -2
- package/dist/x/unless.es.js +2 -2
- package/dist/x/unless.es.min.js +2 -2
- package/dist/x/unless.js +2 -2
- package/dist/x/unless.min.js +2 -2
- package/dist/x/unless.min.mjs +2 -2
- package/dist/x/unless.mjs +2 -2
- package/dist/x/values.es.js +2 -2
- package/dist/x/values.es.min.js +2 -2
- package/dist/x/values.js +2 -2
- package/dist/x/values.min.js +2 -2
- package/dist/x/values.min.mjs +2 -2
- package/dist/x/values.mjs +2 -2
- package/dist/x/when.es.js +2 -2
- package/dist/x/when.es.min.js +2 -2
- package/dist/x/when.js +2 -2
- package/dist/x/when.min.js +2 -2
- package/dist/x/when.min.mjs +2 -2
- package/dist/x/when.mjs +2 -2
- package/dist-test.js +9 -2025
- package/eq.js +21 -63
- package/es.js +746 -869
- package/every.js +94 -0
- package/filter.js +83 -125
- package/flatMap.js +105 -154
- package/forEach.js +82 -0
- package/get.js +44 -36
- package/global.js +6 -4
- package/gt.js +15 -58
- package/gte.js +14 -57
- package/index.js +746 -869
- package/lt.js +17 -60
- package/lte.js +14 -57
- package/map.js +153 -203
- package/memory-usage/reduce.js +2 -2
- package/not.js +30 -49
- package/omit.js +36 -13
- package/or.js +64 -41
- package/package.json +7 -7
- package/pick.js +52 -22
- package/pipe.js +27 -92
- package/reduce.js +114 -129
- package/rubico.js +10 -8
- package/set.js +60 -24
- package/some.js +105 -0
- package/switchCase.js +29 -25
- package/tap.js +15 -45
- package/test.js +847 -1083
- package/thunkify.js +11 -5
- package/transform.js +57 -81
- package/tryCatch.js +38 -32
- package/x/differenceWith.js +3 -3
- package/x/filterOut.test.js +6 -6
- package/x/flatten.js +1 -1
- package/x/flatten.test.js +0 -8
- package/x/index.js +0 -2
- package/x/pluck.js +18 -27
- package/x/pluck.test.js +3 -7
- package/x/timeInLoop.js +16 -25
- package/x/timeInLoop.test.js +8 -4
- package/any.js +0 -88
- package/dist/any.es.min.js +0 -7
- package/dist/any.min.js +0 -8
- package/dist/any.min.mjs +0 -7
- package/dist/fork.es.js +0 -159
- package/dist/fork.es.min.js +0 -7
- package/dist/fork.js +0 -166
- package/dist/fork.min.js +0 -8
- package/dist/fork.min.mjs +0 -7
- package/dist/fork.mjs +0 -159
- package/dist/x/forEach.es.min.js +0 -7
- package/dist/x/forEach.min.js +0 -8
- package/dist/x/forEach.min.mjs +0 -7
- package/fork.js +0 -91
- package/x/forEach.js +0 -93
- package/x/forEach.test.js +0 -218
- /package/{benchmarks → archive/benchmarks-v1.9.7}/any.js +0 -0
- /package/{x/forEach.benchmark.js → archive/benchmarks-v1.9.7/forEach.js} +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/fork.js +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/integration.js +0 -0
- /package/{benchmarks → archive/benchmarks-v1.9.7}/misc.js +0 -0
package/every.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
const isPromise = require('./_internal/isPromise')
|
|
2
|
+
const __ = require('./_internal/placeholder')
|
|
3
|
+
const curry2 = require('./_internal/curry2')
|
|
4
|
+
const isArray = require('./_internal/isArray')
|
|
5
|
+
const arrayEvery = require('./_internal/arrayEvery')
|
|
6
|
+
const iteratorEvery = require('./_internal/iteratorEvery')
|
|
7
|
+
const asyncIteratorEvery = require('./_internal/asyncIteratorEvery')
|
|
8
|
+
const objectValues = require('./_internal/objectValues')
|
|
9
|
+
const reducerEvery = require('./_internal/reducerEvery')
|
|
10
|
+
const symbolIterator = require('./_internal/symbolIterator')
|
|
11
|
+
const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
12
|
+
|
|
13
|
+
// _every(collection Array|Iterable|AsyncIterable|{ reduce: function }|Object, predicate function) -> Promise|boolean
|
|
14
|
+
const _every = function (collection, predicate) {
|
|
15
|
+
if (isArray(collection)) {
|
|
16
|
+
return arrayEvery(collection, predicate)
|
|
17
|
+
}
|
|
18
|
+
if (collection == null) {
|
|
19
|
+
return predicate(collection)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (typeof collection[symbolIterator] == 'function') {
|
|
23
|
+
return iteratorEvery(collection[symbolIterator](), predicate)
|
|
24
|
+
}
|
|
25
|
+
if (typeof collection[symbolAsyncIterator] == 'function') {
|
|
26
|
+
return asyncIteratorEvery(
|
|
27
|
+
collection[symbolAsyncIterator](), predicate, new Set()
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
if (typeof collection.reduce == 'function') {
|
|
31
|
+
return collection.reduce(reducerEvery(predicate), true)
|
|
32
|
+
}
|
|
33
|
+
if (collection.constructor == Object) {
|
|
34
|
+
return arrayEvery(objectValues(collection), predicate)
|
|
35
|
+
}
|
|
36
|
+
return predicate(collection)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @name every
|
|
41
|
+
*
|
|
42
|
+
* @synopsis
|
|
43
|
+
* ```coffeescript [specscript]
|
|
44
|
+
* type Foldable = Array|Iterable|AsyncIterable|{ reduce: function }|Object
|
|
45
|
+
*
|
|
46
|
+
* every(collection Foldable, predicate function) -> result Promise|boolean
|
|
47
|
+
*
|
|
48
|
+
* every(predicate function)(collection Foldable) -> result Promise|boolean
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @description
|
|
52
|
+
* Test a predicate concurrently across all items of a collection, returning true if all predications are truthy.
|
|
53
|
+
*
|
|
54
|
+
* ```javascript [playground]
|
|
55
|
+
* const isOdd = number => number % 2 == 1
|
|
56
|
+
*
|
|
57
|
+
* console.log(
|
|
58
|
+
* every(isOdd)([1, 2, 3, 4, 5]),
|
|
59
|
+
* ) // false
|
|
60
|
+
*
|
|
61
|
+
* console.log(
|
|
62
|
+
* every(isOdd)([1, 3, 5]),
|
|
63
|
+
* ) // true
|
|
64
|
+
* ```
|
|
65
|
+
*
|
|
66
|
+
* The collection can be any iterable, async iterable, or object values iterable collection. Below is an example of `every` accepting an async generator as the collection.
|
|
67
|
+
*
|
|
68
|
+
* ```javascript [playground]
|
|
69
|
+
* const asyncNumbers = async function* () {
|
|
70
|
+
* yield 1; yield 2; yield 3; yield 4; yield 5
|
|
71
|
+
* }
|
|
72
|
+
*
|
|
73
|
+
* every(async number => number < 6)(asyncNumbers()).then(console.log) // true
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* @execution concurrent
|
|
77
|
+
*
|
|
78
|
+
* @muxing
|
|
79
|
+
*/
|
|
80
|
+
const every = function (...args) {
|
|
81
|
+
const predicate = args.pop()
|
|
82
|
+
if (args.length == 0) {
|
|
83
|
+
return curry2(_every, __, predicate)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const collection = args[0]
|
|
87
|
+
if (isPromise(collection)) {
|
|
88
|
+
return collection.then(curry2(_every, __, predicate))
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return _every(collection, predicate)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
module.exports = every
|
package/filter.js
CHANGED
|
@@ -3,17 +3,11 @@ const curry2 = require('./_internal/curry2')
|
|
|
3
3
|
const FilteringIterator = require('./_internal/FilteringIterator')
|
|
4
4
|
const FilteringAsyncIterator = require('./_internal/FilteringAsyncIterator')
|
|
5
5
|
const isArray = require('./_internal/isArray')
|
|
6
|
-
const isGeneratorFunction = require('./_internal/isGeneratorFunction')
|
|
7
|
-
const isAsyncGeneratorFunction = require('./_internal/isAsyncGeneratorFunction')
|
|
8
6
|
const arrayFilter = require('./_internal/arrayFilter')
|
|
9
|
-
const generatorFunctionFilter = require('./_internal/generatorFunctionFilter')
|
|
10
|
-
const asyncGeneratorFunctionFilter = require('./_internal/asyncGeneratorFunctionFilter')
|
|
11
|
-
const reducerFilter = require('./_internal/reducerFilter')
|
|
12
7
|
const stringFilter = require('./_internal/stringFilter')
|
|
13
8
|
const setFilter = require('./_internal/setFilter')
|
|
14
9
|
const mapFilter = require('./_internal/mapFilter')
|
|
15
10
|
const objectFilter = require('./_internal/objectFilter')
|
|
16
|
-
const arrayFilterWithIndex = require('./_internal/arrayFilterWithIndex')
|
|
17
11
|
const symbolIterator = require('./_internal/symbolIterator')
|
|
18
12
|
const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
|
|
19
13
|
|
|
@@ -62,15 +56,6 @@ const _filter = function (value, predicate) {
|
|
|
62
56
|
if (isArray(value)) {
|
|
63
57
|
return arrayFilter(value, predicate)
|
|
64
58
|
}
|
|
65
|
-
if (typeof value == 'function') {
|
|
66
|
-
if (isGeneratorFunction(value)) {
|
|
67
|
-
return generatorFunctionFilter(value, predicate)
|
|
68
|
-
}
|
|
69
|
-
if (isAsyncGeneratorFunction(value)) {
|
|
70
|
-
return asyncGeneratorFunctionFilter(value, predicate)
|
|
71
|
-
}
|
|
72
|
-
return reducerFilter(value, predicate)
|
|
73
|
-
}
|
|
74
59
|
if (value == null) {
|
|
75
60
|
return value
|
|
76
61
|
}
|
|
@@ -102,67 +87,80 @@ const _filter = function (value, predicate) {
|
|
|
102
87
|
/**
|
|
103
88
|
* @name filter
|
|
104
89
|
*
|
|
105
|
-
* @catchphrase
|
|
106
|
-
* exclude items by predicate
|
|
107
|
-
*
|
|
108
90
|
* @synopsis
|
|
109
91
|
* ```coffeescript [specscript]
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
92
|
+
* type Filterable = Array|Object|Set|Map|Iterator|AsyncIterator
|
|
93
|
+
* type Predicate = (
|
|
94
|
+
* value any,
|
|
95
|
+
* indexOrKey? number|string,
|
|
96
|
+
* collection? Filterable,
|
|
97
|
+
* )=>boolean
|
|
113
98
|
*
|
|
114
99
|
* filter(
|
|
115
|
-
*
|
|
116
|
-
*
|
|
100
|
+
* collection Filterable,
|
|
101
|
+
* predicate Predicate
|
|
102
|
+
* ) -> result Promise|Filterable
|
|
117
103
|
*
|
|
118
|
-
* filter(
|
|
119
|
-
*
|
|
120
|
-
*
|
|
104
|
+
* filter(predicate Predicate)(collection Filterable)
|
|
105
|
+
* -> result Promise|Filterable
|
|
106
|
+
* ```
|
|
121
107
|
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
* )(map Map) -> filteredMap Promise|Map
|
|
108
|
+
* @description
|
|
109
|
+
* Filter out items from a collection based on the results of their concurrent executions with a synchronous or asynchronous predicate function. `filter` accepts the following collections:
|
|
125
110
|
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
111
|
+
* * `Array`
|
|
112
|
+
* * `Object`
|
|
113
|
+
* * `Set`
|
|
114
|
+
* * `Map`
|
|
115
|
+
* * `Iterator`/`Generator`
|
|
116
|
+
* * `AsyncIterator`/`AsyncGenerator`
|
|
129
117
|
*
|
|
130
|
-
* filter
|
|
131
|
-
* predicate (value any)=>Promise|boolean
|
|
132
|
-
* )(asyncGeneratorFunction AsyncGeneratorFunction) -> filteringAsyncGeneratorFunction AsyncGeneratorFunction
|
|
118
|
+
* For arrays (type `Array`), `filter` applies the predicate function to each item of the array, returning a new array containing only the items that tested truthy by the predicate. The order of the items is preserved. On each iteration, the predicate is passed the item, the index of the item, and a reference to the array.
|
|
133
119
|
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
120
|
+
* ```javascript [playground]
|
|
121
|
+
* const isOdd = number => number % 2 == 1
|
|
122
|
+
*
|
|
123
|
+
* const array = [1, 2, 3, 4, 5]
|
|
124
|
+
*
|
|
125
|
+
* console.log(filter(isOdd)(array)) // [1, 3, 5]
|
|
126
|
+
* console.log(filter(array, isOdd)) // [1, 3, 5]
|
|
137
127
|
* ```
|
|
138
128
|
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
129
|
+
* For objects (type `Object`), `filter` applies the predicate function to each value of the object, returning a new object containing only the values that tested truthy by the predicate. On each iteration, the predicate is passed the object value, the key of the object value, and a reference to the object.
|
|
130
|
+
*
|
|
131
|
+
* ```javascript [playground]
|
|
132
|
+
* const isOdd = number => number % 2 == 1
|
|
141
133
|
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
134
|
+
* const obj = { a: 1, b: 2, c: 3, d: 4, e: 5 }
|
|
135
|
+
*
|
|
136
|
+
* console.log(filter(isOdd)(obj)) // { a: 1, c: 3, e: 5 }
|
|
137
|
+
* console.log(filter(obj, isOdd)) // { a: 1, c: 3, e: 5 }
|
|
138
|
+
* ```
|
|
139
|
+
*
|
|
140
|
+
* For sets (type `Set`), `filter` applies the predicate function to each item in the set, returning a new set containing only the items that tested truthy by the predicate. On each iteration, the predicate is passed the item, the same item as the key argument, and a reference to the set.
|
|
148
141
|
*
|
|
149
142
|
* ```javascript [playground]
|
|
150
143
|
* const isOdd = number => number % 2 == 1
|
|
151
144
|
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
* ) //
|
|
145
|
+
* const set = new Set([1, 2, 3, 4, 5])
|
|
146
|
+
*
|
|
147
|
+
* console.log(filter(isOdd)(set)) // Set { 1, 3, 5 }
|
|
148
|
+
* console.log(filter(set, isOdd)) // Set { 1, 3, 5 }
|
|
149
|
+
* ```
|
|
150
|
+
*
|
|
151
|
+
* For maps (type `Map`), `filter` applies the predicate function to the value of each entry of the map, returning a new map containing only the entries where the values tested truthy by the predicate. The order of the entries are preserved. On each iteration, the predicate is passed the map value, the key of the value, and a reference to the map.
|
|
155
152
|
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
* ) // { a: 1, c: 3, e: 5 }
|
|
153
|
+
* ```javascript [playground]
|
|
154
|
+
* const isOdd = number => number % 2 == 1
|
|
159
155
|
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
156
|
+
* const obj = { a: 1, b: 2, c: 3, d: 4, e: 5 }
|
|
157
|
+
* const m = new Map([['a', 1], ['b', 2], ['c', 3], ['d', 4], ['e', 5]])
|
|
158
|
+
*
|
|
159
|
+
* console.log(filter(isOdd)(m)) // Map(3) { 'a' => 1, 'c' => 3, 'e' => 5 }
|
|
160
|
+
* console.log(filter(m, isOdd)) // Map(3) { 'a' => 1, 'c' => 3, 'e' => 5 }
|
|
163
161
|
* ```
|
|
164
162
|
*
|
|
165
|
-
*
|
|
163
|
+
* For iterators (type `Iterator`) or generators (type `Generator`), `filter` returns a lazily filtered iterator/generator; all values that are normally yielded by the iterator/generator that test falsy by the predicate function are skipped by the lazily filtered iterator/generator. On each iteration, the predicate is passed the iteration value only.
|
|
166
164
|
*
|
|
167
165
|
* ```javascript [playground]
|
|
168
166
|
* const isOdd = number => number % 2 == 1
|
|
@@ -171,24 +169,32 @@ const _filter = function (value, predicate) {
|
|
|
171
169
|
* yield 1; yield 2; yield 3; yield 4; yield 5
|
|
172
170
|
* }
|
|
173
171
|
*
|
|
174
|
-
* const
|
|
172
|
+
* const numbersGenerator = numbersGeneratorFunction()
|
|
173
|
+
* const oddNumbersGenerator = filter(numbersGeneratorFunction(), isOdd)
|
|
174
|
+
* const oddNumbersGenerator2 = filter(isOdd)(numbersGeneratorFunction())
|
|
175
175
|
*
|
|
176
|
-
* for (const number of
|
|
176
|
+
* for (const number of numbersGenerator) {
|
|
177
177
|
* console.log(number) // 1
|
|
178
|
+
* // 2
|
|
178
179
|
* // 3
|
|
180
|
+
* // 4
|
|
179
181
|
* // 5
|
|
180
182
|
* }
|
|
181
183
|
*
|
|
182
|
-
* const oddNumbersGenerator = filter(isOdd)(numbersGeneratorFunction())
|
|
183
|
-
*
|
|
184
184
|
* for (const number of oddNumbersGenerator) {
|
|
185
185
|
* console.log(number) // 1
|
|
186
186
|
* // 3
|
|
187
187
|
* // 5
|
|
188
188
|
* }
|
|
189
|
+
*
|
|
190
|
+
* for (const number of oddNumbersGenerator2) {
|
|
191
|
+
* console.log(number) // 1
|
|
192
|
+
* // 3
|
|
193
|
+
* // 5
|
|
194
|
+
* }
|
|
189
195
|
* ```
|
|
190
196
|
*
|
|
191
|
-
*
|
|
197
|
+
* With asyncIterators (type `AsyncIterator`) or asyncGenerators (type `AsyncGenerator`), `filter` returns a lazily filtered asyncIterator/asyncGenerator; all values that are normally yielded by the asyncIterator/asyncGenerator that test falsy by the predicate function are skipped by the lazily filtered asyncIterator/asyncGenerator. On each iteration, the predicate is passed the iteration value only.
|
|
192
198
|
*
|
|
193
199
|
* ```javascript [playground]
|
|
194
200
|
* const asyncIsOdd = async number => number % 2 == 1
|
|
@@ -197,45 +203,31 @@ const _filter = function (value, predicate) {
|
|
|
197
203
|
* yield 1; yield 2; yield 3; yield 4; yield 5
|
|
198
204
|
* }
|
|
199
205
|
*
|
|
200
|
-
* const
|
|
206
|
+
* const asyncNumbersGenerator = asyncNumbersGeneratorFunction()
|
|
201
207
|
*
|
|
202
|
-
*
|
|
208
|
+
* const asyncOddNumbersGenerator = filter(asyncNumbersGeneratorFunction(), asyncIsOdd)
|
|
209
|
+
*
|
|
210
|
+
* const asyncOddNumbersGenerator2 = filter(asyncIsOdd)(asyncNumbersGeneratorFunction())
|
|
211
|
+
*
|
|
212
|
+
* for await (const number of asyncNumbersGenerator) {
|
|
203
213
|
* console.log(number) // 1
|
|
214
|
+
* // 2
|
|
204
215
|
* // 3
|
|
216
|
+
* // 4
|
|
205
217
|
* // 5
|
|
206
218
|
* }
|
|
207
219
|
*
|
|
208
|
-
* const asyncOddNumbersGenerator = filter(asyncIsOdd)(asyncNumbersGeneratorFunction())
|
|
209
|
-
*
|
|
210
220
|
* for await (const number of asyncOddNumbersGenerator) {
|
|
211
221
|
* console.log(number) // 1
|
|
212
222
|
* // 3
|
|
213
223
|
* // 5
|
|
214
224
|
* }
|
|
215
|
-
* ```
|
|
216
|
-
*
|
|
217
|
-
* A reducer in filterable position creates a filtering reducer - one that skips items of the reducer's reducing operation if they test falsy by the predicate. It is possible to use an asynchronous predicate when filtering a reducer, however the implementation of `reduce` must support asynchronous operations. This library provides such an implementation as `reduce`.
|
|
218
|
-
*
|
|
219
|
-
* ```javascript [playground]
|
|
220
|
-
* const isOdd = number => number % 2 == 1
|
|
221
|
-
*
|
|
222
|
-
* const concat = (array, item) => array.concat(item)
|
|
223
|
-
*
|
|
224
|
-
* const concatOddNumbers = filter(isOdd)(concat)
|
|
225
225
|
*
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
-
*
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
* `filter`, when passed a single argument before the predicate function, treats that argument as the value to be filtered.
|
|
232
|
-
*
|
|
233
|
-
* ```javascript [playground]
|
|
234
|
-
* const numbers = [1, 2, 3]
|
|
235
|
-
*
|
|
236
|
-
* const odds = filter(numbers, number => number % 2 == 1)
|
|
237
|
-
*
|
|
238
|
-
* console.log(odds) // [1, 3]
|
|
226
|
+
* for await (const number of asyncOddNumbersGenerator2) {
|
|
227
|
+
* console.log(number) // 1
|
|
228
|
+
* // 3
|
|
229
|
+
* // 5
|
|
230
|
+
* }
|
|
239
231
|
* ```
|
|
240
232
|
*
|
|
241
233
|
* @execution concurrent
|
|
@@ -245,44 +237,10 @@ const _filter = function (value, predicate) {
|
|
|
245
237
|
|
|
246
238
|
const filter = function (...args) {
|
|
247
239
|
const predicate = args.pop()
|
|
248
|
-
if (args.length
|
|
249
|
-
return _filter
|
|
250
|
-
}
|
|
251
|
-
return curry2(_filter, __, predicate)
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* @name filter.withIndex
|
|
256
|
-
*
|
|
257
|
-
* @synopsis
|
|
258
|
-
* ```coffeescript [specscript]
|
|
259
|
-
* var T any,
|
|
260
|
-
* index number,
|
|
261
|
-
* array Array<T>,
|
|
262
|
-
* indexedPredicate (T, index, array)=>Promise|boolean
|
|
263
|
-
*
|
|
264
|
-
* filter.withIndex(indexedPredicate)(array) -> Array<T>
|
|
265
|
-
* ```
|
|
266
|
-
*
|
|
267
|
-
* @description
|
|
268
|
-
* `filter` with each predicate call supplemented by index and reference to original collection.
|
|
269
|
-
*
|
|
270
|
-
* ```javascript [playground]
|
|
271
|
-
* const uniq = filter.withIndex(
|
|
272
|
-
* (item, index, array) => item !== array[index + 1])
|
|
273
|
-
*
|
|
274
|
-
* console.log(
|
|
275
|
-
* uniq([1, 1, 1, 2, 2, 2, 3, 3, 3]),
|
|
276
|
-
* ) // [1, 2, 3]
|
|
277
|
-
* ```
|
|
278
|
-
*
|
|
279
|
-
* @execution concurrent
|
|
280
|
-
*/
|
|
281
|
-
filter.withIndex = predicate => function filteringWithIndex(value) {
|
|
282
|
-
if (isArray(value)) {
|
|
283
|
-
return arrayFilterWithIndex(value, predicate)
|
|
240
|
+
if (args.length == 0) {
|
|
241
|
+
return curry2(_filter, __, predicate)
|
|
284
242
|
}
|
|
285
|
-
|
|
243
|
+
return _filter(args[0], predicate)
|
|
286
244
|
}
|
|
287
245
|
|
|
288
246
|
module.exports = filter
|