rubico 2.5.0 → 2.6.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/_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 +259 -60
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.global.js +259 -60
- package/dist/rubico.global.min.js +2 -2
- package/dist/rubico.js +259 -60
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.mjs +259 -60
- 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 +100 -14
- package/dist/tap.es.min.js +2 -2
- package/dist/tap.js +100 -14
- package/dist/tap.min.js +2 -2
- package/dist/tap.mjs +100 -14
- 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 +100 -14
- package/dist/x/trace.es.min.js +2 -2
- package/dist/x/trace.js +100 -14
- package/dist/x/trace.min.js +2 -2
- package/dist/x/trace.mjs +100 -14
- 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 +259 -60
- 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 +259 -60
- 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 +75 -26
- package/transform.js +38 -10
- package/tryCatch.js +14 -0
package/dist/x/isFunction.mjs
CHANGED
package/dist/x/isIn.es.js
CHANGED
package/dist/x/isIn.es.min.js
CHANGED
package/dist/x/isIn.js
CHANGED
package/dist/x/isIn.min.js
CHANGED
package/dist/x/isIn.mjs
CHANGED
package/dist/x/isObject.es.js
CHANGED
package/dist/x/isObject.js
CHANGED
package/dist/x/isObject.min.js
CHANGED
package/dist/x/isObject.mjs
CHANGED
package/dist/x/isString.es.js
CHANGED
package/dist/x/isString.js
CHANGED
package/dist/x/isString.min.js
CHANGED
package/dist/x/isString.mjs
CHANGED
package/dist/x/keys.es.js
CHANGED
package/dist/x/keys.es.min.js
CHANGED
package/dist/x/keys.js
CHANGED
package/dist/x/keys.min.js
CHANGED
package/dist/x/keys.mjs
CHANGED
package/dist/x/last.es.js
CHANGED
package/dist/x/last.es.min.js
CHANGED
package/dist/x/last.js
CHANGED
package/dist/x/last.min.js
CHANGED
package/dist/x/last.mjs
CHANGED
package/dist/x/maxBy.es.js
CHANGED
package/dist/x/maxBy.es.min.js
CHANGED
package/dist/x/maxBy.js
CHANGED
package/dist/x/maxBy.min.js
CHANGED
package/dist/x/maxBy.mjs
CHANGED
package/dist/x/noop.es.js
CHANGED
package/dist/x/noop.es.min.js
CHANGED
package/dist/x/noop.js
CHANGED
package/dist/x/noop.min.js
CHANGED
package/dist/x/noop.mjs
CHANGED
package/dist/x/pluck.es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico v2.
|
|
2
|
+
* rubico v2.6.1
|
|
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.
|
|
@@ -74,35 +74,6 @@ const curry2 = function (baseFunc, arg0, arg1) {
|
|
|
74
74
|
: curry2ResolveArg1(baseFunc, arg0)
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
const isArray = Array.isArray
|
|
78
|
-
|
|
79
|
-
const isObject = value => {
|
|
80
|
-
if (value == null) {
|
|
81
|
-
return false
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const typeofValue = typeof value
|
|
85
|
-
return (typeofValue == 'object') || (typeofValue == 'function')
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const promiseAll = Promise.all.bind(Promise)
|
|
89
|
-
|
|
90
|
-
const arrayMap = function (array, mapper) {
|
|
91
|
-
const arrayLength = array.length,
|
|
92
|
-
result = Array(arrayLength)
|
|
93
|
-
let index = -1,
|
|
94
|
-
isAsync = false
|
|
95
|
-
|
|
96
|
-
while (++index < arrayLength) {
|
|
97
|
-
const resultItem = mapper(array[index], index, array)
|
|
98
|
-
if (isPromise(resultItem)) {
|
|
99
|
-
isAsync = true
|
|
100
|
-
}
|
|
101
|
-
result[index] = resultItem
|
|
102
|
-
}
|
|
103
|
-
return isAsync ? promiseAll(result) : result
|
|
104
|
-
}
|
|
105
|
-
|
|
106
77
|
// argument resolver for curry3
|
|
107
78
|
const curry3ResolveArg0 = (
|
|
108
79
|
baseFunc, arg1, arg2,
|
|
@@ -134,6 +105,35 @@ const curry3 = function (baseFunc, arg0, arg1, arg2) {
|
|
|
134
105
|
return curry3ResolveArg2(baseFunc, arg0, arg1)
|
|
135
106
|
}
|
|
136
107
|
|
|
108
|
+
const isArray = Array.isArray
|
|
109
|
+
|
|
110
|
+
const isObject = value => {
|
|
111
|
+
if (value == null) {
|
|
112
|
+
return false
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const typeofValue = typeof value
|
|
116
|
+
return (typeofValue == 'object') || (typeofValue == 'function')
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const promiseAll = Promise.all.bind(Promise)
|
|
120
|
+
|
|
121
|
+
const arrayMap = function (array, mapper) {
|
|
122
|
+
const arrayLength = array.length,
|
|
123
|
+
result = Array(arrayLength)
|
|
124
|
+
let index = -1,
|
|
125
|
+
isAsync = false
|
|
126
|
+
|
|
127
|
+
while (++index < arrayLength) {
|
|
128
|
+
const resultItem = mapper(array[index], index, array)
|
|
129
|
+
if (isPromise(resultItem)) {
|
|
130
|
+
isAsync = true
|
|
131
|
+
}
|
|
132
|
+
result[index] = resultItem
|
|
133
|
+
}
|
|
134
|
+
return isAsync ? promiseAll(result) : result
|
|
135
|
+
}
|
|
136
|
+
|
|
137
137
|
const callPropUnary = (value, property, arg0) => value[property](arg0)
|
|
138
138
|
|
|
139
139
|
const stringMap = function (string, mapper) {
|
|
@@ -335,6 +335,7 @@ const objectMapSeries = function (object, f) {
|
|
|
335
335
|
thunkify4(_objectMapSeriesAsync, object, f, result, doneKeys),
|
|
336
336
|
))
|
|
337
337
|
}
|
|
338
|
+
result[key] = resultItem
|
|
338
339
|
}
|
|
339
340
|
return result
|
|
340
341
|
}
|
|
@@ -433,15 +434,14 @@ const tapSync = func => function tapping(...args) {
|
|
|
433
434
|
const promiseRace = Promise.race.bind(Promise)
|
|
434
435
|
|
|
435
436
|
const arrayMapPoolAsync = async function (
|
|
436
|
-
array,
|
|
437
|
+
array, f, concurrencyLimit, result, index, promises,
|
|
437
438
|
) {
|
|
438
439
|
const arrayLength = array.length
|
|
439
440
|
while (++index < arrayLength) {
|
|
440
441
|
if (promises.size >= concurrencyLimit) {
|
|
441
442
|
await promiseRace(promises)
|
|
442
443
|
}
|
|
443
|
-
|
|
444
|
-
const resultItem = mapper(array[index])
|
|
444
|
+
const resultItem = f(array[index])
|
|
445
445
|
if (isPromise(resultItem)) {
|
|
446
446
|
const selfDeletingPromise = resultItem.then(
|
|
447
447
|
tapSync(() => promises.delete(selfDeletingPromise)))
|
|
@@ -454,13 +454,12 @@ const arrayMapPoolAsync = async function (
|
|
|
454
454
|
return promiseAll(result)
|
|
455
455
|
}
|
|
456
456
|
|
|
457
|
-
const arrayMapPool = function (array,
|
|
457
|
+
const arrayMapPool = function (array, concurrency, f) {
|
|
458
458
|
const arrayLength = array.length,
|
|
459
459
|
result = Array(arrayLength)
|
|
460
460
|
let index = -1
|
|
461
461
|
while (++index < arrayLength) {
|
|
462
|
-
|
|
463
|
-
const resultItem = mapper(array[index])
|
|
462
|
+
const resultItem = f(array[index])
|
|
464
463
|
if (isPromise(resultItem)) {
|
|
465
464
|
const promises = new Set(),
|
|
466
465
|
selfDeletingPromise = resultItem.then(
|
|
@@ -468,13 +467,167 @@ const arrayMapPool = function (array, mapper, concurrentLimit) {
|
|
|
468
467
|
promises.add(selfDeletingPromise)
|
|
469
468
|
result[index] = selfDeletingPromise
|
|
470
469
|
return arrayMapPoolAsync(
|
|
471
|
-
array,
|
|
470
|
+
array, f, concurrency, result, index, promises)
|
|
472
471
|
}
|
|
473
472
|
result[index] = resultItem
|
|
474
473
|
}
|
|
475
474
|
return result
|
|
476
475
|
}
|
|
477
476
|
|
|
477
|
+
const stringMapPool = function (s, concurrency, f) {
|
|
478
|
+
const result = arrayMapPool(s, concurrency, f)
|
|
479
|
+
return isPromise(result)
|
|
480
|
+
? result.then(curry3(callPropUnary, __, 'join', ''))
|
|
481
|
+
: result.join('')
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
const _setMapPoolAsync = async function (
|
|
485
|
+
s, iterator, concurrency, f, result, promises,
|
|
486
|
+
) {
|
|
487
|
+
let iteration = iterator.next()
|
|
488
|
+
while (!iteration.done) {
|
|
489
|
+
if (promises.size >= concurrency) {
|
|
490
|
+
await promiseRace(promises)
|
|
491
|
+
}
|
|
492
|
+
const resultItem = f(iteration.value, iteration.value, s)
|
|
493
|
+
if (isPromise(resultItem)) {
|
|
494
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
495
|
+
promises.delete(selfDeletingPromise)
|
|
496
|
+
result.add(resolvedValue)
|
|
497
|
+
})
|
|
498
|
+
promises.add(selfDeletingPromise)
|
|
499
|
+
} else {
|
|
500
|
+
result.add(resultItem)
|
|
501
|
+
}
|
|
502
|
+
iteration = iterator.next()
|
|
503
|
+
}
|
|
504
|
+
if (promises.size > 0) {
|
|
505
|
+
await promiseAll(promises)
|
|
506
|
+
}
|
|
507
|
+
return result
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
const setMapPool = function (s, concurrency, f) {
|
|
511
|
+
const result = new Set()
|
|
512
|
+
const iterator = s[symbolIterator]()
|
|
513
|
+
let iteration = iterator.next()
|
|
514
|
+
while (!iteration.done) {
|
|
515
|
+
const resultItem = f(iteration.value, iteration.value, s)
|
|
516
|
+
if (isPromise(resultItem)) {
|
|
517
|
+
const promises = new Set()
|
|
518
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
519
|
+
promises.delete(selfDeletingPromise)
|
|
520
|
+
result.add(resolvedValue)
|
|
521
|
+
})
|
|
522
|
+
promises.add(selfDeletingPromise)
|
|
523
|
+
return _setMapPoolAsync(s, iterator, concurrency, f, result, promises)
|
|
524
|
+
}
|
|
525
|
+
result.add(resultItem)
|
|
526
|
+
iteration = iterator.next()
|
|
527
|
+
}
|
|
528
|
+
return result
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
const _mapMapPoolAsync = async function (
|
|
532
|
+
m, iterator, concurrency, f, result, promises,
|
|
533
|
+
) {
|
|
534
|
+
let iteration = iterator.next()
|
|
535
|
+
while (!iteration.done) {
|
|
536
|
+
if (promises.size >= concurrency) {
|
|
537
|
+
await promiseRace(promises)
|
|
538
|
+
}
|
|
539
|
+
const key = iteration.value[0]
|
|
540
|
+
const resultItem = f(iteration.value[1], key, m)
|
|
541
|
+
if (isPromise(resultItem)) {
|
|
542
|
+
result.set(key, resultItem)
|
|
543
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
544
|
+
promises.delete(selfDeletingPromise)
|
|
545
|
+
result.set(key, resolvedValue)
|
|
546
|
+
})
|
|
547
|
+
promises.add(selfDeletingPromise)
|
|
548
|
+
} else {
|
|
549
|
+
result.set(key, resultItem)
|
|
550
|
+
}
|
|
551
|
+
iteration = iterator.next()
|
|
552
|
+
}
|
|
553
|
+
if (promises.size > 0) {
|
|
554
|
+
await promiseAll(promises)
|
|
555
|
+
}
|
|
556
|
+
return result
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
const mapMapPool = function (m, concurrency, f) {
|
|
560
|
+
const result = new Map()
|
|
561
|
+
const iterator = m[symbolIterator]()
|
|
562
|
+
let iteration = iterator.next()
|
|
563
|
+
while (!iteration.done) {
|
|
564
|
+
const key = iteration.value[0]
|
|
565
|
+
const resultItem = f(iteration.value[1], key, m)
|
|
566
|
+
if (isPromise(resultItem)) {
|
|
567
|
+
const promises = new Set()
|
|
568
|
+
result.set(key, resultItem)
|
|
569
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
570
|
+
promises.delete(selfDeletingPromise)
|
|
571
|
+
result.set(key, resolvedValue)
|
|
572
|
+
})
|
|
573
|
+
promises.add(selfDeletingPromise)
|
|
574
|
+
return _mapMapPoolAsync(m, iterator, concurrency, f, result, promises)
|
|
575
|
+
}
|
|
576
|
+
result.set(key, resultItem)
|
|
577
|
+
iteration = iterator.next()
|
|
578
|
+
}
|
|
579
|
+
return result
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
const _objectMapPoolAsync = async function (
|
|
583
|
+
o, concurrency, f, result, doneKeys, promises,
|
|
584
|
+
) {
|
|
585
|
+
for (const key in o) {
|
|
586
|
+
if (key in doneKeys) {
|
|
587
|
+
continue
|
|
588
|
+
}
|
|
589
|
+
if (promises.size >= concurrency) {
|
|
590
|
+
await promiseRace(promises)
|
|
591
|
+
}
|
|
592
|
+
const resultItem = f(o[key], key, o)
|
|
593
|
+
if (isPromise(resultItem)) {
|
|
594
|
+
result[key] = resultItem
|
|
595
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
596
|
+
promises.delete(selfDeletingPromise)
|
|
597
|
+
result[key] = resolvedValue
|
|
598
|
+
})
|
|
599
|
+
promises.add(selfDeletingPromise)
|
|
600
|
+
} else {
|
|
601
|
+
result[key] = resultItem
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
if (promises.size > 0) {
|
|
605
|
+
await promiseAll(promises)
|
|
606
|
+
}
|
|
607
|
+
return result
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
const objectMapPool = function (o, concurrency, f) {
|
|
611
|
+
const result = {}
|
|
612
|
+
const doneKeys = {}
|
|
613
|
+
for (const key in o) {
|
|
614
|
+
doneKeys[key] = true
|
|
615
|
+
const resultItem = f(o[key], key, o)
|
|
616
|
+
if (isPromise(resultItem)) {
|
|
617
|
+
const promises = new Set()
|
|
618
|
+
result[key] = resultItem
|
|
619
|
+
const selfDeletingPromise = resultItem.then(resolvedValue => {
|
|
620
|
+
promises.delete(selfDeletingPromise)
|
|
621
|
+
result[key] = resolvedValue
|
|
622
|
+
})
|
|
623
|
+
promises.add(selfDeletingPromise)
|
|
624
|
+
return _objectMapPoolAsync(o, concurrency, f, result, doneKeys, promises)
|
|
625
|
+
}
|
|
626
|
+
result[key] = resultItem
|
|
627
|
+
}
|
|
628
|
+
return result
|
|
629
|
+
}
|
|
630
|
+
|
|
478
631
|
const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
|
|
479
632
|
const argsLength = args.length,
|
|
480
633
|
curriedArgsLength = curriedArgs.length,
|
|
@@ -610,7 +763,7 @@ const _map = function (value, mapper) {
|
|
|
610
763
|
}
|
|
611
764
|
|
|
612
765
|
const map = function (arg0, arg1) {
|
|
613
|
-
if (
|
|
766
|
+
if (arg1 == null) {
|
|
614
767
|
return curry2(_map, __, arg0)
|
|
615
768
|
}
|
|
616
769
|
return isPromise(arg0)
|
|
@@ -633,7 +786,7 @@ const _mapEntries = (value, mapper) => {
|
|
|
633
786
|
}
|
|
634
787
|
|
|
635
788
|
map.entries = function mapEntries(arg0, arg1) {
|
|
636
|
-
if (
|
|
789
|
+
if (arg1 == null) {
|
|
637
790
|
return curry2(_mapEntries, __, arg0)
|
|
638
791
|
}
|
|
639
792
|
return isPromise(arg0)
|
|
@@ -665,7 +818,7 @@ const _mapSeries = function (collection, f) {
|
|
|
665
818
|
}
|
|
666
819
|
|
|
667
820
|
map.series = function mapSeries(arg0, arg1) {
|
|
668
|
-
if (
|
|
821
|
+
if (arg1 == null) {
|
|
669
822
|
return curry2(_mapSeries, __, arg0)
|
|
670
823
|
}
|
|
671
824
|
return isPromise(arg0)
|
|
@@ -673,11 +826,35 @@ map.series = function mapSeries(arg0, arg1) {
|
|
|
673
826
|
: _mapSeries(arg0, arg1)
|
|
674
827
|
}
|
|
675
828
|
|
|
676
|
-
|
|
677
|
-
if (isArray(
|
|
678
|
-
return arrayMapPool(
|
|
829
|
+
const _mapPool = function (collection, concurrency, f) {
|
|
830
|
+
if (isArray(collection)) {
|
|
831
|
+
return arrayMapPool(collection, concurrency, f)
|
|
679
832
|
}
|
|
680
|
-
|
|
833
|
+
if (collection == null) {
|
|
834
|
+
throw new TypeError(`invalid collection ${collection}`)
|
|
835
|
+
}
|
|
836
|
+
if (typeof collection == 'string' || collection.constructor == String) {
|
|
837
|
+
return stringMapPool(collection, concurrency, f)
|
|
838
|
+
}
|
|
839
|
+
if (collection.constructor == Set) {
|
|
840
|
+
return setMapPool(collection, concurrency, f)
|
|
841
|
+
}
|
|
842
|
+
if (collection.constructor == Map) {
|
|
843
|
+
return mapMapPool(collection, concurrency, f)
|
|
844
|
+
}
|
|
845
|
+
if (collection.constructor == Object) {
|
|
846
|
+
return objectMapPool(collection, concurrency, f)
|
|
847
|
+
}
|
|
848
|
+
throw new TypeError(`invalid collection ${collection}`)
|
|
849
|
+
}
|
|
850
|
+
|
|
851
|
+
map.pool = function mapPool(arg0, arg1, arg2) {
|
|
852
|
+
if (arg2 == null) {
|
|
853
|
+
return curry3(_mapPool, __, arg0, arg1)
|
|
854
|
+
}
|
|
855
|
+
return isPromise(arg0)
|
|
856
|
+
? arg0.then(curry3(_mapPool, __, arg1, arg2))
|
|
857
|
+
: _mapPool(arg0, arg1, arg2)
|
|
681
858
|
}
|
|
682
859
|
|
|
683
860
|
const memoizeCappedUnary = function (func, cap) {
|