rubico 2.8.4 → 2.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/_internal/curryArity.js +3 -3
- package/all.js +28 -53
- package/and.js +1 -1
- package/assign.js +14 -16
- package/compose.js +12 -13
- package/curry.js +1 -1
- package/dist/Transducer.es.js +1 -1
- package/dist/Transducer.es.min.js +1 -1
- package/dist/Transducer.js +1 -1
- package/dist/Transducer.min.js +1 -1
- package/dist/Transducer.mjs +1 -1
- package/dist/__.es.js +1 -1
- package/dist/__.es.min.js +1 -1
- package/dist/__.js +1 -1
- package/dist/__.min.js +1 -1
- package/dist/__.mjs +1 -1
- package/dist/all.es.js +1 -1
- package/dist/all.es.min.js +1 -1
- package/dist/all.js +1 -1
- package/dist/all.min.js +1 -1
- package/dist/all.mjs +1 -1
- package/dist/always.es.js +1 -1
- package/dist/always.es.min.js +1 -1
- package/dist/always.js +1 -1
- package/dist/always.min.js +1 -1
- package/dist/always.mjs +1 -1
- package/dist/and.es.js +1 -1
- package/dist/and.es.min.js +1 -1
- package/dist/and.js +1 -1
- package/dist/and.min.js +1 -1
- package/dist/and.mjs +1 -1
- package/dist/assign.es.js +1 -1
- package/dist/assign.es.min.js +1 -1
- package/dist/assign.js +1 -1
- package/dist/assign.min.js +1 -1
- package/dist/assign.mjs +1 -1
- package/dist/compose.es.js +1 -1
- package/dist/compose.es.min.js +1 -1
- package/dist/compose.js +1 -1
- package/dist/compose.min.js +1 -1
- package/dist/compose.mjs +1 -1
- package/dist/curry.es.js +4 -4
- package/dist/curry.es.min.js +2 -2
- package/dist/curry.js +4 -4
- package/dist/curry.min.js +2 -2
- package/dist/curry.mjs +4 -4
- package/dist/eq.es.js +1 -1
- package/dist/eq.es.min.js +1 -1
- package/dist/eq.js +1 -1
- package/dist/eq.min.js +1 -1
- package/dist/eq.mjs +1 -1
- package/dist/every.es.js +1 -1
- package/dist/every.es.min.js +1 -1
- package/dist/every.js +1 -1
- package/dist/every.min.js +1 -1
- package/dist/every.mjs +1 -1
- package/dist/filter.es.js +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 +27 -3
- package/dist/get.es.min.js +2 -2
- package/dist/get.js +27 -3
- package/dist/get.min.js +2 -2
- package/dist/get.mjs +27 -3
- package/dist/gt.es.js +1 -1
- package/dist/gt.es.min.js +1 -1
- package/dist/gt.js +1 -1
- package/dist/gt.min.js +1 -1
- package/dist/gt.mjs +1 -1
- package/dist/gte.es.js +1 -1
- package/dist/gte.es.min.js +1 -1
- package/dist/gte.js +1 -1
- package/dist/gte.min.js +1 -1
- package/dist/gte.mjs +1 -1
- package/dist/lt.es.js +1 -1
- package/dist/lt.es.min.js +1 -1
- package/dist/lt.js +1 -1
- package/dist/lt.min.js +1 -1
- package/dist/lt.mjs +1 -1
- package/dist/lte.es.js +1 -1
- package/dist/lte.es.min.js +1 -1
- package/dist/lte.js +1 -1
- package/dist/lte.min.js +1 -1
- package/dist/lte.mjs +1 -1
- package/dist/map.es.js +4 -4
- package/dist/map.es.min.js +2 -2
- package/dist/map.js +4 -4
- package/dist/map.min.js +2 -2
- package/dist/map.mjs +4 -4
- 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 +6 -6
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.global.js +6 -6
- package/dist/rubico.global.min.js +2 -2
- package/dist/rubico.js +6 -6
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.mjs +6 -6
- 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 +1 -1
- package/dist/x/groupBy.es.min.js +1 -1
- package/dist/x/groupBy.js +1 -1
- package/dist/x/groupBy.min.js +1 -1
- package/dist/x/groupBy.mjs +1 -1
- package/dist/x/has.es.js +1 -1
- package/dist/x/has.es.min.js +1 -1
- package/dist/x/has.js +1 -1
- package/dist/x/has.min.js +1 -1
- package/dist/x/has.mjs +1 -1
- package/dist/x/identity.es.js +1 -1
- package/dist/x/identity.es.min.js +1 -1
- package/dist/x/identity.js +1 -1
- package/dist/x/identity.min.js +1 -1
- package/dist/x/identity.mjs +1 -1
- package/dist/x/includes.es.js +1 -1
- package/dist/x/includes.es.min.js +1 -1
- package/dist/x/includes.js +1 -1
- package/dist/x/includes.min.js +1 -1
- package/dist/x/includes.mjs +1 -1
- package/dist/x/isDeepEqual.es.js +1 -1
- package/dist/x/isDeepEqual.es.min.js +1 -1
- package/dist/x/isDeepEqual.js +1 -1
- package/dist/x/isDeepEqual.min.js +1 -1
- package/dist/x/isDeepEqual.mjs +1 -1
- package/dist/x/isEmpty.es.js +1 -1
- package/dist/x/isEmpty.es.min.js +1 -1
- package/dist/x/isEmpty.js +1 -1
- package/dist/x/isEmpty.min.js +1 -1
- package/dist/x/isEmpty.mjs +1 -1
- package/dist/x/isEqual.es.js +1 -1
- package/dist/x/isEqual.es.min.js +1 -1
- package/dist/x/isEqual.js +1 -1
- package/dist/x/isEqual.min.js +1 -1
- package/dist/x/isEqual.mjs +1 -1
- package/dist/x/isFunction.es.js +1 -1
- package/dist/x/isFunction.es.min.js +1 -1
- package/dist/x/isFunction.js +1 -1
- package/dist/x/isFunction.min.js +1 -1
- package/dist/x/isFunction.mjs +1 -1
- package/dist/x/isIn.es.js +1 -1
- package/dist/x/isIn.es.min.js +1 -1
- package/dist/x/isIn.js +1 -1
- package/dist/x/isIn.min.js +1 -1
- package/dist/x/isIn.mjs +1 -1
- package/dist/x/isObject.es.js +1 -1
- package/dist/x/isObject.es.min.js +1 -1
- package/dist/x/isObject.js +1 -1
- package/dist/x/isObject.min.js +1 -1
- package/dist/x/isObject.mjs +1 -1
- package/dist/x/isString.es.js +1 -1
- package/dist/x/isString.es.min.js +1 -1
- package/dist/x/isString.js +1 -1
- package/dist/x/isString.min.js +1 -1
- package/dist/x/isString.mjs +1 -1
- package/dist/x/keys.es.js +1 -1
- package/dist/x/keys.es.min.js +1 -1
- package/dist/x/keys.js +1 -1
- package/dist/x/keys.min.js +1 -1
- package/dist/x/keys.mjs +1 -1
- package/dist/x/last.es.js +1 -1
- package/dist/x/last.es.min.js +1 -1
- package/dist/x/last.js +1 -1
- package/dist/x/last.min.js +1 -1
- package/dist/x/last.mjs +1 -1
- package/dist/x/maxBy.es.js +27 -23
- package/dist/x/maxBy.es.min.js +2 -2
- package/dist/x/maxBy.js +27 -23
- package/dist/x/maxBy.min.js +2 -2
- package/dist/x/maxBy.mjs +27 -23
- package/dist/x/noop.es.js +1 -1
- package/dist/x/noop.es.min.js +1 -1
- package/dist/x/noop.js +1 -1
- package/dist/x/noop.min.js +1 -1
- package/dist/x/noop.mjs +1 -1
- package/dist/x/pluck.es.js +8 -6
- package/dist/x/pluck.es.min.js +2 -2
- package/dist/x/pluck.js +8 -6
- package/dist/x/pluck.min.js +2 -2
- package/dist/x/pluck.mjs +8 -6
- 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 +1 -1
- package/es.js +6 -6
- package/every.js +1 -1
- package/filter.js +1 -1
- package/flatMap.js +1 -1
- package/forEach.js +2 -2
- package/get.js +46 -24
- package/gt.js +1 -1
- package/gte.js +1 -1
- package/index.js +6 -6
- package/lt.js +1 -1
- package/lte.js +1 -1
- package/map.js +4 -4
- package/monad/Mux.js +6 -4
- package/monad/PossiblePromise.js +6 -4
- package/monad/README.md +60 -39
- package/monad/Struct.js +6 -4
- package/not.js +1 -1
- package/omit.js +1 -1
- package/or.js +1 -1
- package/package.json +1 -1
- package/pick.js +1 -1
- package/pipe.js +18 -24
- package/reduce.js +1 -1
- package/set.js +1 -1
- package/some.js +1 -1
- package/switchCase.js +41 -41
- package/tap.js +13 -21
- package/transform.js +1 -1
- package/tryCatch.js +16 -24
package/get.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
const isPromise = require('./_internal/isPromise')
|
|
2
|
+
const promiseAll = require('./_internal/promiseAll')
|
|
2
3
|
const __ = require('./_internal/placeholder')
|
|
4
|
+
const curry2 = require('./_internal/curry2')
|
|
3
5
|
const curry3 = require('./_internal/curry3')
|
|
6
|
+
const funcApply = require('./_internal/funcApply')
|
|
4
7
|
const isArray = require('./_internal/isArray')
|
|
5
8
|
const isObject = require('./_internal/isObject')
|
|
6
9
|
const getByPath = require('./_internal/getByPath')
|
|
@@ -18,47 +21,62 @@ const _get = function (object, path, defaultValue) {
|
|
|
18
21
|
*
|
|
19
22
|
* @synopsis
|
|
20
23
|
* ```coffeescript [specscript]
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* ) ->
|
|
26
|
-
*
|
|
27
|
-
* get(
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* )(
|
|
24
|
+
* path string|number|Array<string|number>
|
|
25
|
+
* defaultValue any
|
|
26
|
+
* defaultResolver function
|
|
27
|
+
*
|
|
28
|
+
* get(Promise|Object, path) -> Promise|any
|
|
29
|
+
* get(Promise|Object, path, defaultValue) -> Promise|any
|
|
30
|
+
* get(Promise|Object, path, defaultResolver) -> Promise|any
|
|
31
|
+
*
|
|
32
|
+
* get(path)(Object) -> Promise|any
|
|
33
|
+
* get(path, defaultValue)(Object) -> Promise|any
|
|
34
|
+
* get(path, defaultResolver)(Object) -> Promise|any
|
|
31
35
|
* ```
|
|
32
36
|
*
|
|
33
37
|
* @description
|
|
34
|
-
* Accesses
|
|
38
|
+
* Property accessor. Accesses the property of an object given a path denoted by a string, number, or array of string or numbers.
|
|
35
39
|
*
|
|
36
40
|
* ```javascript [playground]
|
|
37
41
|
* const obj = { hello: 'world' }
|
|
38
42
|
*
|
|
39
|
-
*
|
|
43
|
+
* const value = get(obj, 'hello')
|
|
44
|
+
*
|
|
45
|
+
* console.log(value)
|
|
40
46
|
* ```
|
|
41
47
|
*
|
|
42
|
-
* `get` supports a lazy API for composability
|
|
48
|
+
* `get` supports a lazy API for composability.
|
|
43
49
|
*
|
|
44
50
|
* ```javascript [playground]
|
|
45
51
|
* const obj = { hello: 'world' }
|
|
46
52
|
*
|
|
47
53
|
* const getHello = get('hello')
|
|
48
54
|
*
|
|
49
|
-
*
|
|
55
|
+
* const value = getHello({ hello: 'world' })
|
|
56
|
+
*
|
|
57
|
+
* console.log(value)
|
|
50
58
|
* ```
|
|
51
59
|
*
|
|
52
|
-
* If the value
|
|
60
|
+
* If the value denoted by the path is not found in the object, `get` returns a default value. The default value can be a function resolver that takes the object as an argument. If no default value is provided, `get` returns `undefined`.
|
|
53
61
|
*
|
|
54
62
|
* ```javascript [playground]
|
|
55
63
|
* const getHelloWithDefaultValue = get('hello', 'default')
|
|
56
64
|
*
|
|
57
|
-
* console.log(getHelloWithDefaultValue({ foo: 'bar' }))
|
|
65
|
+
* console.log(getHelloWithDefaultValue({ foo: 'bar' }))
|
|
58
66
|
*
|
|
59
67
|
* const getHelloWithDefaultResolver = get('hello', object => object.foo)
|
|
60
68
|
*
|
|
61
|
-
* console.log(getHelloWithDefaultResolver({ foo: 'bar' }))
|
|
69
|
+
* console.log(getHelloWithDefaultResolver({ foo: 'bar' }))
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* The default resolver may be asynchronous, in which case `get` returns a promise.
|
|
73
|
+
*
|
|
74
|
+
* ```javascript [playground]
|
|
75
|
+
* const asyncDefaultResolver = async object => object.a
|
|
76
|
+
*
|
|
77
|
+
* const promise = get({ a: 1 }, 'notfound', asyncDefaultResolver)
|
|
78
|
+
*
|
|
79
|
+
* promise.then(console.log)
|
|
62
80
|
* ```
|
|
63
81
|
*
|
|
64
82
|
* `get` supports three types of path patterns for nested property access.
|
|
@@ -70,18 +88,22 @@ const _get = function (object, path, defaultValue) {
|
|
|
70
88
|
* ```javascript [playground]
|
|
71
89
|
* const getABC0 = get('a.b.c[0]')
|
|
72
90
|
*
|
|
73
|
-
*
|
|
91
|
+
* const abc0 = getABC0({ a: { b: { c: ['hello'] } } })
|
|
92
|
+
*
|
|
93
|
+
* console.log(abc0)
|
|
74
94
|
*
|
|
75
95
|
* const get00000DotNotation = get('0.0.0.0.0')
|
|
76
96
|
* const get00000BracketNotation = get('[0][0][0][0][0]')
|
|
77
97
|
* const get00000ArrayNotation = get([0, 0, 0, 0, 0])
|
|
78
98
|
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* console.log(
|
|
99
|
+
* const nested = [[[[['foo']]]]]
|
|
100
|
+
*
|
|
101
|
+
* console.log(get00000DotNotation(nested))
|
|
102
|
+
* console.log(get00000BracketNotation(nested))
|
|
103
|
+
* console.log(get00000ArrayNotation(nested))
|
|
82
104
|
* ```
|
|
83
105
|
*
|
|
84
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
106
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
85
107
|
*
|
|
86
108
|
* ```javascript [playground]
|
|
87
109
|
* get(Promise.resolve({ a: 1 }), 'a').then(console.log) // 1
|
|
@@ -101,8 +123,8 @@ const get = function (arg0, arg1, arg2) {
|
|
|
101
123
|
if (typeof arg0 == 'string' || typeof arg0 == 'number' || isArray(arg0)) {
|
|
102
124
|
return curry3(_get, __, arg0, arg1)
|
|
103
125
|
}
|
|
104
|
-
if (isPromise(arg0)) {
|
|
105
|
-
return arg0.then(
|
|
126
|
+
if (isPromise(arg0) || isPromise(arg2)) {
|
|
127
|
+
return promiseAll([arg0, arg1, arg2]).then(curry2(funcApply, _get, __))
|
|
106
128
|
}
|
|
107
129
|
return _get(arg0, arg1, arg2)
|
|
108
130
|
}
|
package/gt.js
CHANGED
|
@@ -65,7 +65,7 @@ const greaterThan = require('./_internal/greaterThan')
|
|
|
65
65
|
* ])
|
|
66
66
|
* ```
|
|
67
67
|
*
|
|
68
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
68
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
69
69
|
*
|
|
70
70
|
* ```javascript [playground]
|
|
71
71
|
* gt(Promise.resolve({ a: 2, b: 1 }), get('a'), get('b')).then(console.log) // true
|
package/gte.js
CHANGED
|
@@ -69,7 +69,7 @@ const greaterThanOrEqual = require('./_internal/greaterThanOrEqual')
|
|
|
69
69
|
* ])
|
|
70
70
|
* ```
|
|
71
71
|
*
|
|
72
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
72
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
73
73
|
*
|
|
74
74
|
* ```javascript [playground]
|
|
75
75
|
* gte(Promise.resolve({ a: 1, b: 1 }), get('a'), get('b')).then(console.log) // true
|
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Rubico v2.8.
|
|
2
|
+
* Rubico v2.8.6
|
|
3
3
|
* https://rubico.land/
|
|
4
4
|
*
|
|
5
5
|
* © Richard Yufei Tong, King of Software
|
|
@@ -1079,7 +1079,7 @@ const _curryArity = (arity, func, context, args) => function curried(...curriedA
|
|
|
1079
1079
|
curriedArgsIndex = -1,
|
|
1080
1080
|
numCurriedPlaceholders = 0
|
|
1081
1081
|
|
|
1082
|
-
while (
|
|
1082
|
+
while ((argsIndex += 1) < argsLength) {
|
|
1083
1083
|
const arg = args[argsIndex]
|
|
1084
1084
|
if (arg == __ && (curriedArgsIndex += 1) < curriedArgsLength) {
|
|
1085
1085
|
const curriedArg = curriedArgs[curriedArgsIndex]
|
|
@@ -1103,7 +1103,7 @@ const _curryArity = (arity, func, context, args) => function curried(...curriedA
|
|
|
1103
1103
|
}
|
|
1104
1104
|
}
|
|
1105
1105
|
|
|
1106
|
-
while (
|
|
1106
|
+
while ((curriedArgsIndex += 1) < curriedArgsLength) {
|
|
1107
1107
|
const curriedArg = curriedArgs[curriedArgsIndex]
|
|
1108
1108
|
if (curriedArg == __) {
|
|
1109
1109
|
numCurriedPlaceholders += 1
|
|
@@ -1133,7 +1133,7 @@ const curryArity = function (arity, func, context, args) {
|
|
|
1133
1133
|
return _curryArity(arity, func, context, args)
|
|
1134
1134
|
}
|
|
1135
1135
|
let argsIndex = -1
|
|
1136
|
-
while (
|
|
1136
|
+
while ((argsIndex += 1) < argsLength) {
|
|
1137
1137
|
const arg = args[argsIndex]
|
|
1138
1138
|
if (arg == __) {
|
|
1139
1139
|
return _curryArity(arity, func, context, args)
|
|
@@ -3126,8 +3126,8 @@ const get = function (arg0, arg1, arg2) {
|
|
|
3126
3126
|
if (typeof arg0 == 'string' || typeof arg0 == 'number' || isArray(arg0)) {
|
|
3127
3127
|
return curry3(_get, __, arg0, arg1)
|
|
3128
3128
|
}
|
|
3129
|
-
if (isPromise(arg0)) {
|
|
3130
|
-
return arg0.then(
|
|
3129
|
+
if (isPromise(arg0) || isPromise(arg2)) {
|
|
3130
|
+
return promiseAll([arg0, arg1, arg2]).then(curry2(funcApply, _get, __))
|
|
3131
3131
|
}
|
|
3132
3132
|
return _get(arg0, arg1, arg2)
|
|
3133
3133
|
}
|
package/lt.js
CHANGED
|
@@ -67,7 +67,7 @@ const lessThan = require('./_internal/lessThan')
|
|
|
67
67
|
* ])
|
|
68
68
|
* ```
|
|
69
69
|
*
|
|
70
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
70
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
71
71
|
*
|
|
72
72
|
* ```javascript [playground]
|
|
73
73
|
* lt(Promise.resolve({ a: 1, b: 2 }), get('a'), get('b')).then(console.log) // true
|
package/lte.js
CHANGED
|
@@ -67,7 +67,7 @@ const lessThanOrEqual = require('./_internal/lessThanOrEqual')
|
|
|
67
67
|
* ])
|
|
68
68
|
* ```
|
|
69
69
|
*
|
|
70
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
70
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
71
71
|
*
|
|
72
72
|
* ```javascript [playground]
|
|
73
73
|
* lte(Promise.resolve({ a: 1, b: 1 }), get('a'), get('b')).then(console.log) // true
|
package/map.js
CHANGED
|
@@ -250,7 +250,7 @@ const _map = function (value, f) {
|
|
|
250
250
|
* })()
|
|
251
251
|
* ```
|
|
252
252
|
*
|
|
253
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
253
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
254
254
|
*
|
|
255
255
|
* ```javascript [playground]
|
|
256
256
|
* const asyncSquare = async n => n ** 2
|
|
@@ -357,7 +357,7 @@ const _mapEntries = (value, f) => {
|
|
|
357
357
|
* // Map(3) { 'A' => 1, 'B' => 4, 'C' => 9 }
|
|
358
358
|
* ```
|
|
359
359
|
*
|
|
360
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
360
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
361
361
|
*
|
|
362
362
|
* ```javascript [playground]
|
|
363
363
|
* const asyncSquareEntries = async ([k, v]) => [k, v ** 2]
|
|
@@ -467,7 +467,7 @@ const _mapSeries = function (collection, f) {
|
|
|
467
467
|
* map.series([1, 2, 3, 4, 5], delayedLog)
|
|
468
468
|
* ```
|
|
469
469
|
*
|
|
470
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
470
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
471
471
|
*
|
|
472
472
|
* ```javascript [playground]
|
|
473
473
|
* const asyncSquare = async n => n ** 2
|
|
@@ -574,7 +574,7 @@ const _mapPool = function (f, concurrency, mapper) {
|
|
|
574
574
|
* ]))(ids)
|
|
575
575
|
* ```
|
|
576
576
|
*
|
|
577
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
577
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
578
578
|
*
|
|
579
579
|
* ```javascript [playground]
|
|
580
580
|
* const asyncSquare = async n => n ** 2
|
package/monad/Mux.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Rubico
|
|
3
|
+
* https://rubico.land/
|
|
4
|
+
*
|
|
5
|
+
* © Richard Yufei Tong, King of Software
|
|
6
|
+
* Rubico may be freely distributed under the CFOSS license.
|
|
5
7
|
*/
|
|
6
8
|
|
|
7
9
|
'use strict'
|
package/monad/PossiblePromise.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Rubico
|
|
3
|
+
* https://rubico.land/
|
|
4
|
+
*
|
|
5
|
+
* © Richard Yufei Tong, King of Software
|
|
6
|
+
* Rubico may be freely distributed under the CFOSS license.
|
|
5
7
|
*/
|
|
6
8
|
|
|
7
9
|
'use strict'
|
package/monad/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Monad
|
|
2
2
|
|
|
3
3
|
This is a place for JavaScript monads.
|
|
4
4
|
|
|
@@ -6,70 +6,91 @@ Warning: this entire directory is experimental; APIs here are subject to change.
|
|
|
6
6
|
|
|
7
7
|
# Specification
|
|
8
8
|
|
|
9
|
-
Each
|
|
9
|
+
Each monad must have a way to wrap one or more values, either using the constructor or using the `of` method.
|
|
10
10
|
|
|
11
|
+
Each monad must implement the `chain`, `flatMap`, or `then` methods, or have a combination of the `map` and `concat` methods. Similarly, while `empty` is not strictly required, there should be some notion of an empty instance of a Monad. For example, `[]` is `empty` for Arrays. All of these methods as well as any others not listed may be implemented; only the `chain`, `flatMap`, or `then` methods and the constructor or `of` methods are required.
|
|
12
|
+
|
|
13
|
+
Each monad should throw TypeErrors from the constructor for invalid types of arguments.
|
|
14
|
+
|
|
15
|
+
## Monad constructor
|
|
11
16
|
```coffeescript [specscript]
|
|
12
|
-
Monad
|
|
17
|
+
new Monad(...arguments) -> Monad {
|
|
18
|
+
of: function,
|
|
13
19
|
chain: function,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
flatMap: function,
|
|
21
|
+
then: function,
|
|
22
|
+
map: function,
|
|
23
|
+
concat: function,
|
|
24
|
+
}
|
|
18
25
|
```
|
|
19
26
|
|
|
20
|
-
## Monad
|
|
27
|
+
## Monad of method
|
|
21
28
|
```coffeescript [specscript]
|
|
22
|
-
Monad(
|
|
23
|
-
|
|
29
|
+
Monad.of(...arguments) -> Monad {
|
|
30
|
+
of: function,
|
|
31
|
+
chain: function,
|
|
32
|
+
flatMap: function,
|
|
33
|
+
then: function,
|
|
34
|
+
map: function,
|
|
35
|
+
concat: function,
|
|
36
|
+
}
|
|
24
37
|
```
|
|
25
38
|
|
|
26
|
-
## Monad
|
|
39
|
+
## Monad chain method
|
|
27
40
|
```coffeescript [specscript]
|
|
28
|
-
|
|
41
|
+
monad Monad
|
|
42
|
+
|
|
43
|
+
monad.chain(any=>(Monad|any)) -> Monad
|
|
29
44
|
```
|
|
30
45
|
|
|
31
|
-
## Monad
|
|
46
|
+
## Monad flatMap method
|
|
32
47
|
```coffeescript [specscript]
|
|
33
|
-
|
|
48
|
+
monad Monad
|
|
49
|
+
|
|
50
|
+
monad.flatMap(any=>(Monad|any)) -> Monad
|
|
34
51
|
```
|
|
35
52
|
|
|
36
|
-
## Monad
|
|
53
|
+
## Monad then method
|
|
37
54
|
```coffeescript [specscript]
|
|
38
|
-
|
|
39
|
-
```
|
|
55
|
+
monad Monad
|
|
40
56
|
|
|
41
|
-
|
|
57
|
+
monad.then(any=>(Monad|any)) -> Monad
|
|
58
|
+
```
|
|
42
59
|
|
|
43
|
-
|
|
60
|
+
## Monad map method
|
|
61
|
+
```coffeescript [specscript]
|
|
62
|
+
monad Monad
|
|
44
63
|
|
|
45
|
-
|
|
46
|
-
|
|
64
|
+
monad.map(any=>any) -> Monad
|
|
65
|
+
```
|
|
47
66
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
},
|
|
52
|
-
})
|
|
67
|
+
## Monad concat method
|
|
68
|
+
```coffeescript [specscript]
|
|
69
|
+
monad Monad
|
|
53
70
|
|
|
54
|
-
|
|
71
|
+
monad.concat(Monad) -> Monad
|
|
72
|
+
```
|
|
55
73
|
|
|
56
|
-
|
|
74
|
+
## Monad empty method
|
|
75
|
+
```coffeescript [specscript]
|
|
76
|
+
Monad.empty() -> Monad
|
|
57
77
|
```
|
|
58
78
|
|
|
59
|
-
|
|
79
|
+
# Example
|
|
80
|
+
A monad's effect is activated by calling its `chain` method with a function.
|
|
60
81
|
|
|
61
82
|
```javascript
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return
|
|
68
|
-
number, value.constructor == Max ? value.number : value))
|
|
83
|
+
const Maybe = value => ({
|
|
84
|
+
chain(func) {
|
|
85
|
+
if (value) {
|
|
86
|
+
func(value)
|
|
87
|
+
}
|
|
88
|
+
return this
|
|
69
89
|
},
|
|
70
90
|
})
|
|
71
91
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
92
|
+
Maybe(null).chain(console.log)
|
|
93
|
+
|
|
94
|
+
Maybe('hello world').chain(console.log) // hello world
|
|
75
95
|
```
|
|
96
|
+
|
package/monad/Struct.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
1
|
+
/**
|
|
2
|
+
* Rubico
|
|
3
|
+
* https://rubico.land/
|
|
4
|
+
*
|
|
5
|
+
* © Richard Yufei Tong, King of Software
|
|
6
|
+
* Rubico may be freely distributed under the CFOSS license.
|
|
5
7
|
*/
|
|
6
8
|
|
|
7
9
|
'use strict'
|
package/not.js
CHANGED
|
@@ -59,7 +59,7 @@ const _not = function (args, predicate) {
|
|
|
59
59
|
* not(promise).then(console.log) // true
|
|
60
60
|
* ```
|
|
61
61
|
*
|
|
62
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
62
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
63
63
|
*
|
|
64
64
|
* ```javascript [playground]
|
|
65
65
|
* const isOdd = number => number % 2 == 1
|
package/omit.js
CHANGED
|
@@ -62,7 +62,7 @@ const _omit = function (source, paths) {
|
|
|
62
62
|
* ])
|
|
63
63
|
* ```
|
|
64
64
|
*
|
|
65
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
65
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
66
66
|
*
|
|
67
67
|
* ```javascript [playground]
|
|
68
68
|
* omit(Promise.resolve({ a: 1, b: 2, c: 3 }), ['a', 'b']).then(console.log)
|
package/or.js
CHANGED
|
@@ -145,7 +145,7 @@ const areAnyPredicatesTruthy = function (args, predicates) {
|
|
|
145
145
|
* console.log(condition) // false
|
|
146
146
|
* ```
|
|
147
147
|
*
|
|
148
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
148
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
149
149
|
*
|
|
150
150
|
* ```javascript [playground]
|
|
151
151
|
* or(Promise.resolve('aaa'), [
|
package/package.json
CHANGED
package/pick.js
CHANGED
|
@@ -62,7 +62,7 @@ const _pick = function (source, keys) {
|
|
|
62
62
|
* ])
|
|
63
63
|
* ```
|
|
64
64
|
*
|
|
65
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
65
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
66
66
|
*
|
|
67
67
|
* ```javascript [playground]
|
|
68
68
|
* pick(Promise.resolve({ a: 1, b: 2, c: 3 }), ['a', 'b']).then(console.log)
|
package/pipe.js
CHANGED
|
@@ -10,41 +10,35 @@ const __ = require('./_internal/placeholder')
|
|
|
10
10
|
*
|
|
11
11
|
* @synopsis
|
|
12
12
|
* ```coffeescript [specscript]
|
|
13
|
-
*
|
|
14
|
-
* argsOrPromises Array<Promise|any>
|
|
15
|
-
*
|
|
16
|
-
* type SyncOrAsyncFunction = (...args)=>Promise|any
|
|
13
|
+
* type SyncOrAsyncFunction = (...arguments)=>Promise|any
|
|
17
14
|
* type UnarySyncOrAsyncFunction = any=>Promise|any
|
|
18
15
|
*
|
|
19
16
|
* funcs [SyncOrAsyncFunction, ...Array<UnarySyncOrAsyncFunction>]
|
|
20
17
|
*
|
|
21
|
-
* pipe(funcs)(...
|
|
22
|
-
* pipe(...
|
|
23
|
-
* pipe(...funcs)(...
|
|
18
|
+
* pipe(funcs)(...arguments) -> Promise|any
|
|
19
|
+
* pipe(...arguments, funcs) -> Promise|any
|
|
20
|
+
* pipe(...funcs)(...arguments) -> Promise|any
|
|
24
21
|
* ```
|
|
25
22
|
*
|
|
26
23
|
* @description
|
|
27
|
-
* Creates a function pipeline from multiple functions. Each function in the pipeline is evaluated in series, passing its return value as
|
|
24
|
+
* Creates a function pipeline from multiple functions. Each function in the function pipeline is evaluated in series starting from the first function in the function pipeline, passing its return value as the first and only argument to the next function in the pipeline. The result of the execution of a function pipeline is the return value of the last function in the function pipeline. If any function in the function pipeline is asynchronous, the result of the execution of the function pipeline is a promise.
|
|
28
25
|
*
|
|
29
|
-
*
|
|
30
|
-
* const syncAdd123 = pipe([
|
|
31
|
-
* number => number + 1,
|
|
32
|
-
* number => number + 2,
|
|
33
|
-
* number => number + 3,
|
|
34
|
-
* ])
|
|
26
|
+
* Multiple arguments may be provided to a function pipeline, in which case they are passed directly to the first function in the function pipeline.
|
|
35
27
|
*
|
|
36
|
-
*
|
|
28
|
+
* ```javascript [playground]
|
|
29
|
+
* function add(a, b, c) {
|
|
30
|
+
* return a + b + c
|
|
31
|
+
* }
|
|
37
32
|
*
|
|
38
|
-
* const
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* async number => number + 3,
|
|
33
|
+
* const pipeline = pipe([
|
|
34
|
+
* add,
|
|
35
|
+
* console.log,
|
|
42
36
|
* ])
|
|
43
37
|
*
|
|
44
|
-
*
|
|
38
|
+
* pipeline(1, 2, 3)
|
|
45
39
|
* ```
|
|
46
40
|
*
|
|
47
|
-
* `pipe`
|
|
41
|
+
* Functions may be passed to `pipe` as arguments instead of as items of an array.
|
|
48
42
|
*
|
|
49
43
|
* ```javascript [playground]
|
|
50
44
|
* const appendB = x => x + 'b'
|
|
@@ -52,14 +46,14 @@ const __ = require('./_internal/placeholder')
|
|
|
52
46
|
*
|
|
53
47
|
* const appendBC = pipe(appendB, appendC)
|
|
54
48
|
*
|
|
55
|
-
* console.log(appendBC('a'))
|
|
49
|
+
* console.log(appendBC('a'))
|
|
56
50
|
* ```
|
|
57
51
|
*
|
|
58
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
52
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
59
53
|
*
|
|
60
54
|
* ```javascript [playground]
|
|
61
55
|
* pipe(Promise.resolve(1), 2, Promise.resolve(3), [
|
|
62
|
-
* console.log,
|
|
56
|
+
* console.log,
|
|
63
57
|
* ])
|
|
64
58
|
* ```
|
|
65
59
|
*
|
package/reduce.js
CHANGED
|
@@ -193,7 +193,7 @@ const _reduce = function (collection, reducer, initial) {
|
|
|
193
193
|
* reduce(asyncGenerate(), asyncAdd).then(console.log) // 15
|
|
194
194
|
* ```
|
|
195
195
|
*
|
|
196
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
196
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
197
197
|
*
|
|
198
198
|
* ```javascript [playground]
|
|
199
199
|
* const add = (a, b) => a + b
|
package/set.js
CHANGED
|
@@ -90,7 +90,7 @@ const _set = function (obj, path, value) {
|
|
|
90
90
|
* ])
|
|
91
91
|
* ```
|
|
92
92
|
*
|
|
93
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
93
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
94
94
|
*
|
|
95
95
|
* ```javascript [playground]
|
|
96
96
|
* set(Promise.resolve({}), 'a', 1).then(console.log) // { a: 1 }
|
package/some.js
CHANGED
|
@@ -103,7 +103,7 @@ const _some = function (collection, predicate) {
|
|
|
103
103
|
* ])
|
|
104
104
|
* ```
|
|
105
105
|
*
|
|
106
|
-
* Any promises passed in argument position are resolved for their values before further execution.
|
|
106
|
+
* Any promises passed in argument position are resolved for their values before further execution.
|
|
107
107
|
*
|
|
108
108
|
* ```javascript [playground]
|
|
109
109
|
* some(Promise.resolve([1, 2, 3, 4, 5]), n => n > 6).then(console.log) // false
|