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
|
@@ -11,27 +11,26 @@ const promiseRace = require('./promiseRace')
|
|
|
11
11
|
* arrayMapPoolAsync<
|
|
12
12
|
* T any,
|
|
13
13
|
* array Array<T>,
|
|
14
|
-
*
|
|
14
|
+
* f T=>Promise|any,
|
|
15
15
|
* concurrencyLimit number,
|
|
16
16
|
* result Array,
|
|
17
17
|
* index number,
|
|
18
18
|
* promises Set<Promise>,
|
|
19
|
-
* >(array,
|
|
19
|
+
* >(array, f, concurrencyLimit, result, index, promises) -> result
|
|
20
20
|
* ```
|
|
21
21
|
*
|
|
22
22
|
* @description
|
|
23
|
-
* Apply a
|
|
23
|
+
* Apply a function `f` with limited concurrency to each item of an array, returning a Promise of an array of results.
|
|
24
24
|
*/
|
|
25
25
|
const arrayMapPoolAsync = async function (
|
|
26
|
-
array,
|
|
26
|
+
array, f, concurrencyLimit, result, index, promises,
|
|
27
27
|
) {
|
|
28
28
|
const arrayLength = array.length
|
|
29
29
|
while (++index < arrayLength) {
|
|
30
30
|
if (promises.size >= concurrencyLimit) {
|
|
31
31
|
await promiseRace(promises)
|
|
32
32
|
}
|
|
33
|
-
|
|
34
|
-
const resultItem = mapper(array[index])
|
|
33
|
+
const resultItem = f(array[index])
|
|
35
34
|
if (isPromise(resultItem)) {
|
|
36
35
|
const selfDeletingPromise = resultItem.then(
|
|
37
36
|
tapSync(() => promises.delete(selfDeletingPromise)))
|
|
@@ -45,29 +44,22 @@ const arrayMapPoolAsync = async function (
|
|
|
45
44
|
}
|
|
46
45
|
|
|
47
46
|
/**
|
|
48
|
-
* @name
|
|
49
|
-
* arrayMapPool
|
|
47
|
+
* @name arrayMapPool
|
|
50
48
|
*
|
|
51
49
|
* @synopsis
|
|
52
50
|
* ```coffeescript [specscript]
|
|
53
|
-
* arrayMapPool
|
|
54
|
-
* T any,
|
|
55
|
-
* array Array<T>
|
|
56
|
-
* mapper T=>Promise|any,
|
|
57
|
-
* concurrentLimit number,
|
|
58
|
-
* >(array, mapper, concurrentLimit) -> Promise|Array
|
|
51
|
+
* arrayMapPool(array Array, concurrency number, f function) -> Promise|string
|
|
59
52
|
* ```
|
|
60
53
|
*
|
|
61
54
|
* @description
|
|
62
|
-
* Apply a
|
|
55
|
+
* Apply a function `f` with limited concurrency to each item of an array, returning an array of results.
|
|
63
56
|
*/
|
|
64
|
-
const arrayMapPool = function (array,
|
|
57
|
+
const arrayMapPool = function (array, concurrency, f) {
|
|
65
58
|
const arrayLength = array.length,
|
|
66
59
|
result = Array(arrayLength)
|
|
67
60
|
let index = -1
|
|
68
61
|
while (++index < arrayLength) {
|
|
69
|
-
|
|
70
|
-
const resultItem = mapper(array[index])
|
|
62
|
+
const resultItem = f(array[index])
|
|
71
63
|
if (isPromise(resultItem)) {
|
|
72
64
|
const promises = new Set(),
|
|
73
65
|
selfDeletingPromise = resultItem.then(
|
|
@@ -75,7 +67,7 @@ const arrayMapPool = function (array, mapper, concurrentLimit) {
|
|
|
75
67
|
promises.add(selfDeletingPromise)
|
|
76
68
|
result[index] = selfDeletingPromise
|
|
77
69
|
return arrayMapPoolAsync(
|
|
78
|
-
array,
|
|
70
|
+
array, f, concurrency, result, index, promises)
|
|
79
71
|
}
|
|
80
72
|
result[index] = resultItem
|
|
81
73
|
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
const isPromise = require('./isPromise')
|
|
2
|
+
const promiseRace = require('./promiseRace')
|
|
3
|
+
const promiseAll = require('./promiseAll')
|
|
4
|
+
const symbolIterator = require('./symbolIterator')
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @name _mapMapPoolAsync
|
|
8
|
+
*
|
|
9
|
+
* @synopsis
|
|
10
|
+
* ```coffeescript [specscript]
|
|
11
|
+
* _mapMapPoolAsync(
|
|
12
|
+
* m Map,
|
|
13
|
+
* iterator Iterator,
|
|
14
|
+
* concurrency number,
|
|
15
|
+
* f function,
|
|
16
|
+
* result Map,
|
|
17
|
+
* promises Set,
|
|
18
|
+
* ) -> Promise<Map>
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
const _mapMapPoolAsync = async function (
|
|
22
|
+
m, iterator, concurrency, f, result, promises,
|
|
23
|
+
) {
|
|
24
|
+
let iteration = iterator.next()
|
|
25
|
+
while (!iteration.done) {
|
|
26
|
+
if (promises.size >= concurrency) {
|
|
27
|
+
await promiseRace(promises)
|
|
28
|
+
}
|
|
29
|
+
const key = iteration.value[0]
|
|
30
|
+
const resultItem = f(iteration.value[1], key, m)
|
|
31
|
+
if (isPromise(resultItem)) {
|
|
32
|
+
result.set(key, resultItem)
|
|
33
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
34
|
+
promises.delete(selfDeletingPromise)
|
|
35
|
+
result.set(key, resolvedValue)
|
|
36
|
+
})
|
|
37
|
+
promises.add(selfDeletingPromise)
|
|
38
|
+
} else {
|
|
39
|
+
result.set(key, resultItem)
|
|
40
|
+
}
|
|
41
|
+
iteration = iterator.next()
|
|
42
|
+
}
|
|
43
|
+
if (promises.size > 0) {
|
|
44
|
+
await promiseAll(promises)
|
|
45
|
+
}
|
|
46
|
+
return result
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @name mapMapPool
|
|
51
|
+
*
|
|
52
|
+
* @synopsis
|
|
53
|
+
* ```coffeescript [specscript]
|
|
54
|
+
* mapMapPool(m Map, concurrency number, f function) -> Promise|Map
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
const mapMapPool = function (m, concurrency, f) {
|
|
58
|
+
const result = new Map()
|
|
59
|
+
const iterator = m[symbolIterator]()
|
|
60
|
+
let iteration = iterator.next()
|
|
61
|
+
while (!iteration.done) {
|
|
62
|
+
const key = iteration.value[0]
|
|
63
|
+
const resultItem = f(iteration.value[1], key, m)
|
|
64
|
+
if (isPromise(resultItem)) {
|
|
65
|
+
const promises = new Set()
|
|
66
|
+
result.set(key, resultItem)
|
|
67
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
68
|
+
promises.delete(selfDeletingPromise)
|
|
69
|
+
result.set(key, resolvedValue)
|
|
70
|
+
})
|
|
71
|
+
promises.add(selfDeletingPromise)
|
|
72
|
+
return _mapMapPoolAsync(m, iterator, concurrency, f, result, promises)
|
|
73
|
+
}
|
|
74
|
+
result.set(key, resultItem)
|
|
75
|
+
iteration = iterator.next()
|
|
76
|
+
}
|
|
77
|
+
return result
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
module.exports = mapMapPool
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
const isPromise = require('./isPromise')
|
|
2
|
+
const promiseRace = require('./promiseRace')
|
|
3
|
+
const promiseAll = require('./promiseAll')
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @name _objectMapPoolAsync
|
|
7
|
+
*
|
|
8
|
+
* @synopsis
|
|
9
|
+
* ```coffeescript [specscript]
|
|
10
|
+
* _objectMapPoolAsync(
|
|
11
|
+
* o Object,
|
|
12
|
+
* concurrency number,
|
|
13
|
+
* f function,
|
|
14
|
+
* result Object,
|
|
15
|
+
* doneKeys Object,
|
|
16
|
+
* promises Set,
|
|
17
|
+
* ) -> result Promise|Object
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
const _objectMapPoolAsync = async function (
|
|
21
|
+
o, concurrency, f, result, doneKeys, promises,
|
|
22
|
+
) {
|
|
23
|
+
for (const key in o) {
|
|
24
|
+
if (key in doneKeys) {
|
|
25
|
+
continue
|
|
26
|
+
}
|
|
27
|
+
if (promises.size >= concurrency) {
|
|
28
|
+
await promiseRace(promises)
|
|
29
|
+
}
|
|
30
|
+
const resultItem = f(o[key], key, o)
|
|
31
|
+
if (isPromise(resultItem)) {
|
|
32
|
+
result[key] = resultItem
|
|
33
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
34
|
+
promises.delete(selfDeletingPromise)
|
|
35
|
+
result[key] = resolvedValue
|
|
36
|
+
})
|
|
37
|
+
promises.add(selfDeletingPromise)
|
|
38
|
+
} else {
|
|
39
|
+
result[key] = resultItem
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (promises.size > 0) {
|
|
43
|
+
await promiseAll(promises)
|
|
44
|
+
}
|
|
45
|
+
return result
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @name objectMapPool
|
|
50
|
+
*
|
|
51
|
+
* @synopsis
|
|
52
|
+
* ```coffeescript [specscript]
|
|
53
|
+
* objectMapPool(o Object, concurrency number, f function) -> Promise|Object
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
const objectMapPool = function (o, concurrency, f) {
|
|
57
|
+
const result = {}
|
|
58
|
+
const doneKeys = {}
|
|
59
|
+
for (const key in o) {
|
|
60
|
+
doneKeys[key] = true
|
|
61
|
+
const resultItem = f(o[key], key, o)
|
|
62
|
+
if (isPromise(resultItem)) {
|
|
63
|
+
const promises = new Set()
|
|
64
|
+
result[key] = resultItem
|
|
65
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
66
|
+
promises.delete(selfDeletingPromise)
|
|
67
|
+
result[key] = resolvedValue
|
|
68
|
+
})
|
|
69
|
+
promises.add(selfDeletingPromise)
|
|
70
|
+
return _objectMapPoolAsync(o, concurrency, f, result, doneKeys, promises)
|
|
71
|
+
}
|
|
72
|
+
result[key] = resultItem
|
|
73
|
+
}
|
|
74
|
+
return result
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
module.exports = objectMapPool
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const isPromise = require('./isPromise')
|
|
2
|
+
const promiseRace = require('./promiseRace')
|
|
3
|
+
const promiseAll = require('./promiseAll')
|
|
4
|
+
const symbolIterator = require('./symbolIterator')
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @name _setMapPoolAsync
|
|
8
|
+
*
|
|
9
|
+
* @synopsis
|
|
10
|
+
* ```coffeescript [specscript]
|
|
11
|
+
* _setMapPoolAsync(
|
|
12
|
+
* s Set,
|
|
13
|
+
* iterator Iterator,
|
|
14
|
+
* concurrency number,
|
|
15
|
+
* f function,
|
|
16
|
+
* result Set,
|
|
17
|
+
* promises Set,
|
|
18
|
+
* ) -> result Promise<Set>
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
const _setMapPoolAsync = async function (
|
|
22
|
+
s, iterator, concurrency, f, result, promises,
|
|
23
|
+
) {
|
|
24
|
+
let iteration = iterator.next()
|
|
25
|
+
while (!iteration.done) {
|
|
26
|
+
if (promises.size >= concurrency) {
|
|
27
|
+
await promiseRace(promises)
|
|
28
|
+
}
|
|
29
|
+
const resultItem = f(iteration.value, iteration.value, s)
|
|
30
|
+
if (isPromise(resultItem)) {
|
|
31
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
32
|
+
promises.delete(selfDeletingPromise)
|
|
33
|
+
result.add(resolvedValue)
|
|
34
|
+
})
|
|
35
|
+
promises.add(selfDeletingPromise)
|
|
36
|
+
} else {
|
|
37
|
+
result.add(resultItem)
|
|
38
|
+
}
|
|
39
|
+
iteration = iterator.next()
|
|
40
|
+
}
|
|
41
|
+
if (promises.size > 0) {
|
|
42
|
+
await promiseAll(promises)
|
|
43
|
+
}
|
|
44
|
+
return result
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @name setMapPool
|
|
49
|
+
*
|
|
50
|
+
* @synopsis
|
|
51
|
+
* ```coffeescript [specscript]
|
|
52
|
+
* setMapPool(s Set, concurrency number, f function) -> Promise|Set
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* @description
|
|
56
|
+
* Apply a function `f` with limited concurrency to each item of a set `s`, returning an array of results.
|
|
57
|
+
*/
|
|
58
|
+
const setMapPool = function (s, concurrency, f) {
|
|
59
|
+
const result = new Set()
|
|
60
|
+
const iterator = s[symbolIterator]()
|
|
61
|
+
let iteration = iterator.next()
|
|
62
|
+
while (!iteration.done) {
|
|
63
|
+
const resultItem = f(iteration.value, iteration.value, s)
|
|
64
|
+
if (isPromise(resultItem)) {
|
|
65
|
+
const promises = new Set()
|
|
66
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
67
|
+
promises.delete(selfDeletingPromise)
|
|
68
|
+
result.add(resolvedValue)
|
|
69
|
+
})
|
|
70
|
+
promises.add(selfDeletingPromise)
|
|
71
|
+
return _setMapPoolAsync(s, iterator, concurrency, f, result, promises)
|
|
72
|
+
}
|
|
73
|
+
result.add(resultItem)
|
|
74
|
+
iteration = iterator.next()
|
|
75
|
+
}
|
|
76
|
+
return result
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
module.exports = setMapPool
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const isPromise = require('./isPromise')
|
|
2
|
+
const curry3 = require('./curry3')
|
|
3
|
+
const __ = require('./placeholder')
|
|
4
|
+
const callPropUnary = require('./callPropUnary')
|
|
5
|
+
const arrayMapPool = require('./arrayMapPool')
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @name stringMapPool
|
|
9
|
+
*
|
|
10
|
+
* @synopsis
|
|
11
|
+
* ```coffeescript [specscript]
|
|
12
|
+
* stringMapPool(s string, concurrency number, f function) -> Promise|string
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
const stringMapPool = function (s, concurrency, f) {
|
|
16
|
+
const result = arrayMapPool(s, concurrency, f)
|
|
17
|
+
return isPromise(result)
|
|
18
|
+
? result.then(curry3(callPropUnary, __, 'join', ''))
|
|
19
|
+
: result.join('')
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
module.exports = stringMapPool
|
package/all.js
CHANGED
|
@@ -23,7 +23,7 @@ const functionObjectAll = require('./_internal/functionObjectAll')
|
|
|
23
23
|
* ```
|
|
24
24
|
*
|
|
25
25
|
* @description
|
|
26
|
-
* Function executor and composer. Accepts either an array of functions or an object of functions
|
|
26
|
+
* Function executor and composer. Accepts either an array of functions or an object of functions. Calls each function of the provided array or object in parallel with the provided arguments. Returns either an array or object of the execution results.
|
|
27
27
|
*
|
|
28
28
|
* ```javascript [playground]
|
|
29
29
|
* const createArrayOfGreetingsFor = all([
|
|
@@ -72,6 +72,16 @@ const functionObjectAll = require('./_internal/functionObjectAll')
|
|
|
72
72
|
* getAndLogUserById('1') // Got user {"_id":1,"name":"George"} by id 1
|
|
73
73
|
* ```
|
|
74
74
|
*
|
|
75
|
+
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
76
|
+
*
|
|
77
|
+
* ```javascript [playground]
|
|
78
|
+
* all(Promise.resolve({ a: 1 }), [
|
|
79
|
+
* obj => obj.a + 1,
|
|
80
|
+
* obj => obj.a + 2,
|
|
81
|
+
* obj => obj.a + 3,
|
|
82
|
+
* ]).then(console.log) // [2, 3, 4]
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
75
85
|
* @execution concurrent
|
|
76
86
|
*/
|
|
77
87
|
|
package/and.js
CHANGED
|
@@ -131,6 +131,15 @@ const areAllPredicatesTruthy = function (args, predicates) {
|
|
|
131
131
|
* ) // true
|
|
132
132
|
* ```
|
|
133
133
|
*
|
|
134
|
+
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
135
|
+
*
|
|
136
|
+
* ```javascript [playground]
|
|
137
|
+
* and(Promise.resolve(5), [
|
|
138
|
+
* n => n > 0,
|
|
139
|
+
* n => n < 10,
|
|
140
|
+
* ]).then(console.log) // true
|
|
141
|
+
* ```
|
|
142
|
+
*
|
|
134
143
|
* @execution series
|
|
135
144
|
*
|
|
136
145
|
* @note ...args slows down here by an order of magnitude
|
package/assign.js
CHANGED
|
@@ -18,7 +18,7 @@ const _assign = function (object, funcs) {
|
|
|
18
18
|
*
|
|
19
19
|
* @synopsis
|
|
20
20
|
* ```coffeescript [specscript]
|
|
21
|
-
* assign(object Object, resolvers Object<function>) -> result Promise|Object
|
|
21
|
+
* assign(object Promise|Object, resolvers Object<function>) -> result Promise|Object
|
|
22
22
|
*
|
|
23
23
|
* assign(resolvers Object<function>)(object Object) -> result Promise|Object
|
|
24
24
|
* ```
|
|
@@ -55,6 +55,19 @@ const _assign = function (object, funcs) {
|
|
|
55
55
|
* // { numbers: [1, 2, 3, 4, 5], total: 15 }
|
|
56
56
|
* ```
|
|
57
57
|
*
|
|
58
|
+
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
59
|
+
*
|
|
60
|
+
* ```javascript [playground]
|
|
61
|
+
* assign(Promise.resolve({}), {
|
|
62
|
+
* a() {
|
|
63
|
+
* return 1
|
|
64
|
+
* },
|
|
65
|
+
* b() {
|
|
66
|
+
* return 2
|
|
67
|
+
* },
|
|
68
|
+
* }).then(console.log)
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
58
71
|
* @execution concurrent
|
|
59
72
|
*/
|
|
60
73
|
const assign = function (arg0, arg1) {
|
package/compose.js
CHANGED
|
@@ -27,6 +27,14 @@ const funcConcat = require('./_internal/funcConcat')
|
|
|
27
27
|
* compose(5, [f, g]),
|
|
28
28
|
* ) // 16
|
|
29
29
|
* ```
|
|
30
|
+
*
|
|
31
|
+
* Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
|
|
32
|
+
*
|
|
33
|
+
* ```javascript [playground]
|
|
34
|
+
* compose(Promise.resolve(1), 2, Promise.resolve(3), [
|
|
35
|
+
* console.log, // [1, 2, 3]
|
|
36
|
+
* ])
|
|
37
|
+
* ```
|
|
30
38
|
*/
|
|
31
39
|
const compose = function (...args) {
|
|
32
40
|
const funcs = args.pop()
|
package/dist/Transducer.es.js
CHANGED
package/dist/Transducer.js
CHANGED
package/dist/Transducer.min.js
CHANGED
package/dist/Transducer.mjs
CHANGED
package/dist/__.es.js
CHANGED
package/dist/__.es.min.js
CHANGED
package/dist/__.js
CHANGED
package/dist/__.min.js
CHANGED
package/dist/__.mjs
CHANGED
package/dist/all.es.js
CHANGED
package/dist/all.es.min.js
CHANGED
package/dist/all.js
CHANGED
package/dist/all.min.js
CHANGED
package/dist/all.mjs
CHANGED
package/dist/always.es.js
CHANGED
package/dist/always.es.min.js
CHANGED
package/dist/always.js
CHANGED
package/dist/always.min.js
CHANGED
package/dist/always.mjs
CHANGED
package/dist/and.es.js
CHANGED
package/dist/and.es.min.js
CHANGED
package/dist/and.js
CHANGED
package/dist/and.min.js
CHANGED
package/dist/and.mjs
CHANGED
package/dist/assign.es.js
CHANGED
package/dist/assign.es.min.js
CHANGED
package/dist/assign.js
CHANGED
package/dist/assign.min.js
CHANGED