rubico 2.7.10 → 2.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +5 -17
- package/README.md +1 -1
- package/_internal/curryArity.js +34 -12
- package/_internal/funcApply2.js +18 -0
- package/_internal/mapMapEntries.js +1 -1
- package/_internal/objectMapEntries.js +1 -1
- package/curry.js +95 -12
- 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 +146 -13
- package/dist/curry.es.min.js +2 -2
- package/dist/curry.js +146 -13
- package/dist/curry.min.js +2 -2
- package/dist/curry.mjs +146 -13
- 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 +52 -13
- package/dist/map.es.min.js +2 -2
- package/dist/map.js +52 -13
- package/dist/map.min.js +2 -2
- package/dist/map.mjs +52 -13
- 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 +63 -18
- package/dist/rubico.es.min.js +2 -2
- package/dist/rubico.global.js +63 -18
- package/dist/rubico.global.min.js +2 -2
- package/dist/rubico.js +63 -18
- package/dist/rubico.min.js +2 -2
- package/dist/rubico.mjs +63 -18
- 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 +41 -17
- package/dist/thunkify.es.min.js +2 -2
- package/dist/thunkify.js +41 -17
- package/dist/thunkify.min.js +2 -2
- package/dist/thunkify.mjs +41 -17
- 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 +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 +52 -13
- package/dist/x/pluck.es.min.js +2 -2
- package/dist/x/pluck.js +52 -13
- package/dist/x/pluck.min.js +2 -2
- package/dist/x/pluck.mjs +52 -13
- 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/es.js +63 -18
- package/index.js +63 -18
- package/package.json +1 -1
- package/thunkify.js +66 -6
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* rubico v2.
|
|
2
|
+
* rubico v2.8.1
|
|
3
3
|
* https://github.com/a-synchronous/rubico
|
|
4
4
|
* (c) 2019-2026 Richard Tong
|
|
5
5
|
* rubico may be freely distributed under the MIT license.
|
|
@@ -1068,7 +1068,9 @@ const objectMapPool = function (o, concurrency, f) {
|
|
|
1068
1068
|
return result
|
|
1069
1069
|
}
|
|
1070
1070
|
|
|
1071
|
-
const
|
|
1071
|
+
const funcApply2 = (func, context, args) => func.apply(context, args)
|
|
1072
|
+
|
|
1073
|
+
const _curryArity = (arity, func, context, args) => function curried(...curriedArgs) {
|
|
1072
1074
|
const argsLength = args.length,
|
|
1073
1075
|
curriedArgsLength = curriedArgs.length,
|
|
1074
1076
|
nextArgs = []
|
|
@@ -1087,10 +1089,16 @@ const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
|
|
|
1087
1089
|
} else {
|
|
1088
1090
|
nextArgs.push(arg)
|
|
1089
1091
|
}
|
|
1092
|
+
|
|
1090
1093
|
if (nextArgs.length == arity) {
|
|
1094
|
+
if (areAnyValuesPromises(nextArgs)) {
|
|
1095
|
+
return numCurriedPlaceholders == 0
|
|
1096
|
+
? promiseAll(nextArgs).then(curry3(funcApply2, func, context, __))
|
|
1097
|
+
: promiseAll(nextArgs).then(curry4(curryArity, arity, func, context, __))
|
|
1098
|
+
}
|
|
1091
1099
|
return numCurriedPlaceholders == 0
|
|
1092
|
-
? func(
|
|
1093
|
-
: curryArity(arity, func, nextArgs)
|
|
1100
|
+
? func.apply(context, nextArgs)
|
|
1101
|
+
: curryArity(arity, func, context, nextArgs)
|
|
1094
1102
|
}
|
|
1095
1103
|
}
|
|
1096
1104
|
|
|
@@ -1100,28 +1108,37 @@ const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
|
|
|
1100
1108
|
numCurriedPlaceholders += 1
|
|
1101
1109
|
}
|
|
1102
1110
|
nextArgs.push(curriedArg)
|
|
1111
|
+
|
|
1103
1112
|
if (nextArgs.length == arity) {
|
|
1113
|
+
if (areAnyValuesPromises(nextArgs)) {
|
|
1114
|
+
return numCurriedPlaceholders == 0
|
|
1115
|
+
? promiseAll(nextArgs).then(curry3(funcApply2, func, context, __))
|
|
1116
|
+
: promiseAll(nextArgs).then(curry4(curryArity, arity, func, context, __))
|
|
1117
|
+
}
|
|
1104
1118
|
return numCurriedPlaceholders == 0
|
|
1105
|
-
? func(
|
|
1106
|
-
: curryArity(arity, func, nextArgs)
|
|
1119
|
+
? func.apply(context, nextArgs)
|
|
1120
|
+
: curryArity(arity, func, context, nextArgs)
|
|
1107
1121
|
}
|
|
1108
1122
|
}
|
|
1109
|
-
|
|
1123
|
+
|
|
1124
|
+
return areAnyValuesPromises(nextArgs)
|
|
1125
|
+
? promiseAll(nextArgs).then(curry4(curryArity, arity, func, context, __))
|
|
1126
|
+
: curryArity(arity, func, context, nextArgs)
|
|
1110
1127
|
}
|
|
1111
1128
|
|
|
1112
|
-
const curryArity = function (arity, func, args) {
|
|
1129
|
+
const curryArity = function (arity, func, context, args) {
|
|
1113
1130
|
const argsLength = args.length
|
|
1114
1131
|
if (argsLength < arity) {
|
|
1115
|
-
return _curryArity(arity, func, args)
|
|
1132
|
+
return _curryArity(arity, func, context, args)
|
|
1116
1133
|
}
|
|
1117
1134
|
let argsIndex = -1
|
|
1118
1135
|
while (++argsIndex < argsLength) {
|
|
1119
1136
|
const arg = args[argsIndex]
|
|
1120
1137
|
if (arg == __) {
|
|
1121
|
-
return _curryArity(arity, func, args)
|
|
1138
|
+
return _curryArity(arity, func, context, args)
|
|
1122
1139
|
}
|
|
1123
1140
|
}
|
|
1124
|
-
return func(
|
|
1141
|
+
return func.apply(context, args)
|
|
1125
1142
|
}
|
|
1126
1143
|
|
|
1127
1144
|
const spread2 = func => function spreading2([arg0, arg1]) {
|
|
@@ -1136,7 +1153,7 @@ const objectMapEntries = function (object, mapper) {
|
|
|
1136
1153
|
mapping = mapper([key, value])
|
|
1137
1154
|
if (isPromise(mapping)) {
|
|
1138
1155
|
promises.push(mapping.then(
|
|
1139
|
-
spread2(curryArity(3, objectSet, [result]))))
|
|
1156
|
+
spread2(curryArity(3, objectSet, this, [result]))))
|
|
1140
1157
|
} else {
|
|
1141
1158
|
result[mapping[0]] = mapping[1]
|
|
1142
1159
|
}
|
|
@@ -1152,7 +1169,7 @@ const mapMapEntriesForEachCallback = (
|
|
|
1152
1169
|
) => function callback(value, key) {
|
|
1153
1170
|
const mapping = mapper([key, value])
|
|
1154
1171
|
if (isPromise(mapping)) {
|
|
1155
|
-
promises.push(mapping.then(spread2(curryArity(3, mapSet, [result]))))
|
|
1172
|
+
promises.push(mapping.then(spread2(curryArity(3, mapSet, this, [result]))))
|
|
1156
1173
|
} else {
|
|
1157
1174
|
result.set(mapping[0], mapping[1])
|
|
1158
1175
|
}
|
|
@@ -3284,17 +3301,45 @@ const omit = function (arg0, arg1) {
|
|
|
3284
3301
|
return _omit(arg0, arg1)
|
|
3285
3302
|
}
|
|
3286
3303
|
|
|
3287
|
-
|
|
3304
|
+
function _thunkifyArgs(func, context, args) {
|
|
3305
|
+
return function thunk() {
|
|
3306
|
+
return func.apply(context, args)
|
|
3307
|
+
}
|
|
3308
|
+
}
|
|
3309
|
+
|
|
3310
|
+
const thunkify = function thunkify(func, ...args) {
|
|
3288
3311
|
if (areAnyValuesPromises(args)) {
|
|
3289
|
-
return promiseAll(args).then(
|
|
3312
|
+
return promiseAll(args).then(curry3(_thunkifyArgs, func, this, __))
|
|
3290
3313
|
}
|
|
3291
|
-
return func
|
|
3314
|
+
return _thunkifyArgs(func, this, args)
|
|
3315
|
+
}
|
|
3316
|
+
|
|
3317
|
+
thunkify.call = function thunkifyCall(func, context, ...args) {
|
|
3318
|
+
if (areAnyValuesPromises(args)) {
|
|
3319
|
+
return promiseAll(args).then(curry3(_thunkifyArgs, func, context, __))
|
|
3320
|
+
}
|
|
3321
|
+
return _thunkifyArgs(func, context, args)
|
|
3292
3322
|
}
|
|
3293
3323
|
|
|
3294
|
-
const curry = (func, ...args) =>
|
|
3324
|
+
const curry = (func, ...args) => {
|
|
3325
|
+
if (areAnyValuesPromises(args)) {
|
|
3326
|
+
return promiseAll(args).then(curry4(curryArity, func.length, func, this, __))
|
|
3327
|
+
}
|
|
3328
|
+
return curryArity(func.length, func, this, args)
|
|
3329
|
+
}
|
|
3295
3330
|
|
|
3296
3331
|
curry.arity = function curryArity_(arity, func, ...args) {
|
|
3297
|
-
|
|
3332
|
+
if (areAnyValuesPromises(args)) {
|
|
3333
|
+
return promiseAll(args).then(curry4(curryArity, arity, func, this, __))
|
|
3334
|
+
}
|
|
3335
|
+
return curryArity(arity, func, this, args)
|
|
3336
|
+
}
|
|
3337
|
+
|
|
3338
|
+
curry.call = function call(func, context, ...args) {
|
|
3339
|
+
if (areAnyValuesPromises(args)) {
|
|
3340
|
+
return promiseAll(args).then(curry4(curryArity, func.length, func, context, __))
|
|
3341
|
+
}
|
|
3342
|
+
return curryArity(func.length, func, context, args)
|
|
3298
3343
|
}
|
|
3299
3344
|
|
|
3300
3345
|
const rubico = {
|
package/package.json
CHANGED
package/thunkify.js
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
const areAnyValuesPromises = require('./_internal/areAnyValuesPromises')
|
|
2
2
|
const promiseAll = require('./_internal/promiseAll')
|
|
3
|
-
const
|
|
3
|
+
const curry3 = require('./_internal/curry3')
|
|
4
4
|
const __ = require('./_internal/placeholder')
|
|
5
|
-
const
|
|
5
|
+
const funcApply2 = require('./_internal/funcApply2')
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @name _thunkifyArgs
|
|
9
|
+
*
|
|
10
|
+
* @synopsis
|
|
11
|
+
* ```coffeescript [specscript]
|
|
12
|
+
* _thunkifyArgs(func function, context object, args Array) -> thunk
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
function _thunkifyArgs(func, context, args) {
|
|
16
|
+
return function thunk() {
|
|
17
|
+
return func.apply(context, args)
|
|
18
|
+
}
|
|
19
|
+
}
|
|
6
20
|
|
|
7
21
|
/**
|
|
8
22
|
* @name thunkify
|
|
@@ -15,7 +29,7 @@ const funcApply = require('./_internal/funcApply')
|
|
|
15
29
|
* ```
|
|
16
30
|
*
|
|
17
31
|
* @description
|
|
18
|
-
*
|
|
32
|
+
* Creates a thunk from a function and arguments. A thunk takes no arguments, and when called, executes the other function with the arguments. The other function is said to be "thunkified".
|
|
19
33
|
*
|
|
20
34
|
* ```javascript [playground]
|
|
21
35
|
* const add = (a, b) => a + b
|
|
@@ -27,17 +41,63 @@ const funcApply = require('./_internal/funcApply')
|
|
|
27
41
|
*
|
|
28
42
|
* See also:
|
|
29
43
|
* * [eq](/docs/eq)
|
|
44
|
+
* * [thunkify.call](/docs/thunkify.call)
|
|
45
|
+
* * [always](/docs/always)
|
|
46
|
+
* * [curry](/docs/curry)
|
|
47
|
+
* * [__](/docs/__)
|
|
48
|
+
* * [Transducer.map](/docs/Transducer.map)
|
|
49
|
+
*
|
|
50
|
+
*/
|
|
51
|
+
const thunkify = function thunkify(func, ...args) {
|
|
52
|
+
if (areAnyValuesPromises(args)) {
|
|
53
|
+
return promiseAll(args).then(curry3(_thunkifyArgs, func, this, __))
|
|
54
|
+
}
|
|
55
|
+
return _thunkifyArgs(func, this, args)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @name thunkify.call
|
|
60
|
+
*
|
|
61
|
+
* @synopsis
|
|
62
|
+
* ```coffeescript [specscript]
|
|
63
|
+
* args Array<any>
|
|
64
|
+
*
|
|
65
|
+
* thunkify.call(func function, context object, ...args) -> thunk ()=>func(...args)
|
|
66
|
+
* ```
|
|
67
|
+
*
|
|
68
|
+
* Creates a thunk that calls a function with the specified context and arguments.
|
|
69
|
+
*
|
|
70
|
+
* ```javascript [playground]
|
|
71
|
+
* class Point {
|
|
72
|
+
* constructor(x, y) {
|
|
73
|
+
* this.x = x
|
|
74
|
+
* this.y = y
|
|
75
|
+
* }
|
|
76
|
+
*
|
|
77
|
+
* toString() {
|
|
78
|
+
* return `(${this.x}, ${this.y})`
|
|
79
|
+
* }
|
|
80
|
+
* }
|
|
81
|
+
*
|
|
82
|
+
* const thunk = thunkify.call(toString, point)
|
|
83
|
+
*
|
|
84
|
+
* console.log(thunk())
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* See also:
|
|
88
|
+
* * [eq](/docs/eq)
|
|
89
|
+
* * [thunkify](/docs/thunkify)
|
|
30
90
|
* * [always](/docs/always)
|
|
31
91
|
* * [curry](/docs/curry)
|
|
32
92
|
* * [__](/docs/__)
|
|
33
93
|
* * [Transducer.map](/docs/Transducer.map)
|
|
34
94
|
*
|
|
35
95
|
*/
|
|
36
|
-
|
|
96
|
+
thunkify.call = function thunkifyCall(func, context, ...args) {
|
|
37
97
|
if (areAnyValuesPromises(args)) {
|
|
38
|
-
return promiseAll(args).then(
|
|
98
|
+
return promiseAll(args).then(curry3(_thunkifyArgs, func, context, __))
|
|
39
99
|
}
|
|
40
|
-
return func
|
|
100
|
+
return _thunkifyArgs(func, context, args)
|
|
41
101
|
}
|
|
42
102
|
|
|
43
103
|
module.exports = thunkify
|