rubico 2.8.5 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/_internal/FlatMappingAsyncIterator.js +41 -30
- package/_internal/LinkedList.js +54 -0
- package/_internal/LinkedList.test.js +34 -0
- package/_internal/MappingAsyncIterator.js +65 -15
- package/_internal/SerialMappingAsyncIterator.js +79 -0
- package/_internal/curryArity.js +3 -3
- package/_internal/iteratorFind.js +0 -2
- package/_internal/iteratorForEachSeries.js +1 -1
- package/_internal/objectFlatten.js +4 -1
- package/all.js +33 -59
- package/and.js +1 -1
- package/assign.js +14 -16
- package/compose.js +12 -13
- package/curry.js +1 -1
- package/dist/Transducer.es.js +1 -1
- package/dist/Transducer.es.min.js +1 -1
- package/dist/Transducer.js +1 -1
- package/dist/Transducer.min.js +1 -1
- package/dist/Transducer.mjs +1 -1
- package/dist/__.es.js +1 -1
- package/dist/__.es.min.js +1 -1
- package/dist/__.js +1 -1
- package/dist/__.min.js +1 -1
- package/dist/__.mjs +1 -1
- package/dist/all.es.js +1 -1
- package/dist/all.es.min.js +1 -1
- package/dist/all.js +1 -1
- package/dist/all.min.js +1 -1
- package/dist/all.mjs +1 -1
- package/dist/always.es.js +1 -1
- package/dist/always.es.min.js +1 -1
- package/dist/always.js +1 -1
- package/dist/always.min.js +1 -1
- package/dist/always.mjs +1 -1
- package/dist/and.es.js +1 -1
- package/dist/and.es.min.js +1 -1
- package/dist/and.js +1 -1
- package/dist/and.min.js +1 -1
- package/dist/and.mjs +1 -1
- package/dist/assign.es.js +1 -1
- package/dist/assign.es.min.js +1 -1
- package/dist/assign.js +1 -1
- package/dist/assign.min.js +1 -1
- package/dist/assign.mjs +1 -1
- package/dist/compose.es.js +1 -1
- package/dist/compose.es.min.js +1 -1
- package/dist/compose.js +1 -1
- package/dist/compose.min.js +1 -1
- package/dist/compose.mjs +1 -1
- package/dist/curry.es.js +4 -4
- package/dist/curry.es.min.js +2 -2
- package/dist/curry.js +4 -4
- package/dist/curry.min.js +2 -2
- package/dist/curry.mjs +4 -4
- package/dist/eq.es.js +1 -1
- package/dist/eq.es.min.js +1 -1
- package/dist/eq.js +1 -1
- package/dist/eq.min.js +1 -1
- package/dist/eq.mjs +1 -1
- package/dist/every.es.js +1 -1
- package/dist/every.es.min.js +1 -1
- package/dist/every.js +1 -1
- package/dist/every.min.js +1 -1
- package/dist/every.mjs +1 -1
- package/dist/filter.es.js +4 -4
- package/dist/filter.es.min.js +2 -2
- package/dist/filter.js +4 -4
- package/dist/filter.min.js +2 -2
- package/dist/filter.mjs +4 -4
- package/dist/flatMap.es.js +44 -28
- package/dist/flatMap.es.min.js +2 -2
- package/dist/flatMap.js +44 -28
- package/dist/flatMap.min.js +2 -2
- package/dist/flatMap.mjs +44 -28
- package/dist/forEach.es.js +6 -6
- package/dist/forEach.es.min.js +2 -2
- package/dist/forEach.js +6 -6
- package/dist/forEach.min.js +2 -2
- package/dist/forEach.mjs +6 -6
- package/dist/get.es.js +27 -3
- package/dist/get.es.min.js +2 -2
- package/dist/get.js +27 -3
- package/dist/get.min.js +2 -2
- package/dist/get.mjs +27 -3
- package/dist/gt.es.js +1 -1
- package/dist/gt.es.min.js +1 -1
- package/dist/gt.js +1 -1
- package/dist/gt.min.js +1 -1
- package/dist/gt.mjs +1 -1
- package/dist/gte.es.js +1 -1
- package/dist/gte.es.min.js +1 -1
- package/dist/gte.js +1 -1
- package/dist/gte.min.js +1 -1
- package/dist/gte.mjs +1 -1
- package/dist/lt.es.js +1 -1
- package/dist/lt.es.min.js +1 -1
- package/dist/lt.js +1 -1
- package/dist/lt.min.js +1 -1
- package/dist/lt.mjs +1 -1
- package/dist/lte.es.js +1 -1
- package/dist/lte.es.min.js +1 -1
- package/dist/lte.js +1 -1
- package/dist/lte.min.js +1 -1
- package/dist/lte.mjs +1 -1
- package/dist/map.es.js +190 -42
- package/dist/map.es.min.js +2 -2
- package/dist/map.js +190 -42
- package/dist/map.min.js +2 -2
- package/dist/map.mjs +190 -42
- package/dist/not.es.js +1 -1
- package/dist/not.es.min.js +1 -1
- package/dist/not.js +1 -1
- package/dist/not.min.js +1 -1
- package/dist/not.mjs +1 -1
- package/dist/omit.es.js +1 -1
- package/dist/omit.es.min.js +1 -1
- package/dist/omit.js +1 -1
- package/dist/omit.min.js +1 -1
- package/dist/omit.mjs +1 -1
- package/dist/or.es.js +1 -1
- package/dist/or.es.min.js +1 -1
- package/dist/or.js +1 -1
- package/dist/or.min.js +1 -1
- package/dist/or.mjs +1 -1
- package/dist/pick.es.js +1 -1
- package/dist/pick.es.min.js +1 -1
- package/dist/pick.js +1 -1
- package/dist/pick.min.js +1 -1
- package/dist/pick.mjs +1 -1
- package/dist/pipe.es.js +1 -1
- package/dist/pipe.es.min.js +1 -1
- package/dist/pipe.js +1 -1
- package/dist/pipe.min.js +1 -1
- package/dist/pipe.mjs +1 -1
- package/dist/reduce.es.js +1 -1
- package/dist/reduce.es.min.js +1 -1
- package/dist/reduce.js +1 -1
- package/dist/reduce.min.js +1 -1
- package/dist/reduce.mjs +1 -1
- package/dist/rubico.es.js +238 -83
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.global.js +238 -83
- package/dist/rubico.global.min.js +2 -2
- package/dist/rubico.js +238 -83
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.mjs +238 -83
- package/dist/set.es.js +1 -1
- package/dist/set.es.min.js +1 -1
- package/dist/set.js +1 -1
- package/dist/set.min.js +1 -1
- package/dist/set.mjs +1 -1
- package/dist/some.es.js +1 -1
- package/dist/some.es.min.js +1 -1
- package/dist/some.js +1 -1
- package/dist/some.min.js +1 -1
- package/dist/some.mjs +1 -1
- package/dist/switchCase.es.js +1 -1
- package/dist/switchCase.es.min.js +1 -1
- package/dist/switchCase.js +1 -1
- package/dist/switchCase.min.js +1 -1
- package/dist/switchCase.mjs +1 -1
- package/dist/tap.es.js +1 -1
- package/dist/tap.es.min.js +1 -1
- package/dist/tap.js +1 -1
- package/dist/tap.min.js +1 -1
- package/dist/tap.mjs +1 -1
- package/dist/thunkify.es.js +1 -1
- package/dist/thunkify.es.min.js +1 -1
- package/dist/thunkify.js +1 -1
- package/dist/thunkify.min.js +1 -1
- package/dist/thunkify.mjs +1 -1
- package/dist/transform.es.js +1 -1
- package/dist/transform.es.min.js +1 -1
- package/dist/transform.js +1 -1
- package/dist/transform.min.js +1 -1
- package/dist/transform.mjs +1 -1
- package/dist/tryCatch.es.js +1 -1
- package/dist/tryCatch.es.min.js +1 -1
- package/dist/tryCatch.js +1 -1
- package/dist/tryCatch.min.js +1 -1
- package/dist/tryCatch.mjs +1 -1
- package/dist/x/append.es.js +1 -1
- package/dist/x/append.es.min.js +1 -1
- package/dist/x/append.js +1 -1
- package/dist/x/append.min.js +1 -1
- package/dist/x/append.mjs +1 -1
- package/dist/x/callProp.es.js +1 -1
- package/dist/x/callProp.es.min.js +1 -1
- package/dist/x/callProp.js +1 -1
- package/dist/x/callProp.min.js +1 -1
- package/dist/x/callProp.mjs +1 -1
- package/dist/x/defaultsDeep.es.js +1 -1
- package/dist/x/defaultsDeep.es.min.js +1 -1
- package/dist/x/defaultsDeep.js +1 -1
- package/dist/x/defaultsDeep.min.js +1 -1
- package/dist/x/defaultsDeep.mjs +1 -1
- package/dist/x/differenceWith.es.js +1 -1
- package/dist/x/differenceWith.es.min.js +1 -1
- package/dist/x/differenceWith.js +1 -1
- package/dist/x/differenceWith.min.js +1 -1
- package/dist/x/differenceWith.mjs +1 -1
- package/dist/x/filterOut.es.js +4 -4
- package/dist/x/filterOut.es.min.js +2 -2
- package/dist/x/filterOut.js +4 -4
- package/dist/x/filterOut.min.js +2 -2
- package/dist/x/filterOut.mjs +4 -4
- package/dist/x/find.es.js +1 -3
- package/dist/x/find.es.min.js +1 -1
- package/dist/x/find.js +1 -3
- package/dist/x/find.min.js +1 -1
- package/dist/x/find.mjs +1 -3
- package/dist/x/findIndex.es.js +1 -1
- package/dist/x/findIndex.es.min.js +1 -1
- package/dist/x/findIndex.js +1 -1
- package/dist/x/findIndex.min.js +1 -1
- package/dist/x/findIndex.mjs +1 -1
- package/dist/x/first.es.js +1 -1
- package/dist/x/first.es.min.js +1 -1
- package/dist/x/first.js +1 -1
- package/dist/x/first.min.js +1 -1
- package/dist/x/first.mjs +1 -1
- package/dist/x/flatten.es.js +44 -28
- package/dist/x/flatten.es.min.js +2 -2
- package/dist/x/flatten.js +44 -28
- package/dist/x/flatten.min.js +2 -2
- package/dist/x/flatten.mjs +44 -28
- package/dist/x/groupBy.es.js +1 -1
- package/dist/x/groupBy.es.min.js +1 -1
- package/dist/x/groupBy.js +1 -1
- package/dist/x/groupBy.min.js +1 -1
- package/dist/x/groupBy.mjs +1 -1
- package/dist/x/has.es.js +1 -1
- package/dist/x/has.es.min.js +1 -1
- package/dist/x/has.js +1 -1
- package/dist/x/has.min.js +1 -1
- package/dist/x/has.mjs +1 -1
- package/dist/x/identity.es.js +1 -1
- package/dist/x/identity.es.min.js +1 -1
- package/dist/x/identity.js +1 -1
- package/dist/x/identity.min.js +1 -1
- package/dist/x/identity.mjs +1 -1
- package/dist/x/includes.es.js +1 -1
- package/dist/x/includes.es.min.js +1 -1
- package/dist/x/includes.js +1 -1
- package/dist/x/includes.min.js +1 -1
- package/dist/x/includes.mjs +1 -1
- package/dist/x/isDeepEqual.es.js +1 -1
- package/dist/x/isDeepEqual.es.min.js +1 -1
- package/dist/x/isDeepEqual.js +1 -1
- package/dist/x/isDeepEqual.min.js +1 -1
- package/dist/x/isDeepEqual.mjs +1 -1
- package/dist/x/isEmpty.es.js +1 -1
- package/dist/x/isEmpty.es.min.js +1 -1
- package/dist/x/isEmpty.js +1 -1
- package/dist/x/isEmpty.min.js +1 -1
- package/dist/x/isEmpty.mjs +1 -1
- package/dist/x/isEqual.es.js +1 -1
- package/dist/x/isEqual.es.min.js +1 -1
- package/dist/x/isEqual.js +1 -1
- package/dist/x/isEqual.min.js +1 -1
- package/dist/x/isEqual.mjs +1 -1
- package/dist/x/isFunction.es.js +1 -1
- package/dist/x/isFunction.es.min.js +1 -1
- package/dist/x/isFunction.js +1 -1
- package/dist/x/isFunction.min.js +1 -1
- package/dist/x/isFunction.mjs +1 -1
- package/dist/x/isIn.es.js +1 -1
- package/dist/x/isIn.es.min.js +1 -1
- package/dist/x/isIn.js +1 -1
- package/dist/x/isIn.min.js +1 -1
- package/dist/x/isIn.mjs +1 -1
- package/dist/x/isObject.es.js +1 -1
- package/dist/x/isObject.es.min.js +1 -1
- package/dist/x/isObject.js +1 -1
- package/dist/x/isObject.min.js +1 -1
- package/dist/x/isObject.mjs +1 -1
- package/dist/x/isString.es.js +1 -1
- package/dist/x/isString.es.min.js +1 -1
- package/dist/x/isString.js +1 -1
- package/dist/x/isString.min.js +1 -1
- package/dist/x/isString.mjs +1 -1
- package/dist/x/keys.es.js +1 -1
- package/dist/x/keys.es.min.js +1 -1
- package/dist/x/keys.js +1 -1
- package/dist/x/keys.min.js +1 -1
- package/dist/x/keys.mjs +1 -1
- package/dist/x/last.es.js +1 -1
- package/dist/x/last.es.min.js +1 -1
- package/dist/x/last.js +1 -1
- package/dist/x/last.min.js +1 -1
- package/dist/x/last.mjs +1 -1
- package/dist/x/maxBy.es.js +27 -23
- package/dist/x/maxBy.es.min.js +2 -2
- package/dist/x/maxBy.js +27 -23
- package/dist/x/maxBy.min.js +2 -2
- package/dist/x/maxBy.mjs +27 -23
- package/dist/x/noop.es.js +1 -1
- package/dist/x/noop.es.min.js +1 -1
- package/dist/x/noop.js +1 -1
- package/dist/x/noop.min.js +1 -1
- package/dist/x/noop.mjs +1 -1
- package/dist/x/pluck.es.js +194 -44
- package/dist/x/pluck.es.min.js +2 -2
- package/dist/x/pluck.js +194 -44
- package/dist/x/pluck.min.js +2 -2
- package/dist/x/pluck.mjs +194 -44
- package/dist/x/prepend.es.js +1 -1
- package/dist/x/prepend.es.min.js +1 -1
- package/dist/x/prepend.js +1 -1
- package/dist/x/prepend.min.js +1 -1
- package/dist/x/prepend.mjs +1 -1
- package/dist/x/size.es.js +1 -1
- package/dist/x/size.es.min.js +1 -1
- package/dist/x/size.js +1 -1
- package/dist/x/size.min.js +1 -1
- package/dist/x/size.mjs +1 -1
- package/dist/x/trace.es.js +1 -1
- package/dist/x/trace.es.min.js +1 -1
- package/dist/x/trace.js +1 -1
- package/dist/x/trace.min.js +1 -1
- package/dist/x/trace.mjs +1 -1
- package/dist/x/unionWith.es.js +1 -1
- package/dist/x/unionWith.es.min.js +1 -1
- package/dist/x/unionWith.js +1 -1
- package/dist/x/unionWith.min.js +1 -1
- package/dist/x/unionWith.mjs +1 -1
- package/dist/x/uniq.es.js +1 -1
- package/dist/x/uniq.es.min.js +1 -1
- package/dist/x/uniq.js +1 -1
- package/dist/x/uniq.min.js +1 -1
- package/dist/x/uniq.mjs +1 -1
- package/dist/x/unless.es.js +1 -1
- package/dist/x/unless.es.min.js +1 -1
- package/dist/x/unless.js +1 -1
- package/dist/x/unless.min.js +1 -1
- package/dist/x/unless.mjs +1 -1
- package/dist/x/values.es.js +1 -1
- package/dist/x/values.es.min.js +1 -1
- package/dist/x/values.js +1 -1
- package/dist/x/values.min.js +1 -1
- package/dist/x/values.mjs +1 -1
- package/dist/x/when.es.js +1 -1
- package/dist/x/when.es.min.js +1 -1
- package/dist/x/when.js +1 -1
- package/dist/x/when.min.js +1 -1
- package/dist/x/when.mjs +1 -1
- package/eq.js +2 -2
- package/es.js +238 -83
- package/every.js +2 -2
- package/filter.js +4 -4
- package/flatMap.js +61 -54
- package/forEach.js +33 -56
- package/get.js +49 -25
- package/gt.js +2 -2
- package/gte.js +2 -2
- package/index.js +238 -83
- package/lt.js +2 -2
- package/lte.js +2 -2
- package/map.js +115 -151
- package/monad/Mux.js +6 -4
- package/monad/PossiblePromise.js +6 -4
- package/monad/README.md +61 -40
- package/monad/Struct.js +6 -4
- package/not.js +1 -1
- package/omit.js +22 -19
- package/or.js +1 -1
- package/package.json +1 -1
- package/pick.js +14 -11
- package/pipe.js +18 -24
- package/reduce.js +1 -1
- package/set.js +17 -18
- package/some.js +2 -2
- package/switchCase.js +51 -43
- package/tap.js +17 -23
- package/transform.js +1 -1
- package/tryCatch.js +16 -24
- package/x/defaultsDeep.js +1 -1
- package/x/defaultsDeep.test.js +1 -1
- package/_internal/NextIteration.js +0 -12
- package/_internal/generatorFunctionFilter.js +0 -28
- package/_internal/iterationMap.js +0 -27
package/tryCatch.js
CHANGED
|
@@ -22,28 +22,25 @@ const _tryCatch = function (tryer, catcher, args) {
|
|
|
22
22
|
*
|
|
23
23
|
* @synopsis
|
|
24
24
|
* ```coffeescript [specscript]
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* type SyncOrAsyncFunction = (...args)=>Promise|any
|
|
29
|
-
* type SyncOrAsyncCatcher = (error Error|any, ...args)=>Promise|any
|
|
25
|
+
* type SyncOrAsyncFunction = (...arguments)=>Promise|any
|
|
26
|
+
* type SyncOrAsyncCatcher = (error Error|any, ...arguments)=>Promise|any
|
|
30
27
|
*
|
|
31
28
|
* tryer SyncOrAsyncFunction
|
|
32
29
|
* catcher SyncOrAsyncCatcher
|
|
33
30
|
*
|
|
34
|
-
* tryCatch(tryer, catcher)(...
|
|
35
|
-
* tryCatch(...
|
|
31
|
+
* tryCatch(tryer, catcher)(...arguments) -> Promise|any
|
|
32
|
+
* tryCatch(...arguments, tryer, catcher) -> Promise|any
|
|
36
33
|
* ```
|
|
37
34
|
*
|
|
38
35
|
* @description
|
|
39
|
-
* Function
|
|
36
|
+
* Function error handler. Accepts a tryer function and a catcher function. Calls the tryer function and catches any error thrown by the tryer function with the catcher function.
|
|
40
37
|
*
|
|
41
38
|
* ```javascript [playground]
|
|
42
39
|
* const throwsIfOdd = number => {
|
|
43
|
-
* if (number % 2
|
|
40
|
+
* if (number % 2 === 1) {
|
|
44
41
|
* throw new Error(`${number} is odd`)
|
|
45
42
|
* }
|
|
46
|
-
* console.log('did not throw for', number)
|
|
43
|
+
* console.log('did not throw for number', number)
|
|
47
44
|
* }
|
|
48
45
|
*
|
|
49
46
|
* const errorHandler = (error, number) => {
|
|
@@ -53,20 +50,18 @@ const _tryCatch = function (tryer, catcher, args) {
|
|
|
53
50
|
*
|
|
54
51
|
* const handler = tryCatch(throwsIfOdd, errorHandler)
|
|
55
52
|
*
|
|
56
|
-
* handler(2)
|
|
57
|
-
* handler(3)
|
|
58
|
-
* // Error: 3 is odd
|
|
59
|
-
*
|
|
53
|
+
* handler(2)
|
|
54
|
+
* handler(3)
|
|
60
55
|
* ```
|
|
61
56
|
*
|
|
62
|
-
* If the
|
|
57
|
+
* If the tryer function is asynchronous and returns a rejected promise, the catcher function will handle the error from the rejected promise.
|
|
63
58
|
*
|
|
64
59
|
* ```javascript [playground]
|
|
65
60
|
* const rejectsIfOdd = async number => {
|
|
66
61
|
* if (number % 2 == 1) {
|
|
67
62
|
* throw new Error(`${number} is odd`)
|
|
68
63
|
* }
|
|
69
|
-
* console.log('did not
|
|
64
|
+
* console.log('did not reject for number', number)
|
|
70
65
|
* }
|
|
71
66
|
*
|
|
72
67
|
* const errorHandler = (error, number) => {
|
|
@@ -76,13 +71,11 @@ const _tryCatch = function (tryer, catcher, args) {
|
|
|
76
71
|
*
|
|
77
72
|
* const asyncHandler = tryCatch(rejectsIfOdd, errorHandler)
|
|
78
73
|
*
|
|
79
|
-
* asyncHandler(2)
|
|
80
|
-
* asyncHandler(3)
|
|
81
|
-
* // Error: 3 is odd
|
|
82
|
-
*
|
|
74
|
+
* asyncHandler(2)
|
|
75
|
+
* asyncHandler(3)
|
|
83
76
|
* ```
|
|
84
77
|
*
|
|
85
|
-
*
|
|
78
|
+
* `tryCatch` executes eagerly when provided any number of arguments before the tryer and catcher functions.
|
|
86
79
|
*
|
|
87
80
|
* ```javascript [playground]
|
|
88
81
|
* const add = (a, b) => a + b
|
|
@@ -91,11 +84,11 @@ const _tryCatch = function (tryer, catcher, args) {
|
|
|
91
84
|
* const sum = numbers.reduce(add)
|
|
92
85
|
* throw new Error(`the sum is ${sum}`)
|
|
93
86
|
* }, function logErrorMessage(error) {
|
|
94
|
-
* console.error(error.message)
|
|
87
|
+
* console.error(error.message)
|
|
95
88
|
* })
|
|
96
89
|
* ```
|
|
97
90
|
*
|
|
98
|
-
* Any promises
|
|
91
|
+
* Any promises in `arguments` are resolved for their values before further execution for the eager interface only.
|
|
99
92
|
*
|
|
100
93
|
* ```javascript [playground]
|
|
101
94
|
* tryCatch(Promise.resolve(1), 2, Promise.resolve(3), (a, b, c) => {
|
|
@@ -103,7 +96,6 @@ const _tryCatch = function (tryer, catcher, args) {
|
|
|
103
96
|
* if (sum > 5) {
|
|
104
97
|
* throw new Error('limit exceeded')
|
|
105
98
|
* }
|
|
106
|
-
* console.log('sum:', sum)
|
|
107
99
|
* }, (error, a, b, c) => {
|
|
108
100
|
* console.error(`${a} + ${b} + ${c}: ${error.message}`)
|
|
109
101
|
* })
|
package/x/defaultsDeep.js
CHANGED
|
@@ -133,7 +133,7 @@ function _defaultsDeep(data, defaults) {
|
|
|
133
133
|
* // }
|
|
134
134
|
* ```
|
|
135
135
|
*
|
|
136
|
-
* The `defaults` array or object may be provided to `defaultsDeep` without `data` to create a lazy version of `defaultsDeep` that accepts `data` as a single argument. This
|
|
136
|
+
* The `defaults` array or object may be provided to `defaultsDeep` without `data` to create a lazy version of `defaultsDeep` that accepts `data` as a single argument. This lazy interface can be used for function pipelines and function compositions.
|
|
137
137
|
*
|
|
138
138
|
* ```javascript [playground]
|
|
139
139
|
* pipe({ a: 1 }, [
|
package/x/defaultsDeep.test.js
CHANGED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @name NextIteration
|
|
3
|
-
*
|
|
4
|
-
* @synopsis
|
|
5
|
-
* NextIteration(value any) -> nextIteration { value, done: false }
|
|
6
|
-
*
|
|
7
|
-
* @description
|
|
8
|
-
* Create an object to send for the next iteration
|
|
9
|
-
*/
|
|
10
|
-
const NextIteration = value => ({ value, done: false })
|
|
11
|
-
|
|
12
|
-
module.exports = NextIteration
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
const FilteringIterator = require('./FilteringIterator')
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @name generatorFunctionFilter
|
|
5
|
-
*
|
|
6
|
-
* @synopsis
|
|
7
|
-
* ```coffeescript [specscript]
|
|
8
|
-
* generatorFunctionFilter<
|
|
9
|
-
* T any,
|
|
10
|
-
* args ...any,
|
|
11
|
-
* generatorFunction ...args=>Generator<T>,
|
|
12
|
-
* predicate T=>boolean,
|
|
13
|
-
* >(generatorFunction, predicate)
|
|
14
|
-
* -> filteringGeneratorFunction ...args=>Generator
|
|
15
|
-
* ```
|
|
16
|
-
*
|
|
17
|
-
* @description
|
|
18
|
-
* Filter a generator function by predicate.
|
|
19
|
-
*
|
|
20
|
-
* Note: async predicates may beget unexpected results
|
|
21
|
-
*/
|
|
22
|
-
const generatorFunctionFilter = (
|
|
23
|
-
generatorFunction, predicate,
|
|
24
|
-
) => function* filteringGeneratorFunction(...args) {
|
|
25
|
-
yield* FilteringIterator(generatorFunction(...args), predicate)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
module.exports = generatorFunctionFilter
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
const NextIteration = require('./NextIteration')
|
|
2
|
-
const isPromise = require('./isPromise')
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @name iterationMap
|
|
6
|
-
*
|
|
7
|
-
* @synopsis
|
|
8
|
-
* iterationMap<
|
|
9
|
-
* T any,
|
|
10
|
-
* iteration { value: T, done: boolean },
|
|
11
|
-
* mapper T=>any,
|
|
12
|
-
* >(iteration, mapper) -> nextIteration { value: any, done: boolean }
|
|
13
|
-
*
|
|
14
|
-
* @description
|
|
15
|
-
* Apply a mapper to an iteration. Noop if iteration is done.
|
|
16
|
-
*/
|
|
17
|
-
const iterationMap = function (iteration, mapper) {
|
|
18
|
-
if (iteration.done) {
|
|
19
|
-
return iteration
|
|
20
|
-
}
|
|
21
|
-
const mappedValue = mapper(iteration.value)
|
|
22
|
-
return isPromise(mappedValue)
|
|
23
|
-
? mappedValue.then(NextIteration)
|
|
24
|
-
: { value: mappedValue, done: false }
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
module.exports = iterationMap
|