rubico 2.6.1 → 2.6.2
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/areAllValuesNonfunctions.js +16 -4
- package/_internal/areAnyValuesPromises.js +16 -4
- package/_internal/functionArrayAll.js +2 -1
- package/_internal/functionObjectAll.js +2 -1
- package/all.js +101 -22
- package/assign.js +19 -3
- 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 +107 -8
- package/dist/all.es.min.js +2 -2
- package/dist/all.js +107 -8
- package/dist/all.min.js +2 -2
- package/dist/all.mjs +107 -8
- 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 +30 -9
- package/dist/and.es.min.js +2 -2
- package/dist/and.js +30 -9
- package/dist/and.min.js +2 -2
- package/dist/and.mjs +30 -9
- package/dist/assign.es.js +3 -2
- package/dist/assign.es.min.js +2 -2
- package/dist/assign.js +3 -2
- package/dist/assign.min.js +2 -2
- package/dist/assign.mjs +3 -2
- package/dist/compose.es.js +17 -5
- package/dist/compose.es.min.js +2 -2
- package/dist/compose.js +17 -5
- package/dist/compose.min.js +2 -2
- package/dist/compose.mjs +17 -5
- 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 +17 -5
- package/dist/eq.es.min.js +2 -2
- package/dist/eq.js +17 -5
- package/dist/eq.min.js +2 -2
- package/dist/eq.mjs +17 -5
- package/dist/every.es.js +1 -1
- package/dist/every.es.min.js +1 -1
- package/dist/every.js +1 -1
- package/dist/every.min.js +1 -1
- package/dist/every.mjs +1 -1
- package/dist/filter.es.js +1 -1
- package/dist/filter.es.min.js +1 -1
- package/dist/filter.js +1 -1
- package/dist/filter.min.js +1 -1
- package/dist/filter.mjs +1 -1
- package/dist/flatMap.es.js +1 -1
- package/dist/flatMap.es.min.js +1 -1
- package/dist/flatMap.js +1 -1
- package/dist/flatMap.min.js +1 -1
- package/dist/flatMap.mjs +1 -1
- package/dist/forEach.es.js +1 -1
- package/dist/forEach.es.min.js +1 -1
- package/dist/forEach.js +1 -1
- package/dist/forEach.min.js +1 -1
- package/dist/forEach.mjs +1 -1
- package/dist/get.es.js +1 -1
- package/dist/get.es.min.js +1 -1
- package/dist/get.js +1 -1
- package/dist/get.min.js +1 -1
- package/dist/get.mjs +1 -1
- package/dist/gt.es.js +17 -5
- package/dist/gt.es.min.js +2 -2
- package/dist/gt.js +17 -5
- package/dist/gt.min.js +2 -2
- package/dist/gt.mjs +17 -5
- package/dist/gte.es.js +17 -5
- package/dist/gte.es.min.js +2 -2
- package/dist/gte.js +17 -5
- package/dist/gte.min.js +2 -2
- package/dist/gte.mjs +17 -5
- package/dist/lt.es.js +17 -5
- package/dist/lt.es.min.js +2 -2
- package/dist/lt.js +17 -5
- package/dist/lt.min.js +2 -2
- package/dist/lt.mjs +17 -5
- package/dist/lte.es.js +17 -5
- package/dist/lte.es.min.js +2 -2
- package/dist/lte.js +17 -5
- package/dist/lte.min.js +2 -2
- package/dist/lte.mjs +17 -5
- package/dist/map.es.js +1 -1
- package/dist/map.es.min.js +1 -1
- package/dist/map.js +1 -1
- package/dist/map.min.js +1 -1
- package/dist/map.mjs +1 -1
- package/dist/not.es.js +17 -5
- package/dist/not.es.min.js +2 -2
- package/dist/not.js +17 -5
- package/dist/not.min.js +2 -2
- package/dist/not.mjs +17 -5
- 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 +30 -9
- package/dist/or.es.min.js +2 -2
- package/dist/or.js +30 -9
- package/dist/or.min.js +2 -2
- package/dist/or.mjs +30 -9
- 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 +17 -5
- package/dist/pipe.es.min.js +2 -2
- package/dist/pipe.js +17 -5
- package/dist/pipe.min.js +2 -2
- package/dist/pipe.mjs +17 -5
- 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 +107 -44
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.global.js +107 -44
- package/dist/rubico.global.min.js +2 -2
- package/dist/rubico.js +107 -44
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.mjs +107 -44
- 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 +30 -9
- package/dist/switchCase.es.min.js +2 -2
- package/dist/switchCase.js +30 -9
- package/dist/switchCase.min.js +2 -2
- package/dist/switchCase.mjs +30 -9
- package/dist/tap.es.js +17 -5
- package/dist/tap.es.min.js +2 -2
- package/dist/tap.js +17 -5
- package/dist/tap.min.js +2 -2
- package/dist/tap.mjs +17 -5
- package/dist/thunkify.es.js +17 -5
- package/dist/thunkify.es.min.js +2 -2
- package/dist/thunkify.js +17 -5
- package/dist/thunkify.min.js +2 -2
- package/dist/thunkify.mjs +17 -5
- 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 +17 -5
- package/dist/tryCatch.es.min.js +2 -2
- package/dist/tryCatch.js +17 -5
- package/dist/tryCatch.min.js +2 -2
- package/dist/tryCatch.mjs +17 -5
- 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 +15 -5
- package/dist/x/filterOut.es.min.js +2 -2
- package/dist/x/filterOut.js +15 -5
- package/dist/x/filterOut.min.js +2 -2
- package/dist/x/filterOut.mjs +15 -5
- 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 +1 -1
- package/dist/x/pluck.es.min.js +1 -1
- package/dist/x/pluck.js +1 -1
- package/dist/x/pluck.min.js +1 -1
- package/dist/x/pluck.mjs +1 -1
- package/dist/x/prepend.es.js +1 -1
- package/dist/x/prepend.es.min.js +1 -1
- package/dist/x/prepend.js +1 -1
- package/dist/x/prepend.min.js +1 -1
- package/dist/x/prepend.mjs +1 -1
- package/dist/x/size.es.js +1 -1
- package/dist/x/size.es.min.js +1 -1
- package/dist/x/size.js +1 -1
- package/dist/x/size.min.js +1 -1
- package/dist/x/size.mjs +1 -1
- package/dist/x/trace.es.js +17 -5
- package/dist/x/trace.es.min.js +2 -2
- package/dist/x/trace.js +17 -5
- package/dist/x/trace.min.js +2 -2
- package/dist/x/trace.mjs +17 -5
- 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/es.js +107 -44
- package/index.js +107 -44
- package/package.json +1 -1
package/es.js
CHANGED
|
@@ -1,17 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico v2.6.
|
|
2
|
+
* rubico v2.6.2
|
|
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.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
const isArray = Array.isArray
|
|
9
|
+
|
|
8
10
|
const isPromise = value => value != null && typeof value.then == 'function'
|
|
9
11
|
|
|
10
12
|
const areAnyValuesPromises = function (values) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
if (isArray(values)) {
|
|
14
|
+
const length = values.length
|
|
15
|
+
let index = -1
|
|
16
|
+
while (++index < length) {
|
|
17
|
+
const value = values[index]
|
|
18
|
+
if (isPromise(value)) {
|
|
19
|
+
return true
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return false
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
for (const key in values) {
|
|
26
|
+
const value = values[key]
|
|
15
27
|
if (isPromise(value)) {
|
|
16
28
|
return true
|
|
17
29
|
}
|
|
@@ -228,14 +240,58 @@ tap.if = function (...args) {
|
|
|
228
240
|
return _tapIf(predicate, f, args)
|
|
229
241
|
}
|
|
230
242
|
|
|
231
|
-
const
|
|
243
|
+
const areAllValuesNonfunctions = function (values) {
|
|
244
|
+
if (isArray(values)) {
|
|
245
|
+
const length = values.length
|
|
246
|
+
let index = -1
|
|
247
|
+
while (++index < length) {
|
|
248
|
+
if (typeof values[index] == 'function') {
|
|
249
|
+
return false
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return true
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
for (const key in values) {
|
|
256
|
+
if (typeof values[key] == 'function') {
|
|
257
|
+
return false
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return true
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
const promiseObjectAllExecutor = object => function executor(resolve) {
|
|
264
|
+
const result = {}
|
|
265
|
+
let numPromises = 0
|
|
266
|
+
for (const key in object) {
|
|
267
|
+
const value = object[key]
|
|
268
|
+
if (isPromise(value)) {
|
|
269
|
+
numPromises += 1
|
|
270
|
+
value.then((key => function (res) {
|
|
271
|
+
result[key] = res
|
|
272
|
+
numPromises -= 1
|
|
273
|
+
if (numPromises == 0) {
|
|
274
|
+
resolve(result)
|
|
275
|
+
}
|
|
276
|
+
})(key))
|
|
277
|
+
} else {
|
|
278
|
+
result[key] = value
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
if (numPromises == 0) {
|
|
282
|
+
resolve(result)
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
const promiseObjectAll = object => new Promise(promiseObjectAllExecutor(object))
|
|
232
287
|
|
|
233
288
|
const functionArrayAll = function (funcs, args) {
|
|
234
289
|
const funcsLength = funcs.length,
|
|
235
290
|
result = Array(funcsLength)
|
|
236
291
|
let funcsIndex = -1, isAsync = false
|
|
237
292
|
while (++funcsIndex < funcsLength) {
|
|
238
|
-
const
|
|
293
|
+
const f = funcs[funcsIndex]
|
|
294
|
+
const resultItem = typeof f == 'function' ? f(...args) : f
|
|
239
295
|
if (isPromise(resultItem)) {
|
|
240
296
|
isAsync = true
|
|
241
297
|
}
|
|
@@ -317,7 +373,8 @@ const functionArrayAllSeries = function (funcs, args) {
|
|
|
317
373
|
const functionObjectAll = function (funcs, args) {
|
|
318
374
|
const result = {}, promises = []
|
|
319
375
|
for (const key in funcs) {
|
|
320
|
-
const
|
|
376
|
+
const f = funcs[key]
|
|
377
|
+
const resultItem = typeof f == 'function' ? f(...args) : f
|
|
321
378
|
if (isPromise(resultItem)) {
|
|
322
379
|
promises.push(resultItem.then(curry3(objectSet, result, key, __)))
|
|
323
380
|
} else {
|
|
@@ -327,7 +384,48 @@ const functionObjectAll = function (funcs, args) {
|
|
|
327
384
|
return promises.length == 0 ? result : promiseAll(promises).then(always(result))
|
|
328
385
|
}
|
|
329
386
|
|
|
387
|
+
const _allValues = function (values) {
|
|
388
|
+
if (isArray(values)) {
|
|
389
|
+
return areAnyValuesPromises(values)
|
|
390
|
+
? promiseAll(values)
|
|
391
|
+
: values
|
|
392
|
+
}
|
|
393
|
+
return areAnyValuesPromises(values)
|
|
394
|
+
? promiseObjectAll(values)
|
|
395
|
+
: values
|
|
396
|
+
}
|
|
397
|
+
|
|
330
398
|
const all = function (...args) {
|
|
399
|
+
if (args.length == 1) {
|
|
400
|
+
const resolversOrValues = args[0]
|
|
401
|
+
if (isPromise(resolversOrValues)) {
|
|
402
|
+
return resolversOrValues.then(_allValues)
|
|
403
|
+
}
|
|
404
|
+
if (areAllValuesNonfunctions(resolversOrValues)) {
|
|
405
|
+
return _allValues(resolversOrValues)
|
|
406
|
+
}
|
|
407
|
+
return isArray(resolversOrValues)
|
|
408
|
+
? curryArgs2(functionArrayAll, resolversOrValues, __)
|
|
409
|
+
: curryArgs2(functionObjectAll, resolversOrValues, __)
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
const resolversOrValues = args[args.length - 1]
|
|
413
|
+
const argValues = args.slice(0, -1)
|
|
414
|
+
|
|
415
|
+
if (areAnyValuesPromises(argValues)) {
|
|
416
|
+
return isArray(resolversOrValues)
|
|
417
|
+
? promiseAll(argValues)
|
|
418
|
+
.then(curry2(functionArrayAll, resolversOrValues, __))
|
|
419
|
+
: promiseAll(argValues)
|
|
420
|
+
.then(curry2(functionObjectAll, resolversOrValues, __))
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
return isArray(resolversOrValues)
|
|
424
|
+
? functionArrayAll(resolversOrValues, argValues)
|
|
425
|
+
: functionObjectAll(resolversOrValues, argValues)
|
|
426
|
+
|
|
427
|
+
/*
|
|
428
|
+
////////////////////////////////////////////////////////////////
|
|
331
429
|
const funcs = args.pop()
|
|
332
430
|
if (args.length == 0) {
|
|
333
431
|
return isArray(funcs)
|
|
@@ -344,6 +442,7 @@ const all = function (...args) {
|
|
|
344
442
|
return isArray(funcs)
|
|
345
443
|
? functionArrayAll(funcs, args)
|
|
346
444
|
: functionObjectAll(funcs, args)
|
|
445
|
+
*/
|
|
347
446
|
}
|
|
348
447
|
|
|
349
448
|
all.series = function allSeries(...args) {
|
|
@@ -454,17 +553,6 @@ const arrayConditional = function (array, args, funcsIndex) {
|
|
|
454
553
|
: defaultResolverOrValue
|
|
455
554
|
}
|
|
456
555
|
|
|
457
|
-
const areAllValuesNonfunctions = function (values) {
|
|
458
|
-
const length = values.length
|
|
459
|
-
let index = -1
|
|
460
|
-
while (++index < length) {
|
|
461
|
-
if (typeof values[index] == 'function') {
|
|
462
|
-
return false
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
return true
|
|
466
|
-
}
|
|
467
|
-
|
|
468
556
|
const thunkify2 = (func, arg0, arg1) => function thunk() {
|
|
469
557
|
return func(arg0, arg1)
|
|
470
558
|
}
|
|
@@ -613,31 +701,6 @@ const mapMap = function (value, mapper) {
|
|
|
613
701
|
: promiseAll(promises).then(always(result))
|
|
614
702
|
}
|
|
615
703
|
|
|
616
|
-
const promiseObjectAllExecutor = object => function executor(resolve) {
|
|
617
|
-
const result = {}
|
|
618
|
-
let numPromises = 0
|
|
619
|
-
for (const key in object) {
|
|
620
|
-
const value = object[key]
|
|
621
|
-
if (isPromise(value)) {
|
|
622
|
-
numPromises += 1
|
|
623
|
-
value.then((key => function (res) {
|
|
624
|
-
result[key] = res
|
|
625
|
-
numPromises -= 1
|
|
626
|
-
if (numPromises == 0) {
|
|
627
|
-
resolve(result)
|
|
628
|
-
}
|
|
629
|
-
})(key))
|
|
630
|
-
} else {
|
|
631
|
-
result[key] = value
|
|
632
|
-
}
|
|
633
|
-
}
|
|
634
|
-
if (numPromises == 0) {
|
|
635
|
-
resolve(result)
|
|
636
|
-
}
|
|
637
|
-
}
|
|
638
|
-
|
|
639
|
-
const promiseObjectAll = object => new Promise(promiseObjectAllExecutor(object))
|
|
640
|
-
|
|
641
704
|
const objectMap = function (object, mapper) {
|
|
642
705
|
const result = {}
|
|
643
706
|
let isAsync = false
|
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico v2.6.
|
|
2
|
+
* rubico v2.6.2
|
|
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.
|
|
@@ -11,13 +11,25 @@
|
|
|
11
11
|
else (root.rubico = rubico) // Browser
|
|
12
12
|
}(typeof globalThis == 'object' ? globalThis : this, (function () { 'use strict'
|
|
13
13
|
|
|
14
|
+
const isArray = Array.isArray
|
|
15
|
+
|
|
14
16
|
const isPromise = value => value != null && typeof value.then == 'function'
|
|
15
17
|
|
|
16
18
|
const areAnyValuesPromises = function (values) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
if (isArray(values)) {
|
|
20
|
+
const length = values.length
|
|
21
|
+
let index = -1
|
|
22
|
+
while (++index < length) {
|
|
23
|
+
const value = values[index]
|
|
24
|
+
if (isPromise(value)) {
|
|
25
|
+
return true
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return false
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
for (const key in values) {
|
|
32
|
+
const value = values[key]
|
|
21
33
|
if (isPromise(value)) {
|
|
22
34
|
return true
|
|
23
35
|
}
|
|
@@ -234,14 +246,58 @@ tap.if = function (...args) {
|
|
|
234
246
|
return _tapIf(predicate, f, args)
|
|
235
247
|
}
|
|
236
248
|
|
|
237
|
-
const
|
|
249
|
+
const areAllValuesNonfunctions = function (values) {
|
|
250
|
+
if (isArray(values)) {
|
|
251
|
+
const length = values.length
|
|
252
|
+
let index = -1
|
|
253
|
+
while (++index < length) {
|
|
254
|
+
if (typeof values[index] == 'function') {
|
|
255
|
+
return false
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return true
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
for (const key in values) {
|
|
262
|
+
if (typeof values[key] == 'function') {
|
|
263
|
+
return false
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return true
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
const promiseObjectAllExecutor = object => function executor(resolve) {
|
|
270
|
+
const result = {}
|
|
271
|
+
let numPromises = 0
|
|
272
|
+
for (const key in object) {
|
|
273
|
+
const value = object[key]
|
|
274
|
+
if (isPromise(value)) {
|
|
275
|
+
numPromises += 1
|
|
276
|
+
value.then((key => function (res) {
|
|
277
|
+
result[key] = res
|
|
278
|
+
numPromises -= 1
|
|
279
|
+
if (numPromises == 0) {
|
|
280
|
+
resolve(result)
|
|
281
|
+
}
|
|
282
|
+
})(key))
|
|
283
|
+
} else {
|
|
284
|
+
result[key] = value
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (numPromises == 0) {
|
|
288
|
+
resolve(result)
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
const promiseObjectAll = object => new Promise(promiseObjectAllExecutor(object))
|
|
238
293
|
|
|
239
294
|
const functionArrayAll = function (funcs, args) {
|
|
240
295
|
const funcsLength = funcs.length,
|
|
241
296
|
result = Array(funcsLength)
|
|
242
297
|
let funcsIndex = -1, isAsync = false
|
|
243
298
|
while (++funcsIndex < funcsLength) {
|
|
244
|
-
const
|
|
299
|
+
const f = funcs[funcsIndex]
|
|
300
|
+
const resultItem = typeof f == 'function' ? f(...args) : f
|
|
245
301
|
if (isPromise(resultItem)) {
|
|
246
302
|
isAsync = true
|
|
247
303
|
}
|
|
@@ -323,7 +379,8 @@ const functionArrayAllSeries = function (funcs, args) {
|
|
|
323
379
|
const functionObjectAll = function (funcs, args) {
|
|
324
380
|
const result = {}, promises = []
|
|
325
381
|
for (const key in funcs) {
|
|
326
|
-
const
|
|
382
|
+
const f = funcs[key]
|
|
383
|
+
const resultItem = typeof f == 'function' ? f(...args) : f
|
|
327
384
|
if (isPromise(resultItem)) {
|
|
328
385
|
promises.push(resultItem.then(curry3(objectSet, result, key, __)))
|
|
329
386
|
} else {
|
|
@@ -333,7 +390,48 @@ const functionObjectAll = function (funcs, args) {
|
|
|
333
390
|
return promises.length == 0 ? result : promiseAll(promises).then(always(result))
|
|
334
391
|
}
|
|
335
392
|
|
|
393
|
+
const _allValues = function (values) {
|
|
394
|
+
if (isArray(values)) {
|
|
395
|
+
return areAnyValuesPromises(values)
|
|
396
|
+
? promiseAll(values)
|
|
397
|
+
: values
|
|
398
|
+
}
|
|
399
|
+
return areAnyValuesPromises(values)
|
|
400
|
+
? promiseObjectAll(values)
|
|
401
|
+
: values
|
|
402
|
+
}
|
|
403
|
+
|
|
336
404
|
const all = function (...args) {
|
|
405
|
+
if (args.length == 1) {
|
|
406
|
+
const resolversOrValues = args[0]
|
|
407
|
+
if (isPromise(resolversOrValues)) {
|
|
408
|
+
return resolversOrValues.then(_allValues)
|
|
409
|
+
}
|
|
410
|
+
if (areAllValuesNonfunctions(resolversOrValues)) {
|
|
411
|
+
return _allValues(resolversOrValues)
|
|
412
|
+
}
|
|
413
|
+
return isArray(resolversOrValues)
|
|
414
|
+
? curryArgs2(functionArrayAll, resolversOrValues, __)
|
|
415
|
+
: curryArgs2(functionObjectAll, resolversOrValues, __)
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
const resolversOrValues = args[args.length - 1]
|
|
419
|
+
const argValues = args.slice(0, -1)
|
|
420
|
+
|
|
421
|
+
if (areAnyValuesPromises(argValues)) {
|
|
422
|
+
return isArray(resolversOrValues)
|
|
423
|
+
? promiseAll(argValues)
|
|
424
|
+
.then(curry2(functionArrayAll, resolversOrValues, __))
|
|
425
|
+
: promiseAll(argValues)
|
|
426
|
+
.then(curry2(functionObjectAll, resolversOrValues, __))
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
return isArray(resolversOrValues)
|
|
430
|
+
? functionArrayAll(resolversOrValues, argValues)
|
|
431
|
+
: functionObjectAll(resolversOrValues, argValues)
|
|
432
|
+
|
|
433
|
+
/*
|
|
434
|
+
////////////////////////////////////////////////////////////////
|
|
337
435
|
const funcs = args.pop()
|
|
338
436
|
if (args.length == 0) {
|
|
339
437
|
return isArray(funcs)
|
|
@@ -350,6 +448,7 @@ const all = function (...args) {
|
|
|
350
448
|
return isArray(funcs)
|
|
351
449
|
? functionArrayAll(funcs, args)
|
|
352
450
|
: functionObjectAll(funcs, args)
|
|
451
|
+
*/
|
|
353
452
|
}
|
|
354
453
|
|
|
355
454
|
all.series = function allSeries(...args) {
|
|
@@ -460,17 +559,6 @@ const arrayConditional = function (array, args, funcsIndex) {
|
|
|
460
559
|
: defaultResolverOrValue
|
|
461
560
|
}
|
|
462
561
|
|
|
463
|
-
const areAllValuesNonfunctions = function (values) {
|
|
464
|
-
const length = values.length
|
|
465
|
-
let index = -1
|
|
466
|
-
while (++index < length) {
|
|
467
|
-
if (typeof values[index] == 'function') {
|
|
468
|
-
return false
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
return true
|
|
472
|
-
}
|
|
473
|
-
|
|
474
562
|
const thunkify2 = (func, arg0, arg1) => function thunk() {
|
|
475
563
|
return func(arg0, arg1)
|
|
476
564
|
}
|
|
@@ -619,31 +707,6 @@ const mapMap = function (value, mapper) {
|
|
|
619
707
|
: promiseAll(promises).then(always(result))
|
|
620
708
|
}
|
|
621
709
|
|
|
622
|
-
const promiseObjectAllExecutor = object => function executor(resolve) {
|
|
623
|
-
const result = {}
|
|
624
|
-
let numPromises = 0
|
|
625
|
-
for (const key in object) {
|
|
626
|
-
const value = object[key]
|
|
627
|
-
if (isPromise(value)) {
|
|
628
|
-
numPromises += 1
|
|
629
|
-
value.then((key => function (res) {
|
|
630
|
-
result[key] = res
|
|
631
|
-
numPromises -= 1
|
|
632
|
-
if (numPromises == 0) {
|
|
633
|
-
resolve(result)
|
|
634
|
-
}
|
|
635
|
-
})(key))
|
|
636
|
-
} else {
|
|
637
|
-
result[key] = value
|
|
638
|
-
}
|
|
639
|
-
}
|
|
640
|
-
if (numPromises == 0) {
|
|
641
|
-
resolve(result)
|
|
642
|
-
}
|
|
643
|
-
}
|
|
644
|
-
|
|
645
|
-
const promiseObjectAll = object => new Promise(promiseObjectAllExecutor(object))
|
|
646
|
-
|
|
647
710
|
const objectMap = function (object, mapper) {
|
|
648
711
|
const result = {}
|
|
649
712
|
let isAsync = false
|