rubico 2.6.5 → 2.7.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/Transducer.d.ts +1 -1
- package/Transducer.js +65 -16
- package/__.js +10 -1
- package/all.d.ts +2 -2
- package/all.js +11 -2
- package/always.js +8 -0
- package/and.js +6 -0
- package/assign.js +9 -0
- package/compose.js +33 -8
- package/curry.js +18 -0
- package/dist/Transducer.es.js +2 -2
- package/dist/Transducer.es.min.js +2 -2
- package/dist/Transducer.js +2 -2
- package/dist/Transducer.min.js +2 -2
- package/dist/Transducer.mjs +2 -2
- package/dist/__.es.js +2 -2
- package/dist/__.es.min.js +2 -2
- package/dist/__.js +2 -2
- package/dist/__.min.js +2 -2
- package/dist/__.mjs +2 -2
- package/dist/all.es.js +2 -22
- package/dist/all.es.min.js +2 -2
- package/dist/all.js +2 -22
- package/dist/all.min.js +2 -2
- package/dist/all.mjs +2 -22
- package/dist/always.es.js +2 -2
- package/dist/always.es.min.js +2 -2
- package/dist/always.js +2 -2
- package/dist/always.min.js +2 -2
- package/dist/always.mjs +2 -2
- package/dist/and.es.js +2 -2
- package/dist/and.es.min.js +2 -2
- package/dist/and.js +2 -2
- package/dist/and.min.js +2 -2
- package/dist/and.mjs +2 -2
- package/dist/assign.es.js +2 -2
- package/dist/assign.es.min.js +2 -2
- package/dist/assign.js +2 -2
- package/dist/assign.min.js +2 -2
- package/dist/assign.mjs +2 -2
- package/dist/compose.es.js +6 -2
- package/dist/compose.es.min.js +3 -3
- package/dist/compose.js +6 -2
- package/dist/compose.min.js +3 -3
- package/dist/compose.mjs +6 -2
- package/dist/curry.es.js +2 -2
- package/dist/curry.es.min.js +2 -2
- package/dist/curry.js +2 -2
- package/dist/curry.min.js +2 -2
- package/dist/curry.mjs +2 -2
- package/dist/eq.es.js +2 -2
- package/dist/eq.es.min.js +2 -2
- package/dist/eq.js +2 -2
- package/dist/eq.min.js +2 -2
- package/dist/eq.mjs +2 -2
- package/dist/every.es.js +2 -2
- package/dist/every.es.min.js +2 -2
- package/dist/every.js +2 -2
- package/dist/every.min.js +2 -2
- package/dist/every.mjs +2 -2
- package/dist/filter.es.js +5 -3
- package/dist/filter.es.min.js +3 -3
- package/dist/filter.js +5 -3
- package/dist/filter.min.js +3 -3
- package/dist/filter.mjs +5 -3
- package/dist/flatMap.es.js +2 -2
- package/dist/flatMap.es.min.js +2 -2
- package/dist/flatMap.js +2 -2
- package/dist/flatMap.min.js +2 -2
- package/dist/flatMap.mjs +2 -2
- package/dist/forEach.es.js +2 -2
- package/dist/forEach.es.min.js +2 -2
- package/dist/forEach.js +2 -2
- package/dist/forEach.min.js +2 -2
- package/dist/forEach.mjs +2 -2
- package/dist/get.es.js +2 -2
- package/dist/get.es.min.js +2 -2
- package/dist/get.js +2 -2
- package/dist/get.min.js +2 -2
- package/dist/get.mjs +2 -2
- package/dist/gt.es.js +2 -2
- package/dist/gt.es.min.js +2 -2
- package/dist/gt.js +2 -2
- package/dist/gt.min.js +2 -2
- package/dist/gt.mjs +2 -2
- package/dist/gte.es.js +2 -2
- package/dist/gte.es.min.js +2 -2
- package/dist/gte.js +2 -2
- package/dist/gte.min.js +2 -2
- package/dist/gte.mjs +2 -2
- package/dist/lt.es.js +2 -2
- package/dist/lt.es.min.js +2 -2
- package/dist/lt.js +2 -2
- package/dist/lt.min.js +2 -2
- package/dist/lt.mjs +2 -2
- package/dist/lte.es.js +2 -2
- package/dist/lte.es.min.js +2 -2
- package/dist/lte.js +2 -2
- package/dist/lte.min.js +2 -2
- package/dist/lte.mjs +2 -2
- package/dist/map.es.js +31 -31
- package/dist/map.es.min.js +3 -3
- package/dist/map.js +31 -31
- package/dist/map.min.js +3 -3
- package/dist/map.mjs +31 -31
- package/dist/not.es.js +2 -2
- package/dist/not.es.min.js +2 -2
- package/dist/not.js +2 -2
- package/dist/not.min.js +2 -2
- package/dist/not.mjs +2 -2
- package/dist/omit.es.js +2 -2
- package/dist/omit.es.min.js +2 -2
- package/dist/omit.js +2 -2
- package/dist/omit.min.js +2 -2
- package/dist/omit.mjs +2 -2
- package/dist/or.es.js +2 -2
- package/dist/or.es.min.js +2 -2
- package/dist/or.js +2 -2
- package/dist/or.min.js +2 -2
- package/dist/or.mjs +2 -2
- package/dist/pick.es.js +2 -2
- package/dist/pick.es.min.js +2 -2
- package/dist/pick.js +2 -2
- package/dist/pick.min.js +2 -2
- package/dist/pick.mjs +2 -2
- package/dist/pipe.es.js +6 -2
- package/dist/pipe.es.min.js +3 -3
- package/dist/pipe.js +6 -2
- package/dist/pipe.min.js +3 -3
- package/dist/pipe.mjs +6 -2
- package/dist/reduce.es.js +9 -9
- package/dist/reduce.es.min.js +2 -2
- package/dist/reduce.js +9 -9
- package/dist/reduce.min.js +2 -2
- package/dist/reduce.mjs +9 -9
- package/dist/rubico.es.js +49 -59
- package/dist/rubico.es.min.js +3 -3
- package/dist/rubico.global.js +49 -59
- package/dist/rubico.global.min.js +3 -3
- package/dist/rubico.js +49 -59
- package/dist/rubico.min.js +3 -3
- package/dist/rubico.mjs +49 -59
- package/dist/set.es.js +2 -2
- package/dist/set.es.min.js +2 -2
- package/dist/set.js +2 -2
- package/dist/set.min.js +2 -2
- package/dist/set.mjs +2 -2
- package/dist/some.es.js +2 -2
- package/dist/some.es.min.js +2 -2
- package/dist/some.js +2 -2
- package/dist/some.min.js +2 -2
- package/dist/some.mjs +2 -2
- package/dist/switchCase.es.js +2 -2
- package/dist/switchCase.es.min.js +2 -2
- package/dist/switchCase.js +2 -2
- package/dist/switchCase.min.js +2 -2
- package/dist/switchCase.mjs +2 -2
- package/dist/tap.es.js +2 -2
- package/dist/tap.es.min.js +2 -2
- package/dist/tap.js +2 -2
- package/dist/tap.min.js +2 -2
- package/dist/tap.mjs +2 -2
- package/dist/thunkify.es.js +2 -2
- package/dist/thunkify.es.min.js +2 -2
- package/dist/thunkify.js +2 -2
- package/dist/thunkify.min.js +2 -2
- package/dist/thunkify.mjs +2 -2
- package/dist/transform.es.js +2 -2
- package/dist/transform.es.min.js +2 -2
- package/dist/transform.js +2 -2
- package/dist/transform.min.js +2 -2
- package/dist/transform.mjs +2 -2
- package/dist/tryCatch.es.js +2 -2
- package/dist/tryCatch.es.min.js +2 -2
- package/dist/tryCatch.js +2 -2
- package/dist/tryCatch.min.js +2 -2
- package/dist/tryCatch.mjs +2 -2
- package/dist/x/append.es.js +2 -2
- package/dist/x/append.es.min.js +2 -2
- package/dist/x/append.js +2 -2
- package/dist/x/append.min.js +2 -2
- package/dist/x/append.mjs +2 -2
- package/dist/x/callProp.es.js +2 -2
- package/dist/x/callProp.es.min.js +2 -2
- package/dist/x/callProp.js +2 -2
- package/dist/x/callProp.min.js +2 -2
- package/dist/x/callProp.mjs +2 -2
- package/dist/x/defaultsDeep.es.js +2 -2
- package/dist/x/defaultsDeep.es.min.js +2 -2
- package/dist/x/defaultsDeep.js +2 -2
- package/dist/x/defaultsDeep.min.js +2 -2
- package/dist/x/defaultsDeep.mjs +2 -2
- package/dist/x/differenceWith.es.js +2 -2
- package/dist/x/differenceWith.es.min.js +2 -2
- package/dist/x/differenceWith.js +2 -2
- package/dist/x/differenceWith.min.js +2 -2
- package/dist/x/differenceWith.mjs +2 -2
- package/dist/x/filterOut.es.js +5 -3
- package/dist/x/filterOut.es.min.js +3 -3
- package/dist/x/filterOut.js +5 -3
- package/dist/x/filterOut.min.js +3 -3
- package/dist/x/filterOut.mjs +5 -3
- package/dist/x/find.es.js +2 -2
- package/dist/x/find.es.min.js +2 -2
- package/dist/x/find.js +2 -2
- package/dist/x/find.min.js +2 -2
- package/dist/x/find.mjs +2 -2
- package/dist/x/findIndex.es.js +2 -2
- package/dist/x/findIndex.es.min.js +2 -2
- package/dist/x/findIndex.js +2 -2
- package/dist/x/findIndex.min.js +2 -2
- package/dist/x/findIndex.mjs +2 -2
- package/dist/x/first.es.js +2 -2
- package/dist/x/first.es.min.js +2 -2
- package/dist/x/first.js +2 -2
- package/dist/x/first.min.js +2 -2
- package/dist/x/first.mjs +2 -2
- package/dist/x/flatten.es.js +2 -2
- package/dist/x/flatten.es.min.js +2 -2
- package/dist/x/flatten.js +2 -2
- package/dist/x/flatten.min.js +2 -2
- package/dist/x/flatten.mjs +2 -2
- package/dist/x/groupBy.es.js +9 -9
- package/dist/x/groupBy.es.min.js +2 -2
- package/dist/x/groupBy.js +9 -9
- package/dist/x/groupBy.min.js +2 -2
- package/dist/x/groupBy.mjs +9 -9
- package/dist/x/has.es.js +2 -2
- package/dist/x/has.es.min.js +2 -2
- package/dist/x/has.js +2 -2
- package/dist/x/has.min.js +2 -2
- package/dist/x/has.mjs +2 -2
- package/dist/x/identity.es.js +2 -2
- package/dist/x/identity.es.min.js +2 -2
- package/dist/x/identity.js +2 -2
- package/dist/x/identity.min.js +2 -2
- package/dist/x/identity.mjs +2 -2
- package/dist/x/includes.es.js +2 -2
- package/dist/x/includes.es.min.js +2 -2
- package/dist/x/includes.js +2 -2
- package/dist/x/includes.min.js +2 -2
- package/dist/x/includes.mjs +2 -2
- package/dist/x/isDeepEqual.es.js +2 -2
- package/dist/x/isDeepEqual.es.min.js +2 -2
- package/dist/x/isDeepEqual.js +2 -2
- package/dist/x/isDeepEqual.min.js +2 -2
- package/dist/x/isDeepEqual.mjs +2 -2
- package/dist/x/isEmpty.es.js +2 -2
- package/dist/x/isEmpty.es.min.js +2 -2
- package/dist/x/isEmpty.js +2 -2
- package/dist/x/isEmpty.min.js +2 -2
- package/dist/x/isEmpty.mjs +2 -2
- package/dist/x/isEqual.es.js +2 -2
- package/dist/x/isEqual.es.min.js +2 -2
- package/dist/x/isEqual.js +2 -2
- package/dist/x/isEqual.min.js +2 -2
- package/dist/x/isEqual.mjs +2 -2
- package/dist/x/isFunction.es.js +2 -2
- package/dist/x/isFunction.es.min.js +2 -2
- package/dist/x/isFunction.js +2 -2
- package/dist/x/isFunction.min.js +2 -2
- package/dist/x/isFunction.mjs +2 -2
- package/dist/x/isIn.es.js +2 -2
- package/dist/x/isIn.es.min.js +2 -2
- package/dist/x/isIn.js +2 -2
- package/dist/x/isIn.min.js +2 -2
- package/dist/x/isIn.mjs +2 -2
- package/dist/x/isObject.es.js +2 -2
- package/dist/x/isObject.es.min.js +2 -2
- package/dist/x/isObject.js +2 -2
- package/dist/x/isObject.min.js +2 -2
- package/dist/x/isObject.mjs +2 -2
- package/dist/x/isString.es.js +2 -2
- package/dist/x/isString.es.min.js +2 -2
- package/dist/x/isString.js +2 -2
- package/dist/x/isString.min.js +2 -2
- package/dist/x/isString.mjs +2 -2
- package/dist/x/keys.es.js +2 -2
- package/dist/x/keys.es.min.js +2 -2
- package/dist/x/keys.js +2 -2
- package/dist/x/keys.min.js +2 -2
- package/dist/x/keys.mjs +2 -2
- package/dist/x/last.es.js +2 -2
- package/dist/x/last.es.min.js +2 -2
- package/dist/x/last.js +2 -2
- package/dist/x/last.min.js +2 -2
- package/dist/x/last.mjs +2 -2
- package/dist/x/maxBy.es.js +2 -2
- package/dist/x/maxBy.es.min.js +2 -2
- package/dist/x/maxBy.js +2 -2
- package/dist/x/maxBy.min.js +2 -2
- package/dist/x/maxBy.mjs +2 -2
- package/dist/x/noop.es.js +2 -2
- package/dist/x/noop.es.min.js +2 -2
- package/dist/x/noop.js +2 -2
- package/dist/x/noop.min.js +2 -2
- package/dist/x/noop.mjs +2 -2
- package/dist/x/pluck.es.js +31 -31
- package/dist/x/pluck.es.min.js +3 -3
- package/dist/x/pluck.js +31 -31
- package/dist/x/pluck.min.js +3 -3
- package/dist/x/pluck.mjs +31 -31
- package/dist/x/prepend.es.js +2 -2
- package/dist/x/prepend.es.min.js +2 -2
- package/dist/x/prepend.js +2 -2
- package/dist/x/prepend.min.js +2 -2
- package/dist/x/prepend.mjs +2 -2
- package/dist/x/size.es.js +2 -2
- package/dist/x/size.es.min.js +2 -2
- package/dist/x/size.js +2 -2
- package/dist/x/size.min.js +2 -2
- package/dist/x/size.mjs +2 -2
- package/dist/x/trace.es.js +2 -2
- package/dist/x/trace.es.min.js +2 -2
- package/dist/x/trace.js +2 -2
- package/dist/x/trace.min.js +2 -2
- package/dist/x/trace.mjs +2 -2
- package/dist/x/unionWith.es.js +2 -2
- package/dist/x/unionWith.es.min.js +2 -2
- package/dist/x/unionWith.js +2 -2
- package/dist/x/unionWith.min.js +2 -2
- package/dist/x/unionWith.mjs +2 -2
- package/dist/x/uniq.es.js +2 -2
- package/dist/x/uniq.es.min.js +2 -2
- package/dist/x/uniq.js +2 -2
- package/dist/x/uniq.min.js +2 -2
- package/dist/x/uniq.mjs +2 -2
- package/dist/x/unless.es.js +2 -2
- package/dist/x/unless.es.min.js +2 -2
- package/dist/x/unless.js +2 -2
- package/dist/x/unless.min.js +2 -2
- package/dist/x/unless.mjs +2 -2
- package/dist/x/values.es.js +2 -2
- package/dist/x/values.es.min.js +2 -2
- package/dist/x/values.js +2 -2
- package/dist/x/values.min.js +2 -2
- package/dist/x/values.mjs +2 -2
- package/dist/x/when.es.js +2 -2
- package/dist/x/when.es.min.js +2 -2
- package/dist/x/when.js +2 -2
- package/dist/x/when.min.js +2 -2
- package/dist/x/when.mjs +2 -2
- package/eq.d.ts +6 -6
- package/eq.js +14 -6
- package/es.js +49 -59
- package/every.js +19 -5
- package/filter.js +87 -47
- package/flatMap.js +38 -32
- package/forEach.js +107 -13
- package/get.js +9 -0
- package/gt.js +9 -0
- package/gte.js +9 -0
- package/index.js +49 -59
- package/lte.js +9 -0
- package/map.js +198 -103
- package/not.js +7 -0
- package/omit.d.ts +2 -2
- package/omit.js +11 -2
- package/or.js +6 -0
- package/package.json +1 -3
- package/pick.js +9 -0
- package/pipe.js +30 -3
- package/reduce.js +132 -89
- package/set.js +9 -0
- package/some.js +17 -3
- package/switchCase.js +6 -0
- package/tap.js +14 -0
- package/thunkify.js +8 -0
- package/transform.js +112 -44
- package/tryCatch.js +5 -0
- package/x/append.js +3 -0
- package/x/callProp.js +5 -0
- package/x/defaultsDeep.d.ts +2 -2
- package/x/defaultsDeep.js +7 -2
- package/x/differenceWith.js +5 -0
- package/x/find.d.ts +2 -2
- package/x/find.js +2 -2
- package/x/groupBy.d.ts +2 -2
- package/x/groupBy.js +2 -2
- package/x/pluck.d.ts +2 -2
- package/x/pluck.js +2 -2
- package/x/unionWith.test.js +3 -3
package/map.js
CHANGED
|
@@ -93,93 +93,118 @@ const _map = function (value, f) {
|
|
|
93
93
|
*
|
|
94
94
|
* @synopsis
|
|
95
95
|
* ```coffeescript [specscript]
|
|
96
|
-
* type
|
|
96
|
+
* type Functor = Array|Set|Map|Generator|AsyncGenerator|{ map: function }|Object
|
|
97
97
|
*
|
|
98
98
|
* type Mapper = (
|
|
99
|
-
*
|
|
99
|
+
* item any,
|
|
100
100
|
* indexOrKey number|string|any,
|
|
101
|
-
*
|
|
101
|
+
* ftor Functor
|
|
102
102
|
* )=>(resultItem Promise|any)
|
|
103
103
|
*
|
|
104
|
-
* map(
|
|
105
|
-
* map(
|
|
104
|
+
* map(ftor Promise|Functor, mapper Mapper) -> result Promise|Functor
|
|
105
|
+
* map(mapper Mapper)(ftor Functor) -> result Promise|Functor
|
|
106
106
|
* ```
|
|
107
107
|
*
|
|
108
108
|
* @description
|
|
109
|
-
* Applies a
|
|
109
|
+
* Applies a mapper function to each item of a functor, returning a functor of the same type with the mapped items. The order of the items is maintained.
|
|
110
|
+
*
|
|
111
|
+
* The following data types are considered to be functors:
|
|
112
|
+
* * `array`
|
|
113
|
+
* * `set`
|
|
114
|
+
* * `map`
|
|
115
|
+
* * `generator`
|
|
116
|
+
* * `async generator`
|
|
117
|
+
* * `object with .map method`
|
|
118
|
+
* * `object`
|
|
119
|
+
*
|
|
120
|
+
* The mapper function defines a mapping between a given item in the functor to a resulting item in the returned functor.
|
|
121
|
+
*
|
|
122
|
+
* ```javascript
|
|
123
|
+
* const mapper = function (item) {
|
|
124
|
+
* // resultItem is the result of a mapping from item
|
|
125
|
+
* return resultItem
|
|
126
|
+
* }
|
|
127
|
+
* ```
|
|
110
128
|
*
|
|
111
|
-
*
|
|
112
|
-
* * `Object`
|
|
113
|
-
* * `Set`
|
|
114
|
-
* * `Map`
|
|
115
|
-
* * `Iterator`/`Generator`
|
|
116
|
-
* * `AsyncIterator`/`AsyncGenerator`
|
|
129
|
+
* The mapper function signature changes depending on the provided functor.
|
|
117
130
|
*
|
|
118
|
-
*
|
|
131
|
+
* If the functor is an array:
|
|
132
|
+
* ```coffeescript [specscript]
|
|
133
|
+
* mapper(item any, index number, ftor Array) -> resultItem Promise|any
|
|
134
|
+
* ```
|
|
119
135
|
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
136
|
+
* If the functor is a set:
|
|
137
|
+
* ```coffeescript [specscript]
|
|
138
|
+
* mapper(item any, item any, ftor Set) -> resultItem Promise|any
|
|
139
|
+
* ```
|
|
122
140
|
*
|
|
123
|
-
*
|
|
141
|
+
* If the functor is a map:
|
|
142
|
+
* ```coffeescript [specscript]
|
|
143
|
+
* mapper(item any, key any, ftor Map) -> resultItem Promise|any
|
|
144
|
+
* ```
|
|
145
|
+
*
|
|
146
|
+
* If the functor is a generator:
|
|
147
|
+
* ```coffeescript [specscript]
|
|
148
|
+
* mapper(item any) -> resultItem Promise|any
|
|
149
|
+
* ```
|
|
150
|
+
*
|
|
151
|
+
* If the functor is an async generator:
|
|
152
|
+
* ```coffeescript [specscript]
|
|
153
|
+
* mapper(item any) -> resultItem Promise|any
|
|
154
|
+
* ```
|
|
124
155
|
*
|
|
125
|
-
*
|
|
126
|
-
* map(array, square)
|
|
127
|
-
* ) // [1, 4, 9, 16, 25]
|
|
156
|
+
* If the functor is an object with a `.map` method, the mapper function signature is defined externally.
|
|
128
157
|
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
158
|
+
* If the functor is a plain object:
|
|
159
|
+
* ```coffeescript [specscript]
|
|
160
|
+
* mapper(item any, key string, ftor Object) -> resultItem Promise|any
|
|
132
161
|
* ```
|
|
133
162
|
*
|
|
134
|
-
*
|
|
163
|
+
* `map` works for arrays.
|
|
135
164
|
*
|
|
136
165
|
* ```javascript [playground]
|
|
137
166
|
* const square = number => number ** 2
|
|
138
167
|
*
|
|
139
|
-
* const
|
|
168
|
+
* const array = [1, 2, 3, 4, 5]
|
|
169
|
+
*
|
|
170
|
+
* const result = map(array, square)
|
|
171
|
+
* console.log(result) // [1, 4, 9, 16, 25]
|
|
172
|
+
* ```
|
|
140
173
|
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
174
|
+
* The mapper function may be asynchronous, in which case it is applied concurrently.
|
|
175
|
+
*
|
|
176
|
+
* ```javascript [playground]
|
|
177
|
+
* const asyncSquare = async number => number ** 2
|
|
178
|
+
*
|
|
179
|
+
* const array = [1, 2, 3, 4, 5]
|
|
144
180
|
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
* ) // { a: 1, b: 4, c: 9, d: 16, e: 25 }
|
|
181
|
+
* const promise = map(array, asyncSquare)
|
|
182
|
+
* promise.then(console.log) // [1, 4, 9, 16, 25]
|
|
148
183
|
* ```
|
|
149
184
|
*
|
|
150
|
-
*
|
|
185
|
+
* `map` applies the mapper function to just the values of an object.
|
|
151
186
|
*
|
|
152
187
|
* ```javascript [playground]
|
|
153
188
|
* const square = number => number ** 2
|
|
154
189
|
*
|
|
155
|
-
* const
|
|
156
|
-
*
|
|
157
|
-
* console.log(
|
|
158
|
-
* map(set, square)
|
|
159
|
-
* ) // [1, 4, 9, 16, 25]
|
|
190
|
+
* const obj = { a: 1, b: 2, c: 3, d: 4, e: 5 }
|
|
160
191
|
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
163
|
-
* ) // [1, 4, 9, 16, 25]
|
|
192
|
+
* const result = map(obj, square)
|
|
193
|
+
* console.log(result) // { a: 1, b: 4, c: 9, d: 16, e: 25 }
|
|
164
194
|
* ```
|
|
165
195
|
*
|
|
166
|
-
*
|
|
196
|
+
* `map` applies the mapper function to the values of the entries of a map.
|
|
167
197
|
*
|
|
168
198
|
* ```javascript [playground]
|
|
169
199
|
* const square = number => number ** 2
|
|
170
200
|
*
|
|
171
201
|
* const m = new Map([['a', 1], ['b', 2], ['c', 3], ['d', 4], ['e', 5]])
|
|
172
202
|
*
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
* ) // Map { 'a' => 1, 'b' => 4, 'c' => 9, 'd' => 16, 'e' => 25 }
|
|
176
|
-
*
|
|
177
|
-
* console.log(
|
|
178
|
-
* map(m, square)
|
|
179
|
-
* ) // Map { 'a' => 1, 'b' => 4, 'c' => 9, 'd' => 16, 'e' => 25 }
|
|
203
|
+
* const result = map(m, square)
|
|
204
|
+
* console.log(result) // Map { 'a' => 1, 'b' => 4, 'c' => 9, 'd' => 16, 'e' => 25 }
|
|
180
205
|
* ```
|
|
181
206
|
*
|
|
182
|
-
*
|
|
207
|
+
* `map` applies the mapper function lazily to each value of a generator, creating a new generator with mapped items.
|
|
183
208
|
*
|
|
184
209
|
* ```javascript [playground]
|
|
185
210
|
* const capitalize = string => string.toUpperCase()
|
|
@@ -190,16 +215,13 @@ const _map = function (value, f) {
|
|
|
190
215
|
*
|
|
191
216
|
* const abcGenerator = abcGeneratorFunc()
|
|
192
217
|
* const ABCGenerator = map(abcGeneratorFunc(), capitalize)
|
|
193
|
-
* const ABCGenerator2 = map(capitalize)(abcGeneratorFunc())
|
|
194
218
|
*
|
|
195
219
|
* console.log([...abcGenerator]) // ['a', 'b', 'c']
|
|
196
220
|
*
|
|
197
221
|
* console.log([...ABCGenerator]) // ['A', 'B', 'C']
|
|
198
|
-
*
|
|
199
|
-
* console.log([...ABCGenerator2]) // ['A', 'B', 'C']
|
|
200
222
|
* ```
|
|
201
223
|
*
|
|
202
|
-
*
|
|
224
|
+
* `map` applies the mapper function lazily to each value of an async generator, creating a new async generator with mapped items.
|
|
203
225
|
*
|
|
204
226
|
* ```javascript [playground]
|
|
205
227
|
* const capitalize = string => string.toUpperCase()
|
|
@@ -210,7 +232,6 @@ const _map = function (value, f) {
|
|
|
210
232
|
*
|
|
211
233
|
* const abcAsyncGenerator = abcAsyncGeneratorFunc()
|
|
212
234
|
* const ABCGenerator = map(abcAsyncGeneratorFunc(), capitalize)
|
|
213
|
-
* const ABCGenerator2 = map(capitalize)(abcAsyncGeneratorFunc())
|
|
214
235
|
*
|
|
215
236
|
* ;(async function () {
|
|
216
237
|
* for await (const letter of abcAsyncGenerator) {
|
|
@@ -226,13 +247,6 @@ const _map = function (value, f) {
|
|
|
226
247
|
* // B
|
|
227
248
|
* // C
|
|
228
249
|
* }
|
|
229
|
-
*
|
|
230
|
-
* for await (const letter of ABCGenerator2) {
|
|
231
|
-
* console.log(letter)
|
|
232
|
-
* // A
|
|
233
|
-
* // B
|
|
234
|
-
* // C
|
|
235
|
-
* }
|
|
236
250
|
* })()
|
|
237
251
|
* ```
|
|
238
252
|
*
|
|
@@ -245,6 +259,17 @@ const _map = function (value, f) {
|
|
|
245
259
|
* // [1, 4, 9, 16, 25]
|
|
246
260
|
* ```
|
|
247
261
|
*
|
|
262
|
+
* See also:
|
|
263
|
+
* * [forEach](/docs/forEach)
|
|
264
|
+
* * [map.entries](/docs/map.entries)
|
|
265
|
+
* * [map.series](/docs/map.series)
|
|
266
|
+
* * [map.pool](/docs/map.pool)
|
|
267
|
+
* * [filter](/docs/filter)
|
|
268
|
+
* * [reduce](/docs/reduce)
|
|
269
|
+
* * [transform](/docs/transform)
|
|
270
|
+
* * [flatMap](/docs/flatMap)
|
|
271
|
+
* * [some](/docs/some)
|
|
272
|
+
*
|
|
248
273
|
* @execution concurrent
|
|
249
274
|
*
|
|
250
275
|
* @TODO streamMap
|
|
@@ -277,23 +302,49 @@ const _mapEntries = (value, f) => {
|
|
|
277
302
|
*
|
|
278
303
|
* @synopsis
|
|
279
304
|
* ```coffeescript [specscript]
|
|
280
|
-
* type
|
|
305
|
+
* type FunctorWithEntries = Map|Object
|
|
281
306
|
*
|
|
282
|
-
* type
|
|
283
|
-
* value any,
|
|
284
|
-
*
|
|
285
|
-
* collection EntriesMappable
|
|
286
|
-
* )=>(resultItem Promise|any)
|
|
307
|
+
* type EntryMapper = (
|
|
308
|
+
* entry [key string|any, value any],
|
|
309
|
+
* )=>(resultEntry Promise|[resultKey string|any, resultItem any])
|
|
287
310
|
*
|
|
288
|
-
* map.entries(
|
|
289
|
-
*
|
|
311
|
+
* map.entries(
|
|
312
|
+
* value Promise|FunctorWithEntries,
|
|
313
|
+
* mapper EntryMapper
|
|
314
|
+
* ) -> Promise|FunctorWithEntries
|
|
290
315
|
*
|
|
291
|
-
* map.entries(
|
|
292
|
-
* -> Promise|
|
|
316
|
+
* map.entries(mapper EntryMapper)(value FunctorWithEntries)
|
|
317
|
+
* -> Promise|FunctorWithEntries
|
|
293
318
|
* ```
|
|
294
319
|
*
|
|
295
320
|
* @description
|
|
296
|
-
* `map` over the entries
|
|
321
|
+
* `map` over the entries of a functor as opposed to the values.
|
|
322
|
+
*
|
|
323
|
+
* The following data types are considered to be functors with entries:
|
|
324
|
+
* * `map`
|
|
325
|
+
* * `object`
|
|
326
|
+
*
|
|
327
|
+
* The signature of the mapper function changes depending on the provided functor:
|
|
328
|
+
*
|
|
329
|
+
* If the functor is a map:
|
|
330
|
+
*
|
|
331
|
+
* ```coffeescript [specscript]
|
|
332
|
+
* mapper(entry [key any, value any]) -> resultEntry Promise|[
|
|
333
|
+
* resultKey any,
|
|
334
|
+
* resultValue any,
|
|
335
|
+
* ]
|
|
336
|
+
* ```
|
|
337
|
+
*
|
|
338
|
+
* If the functor is an object:
|
|
339
|
+
*
|
|
340
|
+
* ```coffeescript [specscript]
|
|
341
|
+
* mapper(entry [key string, value any]) -> resultEntry Promise|[
|
|
342
|
+
* resultKey string,
|
|
343
|
+
* resultValue any,
|
|
344
|
+
* ]
|
|
345
|
+
* ```
|
|
346
|
+
*
|
|
347
|
+
* `map.entries` works for objects and maps.
|
|
297
348
|
*
|
|
298
349
|
* ```javascript [playground]
|
|
299
350
|
* const upperCaseKeysAndSquareValues =
|
|
@@ -318,6 +369,17 @@ const _mapEntries = (value, f) => {
|
|
|
318
369
|
* // { a: 1, b: 4, c: 9 }
|
|
319
370
|
* ```
|
|
320
371
|
*
|
|
372
|
+
* See also:
|
|
373
|
+
* * [forEach](/docs/forEach)
|
|
374
|
+
* * [map](/docs/map)
|
|
375
|
+
* * [map.series](/docs/map.series)
|
|
376
|
+
* * [map.pool](/docs/map.pool)
|
|
377
|
+
* * [filter](/docs/filter)
|
|
378
|
+
* * [reduce](/docs/reduce)
|
|
379
|
+
* * [transform](/docs/transform)
|
|
380
|
+
* * [flatMap](/docs/flatMap)
|
|
381
|
+
* * [some](/docs/some)
|
|
382
|
+
*
|
|
321
383
|
* @since v1.7.0
|
|
322
384
|
*/
|
|
323
385
|
map.entries = function mapEntries(arg0, arg1) {
|
|
@@ -334,15 +396,15 @@ map.entries = function mapEntries(arg0, arg1) {
|
|
|
334
396
|
*
|
|
335
397
|
* @synopsis
|
|
336
398
|
* ```coffeescript [specscript]
|
|
337
|
-
* type
|
|
399
|
+
* type Functor = Array|Object|Set|Map
|
|
338
400
|
*
|
|
339
401
|
* type Mapper = (
|
|
340
402
|
* value any,
|
|
341
403
|
* indexOrKey number|string|any,
|
|
342
|
-
*
|
|
404
|
+
* f Functor
|
|
343
405
|
* )=>(mappedItem Promise|any)
|
|
344
406
|
*
|
|
345
|
-
* _mapSeries(
|
|
407
|
+
* _mapSeries(f Functor, f Mapper) -> result Promise|Functor
|
|
346
408
|
* ```
|
|
347
409
|
*/
|
|
348
410
|
const _mapSeries = function (collection, f) {
|
|
@@ -373,16 +435,21 @@ const _mapSeries = function (collection, f) {
|
|
|
373
435
|
*
|
|
374
436
|
* @synopsis
|
|
375
437
|
* ```coffeescript [specscript]
|
|
376
|
-
* type
|
|
438
|
+
* type MapSeriesFunctor = Array|Object|Set|Map
|
|
377
439
|
*
|
|
378
440
|
* type Mapper = (
|
|
379
441
|
* value any,
|
|
380
442
|
* indexOrKey number|string|any,
|
|
381
|
-
*
|
|
443
|
+
* ftor MapSeriesFunctor,
|
|
382
444
|
* )=>(mappedItem Promise|any)
|
|
383
445
|
*
|
|
384
|
-
* map.series(
|
|
385
|
-
*
|
|
446
|
+
* map.series(
|
|
447
|
+
* ftor Promise|MapSeriesFunctor,
|
|
448
|
+
* mapper Mapper
|
|
449
|
+
* ) -> result MapSeriesFunctor
|
|
450
|
+
*
|
|
451
|
+
* map.series(mapper Mapper)(ftor MapSeriesFunctor)
|
|
452
|
+
* -> result MapSeriesFunctor
|
|
386
453
|
* ```
|
|
387
454
|
*
|
|
388
455
|
* @description
|
|
@@ -409,6 +476,17 @@ const _mapSeries = function (collection, f) {
|
|
|
409
476
|
* // [1, 4, 9, 16, 25]
|
|
410
477
|
* ```
|
|
411
478
|
*
|
|
479
|
+
* See also:
|
|
480
|
+
* * [forEach](/docs/forEach)
|
|
481
|
+
* * [map](/docs/map)
|
|
482
|
+
* * [map.entries](/docs/map.entries)
|
|
483
|
+
* * [map.pool](/docs/map.pool)
|
|
484
|
+
* * [filter](/docs/filter)
|
|
485
|
+
* * [reduce](/docs/reduce)
|
|
486
|
+
* * [transform](/docs/transform)
|
|
487
|
+
* * [flatMap](/docs/flatMap)
|
|
488
|
+
* * [some](/docs/some)
|
|
489
|
+
*
|
|
412
490
|
* @execution series
|
|
413
491
|
*/
|
|
414
492
|
map.series = function mapSeries(arg0, arg1) {
|
|
@@ -425,31 +503,31 @@ map.series = function mapSeries(arg0, arg1) {
|
|
|
425
503
|
*
|
|
426
504
|
* @synopsis
|
|
427
505
|
* ```coffeescript [specscript]
|
|
428
|
-
* type
|
|
506
|
+
* type Functor = Array|Object|Set|Map
|
|
429
507
|
*
|
|
430
|
-
* _mapPool(
|
|
508
|
+
* _mapPool(f Functor, concurrency number, mapper function) -> result Promise|Functor
|
|
431
509
|
* ```
|
|
432
510
|
*/
|
|
433
|
-
const _mapPool = function (
|
|
434
|
-
if (isArray(
|
|
435
|
-
return arrayMapPool(
|
|
511
|
+
const _mapPool = function (f, concurrency, mapper) {
|
|
512
|
+
if (isArray(f)) {
|
|
513
|
+
return arrayMapPool(f, concurrency, mapper)
|
|
436
514
|
}
|
|
437
|
-
if (
|
|
438
|
-
throw new TypeError(`invalid
|
|
515
|
+
if (f == null) {
|
|
516
|
+
throw new TypeError(`invalid functor ${f}`)
|
|
439
517
|
}
|
|
440
|
-
if (typeof
|
|
441
|
-
return stringMapPool(
|
|
518
|
+
if (typeof f == 'string' || f.constructor == String) {
|
|
519
|
+
return stringMapPool(f, concurrency, mapper)
|
|
442
520
|
}
|
|
443
|
-
if (
|
|
444
|
-
return setMapPool(
|
|
521
|
+
if (f.constructor == Set) {
|
|
522
|
+
return setMapPool(f, concurrency, mapper)
|
|
445
523
|
}
|
|
446
|
-
if (
|
|
447
|
-
return mapMapPool(
|
|
524
|
+
if (f.constructor == Map) {
|
|
525
|
+
return mapMapPool(f, concurrency, mapper)
|
|
448
526
|
}
|
|
449
|
-
if (
|
|
450
|
-
return objectMapPool(
|
|
527
|
+
if (f.constructor == Object) {
|
|
528
|
+
return objectMapPool(f, concurrency, mapper)
|
|
451
529
|
}
|
|
452
|
-
throw new TypeError(`invalid
|
|
530
|
+
throw new TypeError(`invalid functor ${f}`)
|
|
453
531
|
}
|
|
454
532
|
|
|
455
533
|
/**
|
|
@@ -457,18 +535,24 @@ const _mapPool = function (collection, concurrency, f) {
|
|
|
457
535
|
*
|
|
458
536
|
* @synopsis
|
|
459
537
|
* ```coffeescript [specscript]
|
|
460
|
-
* type
|
|
538
|
+
* type MapPoolFunctor = Array|Object|Set|Map
|
|
539
|
+
*
|
|
540
|
+
* type Mapper = (
|
|
541
|
+
* item any,
|
|
542
|
+
* indexOrKey number|string|any,
|
|
543
|
+
* ftor Functor
|
|
544
|
+
* )=>(resultItem Promise|any)
|
|
461
545
|
*
|
|
462
546
|
* map.pool(
|
|
547
|
+
* ftor MapPoolFunctor,
|
|
463
548
|
* concurrency number,
|
|
464
|
-
* mapper
|
|
465
|
-
* )
|
|
549
|
+
* mapper Mapper
|
|
550
|
+
* ) -> result Promise|Array
|
|
466
551
|
*
|
|
467
552
|
* map.pool(
|
|
468
|
-
* collection Mappable,
|
|
469
553
|
* concurrency number,
|
|
470
|
-
* mapper
|
|
471
|
-
* ) -> result Promise|Array
|
|
554
|
+
* mapper Mapper
|
|
555
|
+
* )(ftor MapPoolFunctor) -> result Promise|Array
|
|
472
556
|
* ```
|
|
473
557
|
*
|
|
474
558
|
* @description
|
|
@@ -499,6 +583,17 @@ const _mapPool = function (collection, concurrency, f) {
|
|
|
499
583
|
* // [1, 4, 9, 16, 25]
|
|
500
584
|
* ```
|
|
501
585
|
*
|
|
586
|
+
* See also:
|
|
587
|
+
* * [forEach](/docs/forEach)
|
|
588
|
+
* * [map](/docs/map)
|
|
589
|
+
* * [map.entries](/docs/map.entries)
|
|
590
|
+
* * [map.series](/docs/map.series)
|
|
591
|
+
* * [filter](/docs/filter)
|
|
592
|
+
* * [reduce](/docs/reduce)
|
|
593
|
+
* * [transform](/docs/transform)
|
|
594
|
+
* * [flatMap](/docs/flatMap)
|
|
595
|
+
* * [some](/docs/some)
|
|
596
|
+
*
|
|
502
597
|
* @TODO objectMapPool
|
|
503
598
|
*
|
|
504
599
|
* @execution concurrent
|
|
@@ -517,15 +612,15 @@ map.pool = function mapPool(arg0, arg1, arg2) {
|
|
|
517
612
|
*
|
|
518
613
|
* @synopsis
|
|
519
614
|
* ```coffeescript [specscript]
|
|
520
|
-
* type
|
|
615
|
+
* type Functor = Array|Object|Set|Map
|
|
521
616
|
*
|
|
522
617
|
* map.rate(
|
|
523
618
|
* rate number,
|
|
524
619
|
* f (value any)=>Promise|any,
|
|
525
|
-
* )(
|
|
620
|
+
* )(f Functor) -> result Promise|Array
|
|
526
621
|
*
|
|
527
622
|
* map.rate(
|
|
528
|
-
*
|
|
623
|
+
* f Functor,
|
|
529
624
|
* rate number,
|
|
530
625
|
* f (value any)=>Promise|any,
|
|
531
626
|
* ) -> result Promise|Array
|
package/not.js
CHANGED
|
@@ -53,6 +53,13 @@ const _not = function (args, predicate) {
|
|
|
53
53
|
*
|
|
54
54
|
* not(Promise.resolve(3), isOdd).then(console.log) // false
|
|
55
55
|
* ```
|
|
56
|
+
*
|
|
57
|
+
* See also:
|
|
58
|
+
* * [some](/docs/some)
|
|
59
|
+
* * [and](/docs/and)
|
|
60
|
+
* * [or](/docs/or)
|
|
61
|
+
* * [eq](/docs/eq)
|
|
62
|
+
*
|
|
56
63
|
*/
|
|
57
64
|
|
|
58
65
|
const not = function (...args) {
|
package/omit.d.ts
CHANGED
|
@@ -14,8 +14,8 @@ export = omit;
|
|
|
14
14
|
*
|
|
15
15
|
* ```javascript [playground]
|
|
16
16
|
* console.log(
|
|
17
|
-
* omit({ _id: '1', name: '
|
|
18
|
-
* ) // { name: '
|
|
17
|
+
* omit({ _id: '1', name: 'John' }, ['_id']),
|
|
18
|
+
* ) // { name: 'John' }
|
|
19
19
|
* ```
|
|
20
20
|
*
|
|
21
21
|
* `omit` supports three types of path patterns for nested property access
|
package/omit.js
CHANGED
|
@@ -30,8 +30,8 @@ const _omit = function (source, paths) {
|
|
|
30
30
|
*
|
|
31
31
|
* ```javascript [playground]
|
|
32
32
|
* console.log(
|
|
33
|
-
* omit({ _id: '1', name: '
|
|
34
|
-
* ) // { name: '
|
|
33
|
+
* omit({ _id: '1', name: 'John' }, ['_id']),
|
|
34
|
+
* ) // { name: 'John' }
|
|
35
35
|
* ```
|
|
36
36
|
*
|
|
37
37
|
* `omit` supports three types of path patterns for nested property access
|
|
@@ -69,6 +69,15 @@ const _omit = function (source, paths) {
|
|
|
69
69
|
* omit(Promise.resolve({ a: 1, b: 2, c: 3 }), ['a', 'b']).then(console.log)
|
|
70
70
|
* // { c: 3 }
|
|
71
71
|
* ```
|
|
72
|
+
*
|
|
73
|
+
* See also:
|
|
74
|
+
* * [pipe](/docs/pipe)
|
|
75
|
+
* * [all](/docs/all)
|
|
76
|
+
* * [assign](/docs/assign)
|
|
77
|
+
* * [get](/docs/get)
|
|
78
|
+
* * [set](/docs/set)
|
|
79
|
+
* * [pick](/docs/pick)
|
|
80
|
+
* * [forEach](/docs/forEach)
|
|
72
81
|
*/
|
|
73
82
|
const omit = function (arg0, arg1) {
|
|
74
83
|
if (arg1 == null) {
|
package/or.js
CHANGED
|
@@ -138,6 +138,12 @@ const areAnyPredicatesTruthy = function (args, predicates) {
|
|
|
138
138
|
* ]).then(console.log) // true
|
|
139
139
|
* ```
|
|
140
140
|
*
|
|
141
|
+
* See also:
|
|
142
|
+
* * [some](/docs/some)
|
|
143
|
+
* * [and](/docs/and)
|
|
144
|
+
* * [not](/docs/not)
|
|
145
|
+
* * [eq](/docs/eq)
|
|
146
|
+
*
|
|
141
147
|
* @execution series
|
|
142
148
|
*
|
|
143
149
|
* @note ...args slows down here by an order of magnitude
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rubico",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.0",
|
|
4
4
|
"description": "[a]synchronous functional programming",
|
|
5
5
|
"author": "Richard Tong",
|
|
6
6
|
"license": "MIT",
|
|
@@ -115,7 +115,6 @@
|
|
|
115
115
|
"async": "latest",
|
|
116
116
|
"bluebird": "latest",
|
|
117
117
|
"codecov": "^3.7.1",
|
|
118
|
-
"eslint": "^9.22.0",
|
|
119
118
|
"fantasy-land": "latest",
|
|
120
119
|
"lodash": "latest",
|
|
121
120
|
"mocha": "^11.1.0",
|
|
@@ -129,7 +128,6 @@
|
|
|
129
128
|
"scripts": {
|
|
130
129
|
"test": "mocha test.js *.test.js */**.test.js",
|
|
131
130
|
"test-coverage": "nyc mocha test.js x/*.test.js monad/*.test.js",
|
|
132
|
-
"lint": "eslint .",
|
|
133
131
|
"build": "npm run dts && ./build",
|
|
134
132
|
"bench": "./bench",
|
|
135
133
|
"dts": "del *.d.ts _internal/*.d.ts x/*.d.ts && tsc"
|
package/pick.js
CHANGED
|
@@ -69,6 +69,15 @@ const _pick = function (source, keys) {
|
|
|
69
69
|
* pick(Promise.resolve({ a: 1, b: 2, c: 3 }), ['a', 'b']).then(console.log)
|
|
70
70
|
* // { a: 1, b: 2 }
|
|
71
71
|
* ```
|
|
72
|
+
*
|
|
73
|
+
* See also:
|
|
74
|
+
* * [pipe](/docs/pipe)
|
|
75
|
+
* * [all](/docs/all)
|
|
76
|
+
* * [assign](/docs/assign)
|
|
77
|
+
* * [get](/docs/get)
|
|
78
|
+
* * [set](/docs/set)
|
|
79
|
+
* * [omit](/docs/omit)
|
|
80
|
+
* * [forEach](/docs/forEach)
|
|
72
81
|
*/
|
|
73
82
|
const pick = function (arg0, arg1) {
|
|
74
83
|
if (arg1 == null) {
|
package/pipe.js
CHANGED
|
@@ -10,13 +10,19 @@ const __ = require('./_internal/placeholder')
|
|
|
10
10
|
*
|
|
11
11
|
* @synopsis
|
|
12
12
|
* ```coffeescript [specscript]
|
|
13
|
-
*
|
|
13
|
+
* funcs Array<function>
|
|
14
|
+
* args Array<any>
|
|
15
|
+
* argsWithPromises Array<Promise|any>
|
|
14
16
|
*
|
|
15
|
-
* pipe(...args
|
|
17
|
+
* pipe(funcs)(...args) -> result Promise|any
|
|
18
|
+
*
|
|
19
|
+
* pipe(...argsWithPromises, funcs Array<function>) -> result Promise|any
|
|
20
|
+
*
|
|
21
|
+
* pipe(...funcs)(...args) -> result Promise|any
|
|
16
22
|
* ```
|
|
17
23
|
*
|
|
18
24
|
* @description
|
|
19
|
-
* Creates a function pipeline from
|
|
25
|
+
* Creates a function pipeline from multiple functions. Each function in the pipeline is evaluated in series, passing its return value as an argument to the next function. The result of a pipeline execution is the return value of the last function in the pipeline. If any function in the pipeline is asynchronous, the result of the pipeline execution is a Promise.
|
|
20
26
|
*
|
|
21
27
|
* ```javascript [playground]
|
|
22
28
|
* const syncAdd123 = pipe([
|
|
@@ -36,6 +42,17 @@ const __ = require('./_internal/placeholder')
|
|
|
36
42
|
* asyncAdd123(5).then(console.log) // 11
|
|
37
43
|
* ```
|
|
38
44
|
*
|
|
45
|
+
* `pipe` supports a mathematical API
|
|
46
|
+
*
|
|
47
|
+
* ```javascript [playground]
|
|
48
|
+
* const appendB = x => x + 'b'
|
|
49
|
+
* const appendC = x => x + 'c'
|
|
50
|
+
*
|
|
51
|
+
* const appendBC = pipe(appendB, appendC)
|
|
52
|
+
*
|
|
53
|
+
* console.log(appendBC(a)) // 'abc'
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
39
56
|
* When passed any amount of arguments before the array of functions, `pipe` executes eagerly; the array of functions is immediately invoked with the supplied arguments.
|
|
40
57
|
*
|
|
41
58
|
* ```javascript [playground]
|
|
@@ -54,6 +71,12 @@ const __ = require('./_internal/placeholder')
|
|
|
54
71
|
* ])
|
|
55
72
|
* ```
|
|
56
73
|
*
|
|
74
|
+
* See also:
|
|
75
|
+
* * [compose](/docs/compose)
|
|
76
|
+
* * [tap](/docs/tap)
|
|
77
|
+
* * [switchCase](/docs/switchCase)
|
|
78
|
+
* * [tryCatch](/docs/tryCatch)
|
|
79
|
+
*
|
|
57
80
|
* @execution series
|
|
58
81
|
*
|
|
59
82
|
* @transducing
|
|
@@ -61,6 +84,10 @@ const __ = require('./_internal/placeholder')
|
|
|
61
84
|
* @since 1.6.0
|
|
62
85
|
*/
|
|
63
86
|
const pipe = function (...args) {
|
|
87
|
+
if (typeof args[0] == 'function') {
|
|
88
|
+
return args.reduce(funcConcat)
|
|
89
|
+
}
|
|
90
|
+
|
|
64
91
|
const funcs = args.pop()
|
|
65
92
|
const pipeline = funcs.reduce(funcConcat)
|
|
66
93
|
|