rubico 2.6.6 → 2.7.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/Transducer.d.ts +1 -1
- package/Transducer.js +65 -16
- package/__.js +10 -1
- package/all.d.ts +2 -2
- package/all.js +11 -2
- package/always.js +8 -0
- package/and.js +6 -0
- package/assign.js +9 -0
- package/compose.js +33 -8
- package/curry.js +18 -0
- package/dist/Transducer.es.js +1 -1
- package/dist/Transducer.es.min.js +1 -1
- package/dist/Transducer.js +1 -1
- package/dist/Transducer.min.js +1 -1
- package/dist/Transducer.mjs +1 -1
- package/dist/__.es.js +1 -1
- package/dist/__.es.min.js +1 -1
- package/dist/__.js +1 -1
- package/dist/__.min.js +1 -1
- package/dist/__.mjs +1 -1
- package/dist/all.es.js +1 -1
- package/dist/all.es.min.js +1 -1
- package/dist/all.js +1 -1
- package/dist/all.min.js +1 -1
- package/dist/all.mjs +1 -1
- package/dist/always.es.js +1 -1
- package/dist/always.es.min.js +1 -1
- package/dist/always.js +1 -1
- package/dist/always.min.js +1 -1
- package/dist/always.mjs +1 -1
- package/dist/and.es.js +1 -1
- package/dist/and.es.min.js +1 -1
- package/dist/and.js +1 -1
- package/dist/and.min.js +1 -1
- package/dist/and.mjs +1 -1
- package/dist/assign.es.js +1 -1
- package/dist/assign.es.min.js +1 -1
- package/dist/assign.js +1 -1
- package/dist/assign.min.js +1 -1
- package/dist/assign.mjs +1 -1
- package/dist/compose.es.js +5 -1
- package/dist/compose.es.min.js +2 -2
- package/dist/compose.js +5 -1
- package/dist/compose.min.js +2 -2
- package/dist/compose.mjs +5 -1
- package/dist/curry.es.js +1 -1
- package/dist/curry.es.min.js +1 -1
- package/dist/curry.js +1 -1
- package/dist/curry.min.js +1 -1
- package/dist/curry.mjs +1 -1
- package/dist/eq.es.js +1 -1
- package/dist/eq.es.min.js +1 -1
- package/dist/eq.js +1 -1
- package/dist/eq.min.js +1 -1
- package/dist/eq.mjs +1 -1
- package/dist/every.es.js +1 -1
- package/dist/every.es.min.js +1 -1
- package/dist/every.js +1 -1
- package/dist/every.min.js +1 -1
- package/dist/every.mjs +1 -1
- package/dist/filter.es.js +1 -1
- package/dist/filter.es.min.js +1 -1
- package/dist/filter.js +1 -1
- package/dist/filter.min.js +1 -1
- package/dist/filter.mjs +1 -1
- package/dist/flatMap.es.js +1 -1
- package/dist/flatMap.es.min.js +1 -1
- package/dist/flatMap.js +1 -1
- package/dist/flatMap.min.js +1 -1
- package/dist/flatMap.mjs +1 -1
- package/dist/forEach.es.js +1 -1
- package/dist/forEach.es.min.js +1 -1
- package/dist/forEach.js +1 -1
- package/dist/forEach.min.js +1 -1
- package/dist/forEach.mjs +1 -1
- package/dist/get.es.js +1 -1
- package/dist/get.es.min.js +1 -1
- package/dist/get.js +1 -1
- package/dist/get.min.js +1 -1
- package/dist/get.mjs +1 -1
- package/dist/gt.es.js +1 -1
- package/dist/gt.es.min.js +1 -1
- package/dist/gt.js +1 -1
- package/dist/gt.min.js +1 -1
- package/dist/gt.mjs +1 -1
- package/dist/gte.es.js +1 -1
- package/dist/gte.es.min.js +1 -1
- package/dist/gte.js +1 -1
- package/dist/gte.min.js +1 -1
- package/dist/gte.mjs +1 -1
- package/dist/lt.es.js +1 -1
- package/dist/lt.es.min.js +1 -1
- package/dist/lt.js +1 -1
- package/dist/lt.min.js +1 -1
- package/dist/lt.mjs +1 -1
- package/dist/lte.es.js +1 -1
- package/dist/lte.es.min.js +1 -1
- package/dist/lte.js +1 -1
- package/dist/lte.min.js +1 -1
- package/dist/lte.mjs +1 -1
- package/dist/map.es.js +1 -1
- package/dist/map.es.min.js +1 -1
- package/dist/map.js +1 -1
- package/dist/map.min.js +1 -1
- package/dist/map.mjs +1 -1
- package/dist/not.es.js +1 -1
- package/dist/not.es.min.js +1 -1
- package/dist/not.js +1 -1
- package/dist/not.min.js +1 -1
- package/dist/not.mjs +1 -1
- package/dist/omit.es.js +1 -1
- package/dist/omit.es.min.js +1 -1
- package/dist/omit.js +1 -1
- package/dist/omit.min.js +1 -1
- package/dist/omit.mjs +1 -1
- package/dist/or.es.js +1 -1
- package/dist/or.es.min.js +1 -1
- package/dist/or.js +1 -1
- package/dist/or.min.js +1 -1
- package/dist/or.mjs +1 -1
- package/dist/pick.es.js +1 -1
- package/dist/pick.es.min.js +1 -1
- package/dist/pick.js +1 -1
- package/dist/pick.min.js +1 -1
- package/dist/pick.mjs +1 -1
- package/dist/pipe.es.js +5 -1
- package/dist/pipe.es.min.js +2 -2
- package/dist/pipe.js +5 -1
- package/dist/pipe.min.js +2 -2
- package/dist/pipe.mjs +5 -1
- package/dist/reduce.es.js +8 -8
- package/dist/reduce.es.min.js +1 -1
- package/dist/reduce.js +8 -8
- package/dist/reduce.min.js +1 -1
- package/dist/reduce.mjs +8 -8
- package/dist/rubico.es.js +16 -8
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.global.js +16 -8
- package/dist/rubico.global.min.js +2 -2
- package/dist/rubico.js +16 -8
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.mjs +16 -8
- package/dist/set.es.js +1 -1
- package/dist/set.es.min.js +1 -1
- package/dist/set.js +1 -1
- package/dist/set.min.js +1 -1
- package/dist/set.mjs +1 -1
- package/dist/some.es.js +1 -1
- package/dist/some.es.min.js +1 -1
- package/dist/some.js +1 -1
- package/dist/some.min.js +1 -1
- package/dist/some.mjs +1 -1
- package/dist/switchCase.es.js +1 -1
- package/dist/switchCase.es.min.js +1 -1
- package/dist/switchCase.js +1 -1
- package/dist/switchCase.min.js +1 -1
- package/dist/switchCase.mjs +1 -1
- package/dist/tap.es.js +1 -1
- package/dist/tap.es.min.js +1 -1
- package/dist/tap.js +1 -1
- package/dist/tap.min.js +1 -1
- package/dist/tap.mjs +1 -1
- package/dist/thunkify.es.js +1 -1
- package/dist/thunkify.es.min.js +1 -1
- package/dist/thunkify.js +1 -1
- package/dist/thunkify.min.js +1 -1
- package/dist/thunkify.mjs +1 -1
- package/dist/transform.es.js +1 -1
- package/dist/transform.es.min.js +1 -1
- package/dist/transform.js +1 -1
- package/dist/transform.min.js +1 -1
- package/dist/transform.mjs +1 -1
- package/dist/tryCatch.es.js +1 -1
- package/dist/tryCatch.es.min.js +1 -1
- package/dist/tryCatch.js +1 -1
- package/dist/tryCatch.min.js +1 -1
- package/dist/tryCatch.mjs +1 -1
- package/dist/x/append.es.js +1 -1
- package/dist/x/append.es.min.js +1 -1
- package/dist/x/append.js +1 -1
- package/dist/x/append.min.js +1 -1
- package/dist/x/append.mjs +1 -1
- package/dist/x/callProp.es.js +1 -1
- package/dist/x/callProp.es.min.js +1 -1
- package/dist/x/callProp.js +1 -1
- package/dist/x/callProp.min.js +1 -1
- package/dist/x/callProp.mjs +1 -1
- package/dist/x/defaultsDeep.es.js +1 -1
- package/dist/x/defaultsDeep.es.min.js +1 -1
- package/dist/x/defaultsDeep.js +1 -1
- package/dist/x/defaultsDeep.min.js +1 -1
- package/dist/x/defaultsDeep.mjs +1 -1
- package/dist/x/differenceWith.es.js +1 -1
- package/dist/x/differenceWith.es.min.js +1 -1
- package/dist/x/differenceWith.js +1 -1
- package/dist/x/differenceWith.min.js +1 -1
- package/dist/x/differenceWith.mjs +1 -1
- package/dist/x/filterOut.es.js +1 -1
- package/dist/x/filterOut.es.min.js +1 -1
- package/dist/x/filterOut.js +1 -1
- package/dist/x/filterOut.min.js +1 -1
- package/dist/x/filterOut.mjs +1 -1
- package/dist/x/find.es.js +1 -1
- package/dist/x/find.es.min.js +1 -1
- package/dist/x/find.js +1 -1
- package/dist/x/find.min.js +1 -1
- package/dist/x/find.mjs +1 -1
- package/dist/x/findIndex.es.js +1 -1
- package/dist/x/findIndex.es.min.js +1 -1
- package/dist/x/findIndex.js +1 -1
- package/dist/x/findIndex.min.js +1 -1
- package/dist/x/findIndex.mjs +1 -1
- package/dist/x/first.es.js +1 -1
- package/dist/x/first.es.min.js +1 -1
- package/dist/x/first.js +1 -1
- package/dist/x/first.min.js +1 -1
- package/dist/x/first.mjs +1 -1
- package/dist/x/flatten.es.js +1 -1
- package/dist/x/flatten.es.min.js +1 -1
- package/dist/x/flatten.js +1 -1
- package/dist/x/flatten.min.js +1 -1
- package/dist/x/flatten.mjs +1 -1
- package/dist/x/groupBy.es.js +8 -8
- package/dist/x/groupBy.es.min.js +1 -1
- package/dist/x/groupBy.js +8 -8
- package/dist/x/groupBy.min.js +1 -1
- package/dist/x/groupBy.mjs +8 -8
- package/dist/x/has.es.js +1 -1
- package/dist/x/has.es.min.js +1 -1
- package/dist/x/has.js +1 -1
- package/dist/x/has.min.js +1 -1
- package/dist/x/has.mjs +1 -1
- package/dist/x/identity.es.js +1 -1
- package/dist/x/identity.es.min.js +1 -1
- package/dist/x/identity.js +1 -1
- package/dist/x/identity.min.js +1 -1
- package/dist/x/identity.mjs +1 -1
- package/dist/x/includes.es.js +1 -1
- package/dist/x/includes.es.min.js +1 -1
- package/dist/x/includes.js +1 -1
- package/dist/x/includes.min.js +1 -1
- package/dist/x/includes.mjs +1 -1
- package/dist/x/isDeepEqual.es.js +1 -1
- package/dist/x/isDeepEqual.es.min.js +1 -1
- package/dist/x/isDeepEqual.js +1 -1
- package/dist/x/isDeepEqual.min.js +1 -1
- package/dist/x/isDeepEqual.mjs +1 -1
- package/dist/x/isEmpty.es.js +1 -1
- package/dist/x/isEmpty.es.min.js +1 -1
- package/dist/x/isEmpty.js +1 -1
- package/dist/x/isEmpty.min.js +1 -1
- package/dist/x/isEmpty.mjs +1 -1
- package/dist/x/isEqual.es.js +1 -1
- package/dist/x/isEqual.es.min.js +1 -1
- package/dist/x/isEqual.js +1 -1
- package/dist/x/isEqual.min.js +1 -1
- package/dist/x/isEqual.mjs +1 -1
- package/dist/x/isFunction.es.js +1 -1
- package/dist/x/isFunction.es.min.js +1 -1
- package/dist/x/isFunction.js +1 -1
- package/dist/x/isFunction.min.js +1 -1
- package/dist/x/isFunction.mjs +1 -1
- package/dist/x/isIn.es.js +1 -1
- package/dist/x/isIn.es.min.js +1 -1
- package/dist/x/isIn.js +1 -1
- package/dist/x/isIn.min.js +1 -1
- package/dist/x/isIn.mjs +1 -1
- package/dist/x/isObject.es.js +1 -1
- package/dist/x/isObject.es.min.js +1 -1
- package/dist/x/isObject.js +1 -1
- package/dist/x/isObject.min.js +1 -1
- package/dist/x/isObject.mjs +1 -1
- package/dist/x/isString.es.js +1 -1
- package/dist/x/isString.es.min.js +1 -1
- package/dist/x/isString.js +1 -1
- package/dist/x/isString.min.js +1 -1
- package/dist/x/isString.mjs +1 -1
- package/dist/x/keys.es.js +1 -1
- package/dist/x/keys.es.min.js +1 -1
- package/dist/x/keys.js +1 -1
- package/dist/x/keys.min.js +1 -1
- package/dist/x/keys.mjs +1 -1
- package/dist/x/last.es.js +1 -1
- package/dist/x/last.es.min.js +1 -1
- package/dist/x/last.js +1 -1
- package/dist/x/last.min.js +1 -1
- package/dist/x/last.mjs +1 -1
- package/dist/x/maxBy.es.js +1 -1
- package/dist/x/maxBy.es.min.js +1 -1
- package/dist/x/maxBy.js +1 -1
- package/dist/x/maxBy.min.js +1 -1
- package/dist/x/maxBy.mjs +1 -1
- package/dist/x/noop.es.js +1 -1
- package/dist/x/noop.es.min.js +1 -1
- package/dist/x/noop.js +1 -1
- package/dist/x/noop.min.js +1 -1
- package/dist/x/noop.mjs +1 -1
- package/dist/x/pluck.es.js +1 -1
- package/dist/x/pluck.es.min.js +1 -1
- package/dist/x/pluck.js +1 -1
- package/dist/x/pluck.min.js +1 -1
- package/dist/x/pluck.mjs +1 -1
- package/dist/x/prepend.es.js +1 -1
- package/dist/x/prepend.es.min.js +1 -1
- package/dist/x/prepend.js +1 -1
- package/dist/x/prepend.min.js +1 -1
- package/dist/x/prepend.mjs +1 -1
- package/dist/x/size.es.js +1 -1
- package/dist/x/size.es.min.js +1 -1
- package/dist/x/size.js +1 -1
- package/dist/x/size.min.js +1 -1
- package/dist/x/size.mjs +1 -1
- package/dist/x/trace.es.js +1 -1
- package/dist/x/trace.es.min.js +1 -1
- package/dist/x/trace.js +1 -1
- package/dist/x/trace.min.js +1 -1
- package/dist/x/trace.mjs +1 -1
- package/dist/x/unionWith.es.js +1 -1
- package/dist/x/unionWith.es.min.js +1 -1
- package/dist/x/unionWith.js +1 -1
- package/dist/x/unionWith.min.js +1 -1
- package/dist/x/unionWith.mjs +1 -1
- package/dist/x/uniq.es.js +1 -1
- package/dist/x/uniq.es.min.js +1 -1
- package/dist/x/uniq.js +1 -1
- package/dist/x/uniq.min.js +1 -1
- package/dist/x/uniq.mjs +1 -1
- package/dist/x/unless.es.js +1 -1
- package/dist/x/unless.es.min.js +1 -1
- package/dist/x/unless.js +1 -1
- package/dist/x/unless.min.js +1 -1
- package/dist/x/unless.mjs +1 -1
- package/dist/x/values.es.js +1 -1
- package/dist/x/values.es.min.js +1 -1
- package/dist/x/values.js +1 -1
- package/dist/x/values.min.js +1 -1
- package/dist/x/values.mjs +1 -1
- package/dist/x/when.es.js +1 -1
- package/dist/x/when.es.min.js +1 -1
- package/dist/x/when.js +1 -1
- package/dist/x/when.min.js +1 -1
- package/dist/x/when.mjs +1 -1
- package/eq.d.ts +6 -6
- package/eq.js +14 -6
- package/es.js +16 -8
- package/every.js +19 -5
- package/filter.js +59 -15
- package/flatMap.js +32 -23
- package/forEach.js +107 -13
- package/get.js +9 -0
- package/gt.js +9 -0
- package/gte.js +9 -0
- package/index.js +16 -8
- package/lte.js +9 -0
- package/map.js +153 -36
- package/not.js +7 -0
- package/omit.d.ts +2 -2
- package/omit.js +11 -2
- package/or.js +6 -0
- package/package.json +1 -1
- package/pick.js +9 -0
- package/pipe.js +30 -3
- package/reduce.js +111 -30
- package/set.js +9 -0
- package/some.js +17 -3
- package/switchCase.js +6 -0
- package/tap.js +14 -0
- package/thunkify.js +8 -0
- package/transform.js +105 -29
- package/tryCatch.js +5 -0
- package/x/append.js +3 -0
- package/x/callProp.js +5 -0
- package/x/defaultsDeep.d.ts +2 -2
- package/x/defaultsDeep.js +7 -2
- package/x/differenceWith.js +5 -0
- package/x/find.d.ts +2 -2
- package/x/find.js +2 -2
- package/x/groupBy.d.ts +2 -2
- package/x/groupBy.js +2 -2
- package/x/pluck.d.ts +2 -2
- package/x/pluck.js +2 -2
- package/x/unionWith.test.js +3 -3
package/flatMap.js
CHANGED
|
@@ -15,7 +15,7 @@ const __ = require('./_internal/placeholder')
|
|
|
15
15
|
*
|
|
16
16
|
* @synopsis
|
|
17
17
|
* ```coffeescript [specscript]
|
|
18
|
-
* type Monad = Array|String|Set|
|
|
18
|
+
* type Monad = Array|String|Set|Generator|AsyncGenerator
|
|
19
19
|
* type Iterable = Iterable|AsyncIterable|Object<value any>
|
|
20
20
|
*
|
|
21
21
|
* _flatMap(
|
|
@@ -64,35 +64,36 @@ const _flatMap = function (value, flatMapper) {
|
|
|
64
64
|
*
|
|
65
65
|
* @synopsis
|
|
66
66
|
* ```coffeescript [specscript]
|
|
67
|
-
* type Monad = Array|String|Set|
|
|
68
|
-
* type Flattenable = Iterable|AsyncIterable|Object<value any>
|
|
67
|
+
* type Monad = Array|String|Set|Generator|AsyncGenerator|{ flatMap: string }|{ chain: string }|Object
|
|
69
68
|
*
|
|
70
69
|
* type FlatMapper = (
|
|
71
70
|
* item any,
|
|
72
|
-
* indexOrKey string,
|
|
73
|
-
*
|
|
74
|
-
* )=>Promise|
|
|
71
|
+
* indexOrKey number|string|any,
|
|
72
|
+
* mon Monad
|
|
73
|
+
* )=>Promise|Monad|any
|
|
75
74
|
*
|
|
76
|
-
* flatMap(
|
|
77
|
-
* flatMap(flatMapper FlatMapper)(
|
|
75
|
+
* flatMap(mon Monad, flatMapper FlatMapper) -> result Promise|Monad
|
|
76
|
+
* flatMap(flatMapper FlatMapper)(mon Monad) -> result Promise|Monad
|
|
78
77
|
* ```
|
|
79
78
|
*
|
|
80
79
|
* @description
|
|
81
|
-
* Applies a flatMapper function
|
|
80
|
+
* Applies a flatMapper function to each item of a monad, returning a monad of the same type.
|
|
82
81
|
*
|
|
83
|
-
*
|
|
82
|
+
* A flatMapping operation iterates through each item of a monad and applies the flatMapper function to each item, flattening the result of the execution into the returned monad.
|
|
83
|
+
*
|
|
84
|
+
* If the flatMapper is asynchronous, it is executed concurrently. The execution result may be asynchronously iterable, in which case it is muxed into the returned monad.
|
|
85
|
+
*
|
|
86
|
+
* The following data types are considered to be monads, all are flattenable into other monads:
|
|
84
87
|
* * `array`
|
|
85
88
|
* * `string`
|
|
86
89
|
* * `set`
|
|
87
|
-
* * `
|
|
88
|
-
* * `async
|
|
90
|
+
* * `genreator`
|
|
91
|
+
* * `async generator`
|
|
92
|
+
* * `object with .flatMap method`
|
|
93
|
+
* * `object with .chain method`
|
|
94
|
+
* * `object`
|
|
89
95
|
*
|
|
90
|
-
*
|
|
91
|
-
* * `iterable` - the execution result is iterated and each item is added to the result collection
|
|
92
|
-
* * `async iterable` - the execution result is asynchronously iterated and each item is added to the result collection
|
|
93
|
-
* * `object` - the execution result values are added to the result collection
|
|
94
|
-
*
|
|
95
|
-
* `flatMap` can flatten various data types.
|
|
96
|
+
* `flatMap` flattens various data types.
|
|
96
97
|
*
|
|
97
98
|
* ```javascript [playground]
|
|
98
99
|
* const identity = value => value
|
|
@@ -100,15 +101,15 @@ const _flatMap = function (value, flatMapper) {
|
|
|
100
101
|
* flatMap(identity)([
|
|
101
102
|
* [1, 1], // array
|
|
102
103
|
* new Set([2, 2]), // set
|
|
103
|
-
* (function* () { yield 3; yield 3 })(),
|
|
104
|
-
* (async function* () { yield 7; yield 7 })(),
|
|
104
|
+
* (function* () { yield 3; yield 3 })(),
|
|
105
|
+
* (async function* () { yield 7; yield 7 })(),
|
|
105
106
|
* { a: 5, b: 5 }, // object
|
|
106
107
|
* new Uint8Array([8]), // typedArray
|
|
107
108
|
* ]).then(console.log)
|
|
108
109
|
* // [1, 1, 2, 3, 3, 5, 5, 8, 7, 7]
|
|
109
110
|
* ```
|
|
110
111
|
*
|
|
111
|
-
*
|
|
112
|
+
* Values from async generators are muxed. Muxing, or asynchronously "mixing", is the process of combining multiple asynchronous sources into one source, with order determined by the asynchronous resolution of the individual items.
|
|
112
113
|
*
|
|
113
114
|
* ```javascript [playground]
|
|
114
115
|
* const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))
|
|
@@ -129,12 +130,12 @@ const _flatMap = function (value, flatMapper) {
|
|
|
129
130
|
* yield message
|
|
130
131
|
* }
|
|
131
132
|
*
|
|
132
|
-
* // async
|
|
133
|
+
* // values from async generators are muxed
|
|
133
134
|
* flatMap(['foo', 'bar', 'baz'], asyncRepeat3).then(console.log)
|
|
134
135
|
* // ['foo', 'bar', 'baz', 'foo', 'bar', 'baz', 'foo', 'bar', 'baz']
|
|
135
136
|
* ```
|
|
136
137
|
*
|
|
137
|
-
*
|
|
138
|
+
* `flatMap` applies the flatMapper function to each item of an array, flattening the results into a new array.
|
|
138
139
|
*
|
|
139
140
|
* ```javascript [playground]
|
|
140
141
|
* const duplicate = value => [value, value]
|
|
@@ -161,6 +162,14 @@ const _flatMap = function (value, flatMapper) {
|
|
|
161
162
|
* // [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
|
|
162
163
|
* ```
|
|
163
164
|
*
|
|
165
|
+
* See also:
|
|
166
|
+
* * [forEach](/docs/forEach)
|
|
167
|
+
* * [map](/docs/map)
|
|
168
|
+
* * [filter](/docs/filter)
|
|
169
|
+
* * [reduce](/docs/reduce)
|
|
170
|
+
* * [transform](/docs/transform)
|
|
171
|
+
* * [some](/docs/some)
|
|
172
|
+
*
|
|
164
173
|
* @execution concurrent
|
|
165
174
|
*
|
|
166
175
|
* @transducing
|
package/forEach.js
CHANGED
|
@@ -45,20 +45,86 @@ const _forEach = function (collection, callback) {
|
|
|
45
45
|
*
|
|
46
46
|
* @synopsis
|
|
47
47
|
* ```coffeescript [specscript]
|
|
48
|
-
* type
|
|
48
|
+
* type Iterable = Array|Set|Map|Generator|AsyncGenerator|{ forEach: function }|Object
|
|
49
|
+
*
|
|
50
|
+
* type Callback = (
|
|
51
|
+
* item any,
|
|
52
|
+
* indexOrKey number|string|any,
|
|
53
|
+
* iter Iterable
|
|
54
|
+
* )=>Promise|undefined
|
|
49
55
|
*
|
|
50
|
-
* forEach(
|
|
56
|
+
* forEach(iter Iterable, cb Callback) -> iter Promise|Iterable
|
|
51
57
|
*
|
|
52
|
-
* forEach(
|
|
58
|
+
* forEach(cb Callback)(iter Iterable) -> iter Promise|Iterable
|
|
53
59
|
* ```
|
|
54
60
|
*
|
|
55
61
|
* @description
|
|
56
|
-
* Execute a callback for each item of
|
|
62
|
+
* Execute a callback function for each item of an iterable, returning the original iterable unmodified.
|
|
63
|
+
*
|
|
64
|
+
* The following data types are considered to be iterables:
|
|
65
|
+
* * `array`
|
|
66
|
+
* * `set`
|
|
67
|
+
* * `map`
|
|
68
|
+
* * `generator`
|
|
69
|
+
* * `async generator`
|
|
70
|
+
* * `object with .forEach method`
|
|
71
|
+
* * `object`
|
|
72
|
+
*
|
|
73
|
+
* The callback function signature changes depending on the provided iterable.
|
|
74
|
+
*
|
|
75
|
+
* If the iterable is an array:
|
|
76
|
+
* ```coffeescript [specscript]
|
|
77
|
+
* callback(item any, index number, iter Array) -> Promise|undefined
|
|
78
|
+
* ```
|
|
79
|
+
*
|
|
80
|
+
* If the iterable is a set:
|
|
81
|
+
* ```coffeescript [specscript]
|
|
82
|
+
* callback(item any, key any, iter Set) -> Promise|undefined
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* If the iterable is a map:
|
|
86
|
+
* ```coffeescript [specscript]
|
|
87
|
+
* callback(item any, key any, filt Map) -> Promise|undefined
|
|
88
|
+
* ```
|
|
89
|
+
*
|
|
90
|
+
* If the iterable is a generator:
|
|
91
|
+
* ```coffeescript [specscript]
|
|
92
|
+
* callback(item any) -> Promise|undefined
|
|
93
|
+
* ```
|
|
94
|
+
*
|
|
95
|
+
* If the iterable is an async generator:
|
|
96
|
+
* ```coffeescript [specscript]
|
|
97
|
+
* callback(item any) -> Promise|undefined
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
100
|
+
* If the iterable is an object with a `.forEach` method, the callback function signature is defined externally.
|
|
101
|
+
*
|
|
102
|
+
* If the iterable is a plain object:
|
|
103
|
+
* ```coffeescript [specscript]
|
|
104
|
+
* callback(item any, key string, iter Object) -> Promise|undefined
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
107
|
+
* If the callback function is asynchronous, it is executed concurrently.
|
|
108
|
+
*
|
|
109
|
+
* ```javascript [playground]
|
|
110
|
+
* forEach([1, 2, 3, 4, 5], async number => {
|
|
111
|
+
* await new Promise(resolve => {
|
|
112
|
+
* setTimeout(resolve, 1000)
|
|
113
|
+
* })
|
|
114
|
+
* console.log(number)
|
|
115
|
+
* })
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* `forEach` works for arrays.
|
|
57
119
|
*
|
|
58
120
|
* ```javascript [playground]
|
|
59
|
-
* forEach([1, 2, 3, 4, 5], console.log) // 1 2 3 4 5
|
|
121
|
+
* forEach([1, 2, 3, 4, 5], num => console.log(num)) // 1 2 3 4 5
|
|
122
|
+
* ```
|
|
123
|
+
*
|
|
124
|
+
* `forEach` works for objects.
|
|
60
125
|
*
|
|
61
|
-
*
|
|
126
|
+
* ```javascript [playground]
|
|
127
|
+
* forEach({ a: 1, b: 2, c: 3 }, num => console.log(num)) // 1 2 3
|
|
62
128
|
* ```
|
|
63
129
|
*
|
|
64
130
|
* Omit the data argument for a composable API
|
|
@@ -81,6 +147,13 @@ const _forEach = function (collection, callback) {
|
|
|
81
147
|
* // 2
|
|
82
148
|
* // 3
|
|
83
149
|
* ```
|
|
150
|
+
*
|
|
151
|
+
* See also:
|
|
152
|
+
* * [pipe](/docs/pipe)
|
|
153
|
+
* * [tap](/docs/tap)
|
|
154
|
+
* * [all](/docs/all)
|
|
155
|
+
* * [forEach.series](/docs/forEach.series)
|
|
156
|
+
* * [map](/docs/map)
|
|
84
157
|
*/
|
|
85
158
|
const forEach = function (arg0, arg1) {
|
|
86
159
|
if (typeof arg0 == 'function') {
|
|
@@ -125,20 +198,34 @@ const _forEachSeries = function (collection, callback) {
|
|
|
125
198
|
*
|
|
126
199
|
* @synopsis
|
|
127
200
|
* ```coffeescript [specscript]
|
|
128
|
-
* type
|
|
201
|
+
* type Iterable = Array|Set|Map|Generator|AsyncGenerator|{ forEach: function }|Object
|
|
202
|
+
*
|
|
203
|
+
* type Callback = (
|
|
204
|
+
* item any,
|
|
205
|
+
* indexOrKey number|string|any,
|
|
206
|
+
* iter Iterable
|
|
207
|
+
* )=>Promise|undefined
|
|
129
208
|
*
|
|
130
|
-
* forEach
|
|
209
|
+
* forEach(iter Iterable, cb Callback) -> iter Promise|Iterable
|
|
131
210
|
*
|
|
132
|
-
* forEach
|
|
211
|
+
* forEach(cb Callback)(iter Iterable) -> iter Promise|Iterable
|
|
133
212
|
* ```
|
|
134
213
|
*
|
|
135
214
|
* @description
|
|
136
|
-
*
|
|
215
|
+
* [forEach](/docs/forEach) with serial execution.
|
|
137
216
|
*
|
|
138
217
|
* ```javascript [playground]
|
|
139
|
-
* forEach.series([1, 2, 3, 4, 5],
|
|
140
|
-
*
|
|
141
|
-
*
|
|
218
|
+
* forEach.series([1, 2, 3, 4, 5], async number => {
|
|
219
|
+
* await new Promise(resolve => {
|
|
220
|
+
* setTimeout(resolve, 1000)
|
|
221
|
+
* })
|
|
222
|
+
* console.log(number)
|
|
223
|
+
* // 1
|
|
224
|
+
* // 2
|
|
225
|
+
* // 3
|
|
226
|
+
* // 4
|
|
227
|
+
* // 5
|
|
228
|
+
* })
|
|
142
229
|
* ```
|
|
143
230
|
*
|
|
144
231
|
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
@@ -149,6 +236,13 @@ const _forEachSeries = function (collection, callback) {
|
|
|
149
236
|
* // 2
|
|
150
237
|
* // 3
|
|
151
238
|
* ```
|
|
239
|
+
*
|
|
240
|
+
* See also:
|
|
241
|
+
* * [pipe](/docs/pipe)
|
|
242
|
+
* * [tap](/docs/tap)
|
|
243
|
+
* * [all](/docs/all)
|
|
244
|
+
* * [forEach](/docs/forEach)
|
|
245
|
+
* * [map](/docs/map)
|
|
152
246
|
*/
|
|
153
247
|
forEach.series = function forEachSeries(arg0, arg1) {
|
|
154
248
|
if (typeof arg0 == 'function') {
|
package/get.js
CHANGED
|
@@ -86,6 +86,15 @@ const _get = function (object, path, defaultValue) {
|
|
|
86
86
|
* ```javascript [playground]
|
|
87
87
|
* get(Promise.resolve({ a: 1 }), 'a').then(console.log) // 1
|
|
88
88
|
* ```
|
|
89
|
+
*
|
|
90
|
+
* See also:
|
|
91
|
+
* * [pipe](/docs/pipe)
|
|
92
|
+
* * [all](/docs/all)
|
|
93
|
+
* * [assign](/docs/assign)
|
|
94
|
+
* * [set](/docs/set)
|
|
95
|
+
* * [pick](/docs/pick)
|
|
96
|
+
* * [omit](/docs/omit)
|
|
97
|
+
* * [forEach](/docs/forEach)
|
|
89
98
|
*/
|
|
90
99
|
|
|
91
100
|
const get = function (arg0, arg1, arg2) {
|
package/gt.js
CHANGED
|
@@ -53,6 +53,15 @@ const greaterThan = require('./_internal/greaterThan')
|
|
|
53
53
|
* ```javascript [playground]
|
|
54
54
|
* gt(Promise.resolve({ a: 2, b: 1 }), get('a'), get('b')).then(console.log) // true
|
|
55
55
|
* ```
|
|
56
|
+
*
|
|
57
|
+
* See also:
|
|
58
|
+
* * [and](/docs/and)
|
|
59
|
+
* * [eq](/docs/eq)
|
|
60
|
+
* * [lt](/docs/lt)
|
|
61
|
+
* * [gte](/docs/gte)
|
|
62
|
+
* * [lte](/docs/lte)
|
|
63
|
+
* * [thunkify](/docs/thunkify)
|
|
64
|
+
*
|
|
56
65
|
*/
|
|
57
66
|
const gt = ComparisonOperator(greaterThan)
|
|
58
67
|
|
package/gte.js
CHANGED
|
@@ -55,6 +55,15 @@ const greaterThanOrEqual = require('./_internal/greaterThanOrEqual')
|
|
|
55
55
|
* ```javascript [playground]
|
|
56
56
|
* gte(Promise.resolve({ a: 1, b: 1 }), get('a'), get('b')).then(console.log) // true
|
|
57
57
|
* ```
|
|
58
|
+
*
|
|
59
|
+
* See also:
|
|
60
|
+
* * [and](/docs/and)
|
|
61
|
+
* * [eq](/docs/eq)
|
|
62
|
+
* * [lt](/docs/lt)
|
|
63
|
+
* * [gt](/docs/gt)
|
|
64
|
+
* * [lte](/docs/lte)
|
|
65
|
+
* * [thunkify](/docs/thunkify)
|
|
66
|
+
*
|
|
58
67
|
*/
|
|
59
68
|
const gte = ComparisonOperator(greaterThanOrEqual)
|
|
60
69
|
|
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico v2.
|
|
2
|
+
* rubico v2.7.0
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
4
|
* (c) 2019-2025 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
@@ -73,6 +73,10 @@ const curry2 = function (baseFunc, arg0, arg1) {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
const pipe = function (...args) {
|
|
76
|
+
if (typeof args[0] == 'function') {
|
|
77
|
+
return args.reduce(funcConcat)
|
|
78
|
+
}
|
|
79
|
+
|
|
76
80
|
const funcs = args.pop()
|
|
77
81
|
const pipeline = funcs.reduce(funcConcat)
|
|
78
82
|
|
|
@@ -88,6 +92,10 @@ const pipe = function (...args) {
|
|
|
88
92
|
}
|
|
89
93
|
|
|
90
94
|
const compose = function (...args) {
|
|
95
|
+
if (typeof args[0] == 'function') {
|
|
96
|
+
return args.reduceRight(funcConcat)
|
|
97
|
+
}
|
|
98
|
+
|
|
91
99
|
const funcs = args.pop()
|
|
92
100
|
const composition = funcs.reduceRight(funcConcat)
|
|
93
101
|
|
|
@@ -1745,17 +1753,17 @@ const genericReduce = function (collection, reducer, result) {
|
|
|
1745
1753
|
: reducer(result, collection)
|
|
1746
1754
|
}
|
|
1747
1755
|
|
|
1748
|
-
// _reduce(collection any, reducer function,
|
|
1749
|
-
const _reduce = function (collection, reducer,
|
|
1750
|
-
if (typeof
|
|
1751
|
-
const actualInitialValue =
|
|
1756
|
+
// _reduce(collection any, reducer function, initial function|any) -> Promise
|
|
1757
|
+
const _reduce = function (collection, reducer, initial) {
|
|
1758
|
+
if (typeof initial == 'function') {
|
|
1759
|
+
const actualInitialValue = initial(collection)
|
|
1752
1760
|
return isPromise(actualInitialValue)
|
|
1753
1761
|
? actualInitialValue.then(curry3(genericReduce, collection, reducer, __))
|
|
1754
1762
|
: genericReduce(collection, reducer, actualInitialValue)
|
|
1755
1763
|
}
|
|
1756
|
-
return isPromise(
|
|
1757
|
-
?
|
|
1758
|
-
: genericReduce(collection, reducer,
|
|
1764
|
+
return isPromise(initial)
|
|
1765
|
+
? initial.then(curry3(genericReduce, collection, reducer, __))
|
|
1766
|
+
: genericReduce(collection, reducer, initial)
|
|
1759
1767
|
}
|
|
1760
1768
|
|
|
1761
1769
|
const reduce = function (...args) {
|
package/lte.js
CHANGED
|
@@ -53,6 +53,15 @@ const lessThanOrEqual = require('./_internal/lessThanOrEqual')
|
|
|
53
53
|
* ```javascript [playground]
|
|
54
54
|
* lte(Promise.resolve({ a: 1, b: 1 }), get('a'), get('b')).then(console.log) // true
|
|
55
55
|
* ```
|
|
56
|
+
*
|
|
57
|
+
* See also:
|
|
58
|
+
* * [and](/docs/and)
|
|
59
|
+
* * [eq](/docs/eq)
|
|
60
|
+
* * [lt](/docs/lt)
|
|
61
|
+
* * [gt](/docs/gt)
|
|
62
|
+
* * [gte](/docs/gte)
|
|
63
|
+
* * [thunkify](/docs/thunkify)
|
|
64
|
+
*
|
|
56
65
|
*/
|
|
57
66
|
const lte = ComparisonOperator(lessThanOrEqual)
|
|
58
67
|
|