rubico 2.8.5 → 2.10.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/README.md +2 -1
- package/_internal/FlatMappingAsyncIterator.js +41 -30
- package/_internal/LinkedList.js +54 -0
- package/_internal/LinkedList.test.js +34 -0
- package/_internal/MappingAsyncIterator.js +65 -15
- package/_internal/SerialMappingAsyncIterator.js +79 -0
- package/_internal/curryArity.js +3 -3
- package/_internal/iteratorFind.js +0 -2
- package/_internal/iteratorForEachSeries.js +1 -1
- package/_internal/objectFlatten.js +4 -1
- package/all.js +33 -59
- package/and.js +1 -1
- package/assign.js +14 -16
- package/compose.js +12 -13
- package/curry.js +1 -1
- 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 +1 -1
- package/dist/compose.es.min.js +1 -1
- package/dist/compose.js +1 -1
- package/dist/compose.min.js +1 -1
- package/dist/compose.mjs +1 -1
- package/dist/curry.es.js +4 -4
- package/dist/curry.es.min.js +2 -2
- package/dist/curry.js +4 -4
- package/dist/curry.min.js +2 -2
- package/dist/curry.mjs +4 -4
- 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 +4 -4
- package/dist/filter.es.min.js +2 -2
- package/dist/filter.js +4 -4
- package/dist/filter.min.js +2 -2
- package/dist/filter.mjs +4 -4
- package/dist/flatMap.es.js +44 -28
- package/dist/flatMap.es.min.js +2 -2
- package/dist/flatMap.js +44 -28
- package/dist/flatMap.min.js +2 -2
- package/dist/flatMap.mjs +44 -28
- package/dist/forEach.es.js +6 -6
- package/dist/forEach.es.min.js +2 -2
- package/dist/forEach.js +6 -6
- package/dist/forEach.min.js +2 -2
- package/dist/forEach.mjs +6 -6
- package/dist/get.es.js +27 -3
- package/dist/get.es.min.js +2 -2
- package/dist/get.js +27 -3
- package/dist/get.min.js +2 -2
- package/dist/get.mjs +27 -3
- 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 +190 -42
- package/dist/map.es.min.js +2 -2
- package/dist/map.js +190 -42
- package/dist/map.min.js +2 -2
- package/dist/map.mjs +190 -42
- 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 +1 -1
- package/dist/pipe.es.min.js +1 -1
- package/dist/pipe.js +1 -1
- package/dist/pipe.min.js +1 -1
- package/dist/pipe.mjs +1 -1
- package/dist/reduce.es.js +1 -1
- package/dist/reduce.es.min.js +1 -1
- package/dist/reduce.js +1 -1
- package/dist/reduce.min.js +1 -1
- package/dist/reduce.mjs +1 -1
- package/dist/rubico.es.js +238 -83
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.global.js +238 -83
- package/dist/rubico.global.min.js +2 -2
- package/dist/rubico.js +238 -83
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.mjs +238 -83
- 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 +4 -4
- package/dist/x/filterOut.es.min.js +2 -2
- package/dist/x/filterOut.js +4 -4
- package/dist/x/filterOut.min.js +2 -2
- package/dist/x/filterOut.mjs +4 -4
- package/dist/x/find.es.js +1 -3
- package/dist/x/find.es.min.js +1 -1
- package/dist/x/find.js +1 -3
- package/dist/x/find.min.js +1 -1
- package/dist/x/find.mjs +1 -3
- 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 +44 -28
- package/dist/x/flatten.es.min.js +2 -2
- package/dist/x/flatten.js +44 -28
- package/dist/x/flatten.min.js +2 -2
- package/dist/x/flatten.mjs +44 -28
- package/dist/x/groupBy.es.js +1 -1
- package/dist/x/groupBy.es.min.js +1 -1
- package/dist/x/groupBy.js +1 -1
- package/dist/x/groupBy.min.js +1 -1
- package/dist/x/groupBy.mjs +1 -1
- 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 +27 -23
- package/dist/x/maxBy.es.min.js +2 -2
- package/dist/x/maxBy.js +27 -23
- package/dist/x/maxBy.min.js +2 -2
- package/dist/x/maxBy.mjs +27 -23
- 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 +194 -44
- package/dist/x/pluck.es.min.js +2 -2
- package/dist/x/pluck.js +194 -44
- package/dist/x/pluck.min.js +2 -2
- package/dist/x/pluck.mjs +194 -44
- 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.js +2 -2
- package/es.js +238 -83
- package/every.js +2 -2
- package/filter.js +4 -4
- package/flatMap.js +61 -54
- package/forEach.js +33 -56
- package/get.js +49 -25
- package/gt.js +2 -2
- package/gte.js +2 -2
- package/index.js +238 -83
- package/lt.js +2 -2
- package/lte.js +2 -2
- package/map.js +115 -151
- package/monad/Mux.js +6 -4
- package/monad/PossiblePromise.js +6 -4
- package/monad/README.md +61 -40
- package/monad/Struct.js +6 -4
- package/not.js +1 -1
- package/omit.js +22 -19
- package/or.js +1 -1
- package/package.json +1 -1
- package/pick.js +14 -11
- package/pipe.js +18 -24
- package/reduce.js +1 -1
- package/set.js +17 -18
- package/some.js +2 -2
- package/switchCase.js +51 -43
- package/tap.js +17 -23
- package/transform.js +1 -1
- package/tryCatch.js +16 -24
- package/x/defaultsDeep.js +1 -1
- package/x/defaultsDeep.test.js +1 -1
- package/_internal/NextIteration.js +0 -12
- package/_internal/generatorFunctionFilter.js +0 -28
- package/_internal/iterationMap.js +0 -27
package/forEach.js
CHANGED
|
@@ -24,16 +24,16 @@ const _forEach = function (collection, callback) {
|
|
|
24
24
|
if (collection == null) {
|
|
25
25
|
return collection
|
|
26
26
|
}
|
|
27
|
-
if (typeof collection.forEach == 'function') {
|
|
28
|
-
collection.forEach(callback)
|
|
29
|
-
return collection
|
|
30
|
-
}
|
|
31
27
|
if (typeof collection[symbolIterator] == 'function') {
|
|
32
28
|
return iteratorForEach(collection[symbolIterator](), callback)
|
|
33
29
|
}
|
|
34
30
|
if (typeof collection[symbolAsyncIterator] == 'function') {
|
|
35
31
|
return asyncIteratorForEach(collection[symbolAsyncIterator](), callback)
|
|
36
32
|
}
|
|
33
|
+
if (typeof collection.forEach == 'function') {
|
|
34
|
+
collection.forEach(callback)
|
|
35
|
+
return collection
|
|
36
|
+
}
|
|
37
37
|
if (collection.constructor == Object) {
|
|
38
38
|
return objectForEach(collection, callback)
|
|
39
39
|
}
|
|
@@ -48,22 +48,19 @@ const _forEach = function (collection, callback) {
|
|
|
48
48
|
* type Iterable = Array|Set|Map|Generator|AsyncGenerator|{ forEach: function }|Object
|
|
49
49
|
*
|
|
50
50
|
* type SyncOrAsyncCallback = (
|
|
51
|
-
*
|
|
51
|
+
* item any,
|
|
52
52
|
* indexOrKey number|string|any,
|
|
53
|
-
*
|
|
53
|
+
* iterable Iterable
|
|
54
54
|
* )=>Promise|undefined
|
|
55
55
|
*
|
|
56
|
-
* iterable Iterable
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* forEach(iterable, cb) -> unmodifiedIterable Promise|Iterable
|
|
60
|
-
* forEach(cb)(iterable) -> unmodifiedIterable Promise|Iterable
|
|
56
|
+
* forEach(iterable Promise|Iterable, callback SyncOrAsyncCallback) -> iterable Promise|Iterable
|
|
57
|
+
* forEach(callback SyncOrAsyncCallback)(iterable Iterable) -> iterable Promise|Iterable
|
|
61
58
|
* ```
|
|
62
59
|
*
|
|
63
60
|
* @description
|
|
64
|
-
*
|
|
61
|
+
* Executes a callback function for each item of an iterable, returning the original iterable unmodified.
|
|
65
62
|
*
|
|
66
|
-
* The following data types are considered to be
|
|
63
|
+
* The following data types are considered to be iterable:
|
|
67
64
|
* * `array`
|
|
68
65
|
* * `set`
|
|
69
66
|
* * `map`
|
|
@@ -76,36 +73,44 @@ const _forEach = function (collection, callback) {
|
|
|
76
73
|
*
|
|
77
74
|
* If the iterable is an array:
|
|
78
75
|
* ```coffeescript [specscript]
|
|
79
|
-
* callback(
|
|
76
|
+
* callback(item any, index number, iterable Array) -> Promise|undefined
|
|
80
77
|
* ```
|
|
81
78
|
*
|
|
82
79
|
* If the iterable is a set:
|
|
83
80
|
* ```coffeescript [specscript]
|
|
84
|
-
* callback(
|
|
81
|
+
* callback(item any, item any, iterable Set) -> Promise|undefined
|
|
85
82
|
* ```
|
|
86
83
|
*
|
|
87
84
|
* If the iterable is a map:
|
|
88
85
|
* ```coffeescript [specscript]
|
|
89
|
-
* callback(
|
|
86
|
+
* callback(item any, key any, iterable Map) -> Promise|undefined
|
|
90
87
|
* ```
|
|
91
88
|
*
|
|
92
89
|
* If the iterable is a generator:
|
|
93
90
|
* ```coffeescript [specscript]
|
|
94
|
-
* callback(
|
|
91
|
+
* callback(item any) -> Promise|undefined
|
|
95
92
|
* ```
|
|
96
93
|
*
|
|
97
94
|
* If the iterable is an async generator:
|
|
98
95
|
* ```coffeescript [specscript]
|
|
99
|
-
* callback(
|
|
96
|
+
* callback(item any) -> Promise|undefined
|
|
100
97
|
* ```
|
|
101
98
|
*
|
|
102
|
-
* If the iterable is an object with a `.forEach` method, the callback function signature is defined externally.
|
|
103
|
-
*
|
|
104
99
|
* If the iterable is a plain object:
|
|
105
100
|
* ```coffeescript [specscript]
|
|
106
|
-
* callback(
|
|
101
|
+
* callback(item any, key string, iterable Object) -> Promise|undefined
|
|
107
102
|
* ```
|
|
108
103
|
*
|
|
104
|
+
* ```javascript [playground]
|
|
105
|
+
* console.log('array')
|
|
106
|
+
* forEach([1, 2, 3, 4, 5], num => console.log(num))
|
|
107
|
+
*
|
|
108
|
+
* console.log('object')
|
|
109
|
+
* forEach({ a: 1, b: 2, c: 3 }, num => console.log(num))
|
|
110
|
+
* ```
|
|
111
|
+
*
|
|
112
|
+
* If the iterable is an object with a `.forEach` method, the callback function signature is defined externally.
|
|
113
|
+
*
|
|
109
114
|
* If the callback function is asynchronous, it is executed concurrently.
|
|
110
115
|
*
|
|
111
116
|
* ```javascript [playground]
|
|
@@ -117,37 +122,20 @@ const _forEach = function (collection, callback) {
|
|
|
117
122
|
* })
|
|
118
123
|
* ```
|
|
119
124
|
*
|
|
120
|
-
* `forEach`
|
|
121
|
-
*
|
|
122
|
-
* ```javascript [playground]
|
|
123
|
-
* forEach([1, 2, 3, 4, 5], num => console.log(num)) // 1 2 3 4 5
|
|
124
|
-
* ```
|
|
125
|
-
*
|
|
126
|
-
* `forEach` works for objects.
|
|
127
|
-
*
|
|
128
|
-
* ```javascript [playground]
|
|
129
|
-
* forEach({ a: 1, b: 2, c: 3 }, num => console.log(num)) // 1 2 3
|
|
130
|
-
* ```
|
|
131
|
-
*
|
|
132
|
-
* Omit the data argument for a composable API
|
|
125
|
+
* `forEach` supports a lazy interface for composability.
|
|
133
126
|
*
|
|
134
127
|
* ```javascript [playground]
|
|
135
128
|
* pipe([1, 2, 3, 4, 5], [
|
|
136
129
|
* filter(number => number % 2 == 1),
|
|
137
130
|
* map(number => number ** 2),
|
|
138
|
-
* forEach(console.log),
|
|
139
|
-
* // 9
|
|
140
|
-
* // 25
|
|
131
|
+
* forEach(console.log),
|
|
141
132
|
* ])
|
|
142
133
|
* ```
|
|
143
134
|
*
|
|
144
|
-
*
|
|
135
|
+
* If the iterable is a promise, it is resolved for its value before further execution for the eager interface only.
|
|
145
136
|
*
|
|
146
137
|
* ```javascript [playground]
|
|
147
138
|
* forEach(Promise.resolve([1, 2, 3]), console.log)
|
|
148
|
-
* // 1
|
|
149
|
-
* // 2
|
|
150
|
-
* // 3
|
|
151
139
|
* ```
|
|
152
140
|
*
|
|
153
141
|
* See also:
|
|
@@ -203,16 +191,13 @@ const _forEachSeries = function (collection, callback) {
|
|
|
203
191
|
* type Iterable = Array|Set|Map|Generator|AsyncGenerator|{ forEach: function }|Object
|
|
204
192
|
*
|
|
205
193
|
* type SyncOrAsyncCallback = (
|
|
206
|
-
*
|
|
194
|
+
* item any,
|
|
207
195
|
* indexOrKey number|string|any,
|
|
208
196
|
* iter Iterable
|
|
209
197
|
* )=>Promise|undefined
|
|
210
198
|
*
|
|
211
|
-
* iterable Iterable
|
|
212
|
-
*
|
|
213
|
-
*
|
|
214
|
-
* forEach(iterable, cb) -> unmodifiedIterable Promise|Iterable
|
|
215
|
-
* forEach(cb)(iterable) -> unmodifiedIterable Promise|Iterable
|
|
199
|
+
* forEach.series(iterable Promise|Iterable, callback SyncOrAsyncCallback) -> iterable Promise|Iterable
|
|
200
|
+
* forEach.series(callback SyncOrAsyncCallback)(iterable Iterable) -> iterable Promise|Iterable
|
|
216
201
|
* ```
|
|
217
202
|
*
|
|
218
203
|
* @description
|
|
@@ -224,21 +209,13 @@ const _forEachSeries = function (collection, callback) {
|
|
|
224
209
|
* setTimeout(resolve, 1000)
|
|
225
210
|
* })
|
|
226
211
|
* console.log(number)
|
|
227
|
-
* // 1
|
|
228
|
-
* // 2
|
|
229
|
-
* // 3
|
|
230
|
-
* // 4
|
|
231
|
-
* // 5
|
|
232
212
|
* })
|
|
233
213
|
* ```
|
|
234
214
|
*
|
|
235
|
-
*
|
|
215
|
+
* If the iterable is a promise, it is resolved for its value before further execution for the eager interface only.
|
|
236
216
|
*
|
|
237
217
|
* ```javascript [playground]
|
|
238
218
|
* forEach.series(Promise.resolve([1, 2, 3]), console.log)
|
|
239
|
-
* // 1
|
|
240
|
-
* // 2
|
|
241
|
-
* // 3
|
|
242
219
|
* ```
|
|
243
220
|
*
|
|
244
221
|
* See also:
|
package/get.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
const isPromise = require('./_internal/isPromise')
|
|
2
|
+
const promiseAll = require('./_internal/promiseAll')
|
|
2
3
|
const __ = require('./_internal/placeholder')
|
|
4
|
+
const curry2 = require('./_internal/curry2')
|
|
3
5
|
const curry3 = require('./_internal/curry3')
|
|
6
|
+
const funcApply = require('./_internal/funcApply')
|
|
4
7
|
const isArray = require('./_internal/isArray')
|
|
5
8
|
const isObject = require('./_internal/isObject')
|
|
6
9
|
const getByPath = require('./_internal/getByPath')
|
|
@@ -18,47 +21,62 @@ const _get = function (object, path, defaultValue) {
|
|
|
18
21
|
*
|
|
19
22
|
* @synopsis
|
|
20
23
|
* ```coffeescript [specscript]
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* ) ->
|
|
26
|
-
*
|
|
27
|
-
* get(
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* )(
|
|
24
|
+
* path string|number|Array<string|number>
|
|
25
|
+
* defaultValue any
|
|
26
|
+
* defaultResolver function
|
|
27
|
+
*
|
|
28
|
+
* get(Promise|Object, path) -> Promise|any
|
|
29
|
+
* get(Promise|Object, path, defaultValue) -> Promise|any
|
|
30
|
+
* get(Promise|Object, path, defaultResolver) -> Promise|any
|
|
31
|
+
*
|
|
32
|
+
* get(path)(Object) -> Promise|any
|
|
33
|
+
* get(path, defaultValue)(Object) -> Promise|any
|
|
34
|
+
* get(path, defaultResolver)(Object) -> Promise|any
|
|
31
35
|
* ```
|
|
32
36
|
*
|
|
33
37
|
* @description
|
|
34
|
-
* Accesses
|
|
38
|
+
* Property accessor. Accesses the property of an object given a path denoted by a string, number, or array of string or numbers.
|
|
35
39
|
*
|
|
36
40
|
* ```javascript [playground]
|
|
37
41
|
* const obj = { hello: 'world' }
|
|
38
42
|
*
|
|
39
|
-
*
|
|
43
|
+
* const value = get(obj, 'hello')
|
|
44
|
+
*
|
|
45
|
+
* console.log(value)
|
|
40
46
|
* ```
|
|
41
47
|
*
|
|
42
|
-
* `get` supports a lazy
|
|
48
|
+
* `get` supports a lazy interface for composability.
|
|
43
49
|
*
|
|
44
50
|
* ```javascript [playground]
|
|
45
51
|
* const obj = { hello: 'world' }
|
|
46
52
|
*
|
|
47
53
|
* const getHello = get('hello')
|
|
48
54
|
*
|
|
49
|
-
*
|
|
55
|
+
* const value = getHello({ hello: 'world' })
|
|
56
|
+
*
|
|
57
|
+
* console.log(value)
|
|
50
58
|
* ```
|
|
51
59
|
*
|
|
52
|
-
* If the value
|
|
60
|
+
* If the value denoted by the path is not found in the object, `get` returns a default value. The default value can be a function resolver that takes the object as an argument. If no default value is provided, `get` returns `undefined`.
|
|
53
61
|
*
|
|
54
62
|
* ```javascript [playground]
|
|
55
63
|
* const getHelloWithDefaultValue = get('hello', 'default')
|
|
56
64
|
*
|
|
57
|
-
* console.log(getHelloWithDefaultValue({ foo: 'bar' }))
|
|
65
|
+
* console.log(getHelloWithDefaultValue({ foo: 'bar' }))
|
|
58
66
|
*
|
|
59
67
|
* const getHelloWithDefaultResolver = get('hello', object => object.foo)
|
|
60
68
|
*
|
|
61
|
-
* console.log(getHelloWithDefaultResolver({ foo: 'bar' }))
|
|
69
|
+
* console.log(getHelloWithDefaultResolver({ foo: 'bar' }))
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* The default resolver may be asynchronous, in which case `get` returns a promise.
|
|
73
|
+
*
|
|
74
|
+
* ```javascript [playground]
|
|
75
|
+
* const asyncDefaultResolver = async object => object.a
|
|
76
|
+
*
|
|
77
|
+
* const promise = get({ a: 1 }, 'notfound', asyncDefaultResolver)
|
|
78
|
+
*
|
|
79
|
+
* promise.then(console.log)
|
|
62
80
|
* ```
|
|
63
81
|
*
|
|
64
82
|
* `get` supports three types of path patterns for nested property access.
|
|
@@ -70,21 +88,27 @@ const _get = function (object, path, defaultValue) {
|
|
|
70
88
|
* ```javascript [playground]
|
|
71
89
|
* const getABC0 = get('a.b.c[0]')
|
|
72
90
|
*
|
|
73
|
-
*
|
|
91
|
+
* const abc0 = getABC0({ a: { b: { c: ['hello'] } } })
|
|
92
|
+
*
|
|
93
|
+
* console.log(abc0)
|
|
74
94
|
*
|
|
75
95
|
* const get00000DotNotation = get('0.0.0.0.0')
|
|
76
96
|
* const get00000BracketNotation = get('[0][0][0][0][0]')
|
|
77
97
|
* const get00000ArrayNotation = get([0, 0, 0, 0, 0])
|
|
78
98
|
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* console.log(
|
|
99
|
+
* const nested = [[[[['foo']]]]]
|
|
100
|
+
*
|
|
101
|
+
* console.log(get00000DotNotation(nested))
|
|
102
|
+
* console.log(get00000BracketNotation(nested))
|
|
103
|
+
* console.log(get00000ArrayNotation(nested))
|
|
82
104
|
* ```
|
|
83
105
|
*
|
|
84
|
-
*
|
|
106
|
+
* If the argument object or default value is a promise, it is resolved for its value before further execution for the eager interface only.
|
|
85
107
|
*
|
|
86
108
|
* ```javascript [playground]
|
|
87
|
-
* get(Promise.resolve({ a: 1 }), 'a').then(console.log)
|
|
109
|
+
* get(Promise.resolve({ a: 1 }), 'a').then(console.log)
|
|
110
|
+
*
|
|
111
|
+
* get({}, 'a', Promise.resolve('default-value')).then(console.log)
|
|
88
112
|
* ```
|
|
89
113
|
*
|
|
90
114
|
* See also:
|
|
@@ -101,8 +125,8 @@ const get = function (arg0, arg1, arg2) {
|
|
|
101
125
|
if (typeof arg0 == 'string' || typeof arg0 == 'number' || isArray(arg0)) {
|
|
102
126
|
return curry3(_get, __, arg0, arg1)
|
|
103
127
|
}
|
|
104
|
-
if (isPromise(arg0)) {
|
|
105
|
-
return arg0.then(
|
|
128
|
+
if (isPromise(arg0) || isPromise(arg2)) {
|
|
129
|
+
return promiseAll([arg0, arg1, arg2]).then(curry2(funcApply, _get, __))
|
|
106
130
|
}
|
|
107
131
|
return _get(arg0, arg1, arg2)
|
|
108
132
|
}
|
package/gt.js
CHANGED
|
@@ -56,7 +56,7 @@ const greaterThan = require('./_internal/greaterThan')
|
|
|
56
56
|
* asyncIsOfLegalAge(juvenile).then(console.log) // false
|
|
57
57
|
* ```
|
|
58
58
|
*
|
|
59
|
-
* `gt` supports a lazy
|
|
59
|
+
* `gt` supports a lazy interface for composability.
|
|
60
60
|
*
|
|
61
61
|
* ```javascript [playground]
|
|
62
62
|
* pipe({ value: 1 }, [
|
|
@@ -65,7 +65,7 @@ const greaterThan = require('./_internal/greaterThan')
|
|
|
65
65
|
* ])
|
|
66
66
|
* ```
|
|
67
67
|
*
|
|
68
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
68
|
+
* Any promises passed in data argument position are resolved for their values before further execution.
|
|
69
69
|
*
|
|
70
70
|
* ```javascript [playground]
|
|
71
71
|
* gt(Promise.resolve({ a: 2, b: 1 }), get('a'), get('b')).then(console.log) // true
|
package/gte.js
CHANGED
|
@@ -60,7 +60,7 @@ const greaterThanOrEqual = require('./_internal/greaterThanOrEqual')
|
|
|
60
60
|
* asyncIsAtLeast100(101).then(console.log) // true
|
|
61
61
|
* ```
|
|
62
62
|
*
|
|
63
|
-
* `gte` supports a lazy
|
|
63
|
+
* `gte` supports a lazy interface for composability.
|
|
64
64
|
*
|
|
65
65
|
* ```javascript [playground]
|
|
66
66
|
* pipe({ value: 1 }, [
|
|
@@ -69,7 +69,7 @@ const greaterThanOrEqual = require('./_internal/greaterThanOrEqual')
|
|
|
69
69
|
* ])
|
|
70
70
|
* ```
|
|
71
71
|
*
|
|
72
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
72
|
+
* Any promises passed in data argument position are resolved for their values before further execution.
|
|
73
73
|
*
|
|
74
74
|
* ```javascript [playground]
|
|
75
75
|
* gte(Promise.resolve({ a: 1, b: 1 }), get('a'), get('b')).then(console.log) // true
|