rubico 2.6.6 → 2.7.1
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/_internal/mapMapSeries.js +1 -0
- package/_internal/objectMapSeries.js +1 -0
- package/_internal/setMapSeries.js +1 -0
- 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 +23 -11
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.global.js +23 -11
- package/dist/rubico.global.min.js +2 -2
- package/dist/rubico.js +23 -11
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.mjs +23 -11
- 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 +8 -4
- package/dist/thunkify.es.min.js +2 -2
- package/dist/thunkify.js +8 -4
- package/dist/thunkify.min.js +2 -2
- package/dist/thunkify.mjs +8 -4
- 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 +23 -11
- 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 +23 -11
- 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 +18 -0
- package/thunkify.js +30 -5
- 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/set.js
CHANGED
|
@@ -96,6 +96,15 @@ const _set = function (obj, path, value) {
|
|
|
96
96
|
* set(Promise.resolve({}), 'a', 1).then(console.log) // { a: 1 }
|
|
97
97
|
* ```
|
|
98
98
|
*
|
|
99
|
+
* See also:
|
|
100
|
+
* * [pipe](/docs/pipe)
|
|
101
|
+
* * [all](/docs/all)
|
|
102
|
+
* * [assign](/docs/assign)
|
|
103
|
+
* * [get](/docs/get)
|
|
104
|
+
* * [pick](/docs/pick)
|
|
105
|
+
* * [omit](/docs/omit)
|
|
106
|
+
* * [forEach](/docs/forEach)
|
|
107
|
+
*
|
|
99
108
|
* @since 1.7.0
|
|
100
109
|
*/
|
|
101
110
|
|
package/some.js
CHANGED
|
@@ -40,7 +40,7 @@ const _some = function (collection, predicate) {
|
|
|
40
40
|
*
|
|
41
41
|
* @synopsis
|
|
42
42
|
* ```coffeescript [specscript]
|
|
43
|
-
* type Foldable = Array|
|
|
43
|
+
* type Foldable = Array|Set|Map|Generator|AsyncGenerator|{ reduce: function }|Object
|
|
44
44
|
*
|
|
45
45
|
* some(collection Foldable, predicate function) -> Promise|boolean
|
|
46
46
|
*
|
|
@@ -48,7 +48,7 @@ const _some = function (collection, predicate) {
|
|
|
48
48
|
* ```
|
|
49
49
|
*
|
|
50
50
|
* @description
|
|
51
|
-
* Test a predicate concurrently across all items of a
|
|
51
|
+
* Test a predicate concurrently across all items of a foldable, returning true if any executions return true.
|
|
52
52
|
*
|
|
53
53
|
* ```javascript [playground]
|
|
54
54
|
* const isOdd = number => number % 2 == 1
|
|
@@ -58,7 +58,16 @@ const _some = function (collection, predicate) {
|
|
|
58
58
|
* ) // true
|
|
59
59
|
* ```
|
|
60
60
|
*
|
|
61
|
-
* The
|
|
61
|
+
* The following data types are considered to be foldables:
|
|
62
|
+
* * `array`
|
|
63
|
+
* * `set`
|
|
64
|
+
* * `map`
|
|
65
|
+
* * `generator`
|
|
66
|
+
* * `async generator`
|
|
67
|
+
* * `object with .reduce method`
|
|
68
|
+
* * `object`
|
|
69
|
+
*
|
|
70
|
+
* `some` works for async generators.
|
|
62
71
|
*
|
|
63
72
|
* ```javascript [playground]
|
|
64
73
|
* const toTodosUrl = id => 'https://jsonplaceholder.typicode.com/todos/' + id
|
|
@@ -98,6 +107,11 @@ const _some = function (collection, predicate) {
|
|
|
98
107
|
* some(Promise.resolve([1, 2, 3, 4, 5]), n => n > 6).then(console.log) // false
|
|
99
108
|
* ```
|
|
100
109
|
*
|
|
110
|
+
* See also:
|
|
111
|
+
* * [map](/docs/map)
|
|
112
|
+
* * [every](/docs/every)
|
|
113
|
+
* * [and](/docs/and)
|
|
114
|
+
*
|
|
101
115
|
* @execution concurrent
|
|
102
116
|
*
|
|
103
117
|
* @muxing
|
package/switchCase.js
CHANGED
|
@@ -91,6 +91,12 @@ const curryArgs3 = require('./_internal/curryArgs3')
|
|
|
91
91
|
* ]) // 1 + 2 + 3 == 6
|
|
92
92
|
* ```
|
|
93
93
|
*
|
|
94
|
+
* See also:
|
|
95
|
+
* * [pipe](/docs/pipe)
|
|
96
|
+
* * [tap.if](/docs/tap.if)
|
|
97
|
+
* * [tryCatch](/docs/tryCatch)
|
|
98
|
+
* * [all](/docs/all)
|
|
99
|
+
*
|
|
94
100
|
* @execution series
|
|
95
101
|
*/
|
|
96
102
|
const switchCase = (...args) => {
|
package/tap.js
CHANGED
|
@@ -22,6 +22,8 @@ const _tap = function (args, f) {
|
|
|
22
22
|
*
|
|
23
23
|
* @synopsis
|
|
24
24
|
* ```coffeescript [specscript]
|
|
25
|
+
* args Array<any>
|
|
26
|
+
*
|
|
25
27
|
* tap(...args, f function) -> Promise|args[0]
|
|
26
28
|
* tap(f function)(...args) -> Promise|args[0]
|
|
27
29
|
* ```
|
|
@@ -46,6 +48,13 @@ const _tap = function (args, f) {
|
|
|
46
48
|
* ```javascript [playground]
|
|
47
49
|
* tap(Promise.resolve(1), Promise.resolve(2), 3, console.log) // 1 2 3
|
|
48
50
|
* ```
|
|
51
|
+
*
|
|
52
|
+
* See also:
|
|
53
|
+
* * [pipe](/docs/pipe)
|
|
54
|
+
* * [compose](/docs/compose)
|
|
55
|
+
* * [tap.if](/docs/tap.if)
|
|
56
|
+
* * [switchCase](/docs/switchCase)
|
|
57
|
+
* * [tryCatch](/docs/tryCatch)
|
|
49
58
|
*/
|
|
50
59
|
const tap = function (...args) {
|
|
51
60
|
const f = args.pop()
|
|
@@ -94,6 +103,8 @@ const _tapIf = function (predicate, f, args) {
|
|
|
94
103
|
*
|
|
95
104
|
* @synopsis
|
|
96
105
|
* ```coffeescript [specscript]
|
|
106
|
+
* args Array<any>
|
|
107
|
+
*
|
|
97
108
|
* tap.if(...args, predicate function, f function) -> Promise|args[0]
|
|
98
109
|
* tap.if(predicate function, f function)(...args) -> Promise|args[0]
|
|
99
110
|
* ```
|
|
@@ -116,6 +127,13 @@ const _tapIf = function (predicate, f, args) {
|
|
|
116
127
|
* tap.if(Promise.resolve(1), n => n < 5, console.log) // 1
|
|
117
128
|
* tap.if(Promise.resolve(6), n => n < 5, console.log)
|
|
118
129
|
* ```
|
|
130
|
+
*
|
|
131
|
+
* See also:
|
|
132
|
+
* * [pipe](/docs/pipe)
|
|
133
|
+
* * [compose](/docs/compose)
|
|
134
|
+
* * [tap](/docs/tap)
|
|
135
|
+
* * [switchCase](/docs/switchCase)
|
|
136
|
+
* * [tryCatch](/docs/tryCatch)
|
|
119
137
|
*/
|
|
120
138
|
|
|
121
139
|
tap.if = function (...args) {
|
package/thunkify.js
CHANGED
|
@@ -9,11 +9,13 @@ const funcApply = require('./_internal/funcApply')
|
|
|
9
9
|
*
|
|
10
10
|
* @synopsis
|
|
11
11
|
* ```coffeescript [specscript]
|
|
12
|
-
*
|
|
12
|
+
* argsWithPromises Array<Promise|any>
|
|
13
|
+
*
|
|
14
|
+
* thunkify(func function, ...argsWithPromises) -> thunk function
|
|
13
15
|
* ```
|
|
14
16
|
*
|
|
15
17
|
* @description
|
|
16
|
-
* Create a thunk function from
|
|
18
|
+
* Create a thunk function from an original function and any number of arguments. A thunk function takes no arguments, and when called, executes the original function with the previously provided arguments. The original function is said to be "thunkified".
|
|
17
19
|
*
|
|
18
20
|
* ```javascript [playground]
|
|
19
21
|
* const add = (a, b) => a + b
|
|
@@ -22,12 +24,35 @@ const funcApply = require('./_internal/funcApply')
|
|
|
22
24
|
*
|
|
23
25
|
* console.log(thunkAdd12()) // 3
|
|
24
26
|
* ```
|
|
27
|
+
*
|
|
28
|
+
* If any promises are passed as arguments, they are resolved before being applied to the original function, and `thunkify` returns a promise of the thunk function.
|
|
29
|
+
*
|
|
30
|
+
* ```javascript [playground]
|
|
31
|
+
* const add = (a, b) => a + b
|
|
32
|
+
*
|
|
33
|
+
* const promise = thunkify(add, Promise.resolve(1), 2)
|
|
34
|
+
* const thunkAdd12 = await promise
|
|
35
|
+
*
|
|
36
|
+
* console.log(thunkAdd12()) // 3
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* See also:
|
|
40
|
+
* * [eq](/docs/eq)
|
|
41
|
+
* * [always](/docs/always)
|
|
42
|
+
* * [curry](/docs/curry)
|
|
43
|
+
* * [__](/docs/__)
|
|
44
|
+
* * [Transducer.map](/docs/Transducer.map)
|
|
45
|
+
*
|
|
25
46
|
*/
|
|
26
|
-
const thunkify = (func, ...args)
|
|
47
|
+
const thunkify = function (func, ...args) {
|
|
27
48
|
if (areAnyValuesPromises(args)) {
|
|
28
|
-
return promiseAll(args).then(
|
|
49
|
+
return promiseAll(args).then(resolvedArgs => function thunk() {
|
|
50
|
+
return func(...resolvedArgs)
|
|
51
|
+
})
|
|
52
|
+
}
|
|
53
|
+
return function thunk() {
|
|
54
|
+
return func(...args)
|
|
29
55
|
}
|
|
30
|
-
return func(...args)
|
|
31
56
|
}
|
|
32
57
|
|
|
33
58
|
module.exports = thunkify
|
package/transform.js
CHANGED
|
@@ -21,13 +21,11 @@ const _transform = function (collection, transducer, initialValue) {
|
|
|
21
21
|
*
|
|
22
22
|
* @synopsis
|
|
23
23
|
* ```coffeescript [specscript]
|
|
24
|
-
* type Foldable =
|
|
24
|
+
* type Foldable = Array|Set|Map|Generator|AsyncGenerator|{ reduce: function }|Object
|
|
25
25
|
*
|
|
26
26
|
* type Reducer = (
|
|
27
27
|
* accumulator any,
|
|
28
28
|
* value any,
|
|
29
|
-
* indexOrKey number|string,
|
|
30
|
-
* f Foldable,
|
|
31
29
|
* )=>(nextAccumulator Promise|any)
|
|
32
30
|
*
|
|
33
31
|
* type Transducer = Reducer=>Reducer
|
|
@@ -35,38 +33,94 @@ const _transform = function (collection, transducer, initialValue) {
|
|
|
35
33
|
* type Semigroup =
|
|
36
34
|
* Array|String|Set|TypedArray|{ concat: function }|{ write: function }|Object
|
|
37
35
|
*
|
|
38
|
-
* type SemigroupResolver = (
|
|
36
|
+
* type SemigroupResolver = (fold Foldable)=>Promise|Semigroup
|
|
39
37
|
*
|
|
40
38
|
* transform(
|
|
41
|
-
*
|
|
39
|
+
* fold Foldable,
|
|
42
40
|
* transducer Transducer,
|
|
43
|
-
*
|
|
41
|
+
* initial? Semigroup|SemigroupResolver,
|
|
44
42
|
* ) -> result Promise|Semigroup
|
|
45
43
|
*
|
|
46
44
|
* transform(
|
|
47
45
|
* transducer Transducer,
|
|
48
|
-
*
|
|
49
|
-
* )(
|
|
46
|
+
* initial? Semigroup|SemigroupResolver,
|
|
47
|
+
* )(fold Foldable) -> result Promise|Semigroup
|
|
50
48
|
* ```
|
|
51
49
|
*
|
|
52
50
|
* @description
|
|
53
|
-
* Transforms a foldable
|
|
51
|
+
* Transforms a foldable with [transducers](https://rubico.land/blog/transducers-crash-course-rubico-v2) into a semigroup.
|
|
54
52
|
*
|
|
55
|
-
* The following data types are considered foldables:
|
|
56
|
-
* * `
|
|
57
|
-
* * `
|
|
58
|
-
* * `
|
|
53
|
+
* The following data types are considered to be foldables:
|
|
54
|
+
* * `array`
|
|
55
|
+
* * `set`
|
|
56
|
+
* * `map`
|
|
57
|
+
* * `generator`
|
|
58
|
+
* * `async generator`
|
|
59
|
+
* * `object with .reduce method`
|
|
60
|
+
* * `object`
|
|
59
61
|
*
|
|
60
|
-
*
|
|
61
|
-
* * `array`; concatenation defined by `result.concat(values)`
|
|
62
|
-
* * `string`; concatenation defined by `result + values`
|
|
63
|
-
* * `set`; concatenation defined by `result.add(...values)`
|
|
64
|
-
* * `binary`; concatenation defined by `result.set(prevResult); result.set(values, offset)`
|
|
65
|
-
* * `{ concat: function }`; concatenation defined by `result.concat(values)`
|
|
66
|
-
* * `{ write: function }`; concatenation defined by `result.write(item)`
|
|
67
|
-
* * `object`; concatenation defined by `({ ...result, ...values })`
|
|
62
|
+
* Transducers, due to their lazy nature, don't have knowledge of the foldable they are transforming. As such, the transducer signature for all foldables is the same:
|
|
68
63
|
*
|
|
69
|
-
*
|
|
64
|
+
* ```coffeescript [specscript]
|
|
65
|
+
* type Reducer = (
|
|
66
|
+
* accumulator any,
|
|
67
|
+
* value any,
|
|
68
|
+
* )=>(nextAccumulator Promise|any)
|
|
69
|
+
*
|
|
70
|
+
* type Transducer = Reducer=>Reducer
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* The following data types are considered to be semigroups:
|
|
74
|
+
* * `array`
|
|
75
|
+
* * `string`
|
|
76
|
+
* * `set`
|
|
77
|
+
* * `binary`
|
|
78
|
+
* * `{ concat: function }`
|
|
79
|
+
* * `{ write: function }`
|
|
80
|
+
* * `object`
|
|
81
|
+
*
|
|
82
|
+
* The concatenation operation changes depending on the provided semigroup:
|
|
83
|
+
*
|
|
84
|
+
* If the semigroup is an array, concatenation is defined as:
|
|
85
|
+
* ```javascript
|
|
86
|
+
* nextAccumulator = accumulator.concat(values)
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* If the semigroup is a string, concatenation is defined as:
|
|
90
|
+
* ```javascript
|
|
91
|
+
* nextAccumulator = accumulator + values
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* If the semigroup is a set, concatenation is defined as:
|
|
95
|
+
* ```javascript
|
|
96
|
+
* nextAccumulator = accumulator.add(...values)
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* If the semigroup is binary, concatenation is defined as:
|
|
100
|
+
* ```javascript
|
|
101
|
+
* nextAccumulator = new accumulator.constructor(accumulator.length + values.length)
|
|
102
|
+
* nextAccumulator.set(accumulator)
|
|
103
|
+
* nextAccumulator.set(values, accumulator.length)
|
|
104
|
+
* ```
|
|
105
|
+
*
|
|
106
|
+
* If the semigroup is an object with a `.concat` method, concatenation is defined as:
|
|
107
|
+
* ```javascript
|
|
108
|
+
* nextAccumulator = accumulator
|
|
109
|
+
* accumulator.concat(values)
|
|
110
|
+
* ```
|
|
111
|
+
*
|
|
112
|
+
* If the semigroup is an object with a `.write` method, concatenation is defined as:
|
|
113
|
+
* ```javascript
|
|
114
|
+
* nextAccumulator = accumulator
|
|
115
|
+
* accumulator.write(values)
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* If the semigroup is a plain object, concatenation is defined as:
|
|
119
|
+
* ```javascript
|
|
120
|
+
* nextAccumulator = ({ ...accumulator, ...values })
|
|
121
|
+
* ```
|
|
122
|
+
*
|
|
123
|
+
* `transform` transforms numbers from an array into another array.
|
|
70
124
|
*
|
|
71
125
|
* ```javascript [playground]
|
|
72
126
|
* const square = number => number ** 2
|
|
@@ -80,22 +134,22 @@ const _transform = function (collection, transducer, initialValue) {
|
|
|
80
134
|
*
|
|
81
135
|
* // transform arrays into arrays
|
|
82
136
|
* console.log(
|
|
83
|
-
* transform(
|
|
137
|
+
* transform([1, 2, 3, 4, 5], squaredOdds, [])
|
|
84
138
|
* ) // [1, 9, 25]
|
|
85
139
|
*
|
|
86
140
|
* // transform arrays into strings
|
|
87
141
|
* console.log(
|
|
88
|
-
* transform(
|
|
142
|
+
* transform([1, 2, 3, 4, 5], squaredOdds, '')
|
|
89
143
|
* ) // '1925'
|
|
90
144
|
*
|
|
91
145
|
* // transform arrays into sets
|
|
92
146
|
* console.log(
|
|
93
|
-
* transform(
|
|
147
|
+
* transform([1, 2, 3, 4, 5], squaredOdds, new Set())
|
|
94
148
|
* ) // Set (3) { 1, 9, 25 }
|
|
95
149
|
*
|
|
96
150
|
* // transform arrays into typed arrays
|
|
97
151
|
* console.log(
|
|
98
|
-
* transform(
|
|
152
|
+
* transform([1, 2, 3, 4, 5], squaredOdds, new Uint8Array()),
|
|
99
153
|
* ) // Uint8Array(3) [ 1, 9, 25 ]
|
|
100
154
|
* ```
|
|
101
155
|
*
|
|
@@ -111,7 +165,7 @@ const _transform = function (collection, transducer, initialValue) {
|
|
|
111
165
|
* },
|
|
112
166
|
* }
|
|
113
167
|
*
|
|
114
|
-
* transform(
|
|
168
|
+
* transform([1, 2, 3, 4, 5], Transducer.map(square), Stdout)
|
|
115
169
|
* // 1
|
|
116
170
|
* // 4
|
|
117
171
|
* // 9
|
|
@@ -149,16 +203,38 @@ const _transform = function (collection, transducer, initialValue) {
|
|
|
149
203
|
* )
|
|
150
204
|
* ```
|
|
151
205
|
*
|
|
206
|
+
* If the initial value is a function it is treated as a resolver of the semigroup. The resolver may be asynchronous.
|
|
207
|
+
*
|
|
208
|
+
* ```javascript [playground]
|
|
209
|
+
* const promise = transform(
|
|
210
|
+
* [1, 2, 3, 4, 5],
|
|
211
|
+
* Transducer.map(number => number ** 2),
|
|
212
|
+
* async () => ['a'],
|
|
213
|
+
* )
|
|
214
|
+
*
|
|
215
|
+
* promise.then(console.log)
|
|
216
|
+
* ```
|
|
217
|
+
*
|
|
152
218
|
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
153
219
|
*
|
|
154
220
|
* ```javascript [playground]
|
|
155
|
-
* transform(
|
|
221
|
+
* const promise = transform(
|
|
156
222
|
* Promise.resolve([1, 2, 3, 4, 5]),
|
|
157
223
|
* Transducer.map(n => n ** 2),
|
|
158
224
|
* [],
|
|
159
|
-
* )
|
|
225
|
+
* )
|
|
226
|
+
*
|
|
227
|
+
* promise.then(console.log) // [1, 4, 9, 16, 25]
|
|
160
228
|
* ```
|
|
161
229
|
*
|
|
230
|
+
* See also:
|
|
231
|
+
* * [forEach](/docs/forEach)
|
|
232
|
+
* * [map](/docs/map)
|
|
233
|
+
* * [filter](/docs/filter)
|
|
234
|
+
* * [reduce](/docs/reduce)
|
|
235
|
+
* * [flatMap](/docs/flatMap)
|
|
236
|
+
* * [some](/docs/some)
|
|
237
|
+
*
|
|
162
238
|
* @execution series
|
|
163
239
|
*
|
|
164
240
|
* @transducing
|
package/tryCatch.js
CHANGED
|
@@ -75,6 +75,11 @@ const _tryCatch = function (tryer, catcher, args) {
|
|
|
75
75
|
* console.error(`${a} + ${b} + ${c}: ${error.message}`)
|
|
76
76
|
* })
|
|
77
77
|
* ```
|
|
78
|
+
*
|
|
79
|
+
* See also:
|
|
80
|
+
* * [pipe](/docs/pipe)
|
|
81
|
+
* * [switchCase](/docs/switchCase)
|
|
82
|
+
* * [all](/docs/all)
|
|
78
83
|
*/
|
|
79
84
|
|
|
80
85
|
const tryCatch = function (...args) {
|
package/x/append.js
CHANGED
package/x/callProp.js
CHANGED
|
@@ -15,6 +15,11 @@
|
|
|
15
15
|
* const priceRoundedDown = callProp('toFixed', 2)(5.992)
|
|
16
16
|
* console.log('priceRoundedDown:', priceRoundedDown) // '5.99'
|
|
17
17
|
* ```
|
|
18
|
+
*
|
|
19
|
+
* See also:
|
|
20
|
+
* * [append](/docs/append)
|
|
21
|
+
* * [defaultsDeep](/docs/defaultsDeep)
|
|
22
|
+
*
|
|
18
23
|
*/
|
|
19
24
|
const callProp = (property, ...args) => function callingProp(object) {
|
|
20
25
|
return object[property](...args)
|
package/x/defaultsDeep.d.ts
CHANGED
|
@@ -26,11 +26,11 @@ export = defaultsDeep;
|
|
|
26
26
|
* })
|
|
27
27
|
*
|
|
28
28
|
* console.log(defaultUser({
|
|
29
|
-
* name: '
|
|
29
|
+
* name: 'John',
|
|
30
30
|
* images: [{ url: 'https://via.placeholder.com/150/0000FF/808080%20?Text=Digital.com' }],
|
|
31
31
|
* }))
|
|
32
32
|
* // {
|
|
33
|
-
* // name: '
|
|
33
|
+
* // name: 'John',
|
|
34
34
|
* // images: [
|
|
35
35
|
* // { url: 'https://via.placeholder.com/150/0000FF/808080%20?Text=Digital.com' },
|
|
36
36
|
* // { url: 'https://via.placeholder.com/150' },
|
package/x/defaultsDeep.js
CHANGED
|
@@ -91,11 +91,11 @@ const objectDefaultsDeepFromObject = function (object, defaultObject) {
|
|
|
91
91
|
* })
|
|
92
92
|
*
|
|
93
93
|
* console.log(defaultUser({
|
|
94
|
-
* name: '
|
|
94
|
+
* name: 'John',
|
|
95
95
|
* images: [{ url: 'https://via.placeholder.com/150/0000FF/808080%20?Text=Digital.com' }],
|
|
96
96
|
* }))
|
|
97
97
|
* // {
|
|
98
|
-
* // name: '
|
|
98
|
+
* // name: 'John',
|
|
99
99
|
* // images: [
|
|
100
100
|
* // { url: 'https://via.placeholder.com/150/0000FF/808080%20?Text=Digital.com' },
|
|
101
101
|
* // { url: 'https://via.placeholder.com/150' },
|
|
@@ -103,6 +103,11 @@ const objectDefaultsDeepFromObject = function (object, defaultObject) {
|
|
|
103
103
|
* // ],
|
|
104
104
|
* // }
|
|
105
105
|
* ```
|
|
106
|
+
*
|
|
107
|
+
* See also:
|
|
108
|
+
* * [callProp](/docs/callProp)
|
|
109
|
+
* * [differenceWith](/docs/differenceWith)
|
|
110
|
+
*
|
|
106
111
|
*/
|
|
107
112
|
const defaultsDeep = defaultCollection => function defaulting(value) {
|
|
108
113
|
if (isArray(value) && isArray(defaultCollection)) {
|
package/x/differenceWith.js
CHANGED
|
@@ -96,6 +96,11 @@ const differenceWithArray = function (comparator, allValues, array) {
|
|
|
96
96
|
* differenceWith(isDeepEqual, [{ a: 1 }, { b: 2 }, { c: 3 }])([{ b: 2 }]),
|
|
97
97
|
* ) // [{ a: 1 }, { c: 3 }]
|
|
98
98
|
* ```
|
|
99
|
+
*
|
|
100
|
+
* See also:
|
|
101
|
+
* * [defaultsDeep](/docs/defaultsDeep)
|
|
102
|
+
* * [filterOut](/docs/filterOut)
|
|
103
|
+
*
|
|
99
104
|
*/
|
|
100
105
|
const differenceWith = (
|
|
101
106
|
comparator, allValues,
|
package/x/find.d.ts
CHANGED
|
@@ -23,12 +23,12 @@ export = find;
|
|
|
23
23
|
* const users = [
|
|
24
24
|
* { name: 'John', age: 16 },
|
|
25
25
|
* { name: 'Jill', age: 32 },
|
|
26
|
-
* { name: '
|
|
26
|
+
* { name: 'John', age: 51 },
|
|
27
27
|
* ]
|
|
28
28
|
*
|
|
29
29
|
* console.log(
|
|
30
30
|
* find(user => user.age > 50)(users),
|
|
31
|
-
* ) // { name: '
|
|
31
|
+
* ) // { name: 'John', age: 51 }
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
34
|
declare function find(predicate: any): (value: any) => any;
|
package/x/find.js
CHANGED
|
@@ -30,12 +30,12 @@ const asyncIteratorFind = require('../_internal/asyncIteratorFind')
|
|
|
30
30
|
* const users = [
|
|
31
31
|
* { name: 'John', age: 16 },
|
|
32
32
|
* { name: 'Jill', age: 32 },
|
|
33
|
-
* { name: '
|
|
33
|
+
* { name: 'John', age: 51 },
|
|
34
34
|
* ]
|
|
35
35
|
*
|
|
36
36
|
* console.log(
|
|
37
37
|
* find(user => user.age > 50)(users),
|
|
38
|
-
* ) // { name: '
|
|
38
|
+
* ) // { name: 'John', age: 51 }
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
41
|
const find = predicate => function finding(value) {
|
package/x/groupBy.d.ts
CHANGED
|
@@ -24,13 +24,13 @@ export = groupBy;
|
|
|
24
24
|
*
|
|
25
25
|
* console.log(
|
|
26
26
|
* groupBy('age')([
|
|
27
|
-
* { name: '
|
|
27
|
+
* { name: 'John', age: 22 },
|
|
28
28
|
* { name: 'Jane', age: 22 },
|
|
29
29
|
* { name: 'Henry', age: 23 },
|
|
30
30
|
* ]),
|
|
31
31
|
* )
|
|
32
32
|
* // Map {
|
|
33
|
-
* // 22 => [{ name: '
|
|
33
|
+
* // 22 => [{ name: 'John', age: 22 }, { name: 'Jane', age: 22 }],
|
|
34
34
|
* // 23 => [{ name: 'Henry', age: 23 }],
|
|
35
35
|
* // }
|
|
36
36
|
* ```
|
package/x/groupBy.js
CHANGED
|
@@ -59,13 +59,13 @@ const groupByResolver = resolver => function groupByResolverReducer(
|
|
|
59
59
|
*
|
|
60
60
|
* console.log(
|
|
61
61
|
* groupBy('age')([
|
|
62
|
-
* { name: '
|
|
62
|
+
* { name: 'John', age: 22 },
|
|
63
63
|
* { name: 'Jane', age: 22 },
|
|
64
64
|
* { name: 'Henry', age: 23 },
|
|
65
65
|
* ]),
|
|
66
66
|
* )
|
|
67
67
|
* // Map {
|
|
68
|
-
* // 22 => [{ name: '
|
|
68
|
+
* // 22 => [{ name: 'John', age: 22 }, { name: 'Jane', age: 22 }],
|
|
69
69
|
* // 23 => [{ name: 'Henry', age: 23 }],
|
|
70
70
|
* // }
|
|
71
71
|
* ```
|
package/x/pluck.d.ts
CHANGED
|
@@ -22,14 +22,14 @@ export = pluck;
|
|
|
22
22
|
* import pluck from 'https://unpkg.com/rubico/dist/x/pluck.es.js'
|
|
23
23
|
*
|
|
24
24
|
* const users = [
|
|
25
|
-
* { name: '
|
|
25
|
+
* { name: 'John', age: 33 },
|
|
26
26
|
* { name: 'Jane', age: 51 },
|
|
27
27
|
* { name: 'Jim', age: 22 },
|
|
28
28
|
* ]
|
|
29
29
|
*
|
|
30
30
|
* const usernames = pluck(users, 'name')
|
|
31
31
|
*
|
|
32
|
-
* console.log(usernames) // ['
|
|
32
|
+
* console.log(usernames) // ['John', 'Jane', 'Jim']
|
|
33
33
|
* ```
|
|
34
34
|
*/
|
|
35
35
|
declare function pluck(...args: any[]): any;
|
package/x/pluck.js
CHANGED
|
@@ -25,14 +25,14 @@ const get = require('../get')
|
|
|
25
25
|
* import pluck from 'https://unpkg.com/rubico/dist/x/pluck.es.js'
|
|
26
26
|
*
|
|
27
27
|
* const users = [
|
|
28
|
-
* { name: '
|
|
28
|
+
* { name: 'John', age: 33 },
|
|
29
29
|
* { name: 'Jane', age: 51 },
|
|
30
30
|
* { name: 'Jim', age: 22 },
|
|
31
31
|
* ]
|
|
32
32
|
*
|
|
33
33
|
* const usernames = pluck(users, 'name')
|
|
34
34
|
*
|
|
35
|
-
* console.log(usernames) // ['
|
|
35
|
+
* console.log(usernames) // ['John', 'Jane', 'Jim']
|
|
36
36
|
* ```
|
|
37
37
|
*/
|
|
38
38
|
const pluck = function (...args) {
|
package/x/unionWith.test.js
CHANGED
|
@@ -102,14 +102,14 @@ describe('unionWith', () => {
|
|
|
102
102
|
assert.deepEqual(result, new Set([1, 2, 3]))
|
|
103
103
|
})
|
|
104
104
|
it('predicate item => item.name; values Set<[{...}, {...}, {...}]>; result Promise|<Set<[{...}, {...}]>>', async () => {
|
|
105
|
-
const people = new Set([{ name: '
|
|
105
|
+
const people = new Set([{ name: 'John' }, { name: 'John' }, { name: 'Jim' }])
|
|
106
106
|
const result = unionWith((personA, personB) => personA.name === personB.name)(people)
|
|
107
|
-
assert.deepEqual(result, new Set([{ name: '
|
|
107
|
+
assert.deepEqual(result, new Set([{ name: 'John' }, { name: 'Jim' }]))
|
|
108
108
|
{
|
|
109
109
|
const p = unionWith(async (personA, personB) => personA.name === personB.name)(people)
|
|
110
110
|
assert(p instanceof Promise)
|
|
111
111
|
const result = await p
|
|
112
|
-
assert.deepEqual(result, new Set([{ name: '
|
|
112
|
+
assert.deepEqual(result, new Set([{ name: 'John' }, { name: 'Jim' }]))
|
|
113
113
|
}
|
|
114
114
|
})
|
|
115
115
|
it('predicate () => false; values Set<[[1], 2, [3]]>; result Set<[1, 2, 3]>', async () => {
|