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.
Files changed (343) hide show
  1. package/LICENSE +5 -17
  2. package/README.md +1 -1
  3. package/_internal/curryArity.js +34 -12
  4. package/_internal/funcApply2.js +18 -0
  5. package/_internal/mapMapEntries.js +1 -1
  6. package/_internal/objectMapEntries.js +1 -1
  7. package/curry.js +95 -12
  8. package/dist/Transducer.es.js +1 -1
  9. package/dist/Transducer.es.min.js +1 -1
  10. package/dist/Transducer.js +1 -1
  11. package/dist/Transducer.min.js +1 -1
  12. package/dist/Transducer.mjs +1 -1
  13. package/dist/__.es.js +1 -1
  14. package/dist/__.es.min.js +1 -1
  15. package/dist/__.js +1 -1
  16. package/dist/__.min.js +1 -1
  17. package/dist/__.mjs +1 -1
  18. package/dist/all.es.js +1 -1
  19. package/dist/all.es.min.js +1 -1
  20. package/dist/all.js +1 -1
  21. package/dist/all.min.js +1 -1
  22. package/dist/all.mjs +1 -1
  23. package/dist/always.es.js +1 -1
  24. package/dist/always.es.min.js +1 -1
  25. package/dist/always.js +1 -1
  26. package/dist/always.min.js +1 -1
  27. package/dist/always.mjs +1 -1
  28. package/dist/and.es.js +1 -1
  29. package/dist/and.es.min.js +1 -1
  30. package/dist/and.js +1 -1
  31. package/dist/and.min.js +1 -1
  32. package/dist/and.mjs +1 -1
  33. package/dist/assign.es.js +1 -1
  34. package/dist/assign.es.min.js +1 -1
  35. package/dist/assign.js +1 -1
  36. package/dist/assign.min.js +1 -1
  37. package/dist/assign.mjs +1 -1
  38. package/dist/compose.es.js +1 -1
  39. package/dist/compose.es.min.js +1 -1
  40. package/dist/compose.js +1 -1
  41. package/dist/compose.min.js +1 -1
  42. package/dist/compose.mjs +1 -1
  43. package/dist/curry.es.js +146 -13
  44. package/dist/curry.es.min.js +2 -2
  45. package/dist/curry.js +146 -13
  46. package/dist/curry.min.js +2 -2
  47. package/dist/curry.mjs +146 -13
  48. package/dist/eq.es.js +1 -1
  49. package/dist/eq.es.min.js +1 -1
  50. package/dist/eq.js +1 -1
  51. package/dist/eq.min.js +1 -1
  52. package/dist/eq.mjs +1 -1
  53. package/dist/every.es.js +1 -1
  54. package/dist/every.es.min.js +1 -1
  55. package/dist/every.js +1 -1
  56. package/dist/every.min.js +1 -1
  57. package/dist/every.mjs +1 -1
  58. package/dist/filter.es.js +1 -1
  59. package/dist/filter.es.min.js +1 -1
  60. package/dist/filter.js +1 -1
  61. package/dist/filter.min.js +1 -1
  62. package/dist/filter.mjs +1 -1
  63. package/dist/flatMap.es.js +1 -1
  64. package/dist/flatMap.es.min.js +1 -1
  65. package/dist/flatMap.js +1 -1
  66. package/dist/flatMap.min.js +1 -1
  67. package/dist/flatMap.mjs +1 -1
  68. package/dist/forEach.es.js +1 -1
  69. package/dist/forEach.es.min.js +1 -1
  70. package/dist/forEach.js +1 -1
  71. package/dist/forEach.min.js +1 -1
  72. package/dist/forEach.mjs +1 -1
  73. package/dist/get.es.js +1 -1
  74. package/dist/get.es.min.js +1 -1
  75. package/dist/get.js +1 -1
  76. package/dist/get.min.js +1 -1
  77. package/dist/get.mjs +1 -1
  78. package/dist/gt.es.js +1 -1
  79. package/dist/gt.es.min.js +1 -1
  80. package/dist/gt.js +1 -1
  81. package/dist/gt.min.js +1 -1
  82. package/dist/gt.mjs +1 -1
  83. package/dist/gte.es.js +1 -1
  84. package/dist/gte.es.min.js +1 -1
  85. package/dist/gte.js +1 -1
  86. package/dist/gte.min.js +1 -1
  87. package/dist/gte.mjs +1 -1
  88. package/dist/lt.es.js +1 -1
  89. package/dist/lt.es.min.js +1 -1
  90. package/dist/lt.js +1 -1
  91. package/dist/lt.min.js +1 -1
  92. package/dist/lt.mjs +1 -1
  93. package/dist/lte.es.js +1 -1
  94. package/dist/lte.es.min.js +1 -1
  95. package/dist/lte.js +1 -1
  96. package/dist/lte.min.js +1 -1
  97. package/dist/lte.mjs +1 -1
  98. package/dist/map.es.js +52 -13
  99. package/dist/map.es.min.js +2 -2
  100. package/dist/map.js +52 -13
  101. package/dist/map.min.js +2 -2
  102. package/dist/map.mjs +52 -13
  103. package/dist/not.es.js +1 -1
  104. package/dist/not.es.min.js +1 -1
  105. package/dist/not.js +1 -1
  106. package/dist/not.min.js +1 -1
  107. package/dist/not.mjs +1 -1
  108. package/dist/omit.es.js +1 -1
  109. package/dist/omit.es.min.js +1 -1
  110. package/dist/omit.js +1 -1
  111. package/dist/omit.min.js +1 -1
  112. package/dist/omit.mjs +1 -1
  113. package/dist/or.es.js +1 -1
  114. package/dist/or.es.min.js +1 -1
  115. package/dist/or.js +1 -1
  116. package/dist/or.min.js +1 -1
  117. package/dist/or.mjs +1 -1
  118. package/dist/pick.es.js +1 -1
  119. package/dist/pick.es.min.js +1 -1
  120. package/dist/pick.js +1 -1
  121. package/dist/pick.min.js +1 -1
  122. package/dist/pick.mjs +1 -1
  123. package/dist/pipe.es.js +1 -1
  124. package/dist/pipe.es.min.js +1 -1
  125. package/dist/pipe.js +1 -1
  126. package/dist/pipe.min.js +1 -1
  127. package/dist/pipe.mjs +1 -1
  128. package/dist/reduce.es.js +1 -1
  129. package/dist/reduce.es.min.js +1 -1
  130. package/dist/reduce.js +1 -1
  131. package/dist/reduce.min.js +1 -1
  132. package/dist/reduce.mjs +1 -1
  133. package/dist/rubico.es.js +63 -18
  134. package/dist/rubico.es.min.js +2 -2
  135. package/dist/rubico.global.js +63 -18
  136. package/dist/rubico.global.min.js +2 -2
  137. package/dist/rubico.js +63 -18
  138. package/dist/rubico.min.js +2 -2
  139. package/dist/rubico.mjs +63 -18
  140. package/dist/set.es.js +1 -1
  141. package/dist/set.es.min.js +1 -1
  142. package/dist/set.js +1 -1
  143. package/dist/set.min.js +1 -1
  144. package/dist/set.mjs +1 -1
  145. package/dist/some.es.js +1 -1
  146. package/dist/some.es.min.js +1 -1
  147. package/dist/some.js +1 -1
  148. package/dist/some.min.js +1 -1
  149. package/dist/some.mjs +1 -1
  150. package/dist/switchCase.es.js +1 -1
  151. package/dist/switchCase.es.min.js +1 -1
  152. package/dist/switchCase.js +1 -1
  153. package/dist/switchCase.min.js +1 -1
  154. package/dist/switchCase.mjs +1 -1
  155. package/dist/tap.es.js +1 -1
  156. package/dist/tap.es.min.js +1 -1
  157. package/dist/tap.js +1 -1
  158. package/dist/tap.min.js +1 -1
  159. package/dist/tap.mjs +1 -1
  160. package/dist/thunkify.es.js +41 -17
  161. package/dist/thunkify.es.min.js +2 -2
  162. package/dist/thunkify.js +41 -17
  163. package/dist/thunkify.min.js +2 -2
  164. package/dist/thunkify.mjs +41 -17
  165. package/dist/transform.es.js +1 -1
  166. package/dist/transform.es.min.js +1 -1
  167. package/dist/transform.js +1 -1
  168. package/dist/transform.min.js +1 -1
  169. package/dist/transform.mjs +1 -1
  170. package/dist/tryCatch.es.js +1 -1
  171. package/dist/tryCatch.es.min.js +1 -1
  172. package/dist/tryCatch.js +1 -1
  173. package/dist/tryCatch.min.js +1 -1
  174. package/dist/tryCatch.mjs +1 -1
  175. package/dist/x/append.es.js +1 -1
  176. package/dist/x/append.es.min.js +1 -1
  177. package/dist/x/append.js +1 -1
  178. package/dist/x/append.min.js +1 -1
  179. package/dist/x/append.mjs +1 -1
  180. package/dist/x/callProp.es.js +1 -1
  181. package/dist/x/callProp.es.min.js +1 -1
  182. package/dist/x/callProp.js +1 -1
  183. package/dist/x/callProp.min.js +1 -1
  184. package/dist/x/callProp.mjs +1 -1
  185. package/dist/x/defaultsDeep.es.js +1 -1
  186. package/dist/x/defaultsDeep.es.min.js +1 -1
  187. package/dist/x/defaultsDeep.js +1 -1
  188. package/dist/x/defaultsDeep.min.js +1 -1
  189. package/dist/x/defaultsDeep.mjs +1 -1
  190. package/dist/x/differenceWith.es.js +1 -1
  191. package/dist/x/differenceWith.es.min.js +1 -1
  192. package/dist/x/differenceWith.js +1 -1
  193. package/dist/x/differenceWith.min.js +1 -1
  194. package/dist/x/differenceWith.mjs +1 -1
  195. package/dist/x/filterOut.es.js +1 -1
  196. package/dist/x/filterOut.es.min.js +1 -1
  197. package/dist/x/filterOut.js +1 -1
  198. package/dist/x/filterOut.min.js +1 -1
  199. package/dist/x/filterOut.mjs +1 -1
  200. package/dist/x/find.es.js +1 -1
  201. package/dist/x/find.es.min.js +1 -1
  202. package/dist/x/find.js +1 -1
  203. package/dist/x/find.min.js +1 -1
  204. package/dist/x/find.mjs +1 -1
  205. package/dist/x/findIndex.es.js +1 -1
  206. package/dist/x/findIndex.es.min.js +1 -1
  207. package/dist/x/findIndex.js +1 -1
  208. package/dist/x/findIndex.min.js +1 -1
  209. package/dist/x/findIndex.mjs +1 -1
  210. package/dist/x/first.es.js +1 -1
  211. package/dist/x/first.es.min.js +1 -1
  212. package/dist/x/first.js +1 -1
  213. package/dist/x/first.min.js +1 -1
  214. package/dist/x/first.mjs +1 -1
  215. package/dist/x/flatten.es.js +1 -1
  216. package/dist/x/flatten.es.min.js +1 -1
  217. package/dist/x/flatten.js +1 -1
  218. package/dist/x/flatten.min.js +1 -1
  219. package/dist/x/flatten.mjs +1 -1
  220. package/dist/x/groupBy.es.js +1 -1
  221. package/dist/x/groupBy.es.min.js +1 -1
  222. package/dist/x/groupBy.js +1 -1
  223. package/dist/x/groupBy.min.js +1 -1
  224. package/dist/x/groupBy.mjs +1 -1
  225. package/dist/x/has.es.js +1 -1
  226. package/dist/x/has.es.min.js +1 -1
  227. package/dist/x/has.js +1 -1
  228. package/dist/x/has.min.js +1 -1
  229. package/dist/x/has.mjs +1 -1
  230. package/dist/x/identity.es.js +1 -1
  231. package/dist/x/identity.es.min.js +1 -1
  232. package/dist/x/identity.js +1 -1
  233. package/dist/x/identity.min.js +1 -1
  234. package/dist/x/identity.mjs +1 -1
  235. package/dist/x/includes.es.js +1 -1
  236. package/dist/x/includes.es.min.js +1 -1
  237. package/dist/x/includes.js +1 -1
  238. package/dist/x/includes.min.js +1 -1
  239. package/dist/x/includes.mjs +1 -1
  240. package/dist/x/isDeepEqual.es.js +1 -1
  241. package/dist/x/isDeepEqual.es.min.js +1 -1
  242. package/dist/x/isDeepEqual.js +1 -1
  243. package/dist/x/isDeepEqual.min.js +1 -1
  244. package/dist/x/isDeepEqual.mjs +1 -1
  245. package/dist/x/isEmpty.es.js +1 -1
  246. package/dist/x/isEmpty.es.min.js +1 -1
  247. package/dist/x/isEmpty.js +1 -1
  248. package/dist/x/isEmpty.min.js +1 -1
  249. package/dist/x/isEmpty.mjs +1 -1
  250. package/dist/x/isEqual.es.js +1 -1
  251. package/dist/x/isEqual.es.min.js +1 -1
  252. package/dist/x/isEqual.js +1 -1
  253. package/dist/x/isEqual.min.js +1 -1
  254. package/dist/x/isEqual.mjs +1 -1
  255. package/dist/x/isFunction.es.js +1 -1
  256. package/dist/x/isFunction.es.min.js +1 -1
  257. package/dist/x/isFunction.js +1 -1
  258. package/dist/x/isFunction.min.js +1 -1
  259. package/dist/x/isFunction.mjs +1 -1
  260. package/dist/x/isIn.es.js +1 -1
  261. package/dist/x/isIn.es.min.js +1 -1
  262. package/dist/x/isIn.js +1 -1
  263. package/dist/x/isIn.min.js +1 -1
  264. package/dist/x/isIn.mjs +1 -1
  265. package/dist/x/isObject.es.js +1 -1
  266. package/dist/x/isObject.es.min.js +1 -1
  267. package/dist/x/isObject.js +1 -1
  268. package/dist/x/isObject.min.js +1 -1
  269. package/dist/x/isObject.mjs +1 -1
  270. package/dist/x/isString.es.js +1 -1
  271. package/dist/x/isString.es.min.js +1 -1
  272. package/dist/x/isString.js +1 -1
  273. package/dist/x/isString.min.js +1 -1
  274. package/dist/x/isString.mjs +1 -1
  275. package/dist/x/keys.es.js +1 -1
  276. package/dist/x/keys.es.min.js +1 -1
  277. package/dist/x/keys.js +1 -1
  278. package/dist/x/keys.min.js +1 -1
  279. package/dist/x/keys.mjs +1 -1
  280. package/dist/x/last.es.js +1 -1
  281. package/dist/x/last.es.min.js +1 -1
  282. package/dist/x/last.js +1 -1
  283. package/dist/x/last.min.js +1 -1
  284. package/dist/x/last.mjs +1 -1
  285. package/dist/x/maxBy.es.js +1 -1
  286. package/dist/x/maxBy.es.min.js +1 -1
  287. package/dist/x/maxBy.js +1 -1
  288. package/dist/x/maxBy.min.js +1 -1
  289. package/dist/x/maxBy.mjs +1 -1
  290. package/dist/x/noop.es.js +1 -1
  291. package/dist/x/noop.es.min.js +1 -1
  292. package/dist/x/noop.js +1 -1
  293. package/dist/x/noop.min.js +1 -1
  294. package/dist/x/noop.mjs +1 -1
  295. package/dist/x/pluck.es.js +52 -13
  296. package/dist/x/pluck.es.min.js +2 -2
  297. package/dist/x/pluck.js +52 -13
  298. package/dist/x/pluck.min.js +2 -2
  299. package/dist/x/pluck.mjs +52 -13
  300. package/dist/x/prepend.es.js +1 -1
  301. package/dist/x/prepend.es.min.js +1 -1
  302. package/dist/x/prepend.js +1 -1
  303. package/dist/x/prepend.min.js +1 -1
  304. package/dist/x/prepend.mjs +1 -1
  305. package/dist/x/size.es.js +1 -1
  306. package/dist/x/size.es.min.js +1 -1
  307. package/dist/x/size.js +1 -1
  308. package/dist/x/size.min.js +1 -1
  309. package/dist/x/size.mjs +1 -1
  310. package/dist/x/trace.es.js +1 -1
  311. package/dist/x/trace.es.min.js +1 -1
  312. package/dist/x/trace.js +1 -1
  313. package/dist/x/trace.min.js +1 -1
  314. package/dist/x/trace.mjs +1 -1
  315. package/dist/x/unionWith.es.js +1 -1
  316. package/dist/x/unionWith.es.min.js +1 -1
  317. package/dist/x/unionWith.js +1 -1
  318. package/dist/x/unionWith.min.js +1 -1
  319. package/dist/x/unionWith.mjs +1 -1
  320. package/dist/x/uniq.es.js +1 -1
  321. package/dist/x/uniq.es.min.js +1 -1
  322. package/dist/x/uniq.js +1 -1
  323. package/dist/x/uniq.min.js +1 -1
  324. package/dist/x/uniq.mjs +1 -1
  325. package/dist/x/unless.es.js +1 -1
  326. package/dist/x/unless.es.min.js +1 -1
  327. package/dist/x/unless.js +1 -1
  328. package/dist/x/unless.min.js +1 -1
  329. package/dist/x/unless.mjs +1 -1
  330. package/dist/x/values.es.js +1 -1
  331. package/dist/x/values.es.min.js +1 -1
  332. package/dist/x/values.js +1 -1
  333. package/dist/x/values.min.js +1 -1
  334. package/dist/x/values.mjs +1 -1
  335. package/dist/x/when.es.js +1 -1
  336. package/dist/x/when.es.min.js +1 -1
  337. package/dist/x/when.js +1 -1
  338. package/dist/x/when.min.js +1 -1
  339. package/dist/x/when.mjs +1 -1
  340. package/es.js +63 -18
  341. package/index.js +63 -18
  342. package/package.json +1 -1
  343. package/thunkify.js +66 -6
package/dist/x/pluck.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -628,7 +628,31 @@ const objectMapPool = function (o, concurrency, f) {
628
628
  return result
629
629
  }
630
630
 
631
- const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
631
+ const areAnyValuesPromises = function (values) {
632
+ if (isArray(values)) {
633
+ const length = values.length
634
+ let index = -1
635
+ while (++index < length) {
636
+ const value = values[index]
637
+ if (isPromise(value)) {
638
+ return true
639
+ }
640
+ }
641
+ return false
642
+ }
643
+
644
+ for (const key in values) {
645
+ const value = values[key]
646
+ if (isPromise(value)) {
647
+ return true
648
+ }
649
+ }
650
+ return false
651
+ }
652
+
653
+ const funcApply2 = (func, context, args) => func.apply(context, args)
654
+
655
+ const _curryArity = (arity, func, context, args) => function curried(...curriedArgs) {
632
656
  const argsLength = args.length,
633
657
  curriedArgsLength = curriedArgs.length,
634
658
  nextArgs = []
@@ -647,10 +671,16 @@ const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
647
671
  } else {
648
672
  nextArgs.push(arg)
649
673
  }
674
+
650
675
  if (nextArgs.length == arity) {
676
+ if (areAnyValuesPromises(nextArgs)) {
677
+ return numCurriedPlaceholders == 0
678
+ ? promiseAll(nextArgs).then(curry3(funcApply2, func, context, __))
679
+ : promiseAll(nextArgs).then(curry4(curryArity, arity, func, context, __))
680
+ }
651
681
  return numCurriedPlaceholders == 0
652
- ? func(...nextArgs)
653
- : curryArity(arity, func, nextArgs)
682
+ ? func.apply(context, nextArgs)
683
+ : curryArity(arity, func, context, nextArgs)
654
684
  }
655
685
  }
656
686
 
@@ -660,28 +690,37 @@ const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
660
690
  numCurriedPlaceholders += 1
661
691
  }
662
692
  nextArgs.push(curriedArg)
693
+
663
694
  if (nextArgs.length == arity) {
695
+ if (areAnyValuesPromises(nextArgs)) {
696
+ return numCurriedPlaceholders == 0
697
+ ? promiseAll(nextArgs).then(curry3(funcApply2, func, context, __))
698
+ : promiseAll(nextArgs).then(curry4(curryArity, arity, func, context, __))
699
+ }
664
700
  return numCurriedPlaceholders == 0
665
- ? func(...nextArgs)
666
- : curryArity(arity, func, nextArgs)
701
+ ? func.apply(context, nextArgs)
702
+ : curryArity(arity, func, context, nextArgs)
667
703
  }
668
704
  }
669
- return curryArity(arity, func, nextArgs)
705
+
706
+ return areAnyValuesPromises(nextArgs)
707
+ ? promiseAll(nextArgs).then(curry4(curryArity, arity, func, context, __))
708
+ : curryArity(arity, func, context, nextArgs)
670
709
  }
671
710
 
672
- const curryArity = function (arity, func, args) {
711
+ const curryArity = function (arity, func, context, args) {
673
712
  const argsLength = args.length
674
713
  if (argsLength < arity) {
675
- return _curryArity(arity, func, args)
714
+ return _curryArity(arity, func, context, args)
676
715
  }
677
716
  let argsIndex = -1
678
717
  while (++argsIndex < argsLength) {
679
718
  const arg = args[argsIndex]
680
719
  if (arg == __) {
681
- return _curryArity(arity, func, args)
720
+ return _curryArity(arity, func, context, args)
682
721
  }
683
722
  }
684
- return func(...args)
723
+ return func.apply(context, args)
685
724
  }
686
725
 
687
726
  const spread2 = func => function spreading2([arg0, arg1]) {
@@ -696,7 +735,7 @@ const objectMapEntries = function (object, mapper) {
696
735
  mapping = mapper([key, value])
697
736
  if (isPromise(mapping)) {
698
737
  promises.push(mapping.then(
699
- spread2(curryArity(3, objectSet, [result]))))
738
+ spread2(curryArity(3, objectSet, this, [result]))))
700
739
  } else {
701
740
  result[mapping[0]] = mapping[1]
702
741
  }
@@ -712,7 +751,7 @@ const mapMapEntriesForEachCallback = (
712
751
  ) => function callback(value, key) {
713
752
  const mapping = mapper([key, value])
714
753
  if (isPromise(mapping)) {
715
- promises.push(mapping.then(spread2(curryArity(3, mapSet, [result]))))
754
+ promises.push(mapping.then(spread2(curryArity(3, mapSet, this, [result]))))
716
755
  } else {
717
756
  result.set(mapping[0], mapping[1])
718
757
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/prepend.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/size.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/size.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/size.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/trace.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/trace.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/uniq.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/uniq.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/uniq.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/unless.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/unless.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/values.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/values.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/when.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/when.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/dist/x/when.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
package/es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.7.10
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.
@@ -1062,7 +1062,9 @@ const objectMapPool = function (o, concurrency, f) {
1062
1062
  return result
1063
1063
  }
1064
1064
 
1065
- const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
1065
+ const funcApply2 = (func, context, args) => func.apply(context, args)
1066
+
1067
+ const _curryArity = (arity, func, context, args) => function curried(...curriedArgs) {
1066
1068
  const argsLength = args.length,
1067
1069
  curriedArgsLength = curriedArgs.length,
1068
1070
  nextArgs = []
@@ -1081,10 +1083,16 @@ const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
1081
1083
  } else {
1082
1084
  nextArgs.push(arg)
1083
1085
  }
1086
+
1084
1087
  if (nextArgs.length == arity) {
1088
+ if (areAnyValuesPromises(nextArgs)) {
1089
+ return numCurriedPlaceholders == 0
1090
+ ? promiseAll(nextArgs).then(curry3(funcApply2, func, context, __))
1091
+ : promiseAll(nextArgs).then(curry4(curryArity, arity, func, context, __))
1092
+ }
1085
1093
  return numCurriedPlaceholders == 0
1086
- ? func(...nextArgs)
1087
- : curryArity(arity, func, nextArgs)
1094
+ ? func.apply(context, nextArgs)
1095
+ : curryArity(arity, func, context, nextArgs)
1088
1096
  }
1089
1097
  }
1090
1098
 
@@ -1094,28 +1102,37 @@ const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
1094
1102
  numCurriedPlaceholders += 1
1095
1103
  }
1096
1104
  nextArgs.push(curriedArg)
1105
+
1097
1106
  if (nextArgs.length == arity) {
1107
+ if (areAnyValuesPromises(nextArgs)) {
1108
+ return numCurriedPlaceholders == 0
1109
+ ? promiseAll(nextArgs).then(curry3(funcApply2, func, context, __))
1110
+ : promiseAll(nextArgs).then(curry4(curryArity, arity, func, context, __))
1111
+ }
1098
1112
  return numCurriedPlaceholders == 0
1099
- ? func(...nextArgs)
1100
- : curryArity(arity, func, nextArgs)
1113
+ ? func.apply(context, nextArgs)
1114
+ : curryArity(arity, func, context, nextArgs)
1101
1115
  }
1102
1116
  }
1103
- return curryArity(arity, func, nextArgs)
1117
+
1118
+ return areAnyValuesPromises(nextArgs)
1119
+ ? promiseAll(nextArgs).then(curry4(curryArity, arity, func, context, __))
1120
+ : curryArity(arity, func, context, nextArgs)
1104
1121
  }
1105
1122
 
1106
- const curryArity = function (arity, func, args) {
1123
+ const curryArity = function (arity, func, context, args) {
1107
1124
  const argsLength = args.length
1108
1125
  if (argsLength < arity) {
1109
- return _curryArity(arity, func, args)
1126
+ return _curryArity(arity, func, context, args)
1110
1127
  }
1111
1128
  let argsIndex = -1
1112
1129
  while (++argsIndex < argsLength) {
1113
1130
  const arg = args[argsIndex]
1114
1131
  if (arg == __) {
1115
- return _curryArity(arity, func, args)
1132
+ return _curryArity(arity, func, context, args)
1116
1133
  }
1117
1134
  }
1118
- return func(...args)
1135
+ return func.apply(context, args)
1119
1136
  }
1120
1137
 
1121
1138
  const spread2 = func => function spreading2([arg0, arg1]) {
@@ -1130,7 +1147,7 @@ const objectMapEntries = function (object, mapper) {
1130
1147
  mapping = mapper([key, value])
1131
1148
  if (isPromise(mapping)) {
1132
1149
  promises.push(mapping.then(
1133
- spread2(curryArity(3, objectSet, [result]))))
1150
+ spread2(curryArity(3, objectSet, this, [result]))))
1134
1151
  } else {
1135
1152
  result[mapping[0]] = mapping[1]
1136
1153
  }
@@ -1146,7 +1163,7 @@ const mapMapEntriesForEachCallback = (
1146
1163
  ) => function callback(value, key) {
1147
1164
  const mapping = mapper([key, value])
1148
1165
  if (isPromise(mapping)) {
1149
- promises.push(mapping.then(spread2(curryArity(3, mapSet, [result]))))
1166
+ promises.push(mapping.then(spread2(curryArity(3, mapSet, this, [result]))))
1150
1167
  } else {
1151
1168
  result.set(mapping[0], mapping[1])
1152
1169
  }
@@ -3278,17 +3295,45 @@ const omit = function (arg0, arg1) {
3278
3295
  return _omit(arg0, arg1)
3279
3296
  }
3280
3297
 
3281
- const thunkify = (func, ...args) => function thunk() {
3298
+ function _thunkifyArgs(func, context, args) {
3299
+ return function thunk() {
3300
+ return func.apply(context, args)
3301
+ }
3302
+ }
3303
+
3304
+ const thunkify = function thunkify(func, ...args) {
3282
3305
  if (areAnyValuesPromises(args)) {
3283
- return promiseAll(args).then(curry2(funcApply, func, __))
3306
+ return promiseAll(args).then(curry3(_thunkifyArgs, func, this, __))
3284
3307
  }
3285
- return func(...args)
3308
+ return _thunkifyArgs(func, this, args)
3309
+ }
3310
+
3311
+ thunkify.call = function thunkifyCall(func, context, ...args) {
3312
+ if (areAnyValuesPromises(args)) {
3313
+ return promiseAll(args).then(curry3(_thunkifyArgs, func, context, __))
3314
+ }
3315
+ return _thunkifyArgs(func, context, args)
3286
3316
  }
3287
3317
 
3288
- const curry = (func, ...args) => curryArity(func.length, func, args)
3318
+ const curry = (func, ...args) => {
3319
+ if (areAnyValuesPromises(args)) {
3320
+ return promiseAll(args).then(curry4(curryArity, func.length, func, this, __))
3321
+ }
3322
+ return curryArity(func.length, func, this, args)
3323
+ }
3289
3324
 
3290
3325
  curry.arity = function curryArity_(arity, func, ...args) {
3291
- return curryArity(arity, func, args)
3326
+ if (areAnyValuesPromises(args)) {
3327
+ return promiseAll(args).then(curry4(curryArity, arity, func, this, __))
3328
+ }
3329
+ return curryArity(arity, func, this, args)
3330
+ }
3331
+
3332
+ curry.call = function call(func, context, ...args) {
3333
+ if (areAnyValuesPromises(args)) {
3334
+ return promiseAll(args).then(curry4(curryArity, func.length, func, context, __))
3335
+ }
3336
+ return curryArity(func.length, func, context, args)
3292
3337
  }
3293
3338
 
3294
3339
  const rubico = {