rubico 2.7.10 → 2.8.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.
Files changed (339) hide show
  1. package/_internal/curryArity.js +14 -12
  2. package/_internal/mapMapEntries.js +1 -1
  3. package/_internal/objectMapEntries.js +1 -1
  4. package/curry.js +59 -3
  5. package/dist/Transducer.es.js +1 -1
  6. package/dist/Transducer.es.min.js +1 -1
  7. package/dist/Transducer.js +1 -1
  8. package/dist/Transducer.min.js +1 -1
  9. package/dist/Transducer.mjs +1 -1
  10. package/dist/__.es.js +1 -1
  11. package/dist/__.es.min.js +1 -1
  12. package/dist/__.js +1 -1
  13. package/dist/__.min.js +1 -1
  14. package/dist/__.mjs +1 -1
  15. package/dist/all.es.js +1 -1
  16. package/dist/all.es.min.js +1 -1
  17. package/dist/all.js +1 -1
  18. package/dist/all.min.js +1 -1
  19. package/dist/all.mjs +1 -1
  20. package/dist/always.es.js +1 -1
  21. package/dist/always.es.min.js +1 -1
  22. package/dist/always.js +1 -1
  23. package/dist/always.min.js +1 -1
  24. package/dist/always.mjs +1 -1
  25. package/dist/and.es.js +1 -1
  26. package/dist/and.es.min.js +1 -1
  27. package/dist/and.js +1 -1
  28. package/dist/and.min.js +1 -1
  29. package/dist/and.mjs +1 -1
  30. package/dist/assign.es.js +1 -1
  31. package/dist/assign.es.min.js +1 -1
  32. package/dist/assign.js +1 -1
  33. package/dist/assign.min.js +1 -1
  34. package/dist/assign.mjs +1 -1
  35. package/dist/compose.es.js +1 -1
  36. package/dist/compose.es.min.js +1 -1
  37. package/dist/compose.js +1 -1
  38. package/dist/compose.min.js +1 -1
  39. package/dist/compose.mjs +1 -1
  40. package/dist/curry.es.js +17 -13
  41. package/dist/curry.es.min.js +2 -2
  42. package/dist/curry.js +17 -13
  43. package/dist/curry.min.js +2 -2
  44. package/dist/curry.mjs +17 -13
  45. package/dist/eq.es.js +1 -1
  46. package/dist/eq.es.min.js +1 -1
  47. package/dist/eq.js +1 -1
  48. package/dist/eq.min.js +1 -1
  49. package/dist/eq.mjs +1 -1
  50. package/dist/every.es.js +1 -1
  51. package/dist/every.es.min.js +1 -1
  52. package/dist/every.js +1 -1
  53. package/dist/every.min.js +1 -1
  54. package/dist/every.mjs +1 -1
  55. package/dist/filter.es.js +1 -1
  56. package/dist/filter.es.min.js +1 -1
  57. package/dist/filter.js +1 -1
  58. package/dist/filter.min.js +1 -1
  59. package/dist/filter.mjs +1 -1
  60. package/dist/flatMap.es.js +1 -1
  61. package/dist/flatMap.es.min.js +1 -1
  62. package/dist/flatMap.js +1 -1
  63. package/dist/flatMap.min.js +1 -1
  64. package/dist/flatMap.mjs +1 -1
  65. package/dist/forEach.es.js +1 -1
  66. package/dist/forEach.es.min.js +1 -1
  67. package/dist/forEach.js +1 -1
  68. package/dist/forEach.min.js +1 -1
  69. package/dist/forEach.mjs +1 -1
  70. package/dist/get.es.js +1 -1
  71. package/dist/get.es.min.js +1 -1
  72. package/dist/get.js +1 -1
  73. package/dist/get.min.js +1 -1
  74. package/dist/get.mjs +1 -1
  75. package/dist/gt.es.js +1 -1
  76. package/dist/gt.es.min.js +1 -1
  77. package/dist/gt.js +1 -1
  78. package/dist/gt.min.js +1 -1
  79. package/dist/gt.mjs +1 -1
  80. package/dist/gte.es.js +1 -1
  81. package/dist/gte.es.min.js +1 -1
  82. package/dist/gte.js +1 -1
  83. package/dist/gte.min.js +1 -1
  84. package/dist/gte.mjs +1 -1
  85. package/dist/lt.es.js +1 -1
  86. package/dist/lt.es.min.js +1 -1
  87. package/dist/lt.js +1 -1
  88. package/dist/lt.min.js +1 -1
  89. package/dist/lt.mjs +1 -1
  90. package/dist/lte.es.js +1 -1
  91. package/dist/lte.es.min.js +1 -1
  92. package/dist/lte.js +1 -1
  93. package/dist/lte.min.js +1 -1
  94. package/dist/lte.mjs +1 -1
  95. package/dist/map.es.js +13 -13
  96. package/dist/map.es.min.js +2 -2
  97. package/dist/map.js +13 -13
  98. package/dist/map.min.js +2 -2
  99. package/dist/map.mjs +13 -13
  100. package/dist/not.es.js +1 -1
  101. package/dist/not.es.min.js +1 -1
  102. package/dist/not.js +1 -1
  103. package/dist/not.min.js +1 -1
  104. package/dist/not.mjs +1 -1
  105. package/dist/omit.es.js +1 -1
  106. package/dist/omit.es.min.js +1 -1
  107. package/dist/omit.js +1 -1
  108. package/dist/omit.min.js +1 -1
  109. package/dist/omit.mjs +1 -1
  110. package/dist/or.es.js +1 -1
  111. package/dist/or.es.min.js +1 -1
  112. package/dist/or.js +1 -1
  113. package/dist/or.min.js +1 -1
  114. package/dist/or.mjs +1 -1
  115. package/dist/pick.es.js +1 -1
  116. package/dist/pick.es.min.js +1 -1
  117. package/dist/pick.js +1 -1
  118. package/dist/pick.min.js +1 -1
  119. package/dist/pick.mjs +1 -1
  120. package/dist/pipe.es.js +1 -1
  121. package/dist/pipe.es.min.js +1 -1
  122. package/dist/pipe.js +1 -1
  123. package/dist/pipe.min.js +1 -1
  124. package/dist/pipe.mjs +1 -1
  125. package/dist/reduce.es.js +1 -1
  126. package/dist/reduce.es.min.js +1 -1
  127. package/dist/reduce.js +1 -1
  128. package/dist/reduce.min.js +1 -1
  129. package/dist/reduce.mjs +1 -1
  130. package/dist/rubico.es.js +19 -15
  131. package/dist/rubico.es.min.js +2 -2
  132. package/dist/rubico.global.js +19 -15
  133. package/dist/rubico.global.min.js +2 -2
  134. package/dist/rubico.js +19 -15
  135. package/dist/rubico.min.js +2 -2
  136. package/dist/rubico.mjs +19 -15
  137. package/dist/set.es.js +1 -1
  138. package/dist/set.es.min.js +1 -1
  139. package/dist/set.js +1 -1
  140. package/dist/set.min.js +1 -1
  141. package/dist/set.mjs +1 -1
  142. package/dist/some.es.js +1 -1
  143. package/dist/some.es.min.js +1 -1
  144. package/dist/some.js +1 -1
  145. package/dist/some.min.js +1 -1
  146. package/dist/some.mjs +1 -1
  147. package/dist/switchCase.es.js +1 -1
  148. package/dist/switchCase.es.min.js +1 -1
  149. package/dist/switchCase.js +1 -1
  150. package/dist/switchCase.min.js +1 -1
  151. package/dist/switchCase.mjs +1 -1
  152. package/dist/tap.es.js +1 -1
  153. package/dist/tap.es.min.js +1 -1
  154. package/dist/tap.js +1 -1
  155. package/dist/tap.min.js +1 -1
  156. package/dist/tap.mjs +1 -1
  157. package/dist/thunkify.es.js +1 -1
  158. package/dist/thunkify.es.min.js +1 -1
  159. package/dist/thunkify.js +1 -1
  160. package/dist/thunkify.min.js +1 -1
  161. package/dist/thunkify.mjs +1 -1
  162. package/dist/transform.es.js +1 -1
  163. package/dist/transform.es.min.js +1 -1
  164. package/dist/transform.js +1 -1
  165. package/dist/transform.min.js +1 -1
  166. package/dist/transform.mjs +1 -1
  167. package/dist/tryCatch.es.js +1 -1
  168. package/dist/tryCatch.es.min.js +1 -1
  169. package/dist/tryCatch.js +1 -1
  170. package/dist/tryCatch.min.js +1 -1
  171. package/dist/tryCatch.mjs +1 -1
  172. package/dist/x/append.es.js +1 -1
  173. package/dist/x/append.es.min.js +1 -1
  174. package/dist/x/append.js +1 -1
  175. package/dist/x/append.min.js +1 -1
  176. package/dist/x/append.mjs +1 -1
  177. package/dist/x/callProp.es.js +1 -1
  178. package/dist/x/callProp.es.min.js +1 -1
  179. package/dist/x/callProp.js +1 -1
  180. package/dist/x/callProp.min.js +1 -1
  181. package/dist/x/callProp.mjs +1 -1
  182. package/dist/x/defaultsDeep.es.js +1 -1
  183. package/dist/x/defaultsDeep.es.min.js +1 -1
  184. package/dist/x/defaultsDeep.js +1 -1
  185. package/dist/x/defaultsDeep.min.js +1 -1
  186. package/dist/x/defaultsDeep.mjs +1 -1
  187. package/dist/x/differenceWith.es.js +1 -1
  188. package/dist/x/differenceWith.es.min.js +1 -1
  189. package/dist/x/differenceWith.js +1 -1
  190. package/dist/x/differenceWith.min.js +1 -1
  191. package/dist/x/differenceWith.mjs +1 -1
  192. package/dist/x/filterOut.es.js +1 -1
  193. package/dist/x/filterOut.es.min.js +1 -1
  194. package/dist/x/filterOut.js +1 -1
  195. package/dist/x/filterOut.min.js +1 -1
  196. package/dist/x/filterOut.mjs +1 -1
  197. package/dist/x/find.es.js +1 -1
  198. package/dist/x/find.es.min.js +1 -1
  199. package/dist/x/find.js +1 -1
  200. package/dist/x/find.min.js +1 -1
  201. package/dist/x/find.mjs +1 -1
  202. package/dist/x/findIndex.es.js +1 -1
  203. package/dist/x/findIndex.es.min.js +1 -1
  204. package/dist/x/findIndex.js +1 -1
  205. package/dist/x/findIndex.min.js +1 -1
  206. package/dist/x/findIndex.mjs +1 -1
  207. package/dist/x/first.es.js +1 -1
  208. package/dist/x/first.es.min.js +1 -1
  209. package/dist/x/first.js +1 -1
  210. package/dist/x/first.min.js +1 -1
  211. package/dist/x/first.mjs +1 -1
  212. package/dist/x/flatten.es.js +1 -1
  213. package/dist/x/flatten.es.min.js +1 -1
  214. package/dist/x/flatten.js +1 -1
  215. package/dist/x/flatten.min.js +1 -1
  216. package/dist/x/flatten.mjs +1 -1
  217. package/dist/x/groupBy.es.js +1 -1
  218. package/dist/x/groupBy.es.min.js +1 -1
  219. package/dist/x/groupBy.js +1 -1
  220. package/dist/x/groupBy.min.js +1 -1
  221. package/dist/x/groupBy.mjs +1 -1
  222. package/dist/x/has.es.js +1 -1
  223. package/dist/x/has.es.min.js +1 -1
  224. package/dist/x/has.js +1 -1
  225. package/dist/x/has.min.js +1 -1
  226. package/dist/x/has.mjs +1 -1
  227. package/dist/x/identity.es.js +1 -1
  228. package/dist/x/identity.es.min.js +1 -1
  229. package/dist/x/identity.js +1 -1
  230. package/dist/x/identity.min.js +1 -1
  231. package/dist/x/identity.mjs +1 -1
  232. package/dist/x/includes.es.js +1 -1
  233. package/dist/x/includes.es.min.js +1 -1
  234. package/dist/x/includes.js +1 -1
  235. package/dist/x/includes.min.js +1 -1
  236. package/dist/x/includes.mjs +1 -1
  237. package/dist/x/isDeepEqual.es.js +1 -1
  238. package/dist/x/isDeepEqual.es.min.js +1 -1
  239. package/dist/x/isDeepEqual.js +1 -1
  240. package/dist/x/isDeepEqual.min.js +1 -1
  241. package/dist/x/isDeepEqual.mjs +1 -1
  242. package/dist/x/isEmpty.es.js +1 -1
  243. package/dist/x/isEmpty.es.min.js +1 -1
  244. package/dist/x/isEmpty.js +1 -1
  245. package/dist/x/isEmpty.min.js +1 -1
  246. package/dist/x/isEmpty.mjs +1 -1
  247. package/dist/x/isEqual.es.js +1 -1
  248. package/dist/x/isEqual.es.min.js +1 -1
  249. package/dist/x/isEqual.js +1 -1
  250. package/dist/x/isEqual.min.js +1 -1
  251. package/dist/x/isEqual.mjs +1 -1
  252. package/dist/x/isFunction.es.js +1 -1
  253. package/dist/x/isFunction.es.min.js +1 -1
  254. package/dist/x/isFunction.js +1 -1
  255. package/dist/x/isFunction.min.js +1 -1
  256. package/dist/x/isFunction.mjs +1 -1
  257. package/dist/x/isIn.es.js +1 -1
  258. package/dist/x/isIn.es.min.js +1 -1
  259. package/dist/x/isIn.js +1 -1
  260. package/dist/x/isIn.min.js +1 -1
  261. package/dist/x/isIn.mjs +1 -1
  262. package/dist/x/isObject.es.js +1 -1
  263. package/dist/x/isObject.es.min.js +1 -1
  264. package/dist/x/isObject.js +1 -1
  265. package/dist/x/isObject.min.js +1 -1
  266. package/dist/x/isObject.mjs +1 -1
  267. package/dist/x/isString.es.js +1 -1
  268. package/dist/x/isString.es.min.js +1 -1
  269. package/dist/x/isString.js +1 -1
  270. package/dist/x/isString.min.js +1 -1
  271. package/dist/x/isString.mjs +1 -1
  272. package/dist/x/keys.es.js +1 -1
  273. package/dist/x/keys.es.min.js +1 -1
  274. package/dist/x/keys.js +1 -1
  275. package/dist/x/keys.min.js +1 -1
  276. package/dist/x/keys.mjs +1 -1
  277. package/dist/x/last.es.js +1 -1
  278. package/dist/x/last.es.min.js +1 -1
  279. package/dist/x/last.js +1 -1
  280. package/dist/x/last.min.js +1 -1
  281. package/dist/x/last.mjs +1 -1
  282. package/dist/x/maxBy.es.js +1 -1
  283. package/dist/x/maxBy.es.min.js +1 -1
  284. package/dist/x/maxBy.js +1 -1
  285. package/dist/x/maxBy.min.js +1 -1
  286. package/dist/x/maxBy.mjs +1 -1
  287. package/dist/x/noop.es.js +1 -1
  288. package/dist/x/noop.es.min.js +1 -1
  289. package/dist/x/noop.js +1 -1
  290. package/dist/x/noop.min.js +1 -1
  291. package/dist/x/noop.mjs +1 -1
  292. package/dist/x/pluck.es.js +13 -13
  293. package/dist/x/pluck.es.min.js +2 -2
  294. package/dist/x/pluck.js +13 -13
  295. package/dist/x/pluck.min.js +2 -2
  296. package/dist/x/pluck.mjs +13 -13
  297. package/dist/x/prepend.es.js +1 -1
  298. package/dist/x/prepend.es.min.js +1 -1
  299. package/dist/x/prepend.js +1 -1
  300. package/dist/x/prepend.min.js +1 -1
  301. package/dist/x/prepend.mjs +1 -1
  302. package/dist/x/size.es.js +1 -1
  303. package/dist/x/size.es.min.js +1 -1
  304. package/dist/x/size.js +1 -1
  305. package/dist/x/size.min.js +1 -1
  306. package/dist/x/size.mjs +1 -1
  307. package/dist/x/trace.es.js +1 -1
  308. package/dist/x/trace.es.min.js +1 -1
  309. package/dist/x/trace.js +1 -1
  310. package/dist/x/trace.min.js +1 -1
  311. package/dist/x/trace.mjs +1 -1
  312. package/dist/x/unionWith.es.js +1 -1
  313. package/dist/x/unionWith.es.min.js +1 -1
  314. package/dist/x/unionWith.js +1 -1
  315. package/dist/x/unionWith.min.js +1 -1
  316. package/dist/x/unionWith.mjs +1 -1
  317. package/dist/x/uniq.es.js +1 -1
  318. package/dist/x/uniq.es.min.js +1 -1
  319. package/dist/x/uniq.js +1 -1
  320. package/dist/x/uniq.min.js +1 -1
  321. package/dist/x/uniq.mjs +1 -1
  322. package/dist/x/unless.es.js +1 -1
  323. package/dist/x/unless.es.min.js +1 -1
  324. package/dist/x/unless.js +1 -1
  325. package/dist/x/unless.min.js +1 -1
  326. package/dist/x/unless.mjs +1 -1
  327. package/dist/x/values.es.js +1 -1
  328. package/dist/x/values.es.min.js +1 -1
  329. package/dist/x/values.js +1 -1
  330. package/dist/x/values.min.js +1 -1
  331. package/dist/x/values.mjs +1 -1
  332. package/dist/x/when.es.js +1 -1
  333. package/dist/x/when.es.min.js +1 -1
  334. package/dist/x/when.js +1 -1
  335. package/dist/x/when.min.js +1 -1
  336. package/dist/x/when.mjs +1 -1
  337. package/es.js +19 -15
  338. package/index.js +19 -15
  339. package/package.json +1 -1
@@ -9,13 +9,14 @@ const __ = require('./placeholder')
9
9
  *
10
10
  * var arity number,
11
11
  * func function,
12
+ * context object,
12
13
  * args Array<__|any>,
13
14
  * curried function
14
15
  *
15
- * _curryArity(arity, func, args) -> curried|any
16
+ * _curryArity(context, arity, func, args) -> curried|any
16
17
  * ```
17
18
  */
18
- const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
19
+ const _curryArity = (arity, func, context, args) => function curried(...curriedArgs) {
19
20
  const argsLength = args.length,
20
21
  curriedArgsLength = curriedArgs.length,
21
22
  nextArgs = []
@@ -36,8 +37,8 @@ const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
36
37
  }
37
38
  if (nextArgs.length == arity) {
38
39
  return numCurriedPlaceholders == 0
39
- ? func(...nextArgs)
40
- : curryArity(arity, func, nextArgs)
40
+ ? func.apply(context, nextArgs)
41
+ : curryArity(arity, func, context, nextArgs)
41
42
  }
42
43
  }
43
44
 
@@ -49,11 +50,11 @@ const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
49
50
  nextArgs.push(curriedArg)
50
51
  if (nextArgs.length == arity) {
51
52
  return numCurriedPlaceholders == 0
52
- ? func(...nextArgs)
53
- : curryArity(arity, func, nextArgs)
53
+ ? func.apply(context, nextArgs)
54
+ : curryArity(arity, func, context, nextArgs)
54
55
  }
55
56
  }
56
- return curryArity(arity, func, nextArgs)
57
+ return curryArity(arity, func, context, nextArgs)
57
58
  }
58
59
 
59
60
  /**
@@ -65,29 +66,30 @@ const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
65
66
  *
66
67
  * var arity number,
67
68
  * func function,
69
+ * context object,
68
70
  * args Array<__|any>,
69
71
  * curried function
70
72
  *
71
- * curryArity(arity, func, args) -> curried|any
73
+ * curryArity(arity, func, context, args) -> curried|any
72
74
  * ```
73
75
  *
74
76
  * @description
75
77
  * Create a curried version of a function with specified arity.
76
78
  */
77
79
 
78
- const curryArity = function (arity, func, args) {
80
+ const curryArity = function (arity, func, context, args) {
79
81
  const argsLength = args.length
80
82
  if (argsLength < arity) {
81
- return _curryArity(arity, func, args)
83
+ return _curryArity(arity, func, context, args)
82
84
  }
83
85
  let argsIndex = -1
84
86
  while (++argsIndex < argsLength) {
85
87
  const arg = args[argsIndex]
86
88
  if (arg == __) {
87
- return _curryArity(arity, func, args)
89
+ return _curryArity(arity, func, context, args)
88
90
  }
89
91
  }
90
- return func(...args)
92
+ return func.apply(context, args)
91
93
  }
92
94
 
93
95
  module.exports = curryArity
@@ -11,7 +11,7 @@ const mapMapEntriesForEachCallback = (
11
11
  ) => function callback(value, key) {
12
12
  const mapping = mapper([key, value])
13
13
  if (isPromise(mapping)) {
14
- promises.push(mapping.then(spread2(curryArity(3, mapSet, [result]))))
14
+ promises.push(mapping.then(spread2(curryArity(3, mapSet, this, [result]))))
15
15
  } else {
16
16
  result.set(mapping[0], mapping[1])
17
17
  }
@@ -24,7 +24,7 @@ const objectMapEntries = function (object, mapper) {
24
24
  mapping = mapper([key, value])
25
25
  if (isPromise(mapping)) {
26
26
  promises.push(mapping.then(
27
- spread2(curryArity(3, objectSet, [result]))))
27
+ spread2(curryArity(3, objectSet, this, [result]))))
28
28
  } else {
29
29
  result[mapping[0]] = mapping[1]
30
30
  }
package/curry.js CHANGED
@@ -17,7 +17,7 @@ const curryArity = require('./_internal/curryArity')
17
17
  * ```
18
18
  *
19
19
  * @description
20
- * Enable partial application of a function's arguments in any order. Provide the placeholder value `__` to specify an argument to be resolved in the partially applied function.
20
+ * Enables partial application of a function's arguments in any order. Provide the placeholder value `__` to specify an argument to be resolved in the partially applied function.
21
21
  *
22
22
  * ```javascript [playground]
23
23
  * const add = (a, b, c) => a + b + c
@@ -38,11 +38,12 @@ const curryArity = require('./_internal/curryArity')
38
38
  * * [thunkify](/docs/thunkify)
39
39
  * * [always](/docs/always)
40
40
  * * [curry.arity](/docs/curry.arity)
41
+ * * [curry.call](/docs/curry.call)
41
42
  * * [__](/docs/__)
42
43
  * * [Transducer.map](/docs/Transducer.map)
43
44
  *
44
45
  */
45
- const curry = (func, ...args) => curryArity(func.length, func, args)
46
+ const curry = (func, ...args) => curryArity(func.length, func, this, args)
46
47
 
47
48
  /**
48
49
  * @name curry.arity
@@ -74,12 +75,67 @@ const curry = (func, ...args) => curryArity(func.length, func, args)
74
75
  * * [thunkify](/docs/thunkify)
75
76
  * * [always](/docs/always)
76
77
  * * [curry](/docs/curry)
78
+ * * [curry.call](/docs/curry.call)
77
79
  * * [__](/docs/__)
78
80
  * * [Transducer.map](/docs/Transducer.map)
79
81
  *
80
82
  */
81
83
  curry.arity = function curryArity_(arity, func, ...args) {
82
- return curryArity(arity, func, args)
84
+ return curryArity(arity, func, this, args)
83
85
  }
84
86
 
87
+ /**
88
+ * @name curry.call
89
+ *
90
+ * @synopsis
91
+ * ```coffeescript [specscript]
92
+ * type __ = Symbol(placeholder)
93
+ * type ArgsWithPlaceholder = Array<__|any>
94
+ *
95
+ * n number
96
+ * args ArgsWithPlaceholder
97
+ * moreArgs ArgsWithPlaceholder
98
+ *
99
+ * curry.call(func function, context object, ...args) -> curriedFuncOrResult function|any
100
+ * curriedFuncOrResult(...moreArgs) -> anotherCurriedFuncOrResult function|any
101
+ * ```
102
+ *
103
+ * @description
104
+ * `curry` with specified context.
105
+ *
106
+ * ```javascript [playground]
107
+ * class Point {
108
+ * constructor(x, y) {
109
+ * this.x = x
110
+ * this.y = y
111
+ * }
112
+ *
113
+ * toString() {
114
+ * return `(${this.x}, ${this.y})`
115
+ * }
116
+ * }
117
+ *
118
+ * const point = new Point(100, 100)
119
+ *
120
+ * const box = { x: 5, y: 10 }
121
+ *
122
+ * console.log(curry.call(point.toString, point))
123
+ * console.log(curry.call(point.toString, box))
124
+ * ```
125
+ *
126
+ * See also:
127
+ * * [eq](/docs/eq)
128
+ * * [thunkify](/docs/thunkify)
129
+ * * [always](/docs/always)
130
+ * * [curry](/docs/curry)
131
+ * * [curry.arity](/docs/curry.arity)
132
+ * * [__](/docs/__)
133
+ * * [Transducer.map](/docs/Transducer.map)
134
+ *
135
+ */
136
+ curry.call = function call(func, context, ...args) {
137
+ return curryArity(func.length, func, context, args)
138
+ }
139
+
140
+
85
141
  module.exports = curry
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/__.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/__.es.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/__.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/__.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/__.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/all.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/all.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/all.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/all.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/always.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/always.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/always.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/and.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/and.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/and.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/and.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/assign.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/assign.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/assign.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/compose.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/compose.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
package/dist/curry.es.js CHANGED
@@ -1,12 +1,12 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
6
6
  */
7
7
  const __ = Symbol.for('placeholder')
8
8
 
9
- const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
9
+ const _curryArity = (arity, func, context, args) => function curried(...curriedArgs) {
10
10
  const argsLength = args.length,
11
11
  curriedArgsLength = curriedArgs.length,
12
12
  nextArgs = []
@@ -27,8 +27,8 @@ const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
27
27
  }
28
28
  if (nextArgs.length == arity) {
29
29
  return numCurriedPlaceholders == 0
30
- ? func(...nextArgs)
31
- : curryArity(arity, func, nextArgs)
30
+ ? func.apply(context, nextArgs)
31
+ : curryArity(arity, func, context, nextArgs)
32
32
  }
33
33
  }
34
34
 
@@ -40,32 +40,36 @@ const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
40
40
  nextArgs.push(curriedArg)
41
41
  if (nextArgs.length == arity) {
42
42
  return numCurriedPlaceholders == 0
43
- ? func(...nextArgs)
44
- : curryArity(arity, func, nextArgs)
43
+ ? func.apply(context, nextArgs)
44
+ : curryArity(arity, func, context, nextArgs)
45
45
  }
46
46
  }
47
- return curryArity(arity, func, nextArgs)
47
+ return curryArity(arity, func, context, nextArgs)
48
48
  }
49
49
 
50
- const curryArity = function (arity, func, args) {
50
+ const curryArity = function (arity, func, context, args) {
51
51
  const argsLength = args.length
52
52
  if (argsLength < arity) {
53
- return _curryArity(arity, func, args)
53
+ return _curryArity(arity, func, context, args)
54
54
  }
55
55
  let argsIndex = -1
56
56
  while (++argsIndex < argsLength) {
57
57
  const arg = args[argsIndex]
58
58
  if (arg == __) {
59
- return _curryArity(arity, func, args)
59
+ return _curryArity(arity, func, context, args)
60
60
  }
61
61
  }
62
- return func(...args)
62
+ return func.apply(context, args)
63
63
  }
64
64
 
65
- const curry = (func, ...args) => curryArity(func.length, func, args)
65
+ const curry = (func, ...args) => curryArity(func.length, func, this, args)
66
66
 
67
67
  curry.arity = function curryArity_(arity, func, ...args) {
68
- return curryArity(arity, func, args)
68
+ return curryArity(arity, func, this, args)
69
+ }
70
+
71
+ curry.call = function call(func, context, ...args) {
72
+ return curryArity(func.length, func, context, args)
69
73
  }
70
74
 
71
75
  export default curry
@@ -1,7 +1,7 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
6
6
  */
7
- const __=Symbol.for("placeholder"),_curryArity=(r,t,u)=>function(...n){const y=u.length,c=n.length,e=[];let i=-1,o=-1,f=0;for(;++i<y;){const y=u[i];if(y==__&&(o+=1)<c){const r=n[o];r==__&&(f+=1),e.push(r)}else e.push(y);if(e.length==r)return 0==f?t(...e):curryArity(r,t,e)}for(;++o<c;){const u=n[o];if(u==__&&(f+=1),e.push(u),e.length==r)return 0==f?t(...e):curryArity(r,t,e)}return curryArity(r,t,e)},curryArity=function(r,t,u){const n=u.length;if(n<r)return _curryArity(r,t,u);let y=-1;for(;++y<n;){if(u[y]==__)return _curryArity(r,t,u)}return t(...u)},curry=(r,...t)=>curryArity(r.length,r,t);curry.arity=function(r,t,...u){return curryArity(r,t,u)};export default curry;
7
+ const __=Symbol.for("placeholder"),_curryArity=(r,t,u,n)=>function(...y){const c=n.length,e=y.length,i=[];let l=-1,o=-1,f=0;for(;++l<c;){const c=n[l];if(c==__&&(o+=1)<e){const r=y[o];r==__&&(f+=1),i.push(r)}else i.push(c);if(i.length==r)return 0==f?t.apply(u,i):curryArity(r,t,u,i)}for(;++o<e;){const n=y[o];if(n==__&&(f+=1),i.push(n),i.length==r)return 0==f?t.apply(u,i):curryArity(r,t,u,i)}return curryArity(r,t,u,i)},curryArity=function(r,t,u,n){const y=n.length;if(y<r)return _curryArity(r,t,u,n);let c=-1;for(;++c<y;){if(n[c]==__)return _curryArity(r,t,u,n)}return t.apply(u,n)},curry=(r,...t)=>curryArity(r.length,r,this,t);curry.arity=function(r,t,...u){return curryArity(r,t,this,u)},curry.call=function(r,t,...u){return curryArity(r.length,r,t,u)};export default curry;
package/dist/curry.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
@@ -12,7 +12,7 @@
12
12
  }(typeof globalThis == 'object' ? globalThis : this, (function () { 'use strict'
13
13
  const __ = Symbol.for('placeholder')
14
14
 
15
- const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
15
+ const _curryArity = (arity, func, context, args) => function curried(...curriedArgs) {
16
16
  const argsLength = args.length,
17
17
  curriedArgsLength = curriedArgs.length,
18
18
  nextArgs = []
@@ -33,8 +33,8 @@ const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
33
33
  }
34
34
  if (nextArgs.length == arity) {
35
35
  return numCurriedPlaceholders == 0
36
- ? func(...nextArgs)
37
- : curryArity(arity, func, nextArgs)
36
+ ? func.apply(context, nextArgs)
37
+ : curryArity(arity, func, context, nextArgs)
38
38
  }
39
39
  }
40
40
 
@@ -46,32 +46,36 @@ const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
46
46
  nextArgs.push(curriedArg)
47
47
  if (nextArgs.length == arity) {
48
48
  return numCurriedPlaceholders == 0
49
- ? func(...nextArgs)
50
- : curryArity(arity, func, nextArgs)
49
+ ? func.apply(context, nextArgs)
50
+ : curryArity(arity, func, context, nextArgs)
51
51
  }
52
52
  }
53
- return curryArity(arity, func, nextArgs)
53
+ return curryArity(arity, func, context, nextArgs)
54
54
  }
55
55
 
56
- const curryArity = function (arity, func, args) {
56
+ const curryArity = function (arity, func, context, args) {
57
57
  const argsLength = args.length
58
58
  if (argsLength < arity) {
59
- return _curryArity(arity, func, args)
59
+ return _curryArity(arity, func, context, args)
60
60
  }
61
61
  let argsIndex = -1
62
62
  while (++argsIndex < argsLength) {
63
63
  const arg = args[argsIndex]
64
64
  if (arg == __) {
65
- return _curryArity(arity, func, args)
65
+ return _curryArity(arity, func, context, args)
66
66
  }
67
67
  }
68
- return func(...args)
68
+ return func.apply(context, args)
69
69
  }
70
70
 
71
- const curry = (func, ...args) => curryArity(func.length, func, args)
71
+ const curry = (func, ...args) => curryArity(func.length, func, this, args)
72
72
 
73
73
  curry.arity = function curryArity_(arity, func, ...args) {
74
- return curryArity(arity, func, args)
74
+ return curryArity(arity, func, this, args)
75
+ }
76
+
77
+ curry.call = function call(func, context, ...args) {
78
+ return curryArity(func.length, func, context, args)
75
79
  }
76
80
 
77
81
  return curry
package/dist/curry.min.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
- * rubico v2.7.10
2
+ * rubico v2.8.0
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.
6
6
  */
7
7
 
8
- !function(t,n){"object"==typeof module?module.exports=n:"function"==typeof define?define(()=>n):t.curry=n}("object"==typeof globalThis?globalThis:this,function(){"use strict";const t=Symbol.for("placeholder"),n=(n,o,r)=>function(...u){const f=r.length,i=u.length,l=[];let c=-1,s=-1,h=0;for(;++c<f;){const f=r[c];if(f==t&&(s+=1)<i){const n=u[s];n==t&&(h+=1),l.push(n)}else l.push(f);if(l.length==n)return 0==h?o(...l):e(n,o,l)}for(;++s<i;){const r=u[s];if(r==t&&(h+=1),l.push(r),l.length==n)return 0==h?o(...l):e(n,o,l)}return e(n,o,l)},e=function(e,o,r){const u=r.length;if(u<e)return n(e,o,r);let f=-1;for(;++f<u;){if(r[f]==t)return n(e,o,r)}return o(...r)},o=(t,...n)=>e(t.length,t,n);return o.arity=function(t,n,...o){return e(t,n,o)},o}());
8
+ !function(t,n){"object"==typeof module?module.exports=n:"function"==typeof define?define(()=>n):t.curry=n}("object"==typeof globalThis?globalThis:this,function(){"use strict";const t=Symbol.for("placeholder"),n=(n,o,r,l)=>function(...u){const f=l.length,i=u.length,c=[];let s=-1,h=-1,p=0;for(;++s<f;){const f=l[s];if(f==t&&(h+=1)<i){const n=u[h];n==t&&(p+=1),c.push(n)}else c.push(f);if(c.length==n)return 0==p?o.apply(r,c):e(n,o,r,c)}for(;++h<i;){const l=u[h];if(l==t&&(p+=1),c.push(l),c.length==n)return 0==p?o.apply(r,c):e(n,o,r,c)}return e(n,o,r,c)},e=function(e,o,r,l){const u=l.length;if(u<e)return n(e,o,r,l);let f=-1;for(;++f<u;){if(l[f]==t)return n(e,o,r,l)}return o.apply(r,l)},o=(t,...n)=>e(t.length,t,this,n);return o.arity=function(t,n,...o){return e(t,n,this,o)},o.call=function(t,n,...o){return e(t.length,t,n,o)},o}());