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/not.js
CHANGED
|
@@ -59,7 +59,7 @@ const _not = function (args, predicate) {
|
|
|
59
59
|
* not(promise).then(console.log) // true
|
|
60
60
|
* ```
|
|
61
61
|
*
|
|
62
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
62
|
+
* Any promises passed in data argument position are resolved for their values before further execution.
|
|
63
63
|
*
|
|
64
64
|
* ```javascript [playground]
|
|
65
65
|
* const isOdd = number => number % 2 == 1
|
package/omit.js
CHANGED
|
@@ -20,17 +20,21 @@ const _omit = function (source, paths) {
|
|
|
20
20
|
*
|
|
21
21
|
* @synopsis
|
|
22
22
|
* ```coffeescript [specscript]
|
|
23
|
-
*
|
|
24
|
-
*
|
|
23
|
+
* paths Array<string>
|
|
24
|
+
*
|
|
25
|
+
* omit(Promise|Object, paths) -> Object
|
|
26
|
+
* omit(paths)(Object) -> Object
|
|
25
27
|
* ```
|
|
26
28
|
*
|
|
27
29
|
* @description
|
|
28
|
-
*
|
|
30
|
+
* Object constructor. Creates a new object by excluding provided paths on an argument object.
|
|
29
31
|
*
|
|
30
32
|
* ```javascript [playground]
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
33
|
+
* const argumentObject = { _id: '1', name: 'John' }
|
|
34
|
+
*
|
|
35
|
+
* const newObject = omit(argumentObject, ['_id'])
|
|
36
|
+
*
|
|
37
|
+
* console.log(newObject)
|
|
34
38
|
* ```
|
|
35
39
|
*
|
|
36
40
|
* `omit` supports three types of path patterns for nested property access
|
|
@@ -40,33 +44,32 @@ const _omit = function (source, paths) {
|
|
|
40
44
|
* * an array of keys or indices - `['a', 0, 'value']`
|
|
41
45
|
*
|
|
42
46
|
* ```javascript [playground]
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* d: 'goodbye',
|
|
49
|
-
* },
|
|
47
|
+
* const omittedABD = omit(['a.b.d'])({
|
|
48
|
+
* a: {
|
|
49
|
+
* b: {
|
|
50
|
+
* c: 'hello',
|
|
51
|
+
* d: 'goodbye',
|
|
50
52
|
* },
|
|
51
|
-
* }
|
|
52
|
-
* )
|
|
53
|
+
* },
|
|
54
|
+
* })
|
|
55
|
+
*
|
|
56
|
+
* console.log(omittedABD)
|
|
53
57
|
* ```
|
|
54
58
|
*
|
|
55
|
-
*
|
|
59
|
+
* `omit` supports a lazy interface for composability.
|
|
56
60
|
*
|
|
57
61
|
* ```javascript [playground]
|
|
58
62
|
* pipe({ a: 1, b: 2, c: 3 }, [
|
|
59
63
|
* map(number => number ** 2),
|
|
60
64
|
* omit(['a', 'b']),
|
|
61
|
-
* console.log,
|
|
65
|
+
* console.log,
|
|
62
66
|
* ])
|
|
63
67
|
* ```
|
|
64
68
|
*
|
|
65
|
-
*
|
|
69
|
+
* If the argument object is a promise, it is resolved for its value before further execution for the eager interface only.
|
|
66
70
|
*
|
|
67
71
|
* ```javascript [playground]
|
|
68
72
|
* omit(Promise.resolve({ a: 1, b: 2, c: 3 }), ['a', 'b']).then(console.log)
|
|
69
|
-
* // { c: 3 }
|
|
70
73
|
* ```
|
|
71
74
|
*
|
|
72
75
|
* See also:
|
package/or.js
CHANGED
|
@@ -145,7 +145,7 @@ const areAnyPredicatesTruthy = function (args, predicates) {
|
|
|
145
145
|
* console.log(condition) // false
|
|
146
146
|
* ```
|
|
147
147
|
*
|
|
148
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
148
|
+
* Any promises passed in data argument position are resolved for their values before further execution.
|
|
149
149
|
*
|
|
150
150
|
* ```javascript [playground]
|
|
151
151
|
* or(Promise.resolve('aaa'), [
|
package/package.json
CHANGED
package/pick.js
CHANGED
|
@@ -27,17 +27,21 @@ const _pick = function (source, keys) {
|
|
|
27
27
|
*
|
|
28
28
|
* @synopsis
|
|
29
29
|
* ```coffeescript [specscript]
|
|
30
|
-
*
|
|
31
|
-
*
|
|
30
|
+
* keys Array<string>
|
|
31
|
+
*
|
|
32
|
+
* pick(Promise|Object, keys) -> Object
|
|
33
|
+
* pick(keys)(Object) -> Object
|
|
32
34
|
* ```
|
|
33
35
|
*
|
|
34
36
|
* @description
|
|
35
|
-
* Creates a new object from
|
|
37
|
+
* Object constructor. Creates a new object from an argument object by selecting keys from an array. If a key does not exist on the argument object, it is excluded from the new object.
|
|
36
38
|
*
|
|
37
39
|
* ```javascript [playground]
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
40
|
+
* const argumentObject = { goodbye: 1, world: 2 }
|
|
41
|
+
*
|
|
42
|
+
* const newObject = pick(argumentObject, ['hello', 'world'])
|
|
43
|
+
*
|
|
44
|
+
* console.log(newObject)
|
|
41
45
|
* ```
|
|
42
46
|
*
|
|
43
47
|
* `pick` supports three types of path patterns for nested property access
|
|
@@ -49,24 +53,23 @@ const _pick = function (source, keys) {
|
|
|
49
53
|
* ```javascript [playground]
|
|
50
54
|
* const nested = { a: { b: { c: { d: 1, e: [2, 3] } } } }
|
|
51
55
|
*
|
|
52
|
-
* console.log(pick(['a.b.c.d'])
|
|
56
|
+
* console.log(pick(nested, ['a.b.c.d']))
|
|
53
57
|
* ```
|
|
54
58
|
*
|
|
55
|
-
*
|
|
59
|
+
* `pick` supports a lazy interface for composability.
|
|
56
60
|
*
|
|
57
61
|
* ```javascript [playground]
|
|
58
62
|
* pipe({ a: 1, b: 2, c: 3 }, [
|
|
59
63
|
* map(number => number ** 2),
|
|
60
64
|
* pick(['a', 'c']),
|
|
61
|
-
* console.log,
|
|
65
|
+
* console.log,
|
|
62
66
|
* ])
|
|
63
67
|
* ```
|
|
64
68
|
*
|
|
65
|
-
*
|
|
69
|
+
* If the argument object is a promise, it is resolved for its value before further execution for the eager interface only.
|
|
66
70
|
*
|
|
67
71
|
* ```javascript [playground]
|
|
68
72
|
* pick(Promise.resolve({ a: 1, b: 2, c: 3 }), ['a', 'b']).then(console.log)
|
|
69
|
-
* // { a: 1, b: 2 }
|
|
70
73
|
* ```
|
|
71
74
|
*
|
|
72
75
|
* See also:
|
package/pipe.js
CHANGED
|
@@ -10,41 +10,35 @@ const __ = require('./_internal/placeholder')
|
|
|
10
10
|
*
|
|
11
11
|
* @synopsis
|
|
12
12
|
* ```coffeescript [specscript]
|
|
13
|
-
*
|
|
14
|
-
* argsOrPromises Array<Promise|any>
|
|
15
|
-
*
|
|
16
|
-
* type SyncOrAsyncFunction = (...args)=>Promise|any
|
|
13
|
+
* type SyncOrAsyncFunction = (...arguments)=>Promise|any
|
|
17
14
|
* type UnarySyncOrAsyncFunction = any=>Promise|any
|
|
18
15
|
*
|
|
19
16
|
* funcs [SyncOrAsyncFunction, ...Array<UnarySyncOrAsyncFunction>]
|
|
20
17
|
*
|
|
21
|
-
* pipe(funcs)(...
|
|
22
|
-
* pipe(...
|
|
23
|
-
* pipe(...funcs)(...
|
|
18
|
+
* pipe(funcs)(...arguments) -> Promise|any
|
|
19
|
+
* pipe(...arguments, funcs) -> Promise|any
|
|
20
|
+
* pipe(...funcs)(...arguments) -> Promise|any
|
|
24
21
|
* ```
|
|
25
22
|
*
|
|
26
23
|
* @description
|
|
27
|
-
* Creates a function pipeline from multiple functions. Each function in the pipeline is evaluated in series, passing its return value as
|
|
24
|
+
* Creates a function pipeline from multiple functions. Each function in the function pipeline is evaluated in series starting from the first function in the function pipeline, passing its return value as the first and only argument to the next function in the pipeline. The result of the execution of a function pipeline is the return value of the last function in the function pipeline. If any function in the function pipeline is asynchronous, the result of the execution of the function pipeline is a promise.
|
|
28
25
|
*
|
|
29
|
-
*
|
|
30
|
-
* const syncAdd123 = pipe([
|
|
31
|
-
* number => number + 1,
|
|
32
|
-
* number => number + 2,
|
|
33
|
-
* number => number + 3,
|
|
34
|
-
* ])
|
|
26
|
+
* Multiple arguments may be provided to a function pipeline, in which case they are passed directly to the first function in the function pipeline.
|
|
35
27
|
*
|
|
36
|
-
*
|
|
28
|
+
* ```javascript [playground]
|
|
29
|
+
* function add(a, b, c) {
|
|
30
|
+
* return a + b + c
|
|
31
|
+
* }
|
|
37
32
|
*
|
|
38
|
-
* const
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* async number => number + 3,
|
|
33
|
+
* const pipeline = pipe([
|
|
34
|
+
* add,
|
|
35
|
+
* console.log,
|
|
42
36
|
* ])
|
|
43
37
|
*
|
|
44
|
-
*
|
|
38
|
+
* pipeline(1, 2, 3)
|
|
45
39
|
* ```
|
|
46
40
|
*
|
|
47
|
-
* `pipe`
|
|
41
|
+
* Functions may be passed to `pipe` as arguments instead of as items of an array.
|
|
48
42
|
*
|
|
49
43
|
* ```javascript [playground]
|
|
50
44
|
* const appendB = x => x + 'b'
|
|
@@ -52,14 +46,14 @@ const __ = require('./_internal/placeholder')
|
|
|
52
46
|
*
|
|
53
47
|
* const appendBC = pipe(appendB, appendC)
|
|
54
48
|
*
|
|
55
|
-
* console.log(appendBC('a'))
|
|
49
|
+
* console.log(appendBC('a'))
|
|
56
50
|
* ```
|
|
57
51
|
*
|
|
58
|
-
* Any promises
|
|
52
|
+
* Any promises in `arguments` are resolved for their values before further execution for the eager interface only.
|
|
59
53
|
*
|
|
60
54
|
* ```javascript [playground]
|
|
61
55
|
* pipe(Promise.resolve(1), 2, Promise.resolve(3), [
|
|
62
|
-
* console.log,
|
|
56
|
+
* console.log,
|
|
63
57
|
* ])
|
|
64
58
|
* ```
|
|
65
59
|
*
|
package/reduce.js
CHANGED
|
@@ -193,7 +193,7 @@ const _reduce = function (collection, reducer, initial) {
|
|
|
193
193
|
* reduce(asyncGenerate(), asyncAdd).then(console.log) // 15
|
|
194
194
|
* ```
|
|
195
195
|
*
|
|
196
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
196
|
+
* Any promises passed in data argument position are resolved for their values before further execution.
|
|
197
197
|
*
|
|
198
198
|
* ```javascript [playground]
|
|
199
199
|
* const add = (a, b) => a + b
|
package/set.js
CHANGED
|
@@ -38,20 +38,19 @@ const _set = function (obj, path, value) {
|
|
|
38
38
|
*
|
|
39
39
|
* @synopsis
|
|
40
40
|
* ```coffeescript [specscript]
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* value function|any,
|
|
45
|
-
* ) -> result Promise|Object
|
|
41
|
+
* path string|Array<string|number>
|
|
42
|
+
* resolver (...arguments)=>Promise|any
|
|
43
|
+
* value any
|
|
46
44
|
*
|
|
47
|
-
* set(
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* )(
|
|
45
|
+
* set(Promise|Object, path, value) -> Promise|Object
|
|
46
|
+
* set(Promise|Object, path, resolver) -> Promise|Object
|
|
47
|
+
*
|
|
48
|
+
* set(path, value)(Object) -> Promise|Object
|
|
49
|
+
* set(path, resolver)(Object) -> Promise|Object
|
|
51
50
|
* ```
|
|
52
51
|
*
|
|
53
52
|
* @description
|
|
54
|
-
*
|
|
53
|
+
* Property setter. Shallow clones the argument object and sets a property on the shallow cloned object at the path denoted by a string, number, or array of string or numbers.
|
|
55
54
|
*
|
|
56
55
|
* `set` supports three types of path patterns for nested property access.
|
|
57
56
|
*
|
|
@@ -60,15 +59,15 @@ const _set = function (obj, path, value) {
|
|
|
60
59
|
* * an array of keys or indices - `['a', 0, 'value']`
|
|
61
60
|
*
|
|
62
61
|
* ```javascript [playground]
|
|
63
|
-
* console.log(set({ b: 2 }, 'a', 1))
|
|
62
|
+
* console.log(set({ b: 2 }, 'a', 1))
|
|
64
63
|
*
|
|
65
64
|
* const nestedAC2 = { a: { c: 2 } }
|
|
66
65
|
*
|
|
67
|
-
* console.log(set(nestedAC2, 'a.b', 1))
|
|
66
|
+
* console.log(set(nestedAC2, 'a.b', 1))
|
|
68
67
|
*
|
|
69
68
|
* const nestedA0BC3 = { a: [{ b: { c: 3 } }] }
|
|
70
69
|
*
|
|
71
|
-
* console.log(set(nestedA0BC3, 'a[0].b.c', 4))
|
|
70
|
+
* console.log(set(nestedA0BC3, 'a[0].b.c', 4))
|
|
72
71
|
* ```
|
|
73
72
|
*
|
|
74
73
|
* The property value may be a function, in which case it is treated as a resolver and provided the argument object to resolve the value to set.
|
|
@@ -78,22 +77,22 @@ const _set = function (obj, path, value) {
|
|
|
78
77
|
*
|
|
79
78
|
* const myNewObj = set('b', obj => obj.a + 2)(myObj)
|
|
80
79
|
*
|
|
81
|
-
* console.log(myNewObj)
|
|
80
|
+
* console.log(myNewObj)
|
|
82
81
|
* ```
|
|
83
82
|
*
|
|
84
|
-
* `set` supports a lazy
|
|
83
|
+
* `set` supports a lazy interface for composability.
|
|
85
84
|
*
|
|
86
85
|
* ```javascript [playground]
|
|
87
86
|
* pipe({ a: 1 }, [
|
|
88
87
|
* set('b', 2),
|
|
89
|
-
* console.log,
|
|
88
|
+
* console.log,
|
|
90
89
|
* ])
|
|
91
90
|
* ```
|
|
92
91
|
*
|
|
93
|
-
*
|
|
92
|
+
* If the argument object is a promise, it is resolved for its value before further execution for the eager interface only.
|
|
94
93
|
*
|
|
95
94
|
* ```javascript [playground]
|
|
96
|
-
* set(Promise.resolve({}), 'a', 1).then(console.log)
|
|
95
|
+
* set(Promise.resolve({}), 'a', 1).then(console.log)
|
|
97
96
|
* ```
|
|
98
97
|
*
|
|
99
98
|
* See also:
|
package/some.js
CHANGED
|
@@ -94,7 +94,7 @@ const _some = function (collection, predicate) {
|
|
|
94
94
|
* promise.then(console.log) // true
|
|
95
95
|
* ```
|
|
96
96
|
*
|
|
97
|
-
* `some` supports a lazy
|
|
97
|
+
* `some` supports a lazy interface for composability.
|
|
98
98
|
*
|
|
99
99
|
* ```javascript [playground]
|
|
100
100
|
* pipe([1, 2, 3], [
|
|
@@ -103,7 +103,7 @@ const _some = function (collection, predicate) {
|
|
|
103
103
|
* ])
|
|
104
104
|
* ```
|
|
105
105
|
*
|
|
106
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
106
|
+
* Any promises passed in data argument position are resolved for their values before further execution.
|
|
107
107
|
*
|
|
108
108
|
* ```javascript [playground]
|
|
109
109
|
* some(Promise.resolve([1, 2, 3, 4, 5]), n => n > 6).then(console.log) // false
|
package/switchCase.js
CHANGED
|
@@ -12,84 +12,92 @@ const curryArgs3 = require('./_internal/curryArgs3')
|
|
|
12
12
|
*
|
|
13
13
|
* @synopsis
|
|
14
14
|
* ```coffeescript [specscript]
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* type SyncOrAsyncPredicate = (...arguments)=>Promise|boolean|any
|
|
16
|
+
* type SyncOrAsyncFunction = (...arguments)=>Promise|any
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* conditionalValues Array<Promise|boolean|any>
|
|
19
|
+
* conditionalFunctionsOrValues Array<SyncOrAsyncPredicate|SyncOrAsyncFunction|Promise|boolean|any>
|
|
19
20
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* switchCase(conditionalPromisesOrValues) -> Promise|any
|
|
24
|
-
* switchCase(...argsOrPromises, conditionalFuncsOrPromisesOrValues) -> Promise|any
|
|
25
|
-
* switchCase(conditionalFuncsOrPromisesOrValues)(...args) -> Promise|any
|
|
21
|
+
* switchCase(conditionalValues) -> Promise|any
|
|
22
|
+
* switchCase(...arguments, conditionalFunctionsOrValues) -> Promise|any
|
|
23
|
+
* switchCase(conditionalFunctionsOrValues)(...arguments) -> Promise|any
|
|
26
24
|
* ```
|
|
27
25
|
*
|
|
28
26
|
* @description
|
|
29
|
-
*
|
|
27
|
+
* Conditional function operator. Accepts an array of conditional functions or values that specifies cases as function or value pairs with the exception of the last, default function or value. All functions are provided with the same arguments and executed in series. The result of a conditional execution with `switchCase` is the result of the execution of the first truthy function or value pair, the result of the execution of the last, default function, or the provided last, default value.
|
|
30
28
|
*
|
|
31
29
|
* ```javascript [playground]
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* )
|
|
30
|
+
* function isOdd(n) {
|
|
31
|
+
* return n % 2 == 1
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* switchCase(1, [
|
|
35
|
+
* isOdd,
|
|
36
|
+
* n => console.log(`${n} is odd`),
|
|
37
|
+
* n => console.log(`${n} is even`),
|
|
38
|
+
* ])
|
|
41
39
|
* ```
|
|
42
40
|
*
|
|
43
|
-
*
|
|
41
|
+
* `switchCase` supports a lazy interface for composability.
|
|
44
42
|
*
|
|
45
43
|
* ```javascript [playground]
|
|
46
|
-
* const fruitIsYellow = fruit => fruit.color == 'yellow'
|
|
47
|
-
*
|
|
48
44
|
* const fruitsGuesser = switchCase([
|
|
49
|
-
*
|
|
45
|
+
* fruit => fruit.color == 'yellow',
|
|
50
46
|
* fruit => fruit.name + ' is possibly a banana',
|
|
51
47
|
* fruit => fruit.name + ' is probably not a banana',
|
|
52
48
|
* ])
|
|
53
49
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
50
|
+
* const guess1 = fruitsGuesser({ name: 'plantain', color: 'yellow' })
|
|
51
|
+
* const guess2 = fruitsGuesser({ name: 'apple', color: 'red' })
|
|
56
52
|
*
|
|
57
|
-
* console.log(
|
|
58
|
-
*
|
|
53
|
+
* console.log(guess1)
|
|
54
|
+
* console.log(guess2)
|
|
59
55
|
* ```
|
|
60
56
|
*
|
|
61
|
-
* Any
|
|
57
|
+
* Any item of the conditional array passed to switchCase can be a nonfunction (object or primitive) value.
|
|
62
58
|
*
|
|
63
59
|
* ```javascript [playground]
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
60
|
+
* function identity (value) {
|
|
61
|
+
* return value
|
|
62
|
+
* }
|
|
63
|
+
*
|
|
64
|
+
* const value = switchCase(false, [
|
|
65
|
+
* identity,
|
|
66
|
+
* 'non-function',
|
|
67
|
+
* 'default-value',
|
|
68
|
+
* ])
|
|
69
|
+
*
|
|
70
|
+
* console.log(value)
|
|
71
71
|
* ```
|
|
72
72
|
*
|
|
73
|
-
* If every
|
|
73
|
+
* If every item in the conditional array is a nonfunction value, `switchCase` executes eagerly.
|
|
74
74
|
*
|
|
75
75
|
* ```javascript [playground]
|
|
76
76
|
* const age = 26
|
|
77
77
|
*
|
|
78
|
-
* const myDrink = switchCase([age >= 21, '
|
|
78
|
+
* const myDrink = switchCase([age >= 21, 'Water', 'Juice'])
|
|
79
79
|
*
|
|
80
|
-
* console.log(myDrink)
|
|
80
|
+
* console.log(myDrink)
|
|
81
81
|
* ```
|
|
82
82
|
*
|
|
83
|
-
* Any promises
|
|
83
|
+
* Any promises in `arguments` are resolved for their values before further execution for the eager interface only. Any promises in the conditional array are resolved before further execution for both the lazy and eager interface.
|
|
84
84
|
*
|
|
85
85
|
* ```javascript [playground]
|
|
86
86
|
* switchCase(Promise.resolve(1), 2, Promise.resolve(3), [
|
|
87
87
|
* function doValuesAddUpTo6(a, b, c) {
|
|
88
|
-
* return a + b + c
|
|
88
|
+
* return a + b + c === 6
|
|
89
89
|
* },
|
|
90
|
-
* (a, b, c) => console.log(`${a} + ${b} + ${c}
|
|
91
|
-
* (a, b, c) => console.log(`${a} + ${b} + ${c}
|
|
92
|
-
* ])
|
|
90
|
+
* (a, b, c) => console.log(`${a} + ${b} + ${c} === 6`),
|
|
91
|
+
* (a, b, c) => console.log(`${a} + ${b} + ${c} !== 6`),
|
|
92
|
+
* ])
|
|
93
|
+
*
|
|
94
|
+
* const promise = switchCase(true, [
|
|
95
|
+
* bool => bool,
|
|
96
|
+
* Promise.resolve(1),
|
|
97
|
+
* Promise.resolve(2),
|
|
98
|
+
* ])
|
|
99
|
+
*
|
|
100
|
+
* promise.then(console.log)
|
|
93
101
|
* ```
|
|
94
102
|
*
|
|
95
103
|
* See also:
|
package/tap.js
CHANGED
|
@@ -22,19 +22,16 @@ const _tap = function (args, f) {
|
|
|
22
22
|
*
|
|
23
23
|
* @synopsis
|
|
24
24
|
* ```coffeescript [specscript]
|
|
25
|
-
*
|
|
26
|
-
* argsOrPromises Array<Promise|any>
|
|
27
|
-
*
|
|
28
|
-
* type SyncOrAsyncFunction = (...args)=>Promise|any
|
|
25
|
+
* type SyncOrAsyncFunction = (...arguments)=>Promise|any
|
|
29
26
|
*
|
|
30
27
|
* f SyncOrAsyncFunction
|
|
31
28
|
*
|
|
32
|
-
* tap(...
|
|
33
|
-
* tap(f)(...
|
|
29
|
+
* tap(...arguments, f) -> Promise|arguments[0]
|
|
30
|
+
* tap(f)(...arguments) -> Promise|arguments[0]
|
|
34
31
|
* ```
|
|
35
32
|
*
|
|
36
33
|
* @description
|
|
37
|
-
*
|
|
34
|
+
* Calls a function with provided arguments, returning the first argument. The return value of the function call is discarded.
|
|
38
35
|
*
|
|
39
36
|
* ```javascript [playground]
|
|
40
37
|
* const pipeline = pipe([
|
|
@@ -43,15 +40,13 @@ const _tap = function (args, f) {
|
|
|
43
40
|
* tap(value => console.log(value + 'barbaz')),
|
|
44
41
|
* ])
|
|
45
42
|
*
|
|
46
|
-
* pipeline('foo')
|
|
47
|
-
* // 'foobar'
|
|
48
|
-
* // 'foobarbaz'
|
|
43
|
+
* pipeline('foo')
|
|
49
44
|
* ```
|
|
50
45
|
*
|
|
51
|
-
* Any promises
|
|
46
|
+
* Any promises in `arguments` are resolved for their values before further execution for the eager interface only.
|
|
52
47
|
*
|
|
53
48
|
* ```javascript [playground]
|
|
54
|
-
* tap(Promise.resolve(1), Promise.resolve(2), 3, console.log)
|
|
49
|
+
* tap(Promise.resolve(1), Promise.resolve(2), 3, console.log)
|
|
55
50
|
* ```
|
|
56
51
|
*
|
|
57
52
|
* See also:
|
|
@@ -108,21 +103,20 @@ const _tapIf = function (predicate, f, args) {
|
|
|
108
103
|
*
|
|
109
104
|
* @synopsis
|
|
110
105
|
* ```coffeescript [specscript]
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
* type SyncOrAsyncPredicate = (...args)=>Promise|boolean|any
|
|
115
|
-
* type SyncOrAsyncFunction = (...args)=>Promise|any
|
|
106
|
+
* type SyncOrAsyncPredicate = (...arguments)=>Promise|boolean|any
|
|
107
|
+
* type SyncOrAsyncFunction = (...arguments)=>Promise|any
|
|
116
108
|
*
|
|
117
109
|
* predicate SyncOrAsyncPredicate
|
|
118
110
|
* f SyncOrAsyncFunction
|
|
119
111
|
*
|
|
120
|
-
* tap.if(...
|
|
121
|
-
* tap.if(predicate, f)(...
|
|
112
|
+
* tap.if(...arguments, predicate, f) -> Promise|arguments[0]
|
|
113
|
+
* tap.if(predicate, f)(...arguments) -> Promise|arguments[0]
|
|
122
114
|
* ```
|
|
123
115
|
*
|
|
124
116
|
* @description
|
|
125
|
-
* A version of
|
|
117
|
+
* A version of [tap](/docs/tap) that accepts a predicate function before the function to execute and only executes the function if the predicate function tests true.
|
|
118
|
+
*
|
|
119
|
+
* Arguments passed to `tap.if` are provided to both the predicate function and the function to execute.
|
|
126
120
|
*
|
|
127
121
|
* ```javascript [playground]
|
|
128
122
|
* const isOdd = number => number % 2 == 1
|
|
@@ -130,13 +124,13 @@ const _tapIf = function (predicate, f, args) {
|
|
|
130
124
|
* const logIfOdd = tap.if(isOdd, console.log)
|
|
131
125
|
*
|
|
132
126
|
* logIfOdd(2)
|
|
133
|
-
* logIfOdd(3)
|
|
127
|
+
* logIfOdd(3)
|
|
134
128
|
* ```
|
|
135
129
|
*
|
|
136
|
-
* Any promises
|
|
130
|
+
* Any promises in `arguments` are resolved for their values before further execution for the eager interface only.
|
|
137
131
|
*
|
|
138
132
|
* ```javascript [playground]
|
|
139
|
-
* tap.if(Promise.resolve(1), n => n < 5, console.log)
|
|
133
|
+
* tap.if(Promise.resolve(1), n => n < 5, console.log)
|
|
140
134
|
* tap.if(Promise.resolve(6), n => n < 5, console.log)
|
|
141
135
|
* ```
|
|
142
136
|
*
|
package/transform.js
CHANGED
|
@@ -201,7 +201,7 @@ const _transform = function (collection, transducer, initialValue) {
|
|
|
201
201
|
* promise.then(console.log)
|
|
202
202
|
* ```
|
|
203
203
|
*
|
|
204
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
204
|
+
* Any promises passed in data argument position are resolved for their values before further execution.
|
|
205
205
|
*
|
|
206
206
|
* ```javascript [playground]
|
|
207
207
|
* const promise = transform(
|