rubico 2.5.0 → 2.6.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 (368) hide show
  1. package/_internal/arrayMapPool.js +11 -19
  2. package/_internal/mapMapPool.js +80 -0
  3. package/_internal/objectMapPool.js +77 -0
  4. package/_internal/objectMapSeries.js +1 -0
  5. package/_internal/setMapPool.js +79 -0
  6. package/_internal/stringMapPool.js +22 -0
  7. package/all.js +11 -1
  8. package/and.js +9 -0
  9. package/assign.js +14 -1
  10. package/compose.js +8 -0
  11. package/dist/Transducer.es.js +1 -1
  12. package/dist/Transducer.es.min.js +1 -1
  13. package/dist/Transducer.js +1 -1
  14. package/dist/Transducer.min.js +1 -1
  15. package/dist/Transducer.mjs +1 -1
  16. package/dist/__.es.js +1 -1
  17. package/dist/__.es.min.js +1 -1
  18. package/dist/__.js +1 -1
  19. package/dist/__.min.js +1 -1
  20. package/dist/__.mjs +1 -1
  21. package/dist/all.es.js +1 -1
  22. package/dist/all.es.min.js +1 -1
  23. package/dist/all.js +1 -1
  24. package/dist/all.min.js +1 -1
  25. package/dist/all.mjs +1 -1
  26. package/dist/always.es.js +1 -1
  27. package/dist/always.es.min.js +1 -1
  28. package/dist/always.js +1 -1
  29. package/dist/always.min.js +1 -1
  30. package/dist/always.mjs +1 -1
  31. package/dist/and.es.js +1 -1
  32. package/dist/and.es.min.js +1 -1
  33. package/dist/and.js +1 -1
  34. package/dist/and.min.js +1 -1
  35. package/dist/and.mjs +1 -1
  36. package/dist/assign.es.js +1 -1
  37. package/dist/assign.es.min.js +1 -1
  38. package/dist/assign.js +1 -1
  39. package/dist/assign.min.js +1 -1
  40. package/dist/assign.mjs +1 -1
  41. package/dist/compose.es.js +1 -1
  42. package/dist/compose.es.min.js +1 -1
  43. package/dist/compose.js +1 -1
  44. package/dist/compose.min.js +1 -1
  45. package/dist/compose.mjs +1 -1
  46. package/dist/curry.es.js +1 -1
  47. package/dist/curry.es.min.js +1 -1
  48. package/dist/curry.js +1 -1
  49. package/dist/curry.min.js +1 -1
  50. package/dist/curry.mjs +1 -1
  51. package/dist/eq.es.js +1 -1
  52. package/dist/eq.es.min.js +1 -1
  53. package/dist/eq.js +1 -1
  54. package/dist/eq.min.js +1 -1
  55. package/dist/eq.mjs +1 -1
  56. package/dist/every.es.js +1 -1
  57. package/dist/every.es.min.js +1 -1
  58. package/dist/every.js +1 -1
  59. package/dist/every.min.js +1 -1
  60. package/dist/every.mjs +1 -1
  61. package/dist/filter.es.js +1 -1
  62. package/dist/filter.es.min.js +1 -1
  63. package/dist/filter.js +1 -1
  64. package/dist/filter.min.js +1 -1
  65. package/dist/filter.mjs +1 -1
  66. package/dist/flatMap.es.js +1 -1
  67. package/dist/flatMap.es.min.js +1 -1
  68. package/dist/flatMap.js +1 -1
  69. package/dist/flatMap.min.js +1 -1
  70. package/dist/flatMap.mjs +1 -1
  71. package/dist/forEach.es.js +3 -2
  72. package/dist/forEach.es.min.js +2 -2
  73. package/dist/forEach.js +3 -2
  74. package/dist/forEach.min.js +2 -2
  75. package/dist/forEach.mjs +3 -2
  76. package/dist/get.es.js +1 -1
  77. package/dist/get.es.min.js +1 -1
  78. package/dist/get.js +1 -1
  79. package/dist/get.min.js +1 -1
  80. package/dist/get.mjs +1 -1
  81. package/dist/gt.es.js +1 -1
  82. package/dist/gt.es.min.js +1 -1
  83. package/dist/gt.js +1 -1
  84. package/dist/gt.min.js +1 -1
  85. package/dist/gt.mjs +1 -1
  86. package/dist/gte.es.js +1 -1
  87. package/dist/gte.es.min.js +1 -1
  88. package/dist/gte.js +1 -1
  89. package/dist/gte.min.js +1 -1
  90. package/dist/gte.mjs +1 -1
  91. package/dist/lt.es.js +1 -1
  92. package/dist/lt.es.min.js +1 -1
  93. package/dist/lt.js +1 -1
  94. package/dist/lt.min.js +1 -1
  95. package/dist/lt.mjs +1 -1
  96. package/dist/lte.es.js +1 -1
  97. package/dist/lte.es.min.js +1 -1
  98. package/dist/lte.js +1 -1
  99. package/dist/lte.min.js +1 -1
  100. package/dist/lte.mjs +1 -1
  101. package/dist/map.es.js +221 -44
  102. package/dist/map.es.min.js +2 -2
  103. package/dist/map.js +221 -44
  104. package/dist/map.min.js +2 -2
  105. package/dist/map.mjs +221 -44
  106. package/dist/not.es.js +1 -1
  107. package/dist/not.es.min.js +1 -1
  108. package/dist/not.js +1 -1
  109. package/dist/not.min.js +1 -1
  110. package/dist/not.mjs +1 -1
  111. package/dist/omit.es.js +1 -1
  112. package/dist/omit.es.min.js +1 -1
  113. package/dist/omit.js +1 -1
  114. package/dist/omit.min.js +1 -1
  115. package/dist/omit.mjs +1 -1
  116. package/dist/or.es.js +1 -1
  117. package/dist/or.es.min.js +1 -1
  118. package/dist/or.js +1 -1
  119. package/dist/or.min.js +1 -1
  120. package/dist/or.mjs +1 -1
  121. package/dist/pick.es.js +1 -1
  122. package/dist/pick.es.min.js +1 -1
  123. package/dist/pick.js +1 -1
  124. package/dist/pick.min.js +1 -1
  125. package/dist/pick.mjs +1 -1
  126. package/dist/pipe.es.js +1 -1
  127. package/dist/pipe.es.min.js +1 -1
  128. package/dist/pipe.js +1 -1
  129. package/dist/pipe.min.js +1 -1
  130. package/dist/pipe.mjs +1 -1
  131. package/dist/reduce.es.js +1 -1
  132. package/dist/reduce.es.min.js +1 -1
  133. package/dist/reduce.js +1 -1
  134. package/dist/reduce.min.js +1 -1
  135. package/dist/reduce.mjs +1 -1
  136. package/dist/rubico.es.js +259 -60
  137. package/dist/rubico.es.min.js +2 -2
  138. package/dist/rubico.global.js +259 -60
  139. package/dist/rubico.global.min.js +2 -2
  140. package/dist/rubico.js +259 -60
  141. package/dist/rubico.min.js +2 -2
  142. package/dist/rubico.mjs +259 -60
  143. package/dist/set.es.js +1 -1
  144. package/dist/set.es.min.js +1 -1
  145. package/dist/set.js +1 -1
  146. package/dist/set.min.js +1 -1
  147. package/dist/set.mjs +1 -1
  148. package/dist/some.es.js +1 -1
  149. package/dist/some.es.min.js +1 -1
  150. package/dist/some.js +1 -1
  151. package/dist/some.min.js +1 -1
  152. package/dist/some.mjs +1 -1
  153. package/dist/switchCase.es.js +1 -1
  154. package/dist/switchCase.es.min.js +1 -1
  155. package/dist/switchCase.js +1 -1
  156. package/dist/switchCase.min.js +1 -1
  157. package/dist/switchCase.mjs +1 -1
  158. package/dist/tap.es.js +100 -14
  159. package/dist/tap.es.min.js +2 -2
  160. package/dist/tap.js +100 -14
  161. package/dist/tap.min.js +2 -2
  162. package/dist/tap.mjs +100 -14
  163. package/dist/thunkify.es.js +1 -1
  164. package/dist/thunkify.es.min.js +1 -1
  165. package/dist/thunkify.js +1 -1
  166. package/dist/thunkify.min.js +1 -1
  167. package/dist/thunkify.mjs +1 -1
  168. package/dist/transform.es.js +1 -1
  169. package/dist/transform.es.min.js +1 -1
  170. package/dist/transform.js +1 -1
  171. package/dist/transform.min.js +1 -1
  172. package/dist/transform.mjs +1 -1
  173. package/dist/tryCatch.es.js +1 -1
  174. package/dist/tryCatch.es.min.js +1 -1
  175. package/dist/tryCatch.js +1 -1
  176. package/dist/tryCatch.min.js +1 -1
  177. package/dist/tryCatch.mjs +1 -1
  178. package/dist/x/append.es.js +1 -1
  179. package/dist/x/append.es.min.js +1 -1
  180. package/dist/x/append.js +1 -1
  181. package/dist/x/append.min.js +1 -1
  182. package/dist/x/append.mjs +1 -1
  183. package/dist/x/callProp.es.js +1 -1
  184. package/dist/x/callProp.es.min.js +1 -1
  185. package/dist/x/callProp.js +1 -1
  186. package/dist/x/callProp.min.js +1 -1
  187. package/dist/x/callProp.mjs +1 -1
  188. package/dist/x/defaultsDeep.es.js +1 -1
  189. package/dist/x/defaultsDeep.es.min.js +1 -1
  190. package/dist/x/defaultsDeep.js +1 -1
  191. package/dist/x/defaultsDeep.min.js +1 -1
  192. package/dist/x/defaultsDeep.mjs +1 -1
  193. package/dist/x/differenceWith.es.js +1 -1
  194. package/dist/x/differenceWith.es.min.js +1 -1
  195. package/dist/x/differenceWith.js +1 -1
  196. package/dist/x/differenceWith.min.js +1 -1
  197. package/dist/x/differenceWith.mjs +1 -1
  198. package/dist/x/filterOut.es.js +1 -1
  199. package/dist/x/filterOut.es.min.js +1 -1
  200. package/dist/x/filterOut.js +1 -1
  201. package/dist/x/filterOut.min.js +1 -1
  202. package/dist/x/filterOut.mjs +1 -1
  203. package/dist/x/find.es.js +1 -1
  204. package/dist/x/find.es.min.js +1 -1
  205. package/dist/x/find.js +1 -1
  206. package/dist/x/find.min.js +1 -1
  207. package/dist/x/find.mjs +1 -1
  208. package/dist/x/findIndex.es.js +1 -1
  209. package/dist/x/findIndex.es.min.js +1 -1
  210. package/dist/x/findIndex.js +1 -1
  211. package/dist/x/findIndex.min.js +1 -1
  212. package/dist/x/findIndex.mjs +1 -1
  213. package/dist/x/first.es.js +1 -1
  214. package/dist/x/first.es.min.js +1 -1
  215. package/dist/x/first.js +1 -1
  216. package/dist/x/first.min.js +1 -1
  217. package/dist/x/first.mjs +1 -1
  218. package/dist/x/flatten.es.js +1 -1
  219. package/dist/x/flatten.es.min.js +1 -1
  220. package/dist/x/flatten.js +1 -1
  221. package/dist/x/flatten.min.js +1 -1
  222. package/dist/x/flatten.mjs +1 -1
  223. package/dist/x/groupBy.es.js +1 -1
  224. package/dist/x/groupBy.es.min.js +1 -1
  225. package/dist/x/groupBy.js +1 -1
  226. package/dist/x/groupBy.min.js +1 -1
  227. package/dist/x/groupBy.mjs +1 -1
  228. package/dist/x/has.es.js +1 -1
  229. package/dist/x/has.es.min.js +1 -1
  230. package/dist/x/has.js +1 -1
  231. package/dist/x/has.min.js +1 -1
  232. package/dist/x/has.mjs +1 -1
  233. package/dist/x/identity.es.js +1 -1
  234. package/dist/x/identity.es.min.js +1 -1
  235. package/dist/x/identity.js +1 -1
  236. package/dist/x/identity.min.js +1 -1
  237. package/dist/x/identity.mjs +1 -1
  238. package/dist/x/includes.es.js +1 -1
  239. package/dist/x/includes.es.min.js +1 -1
  240. package/dist/x/includes.js +1 -1
  241. package/dist/x/includes.min.js +1 -1
  242. package/dist/x/includes.mjs +1 -1
  243. package/dist/x/isDeepEqual.es.js +1 -1
  244. package/dist/x/isDeepEqual.es.min.js +1 -1
  245. package/dist/x/isDeepEqual.js +1 -1
  246. package/dist/x/isDeepEqual.min.js +1 -1
  247. package/dist/x/isDeepEqual.mjs +1 -1
  248. package/dist/x/isEmpty.es.js +1 -1
  249. package/dist/x/isEmpty.es.min.js +1 -1
  250. package/dist/x/isEmpty.js +1 -1
  251. package/dist/x/isEmpty.min.js +1 -1
  252. package/dist/x/isEmpty.mjs +1 -1
  253. package/dist/x/isEqual.es.js +1 -1
  254. package/dist/x/isEqual.es.min.js +1 -1
  255. package/dist/x/isEqual.js +1 -1
  256. package/dist/x/isEqual.min.js +1 -1
  257. package/dist/x/isEqual.mjs +1 -1
  258. package/dist/x/isFunction.es.js +1 -1
  259. package/dist/x/isFunction.es.min.js +1 -1
  260. package/dist/x/isFunction.js +1 -1
  261. package/dist/x/isFunction.min.js +1 -1
  262. package/dist/x/isFunction.mjs +1 -1
  263. package/dist/x/isIn.es.js +1 -1
  264. package/dist/x/isIn.es.min.js +1 -1
  265. package/dist/x/isIn.js +1 -1
  266. package/dist/x/isIn.min.js +1 -1
  267. package/dist/x/isIn.mjs +1 -1
  268. package/dist/x/isObject.es.js +1 -1
  269. package/dist/x/isObject.es.min.js +1 -1
  270. package/dist/x/isObject.js +1 -1
  271. package/dist/x/isObject.min.js +1 -1
  272. package/dist/x/isObject.mjs +1 -1
  273. package/dist/x/isString.es.js +1 -1
  274. package/dist/x/isString.es.min.js +1 -1
  275. package/dist/x/isString.js +1 -1
  276. package/dist/x/isString.min.js +1 -1
  277. package/dist/x/isString.mjs +1 -1
  278. package/dist/x/keys.es.js +1 -1
  279. package/dist/x/keys.es.min.js +1 -1
  280. package/dist/x/keys.js +1 -1
  281. package/dist/x/keys.min.js +1 -1
  282. package/dist/x/keys.mjs +1 -1
  283. package/dist/x/last.es.js +1 -1
  284. package/dist/x/last.es.min.js +1 -1
  285. package/dist/x/last.js +1 -1
  286. package/dist/x/last.min.js +1 -1
  287. package/dist/x/last.mjs +1 -1
  288. package/dist/x/maxBy.es.js +1 -1
  289. package/dist/x/maxBy.es.min.js +1 -1
  290. package/dist/x/maxBy.js +1 -1
  291. package/dist/x/maxBy.min.js +1 -1
  292. package/dist/x/maxBy.mjs +1 -1
  293. package/dist/x/noop.es.js +1 -1
  294. package/dist/x/noop.es.min.js +1 -1
  295. package/dist/x/noop.js +1 -1
  296. package/dist/x/noop.min.js +1 -1
  297. package/dist/x/noop.mjs +1 -1
  298. package/dist/x/pluck.es.js +221 -44
  299. package/dist/x/pluck.es.min.js +2 -2
  300. package/dist/x/pluck.js +221 -44
  301. package/dist/x/pluck.min.js +2 -2
  302. package/dist/x/pluck.mjs +221 -44
  303. package/dist/x/prepend.es.js +1 -1
  304. package/dist/x/prepend.es.min.js +1 -1
  305. package/dist/x/prepend.js +1 -1
  306. package/dist/x/prepend.min.js +1 -1
  307. package/dist/x/prepend.mjs +1 -1
  308. package/dist/x/size.es.js +1 -1
  309. package/dist/x/size.es.min.js +1 -1
  310. package/dist/x/size.js +1 -1
  311. package/dist/x/size.min.js +1 -1
  312. package/dist/x/size.mjs +1 -1
  313. package/dist/x/trace.es.js +100 -14
  314. package/dist/x/trace.es.min.js +2 -2
  315. package/dist/x/trace.js +100 -14
  316. package/dist/x/trace.min.js +2 -2
  317. package/dist/x/trace.mjs +100 -14
  318. package/dist/x/unionWith.es.js +1 -1
  319. package/dist/x/unionWith.es.min.js +1 -1
  320. package/dist/x/unionWith.js +1 -1
  321. package/dist/x/unionWith.min.js +1 -1
  322. package/dist/x/unionWith.mjs +1 -1
  323. package/dist/x/uniq.es.js +1 -1
  324. package/dist/x/uniq.es.min.js +1 -1
  325. package/dist/x/uniq.js +1 -1
  326. package/dist/x/uniq.min.js +1 -1
  327. package/dist/x/uniq.mjs +1 -1
  328. package/dist/x/unless.es.js +1 -1
  329. package/dist/x/unless.es.min.js +1 -1
  330. package/dist/x/unless.js +1 -1
  331. package/dist/x/unless.min.js +1 -1
  332. package/dist/x/unless.mjs +1 -1
  333. package/dist/x/values.es.js +1 -1
  334. package/dist/x/values.es.min.js +1 -1
  335. package/dist/x/values.js +1 -1
  336. package/dist/x/values.min.js +1 -1
  337. package/dist/x/values.mjs +1 -1
  338. package/dist/x/when.es.js +1 -1
  339. package/dist/x/when.es.min.js +1 -1
  340. package/dist/x/when.js +1 -1
  341. package/dist/x/when.min.js +1 -1
  342. package/dist/x/when.mjs +1 -1
  343. package/eq.js +6 -0
  344. package/es.js +259 -60
  345. package/every.js +6 -0
  346. package/filter.js +9 -0
  347. package/flatMap.js +7 -0
  348. package/forEach.js +20 -1
  349. package/get.js +6 -0
  350. package/gt.js +6 -0
  351. package/gte.js +6 -0
  352. package/index.js +259 -60
  353. package/lt.js +6 -0
  354. package/lte.js +6 -0
  355. package/map.js +118 -45
  356. package/not.js +8 -0
  357. package/omit.js +7 -0
  358. package/or.js +9 -0
  359. package/package.json +1 -1
  360. package/pick.js +7 -0
  361. package/pipe.js +8 -0
  362. package/reduce.js +8 -0
  363. package/set.js +6 -0
  364. package/some.js +6 -0
  365. package/switchCase.js +12 -0
  366. package/tap.js +75 -26
  367. package/transform.js +38 -10
  368. package/tryCatch.js +14 -0
package/dist/x/trace.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -34,6 +34,26 @@ const thunkConditional = (
34
34
 
35
35
  const __ = Symbol.for('placeholder')
36
36
 
37
+ // argument resolver for curry2
38
+ const curry2ResolveArg0 = (
39
+ baseFunc, arg1,
40
+ ) => function arg0Resolver(arg0) {
41
+ return baseFunc(arg0, arg1)
42
+ }
43
+
44
+ // argument resolver for curry2
45
+ const curry2ResolveArg1 = (
46
+ baseFunc, arg0,
47
+ ) => function arg1Resolver(arg1) {
48
+ return baseFunc(arg0, arg1)
49
+ }
50
+
51
+ const curry2 = function (baseFunc, arg0, arg1) {
52
+ return arg0 == __
53
+ ? curry2ResolveArg0(baseFunc, arg1)
54
+ : curry2ResolveArg1(baseFunc, arg0)
55
+ }
56
+
37
57
  // argument resolver for curry3
38
58
  const curry3ResolveArg0 = (
39
59
  baseFunc, arg1, arg2,
@@ -86,29 +106,81 @@ const curryArgs2 = function (baseFunc, arg0, arg1) {
86
106
  return curryArgs2ResolveArgs1(baseFunc, arg0)
87
107
  }
88
108
 
89
- // _tap(args Array, func function) -> Promise|any
90
- const _tap = function (args, func) {
109
+ // argument resolver for curryArgs3
110
+ const curryArgs3ResolveArgs0 = (
111
+ baseFunc, arg1, arg2,
112
+ ) => function args0Resolver(...args) {
113
+ return baseFunc(args, arg1, arg2)
114
+ }
115
+
116
+ // argument resolver for curryArgs3
117
+ const curryArgs3ResolveArgs1 = (
118
+ baseFunc, arg0, arg2,
119
+ ) => function arg1Resolver(...args) {
120
+ return baseFunc(arg0, args, arg2)
121
+ }
122
+
123
+ // argument resolver for curryArgs3
124
+ const curryArgs3ResolveArgs2 = (
125
+ baseFunc, arg0, arg1,
126
+ ) => function arg2Resolver(...args) {
127
+ return baseFunc(arg0, arg1, args)
128
+ }
129
+
130
+ const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
131
+ if (arg0 == __) {
132
+ return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
133
+ }
134
+ if (arg1 == __) {
135
+ return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
136
+ }
137
+ return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
138
+ }
139
+
140
+ const areAnyValuesPromises = function (values) {
141
+ const length = values.length
142
+ let index = -1
143
+ while (++index < length) {
144
+ const value = values[index]
145
+ if (isPromise(value)) {
146
+ return true
147
+ }
148
+ }
149
+ return false
150
+ }
151
+
152
+ const promiseAll = Promise.all.bind(Promise)
153
+
154
+ // _tap(args Array, f function) -> Promise|any
155
+ const _tap = function (args, f) {
91
156
  const result = args[0],
92
- call = func(...args)
157
+ call = f(...args)
93
158
  return isPromise(call) ? call.then(always(result)) : result
94
159
  }
95
160
 
96
161
  const tap = function (...args) {
97
- const func = args.pop()
162
+ const f = args.pop()
98
163
  if (args.length == 0) {
99
- return curryArgs2(_tap, __, func)
164
+ return curryArgs2(_tap, __, f)
165
+ }
166
+ if (areAnyValuesPromises(args)) {
167
+ return promiseAll(args).then(curry2(_tap, __, f))
100
168
  }
101
- return _tap(args, func)
169
+ return _tap(args, f)
102
170
  }
103
171
 
104
- tap.if = (predicate, func) => function tappingIf(...args) {
105
- const predication = predicate(...args)
106
- if (isPromise(predication)) {
107
- return predication.then(curry3(
108
- thunkConditional, __, thunkifyArgs(tap(func), args), always(args[0])))
172
+ const _tapIf = function (predicate, f, args) {
173
+ const b = predicate(...args)
174
+ if (isPromise(b)) {
175
+ return b.then(curry3(
176
+ thunkConditional,
177
+ __,
178
+ thunkifyArgs(tap(f), args),
179
+ always(args[0]),
180
+ ))
109
181
  }
110
- if (predication) {
111
- const execution = func(...args)
182
+ if (b) {
183
+ const execution = f(...args)
112
184
  if (isPromise(execution)) {
113
185
  return execution.then(always(args[0]))
114
186
  }
@@ -116,6 +188,20 @@ tap.if = (predicate, func) => function tappingIf(...args) {
116
188
  return args[0]
117
189
  }
118
190
 
191
+ tap.if = function (...args) {
192
+ if (args.length == 2) {
193
+ return curryArgs3(_tapIf, args[0], args[1], __)
194
+ }
195
+ const argsLength = args.length
196
+ const f = args[argsLength - 1]
197
+ const predicate = args[argsLength - 2]
198
+ const argValues = args.slice(0, -2)
199
+ if (areAnyValuesPromises(argValues)) {
200
+ return promiseAll(argValues).then(curry3(_tapIf, predicate, f, __))
201
+ }
202
+ return _tapIf(predicate, f, args)
203
+ }
204
+
119
205
  // ...any => ()
120
206
  const consoleLog = console.log
121
207
 
@@ -1,8 +1,8 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
7
 
8
- !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.trace=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=n=>function(){return n},o=(n,t,o)=>n?t():o(),e=Symbol.for("placeholder"),r=function(o,e){const r=o[0],u=e(...o);return n(u)?u.then(t(r)):r},u=function(...n){const t=n.pop();return 0==n.length?(o=r,c=t,(u=e)==e?((n,t)=>function(...o){return n(o,t)})(o,c):((n,t)=>function(...o){return n(t,o)})(o,u)):r(n,t);var o,u,c};u.if=(r,c)=>function(...f){const i=r(...f);if(n(i))return i.then((s=o,l=e,h=((n,t)=>function(){return n(...t)})(u(c),f),p=t(f[0]),l==e?((n,t,o)=>function(e){return n(e,t,o)})(s,h,p):h==e?((n,t,o)=>function(e){return n(t,e,o)})(s,l,p):((n,t,o)=>function(e){return n(t,o,e)})(s,l,h)));var s,l,h,p;if(i){const o=c(...f);if(n(o))return o.then(t(f[0]))}return f[0]};const c=console.log;return function(...t){const o=t[0];return"function"==typeof o?u((e=o,r=c,function(...t){const o=e(...t);return n(o)?o.then(r):r(o)})):u(c)(...t);var e,r}}());
8
+ !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.trace=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=n=>function(){return n},r=(n,t,r)=>n?t():r(),e=Symbol.for("placeholder"),o=function(n,t,r,o){return t==e?((n,t,r)=>function(e){return n(e,t,r)})(n,r,o):r==e?((n,t,r)=>function(e){return n(t,e,r)})(n,t,o):((n,t,r)=>function(e){return n(t,r,e)})(n,t,r)},u=function(t){const r=t.length;let e=-1;for(;++e<r;){const r=t[e];if(n(r))return!0}return!1},c=Promise.all.bind(Promise),i=function(r,e){const o=r[0],u=e(...r);return n(u)?u.then(t(o)):o},f=function(...n){const t=n.pop();return 0==n.length?(r=i,f=t,(o=e)==e?((n,t)=>function(...r){return n(r,t)})(r,f):((n,t)=>function(...r){return n(t,r)})(r,o)):u(n)?c(n).then(function(n,t,r){return t==e?((n,t)=>function(r){return n(r,t)})(n,r):((n,t)=>function(r){return n(t,r)})(n,t)}(i,e,t)):i(n,t);var r,o,f},l=function(u,c,i){const l=u(...i);if(n(l))return l.then(o(r,e,((n,t)=>function(){return n(...t)})(f(c),i),t(i[0])));if(l){const r=c(...i);if(n(r))return r.then(t(i[0]))}return i[0]};f.if=function(...n){if(2==n.length)return t=l,r=n[0],i=n[1],f=e,r==e?((n,t,r)=>function(...e){return n(e,t,r)})(t,i,f):i==e?((n,t,r)=>function(...e){return n(t,e,r)})(t,r,f):((n,t,r)=>function(...e){return n(t,r,e)})(t,r,i);var t,r,i,f;const s=n.length,h=n[s-1],p=n[s-2],a=n.slice(0,-2);return u(a)?c(a).then(o(l,p,h,e)):l(p,h,n)};const s=console.log;return function(...t){const r=t[0];return"function"==typeof r?f((e=r,o=s,function(...t){const r=e(...t);return n(r)?r.then(o):o(r)})):f(s)(...t);var e,o}}());
package/dist/x/trace.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -28,6 +28,26 @@ const thunkConditional = (
28
28
 
29
29
  const __ = Symbol.for('placeholder')
30
30
 
31
+ // argument resolver for curry2
32
+ const curry2ResolveArg0 = (
33
+ baseFunc, arg1,
34
+ ) => function arg0Resolver(arg0) {
35
+ return baseFunc(arg0, arg1)
36
+ }
37
+
38
+ // argument resolver for curry2
39
+ const curry2ResolveArg1 = (
40
+ baseFunc, arg0,
41
+ ) => function arg1Resolver(arg1) {
42
+ return baseFunc(arg0, arg1)
43
+ }
44
+
45
+ const curry2 = function (baseFunc, arg0, arg1) {
46
+ return arg0 == __
47
+ ? curry2ResolveArg0(baseFunc, arg1)
48
+ : curry2ResolveArg1(baseFunc, arg0)
49
+ }
50
+
31
51
  // argument resolver for curry3
32
52
  const curry3ResolveArg0 = (
33
53
  baseFunc, arg1, arg2,
@@ -80,29 +100,81 @@ const curryArgs2 = function (baseFunc, arg0, arg1) {
80
100
  return curryArgs2ResolveArgs1(baseFunc, arg0)
81
101
  }
82
102
 
83
- // _tap(args Array, func function) -> Promise|any
84
- const _tap = function (args, func) {
103
+ // argument resolver for curryArgs3
104
+ const curryArgs3ResolveArgs0 = (
105
+ baseFunc, arg1, arg2,
106
+ ) => function args0Resolver(...args) {
107
+ return baseFunc(args, arg1, arg2)
108
+ }
109
+
110
+ // argument resolver for curryArgs3
111
+ const curryArgs3ResolveArgs1 = (
112
+ baseFunc, arg0, arg2,
113
+ ) => function arg1Resolver(...args) {
114
+ return baseFunc(arg0, args, arg2)
115
+ }
116
+
117
+ // argument resolver for curryArgs3
118
+ const curryArgs3ResolveArgs2 = (
119
+ baseFunc, arg0, arg1,
120
+ ) => function arg2Resolver(...args) {
121
+ return baseFunc(arg0, arg1, args)
122
+ }
123
+
124
+ const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
125
+ if (arg0 == __) {
126
+ return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
127
+ }
128
+ if (arg1 == __) {
129
+ return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
130
+ }
131
+ return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
132
+ }
133
+
134
+ const areAnyValuesPromises = function (values) {
135
+ const length = values.length
136
+ let index = -1
137
+ while (++index < length) {
138
+ const value = values[index]
139
+ if (isPromise(value)) {
140
+ return true
141
+ }
142
+ }
143
+ return false
144
+ }
145
+
146
+ const promiseAll = Promise.all.bind(Promise)
147
+
148
+ // _tap(args Array, f function) -> Promise|any
149
+ const _tap = function (args, f) {
85
150
  const result = args[0],
86
- call = func(...args)
151
+ call = f(...args)
87
152
  return isPromise(call) ? call.then(always(result)) : result
88
153
  }
89
154
 
90
155
  const tap = function (...args) {
91
- const func = args.pop()
156
+ const f = args.pop()
92
157
  if (args.length == 0) {
93
- return curryArgs2(_tap, __, func)
158
+ return curryArgs2(_tap, __, f)
159
+ }
160
+ if (areAnyValuesPromises(args)) {
161
+ return promiseAll(args).then(curry2(_tap, __, f))
94
162
  }
95
- return _tap(args, func)
163
+ return _tap(args, f)
96
164
  }
97
165
 
98
- tap.if = (predicate, func) => function tappingIf(...args) {
99
- const predication = predicate(...args)
100
- if (isPromise(predication)) {
101
- return predication.then(curry3(
102
- thunkConditional, __, thunkifyArgs(tap(func), args), always(args[0])))
166
+ const _tapIf = function (predicate, f, args) {
167
+ const b = predicate(...args)
168
+ if (isPromise(b)) {
169
+ return b.then(curry3(
170
+ thunkConditional,
171
+ __,
172
+ thunkifyArgs(tap(f), args),
173
+ always(args[0]),
174
+ ))
103
175
  }
104
- if (predication) {
105
- const execution = func(...args)
176
+ if (b) {
177
+ const execution = f(...args)
106
178
  if (isPromise(execution)) {
107
179
  return execution.then(always(args[0]))
108
180
  }
@@ -110,6 +182,20 @@ tap.if = (predicate, func) => function tappingIf(...args) {
110
182
  return args[0]
111
183
  }
112
184
 
185
+ tap.if = function (...args) {
186
+ if (args.length == 2) {
187
+ return curryArgs3(_tapIf, args[0], args[1], __)
188
+ }
189
+ const argsLength = args.length
190
+ const f = args[argsLength - 1]
191
+ const predicate = args[argsLength - 2]
192
+ const argValues = args.slice(0, -2)
193
+ if (areAnyValuesPromises(argValues)) {
194
+ return promiseAll(argValues).then(curry3(_tapIf, predicate, f, __))
195
+ }
196
+ return _tapIf(predicate, f, args)
197
+ }
198
+
113
199
  // ...any => ()
114
200
  const consoleLog = console.log
115
201
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 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.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 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.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 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.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 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.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 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.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 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.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 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.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 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.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 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.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 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.5.0
2
+ * rubico v2.6.1
3
3
  * https://github.com/a-synchronous/rubico
4
4
  * (c) 2019-2024 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
package/eq.js CHANGED
@@ -48,6 +48,12 @@ const equals = require('./_internal/equals')
48
48
  * ])
49
49
  * ```
50
50
  *
51
+ * Any promises passed in argument position are resolved for their values before further execution. This only applies to the eager version of the API.
52
+ *
53
+ * ```javascript [playground]
54
+ * eq(Promise.resolve({ a: 1, b: 1 }), get('a'), get('b')).then(console.log) // true
55
+ * ```
56
+ *
51
57
  * @execution concurrent
52
58
  */
53
59