rubico 2.5.0 → 2.6.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/_internal/arrayMapPool.js +11 -19
- package/_internal/mapMapPool.js +80 -0
- package/_internal/objectMapPool.js +77 -0
- package/_internal/objectMapSeries.js +1 -0
- package/_internal/setMapPool.js +79 -0
- package/_internal/stringMapPool.js +22 -0
- package/all.js +11 -1
- package/and.js +9 -0
- package/assign.js +14 -1
- package/compose.js +8 -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 +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 +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 +3 -2
- package/dist/forEach.es.min.js +2 -2
- package/dist/forEach.js +3 -2
- package/dist/forEach.min.js +2 -2
- package/dist/forEach.mjs +3 -2
- 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 +221 -44
- package/dist/map.es.min.js +2 -2
- package/dist/map.js +221 -44
- package/dist/map.min.js +2 -2
- package/dist/map.mjs +221 -44
- 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 +197 -16
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.global.js +197 -16
- package/dist/rubico.global.min.js +2 -2
- package/dist/rubico.js +197 -16
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.mjs +197 -16
- 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 +38 -1
- package/dist/tap.es.min.js +2 -2
- package/dist/tap.js +38 -1
- package/dist/tap.min.js +2 -2
- package/dist/tap.mjs +38 -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 +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 +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 +221 -44
- package/dist/x/pluck.es.min.js +2 -2
- package/dist/x/pluck.js +221 -44
- package/dist/x/pluck.min.js +2 -2
- package/dist/x/pluck.mjs +221 -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 +38 -1
- package/dist/x/trace.es.min.js +2 -2
- package/dist/x/trace.js +38 -1
- package/dist/x/trace.min.js +2 -2
- package/dist/x/trace.mjs +38 -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 +6 -0
- package/es.js +197 -16
- package/every.js +6 -0
- package/filter.js +9 -0
- package/flatMap.js +7 -0
- package/forEach.js +20 -1
- package/get.js +6 -0
- package/gt.js +6 -0
- package/gte.js +6 -0
- package/index.js +197 -16
- package/lt.js +6 -0
- package/lte.js +6 -0
- package/map.js +118 -45
- package/not.js +8 -0
- package/omit.js +7 -0
- package/or.js +9 -0
- package/package.json +1 -1
- package/pick.js +7 -0
- package/pipe.js +8 -0
- package/reduce.js +8 -0
- package/set.js +6 -0
- package/some.js +6 -0
- package/switchCase.js +12 -0
- package/tap.js +11 -0
- package/transform.js +38 -10
- package/tryCatch.js +14 -0
package/dist/x/unionWith.min.js
CHANGED
package/dist/x/unionWith.mjs
CHANGED
package/dist/x/uniq.es.js
CHANGED
package/dist/x/uniq.es.min.js
CHANGED
package/dist/x/uniq.js
CHANGED
package/dist/x/uniq.min.js
CHANGED
package/dist/x/uniq.mjs
CHANGED
package/dist/x/unless.es.js
CHANGED
package/dist/x/unless.es.min.js
CHANGED
package/dist/x/unless.js
CHANGED
package/dist/x/unless.min.js
CHANGED
package/dist/x/unless.mjs
CHANGED
package/dist/x/values.es.js
CHANGED
package/dist/x/values.es.min.js
CHANGED
package/dist/x/values.js
CHANGED
package/dist/x/values.min.js
CHANGED
package/dist/x/values.mjs
CHANGED
package/dist/x/when.es.js
CHANGED
package/dist/x/when.es.min.js
CHANGED
package/dist/x/when.js
CHANGED
package/dist/x/when.min.js
CHANGED
package/dist/x/when.mjs
CHANGED
package/eq.js
CHANGED
|
@@ -48,6 +48,12 @@ const equals = require('./_internal/equals')
|
|
|
48
48
|
* ])
|
|
49
49
|
* ```
|
|
50
50
|
*
|
|
51
|
+
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
52
|
+
*
|
|
53
|
+
* ```javascript [playground]
|
|
54
|
+
* eq(Promise.resolve({ a: 1, b: 1 }), get('a'), get('b')).then(console.log) // true
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
51
57
|
* @execution concurrent
|
|
52
58
|
*/
|
|
53
59
|
|
package/es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico v2.
|
|
2
|
+
* rubico v2.6.0
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
4
|
* (c) 2019-2024 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
@@ -158,6 +158,9 @@ const tap = function (...args) {
|
|
|
158
158
|
if (args.length == 0) {
|
|
159
159
|
return curryArgs2(_tap, __, func)
|
|
160
160
|
}
|
|
161
|
+
if (areAnyValuesPromises(args)) {
|
|
162
|
+
return promiseAll(args).then(curry2(_tap, __, func))
|
|
163
|
+
}
|
|
161
164
|
return _tap(args, func)
|
|
162
165
|
}
|
|
163
166
|
|
|
@@ -701,6 +704,7 @@ const objectMapSeries = function (object, f) {
|
|
|
701
704
|
thunkify4(_objectMapSeriesAsync, object, f, result, doneKeys),
|
|
702
705
|
))
|
|
703
706
|
}
|
|
707
|
+
result[key] = resultItem
|
|
704
708
|
}
|
|
705
709
|
return result
|
|
706
710
|
}
|
|
@@ -795,15 +799,14 @@ const tapSync = func => function tapping(...args) {
|
|
|
795
799
|
const promiseRace = Promise.race.bind(Promise)
|
|
796
800
|
|
|
797
801
|
const arrayMapPoolAsync = async function (
|
|
798
|
-
array,
|
|
802
|
+
array, f, concurrencyLimit, result, index, promises,
|
|
799
803
|
) {
|
|
800
804
|
const arrayLength = array.length
|
|
801
805
|
while (++index < arrayLength) {
|
|
802
806
|
if (promises.size >= concurrencyLimit) {
|
|
803
807
|
await promiseRace(promises)
|
|
804
808
|
}
|
|
805
|
-
|
|
806
|
-
const resultItem = mapper(array[index])
|
|
809
|
+
const resultItem = f(array[index])
|
|
807
810
|
if (isPromise(resultItem)) {
|
|
808
811
|
const selfDeletingPromise = resultItem.then(
|
|
809
812
|
tapSync(() => promises.delete(selfDeletingPromise)))
|
|
@@ -816,13 +819,12 @@ const arrayMapPoolAsync = async function (
|
|
|
816
819
|
return promiseAll(result)
|
|
817
820
|
}
|
|
818
821
|
|
|
819
|
-
const arrayMapPool = function (array,
|
|
822
|
+
const arrayMapPool = function (array, concurrency, f) {
|
|
820
823
|
const arrayLength = array.length,
|
|
821
824
|
result = Array(arrayLength)
|
|
822
825
|
let index = -1
|
|
823
826
|
while (++index < arrayLength) {
|
|
824
|
-
|
|
825
|
-
const resultItem = mapper(array[index])
|
|
827
|
+
const resultItem = f(array[index])
|
|
826
828
|
if (isPromise(resultItem)) {
|
|
827
829
|
const promises = new Set(),
|
|
828
830
|
selfDeletingPromise = resultItem.then(
|
|
@@ -830,13 +832,167 @@ const arrayMapPool = function (array, mapper, concurrentLimit) {
|
|
|
830
832
|
promises.add(selfDeletingPromise)
|
|
831
833
|
result[index] = selfDeletingPromise
|
|
832
834
|
return arrayMapPoolAsync(
|
|
833
|
-
array,
|
|
835
|
+
array, f, concurrency, result, index, promises)
|
|
834
836
|
}
|
|
835
837
|
result[index] = resultItem
|
|
836
838
|
}
|
|
837
839
|
return result
|
|
838
840
|
}
|
|
839
841
|
|
|
842
|
+
const stringMapPool = function (s, concurrency, f) {
|
|
843
|
+
const result = arrayMapPool(s, concurrency, f)
|
|
844
|
+
return isPromise(result)
|
|
845
|
+
? result.then(curry3(callPropUnary, __, 'join', ''))
|
|
846
|
+
: result.join('')
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
const _setMapPoolAsync = async function (
|
|
850
|
+
s, iterator, concurrency, f, result, promises,
|
|
851
|
+
) {
|
|
852
|
+
let iteration = iterator.next()
|
|
853
|
+
while (!iteration.done) {
|
|
854
|
+
if (promises.size >= concurrency) {
|
|
855
|
+
await promiseRace(promises)
|
|
856
|
+
}
|
|
857
|
+
const resultItem = f(iteration.value, iteration.value, s)
|
|
858
|
+
if (isPromise(resultItem)) {
|
|
859
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
860
|
+
promises.delete(selfDeletingPromise)
|
|
861
|
+
result.add(resolvedValue)
|
|
862
|
+
})
|
|
863
|
+
promises.add(selfDeletingPromise)
|
|
864
|
+
} else {
|
|
865
|
+
result.add(resultItem)
|
|
866
|
+
}
|
|
867
|
+
iteration = iterator.next()
|
|
868
|
+
}
|
|
869
|
+
if (promises.size > 0) {
|
|
870
|
+
await promiseAll(promises)
|
|
871
|
+
}
|
|
872
|
+
return result
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
const setMapPool = function (s, concurrency, f) {
|
|
876
|
+
const result = new Set()
|
|
877
|
+
const iterator = s[symbolIterator]()
|
|
878
|
+
let iteration = iterator.next()
|
|
879
|
+
while (!iteration.done) {
|
|
880
|
+
const resultItem = f(iteration.value, iteration.value, s)
|
|
881
|
+
if (isPromise(resultItem)) {
|
|
882
|
+
const promises = new Set()
|
|
883
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
884
|
+
promises.delete(selfDeletingPromise)
|
|
885
|
+
result.add(resolvedValue)
|
|
886
|
+
})
|
|
887
|
+
promises.add(selfDeletingPromise)
|
|
888
|
+
return _setMapPoolAsync(s, iterator, concurrency, f, result, promises)
|
|
889
|
+
}
|
|
890
|
+
result.add(resultItem)
|
|
891
|
+
iteration = iterator.next()
|
|
892
|
+
}
|
|
893
|
+
return result
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
const _mapMapPoolAsync = async function (
|
|
897
|
+
m, iterator, concurrency, f, result, promises,
|
|
898
|
+
) {
|
|
899
|
+
let iteration = iterator.next()
|
|
900
|
+
while (!iteration.done) {
|
|
901
|
+
if (promises.size >= concurrency) {
|
|
902
|
+
await promiseRace(promises)
|
|
903
|
+
}
|
|
904
|
+
const key = iteration.value[0]
|
|
905
|
+
const resultItem = f(iteration.value[1], key, m)
|
|
906
|
+
if (isPromise(resultItem)) {
|
|
907
|
+
result.set(key, resultItem)
|
|
908
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
909
|
+
promises.delete(selfDeletingPromise)
|
|
910
|
+
result.set(key, resolvedValue)
|
|
911
|
+
})
|
|
912
|
+
promises.add(selfDeletingPromise)
|
|
913
|
+
} else {
|
|
914
|
+
result.set(key, resultItem)
|
|
915
|
+
}
|
|
916
|
+
iteration = iterator.next()
|
|
917
|
+
}
|
|
918
|
+
if (promises.size > 0) {
|
|
919
|
+
await promiseAll(promises)
|
|
920
|
+
}
|
|
921
|
+
return result
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
const mapMapPool = function (m, concurrency, f) {
|
|
925
|
+
const result = new Map()
|
|
926
|
+
const iterator = m[symbolIterator]()
|
|
927
|
+
let iteration = iterator.next()
|
|
928
|
+
while (!iteration.done) {
|
|
929
|
+
const key = iteration.value[0]
|
|
930
|
+
const resultItem = f(iteration.value[1], key, m)
|
|
931
|
+
if (isPromise(resultItem)) {
|
|
932
|
+
const promises = new Set()
|
|
933
|
+
result.set(key, resultItem)
|
|
934
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
935
|
+
promises.delete(selfDeletingPromise)
|
|
936
|
+
result.set(key, resolvedValue)
|
|
937
|
+
})
|
|
938
|
+
promises.add(selfDeletingPromise)
|
|
939
|
+
return _mapMapPoolAsync(m, iterator, concurrency, f, result, promises)
|
|
940
|
+
}
|
|
941
|
+
result.set(key, resultItem)
|
|
942
|
+
iteration = iterator.next()
|
|
943
|
+
}
|
|
944
|
+
return result
|
|
945
|
+
}
|
|
946
|
+
|
|
947
|
+
const _objectMapPoolAsync = async function (
|
|
948
|
+
o, concurrency, f, result, doneKeys, promises,
|
|
949
|
+
) {
|
|
950
|
+
for (const key in o) {
|
|
951
|
+
if (key in doneKeys) {
|
|
952
|
+
continue
|
|
953
|
+
}
|
|
954
|
+
if (promises.size >= concurrency) {
|
|
955
|
+
await promiseRace(promises)
|
|
956
|
+
}
|
|
957
|
+
const resultItem = f(o[key], key, o)
|
|
958
|
+
if (isPromise(resultItem)) {
|
|
959
|
+
result[key] = resultItem
|
|
960
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
961
|
+
promises.delete(selfDeletingPromise)
|
|
962
|
+
result[key] = resolvedValue
|
|
963
|
+
})
|
|
964
|
+
promises.add(selfDeletingPromise)
|
|
965
|
+
} else {
|
|
966
|
+
result[key] = resultItem
|
|
967
|
+
}
|
|
968
|
+
}
|
|
969
|
+
if (promises.size > 0) {
|
|
970
|
+
await promiseAll(promises)
|
|
971
|
+
}
|
|
972
|
+
return result
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
const objectMapPool = function (o, concurrency, f) {
|
|
976
|
+
const result = {}
|
|
977
|
+
const doneKeys = {}
|
|
978
|
+
for (const key in o) {
|
|
979
|
+
doneKeys[key] = true
|
|
980
|
+
const resultItem = f(o[key], key, o)
|
|
981
|
+
if (isPromise(resultItem)) {
|
|
982
|
+
const promises = new Set()
|
|
983
|
+
result[key] = resultItem
|
|
984
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
985
|
+
promises.delete(selfDeletingPromise)
|
|
986
|
+
result[key] = resolvedValue
|
|
987
|
+
})
|
|
988
|
+
promises.add(selfDeletingPromise)
|
|
989
|
+
return _objectMapPoolAsync(o, concurrency, f, result, doneKeys, promises)
|
|
990
|
+
}
|
|
991
|
+
result[key] = resultItem
|
|
992
|
+
}
|
|
993
|
+
return result
|
|
994
|
+
}
|
|
995
|
+
|
|
840
996
|
const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
|
|
841
997
|
const argsLength = args.length,
|
|
842
998
|
curriedArgsLength = curriedArgs.length,
|
|
@@ -972,7 +1128,7 @@ const _map = function (value, mapper) {
|
|
|
972
1128
|
}
|
|
973
1129
|
|
|
974
1130
|
const map = function (arg0, arg1) {
|
|
975
|
-
if (
|
|
1131
|
+
if (arg1 == null) {
|
|
976
1132
|
return curry2(_map, __, arg0)
|
|
977
1133
|
}
|
|
978
1134
|
return isPromise(arg0)
|
|
@@ -995,7 +1151,7 @@ const _mapEntries = (value, mapper) => {
|
|
|
995
1151
|
}
|
|
996
1152
|
|
|
997
1153
|
map.entries = function mapEntries(arg0, arg1) {
|
|
998
|
-
if (
|
|
1154
|
+
if (arg1 == null) {
|
|
999
1155
|
return curry2(_mapEntries, __, arg0)
|
|
1000
1156
|
}
|
|
1001
1157
|
return isPromise(arg0)
|
|
@@ -1027,7 +1183,7 @@ const _mapSeries = function (collection, f) {
|
|
|
1027
1183
|
}
|
|
1028
1184
|
|
|
1029
1185
|
map.series = function mapSeries(arg0, arg1) {
|
|
1030
|
-
if (
|
|
1186
|
+
if (arg1 == null) {
|
|
1031
1187
|
return curry2(_mapSeries, __, arg0)
|
|
1032
1188
|
}
|
|
1033
1189
|
return isPromise(arg0)
|
|
@@ -1035,11 +1191,35 @@ map.series = function mapSeries(arg0, arg1) {
|
|
|
1035
1191
|
: _mapSeries(arg0, arg1)
|
|
1036
1192
|
}
|
|
1037
1193
|
|
|
1038
|
-
|
|
1039
|
-
if (isArray(
|
|
1040
|
-
return arrayMapPool(
|
|
1194
|
+
const _mapPool = function (collection, concurrency, f) {
|
|
1195
|
+
if (isArray(collection)) {
|
|
1196
|
+
return arrayMapPool(collection, concurrency, f)
|
|
1197
|
+
}
|
|
1198
|
+
if (collection == null) {
|
|
1199
|
+
throw new TypeError(`invalid collection ${collection}`)
|
|
1041
1200
|
}
|
|
1042
|
-
|
|
1201
|
+
if (typeof collection == 'string' || collection.constructor == String) {
|
|
1202
|
+
return stringMapPool(collection, concurrency, f)
|
|
1203
|
+
}
|
|
1204
|
+
if (collection.constructor == Set) {
|
|
1205
|
+
return setMapPool(collection, concurrency, f)
|
|
1206
|
+
}
|
|
1207
|
+
if (collection.constructor == Map) {
|
|
1208
|
+
return mapMapPool(collection, concurrency, f)
|
|
1209
|
+
}
|
|
1210
|
+
if (collection.constructor == Object) {
|
|
1211
|
+
return objectMapPool(collection, concurrency, f)
|
|
1212
|
+
}
|
|
1213
|
+
throw new TypeError(`invalid collection ${collection}`)
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
map.pool = function mapPool(arg0, arg1, arg2) {
|
|
1217
|
+
if (arg2 == null) {
|
|
1218
|
+
return curry3(_mapPool, __, arg0, arg1)
|
|
1219
|
+
}
|
|
1220
|
+
return isPromise(arg0)
|
|
1221
|
+
? arg0.then(curry3(_mapPool, __, arg1, arg2))
|
|
1222
|
+
: _mapPool(arg0, arg1, arg2)
|
|
1043
1223
|
}
|
|
1044
1224
|
|
|
1045
1225
|
const FilteringIterator = (iterator, predicate) => ({
|
|
@@ -2146,7 +2326,8 @@ const _forEach = function (collection, callback) {
|
|
|
2146
2326
|
return collection
|
|
2147
2327
|
}
|
|
2148
2328
|
if (typeof collection.forEach == 'function') {
|
|
2149
|
-
|
|
2329
|
+
collection.forEach(callback)
|
|
2330
|
+
return collection
|
|
2150
2331
|
}
|
|
2151
2332
|
if (typeof collection[symbolIterator] == 'function') {
|
|
2152
2333
|
return iteratorForEach(collection[symbolIterator](), callback)
|
package/every.js
CHANGED
|
@@ -82,6 +82,12 @@ const _every = function (collection, predicate) {
|
|
|
82
82
|
* ])
|
|
83
83
|
* ```
|
|
84
84
|
*
|
|
85
|
+
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
86
|
+
*
|
|
87
|
+
* ```javascript [playground]
|
|
88
|
+
* every(Promise.resolve([1, 2, 3, 4, 5]), n => n < 6).then(console.log) // true
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
85
91
|
* @execution concurrent
|
|
86
92
|
*
|
|
87
93
|
* @muxing
|
package/filter.js
CHANGED
|
@@ -226,6 +226,15 @@ const _filter = function (value, predicate) {
|
|
|
226
226
|
* }
|
|
227
227
|
* ```
|
|
228
228
|
*
|
|
229
|
+
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
230
|
+
*
|
|
231
|
+
* ```javascript [playground]
|
|
232
|
+
* const isOdd = number => number % 2 == 1
|
|
233
|
+
*
|
|
234
|
+
* filter(Promise.resolve([1, 2, 3, 4, 5]), isOdd).then(console.log)
|
|
235
|
+
* // [1, 3, 5]
|
|
236
|
+
* ```
|
|
237
|
+
*
|
|
229
238
|
* @execution concurrent
|
|
230
239
|
*
|
|
231
240
|
* @transducing
|
package/flatMap.js
CHANGED
|
@@ -157,6 +157,13 @@ const _flatMap = function (value, flatMapper) {
|
|
|
157
157
|
* ) // Set(10) { 1, 101, 2, 102, 3, 103, 4, 104, 5, 105 }
|
|
158
158
|
* ```
|
|
159
159
|
*
|
|
160
|
+
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
161
|
+
*
|
|
162
|
+
* ```javascript [playground]
|
|
163
|
+
* flatMap(Promise.resolve([1, 2, 3, 4, 5]), n => [n, n]).then(console.log)
|
|
164
|
+
* // [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
|
|
165
|
+
* ```
|
|
166
|
+
*
|
|
160
167
|
* @execution concurrent
|
|
161
168
|
*
|
|
162
169
|
* @transducing
|
package/forEach.js
CHANGED
|
@@ -25,7 +25,8 @@ const _forEach = function (collection, callback) {
|
|
|
25
25
|
return collection
|
|
26
26
|
}
|
|
27
27
|
if (typeof collection.forEach == 'function') {
|
|
28
|
-
|
|
28
|
+
collection.forEach(callback)
|
|
29
|
+
return collection
|
|
29
30
|
}
|
|
30
31
|
if (typeof collection[symbolIterator] == 'function') {
|
|
31
32
|
return iteratorForEach(collection[symbolIterator](), callback)
|
|
@@ -71,6 +72,15 @@ const _forEach = function (collection, callback) {
|
|
|
71
72
|
* // 25
|
|
72
73
|
* ])
|
|
73
74
|
* ```
|
|
75
|
+
*
|
|
76
|
+
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
77
|
+
*
|
|
78
|
+
* ```javascript [playground]
|
|
79
|
+
* forEach(Promise.resolve([1, 2, 3]), console.log)
|
|
80
|
+
* // 1
|
|
81
|
+
* // 2
|
|
82
|
+
* // 3
|
|
83
|
+
* ```
|
|
74
84
|
*/
|
|
75
85
|
const forEach = function (arg0, arg1) {
|
|
76
86
|
if (typeof arg0 == 'function') {
|
|
@@ -130,6 +140,15 @@ const _forEachSeries = function (collection, callback) {
|
|
|
130
140
|
*
|
|
131
141
|
* forEach.series({ a: 1, b: 2, c: 3 }, console.log) // 1 2 3
|
|
132
142
|
* ```
|
|
143
|
+
*
|
|
144
|
+
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
145
|
+
*
|
|
146
|
+
* ```javascript [playground]
|
|
147
|
+
* forEach.series(Promise.resolve([1, 2, 3]), console.log)
|
|
148
|
+
* // 1
|
|
149
|
+
* // 2
|
|
150
|
+
* // 3
|
|
151
|
+
* ```
|
|
133
152
|
*/
|
|
134
153
|
forEach.series = function forEachSeries(arg0, arg1) {
|
|
135
154
|
if (typeof arg0 == 'function') {
|
package/get.js
CHANGED
|
@@ -80,6 +80,12 @@ const _get = function (object, path, defaultValue) {
|
|
|
80
80
|
* console.log(get00000BracketNotation([[[[['foo']]]]])) // foo
|
|
81
81
|
* console.log(get00000ArrayNotation([[[[['foo']]]]])) // foo
|
|
82
82
|
* ```
|
|
83
|
+
*
|
|
84
|
+
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
85
|
+
*
|
|
86
|
+
* ```javascript [playground]
|
|
87
|
+
* get(Promise.resolve({ a: 1 }), 'a').then(console.log) // 1
|
|
88
|
+
* ```
|
|
83
89
|
*/
|
|
84
90
|
|
|
85
91
|
const get = function (arg0, arg1, arg2) {
|
package/gt.js
CHANGED
|
@@ -47,6 +47,12 @@ const greaterThan = require('./_internal/greaterThan')
|
|
|
47
47
|
* console.log, // true
|
|
48
48
|
* ])
|
|
49
49
|
* ```
|
|
50
|
+
*
|
|
51
|
+
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
52
|
+
*
|
|
53
|
+
* ```javascript [playground]
|
|
54
|
+
* gt(Promise.resolve({ a: 2, b: 1 }), get('a'), get('b')).then(console.log) // true
|
|
55
|
+
* ```
|
|
50
56
|
*/
|
|
51
57
|
const gt = ComparisonOperator(greaterThan)
|
|
52
58
|
|
package/gte.js
CHANGED
|
@@ -49,6 +49,12 @@ const greaterThanOrEqual = require('./_internal/greaterThanOrEqual')
|
|
|
49
49
|
* console.log, // true
|
|
50
50
|
* ])
|
|
51
51
|
* ```
|
|
52
|
+
*
|
|
53
|
+
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
54
|
+
*
|
|
55
|
+
* ```javascript [playground]
|
|
56
|
+
* gte(Promise.resolve({ a: 1, b: 1 }), get('a'), get('b')).then(console.log) // true
|
|
57
|
+
* ```
|
|
52
58
|
*/
|
|
53
59
|
const gte = ComparisonOperator(greaterThanOrEqual)
|
|
54
60
|
|