rubico 2.11.0 → 2.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -20
- package/Transducer.js +37 -58
- package/__.js +3 -3
- package/always.js +4 -4
- package/and.js +34 -26
- package/assign.js +2 -2
- package/compose.js +1 -0
- package/curry.js +48 -28
- package/dist/Transducer.es.js +1 -1
- package/dist/Transducer.es.min.js +1 -1
- package/dist/Transducer.js +1 -1
- package/dist/Transducer.min.js +1 -1
- package/dist/Transducer.mjs +1 -1
- package/dist/__.es.js +1 -1
- package/dist/__.es.min.js +1 -1
- package/dist/__.js +1 -1
- package/dist/__.min.js +1 -1
- package/dist/__.mjs +1 -1
- package/dist/all.es.js +1 -1
- package/dist/all.es.min.js +1 -1
- package/dist/all.js +1 -1
- package/dist/all.min.js +1 -1
- package/dist/all.mjs +1 -1
- package/dist/always.es.js +1 -1
- package/dist/always.es.min.js +1 -1
- package/dist/always.js +1 -1
- package/dist/always.min.js +1 -1
- package/dist/always.mjs +1 -1
- package/dist/and.es.js +1 -1
- package/dist/and.es.min.js +1 -1
- package/dist/and.js +1 -1
- package/dist/and.min.js +1 -1
- package/dist/and.mjs +1 -1
- package/dist/assign.es.js +1 -1
- package/dist/assign.es.min.js +1 -1
- package/dist/assign.js +1 -1
- package/dist/assign.min.js +1 -1
- package/dist/assign.mjs +1 -1
- package/dist/compose.es.js +1 -1
- package/dist/compose.es.min.js +1 -1
- package/dist/compose.js +1 -1
- package/dist/compose.min.js +1 -1
- package/dist/compose.mjs +1 -1
- package/dist/curry.es.js +1 -1
- package/dist/curry.es.min.js +1 -1
- package/dist/curry.js +1 -1
- package/dist/curry.min.js +1 -1
- package/dist/curry.mjs +1 -1
- package/dist/eq.es.js +1 -1
- package/dist/eq.es.min.js +1 -1
- package/dist/eq.js +1 -1
- package/dist/eq.min.js +1 -1
- package/dist/eq.mjs +1 -1
- package/dist/every.es.js +1 -1
- package/dist/every.es.min.js +1 -1
- package/dist/every.js +1 -1
- package/dist/every.min.js +1 -1
- package/dist/every.mjs +1 -1
- package/dist/filter.es.js +113 -19
- package/dist/filter.es.min.js +2 -2
- package/dist/filter.js +113 -19
- package/dist/filter.min.js +2 -2
- package/dist/filter.mjs +113 -19
- package/dist/flatMap.es.js +1 -1
- package/dist/flatMap.es.min.js +1 -1
- package/dist/flatMap.js +1 -1
- package/dist/flatMap.min.js +1 -1
- package/dist/flatMap.mjs +1 -1
- package/dist/forEach.es.js +1 -1
- package/dist/forEach.es.min.js +1 -1
- package/dist/forEach.js +1 -1
- package/dist/forEach.min.js +1 -1
- package/dist/forEach.mjs +1 -1
- package/dist/get.es.js +1 -1
- package/dist/get.es.min.js +1 -1
- package/dist/get.js +1 -1
- package/dist/get.min.js +1 -1
- package/dist/get.mjs +1 -1
- package/dist/gt.es.js +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 +1 -1
- package/dist/map.es.min.js +1 -1
- package/dist/map.js +1 -1
- package/dist/map.min.js +1 -1
- package/dist/map.mjs +1 -1
- package/dist/not.es.js +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 +57 -19
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.global.js +57 -19
- package/dist/rubico.global.min.js +2 -2
- package/dist/rubico.js +57 -19
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.mjs +57 -19
- 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 +113 -19
- package/dist/x/filterOut.es.min.js +2 -2
- package/dist/x/filterOut.js +113 -19
- package/dist/x/filterOut.min.js +2 -2
- package/dist/x/filterOut.mjs +113 -19
- package/dist/x/find.es.js +1 -1
- package/dist/x/find.es.min.js +1 -1
- package/dist/x/find.js +1 -1
- package/dist/x/find.min.js +1 -1
- package/dist/x/find.mjs +1 -1
- package/dist/x/findIndex.es.js +1 -1
- package/dist/x/findIndex.es.min.js +1 -1
- package/dist/x/findIndex.js +1 -1
- package/dist/x/findIndex.min.js +1 -1
- package/dist/x/findIndex.mjs +1 -1
- package/dist/x/first.es.js +1 -1
- package/dist/x/first.es.min.js +1 -1
- package/dist/x/first.js +1 -1
- package/dist/x/first.min.js +1 -1
- package/dist/x/first.mjs +1 -1
- package/dist/x/flatten.es.js +1 -1
- package/dist/x/flatten.es.min.js +1 -1
- package/dist/x/flatten.js +1 -1
- package/dist/x/flatten.min.js +1 -1
- package/dist/x/flatten.mjs +1 -1
- package/dist/x/groupBy.es.js +1 -1
- package/dist/x/groupBy.es.min.js +1 -1
- package/dist/x/groupBy.js +1 -1
- package/dist/x/groupBy.min.js +1 -1
- package/dist/x/groupBy.mjs +1 -1
- package/dist/x/has.es.js +1 -1
- package/dist/x/has.es.min.js +1 -1
- package/dist/x/has.js +1 -1
- package/dist/x/has.min.js +1 -1
- package/dist/x/has.mjs +1 -1
- package/dist/x/identity.es.js +1 -1
- package/dist/x/identity.es.min.js +1 -1
- package/dist/x/identity.js +1 -1
- package/dist/x/identity.min.js +1 -1
- package/dist/x/identity.mjs +1 -1
- package/dist/x/includes.es.js +1 -1
- package/dist/x/includes.es.min.js +1 -1
- package/dist/x/includes.js +1 -1
- package/dist/x/includes.min.js +1 -1
- package/dist/x/includes.mjs +1 -1
- package/dist/x/isDeepEqual.es.js +1 -1
- package/dist/x/isDeepEqual.es.min.js +1 -1
- package/dist/x/isDeepEqual.js +1 -1
- package/dist/x/isDeepEqual.min.js +1 -1
- package/dist/x/isDeepEqual.mjs +1 -1
- package/dist/x/isEmpty.es.js +1 -1
- package/dist/x/isEmpty.es.min.js +1 -1
- package/dist/x/isEmpty.js +1 -1
- package/dist/x/isEmpty.min.js +1 -1
- package/dist/x/isEmpty.mjs +1 -1
- package/dist/x/isEqual.es.js +1 -1
- package/dist/x/isEqual.es.min.js +1 -1
- package/dist/x/isEqual.js +1 -1
- package/dist/x/isEqual.min.js +1 -1
- package/dist/x/isEqual.mjs +1 -1
- package/dist/x/isFunction.es.js +1 -1
- package/dist/x/isFunction.es.min.js +1 -1
- package/dist/x/isFunction.js +1 -1
- package/dist/x/isFunction.min.js +1 -1
- package/dist/x/isFunction.mjs +1 -1
- package/dist/x/isIn.es.js +1 -1
- package/dist/x/isIn.es.min.js +1 -1
- package/dist/x/isIn.js +1 -1
- package/dist/x/isIn.min.js +1 -1
- package/dist/x/isIn.mjs +1 -1
- package/dist/x/isObject.es.js +1 -1
- package/dist/x/isObject.es.min.js +1 -1
- package/dist/x/isObject.js +1 -1
- package/dist/x/isObject.min.js +1 -1
- package/dist/x/isObject.mjs +1 -1
- package/dist/x/isString.es.js +1 -1
- package/dist/x/isString.es.min.js +1 -1
- package/dist/x/isString.js +1 -1
- package/dist/x/isString.min.js +1 -1
- package/dist/x/isString.mjs +1 -1
- package/dist/x/keys.es.js +1 -1
- package/dist/x/keys.es.min.js +1 -1
- package/dist/x/keys.js +1 -1
- package/dist/x/keys.min.js +1 -1
- package/dist/x/keys.mjs +1 -1
- package/dist/x/last.es.js +1 -1
- package/dist/x/last.es.min.js +1 -1
- package/dist/x/last.js +1 -1
- package/dist/x/last.min.js +1 -1
- package/dist/x/last.mjs +1 -1
- package/dist/x/maxBy.es.js +1 -1
- package/dist/x/maxBy.es.min.js +1 -1
- package/dist/x/maxBy.js +1 -1
- package/dist/x/maxBy.min.js +1 -1
- package/dist/x/maxBy.mjs +1 -1
- package/dist/x/noop.es.js +1 -1
- package/dist/x/noop.es.min.js +1 -1
- package/dist/x/noop.js +1 -1
- package/dist/x/noop.min.js +1 -1
- package/dist/x/noop.mjs +1 -1
- package/dist/x/pluck.es.js +1 -1
- package/dist/x/pluck.es.min.js +1 -1
- package/dist/x/pluck.js +1 -1
- package/dist/x/pluck.min.js +1 -1
- package/dist/x/pluck.mjs +1 -1
- package/dist/x/prepend.es.js +1 -1
- package/dist/x/prepend.es.min.js +1 -1
- package/dist/x/prepend.js +1 -1
- package/dist/x/prepend.min.js +1 -1
- package/dist/x/prepend.mjs +1 -1
- package/dist/x/size.es.js +1 -1
- package/dist/x/size.es.min.js +1 -1
- package/dist/x/size.js +1 -1
- package/dist/x/size.min.js +1 -1
- package/dist/x/size.mjs +1 -1
- package/dist/x/trace.es.js +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 +29 -30
- package/es.js +57 -19
- package/every.js +14 -20
- package/filter.js +38 -75
- package/flatMap.js +13 -13
- package/forEach.js +8 -8
- package/get.js +3 -3
- package/gt.js +18 -25
- package/gte.js +22 -29
- package/index.js +57 -19
- package/lt.js +33 -31
- package/lte.js +24 -31
- package/map.js +32 -35
- package/not.js +12 -17
- package/or.js +34 -26
- package/package.json +1 -1
- package/reduce.js +60 -67
- package/some.js +11 -34
- package/switchCase.js +3 -3
- package/thunkify.js +42 -12
- package/transform.js +57 -56
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ const numbers = [1, 2, 3, 4, 5]
|
|
|
23
23
|
pipe(numbers, [
|
|
24
24
|
filter(isOdd),
|
|
25
25
|
map(asyncSquare),
|
|
26
|
-
console.log,
|
|
26
|
+
console.log,
|
|
27
27
|
])
|
|
28
28
|
```
|
|
29
29
|
|
|
@@ -94,32 +94,37 @@ Rubico is a library for [A]synchronous Functional Programming in JavaScript. The
|
|
|
94
94
|
|
|
95
95
|
```javascript
|
|
96
96
|
const {
|
|
97
|
-
|
|
97
|
+
|
|
98
|
+
// function composition
|
|
98
99
|
pipe, compose, tap,
|
|
99
100
|
|
|
100
|
-
//
|
|
101
|
+
// conditional operators
|
|
101
102
|
switchCase,
|
|
102
103
|
|
|
103
|
-
//
|
|
104
|
+
// error handling
|
|
104
105
|
tryCatch,
|
|
105
106
|
|
|
106
|
-
//
|
|
107
|
+
// data construction
|
|
107
108
|
all, assign, get, set, pick, omit,
|
|
108
109
|
|
|
109
|
-
//
|
|
110
|
+
// iteration
|
|
110
111
|
forEach,
|
|
111
112
|
|
|
112
|
-
//
|
|
113
|
+
// transformation
|
|
113
114
|
map, filter, reduce, transform, flatMap,
|
|
114
115
|
|
|
115
|
-
//
|
|
116
|
-
|
|
116
|
+
// data testing
|
|
117
|
+
some, every,
|
|
118
|
+
|
|
119
|
+
// logical operators
|
|
120
|
+
and, or, not,
|
|
117
121
|
|
|
118
122
|
// comparison operators
|
|
119
123
|
eq, gt, lt, gte, lte,
|
|
120
124
|
|
|
121
125
|
// partial application
|
|
122
126
|
thunkify, always, curry, __,
|
|
127
|
+
|
|
123
128
|
} = rubico
|
|
124
129
|
```
|
|
125
130
|
|
|
@@ -133,7 +138,7 @@ pipe(helloPromise, [ // helloPromise is resolved for 'hello'
|
|
|
133
138
|
// the Promise returned from the async function is resolved
|
|
134
139
|
// and the resolved value is passed to console.log
|
|
135
140
|
|
|
136
|
-
console.log,
|
|
141
|
+
console.log,
|
|
137
142
|
])
|
|
138
143
|
```
|
|
139
144
|
|
|
@@ -151,7 +156,6 @@ const myDuplicatedSquaredObject = map(myObj, pipe([
|
|
|
151
156
|
]))
|
|
152
157
|
|
|
153
158
|
console.log(myDuplicatedSquaredObject)
|
|
154
|
-
// { a: [1, 1], b: [4, 4], c: [9, 9] }
|
|
155
159
|
```
|
|
156
160
|
|
|
157
161
|
The Rubico operators are versatile and act on a wide range of vanilla JavaScript types to create declarative, extensible, and async-enabled function compositions. The same operator `map` can act on an array and also a `Map` data structure.
|
|
@@ -172,11 +176,6 @@ pipe(todoIDs, [
|
|
|
172
176
|
response => response.json(),
|
|
173
177
|
|
|
174
178
|
tap(console.log),
|
|
175
|
-
// { userId: 1, id: 4, title: 'et porro tempora', completed: true }
|
|
176
|
-
// { userId: 1, id: 1, title: 'delectus aut autem', completed: false }
|
|
177
|
-
// { userId: 1, id: 3, title: 'fugiat veniam minus', completed: false }
|
|
178
|
-
// { userId: 1, id: 2, title: 'quis ut nam facilis...', completed: false }
|
|
179
|
-
// { userId: 1, id: 5, title: 'laboriosam mollitia...', completed: false }
|
|
180
179
|
])),
|
|
181
180
|
|
|
182
181
|
// group the todos by userId in a new Map
|
|
@@ -201,9 +200,6 @@ pipe(todoIDs, [
|
|
|
201
200
|
})),
|
|
202
201
|
|
|
203
202
|
tap(console.log),
|
|
204
|
-
// Map(1) {
|
|
205
|
-
// 1 => [ { userId: 1, id: 4, title: 'et porro tempora', completed: true } ]
|
|
206
|
-
// }
|
|
207
203
|
])
|
|
208
204
|
```
|
|
209
205
|
|
|
@@ -227,7 +223,7 @@ pipe(generateNumbers(), [
|
|
|
227
223
|
Transducer.filter(isOdd),
|
|
228
224
|
Transducer.map(asyncSquare),
|
|
229
225
|
), []),
|
|
230
|
-
console.log,
|
|
226
|
+
console.log,
|
|
231
227
|
])
|
|
232
228
|
```
|
|
233
229
|
|
package/Transducer.js
CHANGED
|
@@ -23,20 +23,18 @@ const Transducer = {}
|
|
|
23
23
|
* ```coffeescript [specscript]
|
|
24
24
|
* type SyncOrAsyncReducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
|
|
25
25
|
* type Transducer = SyncOrAsyncReducer=>SyncOrAsyncReducer
|
|
26
|
-
* type UnarySyncOrAsyncMapper = (
|
|
26
|
+
* type UnarySyncOrAsyncMapper = (item any)=>(mappedItem Promise|any)
|
|
27
27
|
*
|
|
28
|
-
* mapper UnarySyncOrAsyncMapper
|
|
29
|
-
*
|
|
30
|
-
* Transducer.map(mapper) -> mappingTransducer Transducer
|
|
28
|
+
* Transducer.map(mapper UnarySyncOrAsyncMapper) -> mappingTransducer Transducer
|
|
31
29
|
* ```
|
|
32
30
|
*
|
|
33
31
|
* @description
|
|
34
|
-
* Creates a mapping transducer.
|
|
32
|
+
* Creates a mapping [transducer](/blog/transducers-crash-course). Items of the transducer's reducing operation are transformed by the mapper function. It is possible to use an asynchronous mapper, however the reducing operation must support asynchronous execution. This library provides such implementations as [reduce](/docs/reduce) and [transform](/docs/transform).
|
|
35
33
|
*
|
|
36
34
|
* ```javascript [playground]
|
|
37
35
|
* const square = number => number ** 2
|
|
38
36
|
*
|
|
39
|
-
* const concat = (array,
|
|
37
|
+
* const concat = (array, item) => array.concat(item)
|
|
40
38
|
*
|
|
41
39
|
* const mapSquare = Transducer.map(square)
|
|
42
40
|
* // mapSquare is a transducer
|
|
@@ -45,23 +43,18 @@ const Transducer = {}
|
|
|
45
43
|
* // now mapSquare is passed the reducer function concat; squareConcatReducer
|
|
46
44
|
* // is a reducer with chained functionality square and concat
|
|
47
45
|
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* ) // [1, 4, 9, 16, 25]
|
|
46
|
+
* const squaredNumbersRubicoReduce = reduce([1, 2, 3, 4, 5], squareConcatReducer, [])
|
|
47
|
+
* console.log(squaredNumbersRubicoReduce)
|
|
51
48
|
*
|
|
52
49
|
* // the same squareConcatReducer is consumable with vanilla JavaScript
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* ) // [1, 4, 9, 16, 25]
|
|
50
|
+
* const squaredNumbersVanillaReduce = [1, 2, 3, 4, 5].reduce(squareConcatReducer, [])
|
|
51
|
+
* console.log(squaredNumbersVanillaReduce)
|
|
56
52
|
*
|
|
57
53
|
* // concat is implicit when transforming into arrays
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* ) // [1, 4, 9, 16, 25]
|
|
54
|
+
* const squaredNumbersTransform = transform([1, 2, 3, 4, 5], Transducer.map(square), [])
|
|
55
|
+
* console.log(squaredNumbersTransform)
|
|
61
56
|
* ```
|
|
62
57
|
*
|
|
63
|
-
* Read more on [transducers](/blog/transducers-crash-course-rubico-v2).
|
|
64
|
-
*
|
|
65
58
|
* See also:
|
|
66
59
|
* * [thunkify](/docs/thunkify)
|
|
67
60
|
* * [Transducer.filter](/docs/Transducer.filter)
|
|
@@ -84,31 +77,27 @@ Transducer.map = function transducerMap(mapper) {
|
|
|
84
77
|
* type Transducer = SyncOrAsyncReducer=>SyncOrAsyncReducer
|
|
85
78
|
* type UnarySyncOrAsyncPredicate = any=>Promise|boolean|any
|
|
86
79
|
*
|
|
87
|
-
* predicate UnarySyncOrAsyncPredicate
|
|
88
|
-
*
|
|
89
|
-
* Transducer.filter(predicate) -> filteringTransducer Transducer
|
|
80
|
+
* Transducer.filter(predicate UnarySyncOrAsyncPredicate) -> filteringTransducer Transducer
|
|
90
81
|
* ```
|
|
91
82
|
*
|
|
92
83
|
* @description
|
|
93
|
-
* Creates a filtering transducer. A filtering transducer filters out
|
|
84
|
+
* Creates a filtering [transducer](/blog/transducers-crash-course). A filtering transducer filters out items of its reducing operation if they test false by the predicate. It is possible to use an asynchronous predicate, however the reducing operation must support asynchronous execution. This library provides such implementations as [reduce](/docs/reduce) and [transform](/docs/transform).
|
|
94
85
|
*
|
|
95
86
|
* ```javascript [playground]
|
|
96
87
|
* const isOdd = number => number % 2 == 1
|
|
97
88
|
*
|
|
98
|
-
* const concat = (array,
|
|
89
|
+
* const concat = (array, item) => array.concat(item)
|
|
99
90
|
*
|
|
100
91
|
* const concatOddNumbers = Transducer.filter(isOdd)(concat)
|
|
101
92
|
*
|
|
102
93
|
* const array = [1, 2, 3, 4, 5]
|
|
103
94
|
*
|
|
104
95
|
* const oddNumbers1 = array.reduce(concatOddNumbers, [])
|
|
105
|
-
* console.log(oddNumbers1) // [1, 3, 5]
|
|
106
|
-
*
|
|
107
96
|
* const oddNumbers2 = transform(array, Transducer.filter(isOdd), [])
|
|
108
|
-
* console.log(oddNumbers2) // [1, 3, 5]
|
|
109
|
-
* ```
|
|
110
97
|
*
|
|
111
|
-
*
|
|
98
|
+
* console.log(oddNumbers1)
|
|
99
|
+
* console.log(oddNumbers2)
|
|
100
|
+
* ```
|
|
112
101
|
*
|
|
113
102
|
* See also:
|
|
114
103
|
* * [thunkify](/docs/thunkify)
|
|
@@ -131,27 +120,23 @@ Transducer.filter = function transducerFilter(predicate) {
|
|
|
131
120
|
* type SyncOrAsyncReducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
|
|
132
121
|
* type Transducer = SyncOrAsyncReducer=>SyncOrAsyncReducer
|
|
133
122
|
* type Monad = Array|String|Set|Generator|AsyncGenerator|{ flatMap: string }|{ chain: string }|Object
|
|
134
|
-
* type UnarySyncOrAsyncFlatMapper = (
|
|
123
|
+
* type UnarySyncOrAsyncFlatMapper = (item any)=>(monad Promise|Monad|any)
|
|
135
124
|
*
|
|
136
|
-
* flatMapper UnarySyncOrAsyncFlatMapper
|
|
137
|
-
*
|
|
138
|
-
* Transducer.flatMap(flatMapper) -> flatMappingTransducer Transducer
|
|
125
|
+
* Transducer.flatMap(flatMapper UnarySyncOrAsyncFlatMapper) -> flatMappingTransducer Transducer
|
|
139
126
|
* ```
|
|
140
127
|
*
|
|
141
128
|
* @description
|
|
142
|
-
* Creates a flatMapping transducer. A flatMapping transducer applies the flatMapper function to each
|
|
129
|
+
* Creates a flatMapping [transducer](/blog/transducers-crash-course). A flatMapping transducer applies the flatMapper function to each item of its reducing operation, concatenating the results of the flatMapper execution onto the accumulator. It is possible to use an asynchronous flatMapper, however the reducing operation must support asynchronous execution. This library provides such implementations as [reduce](/docs/reduce) and [transform](/docs/transform).
|
|
143
130
|
*
|
|
144
131
|
* ```javascript [playground]
|
|
145
132
|
* const powers = number => [number, number ** 2, number ** 3]
|
|
146
133
|
*
|
|
147
134
|
* const numbers = [1, 2, 3, 4, 5]
|
|
148
135
|
*
|
|
149
|
-
*
|
|
150
|
-
* transform(numbers, Transducer.flatMap(powers), [])
|
|
151
|
-
* ) // [1, 1, 1, 2, 4, 8, 3, 9, 27, 4, 16, 64, 5, 25, 125]
|
|
152
|
-
* ```
|
|
136
|
+
* const result = transform(numbers, Transducer.flatMap(powers), [])
|
|
153
137
|
*
|
|
154
|
-
*
|
|
138
|
+
* console.log(result)
|
|
139
|
+
* ```
|
|
155
140
|
*
|
|
156
141
|
* See also:
|
|
157
142
|
* * [thunkify](/docs/thunkify)
|
|
@@ -173,26 +158,23 @@ Transducer.flatMap = function transducerFlatMap(flatMapper) {
|
|
|
173
158
|
* ```coffeescript [specscript]
|
|
174
159
|
* type SyncOrAsyncReducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
|
|
175
160
|
* type Transducer = SyncOrAsyncReducer=>SyncOrAsyncReducer
|
|
176
|
-
* type UnarySyncOrAsyncCallback = (
|
|
177
|
-
*
|
|
178
|
-
* callback UnarySyncOrAsyncCallback
|
|
161
|
+
* type UnarySyncOrAsyncCallback = (item any)=>Promise|undefined
|
|
179
162
|
*
|
|
180
|
-
* Transducer.forEach(callback) -> forEachTransducer Transducer
|
|
163
|
+
* Transducer.forEach(callback UnarySyncOrAsyncCallback) -> forEachTransducer Transducer
|
|
181
164
|
* ```
|
|
182
165
|
*
|
|
183
166
|
* @description
|
|
184
|
-
* Executes a callback function for each
|
|
167
|
+
* Creates an iterative [transducer](/blog/transducers-crash-course). Executes a callback function for each item of a reducing operation, leaving each item unmodified. It is possible to use an asynchronous callback function, however the reducing operation must support asynchronous execution. This library provides such implementations as [reduce](/docs/reduce) and [transform](/docs/transform).
|
|
185
168
|
*
|
|
186
169
|
* ```javascript [playground]
|
|
187
170
|
* const numbers = [1, 2, 3, 4, 5]
|
|
171
|
+
*
|
|
188
172
|
* transform(numbers, compose(
|
|
189
173
|
* Transducer.map(number => number ** 2),
|
|
190
|
-
* Transducer.forEach(console.log),
|
|
174
|
+
* Transducer.forEach(console.log),
|
|
191
175
|
* ), null)
|
|
192
176
|
* ```
|
|
193
177
|
*
|
|
194
|
-
* Read more on [transducers](/blog/transducers-crash-course-rubico-v2).
|
|
195
|
-
*
|
|
196
178
|
* See also:
|
|
197
179
|
* * [thunkify](/docs/thunkify)
|
|
198
180
|
* * [Transducer.map](/docs/Transducer.map)
|
|
@@ -214,11 +196,11 @@ Transducer.forEach = function transducerForEach(func) {
|
|
|
214
196
|
* type SyncOrAsyncReducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
|
|
215
197
|
* type Transducer = SyncOrAsyncReducer=>SyncOrAsyncReducer
|
|
216
198
|
*
|
|
217
|
-
* Transducer.passthrough Transducer
|
|
199
|
+
* Transducer.passthrough -> Transducer
|
|
218
200
|
* ```
|
|
219
201
|
*
|
|
220
202
|
* @description
|
|
221
|
-
* Creates a pasthrough transducer. The passthrough transducer simply passes each
|
|
203
|
+
* Creates a pasthrough [transducer](/blog/transducers-crash-course). The passthrough transducer simply passes each item of the reducing operation through to the next downstream transducer, leaving each item unmodified.
|
|
222
204
|
*
|
|
223
205
|
* ```javascript [playground]
|
|
224
206
|
* const createAsyncNumbers = async function* () {
|
|
@@ -229,11 +211,10 @@ Transducer.forEach = function transducerForEach(func) {
|
|
|
229
211
|
* }
|
|
230
212
|
* }
|
|
231
213
|
*
|
|
232
|
-
* transform(createAsyncNumbers(), Transducer.passthrough, [])
|
|
233
|
-
* .then(console.log) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
|
234
|
-
* ```
|
|
214
|
+
* const numbers = await transform(createAsyncNumbers(), Transducer.passthrough, [])
|
|
235
215
|
*
|
|
236
|
-
*
|
|
216
|
+
* console.log(numbers)
|
|
217
|
+
* ```
|
|
237
218
|
*
|
|
238
219
|
* See also:
|
|
239
220
|
* * [thunkify](/docs/thunkify)
|
|
@@ -256,14 +237,14 @@ Transducer.passthrough = function transducerPassthrough(reducer) {
|
|
|
256
237
|
* type SyncOrAsyncReducer = (accumulator any, value any)=>(nextAccumulator Promise|any)
|
|
257
238
|
* type Transducer = SyncOrAsyncReducer=>SyncOrAsyncReducer
|
|
258
239
|
*
|
|
259
|
-
*
|
|
260
|
-
*
|
|
261
|
-
*
|
|
262
|
-
*
|
|
240
|
+
* Transducer.tryCatch(
|
|
241
|
+
* transducerTryer Transducer,
|
|
242
|
+
* catcher (error Error, item any)=>(Promise|any)
|
|
243
|
+
* ) -> tryCatchTransducer Transducer
|
|
263
244
|
* ```
|
|
264
245
|
*
|
|
265
246
|
* @description
|
|
266
|
-
* Creates an error handling transducer. The error handling transducer wraps a transducer and catches any errors thrown by the transducer with the catcher function. The catcher function is provided the error
|
|
247
|
+
* Creates an error handling [transducer](/blog/transducers-crash-course). The error handling transducer wraps a transducer and catches any errors thrown by the transducer with the catcher function. The catcher function is provided the error and the item for which the error was thrown. It is possible for either the transducer or the catcher to be asynchronous, however the reducing operation must support asynchronous execution. This library provides such implementations as [reduce](/docs/reduce) and [transform](/docs/transform).
|
|
267
248
|
*
|
|
268
249
|
* ```javascript [playground]
|
|
269
250
|
* const db = new Map()
|
|
@@ -295,8 +276,6 @@ Transducer.passthrough = function transducerPassthrough(reducer) {
|
|
|
295
276
|
* ), null)
|
|
296
277
|
* ```
|
|
297
278
|
*
|
|
298
|
-
* Read more on [transducers](/blog/transducers-crash-course-rubico-v2).
|
|
299
|
-
*
|
|
300
279
|
* See also:
|
|
301
280
|
* * [thunkify](/docs/thunkify)
|
|
302
281
|
* * [Transducer.map](/docs/Transducer.map)
|
package/__.js
CHANGED
|
@@ -12,9 +12,9 @@ const __ = require('./_internal/placeholder')
|
|
|
12
12
|
* A special placeholder value `__` (two underscores) that denotes the position of an argument in a curried function.
|
|
13
13
|
*
|
|
14
14
|
* ```javascript [playground]
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* )
|
|
15
|
+
* const curriedFunction = curry.arity(3, Array.of, __, 2, 3)
|
|
16
|
+
*
|
|
17
|
+
* console.log(curriedFunction(1))
|
|
18
18
|
* ```
|
|
19
19
|
*
|
|
20
20
|
* See also:
|
package/always.js
CHANGED
|
@@ -9,14 +9,14 @@ const always = require('./_internal/always')
|
|
|
9
9
|
* ```
|
|
10
10
|
*
|
|
11
11
|
* @description
|
|
12
|
-
* Creates a function
|
|
12
|
+
* Creates a function that always returns a value.
|
|
13
13
|
*
|
|
14
14
|
* ```javascript [playground]
|
|
15
15
|
* const always5 = always(5)
|
|
16
16
|
*
|
|
17
|
-
* console.log(always5())
|
|
18
|
-
* console.log(always5())
|
|
19
|
-
* console.log(always5())
|
|
17
|
+
* console.log(always5())
|
|
18
|
+
* console.log(always5())
|
|
19
|
+
* console.log(always5())
|
|
20
20
|
* ```
|
|
21
21
|
*
|
|
22
22
|
* See also:
|
package/and.js
CHANGED
|
@@ -97,37 +97,28 @@ const areAllPredicatesTruthy = function (args, predicates) {
|
|
|
97
97
|
*
|
|
98
98
|
* @synopsis
|
|
99
99
|
* ```coffeescript [specscript]
|
|
100
|
-
*
|
|
101
|
-
* argsOrPromises Array<Promise|any>
|
|
100
|
+
* type SyncOrAsyncPredicate = (...arguments)=>Promise|boolean|any
|
|
102
101
|
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
* predicatesOrValues Array<SyncOrAsyncPredicate|boolean|any>
|
|
106
|
-
*
|
|
107
|
-
* and(values Array<boolean|any>) -> result boolean
|
|
108
|
-
* and(...argsOrPromises, predicatesOrValues) -> Promise|boolean
|
|
109
|
-
* and(predicatesOrValues)(...args) -> Promise|boolean
|
|
102
|
+
* and(values Array<boolean|any>) -> testResult boolean
|
|
103
|
+
* and(...arguments, predicatesOrValues Array<SyncOrAsyncPredicate|boolean|any>) -> testResult Promise|boolean
|
|
104
|
+
* and(predicatesOrValues Array<SyncOrAsyncPredicate|boolean|any>)(...arguments) -> testResult Promise|boolean
|
|
110
105
|
* ```
|
|
111
106
|
*
|
|
112
107
|
* @description
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* If provided an array of boolean values, `and` returns true if all boolean values are true.
|
|
108
|
+
* Logical operator. Tests an array of predicate functions, promises, or values, returning true if all predicates test true and all values are truthy.
|
|
116
109
|
*
|
|
117
110
|
* ```javascript [playground]
|
|
118
|
-
* const
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
* const condition = and([
|
|
123
|
-
* oneIsLessThanThree,
|
|
124
|
-
* twoIsGreaterThanOne,
|
|
125
|
-
* threeIsEqualToThree
|
|
111
|
+
* const isOddAndGreaterThan3 = and([
|
|
112
|
+
* n => n % 2 == 1,
|
|
113
|
+
* n => n > 3,
|
|
126
114
|
* ])
|
|
127
|
-
*
|
|
115
|
+
*
|
|
116
|
+
* console.log(isOddAndGreaterThan3(5))
|
|
117
|
+
* console.log(isOddAndGreaterThan3(3))
|
|
118
|
+
* console.log(isOddAndGreaterThan3(6))
|
|
128
119
|
* ```
|
|
129
120
|
*
|
|
130
|
-
* If
|
|
121
|
+
* If the array contains predicate functions, `and` returns an aggregate predicate function that returns true if all predicate functions test true. If any predicate function is asynchronous, the aggregate predicate function is asynchronous.
|
|
131
122
|
*
|
|
132
123
|
* ```javascript [playground]
|
|
133
124
|
* const isOdd = number => number % 2 == 1
|
|
@@ -141,17 +132,34 @@ const areAllPredicatesTruthy = function (args, predicates) {
|
|
|
141
132
|
* asyncIsLessThan3,
|
|
142
133
|
* ])
|
|
143
134
|
*
|
|
144
|
-
* const
|
|
145
|
-
*
|
|
135
|
+
* const booleanResult = await aggregatePredicate(1)
|
|
136
|
+
*
|
|
137
|
+
* console.log(booleanResult)
|
|
138
|
+
* ```
|
|
139
|
+
*
|
|
140
|
+
* If the array contains only values, `and` returns a boolean value.
|
|
141
|
+
*
|
|
142
|
+
* ```javascript [playground]
|
|
143
|
+
* const oneIsLessThanThree = 1 < 3
|
|
144
|
+
* const twoIsGreaterThanOne = 2 > 1
|
|
145
|
+
* const threeIsEqualToThree = 3 === 3
|
|
146
|
+
*
|
|
147
|
+
* const booleanResult = and([
|
|
148
|
+
* oneIsLessThanThree,
|
|
149
|
+
* twoIsGreaterThanOne,
|
|
150
|
+
* threeIsEqualToThree
|
|
151
|
+
* ])
|
|
152
|
+
*
|
|
153
|
+
* console.log(booleanResult)
|
|
146
154
|
* ```
|
|
147
155
|
*
|
|
148
|
-
* Any promises
|
|
156
|
+
* Any promises in the array are resolved for their values before further execution.
|
|
149
157
|
*
|
|
150
158
|
* ```javascript [playground]
|
|
151
159
|
* and(Promise.resolve(5), [
|
|
152
160
|
* n => n > 0,
|
|
153
161
|
* n => n < 10,
|
|
154
|
-
* ]).then(console.log)
|
|
162
|
+
* ]).then(console.log)
|
|
155
163
|
* ```
|
|
156
164
|
*
|
|
157
165
|
* See also:
|
package/assign.js
CHANGED
|
@@ -56,9 +56,9 @@ const _assign = function (object, funcs) {
|
|
|
56
56
|
* },
|
|
57
57
|
* })
|
|
58
58
|
*
|
|
59
|
-
* const
|
|
59
|
+
* const result = await asyncAssignTotal({ numbers: [1, 2, 3, 4, 5] })
|
|
60
60
|
*
|
|
61
|
-
*
|
|
61
|
+
* console.log(result)
|
|
62
62
|
* ```
|
|
63
63
|
*
|
|
64
64
|
* If the argument object is a promise, it is resolved for its value before further execution for the eager interface only.
|
package/compose.js
CHANGED
package/curry.js
CHANGED
|
@@ -10,18 +10,15 @@ const curryArity = require('./_internal/curryArity')
|
|
|
10
10
|
* @synopsis
|
|
11
11
|
* ```coffeescript [specscript]
|
|
12
12
|
* __ Symbol(placeholder)
|
|
13
|
+
* argumentsWithPlaceholder Array<__|any>
|
|
13
14
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* moreArgs ArgsWithPlaceholder
|
|
18
|
-
*
|
|
19
|
-
* curry(func function, ...args) -> curriedFuncOrResult function|any
|
|
20
|
-
* curriedFuncOrResult(...moreArgs) -> anotherCurriedFuncOrResult function|any
|
|
15
|
+
* curry(func function, ...arguments) -> result any
|
|
16
|
+
* curry(func function, ...argumentsWithPlaceholder) -> result any
|
|
17
|
+
* curry(func function, ...argumentsWithPlaceholder) -> curriedFunction function
|
|
21
18
|
* ```
|
|
22
19
|
*
|
|
23
20
|
* @description
|
|
24
|
-
* Enables partial application of a function's arguments in any order.
|
|
21
|
+
* Enables partial application of a function's arguments in any order. The placeholder value [__](/docs/__) specifies an argument to be resolved in the partially applied function.
|
|
25
22
|
*
|
|
26
23
|
* ```javascript [playground]
|
|
27
24
|
* const add = (a, b, c) => a + b + c
|
|
@@ -31,13 +28,12 @@ const curryArity = require('./_internal/curryArity')
|
|
|
31
28
|
* console.log(curry(add, 'a')('b', 'c'))
|
|
32
29
|
* console.log(curry(add, 'a', 'b')('c'))
|
|
33
30
|
* console.log(curry(add)('a')('b')('c'))
|
|
34
|
-
*
|
|
35
31
|
* console.log(curry(add, __, 'b', 'c')('a'))
|
|
36
32
|
* console.log(curry(add, __, __, 'c')('a', 'b'))
|
|
37
33
|
* console.log(curry(add, __, __, 'c')(__, 'b')('a'))
|
|
38
34
|
* ```
|
|
39
35
|
*
|
|
40
|
-
* Any promises
|
|
36
|
+
* Any promises in `arguments` or `argumentsWithPlaceholder` are resolved for their values before further execution.
|
|
41
37
|
*
|
|
42
38
|
* ```javascript [playground]
|
|
43
39
|
* const add = (a, b, c) => a + b + c
|
|
@@ -71,24 +67,29 @@ const curry = (func, ...args) => {
|
|
|
71
67
|
*
|
|
72
68
|
* @synopsis
|
|
73
69
|
* ```coffeescript [specscript]
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* n number
|
|
78
|
-
* args ArgsWithPlaceholder
|
|
79
|
-
* moreArgs ArgsWithPlaceholder
|
|
70
|
+
* __ Symbol(placeholder)
|
|
71
|
+
* argumentsWithPlaceholder Array<__|any>
|
|
80
72
|
*
|
|
81
|
-
* curry.arity(n number, func function, ...
|
|
82
|
-
*
|
|
73
|
+
* curry.arity(n number, func function, ...arguments) -> result any
|
|
74
|
+
* curry.arity(n number, func function, ...argumentsWithPlaceholder) -> result any
|
|
75
|
+
* curry.arity(n number, func function, ...argumentsWithPlaceholder) -> curriedFunction function
|
|
83
76
|
* ```
|
|
84
77
|
*
|
|
85
78
|
* @description
|
|
86
|
-
* [curry](/docs/curry) with specified arity (number of arguments taken by the function)
|
|
79
|
+
* [curry](/docs/curry) with specified arity (number of arguments taken by the function).
|
|
80
|
+
*
|
|
81
|
+
* ```javascript [playground]
|
|
82
|
+
* const add = (a, b, c = 0) => a + b + c
|
|
83
|
+
*
|
|
84
|
+
* console.log(curry.arity(2, add, 1, 2))
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* Any promises in `arguments` or `argumentsWithPlaceholder` are resolved for their values before further execution.
|
|
87
88
|
*
|
|
88
89
|
* ```javascript [playground]
|
|
89
90
|
* const add = (a, b, c = 0) => a + b + c
|
|
90
91
|
*
|
|
91
|
-
* console.log(curry.arity(2, add, 1, 2))
|
|
92
|
+
* console.log(await curry.arity(2, add, Promise.resolve(1), 2))
|
|
92
93
|
* ```
|
|
93
94
|
*
|
|
94
95
|
* See also:
|
|
@@ -113,15 +114,12 @@ curry.arity = function curryArity_(arity, func, ...args) {
|
|
|
113
114
|
*
|
|
114
115
|
* @synopsis
|
|
115
116
|
* ```coffeescript [specscript]
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
* n number
|
|
120
|
-
* args ArgsWithPlaceholder
|
|
121
|
-
* moreArgs ArgsWithPlaceholder
|
|
117
|
+
* __ Symbol(placeholder)
|
|
118
|
+
* argumentsWithPlaceholder Array<__|any>
|
|
122
119
|
*
|
|
123
|
-
* curry.call(func function, context object, ...
|
|
124
|
-
*
|
|
120
|
+
* curry.call(func function, context object, ...arguments) -> result any
|
|
121
|
+
* curry.call(func function, context object, ...argumentsWithPlaceholder) -> result any
|
|
122
|
+
* curry.call(func function, context object, ...argumentsWithPlaceholder) -> curriedFunction function
|
|
125
123
|
* ```
|
|
126
124
|
*
|
|
127
125
|
* @description
|
|
@@ -147,6 +145,28 @@ curry.arity = function curryArity_(arity, func, ...args) {
|
|
|
147
145
|
* console.log(curry.call(point.toString, box))
|
|
148
146
|
* ```
|
|
149
147
|
*
|
|
148
|
+
* Any promises in `arguments` are resolved for their values during thunk creation.
|
|
149
|
+
*
|
|
150
|
+
* ```javascript [playground]
|
|
151
|
+
* class Point {
|
|
152
|
+
* constructor(x, y) {
|
|
153
|
+
* this.x = x
|
|
154
|
+
* this.y = y
|
|
155
|
+
* }
|
|
156
|
+
*
|
|
157
|
+
* distanceTo(point) {
|
|
158
|
+
* const x2 = (point.x - this.x) ** 2
|
|
159
|
+
* const y2 = (point.y - this.y) ** 2
|
|
160
|
+
* return (x2 + y2) ** 0.5
|
|
161
|
+
* }
|
|
162
|
+
* }
|
|
163
|
+
*
|
|
164
|
+
* const point1 = new Point(100, 100)
|
|
165
|
+
* const point2 = new Point(200, 200)
|
|
166
|
+
*
|
|
167
|
+
* console.log(await curry.call(point1.distanceTo, point1, Promise.resolve(point2)))
|
|
168
|
+
* ```
|
|
169
|
+
*
|
|
150
170
|
* See also:
|
|
151
171
|
* * [eq](/docs/eq)
|
|
152
172
|
* * [thunkify](/docs/thunkify)
|
package/dist/Transducer.es.js
CHANGED
package/dist/Transducer.js
CHANGED
package/dist/Transducer.min.js
CHANGED
package/dist/Transducer.mjs
CHANGED
package/dist/__.es.js
CHANGED
package/dist/__.es.min.js
CHANGED
package/dist/__.js
CHANGED
package/dist/__.min.js
CHANGED