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/rubico.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.
@@ -146,29 +146,67 @@ const curryArgs2 = function (baseFunc, arg0, arg1) {
146
146
  return curryArgs2ResolveArgs1(baseFunc, arg0)
147
147
  }
148
148
 
149
- // _tap(args Array, func function) -> Promise|any
150
- const _tap = function (args, func) {
149
+ // argument resolver for curryArgs3
150
+ const curryArgs3ResolveArgs0 = (
151
+ baseFunc, arg1, arg2,
152
+ ) => function args0Resolver(...args) {
153
+ return baseFunc(args, arg1, arg2)
154
+ }
155
+
156
+ // argument resolver for curryArgs3
157
+ const curryArgs3ResolveArgs1 = (
158
+ baseFunc, arg0, arg2,
159
+ ) => function arg1Resolver(...args) {
160
+ return baseFunc(arg0, args, arg2)
161
+ }
162
+
163
+ // argument resolver for curryArgs3
164
+ const curryArgs3ResolveArgs2 = (
165
+ baseFunc, arg0, arg1,
166
+ ) => function arg2Resolver(...args) {
167
+ return baseFunc(arg0, arg1, args)
168
+ }
169
+
170
+ const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
171
+ if (arg0 == __) {
172
+ return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
173
+ }
174
+ if (arg1 == __) {
175
+ return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
176
+ }
177
+ return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
178
+ }
179
+
180
+ // _tap(args Array, f function) -> Promise|any
181
+ const _tap = function (args, f) {
151
182
  const result = args[0],
152
- call = func(...args)
183
+ call = f(...args)
153
184
  return isPromise(call) ? call.then(always(result)) : result
154
185
  }
155
186
 
156
187
  const tap = function (...args) {
157
- const func = args.pop()
188
+ const f = args.pop()
158
189
  if (args.length == 0) {
159
- return curryArgs2(_tap, __, func)
190
+ return curryArgs2(_tap, __, f)
191
+ }
192
+ if (areAnyValuesPromises(args)) {
193
+ return promiseAll(args).then(curry2(_tap, __, f))
160
194
  }
161
- return _tap(args, func)
195
+ return _tap(args, f)
162
196
  }
163
197
 
164
- tap.if = (predicate, func) => function tappingIf(...args) {
165
- const predication = predicate(...args)
166
- if (isPromise(predication)) {
167
- return predication.then(curry3(
168
- thunkConditional, __, thunkifyArgs(tap(func), args), always(args[0])))
198
+ const _tapIf = function (predicate, f, args) {
199
+ const b = predicate(...args)
200
+ if (isPromise(b)) {
201
+ return b.then(curry3(
202
+ thunkConditional,
203
+ __,
204
+ thunkifyArgs(tap(f), args),
205
+ always(args[0]),
206
+ ))
169
207
  }
170
- if (predication) {
171
- const execution = func(...args)
208
+ if (b) {
209
+ const execution = f(...args)
172
210
  if (isPromise(execution)) {
173
211
  return execution.then(always(args[0]))
174
212
  }
@@ -176,6 +214,20 @@ tap.if = (predicate, func) => function tappingIf(...args) {
176
214
  return args[0]
177
215
  }
178
216
 
217
+ tap.if = function (...args) {
218
+ if (args.length == 2) {
219
+ return curryArgs3(_tapIf, args[0], args[1], __)
220
+ }
221
+ const argsLength = args.length
222
+ const f = args[argsLength - 1]
223
+ const predicate = args[argsLength - 2]
224
+ const argValues = args.slice(0, -2)
225
+ if (areAnyValuesPromises(argValues)) {
226
+ return promiseAll(argValues).then(curry3(_tapIf, predicate, f, __))
227
+ }
228
+ return _tapIf(predicate, f, args)
229
+ }
230
+
179
231
  const isArray = Array.isArray
180
232
 
181
233
  const functionArrayAll = function (funcs, args) {
@@ -442,37 +494,6 @@ const nonfunctionsConditional = function (array, index) {
442
494
  return array[index]
443
495
  }
444
496
 
445
- // argument resolver for curryArgs3
446
- const curryArgs3ResolveArgs0 = (
447
- baseFunc, arg1, arg2,
448
- ) => function args0Resolver(...args) {
449
- return baseFunc(args, arg1, arg2)
450
- }
451
-
452
- // argument resolver for curryArgs3
453
- const curryArgs3ResolveArgs1 = (
454
- baseFunc, arg0, arg2,
455
- ) => function arg1Resolver(...args) {
456
- return baseFunc(arg0, args, arg2)
457
- }
458
-
459
- // argument resolver for curryArgs3
460
- const curryArgs3ResolveArgs2 = (
461
- baseFunc, arg0, arg1,
462
- ) => function arg2Resolver(...args) {
463
- return baseFunc(arg0, arg1, args)
464
- }
465
-
466
- const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
467
- if (arg0 == __) {
468
- return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
469
- }
470
- if (arg1 == __) {
471
- return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
472
- }
473
- return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
474
- }
475
-
476
497
  const switchCase = (...args) => {
477
498
  const values = args.pop()
478
499
  if (areAllValuesNonfunctions(values)) {
@@ -701,6 +722,7 @@ const objectMapSeries = function (object, f) {
701
722
  thunkify4(_objectMapSeriesAsync, object, f, result, doneKeys),
702
723
  ))
703
724
  }
725
+ result[key] = resultItem
704
726
  }
705
727
  return result
706
728
  }
@@ -795,15 +817,14 @@ const tapSync = func => function tapping(...args) {
795
817
  const promiseRace = Promise.race.bind(Promise)
796
818
 
797
819
  const arrayMapPoolAsync = async function (
798
- array, mapper, concurrencyLimit, result, index, promises,
820
+ array, f, concurrencyLimit, result, index, promises,
799
821
  ) {
800
822
  const arrayLength = array.length
801
823
  while (++index < arrayLength) {
802
824
  if (promises.size >= concurrencyLimit) {
803
825
  await promiseRace(promises)
804
826
  }
805
-
806
- const resultItem = mapper(array[index])
827
+ const resultItem = f(array[index])
807
828
  if (isPromise(resultItem)) {
808
829
  const selfDeletingPromise = resultItem.then(
809
830
  tapSync(() => promises.delete(selfDeletingPromise)))
@@ -816,13 +837,12 @@ const arrayMapPoolAsync = async function (
816
837
  return promiseAll(result)
817
838
  }
818
839
 
819
- const arrayMapPool = function (array, mapper, concurrentLimit) {
840
+ const arrayMapPool = function (array, concurrency, f) {
820
841
  const arrayLength = array.length,
821
842
  result = Array(arrayLength)
822
843
  let index = -1
823
844
  while (++index < arrayLength) {
824
-
825
- const resultItem = mapper(array[index])
845
+ const resultItem = f(array[index])
826
846
  if (isPromise(resultItem)) {
827
847
  const promises = new Set(),
828
848
  selfDeletingPromise = resultItem.then(
@@ -830,13 +850,167 @@ const arrayMapPool = function (array, mapper, concurrentLimit) {
830
850
  promises.add(selfDeletingPromise)
831
851
  result[index] = selfDeletingPromise
832
852
  return arrayMapPoolAsync(
833
- array, mapper, concurrentLimit, result, index, promises)
853
+ array, f, concurrency, result, index, promises)
834
854
  }
835
855
  result[index] = resultItem
836
856
  }
837
857
  return result
838
858
  }
839
859
 
860
+ const stringMapPool = function (s, concurrency, f) {
861
+ const result = arrayMapPool(s, concurrency, f)
862
+ return isPromise(result)
863
+ ? result.then(curry3(callPropUnary, __, 'join', ''))
864
+ : result.join('')
865
+ }
866
+
867
+ const _setMapPoolAsync = async function (
868
+ s, iterator, concurrency, f, result, promises,
869
+ ) {
870
+ let iteration = iterator.next()
871
+ while (!iteration.done) {
872
+ if (promises.size >= concurrency) {
873
+ await promiseRace(promises)
874
+ }
875
+ const resultItem = f(iteration.value, iteration.value, s)
876
+ if (isPromise(resultItem)) {
877
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
878
+ promises.delete(selfDeletingPromise)
879
+ result.add(resolvedValue)
880
+ })
881
+ promises.add(selfDeletingPromise)
882
+ } else {
883
+ result.add(resultItem)
884
+ }
885
+ iteration = iterator.next()
886
+ }
887
+ if (promises.size > 0) {
888
+ await promiseAll(promises)
889
+ }
890
+ return result
891
+ }
892
+
893
+ const setMapPool = function (s, concurrency, f) {
894
+ const result = new Set()
895
+ const iterator = s[symbolIterator]()
896
+ let iteration = iterator.next()
897
+ while (!iteration.done) {
898
+ const resultItem = f(iteration.value, iteration.value, s)
899
+ if (isPromise(resultItem)) {
900
+ const promises = new Set()
901
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
902
+ promises.delete(selfDeletingPromise)
903
+ result.add(resolvedValue)
904
+ })
905
+ promises.add(selfDeletingPromise)
906
+ return _setMapPoolAsync(s, iterator, concurrency, f, result, promises)
907
+ }
908
+ result.add(resultItem)
909
+ iteration = iterator.next()
910
+ }
911
+ return result
912
+ }
913
+
914
+ const _mapMapPoolAsync = async function (
915
+ m, iterator, concurrency, f, result, promises,
916
+ ) {
917
+ let iteration = iterator.next()
918
+ while (!iteration.done) {
919
+ if (promises.size >= concurrency) {
920
+ await promiseRace(promises)
921
+ }
922
+ const key = iteration.value[0]
923
+ const resultItem = f(iteration.value[1], key, m)
924
+ if (isPromise(resultItem)) {
925
+ result.set(key, resultItem)
926
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
927
+ promises.delete(selfDeletingPromise)
928
+ result.set(key, resolvedValue)
929
+ })
930
+ promises.add(selfDeletingPromise)
931
+ } else {
932
+ result.set(key, resultItem)
933
+ }
934
+ iteration = iterator.next()
935
+ }
936
+ if (promises.size > 0) {
937
+ await promiseAll(promises)
938
+ }
939
+ return result
940
+ }
941
+
942
+ const mapMapPool = function (m, concurrency, f) {
943
+ const result = new Map()
944
+ const iterator = m[symbolIterator]()
945
+ let iteration = iterator.next()
946
+ while (!iteration.done) {
947
+ const key = iteration.value[0]
948
+ const resultItem = f(iteration.value[1], key, m)
949
+ if (isPromise(resultItem)) {
950
+ const promises = new Set()
951
+ result.set(key, resultItem)
952
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
953
+ promises.delete(selfDeletingPromise)
954
+ result.set(key, resolvedValue)
955
+ })
956
+ promises.add(selfDeletingPromise)
957
+ return _mapMapPoolAsync(m, iterator, concurrency, f, result, promises)
958
+ }
959
+ result.set(key, resultItem)
960
+ iteration = iterator.next()
961
+ }
962
+ return result
963
+ }
964
+
965
+ const _objectMapPoolAsync = async function (
966
+ o, concurrency, f, result, doneKeys, promises,
967
+ ) {
968
+ for (const key in o) {
969
+ if (key in doneKeys) {
970
+ continue
971
+ }
972
+ if (promises.size >= concurrency) {
973
+ await promiseRace(promises)
974
+ }
975
+ const resultItem = f(o[key], key, o)
976
+ if (isPromise(resultItem)) {
977
+ result[key] = resultItem
978
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
979
+ promises.delete(selfDeletingPromise)
980
+ result[key] = resolvedValue
981
+ })
982
+ promises.add(selfDeletingPromise)
983
+ } else {
984
+ result[key] = resultItem
985
+ }
986
+ }
987
+ if (promises.size > 0) {
988
+ await promiseAll(promises)
989
+ }
990
+ return result
991
+ }
992
+
993
+ const objectMapPool = function (o, concurrency, f) {
994
+ const result = {}
995
+ const doneKeys = {}
996
+ for (const key in o) {
997
+ doneKeys[key] = true
998
+ const resultItem = f(o[key], key, o)
999
+ if (isPromise(resultItem)) {
1000
+ const promises = new Set()
1001
+ result[key] = resultItem
1002
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
1003
+ promises.delete(selfDeletingPromise)
1004
+ result[key] = resolvedValue
1005
+ })
1006
+ promises.add(selfDeletingPromise)
1007
+ return _objectMapPoolAsync(o, concurrency, f, result, doneKeys, promises)
1008
+ }
1009
+ result[key] = resultItem
1010
+ }
1011
+ return result
1012
+ }
1013
+
840
1014
  const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
841
1015
  const argsLength = args.length,
842
1016
  curriedArgsLength = curriedArgs.length,
@@ -972,7 +1146,7 @@ const _map = function (value, mapper) {
972
1146
  }
973
1147
 
974
1148
  const map = function (arg0, arg1) {
975
- if (typeof arg0 == 'function') {
1149
+ if (arg1 == null) {
976
1150
  return curry2(_map, __, arg0)
977
1151
  }
978
1152
  return isPromise(arg0)
@@ -995,7 +1169,7 @@ const _mapEntries = (value, mapper) => {
995
1169
  }
996
1170
 
997
1171
  map.entries = function mapEntries(arg0, arg1) {
998
- if (typeof arg0 == 'function') {
1172
+ if (arg1 == null) {
999
1173
  return curry2(_mapEntries, __, arg0)
1000
1174
  }
1001
1175
  return isPromise(arg0)
@@ -1027,7 +1201,7 @@ const _mapSeries = function (collection, f) {
1027
1201
  }
1028
1202
 
1029
1203
  map.series = function mapSeries(arg0, arg1) {
1030
- if (typeof arg0 == 'function') {
1204
+ if (arg1 == null) {
1031
1205
  return curry2(_mapSeries, __, arg0)
1032
1206
  }
1033
1207
  return isPromise(arg0)
@@ -1035,11 +1209,35 @@ map.series = function mapSeries(arg0, arg1) {
1035
1209
  : _mapSeries(arg0, arg1)
1036
1210
  }
1037
1211
 
1038
- map.pool = (concurrencyLimit, mapper) => function concurrentPoolMapping(value) {
1039
- if (isArray(value)) {
1040
- return arrayMapPool(value, mapper, concurrencyLimit)
1212
+ const _mapPool = function (collection, concurrency, f) {
1213
+ if (isArray(collection)) {
1214
+ return arrayMapPool(collection, concurrency, f)
1215
+ }
1216
+ if (collection == null) {
1217
+ throw new TypeError(`invalid collection ${collection}`)
1218
+ }
1219
+ if (typeof collection == 'string' || collection.constructor == String) {
1220
+ return stringMapPool(collection, concurrency, f)
1221
+ }
1222
+ if (collection.constructor == Set) {
1223
+ return setMapPool(collection, concurrency, f)
1224
+ }
1225
+ if (collection.constructor == Map) {
1226
+ return mapMapPool(collection, concurrency, f)
1227
+ }
1228
+ if (collection.constructor == Object) {
1229
+ return objectMapPool(collection, concurrency, f)
1230
+ }
1231
+ throw new TypeError(`invalid collection ${collection}`)
1232
+ }
1233
+
1234
+ map.pool = function mapPool(arg0, arg1, arg2) {
1235
+ if (arg2 == null) {
1236
+ return curry3(_mapPool, __, arg0, arg1)
1041
1237
  }
1042
- throw new TypeError(`${value} is not an Array`)
1238
+ return isPromise(arg0)
1239
+ ? arg0.then(curry3(_mapPool, __, arg1, arg2))
1240
+ : _mapPool(arg0, arg1, arg2)
1043
1241
  }
1044
1242
 
1045
1243
  const FilteringIterator = (iterator, predicate) => ({
@@ -2146,7 +2344,8 @@ const _forEach = function (collection, callback) {
2146
2344
  return collection
2147
2345
  }
2148
2346
  if (typeof collection.forEach == 'function') {
2149
- return collection.forEach(callback)
2347
+ collection.forEach(callback)
2348
+ return collection
2150
2349
  }
2151
2350
  if (typeof collection[symbolIterator] == 'function') {
2152
2351
  return iteratorForEach(collection[symbolIterator](), callback)
package/dist/set.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/set.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.
package/dist/set.min.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.
package/dist/set.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/some.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/some.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.
package/dist/some.min.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.
package/dist/some.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.
@@ -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.