rubico 1.9.0 → 1.9.3
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/.github/workflows/nodejs.yml +1 -1
- package/CHANGELOG.md +16 -1
- package/_internal/areAllValuesNonfunctions.js +20 -0
- package/_internal/arrayConditional.js +42 -16
- package/_internal/nonfunctionsConditional.js +41 -0
- package/and.js +76 -32
- package/benchmarks/tryCatch.js +17 -2
- 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/__.min.mjs +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.min.mjs +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.min.mjs +1 -1
- package/dist/always.mjs +1 -1
- package/dist/and.es.js +64 -22
- package/dist/and.es.min.js +2 -2
- package/dist/and.js +64 -22
- package/dist/and.min.js +2 -2
- package/dist/and.min.mjs +2 -2
- package/dist/and.mjs +64 -22
- package/dist/any.es.js +1 -1
- package/dist/any.es.min.js +1 -1
- package/dist/any.js +1 -1
- package/dist/any.min.js +1 -1
- package/dist/any.min.mjs +1 -1
- package/dist/any.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.min.mjs +1 -1
- package/dist/assign.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.min.mjs +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.min.mjs +1 -1
- package/dist/eq.mjs +1 -1
- package/dist/filter.es.js +31 -4
- package/dist/filter.es.min.js +2 -2
- package/dist/filter.js +31 -4
- package/dist/filter.min.js +2 -2
- package/dist/filter.min.mjs +2 -2
- package/dist/filter.mjs +31 -4
- 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.min.mjs +1 -1
- package/dist/flatMap.mjs +1 -1
- package/dist/fork.es.js +1 -1
- package/dist/fork.es.min.js +1 -1
- package/dist/fork.js +1 -1
- package/dist/fork.min.js +1 -1
- package/dist/fork.min.mjs +1 -1
- package/dist/fork.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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +1 -1
- package/dist/lte.mjs +1 -1
- package/dist/map.es.js +32 -24
- package/dist/map.es.min.js +2 -2
- package/dist/map.js +32 -24
- package/dist/map.min.js +2 -2
- package/dist/map.min.mjs +2 -2
- package/dist/map.mjs +32 -24
- 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.min.mjs +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.min.mjs +1 -1
- package/dist/omit.mjs +1 -1
- package/dist/or.es.js +74 -22
- package/dist/or.es.min.js +2 -2
- package/dist/or.js +74 -22
- package/dist/or.min.js +2 -2
- package/dist/or.min.mjs +2 -2
- package/dist/or.mjs +74 -22
- 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.min.mjs +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.min.mjs +1 -1
- package/dist/pipe.mjs +1 -1
- package/dist/reduce.es.js +12 -5
- package/dist/reduce.es.min.js +2 -2
- package/dist/reduce.js +12 -5
- package/dist/reduce.min.js +2 -2
- package/dist/reduce.min.mjs +2 -2
- package/dist/reduce.mjs +12 -5
- package/dist/rubico.es.js +197 -94
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.js +197 -94
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.min.mjs +2 -2
- package/dist/rubico.mjs +197 -94
- package/dist/set.es.js +45 -1
- package/dist/set.es.min.js +2 -2
- package/dist/set.js +45 -1
- package/dist/set.min.js +2 -2
- package/dist/set.min.mjs +2 -2
- package/dist/set.mjs +45 -1
- package/dist/switchCase.es.js +18 -18
- package/dist/switchCase.es.min.js +2 -2
- package/dist/switchCase.js +18 -18
- package/dist/switchCase.min.js +1 -1
- package/dist/switchCase.min.mjs +2 -2
- package/dist/switchCase.mjs +18 -18
- 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.min.mjs +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.min.mjs +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.min.mjs +1 -1
- package/dist/transform.mjs +1 -1
- package/dist/tryCatch.es.js +26 -9
- package/dist/tryCatch.es.min.js +2 -2
- package/dist/tryCatch.js +26 -9
- package/dist/tryCatch.min.js +2 -2
- package/dist/tryCatch.min.mjs +2 -2
- package/dist/tryCatch.mjs +26 -9
- 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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +1 -1
- package/dist/x/differenceWith.mjs +1 -1
- package/dist/x/filterOut.es.js +31 -4
- package/dist/x/filterOut.es.min.js +2 -2
- package/dist/x/filterOut.js +31 -4
- package/dist/x/filterOut.min.js +2 -2
- package/dist/x/filterOut.min.mjs +2 -2
- package/dist/x/filterOut.mjs +31 -4
- 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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +1 -1
- package/dist/x/flatten.mjs +1 -1
- package/dist/x/forEach.es.js +1 -1
- package/dist/x/forEach.es.min.js +1 -1
- package/dist/x/forEach.js +1 -1
- package/dist/x/forEach.min.js +1 -1
- package/dist/x/forEach.min.mjs +1 -1
- package/dist/x/forEach.mjs +1 -1
- package/dist/x/groupBy.es.js +12 -5
- package/dist/x/groupBy.es.min.js +2 -2
- package/dist/x/groupBy.js +12 -5
- package/dist/x/groupBy.min.js +2 -2
- package/dist/x/groupBy.min.mjs +2 -2
- package/dist/x/groupBy.mjs +12 -5
- 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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +1 -1
- package/dist/x/isFunction.mjs +1 -1
- package/dist/x/isIn.es.js +81 -0
- package/dist/x/isIn.es.min.js +7 -0
- package/dist/x/isIn.js +88 -0
- package/dist/x/isIn.min.js +8 -0
- package/dist/x/isIn.min.mjs +7 -0
- package/dist/x/isIn.mjs +81 -0
- 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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +1 -1
- package/dist/x/last.mjs +1 -1
- package/dist/x/maxBy.es.js +118 -0
- package/dist/x/maxBy.es.min.js +7 -0
- package/dist/x/maxBy.js +125 -0
- package/dist/x/maxBy.min.js +8 -0
- package/dist/x/maxBy.min.mjs +7 -0
- package/dist/x/maxBy.mjs +118 -0
- 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.min.mjs +1 -1
- package/dist/x/noop.mjs +1 -1
- package/dist/x/pluck.es.js +32 -24
- package/dist/x/pluck.es.min.js +2 -2
- package/dist/x/pluck.js +32 -24
- package/dist/x/pluck.min.js +2 -2
- package/dist/x/pluck.min.mjs +2 -2
- package/dist/x/pluck.mjs +32 -24
- 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.min.mjs +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.min.mjs +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.min.mjs +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.min.mjs +1 -1
- package/dist/x/unionWith.mjs +1 -1
- package/dist/x/uniq.es.js +2 -452
- package/dist/x/uniq.es.min.js +2 -2
- package/dist/x/uniq.js +2 -452
- package/dist/x/uniq.min.js +2 -2
- package/dist/x/uniq.min.mjs +2 -2
- package/dist/x/uniq.mjs +2 -452
- 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.min.mjs +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.min.mjs +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.min.mjs +1 -1
- package/dist/x/when.mjs +1 -1
- package/dist-test.js +183 -26
- package/es.js +197 -94
- package/filter.js +103 -41
- package/index.js +197 -94
- package/map.js +114 -50
- package/or.js +81 -33
- package/package.json +2 -1
- package/reduce.js +28 -11
- package/set.js +22 -0
- package/switchCase.js +26 -18
- package/test.js +94 -42
- package/tryCatch.js +41 -10
- package/x/index.js +4 -0
- package/x/isIn.js +146 -0
- package/x/isIn.test.js +55 -0
- package/x/maxBy.js +69 -0
- package/x/maxBy.test.js +26 -0
- package/x/uniq.benchmark.js +57 -0
- package/x/uniq.js +1 -10
- package/_internal/areFuncsOrValuesAllValues.js +0 -20
- package/_internal/funcsOrValuesConditional.js +0 -67
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
|
-
## v1.9.
|
|
1
|
+
## v1.9.3 - latest
|
|
2
|
+
* property value passed to set may be a resolver - [#224](https://github.com/a-synchronous/rubico/pull/224)
|
|
3
|
+
* rubico/x/isIn - counterpart to includes - [#228](https://github.com/a-synchronous/rubico/pull/228) - [lulldev](https://github.com/lulldev)
|
|
4
|
+
* rubico/x/maxBy - finds the item that is the max by a property denoted by path - [#229](https://github.com/a-synchronous/rubico/pull/229)
|
|
5
|
+
* eager map - [#225](https://github.com/a-synchronous/rubico/pull/225)
|
|
6
|
+
* eager filter - [#226](https://github.com/a-synchronous/rubico/pull/226)
|
|
7
|
+
* eager reduce - [#227](https://github.com/a-synchronous/rubico/pull/227)
|
|
8
|
+
|
|
9
|
+
## v1.9.2
|
|
10
|
+
* eager tryCatch - [#222](https://github.com/a-synchronous/rubico/pull/218)
|
|
11
|
+
|
|
12
|
+
## v1.9.1
|
|
13
|
+
* more performant uniq - [#218](https://github.com/a-synchronous/rubico/pull/218) - [jasir](https://github.com/jasir)
|
|
14
|
+
* and and or handle nonfunction values - [#221](https://github.com/a-synchronous/rubico/pull/221)
|
|
15
|
+
|
|
16
|
+
## v1.9.0
|
|
2
17
|
* switchCase handles non-function values - [#220](https://github.com/a-synchronous/rubico/pull/220)
|
|
3
18
|
|
|
4
19
|
## v1.8.15
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @name areAllValuesNonfunctions
|
|
3
|
+
*
|
|
4
|
+
* @synopsis
|
|
5
|
+
* ```coffeescript [specscript]
|
|
6
|
+
* areAllValuesNonfunctions(values Array<function|value>) -> boolean
|
|
7
|
+
* ```
|
|
8
|
+
*/
|
|
9
|
+
const areAllValuesNonfunctions = function (values) {
|
|
10
|
+
const length = values.length
|
|
11
|
+
let index = -1
|
|
12
|
+
while (++index < length) {
|
|
13
|
+
if (typeof values[index] == 'function') {
|
|
14
|
+
return false
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return true
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
module.exports = areAllValuesNonfunctions
|
|
@@ -1,41 +1,67 @@
|
|
|
1
1
|
const isPromise = require('./isPromise')
|
|
2
|
-
const curry3 = require('./curry3')
|
|
3
|
-
const always = require('./always')
|
|
4
|
-
const thunkify2 = require('./thunkify2')
|
|
5
2
|
const thunkConditional = require('./thunkConditional')
|
|
3
|
+
const thunkifyArgs = require('./thunkifyArgs')
|
|
4
|
+
const thunkify3 = require('./thunkify3')
|
|
6
5
|
const __ = require('./placeholder')
|
|
6
|
+
const curry3 = require('./curry3')
|
|
7
|
+
const always = require('./always')
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* @name arrayConditional
|
|
10
11
|
*
|
|
11
12
|
* @synopsis
|
|
12
13
|
* ```coffeescript [specscript]
|
|
13
|
-
* arrayConditional(
|
|
14
|
+
* arrayConditional(
|
|
15
|
+
* array Array<function|value>,
|
|
16
|
+
* args Array,
|
|
17
|
+
* funcsIndex number,
|
|
18
|
+
* ) -> Promise|any
|
|
14
19
|
* ```
|
|
20
|
+
*
|
|
21
|
+
* @description
|
|
22
|
+
* Conditional operator `a ? b : c ? d : e ? ...` for functions.
|
|
23
|
+
*
|
|
24
|
+
* @TODO isPromise conditional await
|
|
25
|
+
* @TODO benchmark vs regular promise handling
|
|
15
26
|
*/
|
|
16
|
-
const arrayConditional = function (array,
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
while ((
|
|
20
|
-
const
|
|
21
|
-
|
|
27
|
+
const arrayConditional = function (array, args, funcsIndex) {
|
|
28
|
+
const lastIndex = array.length - 1
|
|
29
|
+
|
|
30
|
+
while ((funcsIndex += 2) < lastIndex) {
|
|
31
|
+
const predicate = array[funcsIndex],
|
|
32
|
+
resolverOrValue = array[funcsIndex + 1]
|
|
33
|
+
|
|
34
|
+
const predication = typeof predicate == 'function'
|
|
35
|
+
? predicate(...args)
|
|
36
|
+
: predicate
|
|
37
|
+
|
|
22
38
|
if (isPromise(predication)) {
|
|
23
39
|
return predication.then(curry3(
|
|
24
40
|
thunkConditional,
|
|
25
41
|
__,
|
|
26
|
-
|
|
27
|
-
|
|
42
|
+
typeof resolverOrValue == 'function'
|
|
43
|
+
? thunkifyArgs(resolverOrValue, args)
|
|
44
|
+
: always(resolverOrValue),
|
|
45
|
+
thunkify3(arrayConditional, array, args, funcsIndex),
|
|
28
46
|
))
|
|
29
47
|
}
|
|
48
|
+
|
|
30
49
|
if (predication) {
|
|
31
|
-
return
|
|
50
|
+
return typeof resolverOrValue == 'function'
|
|
51
|
+
? resolverOrValue(...args)
|
|
52
|
+
: resolverOrValue
|
|
32
53
|
}
|
|
33
54
|
}
|
|
34
|
-
|
|
35
|
-
|
|
55
|
+
|
|
56
|
+
// even number of array
|
|
57
|
+
if (funcsIndex == array.length) {
|
|
36
58
|
return undefined
|
|
37
59
|
}
|
|
38
|
-
|
|
60
|
+
|
|
61
|
+
const defaultResolverOrValue = array[lastIndex]
|
|
62
|
+
return typeof defaultResolverOrValue == 'function'
|
|
63
|
+
? defaultResolverOrValue(...args)
|
|
64
|
+
: defaultResolverOrValue
|
|
39
65
|
}
|
|
40
66
|
|
|
41
67
|
module.exports = arrayConditional
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const isPromise = require('./isPromise')
|
|
2
|
+
const curry3 = require('./curry3')
|
|
3
|
+
const always = require('./always')
|
|
4
|
+
const thunkify2 = require('./thunkify2')
|
|
5
|
+
const thunkConditional = require('./thunkConditional')
|
|
6
|
+
const __ = require('./placeholder')
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @name nonfunctionsConditional
|
|
10
|
+
*
|
|
11
|
+
* @synopsis
|
|
12
|
+
* ```coffeescript [specscript]
|
|
13
|
+
* nonfunctionsConditional(array Array<value>, index number) -> boolean
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
const nonfunctionsConditional = function (array, index) {
|
|
17
|
+
const length = array.length,
|
|
18
|
+
lastIndex = length - 1
|
|
19
|
+
while ((index += 2) < lastIndex) {
|
|
20
|
+
const predication = array[index],
|
|
21
|
+
value = array[index + 1]
|
|
22
|
+
if (isPromise(predication)) {
|
|
23
|
+
return predication.then(curry3(
|
|
24
|
+
thunkConditional,
|
|
25
|
+
__,
|
|
26
|
+
always(value),
|
|
27
|
+
thunkify2(nonfunctionsConditional, array, index),
|
|
28
|
+
))
|
|
29
|
+
}
|
|
30
|
+
if (predication) {
|
|
31
|
+
return value
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// even number of array values
|
|
35
|
+
if (index == length) {
|
|
36
|
+
return undefined
|
|
37
|
+
}
|
|
38
|
+
return array[index]
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
module.exports = nonfunctionsConditional
|
package/and.js
CHANGED
|
@@ -2,29 +2,61 @@ const isPromise = require('./_internal/isPromise')
|
|
|
2
2
|
const curry3 = require('./_internal/curry3')
|
|
3
3
|
const __ = require('./_internal/placeholder')
|
|
4
4
|
const thunkConditional = require('./_internal/thunkConditional')
|
|
5
|
+
const areAllValuesNonfunctions = require('./_internal/areAllValuesNonfunctions')
|
|
6
|
+
const thunkify2 = require('./_internal/thunkify2')
|
|
5
7
|
const thunkify3 = require('./_internal/thunkify3')
|
|
6
8
|
const always = require('./_internal/always')
|
|
7
9
|
|
|
8
10
|
/**
|
|
9
|
-
* @name
|
|
11
|
+
* @name areAllNonfunctionsTruthy
|
|
10
12
|
*
|
|
11
13
|
* @synopsis
|
|
12
14
|
* ```coffeescript [specscript]
|
|
13
|
-
*
|
|
15
|
+
* areAllNonfunctionsTruthy(predicates Array<value>) -> Promise|boolean
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
const areAllNonfunctionsTruthy = function (predicates, index) {
|
|
19
|
+
const length = predicates.length
|
|
20
|
+
while (++index < length) {
|
|
21
|
+
let predicate = predicates[index]
|
|
22
|
+
if (isPromise(predicate)) {
|
|
23
|
+
return predicate.then(curry3(
|
|
24
|
+
thunkConditional,
|
|
25
|
+
__,
|
|
26
|
+
thunkify2(areAllNonfunctionsTruthy, predicates, index),
|
|
27
|
+
always(false),
|
|
28
|
+
))
|
|
29
|
+
}
|
|
30
|
+
if (!predicate) {
|
|
31
|
+
return false
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return true
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @name asyncArePredicatesAllTruthy
|
|
39
|
+
*
|
|
40
|
+
* @synopsis
|
|
41
|
+
* ```coffeescript [specscript]
|
|
42
|
+
* asyncArePredicatesAllTruthy(
|
|
14
43
|
* predicates Array<value=>Promise|boolean>
|
|
15
|
-
*
|
|
44
|
+
* point any,
|
|
16
45
|
* index number,
|
|
17
46
|
* ) -> allTruthy boolean
|
|
18
47
|
* ```
|
|
19
48
|
*/
|
|
20
|
-
const
|
|
49
|
+
const asyncArePredicatesAllTruthy = async function (predicates, point, index) {
|
|
21
50
|
const length = predicates.length
|
|
22
51
|
while (++index < length) {
|
|
23
|
-
let
|
|
24
|
-
if (
|
|
25
|
-
|
|
52
|
+
let predicate = predicates[index]
|
|
53
|
+
if (typeof predicate == 'function') {
|
|
54
|
+
predicate = predicate(point)
|
|
55
|
+
}
|
|
56
|
+
if (isPromise(predicate)) {
|
|
57
|
+
predicate = await predicate
|
|
26
58
|
}
|
|
27
|
-
if (!
|
|
59
|
+
if (!predicate) {
|
|
28
60
|
return false
|
|
29
61
|
}
|
|
30
62
|
}
|
|
@@ -36,14 +68,13 @@ const asyncAnd = async function (predicates, value, index) {
|
|
|
36
68
|
*
|
|
37
69
|
* @synopsis
|
|
38
70
|
* ```coffeescript [specscript]
|
|
39
|
-
*
|
|
40
|
-
* predicates Array<
|
|
41
|
-
*
|
|
42
|
-
* and(predicates)(value) -> Promise|boolean
|
|
71
|
+
* and(
|
|
72
|
+
* predicates Array<predicate function|nonfunction>
|
|
73
|
+
* )(point any) -> Promise|boolean
|
|
43
74
|
* ```
|
|
44
75
|
*
|
|
45
76
|
* @description
|
|
46
|
-
* Test an array of predicates concurrently against a single input, returning true if all test truthy.
|
|
77
|
+
* Test an array of predicates or nonfunction values concurrently against a single input, returning true if all test truthy.
|
|
47
78
|
*
|
|
48
79
|
* ```javascript [playground]
|
|
49
80
|
* const isOdd = number => number % 2 == 1
|
|
@@ -57,32 +88,45 @@ const asyncAnd = async function (predicates, value, index) {
|
|
|
57
88
|
* ) // true
|
|
58
89
|
* ```
|
|
59
90
|
*
|
|
60
|
-
*
|
|
91
|
+
* `and` behaves eagerly if provided only nonfunction values
|
|
92
|
+
*
|
|
93
|
+
* ```javascript [playground]
|
|
94
|
+
* console.log(
|
|
95
|
+
* and([true, true, true]),
|
|
96
|
+
* ) // true
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @execution series
|
|
61
100
|
*
|
|
62
101
|
* @note ...args slows down here by an order of magnitude
|
|
63
102
|
*/
|
|
64
|
-
const and = predicates =>
|
|
65
|
-
if (
|
|
66
|
-
return
|
|
103
|
+
const and = predicates => {
|
|
104
|
+
if (areAllValuesNonfunctions(predicates)) {
|
|
105
|
+
return areAllNonfunctionsTruthy(predicates, -1)
|
|
67
106
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
107
|
+
return function arePredicatesAllTruthy(point) {
|
|
108
|
+
const length = predicates.length
|
|
109
|
+
let index = -1
|
|
71
110
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
111
|
+
while (++index < length) {
|
|
112
|
+
let predicate = predicates[index]
|
|
113
|
+
if (typeof predicate == 'function') {
|
|
114
|
+
predicate = predicate(point)
|
|
115
|
+
}
|
|
116
|
+
if (isPromise(predicate)) {
|
|
117
|
+
return predicate.then(curry3(
|
|
118
|
+
thunkConditional,
|
|
119
|
+
__,
|
|
120
|
+
thunkify3(asyncArePredicatesAllTruthy, predicates, point, index),
|
|
121
|
+
always(false),
|
|
122
|
+
))
|
|
123
|
+
}
|
|
124
|
+
if (!predicate) {
|
|
125
|
+
return false
|
|
126
|
+
}
|
|
83
127
|
}
|
|
128
|
+
return true
|
|
84
129
|
}
|
|
85
|
-
return true
|
|
86
130
|
}
|
|
87
131
|
|
|
88
132
|
module.exports = and
|
package/benchmarks/tryCatch.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
1
|
+
const tryCatch = require('../tryCatch')
|
|
2
|
+
const timeInLoop = require('../x/timeInLoop')
|
|
3
3
|
|
|
4
4
|
const isPromise = value => value != null && typeof value.then == 'function'
|
|
5
5
|
|
|
@@ -75,6 +75,8 @@ const tryCatch3 = (tryer, catcher) => function tryCatcher(...args) {
|
|
|
75
75
|
* @benchmark
|
|
76
76
|
* tryCatch2: 1e+6: 36.369ms
|
|
77
77
|
* tryCatch3: 1e+6: 17.027ms
|
|
78
|
+
*
|
|
79
|
+
* TODO find the date
|
|
78
80
|
*/
|
|
79
81
|
|
|
80
82
|
{
|
|
@@ -91,3 +93,16 @@ const tryCatch3 = (tryer, catcher) => function tryCatcher(...args) {
|
|
|
91
93
|
|
|
92
94
|
// timeInLoop('tryCatch3', 1e6, () => tryCatch3(identity, noop)('yo'))
|
|
93
95
|
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* @name tryCatch 2022-06-13
|
|
99
|
+
*
|
|
100
|
+
* @benchmark
|
|
101
|
+
* tryCatch: 1e+6: tryCatch: 1e+6: 39.787ms
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
{
|
|
105
|
+
const identity = value => value
|
|
106
|
+
const noop = () => {}
|
|
107
|
+
timeInLoop('tryCatch', 1e6, () => tryCatch2(identity, noop)('yo'))
|
|
108
|
+
}
|
package/dist/__.es.js
CHANGED
package/dist/__.es.min.js
CHANGED
package/dist/__.js
CHANGED
package/dist/__.min.js
CHANGED
package/dist/__.min.mjs
CHANGED
package/dist/__.mjs
CHANGED
package/dist/all.es.js
CHANGED
package/dist/all.es.min.js
CHANGED
package/dist/all.js
CHANGED
package/dist/all.min.js
CHANGED
package/dist/all.min.mjs
CHANGED
package/dist/all.mjs
CHANGED
package/dist/always.es.js
CHANGED
package/dist/always.es.min.js
CHANGED
package/dist/always.js
CHANGED
package/dist/always.min.js
CHANGED
package/dist/always.min.mjs
CHANGED
package/dist/always.mjs
CHANGED
package/dist/and.es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico v1.9.
|
|
2
|
+
* rubico v1.9.3
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
4
|
* (c) 2019-2021 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
@@ -44,48 +44,90 @@ const thunkConditional = (
|
|
|
44
44
|
conditionalExpression, thunkOnTruthy, thunkOnFalsy,
|
|
45
45
|
) => conditionalExpression ? thunkOnTruthy() : thunkOnFalsy()
|
|
46
46
|
|
|
47
|
+
const areAllValuesNonfunctions = function (values) {
|
|
48
|
+
const length = values.length
|
|
49
|
+
let index = -1
|
|
50
|
+
while (++index < length) {
|
|
51
|
+
if (typeof values[index] == 'function') {
|
|
52
|
+
return false
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return true
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const thunkify2 = (func, arg0, arg1) => function thunk() {
|
|
59
|
+
return func(arg0, arg1)
|
|
60
|
+
}
|
|
61
|
+
|
|
47
62
|
const thunkify3 = (func, arg0, arg1, arg2) => function thunk() {
|
|
48
63
|
return func(arg0, arg1, arg2)
|
|
49
64
|
}
|
|
50
65
|
|
|
51
66
|
const always = value => function getter() { return value }
|
|
52
67
|
|
|
53
|
-
const
|
|
68
|
+
const areAllNonfunctionsTruthy = function (predicates, index) {
|
|
54
69
|
const length = predicates.length
|
|
55
70
|
while (++index < length) {
|
|
56
|
-
let
|
|
57
|
-
if (isPromise(
|
|
58
|
-
|
|
71
|
+
let predicate = predicates[index]
|
|
72
|
+
if (isPromise(predicate)) {
|
|
73
|
+
return predicate.then(curry3(
|
|
74
|
+
thunkConditional,
|
|
75
|
+
__,
|
|
76
|
+
thunkify2(areAllNonfunctionsTruthy, predicates, index),
|
|
77
|
+
always(false),
|
|
78
|
+
))
|
|
59
79
|
}
|
|
60
|
-
if (!
|
|
80
|
+
if (!predicate) {
|
|
61
81
|
return false
|
|
62
82
|
}
|
|
63
83
|
}
|
|
64
84
|
return true
|
|
65
85
|
}
|
|
66
86
|
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
return value.and(predicates)
|
|
70
|
-
}
|
|
71
|
-
const length = predicates.length,
|
|
72
|
-
promises = []
|
|
73
|
-
let index = -1
|
|
74
|
-
|
|
87
|
+
const asyncArePredicatesAllTruthy = async function (predicates, point, index) {
|
|
88
|
+
const length = predicates.length
|
|
75
89
|
while (++index < length) {
|
|
76
|
-
|
|
77
|
-
if (
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
always(false)))
|
|
90
|
+
let predicate = predicates[index]
|
|
91
|
+
if (typeof predicate == 'function') {
|
|
92
|
+
predicate = predicate(point)
|
|
93
|
+
}
|
|
94
|
+
if (isPromise(predicate)) {
|
|
95
|
+
predicate = await predicate
|
|
83
96
|
}
|
|
84
|
-
if (!
|
|
97
|
+
if (!predicate) {
|
|
85
98
|
return false
|
|
86
99
|
}
|
|
87
100
|
}
|
|
88
101
|
return true
|
|
89
102
|
}
|
|
90
103
|
|
|
104
|
+
const and = predicates => {
|
|
105
|
+
if (areAllValuesNonfunctions(predicates)) {
|
|
106
|
+
return areAllNonfunctionsTruthy(predicates, -1)
|
|
107
|
+
}
|
|
108
|
+
return function arePredicatesAllTruthy(point) {
|
|
109
|
+
const length = predicates.length
|
|
110
|
+
let index = -1
|
|
111
|
+
|
|
112
|
+
while (++index < length) {
|
|
113
|
+
let predicate = predicates[index]
|
|
114
|
+
if (typeof predicate == 'function') {
|
|
115
|
+
predicate = predicate(point)
|
|
116
|
+
}
|
|
117
|
+
if (isPromise(predicate)) {
|
|
118
|
+
return predicate.then(curry3(
|
|
119
|
+
thunkConditional,
|
|
120
|
+
__,
|
|
121
|
+
thunkify3(asyncArePredicatesAllTruthy, predicates, point, index),
|
|
122
|
+
always(false),
|
|
123
|
+
))
|
|
124
|
+
}
|
|
125
|
+
if (!predicate) {
|
|
126
|
+
return false
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return true
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
91
133
|
export default and
|
package/dist/and.es.min.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico v1.9.
|
|
2
|
+
* rubico v1.9.3
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
4
|
* (c) 2019-2021 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
6
6
|
*/
|
|
7
|
-
const isPromise=
|
|
7
|
+
const isPromise=n=>null!=n&&"function"==typeof n.then,__=Symbol.for("placeholder"),curry3ResolveArg0=(n,r,t)=>function(e){return n(e,r,t)},curry3ResolveArg1=(n,r,t)=>function(e){return n(r,e,t)},curry3ResolveArg2=(n,r,t)=>function(e){return n(r,t,e)},curry3=function(n,r,t,e){return r==__?curry3ResolveArg0(n,t,e):t==__?curry3ResolveArg1(n,r,e):curry3ResolveArg2(n,r,t)},thunkConditional=(n,r,t)=>n?r():t(),areAllValuesNonfunctions=function(n){const r=n.length;let t=-1;for(;++t<r;)if("function"==typeof n[t])return!1;return!0},thunkify2=(n,r,t)=>function(){return n(r,t)},thunkify3=(n,r,t,e)=>function(){return n(r,t,e)},always=n=>function(){return n},areAllNonfunctionsTruthy=function(n,r){const t=n.length;for(;++r<t;){let t=n[r];if(isPromise(t))return t.then(curry3(thunkConditional,__,thunkify2(areAllNonfunctionsTruthy,n,r),always(!1)));if(!t)return!1}return!0},asyncArePredicatesAllTruthy=async function(n,r,t){const e=n.length;for(;++t<e;){let e=n[t];if("function"==typeof e&&(e=e(r)),isPromise(e)&&(e=await e),!e)return!1}return!0},and=n=>areAllValuesNonfunctions(n)?areAllNonfunctionsTruthy(n,-1):function(r){const t=n.length;let e=-1;for(;++e<t;){let t=n[e];if("function"==typeof t&&(t=t(r)),isPromise(t))return t.then(curry3(thunkConditional,__,thunkify3(asyncArePredicatesAllTruthy,n,r,e),always(!1)));if(!t)return!1}return!0};export default and;
|