rubico 2.6.6 → 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 +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 +5 -1
- package/dist/compose.es.min.js +2 -2
- package/dist/compose.js +5 -1
- package/dist/compose.min.js +2 -2
- package/dist/compose.mjs +5 -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 +1 -1
- package/dist/filter.es.min.js +1 -1
- package/dist/filter.js +1 -1
- package/dist/filter.min.js +1 -1
- package/dist/filter.mjs +1 -1
- package/dist/flatMap.es.js +1 -1
- package/dist/flatMap.es.min.js +1 -1
- package/dist/flatMap.js +1 -1
- package/dist/flatMap.min.js +1 -1
- package/dist/flatMap.mjs +1 -1
- package/dist/forEach.es.js +1 -1
- package/dist/forEach.es.min.js +1 -1
- package/dist/forEach.js +1 -1
- package/dist/forEach.min.js +1 -1
- package/dist/forEach.mjs +1 -1
- package/dist/get.es.js +1 -1
- package/dist/get.es.min.js +1 -1
- package/dist/get.js +1 -1
- package/dist/get.min.js +1 -1
- package/dist/get.mjs +1 -1
- package/dist/gt.es.js +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 +5 -1
- package/dist/pipe.es.min.js +2 -2
- package/dist/pipe.js +5 -1
- package/dist/pipe.min.js +2 -2
- package/dist/pipe.mjs +5 -1
- package/dist/reduce.es.js +8 -8
- package/dist/reduce.es.min.js +1 -1
- package/dist/reduce.js +8 -8
- package/dist/reduce.min.js +1 -1
- package/dist/reduce.mjs +8 -8
- package/dist/rubico.es.js +16 -8
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.global.js +16 -8
- package/dist/rubico.global.min.js +2 -2
- package/dist/rubico.js +16 -8
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.mjs +16 -8
- 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 +1 -1
- package/dist/x/filterOut.es.min.js +1 -1
- package/dist/x/filterOut.js +1 -1
- package/dist/x/filterOut.min.js +1 -1
- package/dist/x/filterOut.mjs +1 -1
- 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 +8 -8
- package/dist/x/groupBy.es.min.js +1 -1
- package/dist/x/groupBy.js +8 -8
- package/dist/x/groupBy.min.js +1 -1
- package/dist/x/groupBy.mjs +8 -8
- 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.d.ts +6 -6
- package/eq.js +14 -6
- package/es.js +16 -8
- package/every.js +19 -5
- package/filter.js +59 -15
- package/flatMap.js +32 -23
- package/forEach.js +107 -13
- package/get.js +9 -0
- package/gt.js +9 -0
- package/gte.js +9 -0
- package/index.js +16 -8
- package/lte.js +9 -0
- package/map.js +153 -36
- 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 -1
- package/pick.js +9 -0
- package/pipe.js +30 -3
- package/reduce.js +111 -30
- 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 +105 -29
- 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/dist/x/prepend.min.js
CHANGED
package/dist/x/prepend.mjs
CHANGED
package/dist/x/size.es.js
CHANGED
package/dist/x/size.es.min.js
CHANGED
package/dist/x/size.js
CHANGED
package/dist/x/size.min.js
CHANGED
package/dist/x/size.mjs
CHANGED
package/dist/x/trace.es.js
CHANGED
package/dist/x/trace.es.min.js
CHANGED
package/dist/x/trace.js
CHANGED
package/dist/x/trace.min.js
CHANGED
package/dist/x/trace.mjs
CHANGED
package/dist/x/unionWith.es.js
CHANGED
package/dist/x/unionWith.js
CHANGED
package/dist/x/unionWith.min.js
CHANGED
package/dist/x/unionWith.mjs
CHANGED
package/dist/x/uniq.es.js
CHANGED
package/dist/x/uniq.es.min.js
CHANGED
package/dist/x/uniq.js
CHANGED
package/dist/x/uniq.min.js
CHANGED
package/dist/x/uniq.mjs
CHANGED
package/dist/x/unless.es.js
CHANGED
package/dist/x/unless.es.min.js
CHANGED
package/dist/x/unless.js
CHANGED
package/dist/x/unless.min.js
CHANGED
package/dist/x/unless.mjs
CHANGED
package/dist/x/values.es.js
CHANGED
package/dist/x/values.es.min.js
CHANGED
package/dist/x/values.js
CHANGED
package/dist/x/values.min.js
CHANGED
package/dist/x/values.mjs
CHANGED
package/dist/x/when.es.js
CHANGED
package/dist/x/when.es.min.js
CHANGED
package/dist/x/when.js
CHANGED
package/dist/x/when.min.js
CHANGED
package/dist/x/when.mjs
CHANGED
package/eq.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export = eq;
|
|
|
20
20
|
* Test for [equality (`==`)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Equality) between two values.
|
|
21
21
|
*
|
|
22
22
|
* ```javascript [playground]
|
|
23
|
-
* const areNamesEqual = eq('Ted', '
|
|
23
|
+
* const areNamesEqual = eq('Ted', 'John')
|
|
24
24
|
*
|
|
25
25
|
* console.log(areNamesEqual) // false
|
|
26
26
|
* ```
|
|
@@ -28,11 +28,11 @@ export = eq;
|
|
|
28
28
|
* If either of the two values are resolver functions, `eq` returns a function that resolves the values to compare from its arguments.
|
|
29
29
|
*
|
|
30
30
|
* ```javascript [playground]
|
|
31
|
-
* const
|
|
31
|
+
* const personIsJohn = eq(get('name'), 'John')
|
|
32
32
|
*
|
|
33
|
-
* const person = { name: '
|
|
33
|
+
* const person = { name: 'John', likes: 'bananas' }
|
|
34
34
|
*
|
|
35
|
-
* if (
|
|
35
|
+
* if (personIsJohn(person)) {
|
|
36
36
|
* console.log('The person is george')
|
|
37
37
|
* }
|
|
38
38
|
* ```
|
|
@@ -40,8 +40,8 @@ export = eq;
|
|
|
40
40
|
* `eq` supports a lazy API for composability.
|
|
41
41
|
*
|
|
42
42
|
* ```javascript [playground]
|
|
43
|
-
* pipe({ name: '
|
|
44
|
-
* eq('
|
|
43
|
+
* pipe({ name: 'John' }, [
|
|
44
|
+
* eq('John', get('name')),
|
|
45
45
|
* console.log, // true
|
|
46
46
|
* ])
|
|
47
47
|
* ```
|
package/eq.js
CHANGED
|
@@ -22,7 +22,7 @@ const equals = require('./_internal/equals')
|
|
|
22
22
|
* Test for [equality (`==`)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Equality) between two values.
|
|
23
23
|
*
|
|
24
24
|
* ```javascript [playground]
|
|
25
|
-
* const areNamesEqual = eq('Ted', '
|
|
25
|
+
* const areNamesEqual = eq('Ted', 'John')
|
|
26
26
|
*
|
|
27
27
|
* console.log(areNamesEqual) // false
|
|
28
28
|
* ```
|
|
@@ -30,11 +30,11 @@ const equals = require('./_internal/equals')
|
|
|
30
30
|
* If either of the two values are resolver functions, `eq` returns a function that resolves the values to compare from its arguments.
|
|
31
31
|
*
|
|
32
32
|
* ```javascript [playground]
|
|
33
|
-
* const
|
|
33
|
+
* const personIsJohn = eq(get('name'), 'John')
|
|
34
34
|
*
|
|
35
|
-
* const person = { name: '
|
|
35
|
+
* const person = { name: 'John', likes: 'bananas' }
|
|
36
36
|
*
|
|
37
|
-
* if (
|
|
37
|
+
* if (personIsJohn(person)) {
|
|
38
38
|
* console.log('The person is george')
|
|
39
39
|
* }
|
|
40
40
|
* ```
|
|
@@ -42,8 +42,8 @@ const equals = require('./_internal/equals')
|
|
|
42
42
|
* `eq` supports a lazy API for composability.
|
|
43
43
|
*
|
|
44
44
|
* ```javascript [playground]
|
|
45
|
-
* pipe({ name: '
|
|
46
|
-
* eq('
|
|
45
|
+
* pipe({ name: 'John' }, [
|
|
46
|
+
* eq('John', get('name')),
|
|
47
47
|
* console.log, // true
|
|
48
48
|
* ])
|
|
49
49
|
* ```
|
|
@@ -54,6 +54,14 @@ const equals = require('./_internal/equals')
|
|
|
54
54
|
* eq(Promise.resolve({ a: 1, b: 1 }), get('a'), get('b')).then(console.log) // true
|
|
55
55
|
* ```
|
|
56
56
|
*
|
|
57
|
+
* See also:
|
|
58
|
+
* * [and](/docs/and)
|
|
59
|
+
* * [gt](/docs/gt)
|
|
60
|
+
* * [lt](/docs/lt)
|
|
61
|
+
* * [gte](/docs/gte)
|
|
62
|
+
* * [lte](/docs/lte)
|
|
63
|
+
* * [thunkify](/docs/thunkify)
|
|
64
|
+
*
|
|
57
65
|
* @execution concurrent
|
|
58
66
|
*/
|
|
59
67
|
|
package/es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico v2.
|
|
2
|
+
* rubico v2.7.0
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
4
|
* (c) 2019-2025 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
@@ -67,6 +67,10 @@ const curry2 = function (baseFunc, arg0, arg1) {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
const pipe = function (...args) {
|
|
70
|
+
if (typeof args[0] == 'function') {
|
|
71
|
+
return args.reduce(funcConcat)
|
|
72
|
+
}
|
|
73
|
+
|
|
70
74
|
const funcs = args.pop()
|
|
71
75
|
const pipeline = funcs.reduce(funcConcat)
|
|
72
76
|
|
|
@@ -82,6 +86,10 @@ const pipe = function (...args) {
|
|
|
82
86
|
}
|
|
83
87
|
|
|
84
88
|
const compose = function (...args) {
|
|
89
|
+
if (typeof args[0] == 'function') {
|
|
90
|
+
return args.reduceRight(funcConcat)
|
|
91
|
+
}
|
|
92
|
+
|
|
85
93
|
const funcs = args.pop()
|
|
86
94
|
const composition = funcs.reduceRight(funcConcat)
|
|
87
95
|
|
|
@@ -1739,17 +1747,17 @@ const genericReduce = function (collection, reducer, result) {
|
|
|
1739
1747
|
: reducer(result, collection)
|
|
1740
1748
|
}
|
|
1741
1749
|
|
|
1742
|
-
// _reduce(collection any, reducer function,
|
|
1743
|
-
const _reduce = function (collection, reducer,
|
|
1744
|
-
if (typeof
|
|
1745
|
-
const actualInitialValue =
|
|
1750
|
+
// _reduce(collection any, reducer function, initial function|any) -> Promise
|
|
1751
|
+
const _reduce = function (collection, reducer, initial) {
|
|
1752
|
+
if (typeof initial == 'function') {
|
|
1753
|
+
const actualInitialValue = initial(collection)
|
|
1746
1754
|
return isPromise(actualInitialValue)
|
|
1747
1755
|
? actualInitialValue.then(curry3(genericReduce, collection, reducer, __))
|
|
1748
1756
|
: genericReduce(collection, reducer, actualInitialValue)
|
|
1749
1757
|
}
|
|
1750
|
-
return isPromise(
|
|
1751
|
-
?
|
|
1752
|
-
: genericReduce(collection, reducer,
|
|
1758
|
+
return isPromise(initial)
|
|
1759
|
+
? initial.then(curry3(genericReduce, collection, reducer, __))
|
|
1760
|
+
: genericReduce(collection, reducer, initial)
|
|
1753
1761
|
}
|
|
1754
1762
|
|
|
1755
1763
|
const reduce = function (...args) {
|
package/every.js
CHANGED
|
@@ -41,15 +41,15 @@ const _every = function (collection, predicate) {
|
|
|
41
41
|
*
|
|
42
42
|
* @synopsis
|
|
43
43
|
* ```coffeescript [specscript]
|
|
44
|
-
* type Foldable = Array|
|
|
44
|
+
* type Foldable = Array|Set|Map|Generator|AsyncGenerator|{ reduce: function }|Object
|
|
45
45
|
*
|
|
46
|
-
* every(
|
|
46
|
+
* every(fold Foldable, predicate function) -> result Promise|boolean
|
|
47
47
|
*
|
|
48
|
-
* every(predicate function)(
|
|
48
|
+
* every(predicate function)(fold Foldable) -> result Promise|boolean
|
|
49
49
|
* ```
|
|
50
50
|
*
|
|
51
51
|
* @description
|
|
52
|
-
* Test a predicate concurrently across all items of a
|
|
52
|
+
* Test a predicate concurrently across all items of a foldable, returning true if all executions return true.
|
|
53
53
|
*
|
|
54
54
|
* ```javascript [playground]
|
|
55
55
|
* const isOdd = number => number % 2 == 1
|
|
@@ -63,7 +63,16 @@ const _every = function (collection, predicate) {
|
|
|
63
63
|
* ) // true
|
|
64
64
|
* ```
|
|
65
65
|
*
|
|
66
|
-
* The
|
|
66
|
+
* The following data types are considered to be foldables:
|
|
67
|
+
* * `array`
|
|
68
|
+
* * `set`
|
|
69
|
+
* * `map`
|
|
70
|
+
* * `generator`
|
|
71
|
+
* * `async generator`
|
|
72
|
+
* * `object with .reduce method`
|
|
73
|
+
* * `object`
|
|
74
|
+
*
|
|
75
|
+
* `every` works for async generators.
|
|
67
76
|
*
|
|
68
77
|
* ```javascript [playground]
|
|
69
78
|
* const asyncNumbers = async function* () {
|
|
@@ -88,6 +97,11 @@ const _every = function (collection, predicate) {
|
|
|
88
97
|
* every(Promise.resolve([1, 2, 3, 4, 5]), n => n < 6).then(console.log) // true
|
|
89
98
|
* ```
|
|
90
99
|
*
|
|
100
|
+
* See also:
|
|
101
|
+
* * [map](/docs/map)
|
|
102
|
+
* * [some](/docs/some)
|
|
103
|
+
* * [and](/docs/and)
|
|
104
|
+
*
|
|
91
105
|
* @execution concurrent
|
|
92
106
|
*
|
|
93
107
|
* @muxing
|
package/filter.js
CHANGED
|
@@ -90,38 +90,74 @@ const _filter = function (value, predicate) {
|
|
|
90
90
|
*
|
|
91
91
|
* @synopsis
|
|
92
92
|
* ```coffeescript [specscript]
|
|
93
|
-
* type Filterable = Array|
|
|
93
|
+
* type Filterable = Array|Set|Map|Generator|AsyncGenerator|{ filter: function }|Object
|
|
94
94
|
*
|
|
95
95
|
* type Predicate = (
|
|
96
96
|
* value any,
|
|
97
|
-
* indexOrKey number|string,
|
|
98
|
-
*
|
|
97
|
+
* indexOrKey number|string|any,
|
|
98
|
+
* filt Filterable,
|
|
99
99
|
* )=>boolean
|
|
100
100
|
*
|
|
101
|
-
* filter(
|
|
102
|
-
* filter(predicate Predicate)(
|
|
101
|
+
* filter(filt Filterable, predicate Predicate) -> result Promise|Filterable
|
|
102
|
+
* filter(predicate Predicate)(filt Filterable) -> result Promise|Filterable
|
|
103
103
|
* ```
|
|
104
104
|
*
|
|
105
105
|
* @description
|
|
106
|
-
*
|
|
106
|
+
* Filters out items from a filterable. Returns a filterable of the same type. The order of the items in the filterable is preserved.
|
|
107
107
|
*
|
|
108
|
-
* The following data types are considered
|
|
108
|
+
* The following data types are considered to be filterables:
|
|
109
109
|
* * `array`
|
|
110
|
-
* * `object`
|
|
111
110
|
* * `set`
|
|
111
|
+
* * `map`
|
|
112
112
|
* * `generator`
|
|
113
113
|
* * `async generator`
|
|
114
|
+
* * `object with .filter method`
|
|
115
|
+
* * `object`
|
|
114
116
|
*
|
|
115
117
|
* The filtering operation is defined by a given predicate function. The predicate function dictates whether a given item from the filterable should be included in the returned filterable.
|
|
116
118
|
*
|
|
117
119
|
* ```javascript
|
|
118
120
|
* const predicate = function (item) {
|
|
119
|
-
* // condition is
|
|
121
|
+
* // condition is the boolean result of the predicate test on item
|
|
120
122
|
* return condition
|
|
121
123
|
* }
|
|
122
124
|
* ```
|
|
123
125
|
*
|
|
124
|
-
*
|
|
126
|
+
* The predicate function signature changes depending on the provided filterable.
|
|
127
|
+
*
|
|
128
|
+
* If the filterable is an array:
|
|
129
|
+
* ```coffeescript [specscript]
|
|
130
|
+
* predicate(item any, index number, filt Array) -> condition Promise|boolean|any
|
|
131
|
+
* ```
|
|
132
|
+
*
|
|
133
|
+
* If the filterable is a set:
|
|
134
|
+
* ```coffeescript [specscript]
|
|
135
|
+
* predicate(item any, item any, filt Set) -> condition Promise|boolean|any
|
|
136
|
+
* ```
|
|
137
|
+
*
|
|
138
|
+
* If the filterable is a map:
|
|
139
|
+
* ```coffeescript [specscript]
|
|
140
|
+
* predicate(item any, key any, filt Map) -> condition Promise|boolean|any
|
|
141
|
+
* ```
|
|
142
|
+
*
|
|
143
|
+
* If the filterable is a generator:
|
|
144
|
+
* ```coffeescript [specscript]
|
|
145
|
+
* predicate(item any) -> condition Promise|boolean|any
|
|
146
|
+
* ```
|
|
147
|
+
*
|
|
148
|
+
* If the filterable is an async generator:
|
|
149
|
+
* ```coffeescript [specscript]
|
|
150
|
+
* predicate(item any) -> condition Promise|boolean|any
|
|
151
|
+
* ```
|
|
152
|
+
*
|
|
153
|
+
* If the filterable is an object with a `.filter` method, the predicate function signature is defined externally.
|
|
154
|
+
*
|
|
155
|
+
* If the filterable is a plain object:
|
|
156
|
+
* ```coffeescript [specscript]
|
|
157
|
+
* predicate(item any, key string, filt Object) -> condition Promise|boolean|any
|
|
158
|
+
* ```
|
|
159
|
+
*
|
|
160
|
+
* `filter` works for arrays.
|
|
125
161
|
*
|
|
126
162
|
* ```javascript [playground]
|
|
127
163
|
* const isOdd = number => number % 2 == 1
|
|
@@ -132,7 +168,7 @@ const _filter = function (value, predicate) {
|
|
|
132
168
|
* console.log(result) // [1, 3, 5]
|
|
133
169
|
* ```
|
|
134
170
|
*
|
|
135
|
-
*
|
|
171
|
+
* If the predicate is asynchronous, the returned promise is concurrently resolved for its boolean condition before continuing with the filtering operation.
|
|
136
172
|
*
|
|
137
173
|
* ```javascript [playground]
|
|
138
174
|
* const asyncIsOdd = async number => number % 2 == 1
|
|
@@ -143,7 +179,7 @@ const _filter = function (value, predicate) {
|
|
|
143
179
|
* promise.then(console.log) // [1, 3, 5]
|
|
144
180
|
* ```
|
|
145
181
|
*
|
|
146
|
-
*
|
|
182
|
+
* `filter` applies the predicate function to just the values of an object.
|
|
147
183
|
*
|
|
148
184
|
* ```javascript [playground]
|
|
149
185
|
* const isOdd = number => number % 2 == 1
|
|
@@ -154,7 +190,7 @@ const _filter = function (value, predicate) {
|
|
|
154
190
|
* console.log(result) // { a: 1, c: 3, e: 5 }
|
|
155
191
|
* ```
|
|
156
192
|
*
|
|
157
|
-
*
|
|
193
|
+
* `filter` applies the predicate to the values of the entries of a map.
|
|
158
194
|
*
|
|
159
195
|
* ```javascript [playground]
|
|
160
196
|
* const isOdd = number => number % 2 == 1
|
|
@@ -165,7 +201,7 @@ const _filter = function (value, predicate) {
|
|
|
165
201
|
* console.log(result) // Map(3) { 'a' => 1, 'c' => 3, 'e' => 5 }
|
|
166
202
|
* ```
|
|
167
203
|
*
|
|
168
|
-
* For generators, `filter` returns a lazily filtered generator. All values that are normally yielded by the generator that test
|
|
204
|
+
* For generators, `filter` returns a lazily filtered generator. All values that are normally yielded by the generator that test false by the predicate are excluded from the returned generator.
|
|
169
205
|
*
|
|
170
206
|
* ```javascript [playground]
|
|
171
207
|
* const isOdd = number => number % 2 == 1
|
|
@@ -192,7 +228,7 @@ const _filter = function (value, predicate) {
|
|
|
192
228
|
* }
|
|
193
229
|
* ```
|
|
194
230
|
*
|
|
195
|
-
* For async generators, `filter` returns a lazily filtered async generator. All values that are normally yielded by the async generator that test falsy by the predicate are
|
|
231
|
+
* For async generators, `filter` returns a lazily filtered async generator. All values that are normally yielded by the async generator that test falsy by the predicate are excluded from the returned async generator.
|
|
196
232
|
*
|
|
197
233
|
* ```javascript [playground]
|
|
198
234
|
* const asyncIsOdd = async number => number % 2 == 1
|
|
@@ -229,6 +265,14 @@ const _filter = function (value, predicate) {
|
|
|
229
265
|
* // [1, 3, 5]
|
|
230
266
|
* ```
|
|
231
267
|
*
|
|
268
|
+
* See also:
|
|
269
|
+
* * [forEach](/docs/forEach)
|
|
270
|
+
* * [map](/docs/map)
|
|
271
|
+
* * [reduce](/docs/reduce)
|
|
272
|
+
* * [transform](/docs/transform)
|
|
273
|
+
* * [flatMap](/docs/flatMap)
|
|
274
|
+
* * [some](/docs/some)
|
|
275
|
+
*
|
|
232
276
|
* @execution concurrent
|
|
233
277
|
*
|
|
234
278
|
* @transducing
|