rubico 2.4.2 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/README.md +3 -0
  2. package/_internal/mapMapSeries.js +62 -0
  3. package/_internal/objectForEachSeries.js +6 -4
  4. package/_internal/objectMapSeries.js +61 -0
  5. package/_internal/setAdd.js +14 -0
  6. package/_internal/setMapSeries.js +61 -0
  7. package/_internal/stringMap.js +1 -1
  8. package/_internal/stringMapSeries.js +31 -0
  9. package/dist/Transducer.es.js +1 -1
  10. package/dist/Transducer.es.min.js +1 -1
  11. package/dist/Transducer.js +1 -1
  12. package/dist/Transducer.min.js +1 -1
  13. package/dist/Transducer.mjs +1 -1
  14. package/dist/__.es.js +1 -1
  15. package/dist/__.es.min.js +1 -1
  16. package/dist/__.js +1 -1
  17. package/dist/__.min.js +1 -1
  18. package/dist/__.mjs +1 -1
  19. package/dist/all.es.js +1 -1
  20. package/dist/all.es.min.js +1 -1
  21. package/dist/all.js +1 -1
  22. package/dist/all.min.js +1 -1
  23. package/dist/all.mjs +1 -1
  24. package/dist/always.es.js +1 -1
  25. package/dist/always.es.min.js +1 -1
  26. package/dist/always.js +1 -1
  27. package/dist/always.min.js +1 -1
  28. package/dist/always.mjs +1 -1
  29. package/dist/and.es.js +1 -1
  30. package/dist/and.es.min.js +1 -1
  31. package/dist/and.js +1 -1
  32. package/dist/and.min.js +1 -1
  33. package/dist/and.mjs +1 -1
  34. package/dist/assign.es.js +1 -1
  35. package/dist/assign.es.min.js +1 -1
  36. package/dist/assign.js +1 -1
  37. package/dist/assign.min.js +1 -1
  38. package/dist/assign.mjs +1 -1
  39. package/dist/compose.es.js +1 -1
  40. package/dist/compose.es.min.js +1 -1
  41. package/dist/compose.js +1 -1
  42. package/dist/compose.min.js +1 -1
  43. package/dist/compose.mjs +1 -1
  44. package/dist/curry.es.js +1 -1
  45. package/dist/curry.es.min.js +1 -1
  46. package/dist/curry.js +1 -1
  47. package/dist/curry.min.js +1 -1
  48. package/dist/curry.mjs +1 -1
  49. package/dist/eq.es.js +1 -1
  50. package/dist/eq.es.min.js +1 -1
  51. package/dist/eq.js +1 -1
  52. package/dist/eq.min.js +1 -1
  53. package/dist/eq.mjs +1 -1
  54. package/dist/every.es.js +1 -1
  55. package/dist/every.es.min.js +1 -1
  56. package/dist/every.js +1 -1
  57. package/dist/every.min.js +1 -1
  58. package/dist/every.mjs +1 -1
  59. package/dist/filter.es.js +1 -1
  60. package/dist/filter.es.min.js +1 -1
  61. package/dist/filter.js +1 -1
  62. package/dist/filter.min.js +1 -1
  63. package/dist/filter.mjs +1 -1
  64. package/dist/flatMap.es.js +1 -1
  65. package/dist/flatMap.es.min.js +1 -1
  66. package/dist/flatMap.js +1 -1
  67. package/dist/flatMap.min.js +1 -1
  68. package/dist/flatMap.mjs +1 -1
  69. package/dist/forEach.es.js +9 -7
  70. package/dist/forEach.es.min.js +2 -2
  71. package/dist/forEach.js +9 -7
  72. package/dist/forEach.min.js +2 -2
  73. package/dist/forEach.mjs +9 -7
  74. package/dist/get.es.js +1 -1
  75. package/dist/get.es.min.js +1 -1
  76. package/dist/get.js +1 -1
  77. package/dist/get.min.js +1 -1
  78. package/dist/get.mjs +1 -1
  79. package/dist/gt.es.js +1 -1
  80. package/dist/gt.es.min.js +1 -1
  81. package/dist/gt.js +1 -1
  82. package/dist/gt.min.js +1 -1
  83. package/dist/gt.mjs +1 -1
  84. package/dist/gte.es.js +1 -1
  85. package/dist/gte.es.min.js +1 -1
  86. package/dist/gte.js +1 -1
  87. package/dist/gte.min.js +1 -1
  88. package/dist/gte.mjs +1 -1
  89. package/dist/lt.es.js +1 -1
  90. package/dist/lt.es.min.js +1 -1
  91. package/dist/lt.js +1 -1
  92. package/dist/lt.min.js +1 -1
  93. package/dist/lt.mjs +1 -1
  94. package/dist/lte.es.js +1 -1
  95. package/dist/lte.es.min.js +1 -1
  96. package/dist/lte.js +1 -1
  97. package/dist/lte.min.js +1 -1
  98. package/dist/lte.mjs +1 -1
  99. package/dist/map.es.js +163 -9
  100. package/dist/map.es.min.js +2 -2
  101. package/dist/map.js +163 -9
  102. package/dist/map.min.js +2 -2
  103. package/dist/map.mjs +163 -9
  104. package/dist/not.es.js +1 -1
  105. package/dist/not.es.min.js +1 -1
  106. package/dist/not.js +1 -1
  107. package/dist/not.min.js +1 -1
  108. package/dist/not.mjs +1 -1
  109. package/dist/omit.es.js +1 -1
  110. package/dist/omit.es.min.js +1 -1
  111. package/dist/omit.js +1 -1
  112. package/dist/omit.min.js +1 -1
  113. package/dist/omit.mjs +1 -1
  114. package/dist/or.es.js +1 -1
  115. package/dist/or.es.min.js +1 -1
  116. package/dist/or.js +1 -1
  117. package/dist/or.min.js +1 -1
  118. package/dist/or.mjs +1 -1
  119. package/dist/pick.es.js +1 -1
  120. package/dist/pick.es.min.js +1 -1
  121. package/dist/pick.js +1 -1
  122. package/dist/pick.min.js +1 -1
  123. package/dist/pick.mjs +1 -1
  124. package/dist/pipe.es.js +1 -1
  125. package/dist/pipe.es.min.js +1 -1
  126. package/dist/pipe.js +1 -1
  127. package/dist/pipe.min.js +1 -1
  128. package/dist/pipe.mjs +1 -1
  129. package/dist/reduce.es.js +1 -1
  130. package/dist/reduce.es.min.js +1 -1
  131. package/dist/reduce.js +1 -1
  132. package/dist/reduce.min.js +1 -1
  133. package/dist/reduce.mjs +1 -1
  134. package/dist/rubico.es.js +167 -19
  135. package/dist/rubico.es.min.js +2 -2
  136. package/dist/rubico.global.js +167 -19
  137. package/dist/rubico.global.min.js +2 -2
  138. package/dist/rubico.js +167 -19
  139. package/dist/rubico.min.js +2 -2
  140. package/dist/rubico.mjs +167 -19
  141. package/dist/set.es.js +1 -1
  142. package/dist/set.es.min.js +1 -1
  143. package/dist/set.js +1 -1
  144. package/dist/set.min.js +1 -1
  145. package/dist/set.mjs +1 -1
  146. package/dist/some.es.js +1 -1
  147. package/dist/some.es.min.js +1 -1
  148. package/dist/some.js +1 -1
  149. package/dist/some.min.js +1 -1
  150. package/dist/some.mjs +1 -1
  151. package/dist/switchCase.es.js +1 -1
  152. package/dist/switchCase.es.min.js +1 -1
  153. package/dist/switchCase.js +1 -1
  154. package/dist/switchCase.min.js +1 -1
  155. package/dist/switchCase.mjs +1 -1
  156. package/dist/tap.es.js +1 -1
  157. package/dist/tap.es.min.js +1 -1
  158. package/dist/tap.js +1 -1
  159. package/dist/tap.min.js +1 -1
  160. package/dist/tap.mjs +1 -1
  161. package/dist/thunkify.es.js +1 -1
  162. package/dist/thunkify.es.min.js +1 -1
  163. package/dist/thunkify.js +1 -1
  164. package/dist/thunkify.min.js +1 -1
  165. package/dist/thunkify.mjs +1 -1
  166. package/dist/transform.es.js +1 -1
  167. package/dist/transform.es.min.js +1 -1
  168. package/dist/transform.js +1 -1
  169. package/dist/transform.min.js +1 -1
  170. package/dist/transform.mjs +1 -1
  171. package/dist/tryCatch.es.js +1 -1
  172. package/dist/tryCatch.es.min.js +1 -1
  173. package/dist/tryCatch.js +1 -1
  174. package/dist/tryCatch.min.js +1 -1
  175. package/dist/tryCatch.mjs +1 -1
  176. package/dist/x/append.es.js +1 -1
  177. package/dist/x/append.es.min.js +1 -1
  178. package/dist/x/append.js +1 -1
  179. package/dist/x/append.min.js +1 -1
  180. package/dist/x/append.mjs +1 -1
  181. package/dist/x/callProp.es.js +1 -1
  182. package/dist/x/callProp.es.min.js +1 -1
  183. package/dist/x/callProp.js +1 -1
  184. package/dist/x/callProp.min.js +1 -1
  185. package/dist/x/callProp.mjs +1 -1
  186. package/dist/x/defaultsDeep.es.js +1 -1
  187. package/dist/x/defaultsDeep.es.min.js +1 -1
  188. package/dist/x/defaultsDeep.js +1 -1
  189. package/dist/x/defaultsDeep.min.js +1 -1
  190. package/dist/x/defaultsDeep.mjs +1 -1
  191. package/dist/x/differenceWith.es.js +1 -1
  192. package/dist/x/differenceWith.es.min.js +1 -1
  193. package/dist/x/differenceWith.js +1 -1
  194. package/dist/x/differenceWith.min.js +1 -1
  195. package/dist/x/differenceWith.mjs +1 -1
  196. package/dist/x/filterOut.es.js +1 -1
  197. package/dist/x/filterOut.es.min.js +1 -1
  198. package/dist/x/filterOut.js +1 -1
  199. package/dist/x/filterOut.min.js +1 -1
  200. package/dist/x/filterOut.mjs +1 -1
  201. package/dist/x/find.es.js +1 -1
  202. package/dist/x/find.es.min.js +1 -1
  203. package/dist/x/find.js +1 -1
  204. package/dist/x/find.min.js +1 -1
  205. package/dist/x/find.mjs +1 -1
  206. package/dist/x/findIndex.es.js +1 -1
  207. package/dist/x/findIndex.es.min.js +1 -1
  208. package/dist/x/findIndex.js +1 -1
  209. package/dist/x/findIndex.min.js +1 -1
  210. package/dist/x/findIndex.mjs +1 -1
  211. package/dist/x/first.es.js +1 -1
  212. package/dist/x/first.es.min.js +1 -1
  213. package/dist/x/first.js +1 -1
  214. package/dist/x/first.min.js +1 -1
  215. package/dist/x/first.mjs +1 -1
  216. package/dist/x/flatten.es.js +1 -1
  217. package/dist/x/flatten.es.min.js +1 -1
  218. package/dist/x/flatten.js +1 -1
  219. package/dist/x/flatten.min.js +1 -1
  220. package/dist/x/flatten.mjs +1 -1
  221. package/dist/x/groupBy.es.js +1 -1
  222. package/dist/x/groupBy.es.min.js +1 -1
  223. package/dist/x/groupBy.js +1 -1
  224. package/dist/x/groupBy.min.js +1 -1
  225. package/dist/x/groupBy.mjs +1 -1
  226. package/dist/x/has.es.js +1 -1
  227. package/dist/x/has.es.min.js +1 -1
  228. package/dist/x/has.js +1 -1
  229. package/dist/x/has.min.js +1 -1
  230. package/dist/x/has.mjs +1 -1
  231. package/dist/x/identity.es.js +1 -1
  232. package/dist/x/identity.es.min.js +1 -1
  233. package/dist/x/identity.js +1 -1
  234. package/dist/x/identity.min.js +1 -1
  235. package/dist/x/identity.mjs +1 -1
  236. package/dist/x/includes.es.js +1 -1
  237. package/dist/x/includes.es.min.js +1 -1
  238. package/dist/x/includes.js +1 -1
  239. package/dist/x/includes.min.js +1 -1
  240. package/dist/x/includes.mjs +1 -1
  241. package/dist/x/isDeepEqual.es.js +1 -1
  242. package/dist/x/isDeepEqual.es.min.js +1 -1
  243. package/dist/x/isDeepEqual.js +1 -1
  244. package/dist/x/isDeepEqual.min.js +1 -1
  245. package/dist/x/isDeepEqual.mjs +1 -1
  246. package/dist/x/isEmpty.es.js +1 -1
  247. package/dist/x/isEmpty.es.min.js +1 -1
  248. package/dist/x/isEmpty.js +1 -1
  249. package/dist/x/isEmpty.min.js +1 -1
  250. package/dist/x/isEmpty.mjs +1 -1
  251. package/dist/x/isEqual.es.js +1 -1
  252. package/dist/x/isEqual.es.min.js +1 -1
  253. package/dist/x/isEqual.js +1 -1
  254. package/dist/x/isEqual.min.js +1 -1
  255. package/dist/x/isEqual.mjs +1 -1
  256. package/dist/x/isFunction.es.js +1 -1
  257. package/dist/x/isFunction.es.min.js +1 -1
  258. package/dist/x/isFunction.js +1 -1
  259. package/dist/x/isFunction.min.js +1 -1
  260. package/dist/x/isFunction.mjs +1 -1
  261. package/dist/x/isIn.es.js +1 -1
  262. package/dist/x/isIn.es.min.js +1 -1
  263. package/dist/x/isIn.js +1 -1
  264. package/dist/x/isIn.min.js +1 -1
  265. package/dist/x/isIn.mjs +1 -1
  266. package/dist/x/isObject.es.js +1 -1
  267. package/dist/x/isObject.es.min.js +1 -1
  268. package/dist/x/isObject.js +1 -1
  269. package/dist/x/isObject.min.js +1 -1
  270. package/dist/x/isObject.mjs +1 -1
  271. package/dist/x/isString.es.js +1 -1
  272. package/dist/x/isString.es.min.js +1 -1
  273. package/dist/x/isString.js +1 -1
  274. package/dist/x/isString.min.js +1 -1
  275. package/dist/x/isString.mjs +1 -1
  276. package/dist/x/keys.es.js +1 -1
  277. package/dist/x/keys.es.min.js +1 -1
  278. package/dist/x/keys.js +1 -1
  279. package/dist/x/keys.min.js +1 -1
  280. package/dist/x/keys.mjs +1 -1
  281. package/dist/x/last.es.js +1 -1
  282. package/dist/x/last.es.min.js +1 -1
  283. package/dist/x/last.js +1 -1
  284. package/dist/x/last.min.js +1 -1
  285. package/dist/x/last.mjs +1 -1
  286. package/dist/x/maxBy.es.js +1 -1
  287. package/dist/x/maxBy.es.min.js +1 -1
  288. package/dist/x/maxBy.js +1 -1
  289. package/dist/x/maxBy.min.js +1 -1
  290. package/dist/x/maxBy.mjs +1 -1
  291. package/dist/x/noop.es.js +1 -1
  292. package/dist/x/noop.es.min.js +1 -1
  293. package/dist/x/noop.js +1 -1
  294. package/dist/x/noop.min.js +1 -1
  295. package/dist/x/noop.mjs +1 -1
  296. package/dist/x/pluck.es.js +163 -9
  297. package/dist/x/pluck.es.min.js +2 -2
  298. package/dist/x/pluck.js +163 -9
  299. package/dist/x/pluck.min.js +2 -2
  300. package/dist/x/pluck.mjs +163 -9
  301. package/dist/x/prepend.es.js +1 -1
  302. package/dist/x/prepend.es.min.js +1 -1
  303. package/dist/x/prepend.js +1 -1
  304. package/dist/x/prepend.min.js +1 -1
  305. package/dist/x/prepend.mjs +1 -1
  306. package/dist/x/size.es.js +1 -1
  307. package/dist/x/size.es.min.js +1 -1
  308. package/dist/x/size.js +1 -1
  309. package/dist/x/size.min.js +1 -1
  310. package/dist/x/size.mjs +1 -1
  311. package/dist/x/trace.es.js +1 -1
  312. package/dist/x/trace.es.min.js +1 -1
  313. package/dist/x/trace.js +1 -1
  314. package/dist/x/trace.min.js +1 -1
  315. package/dist/x/trace.mjs +1 -1
  316. package/dist/x/unionWith.es.js +1 -1
  317. package/dist/x/unionWith.es.min.js +1 -1
  318. package/dist/x/unionWith.js +1 -1
  319. package/dist/x/unionWith.min.js +1 -1
  320. package/dist/x/unionWith.mjs +1 -1
  321. package/dist/x/uniq.es.js +1 -1
  322. package/dist/x/uniq.es.min.js +1 -1
  323. package/dist/x/uniq.js +1 -1
  324. package/dist/x/uniq.min.js +1 -1
  325. package/dist/x/uniq.mjs +1 -1
  326. package/dist/x/unless.es.js +1 -1
  327. package/dist/x/unless.es.min.js +1 -1
  328. package/dist/x/unless.js +1 -1
  329. package/dist/x/unless.min.js +1 -1
  330. package/dist/x/unless.mjs +1 -1
  331. package/dist/x/values.es.js +1 -1
  332. package/dist/x/values.es.min.js +1 -1
  333. package/dist/x/values.js +1 -1
  334. package/dist/x/values.min.js +1 -1
  335. package/dist/x/values.mjs +1 -1
  336. package/dist/x/when.es.js +1 -1
  337. package/dist/x/when.es.min.js +1 -1
  338. package/dist/x/when.js +1 -1
  339. package/dist/x/when.min.js +1 -1
  340. package/dist/x/when.mjs +1 -1
  341. package/es.js +167 -19
  342. package/forEach.js +2 -2
  343. package/index.js +167 -19
  344. package/map.js +62 -7
  345. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.5.0
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.
@@ -292,6 +292,139 @@ const arrayMapSeries = function (array, mapper) {
292
292
  return result
293
293
  }
294
294
 
295
+ const stringMapSeries = function (string, mapper) {
296
+ const result = arrayMapSeries(string, mapper)
297
+ return isPromise(result)
298
+ ? result.then(curry3(callPropUnary, __, 'join', ''))
299
+ : result.join('')
300
+ }
301
+
302
+ const thunkify4 = (func, arg0, arg1, arg2, arg3) => function thunk() {
303
+ return func(arg0, arg1, arg2, arg3)
304
+ }
305
+
306
+ // _objectMapSeriesAsync(
307
+ // object Object,
308
+ // f function,
309
+ // result Object,
310
+ // doneKeys Object
311
+ // ) -> Promise<object>
312
+ const _objectMapSeriesAsync = async function (object, f, result, doneKeys) {
313
+ for (const key in object) {
314
+ if (key in doneKeys) {
315
+ continue
316
+ }
317
+ let resultItem = f(object[key])
318
+ if (isPromise(resultItem)) {
319
+ resultItem = await resultItem
320
+ }
321
+ result[key] = resultItem
322
+ }
323
+ return result
324
+ }
325
+
326
+ const objectMapSeries = function (object, f) {
327
+ const result = {}
328
+ const doneKeys = {}
329
+ for (const key in object) {
330
+ doneKeys[key] = true
331
+ const resultItem = f(object[key], key, object)
332
+ if (isPromise(resultItem)) {
333
+ return resultItem.then(funcConcat(
334
+ curry3(objectSet, result, key, __),
335
+ thunkify4(_objectMapSeriesAsync, object, f, result, doneKeys),
336
+ ))
337
+ }
338
+ }
339
+ return result
340
+ }
341
+
342
+ const thunkify3 = (func, arg0, arg1, arg2) => function thunk() {
343
+ return func(arg0, arg1, arg2)
344
+ }
345
+
346
+ const setAdd = function (set, value) {
347
+ set.add(value)
348
+ return set
349
+ }
350
+
351
+ // _setMapSeriesAsync(
352
+ // iterator Iterator,
353
+ // f function,
354
+ // result Set,
355
+ // ) -> Promise<Set>
356
+ const _setMapSeriesAsync = async function (iterator, f, result) {
357
+ let iteration = iterator.next()
358
+ while (!iteration.done) {
359
+ let resultItem = f(iteration.value)
360
+ if (isPromise(resultItem)) {
361
+ resultItem = await resultItem
362
+ }
363
+ result.add(resultItem)
364
+ iteration = iterator.next()
365
+ }
366
+ return result
367
+ }
368
+
369
+ const setMapSeries = function (set, f) {
370
+ const result = new Set()
371
+ const iterator = set[symbolIterator]()
372
+ let iteration = iterator.next()
373
+ while (!iteration.done) {
374
+ const resultItem = f(iteration.value)
375
+ if (isPromise(resultItem)) {
376
+ return resultItem.then(funcConcat(
377
+ curry2(setAdd, result, __),
378
+ thunkify3(_setMapSeriesAsync, iterator, f, result),
379
+ ))
380
+ }
381
+ result.add(resultItem)
382
+ iteration = iterator.next()
383
+ }
384
+ return result
385
+ }
386
+
387
+ const mapSet = function setting(source, key, value) {
388
+ return source.set(key, value)
389
+ }
390
+
391
+ // _mapMapSeriesAsync(
392
+ // iterator Iterator,
393
+ // f function,
394
+ // result Map,
395
+ // ) -> Promise<Map>
396
+ const _mapMapSeriesAsync = async function (iterator, f, result) {
397
+ let iteration = iterator.next()
398
+ while (!iteration.done) {
399
+ let resultItem = f(iteration.value[1])
400
+ if (isPromise(resultItem)) {
401
+ resultItem = await resultItem
402
+ }
403
+ result.set(iteration.value[0], resultItem)
404
+ iteration = iterator.next()
405
+ }
406
+ return result
407
+ }
408
+
409
+ const mapMapSeries = function (map, f) {
410
+ const result = new Map()
411
+ const iterator = map[symbolIterator]()
412
+ let iteration = iterator.next()
413
+ while (!iteration.done) {
414
+ const key = iteration.value[0]
415
+ const resultItem = f(iteration.value[1])
416
+ if (isPromise(resultItem)) {
417
+ return resultItem.then(funcConcat(
418
+ curry3(mapSet, result, key, __),
419
+ thunkify3(_mapMapSeriesAsync, iterator, f, result),
420
+ ))
421
+ }
422
+ result.set(key, resultItem)
423
+ iteration = iterator.next()
424
+ }
425
+ return result
426
+ }
427
+
295
428
  const tapSync = func => function tapping(...args) {
296
429
  func(...args)
297
430
  return args[0]
@@ -420,10 +553,6 @@ const objectMapEntries = function (object, mapper) {
420
553
  : promiseAll(promises).then(always(result))
421
554
  }
422
555
 
423
- const mapSet = function setting(source, key, value) {
424
- return source.set(key, value)
425
- }
426
-
427
556
  // (mapper function, result Map, promises Array<Promise>) => (key any, value any) => ()
428
557
  const mapMapEntriesForEachCallback = (
429
558
  mapper, result, promises,
@@ -512,11 +641,36 @@ map.entries = function mapEntries(arg0, arg1) {
512
641
  : _mapEntries(arg0, arg1)
513
642
  }
514
643
 
515
- map.series = mapper => function mappingInSeries(value) {
516
- if (isArray(value)) {
517
- return arrayMapSeries(value, mapper)
644
+ const _mapSeries = function (collection, f) {
645
+ if (isArray(collection)) {
646
+ return arrayMapSeries(collection, f)
518
647
  }
519
- throw new TypeError(`${value} is not an Array`)
648
+ if (collection == null) {
649
+ throw new TypeError(`invalid collection ${collection}`)
650
+ }
651
+
652
+ if (typeof collection == 'string' || collection.constructor == String) {
653
+ return stringMapSeries(collection, f)
654
+ }
655
+ if (collection.constructor == Set) {
656
+ return setMapSeries(collection, f)
657
+ }
658
+ if (collection.constructor == Map) {
659
+ return mapMapSeries(collection, f)
660
+ }
661
+ if (collection.constructor == Object) {
662
+ return objectMapSeries(collection, f)
663
+ }
664
+ throw new TypeError(`invalid collection ${collection}`)
665
+ }
666
+
667
+ map.series = function mapSeries(arg0, arg1) {
668
+ if (typeof arg0 == 'function') {
669
+ return curry2(_mapSeries, __, arg0)
670
+ }
671
+ return isPromise(arg0)
672
+ ? arg0.then(curry2(_mapSeries, __, arg1))
673
+ : _mapSeries(arg0, arg1)
520
674
  }
521
675
 
522
676
  map.pool = (concurrencyLimit, mapper) => function concurrentPoolMapping(value) {
@@ -1,7 +1,7 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.5.0
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
- const isPromise=r=>null!=r&&"function"==typeof r.then,funcConcat=(r,t)=>function(...e){const n=r(...e);return isPromise(n)?n.then(t):t(n)},symbolIterator=Symbol.iterator,MappingIterator=(r,t)=>({toString:()=>"[object MappingIterator]",[symbolIterator](){return this},next(){const e=r.next();return e.done?e:{value:t(e.value),done:!1}}}),NextIteration=r=>({value:r,done:!1}),symbolAsyncIterator=Symbol.asyncIterator,MappingAsyncIterator=(r,t)=>({[symbolAsyncIterator](){return this},async next(){const e=await r.next();if(e.done)return e;const n=t(e.value);return isPromise(n)?n.then(NextIteration):{value:n,done:!1}}}),__=Symbol.for("placeholder"),curry2ResolveArg0=(r,t)=>function(e){return r(e,t)},curry2ResolveArg1=(r,t)=>function(e){return r(t,e)},curry2=function(r,t,e){return t==__?curry2ResolveArg0(r,e):curry2ResolveArg1(r,t)},isArray=Array.isArray,isObject=r=>{if(null==r)return!1;const t=typeof r;return"object"==t||"function"==t},promiseAll=Promise.all.bind(Promise),arrayMap=function(r,t){const e=r.length,n=Array(e);let o=-1,s=!1;for(;++o<e;){const e=t(r[o],o,r);isPromise(e)&&(s=!0),n[o]=e}return s?promiseAll(n):n},curry3ResolveArg0=(r,t,e)=>function(n){return r(n,t,e)},curry3ResolveArg1=(r,t,e)=>function(n){return r(t,n,e)},curry3ResolveArg2=(r,t,e)=>function(n){return r(t,e,n)},curry3=function(r,t,e,n){return t==__?curry3ResolveArg0(r,e,n):e==__?curry3ResolveArg1(r,t,n):curry3ResolveArg2(r,t,e)},callPropUnary=(r,t,e)=>r[t](e),stringMap=function(r,t){const e=arrayMap(r,t);return isPromise(e)?e.then(curry3(callPropUnary,__,"join","")):e.join("")},always=r=>function(){return r},setMap=function(r,t){const e=new Set,n=[];for(const o of r){const s=t(o,o,r);isPromise(s)?n.push(s.then(curry3(callPropUnary,e,"add",__))):e.add(s)}return 0==n.length?e:promiseAll(n).then(always(e))},curry4ResolveArg0=(r,t,e,n)=>function(o){return r(o,t,e,n)},curry4ResolveArg1=(r,t,e,n)=>function(o){return r(t,o,e,n)},curry4ResolveArg2=(r,t,e,n)=>function(o){return r(t,e,o,n)},curry4ResolveArg3=(r,t,e,n)=>function(o){return r(t,e,n,o)},curry4=function(r,t,e,n,o){return t==__?curry4ResolveArg0(r,e,n,o):e==__?curry4ResolveArg1(r,t,n,o):n==__?curry4ResolveArg2(r,t,e,o):curry4ResolveArg3(r,t,e,n)},callPropBinary=(r,t,e,n)=>r[t](e,n),mapMap=function(r,t){const e=new Map,n=[];for(const[o,s]of r){const c=t(s,o,r);isPromise(c)?n.push(c.then(curry4(callPropBinary,e,"set",o,__))):e.set(o,c)}return 0==n.length?e:promiseAll(n).then(always(e))},promiseObjectAllExecutor=r=>function(t){const e={};let n=0;for(const o in r){const s=r[o];isPromise(s)?(n+=1,s.then((r=>function(o){e[r]=o,n-=1,0==n&&t(e)})(o))):e[o]=s}0==n&&t(e)},promiseObjectAll=r=>new Promise(promiseObjectAllExecutor(r)),objectMap=function(r,t){const e={};let n=!1;for(const o in r){const s=t(r[o],o,r);isPromise(s)&&(n=!0),e[o]=s}return n?promiseObjectAll(e):e},objectSet=function(r,t,e){return r[t]=e,r},arrayMapSeriesAsync=async function(r,t,e,n){const o=r.length;for(;++n<o;){const o=t(r[n],n);e[n]=isPromise(o)?await o:o}return e},arrayMapSeries=function(r,t){const e=r.length,n=Array(e);let o=-1;for(;++o<e;){const e=t(r[o],o);if(isPromise(e))return e.then(funcConcat(curry3(objectSet,n,o,__),curry4(arrayMapSeriesAsync,r,t,__,o)));n[o]=e}return n},tapSync=r=>function(...t){return r(...t),t[0]},promiseRace=Promise.race.bind(Promise),arrayMapPoolAsync=async function(r,t,e,n,o,s){const c=r.length;for(;++o<c;){s.size>=e&&await promiseRace(s);const c=t(r[o]);if(isPromise(c)){const r=c.then(tapSync((()=>s.delete(r))));s.add(r),n[o]=r}else n[o]=c}return promiseAll(n)},arrayMapPool=function(r,t,e){const n=r.length,o=Array(n);let s=-1;for(;++s<n;){const n=t(r[s]);if(isPromise(n)){const c=new Set,i=n.then(tapSync((()=>c.delete(i))));return c.add(i),o[s]=i,arrayMapPoolAsync(r,t,e,o,s,c)}o[s]=n}return o},_curryArity=(r,t,e)=>function(...n){const o=e.length,s=n.length,c=[];let i=-1,a=-1,u=0;for(;++i<o;){const o=e[i];if(o==__&&(a+=1)<s){const r=n[a];r==__&&(u+=1),c.push(r)}else c.push(o);if(c.length==r)return 0==u?t(...c):curryArity(r,t,c)}for(;++a<s;){const e=n[a];if(e==__&&(u+=1),c.push(e),c.length==r)return 0==u?t(...c):curryArity(r,t,c)}return curryArity(r,t,c)},curryArity=function(r,t,e){const n=e.length;if(n<r)return _curryArity(r,t,e);let o=-1;for(;++o<n;){if(e[o]==__)return _curryArity(r,t,e)}return t(...e)},spread2=r=>function([t,e]){return r(t,e)},objectMapEntries=function(r,t){const e={},n=[];for(const o in r){const s=t([o,r[o]]);isPromise(s)?n.push(s.then(spread2(curryArity(3,objectSet,[e])))):e[s[0]]=s[1]}return 0==n.length?e:promiseAll(n).then(always(e))},mapSet=function(r,t,e){return r.set(t,e)},mapMapEntriesForEachCallback=(r,t,e)=>function(n,o){const s=r([o,n]);isPromise(s)?e.push(s.then(spread2(curryArity(3,mapSet,[t])))):t.set(s[0],s[1])},mapMapEntries=function(r,t){const e=new Map,n=[];return r.forEach(mapMapEntriesForEachCallback(t,e,n)),0==n.length?e:promiseAll(n).then(always(e))},_map=function(r,t){return isArray(r)?arrayMap(r,t):null==r?r:"function"==typeof r.then?r.then(t):"function"==typeof r.map?r.map(t):"string"==typeof r||r.constructor==String?stringMap(r,t):r.constructor==Set?setMap(r,t):r.constructor==Map?mapMap(r,t):"function"==typeof r[symbolIterator]?MappingIterator(r[symbolIterator](),t):"function"==typeof r[symbolAsyncIterator]?MappingAsyncIterator(r[symbolAsyncIterator](),t):r.constructor==Object?objectMap(r,t):t(r)},map=function(r,t){return"function"==typeof r?curry2(_map,__,r):isPromise(r)?r.then(curry2(_map,__,t)):_map(r,t)},_mapEntries=(r,t)=>{if(null==r)throw new TypeError("value is not an Object or Map");if(r.constructor==Object)return objectMapEntries(r,t);if(r.constructor==Map)return mapMapEntries(r,t);throw new TypeError("value is not an Object or Map")};map.entries=function(r,t){return"function"==typeof r?curry2(_mapEntries,__,r):isPromise(r)?r.then(curry2(_mapEntries,__,t)):_mapEntries(r,t)},map.series=r=>function(t){if(isArray(t))return arrayMapSeries(t,r);throw new TypeError(`${t} is not an Array`)},map.pool=(r,t)=>function(e){if(isArray(e))return arrayMapPool(e,t,r);throw new TypeError(`${e} is not an Array`)};const memoizeCappedUnary=function(r,t){const e=new Map,n=function(n){if(e.has(n))return e.get(n);const o=r(n);return e.set(n,o),e.size>t&&e.clear(),o};return n.cache=e,n},pathDelimiters=/[.|[|\]]+/,parsePropertyPath=function(r){const t=r.length-1,e="["==r[0],n="]"==r[t];return e&&n?r.slice(1,t).split(pathDelimiters):e?r.slice(1).split(pathDelimiters):n?r.slice(0,t).split(pathDelimiters):r.split(pathDelimiters)},memoizedCappedParsePropertyPath=memoizeCappedUnary(parsePropertyPath,500),propertyPathToArray=r=>isArray(r)?r:"string"==typeof r?memoizedCappedParsePropertyPath(r):[r],getByPath=function(r,t){const e=propertyPathToArray(t),n=e.length;let o=-1,s=r;for(;++o<n;)if(s=s[e[o]],null==s)return;return s},_get=function(r,t,e){const n=null==r?void 0:getByPath(r,t);return void 0===n?"function"==typeof e?e(r):e:n},get=function(r,t,e){return"string"==typeof r||"number"==typeof r||isArray(r)?curry3(_get,__,r,t):isPromise(r)?r.then(curry3(_get,__,t,e)):_get(r,t,e)},pluck=function(...r){const t=r.pop(),e=get(t);return 0==r.length?map(e):map(r[0],e)};export default pluck;
7
+ const isPromise=r=>null!=r&&"function"==typeof r.then,funcConcat=(r,t)=>function(...e){const n=r(...e);return isPromise(n)?n.then(t):t(n)},symbolIterator=Symbol.iterator,MappingIterator=(r,t)=>({toString:()=>"[object MappingIterator]",[symbolIterator](){return this},next(){const e=r.next();return e.done?e:{value:t(e.value),done:!1}}}),NextIteration=r=>({value:r,done:!1}),symbolAsyncIterator=Symbol.asyncIterator,MappingAsyncIterator=(r,t)=>({[symbolAsyncIterator](){return this},async next(){const e=await r.next();if(e.done)return e;const n=t(e.value);return isPromise(n)?n.then(NextIteration):{value:n,done:!1}}}),__=Symbol.for("placeholder"),curry2ResolveArg0=(r,t)=>function(e){return r(e,t)},curry2ResolveArg1=(r,t)=>function(e){return r(t,e)},curry2=function(r,t,e){return t==__?curry2ResolveArg0(r,e):curry2ResolveArg1(r,t)},isArray=Array.isArray,isObject=r=>{if(null==r)return!1;const t=typeof r;return"object"==t||"function"==t},promiseAll=Promise.all.bind(Promise),arrayMap=function(r,t){const e=r.length,n=Array(e);let o=-1,s=!1;for(;++o<e;){const e=t(r[o],o,r);isPromise(e)&&(s=!0),n[o]=e}return s?promiseAll(n):n},curry3ResolveArg0=(r,t,e)=>function(n){return r(n,t,e)},curry3ResolveArg1=(r,t,e)=>function(n){return r(t,n,e)},curry3ResolveArg2=(r,t,e)=>function(n){return r(t,e,n)},curry3=function(r,t,e,n){return t==__?curry3ResolveArg0(r,e,n):e==__?curry3ResolveArg1(r,t,n):curry3ResolveArg2(r,t,e)},callPropUnary=(r,t,e)=>r[t](e),stringMap=function(r,t){const e=arrayMap(r,t);return isPromise(e)?e.then(curry3(callPropUnary,__,"join","")):e.join("")},always=r=>function(){return r},setMap=function(r,t){const e=new Set,n=[];for(const o of r){const s=t(o,o,r);isPromise(s)?n.push(s.then(curry3(callPropUnary,e,"add",__))):e.add(s)}return 0==n.length?e:promiseAll(n).then(always(e))},curry4ResolveArg0=(r,t,e,n)=>function(o){return r(o,t,e,n)},curry4ResolveArg1=(r,t,e,n)=>function(o){return r(t,o,e,n)},curry4ResolveArg2=(r,t,e,n)=>function(o){return r(t,e,o,n)},curry4ResolveArg3=(r,t,e,n)=>function(o){return r(t,e,n,o)},curry4=function(r,t,e,n,o){return t==__?curry4ResolveArg0(r,e,n,o):e==__?curry4ResolveArg1(r,t,n,o):n==__?curry4ResolveArg2(r,t,e,o):curry4ResolveArg3(r,t,e,n)},callPropBinary=(r,t,e,n)=>r[t](e,n),mapMap=function(r,t){const e=new Map,n=[];for(const[o,s]of r){const i=t(s,o,r);isPromise(i)?n.push(i.then(curry4(callPropBinary,e,"set",o,__))):e.set(o,i)}return 0==n.length?e:promiseAll(n).then(always(e))},promiseObjectAllExecutor=r=>function(t){const e={};let n=0;for(const o in r){const s=r[o];isPromise(s)?(n+=1,s.then((r=>function(o){e[r]=o,n-=1,0==n&&t(e)})(o))):e[o]=s}0==n&&t(e)},promiseObjectAll=r=>new Promise(promiseObjectAllExecutor(r)),objectMap=function(r,t){const e={};let n=!1;for(const o in r){const s=t(r[o],o,r);isPromise(s)&&(n=!0),e[o]=s}return n?promiseObjectAll(e):e},objectSet=function(r,t,e){return r[t]=e,r},arrayMapSeriesAsync=async function(r,t,e,n){const o=r.length;for(;++n<o;){const o=t(r[n],n);e[n]=isPromise(o)?await o:o}return e},arrayMapSeries=function(r,t){const e=r.length,n=Array(e);let o=-1;for(;++o<e;){const e=t(r[o],o);if(isPromise(e))return e.then(funcConcat(curry3(objectSet,n,o,__),curry4(arrayMapSeriesAsync,r,t,__,o)));n[o]=e}return n},stringMapSeries=function(r,t){const e=arrayMapSeries(r,t);return isPromise(e)?e.then(curry3(callPropUnary,__,"join","")):e.join("")},thunkify4=(r,t,e,n,o)=>function(){return r(t,e,n,o)},_objectMapSeriesAsync=async function(r,t,e,n){for(const o in r){if(o in n)continue;let s=t(r[o]);isPromise(s)&&(s=await s),e[o]=s}return e},objectMapSeries=function(r,t){const e={},n={};for(const o in r){n[o]=!0;const s=t(r[o],o,r);if(isPromise(s))return s.then(funcConcat(curry3(objectSet,e,o,__),thunkify4(_objectMapSeriesAsync,r,t,e,n)))}return e},thunkify3=(r,t,e,n)=>function(){return r(t,e,n)},setAdd=function(r,t){return r.add(t),r},_setMapSeriesAsync=async function(r,t,e){let n=r.next();for(;!n.done;){let o=t(n.value);isPromise(o)&&(o=await o),e.add(o),n=r.next()}return e},setMapSeries=function(r,t){const e=new Set,n=r[symbolIterator]();let o=n.next();for(;!o.done;){const r=t(o.value);if(isPromise(r))return r.then(funcConcat(curry2(setAdd,e,__),thunkify3(_setMapSeriesAsync,n,t,e)));e.add(r),o=n.next()}return e},mapSet=function(r,t,e){return r.set(t,e)},_mapMapSeriesAsync=async function(r,t,e){let n=r.next();for(;!n.done;){let o=t(n.value[1]);isPromise(o)&&(o=await o),e.set(n.value[0],o),n=r.next()}return e},mapMapSeries=function(r,t){const e=new Map,n=r[symbolIterator]();let o=n.next();for(;!o.done;){const r=o.value[0],s=t(o.value[1]);if(isPromise(s))return s.then(funcConcat(curry3(mapSet,e,r,__),thunkify3(_mapMapSeriesAsync,n,t,e)));e.set(r,s),o=n.next()}return e},tapSync=r=>function(...t){return r(...t),t[0]},promiseRace=Promise.race.bind(Promise),arrayMapPoolAsync=async function(r,t,e,n,o,s){const i=r.length;for(;++o<i;){s.size>=e&&await promiseRace(s);const i=t(r[o]);if(isPromise(i)){const r=i.then(tapSync((()=>s.delete(r))));s.add(r),n[o]=r}else n[o]=i}return promiseAll(n)},arrayMapPool=function(r,t,e){const n=r.length,o=Array(n);let s=-1;for(;++s<n;){const n=t(r[s]);if(isPromise(n)){const i=new Set,c=n.then(tapSync((()=>i.delete(c))));return i.add(c),o[s]=c,arrayMapPoolAsync(r,t,e,o,s,i)}o[s]=n}return o},_curryArity=(r,t,e)=>function(...n){const o=e.length,s=n.length,i=[];let c=-1,a=-1,u=0;for(;++c<o;){const o=e[c];if(o==__&&(a+=1)<s){const r=n[a];r==__&&(u+=1),i.push(r)}else i.push(o);if(i.length==r)return 0==u?t(...i):curryArity(r,t,i)}for(;++a<s;){const e=n[a];if(e==__&&(u+=1),i.push(e),i.length==r)return 0==u?t(...i):curryArity(r,t,i)}return curryArity(r,t,i)},curryArity=function(r,t,e){const n=e.length;if(n<r)return _curryArity(r,t,e);let o=-1;for(;++o<n;){if(e[o]==__)return _curryArity(r,t,e)}return t(...e)},spread2=r=>function([t,e]){return r(t,e)},objectMapEntries=function(r,t){const e={},n=[];for(const o in r){const s=t([o,r[o]]);isPromise(s)?n.push(s.then(spread2(curryArity(3,objectSet,[e])))):e[s[0]]=s[1]}return 0==n.length?e:promiseAll(n).then(always(e))},mapMapEntriesForEachCallback=(r,t,e)=>function(n,o){const s=r([o,n]);isPromise(s)?e.push(s.then(spread2(curryArity(3,mapSet,[t])))):t.set(s[0],s[1])},mapMapEntries=function(r,t){const e=new Map,n=[];return r.forEach(mapMapEntriesForEachCallback(t,e,n)),0==n.length?e:promiseAll(n).then(always(e))},_map=function(r,t){return isArray(r)?arrayMap(r,t):null==r?r:"function"==typeof r.then?r.then(t):"function"==typeof r.map?r.map(t):"string"==typeof r||r.constructor==String?stringMap(r,t):r.constructor==Set?setMap(r,t):r.constructor==Map?mapMap(r,t):"function"==typeof r[symbolIterator]?MappingIterator(r[symbolIterator](),t):"function"==typeof r[symbolAsyncIterator]?MappingAsyncIterator(r[symbolAsyncIterator](),t):r.constructor==Object?objectMap(r,t):t(r)},map=function(r,t){return"function"==typeof r?curry2(_map,__,r):isPromise(r)?r.then(curry2(_map,__,t)):_map(r,t)},_mapEntries=(r,t)=>{if(null==r)throw new TypeError("value is not an Object or Map");if(r.constructor==Object)return objectMapEntries(r,t);if(r.constructor==Map)return mapMapEntries(r,t);throw new TypeError("value is not an Object or Map")};map.entries=function(r,t){return"function"==typeof r?curry2(_mapEntries,__,r):isPromise(r)?r.then(curry2(_mapEntries,__,t)):_mapEntries(r,t)};const _mapSeries=function(r,t){if(isArray(r))return arrayMapSeries(r,t);if(null==r)throw new TypeError(`invalid collection ${r}`);if("string"==typeof r||r.constructor==String)return stringMapSeries(r,t);if(r.constructor==Set)return setMapSeries(r,t);if(r.constructor==Map)return mapMapSeries(r,t);if(r.constructor==Object)return objectMapSeries(r,t);throw new TypeError(`invalid collection ${r}`)};map.series=function(r,t){return"function"==typeof r?curry2(_mapSeries,__,r):isPromise(r)?r.then(curry2(_mapSeries,__,t)):_mapSeries(r,t)},map.pool=(r,t)=>function(e){if(isArray(e))return arrayMapPool(e,t,r);throw new TypeError(`${e} is not an Array`)};const memoizeCappedUnary=function(r,t){const e=new Map,n=function(n){if(e.has(n))return e.get(n);const o=r(n);return e.set(n,o),e.size>t&&e.clear(),o};return n.cache=e,n},pathDelimiters=/[.|[|\]]+/,parsePropertyPath=function(r){const t=r.length-1,e="["==r[0],n="]"==r[t];return e&&n?r.slice(1,t).split(pathDelimiters):e?r.slice(1).split(pathDelimiters):n?r.slice(0,t).split(pathDelimiters):r.split(pathDelimiters)},memoizedCappedParsePropertyPath=memoizeCappedUnary(parsePropertyPath,500),propertyPathToArray=r=>isArray(r)?r:"string"==typeof r?memoizedCappedParsePropertyPath(r):[r],getByPath=function(r,t){const e=propertyPathToArray(t),n=e.length;let o=-1,s=r;for(;++o<n;)if(s=s[e[o]],null==s)return;return s},_get=function(r,t,e){const n=null==r?void 0:getByPath(r,t);return void 0===n?"function"==typeof e?e(r):e:n},get=function(r,t,e){return"string"==typeof r||"number"==typeof r||isArray(r)?curry3(_get,__,r,t):isPromise(r)?r.then(curry3(_get,__,t,e)):_get(r,t,e)},pluck=function(...r){const t=r.pop(),e=get(t);return 0==r.length?map(e):map(r[0],e)};export default pluck;
package/dist/x/pluck.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.5.0
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.
@@ -298,6 +298,139 @@ const arrayMapSeries = function (array, mapper) {
298
298
  return result
299
299
  }
300
300
 
301
+ const stringMapSeries = function (string, mapper) {
302
+ const result = arrayMapSeries(string, mapper)
303
+ return isPromise(result)
304
+ ? result.then(curry3(callPropUnary, __, 'join', ''))
305
+ : result.join('')
306
+ }
307
+
308
+ const thunkify4 = (func, arg0, arg1, arg2, arg3) => function thunk() {
309
+ return func(arg0, arg1, arg2, arg3)
310
+ }
311
+
312
+ // _objectMapSeriesAsync(
313
+ // object Object,
314
+ // f function,
315
+ // result Object,
316
+ // doneKeys Object
317
+ // ) -> Promise<object>
318
+ const _objectMapSeriesAsync = async function (object, f, result, doneKeys) {
319
+ for (const key in object) {
320
+ if (key in doneKeys) {
321
+ continue
322
+ }
323
+ let resultItem = f(object[key])
324
+ if (isPromise(resultItem)) {
325
+ resultItem = await resultItem
326
+ }
327
+ result[key] = resultItem
328
+ }
329
+ return result
330
+ }
331
+
332
+ const objectMapSeries = function (object, f) {
333
+ const result = {}
334
+ const doneKeys = {}
335
+ for (const key in object) {
336
+ doneKeys[key] = true
337
+ const resultItem = f(object[key], key, object)
338
+ if (isPromise(resultItem)) {
339
+ return resultItem.then(funcConcat(
340
+ curry3(objectSet, result, key, __),
341
+ thunkify4(_objectMapSeriesAsync, object, f, result, doneKeys),
342
+ ))
343
+ }
344
+ }
345
+ return result
346
+ }
347
+
348
+ const thunkify3 = (func, arg0, arg1, arg2) => function thunk() {
349
+ return func(arg0, arg1, arg2)
350
+ }
351
+
352
+ const setAdd = function (set, value) {
353
+ set.add(value)
354
+ return set
355
+ }
356
+
357
+ // _setMapSeriesAsync(
358
+ // iterator Iterator,
359
+ // f function,
360
+ // result Set,
361
+ // ) -> Promise<Set>
362
+ const _setMapSeriesAsync = async function (iterator, f, result) {
363
+ let iteration = iterator.next()
364
+ while (!iteration.done) {
365
+ let resultItem = f(iteration.value)
366
+ if (isPromise(resultItem)) {
367
+ resultItem = await resultItem
368
+ }
369
+ result.add(resultItem)
370
+ iteration = iterator.next()
371
+ }
372
+ return result
373
+ }
374
+
375
+ const setMapSeries = function (set, f) {
376
+ const result = new Set()
377
+ const iterator = set[symbolIterator]()
378
+ let iteration = iterator.next()
379
+ while (!iteration.done) {
380
+ const resultItem = f(iteration.value)
381
+ if (isPromise(resultItem)) {
382
+ return resultItem.then(funcConcat(
383
+ curry2(setAdd, result, __),
384
+ thunkify3(_setMapSeriesAsync, iterator, f, result),
385
+ ))
386
+ }
387
+ result.add(resultItem)
388
+ iteration = iterator.next()
389
+ }
390
+ return result
391
+ }
392
+
393
+ const mapSet = function setting(source, key, value) {
394
+ return source.set(key, value)
395
+ }
396
+
397
+ // _mapMapSeriesAsync(
398
+ // iterator Iterator,
399
+ // f function,
400
+ // result Map,
401
+ // ) -> Promise<Map>
402
+ const _mapMapSeriesAsync = async function (iterator, f, result) {
403
+ let iteration = iterator.next()
404
+ while (!iteration.done) {
405
+ let resultItem = f(iteration.value[1])
406
+ if (isPromise(resultItem)) {
407
+ resultItem = await resultItem
408
+ }
409
+ result.set(iteration.value[0], resultItem)
410
+ iteration = iterator.next()
411
+ }
412
+ return result
413
+ }
414
+
415
+ const mapMapSeries = function (map, f) {
416
+ const result = new Map()
417
+ const iterator = map[symbolIterator]()
418
+ let iteration = iterator.next()
419
+ while (!iteration.done) {
420
+ const key = iteration.value[0]
421
+ const resultItem = f(iteration.value[1])
422
+ if (isPromise(resultItem)) {
423
+ return resultItem.then(funcConcat(
424
+ curry3(mapSet, result, key, __),
425
+ thunkify3(_mapMapSeriesAsync, iterator, f, result),
426
+ ))
427
+ }
428
+ result.set(key, resultItem)
429
+ iteration = iterator.next()
430
+ }
431
+ return result
432
+ }
433
+
301
434
  const tapSync = func => function tapping(...args) {
302
435
  func(...args)
303
436
  return args[0]
@@ -426,10 +559,6 @@ const objectMapEntries = function (object, mapper) {
426
559
  : promiseAll(promises).then(always(result))
427
560
  }
428
561
 
429
- const mapSet = function setting(source, key, value) {
430
- return source.set(key, value)
431
- }
432
-
433
562
  // (mapper function, result Map, promises Array<Promise>) => (key any, value any) => ()
434
563
  const mapMapEntriesForEachCallback = (
435
564
  mapper, result, promises,
@@ -518,11 +647,36 @@ map.entries = function mapEntries(arg0, arg1) {
518
647
  : _mapEntries(arg0, arg1)
519
648
  }
520
649
 
521
- map.series = mapper => function mappingInSeries(value) {
522
- if (isArray(value)) {
523
- return arrayMapSeries(value, mapper)
650
+ const _mapSeries = function (collection, f) {
651
+ if (isArray(collection)) {
652
+ return arrayMapSeries(collection, f)
524
653
  }
525
- throw new TypeError(`${value} is not an Array`)
654
+ if (collection == null) {
655
+ throw new TypeError(`invalid collection ${collection}`)
656
+ }
657
+
658
+ if (typeof collection == 'string' || collection.constructor == String) {
659
+ return stringMapSeries(collection, f)
660
+ }
661
+ if (collection.constructor == Set) {
662
+ return setMapSeries(collection, f)
663
+ }
664
+ if (collection.constructor == Map) {
665
+ return mapMapSeries(collection, f)
666
+ }
667
+ if (collection.constructor == Object) {
668
+ return objectMapSeries(collection, f)
669
+ }
670
+ throw new TypeError(`invalid collection ${collection}`)
671
+ }
672
+
673
+ map.series = function mapSeries(arg0, arg1) {
674
+ if (typeof arg0 == 'function') {
675
+ return curry2(_mapSeries, __, arg0)
676
+ }
677
+ return isPromise(arg0)
678
+ ? arg0.then(curry2(_mapSeries, __, arg1))
679
+ : _mapSeries(arg0, arg1)
526
680
  }
527
681
 
528
682
  map.pool = (concurrencyLimit, mapper) => function concurrentPoolMapping(value) {
@@ -1,8 +1,8 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.5.0
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.pluck=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=(t,e)=>function(...r){const o=t(...r);return n(o)?o.then(e):e(o)},e=Symbol.iterator,r=(n,t)=>({toString:()=>"[object MappingIterator]",[e](){return this},next(){const e=n.next();return e.done?e:{value:t(e.value),done:!1}}}),o=n=>({value:n,done:!1}),u=Symbol.asyncIterator,c=(t,e)=>({[u](){return this},async next(){const r=await t.next();if(r.done)return r;const u=e(r.value);return n(u)?u.then(o):{value:u,done:!1}}}),i=Symbol.for("placeholder"),f=function(n,t,e){return t==i?((n,t)=>function(e){return n(e,t)})(n,e):((n,t)=>function(e){return n(t,e)})(n,t)},s=Array.isArray,l=Promise.all.bind(Promise),h=function(t,e){const r=t.length,o=Array(r);let u=-1,c=!1;for(;++u<r;){const r=e(t[u],u,t);n(r)&&(c=!0),o[u]=r}return c?l(o):o},a=function(n,t,e,r){return t==i?((n,t,e)=>function(r){return n(r,t,e)})(n,e,r):e==i?((n,t,e)=>function(r){return n(t,r,e)})(n,t,r):((n,t,e)=>function(r){return n(t,e,r)})(n,t,e)},p=(n,t,e)=>n[t](e),y=n=>function(){return n},g=function(n,t,e,r,o){return t==i?((n,t,e,r)=>function(o){return n(o,t,e,r)})(n,e,r,o):e==i?((n,t,e,r)=>function(o){return n(t,o,e,r)})(n,t,r,o):r==i?((n,t,e,r)=>function(o){return n(t,e,o,r)})(n,t,e,o):((n,t,e,r)=>function(o){return n(t,e,r,o)})(n,t,e,r)},d=(n,t,e,r)=>n[t](e,r),w=t=>new Promise((t=>function(e){const r={};let o=0;for(const u in t){const c=t[u];n(c)?(o+=1,c.then((n=>function(t){r[n]=t,o-=1,0==o&&e(r)})(u))):r[u]=c}0==o&&e(r)})(t)),b=function(n,t,e){return n[t]=e,n},m=async function(t,e,r,o){const u=t.length;for(;++o<u;){const u=e(t[o],o);r[o]=n(u)?await u:u}return r},v=n=>function(...t){return n(...t),t[0]},j=Promise.race.bind(Promise),M=async function(t,e,r,o,u,c){const i=t.length;for(;++u<i;){c.size>=r&&await j(c);const i=e(t[u]);if(n(i)){const n=i.then(v((()=>c.delete(n))));c.add(n),o[u]=n}else o[u]=i}return l(o)},S=(n,t,e)=>function(...r){const o=e.length,u=r.length,c=[];let f=-1,s=-1,l=0;for(;++f<o;){const o=e[f];if(o==i&&(s+=1)<u){const n=r[s];n==i&&(l+=1),c.push(n)}else c.push(o);if(c.length==n)return 0==l?t(...c):A(n,t,c)}for(;++s<u;){const e=r[s];if(e==i&&(l+=1),c.push(e),c.length==n)return 0==l?t(...c):A(n,t,c)}return A(n,t,c)},A=function(n,t,e){const r=e.length;if(r<n)return S(n,t,e);let o=-1;for(;++o<r;){if(e[o]==i)return S(n,t,e)}return t(...e)},T=n=>function([t,e]){return n(t,e)},x=function(n,t,e){return n.set(t,e)},E=function(t,e){const r=new Map,o=[];return t.forEach(((t,e,r)=>function(o,u){const c=t([u,o]);n(c)?r.push(c.then(T(A(3,x,[e])))):e.set(c[0],c[1])})(e,r,o)),0==o.length?r:l(o).then(y(r))},P=function(t,o){return s(t)?h(t,o):null==t?t:"function"==typeof t.then?t.then(o):"function"==typeof t.map?t.map(o):"string"==typeof t||t.constructor==String?function(t,e){const r=h(t,e);return n(r)?r.then(a(p,i,"join","")):r.join("")}(t,o):t.constructor==Set?function(t,e){const r=new Set,o=[];for(const u of t){const c=e(u,u,t);n(c)?o.push(c.then(a(p,r,"add",i))):r.add(c)}return 0==o.length?r:l(o).then(y(r))}(t,o):t.constructor==Map?function(t,e){const r=new Map,o=[];for(const[u,c]of t){const f=e(c,u,t);n(f)?o.push(f.then(g(d,r,"set",u,i))):r.set(u,f)}return 0==o.length?r:l(o).then(y(r))}(t,o):"function"==typeof t[e]?r(t[e](),o):"function"==typeof t[u]?c(t[u](),o):t.constructor==Object?function(t,e){const r={};let o=!1;for(const u in t){const c=e(t[u],u,t);n(c)&&(o=!0),r[u]=c}return o?w(r):r}(t,o):o(t)},O=function(t,e){return"function"==typeof t?f(P,i,t):n(t)?t.then(f(P,i,e)):P(t,e)},z=(t,e)=>{if(null==t)throw new TypeError("value is not an Object or Map");if(t.constructor==Object)return function(t,e){const r={},o=[];for(const u in t){const c=e([u,t[u]]);n(c)?o.push(c.then(T(A(3,b,[r])))):r[c[0]]=c[1]}return 0==o.length?r:l(o).then(y(r))}(t,e);if(t.constructor==Map)return E(t,e);throw new TypeError("value is not an Object or Map")};O.entries=function(t,e){return"function"==typeof t?f(z,i,t):n(t)?t.then(f(z,i,e)):z(t,e)},O.series=e=>function(r){if(s(r))return function(e,r){const o=e.length,u=Array(o);let c=-1;for(;++c<o;){const o=r(e[c],c);if(n(o))return o.then(t(a(b,u,c,i),g(m,e,r,i,c)));u[c]=o}return u}(r,e);throw new TypeError(`${r} is not an Array`)},O.pool=(t,e)=>function(r){if(s(r))return function(t,e,r){const o=t.length,u=Array(o);let c=-1;for(;++c<o;){const o=e(t[c]);if(n(o)){const n=new Set,i=o.then(v((()=>n.delete(i))));return n.add(i),u[c]=i,M(t,e,r,u,c,n)}u[c]=o}return u}(r,e,t);throw new TypeError(`${r} is not an Array`)};const I=/[.|[|\]]+/,$=function(n,t){const e=new Map,r=function(r){if(e.has(r))return e.get(r);const o=n(r);return e.set(r,o),e.size>t&&e.clear(),o};return r.cache=e,r}((function(n){const t=n.length-1,e="["==n[0],r="]"==n[t];return e&&r?n.slice(1,t).split(I):e?n.slice(1).split(I):r?n.slice(0,t).split(I):n.split(I)}),500),k=function(n,t){const e=(n=>s(n)?n:"string"==typeof n?$(n):[n])(t),r=e.length;let o=-1,u=n;for(;++o<r;)if(u=u[e[o]],null==u)return;return u},q=function(n,t,e){const r=null==n?void 0:k(n,t);return void 0===r?"function"==typeof e?e(n):e:r};return function(...t){const e=t.pop(),r="string"==typeof(o=e)||"number"==typeof o||s(o)?a(q,i,o,u):n(o)?o.then(a(q,i,u,c)):q(o,u,c);var o,u,c;return 0==t.length?O(r):O(t[0],r)}}());
8
+ !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.pluck=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=(t,e)=>function(...r){const o=t(...r);return n(o)?o.then(e):e(o)},e=Symbol.iterator,r=(n,t)=>({toString:()=>"[object MappingIterator]",[e](){return this},next(){const e=n.next();return e.done?e:{value:t(e.value),done:!1}}}),o=n=>({value:n,done:!1}),u=Symbol.asyncIterator,c=(t,e)=>({[u](){return this},async next(){const r=await t.next();if(r.done)return r;const u=e(r.value);return n(u)?u.then(o):{value:u,done:!1}}}),i=Symbol.for("placeholder"),f=function(n,t,e){return t==i?((n,t)=>function(e){return n(e,t)})(n,e):((n,t)=>function(e){return n(t,e)})(n,t)},s=Array.isArray,l=Promise.all.bind(Promise),a=function(t,e){const r=t.length,o=Array(r);let u=-1,c=!1;for(;++u<r;){const r=e(t[u],u,t);n(r)&&(c=!0),o[u]=r}return c?l(o):o},h=function(n,t,e,r){return t==i?((n,t,e)=>function(r){return n(r,t,e)})(n,e,r):e==i?((n,t,e)=>function(r){return n(t,r,e)})(n,t,r):((n,t,e)=>function(r){return n(t,e,r)})(n,t,e)},p=(n,t,e)=>n[t](e),y=n=>function(){return n},d=function(n,t,e,r,o){return t==i?((n,t,e,r)=>function(o){return n(o,t,e,r)})(n,e,r,o):e==i?((n,t,e,r)=>function(o){return n(t,o,e,r)})(n,t,r,o):r==i?((n,t,e,r)=>function(o){return n(t,e,o,r)})(n,t,e,o):((n,t,e,r)=>function(o){return n(t,e,r,o)})(n,t,e,r)},g=(n,t,e,r)=>n[t](e,r),w=t=>new Promise((t=>function(e){const r={};let o=0;for(const u in t){const c=t[u];n(c)?(o+=1,c.then((n=>function(t){r[n]=t,o-=1,0==o&&e(r)})(u))):r[u]=c}0==o&&e(r)})(t)),v=function(n,t,e){return n[t]=e,n},b=async function(t,e,r,o){const u=t.length;for(;++o<u;){const u=e(t[o],o);r[o]=n(u)?await u:u}return r},m=function(e,r){const o=e.length,u=Array(o);let c=-1;for(;++c<o;){const o=r(e[c],c);if(n(o))return o.then(t(h(v,u,c,i),d(b,e,r,i,c)));u[c]=o}return u},x=(n,t,e,r,o)=>function(){return n(t,e,r,o)},j=async function(t,e,r,o){for(const u in t){if(u in o)continue;let c=e(t[u]);n(c)&&(c=await c),r[u]=c}return r},S=(n,t,e,r)=>function(){return n(t,e,r)},M=function(n,t){return n.add(t),n},T=async function(t,e,r){let o=t.next();for(;!o.done;){let u=e(o.value);n(u)&&(u=await u),r.add(u),o=t.next()}return r},A=function(n,t,e){return n.set(t,e)},E=async function(t,e,r){let o=t.next();for(;!o.done;){let u=e(o.value[1]);n(u)&&(u=await u),r.set(o.value[0],u),o=t.next()}return r},O=n=>function(...t){return n(...t),t[0]},P=Promise.race.bind(Promise),$=async function(t,e,r,o,u,c){const i=t.length;for(;++u<i;){c.size>=r&&await P(c);const i=e(t[u]);if(n(i)){const n=i.then(O((()=>c.delete(n))));c.add(n),o[u]=n}else o[u]=i}return l(o)},z=(n,t,e)=>function(...r){const o=e.length,u=r.length,c=[];let f=-1,s=-1,l=0;for(;++f<o;){const o=e[f];if(o==i&&(s+=1)<u){const n=r[s];n==i&&(l+=1),c.push(n)}else c.push(o);if(c.length==n)return 0==l?t(...c):I(n,t,c)}for(;++s<u;){const e=r[s];if(e==i&&(l+=1),c.push(e),c.length==n)return 0==l?t(...c):I(n,t,c)}return I(n,t,c)},I=function(n,t,e){const r=e.length;if(r<n)return z(n,t,e);let o=-1;for(;++o<r;){if(e[o]==i)return z(n,t,e)}return t(...e)},k=n=>function([t,e]){return n(t,e)},q=function(t,e){const r=new Map,o=[];return t.forEach(((t,e,r)=>function(o,u){const c=t([u,o]);n(c)?r.push(c.then(k(I(3,A,[e])))):e.set(c[0],c[1])})(e,r,o)),0==o.length?r:l(o).then(y(r))},B=function(t,o){return s(t)?a(t,o):null==t?t:"function"==typeof t.then?t.then(o):"function"==typeof t.map?t.map(o):"string"==typeof t||t.constructor==String?function(t,e){const r=a(t,e);return n(r)?r.then(h(p,i,"join","")):r.join("")}(t,o):t.constructor==Set?function(t,e){const r=new Set,o=[];for(const u of t){const c=e(u,u,t);n(c)?o.push(c.then(h(p,r,"add",i))):r.add(c)}return 0==o.length?r:l(o).then(y(r))}(t,o):t.constructor==Map?function(t,e){const r=new Map,o=[];for(const[u,c]of t){const f=e(c,u,t);n(f)?o.push(f.then(d(g,r,"set",u,i))):r.set(u,f)}return 0==o.length?r:l(o).then(y(r))}(t,o):"function"==typeof t[e]?r(t[e](),o):"function"==typeof t[u]?c(t[u](),o):t.constructor==Object?function(t,e){const r={};let o=!1;for(const u in t){const c=e(t[u],u,t);n(c)&&(o=!0),r[u]=c}return o?w(r):r}(t,o):o(t)},C=function(t,e){return"function"==typeof t?f(B,i,t):n(t)?t.then(f(B,i,e)):B(t,e)},D=(t,e)=>{if(null==t)throw new TypeError("value is not an Object or Map");if(t.constructor==Object)return function(t,e){const r={},o=[];for(const u in t){const c=e([u,t[u]]);n(c)?o.push(c.then(k(I(3,v,[r])))):r[c[0]]=c[1]}return 0==o.length?r:l(o).then(y(r))}(t,e);if(t.constructor==Map)return q(t,e);throw new TypeError("value is not an Object or Map")};C.entries=function(t,e){return"function"==typeof t?f(D,i,t):n(t)?t.then(f(D,i,e)):D(t,e)};const F=function(r,o){if(s(r))return m(r,o);if(null==r)throw new TypeError(`invalid collection ${r}`);if("string"==typeof r||r.constructor==String)return function(t,e){const r=m(t,e);return n(r)?r.then(h(p,i,"join","")):r.join("")}(r,o);if(r.constructor==Set)return function(r,o){const u=new Set,c=r[e]();let s=c.next();for(;!s.done;){const e=o(s.value);if(n(e))return e.then(t(f(M,u,i),S(T,c,o,u)));u.add(e),s=c.next()}return u}(r,o);if(r.constructor==Map)return function(r,o){const u=new Map,c=r[e]();let f=c.next();for(;!f.done;){const e=f.value[0],r=o(f.value[1]);if(n(r))return r.then(t(h(A,u,e,i),S(E,c,o,u)));u.set(e,r),f=c.next()}return u}(r,o);if(r.constructor==Object)return function(e,r){const o={},u={};for(const c in e){u[c]=!0;const f=r(e[c],c,e);if(n(f))return f.then(t(h(v,o,c,i),x(j,e,r,o,u)))}return o}(r,o);throw new TypeError(`invalid collection ${r}`)};C.series=function(t,e){return"function"==typeof t?f(F,i,t):n(t)?t.then(f(F,i,e)):F(t,e)},C.pool=(t,e)=>function(r){if(s(r))return function(t,e,r){const o=t.length,u=Array(o);let c=-1;for(;++c<o;){const o=e(t[c]);if(n(o)){const n=new Set,i=o.then(O((()=>n.delete(i))));return n.add(i),u[c]=i,$(t,e,r,u,c,n)}u[c]=o}return u}(r,e,t);throw new TypeError(`${r} is not an Array`)};const G=/[.|[|\]]+/,H=function(n,t){const e=new Map,r=function(r){if(e.has(r))return e.get(r);const o=n(r);return e.set(r,o),e.size>t&&e.clear(),o};return r.cache=e,r}((function(n){const t=n.length-1,e="["==n[0],r="]"==n[t];return e&&r?n.slice(1,t).split(G):e?n.slice(1).split(G):r?n.slice(0,t).split(G):n.split(G)}),500),J=function(n,t){const e=(n=>s(n)?n:"string"==typeof n?H(n):[n])(t),r=e.length;let o=-1,u=n;for(;++o<r;)if(u=u[e[o]],null==u)return;return u},K=function(n,t,e){const r=null==n?void 0:J(n,t);return void 0===r?"function"==typeof e?e(n):e:r};return function(...t){const e=t.pop(),r="string"==typeof(o=e)||"number"==typeof o||s(o)?h(K,i,o,u):n(o)?o.then(h(K,i,u,c)):K(o,u,c);var o,u,c;return 0==t.length?C(r):C(t[0],r)}}());
package/dist/x/pluck.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.5.0
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.
@@ -292,6 +292,139 @@ const arrayMapSeries = function (array, mapper) {
292
292
  return result
293
293
  }
294
294
 
295
+ const stringMapSeries = function (string, mapper) {
296
+ const result = arrayMapSeries(string, mapper)
297
+ return isPromise(result)
298
+ ? result.then(curry3(callPropUnary, __, 'join', ''))
299
+ : result.join('')
300
+ }
301
+
302
+ const thunkify4 = (func, arg0, arg1, arg2, arg3) => function thunk() {
303
+ return func(arg0, arg1, arg2, arg3)
304
+ }
305
+
306
+ // _objectMapSeriesAsync(
307
+ // object Object,
308
+ // f function,
309
+ // result Object,
310
+ // doneKeys Object
311
+ // ) -> Promise<object>
312
+ const _objectMapSeriesAsync = async function (object, f, result, doneKeys) {
313
+ for (const key in object) {
314
+ if (key in doneKeys) {
315
+ continue
316
+ }
317
+ let resultItem = f(object[key])
318
+ if (isPromise(resultItem)) {
319
+ resultItem = await resultItem
320
+ }
321
+ result[key] = resultItem
322
+ }
323
+ return result
324
+ }
325
+
326
+ const objectMapSeries = function (object, f) {
327
+ const result = {}
328
+ const doneKeys = {}
329
+ for (const key in object) {
330
+ doneKeys[key] = true
331
+ const resultItem = f(object[key], key, object)
332
+ if (isPromise(resultItem)) {
333
+ return resultItem.then(funcConcat(
334
+ curry3(objectSet, result, key, __),
335
+ thunkify4(_objectMapSeriesAsync, object, f, result, doneKeys),
336
+ ))
337
+ }
338
+ }
339
+ return result
340
+ }
341
+
342
+ const thunkify3 = (func, arg0, arg1, arg2) => function thunk() {
343
+ return func(arg0, arg1, arg2)
344
+ }
345
+
346
+ const setAdd = function (set, value) {
347
+ set.add(value)
348
+ return set
349
+ }
350
+
351
+ // _setMapSeriesAsync(
352
+ // iterator Iterator,
353
+ // f function,
354
+ // result Set,
355
+ // ) -> Promise<Set>
356
+ const _setMapSeriesAsync = async function (iterator, f, result) {
357
+ let iteration = iterator.next()
358
+ while (!iteration.done) {
359
+ let resultItem = f(iteration.value)
360
+ if (isPromise(resultItem)) {
361
+ resultItem = await resultItem
362
+ }
363
+ result.add(resultItem)
364
+ iteration = iterator.next()
365
+ }
366
+ return result
367
+ }
368
+
369
+ const setMapSeries = function (set, f) {
370
+ const result = new Set()
371
+ const iterator = set[symbolIterator]()
372
+ let iteration = iterator.next()
373
+ while (!iteration.done) {
374
+ const resultItem = f(iteration.value)
375
+ if (isPromise(resultItem)) {
376
+ return resultItem.then(funcConcat(
377
+ curry2(setAdd, result, __),
378
+ thunkify3(_setMapSeriesAsync, iterator, f, result),
379
+ ))
380
+ }
381
+ result.add(resultItem)
382
+ iteration = iterator.next()
383
+ }
384
+ return result
385
+ }
386
+
387
+ const mapSet = function setting(source, key, value) {
388
+ return source.set(key, value)
389
+ }
390
+
391
+ // _mapMapSeriesAsync(
392
+ // iterator Iterator,
393
+ // f function,
394
+ // result Map,
395
+ // ) -> Promise<Map>
396
+ const _mapMapSeriesAsync = async function (iterator, f, result) {
397
+ let iteration = iterator.next()
398
+ while (!iteration.done) {
399
+ let resultItem = f(iteration.value[1])
400
+ if (isPromise(resultItem)) {
401
+ resultItem = await resultItem
402
+ }
403
+ result.set(iteration.value[0], resultItem)
404
+ iteration = iterator.next()
405
+ }
406
+ return result
407
+ }
408
+
409
+ const mapMapSeries = function (map, f) {
410
+ const result = new Map()
411
+ const iterator = map[symbolIterator]()
412
+ let iteration = iterator.next()
413
+ while (!iteration.done) {
414
+ const key = iteration.value[0]
415
+ const resultItem = f(iteration.value[1])
416
+ if (isPromise(resultItem)) {
417
+ return resultItem.then(funcConcat(
418
+ curry3(mapSet, result, key, __),
419
+ thunkify3(_mapMapSeriesAsync, iterator, f, result),
420
+ ))
421
+ }
422
+ result.set(key, resultItem)
423
+ iteration = iterator.next()
424
+ }
425
+ return result
426
+ }
427
+
295
428
  const tapSync = func => function tapping(...args) {
296
429
  func(...args)
297
430
  return args[0]
@@ -420,10 +553,6 @@ const objectMapEntries = function (object, mapper) {
420
553
  : promiseAll(promises).then(always(result))
421
554
  }
422
555
 
423
- const mapSet = function setting(source, key, value) {
424
- return source.set(key, value)
425
- }
426
-
427
556
  // (mapper function, result Map, promises Array<Promise>) => (key any, value any) => ()
428
557
  const mapMapEntriesForEachCallback = (
429
558
  mapper, result, promises,
@@ -512,11 +641,36 @@ map.entries = function mapEntries(arg0, arg1) {
512
641
  : _mapEntries(arg0, arg1)
513
642
  }
514
643
 
515
- map.series = mapper => function mappingInSeries(value) {
516
- if (isArray(value)) {
517
- return arrayMapSeries(value, mapper)
644
+ const _mapSeries = function (collection, f) {
645
+ if (isArray(collection)) {
646
+ return arrayMapSeries(collection, f)
518
647
  }
519
- throw new TypeError(`${value} is not an Array`)
648
+ if (collection == null) {
649
+ throw new TypeError(`invalid collection ${collection}`)
650
+ }
651
+
652
+ if (typeof collection == 'string' || collection.constructor == String) {
653
+ return stringMapSeries(collection, f)
654
+ }
655
+ if (collection.constructor == Set) {
656
+ return setMapSeries(collection, f)
657
+ }
658
+ if (collection.constructor == Map) {
659
+ return mapMapSeries(collection, f)
660
+ }
661
+ if (collection.constructor == Object) {
662
+ return objectMapSeries(collection, f)
663
+ }
664
+ throw new TypeError(`invalid collection ${collection}`)
665
+ }
666
+
667
+ map.series = function mapSeries(arg0, arg1) {
668
+ if (typeof arg0 == 'function') {
669
+ return curry2(_mapSeries, __, arg0)
670
+ }
671
+ return isPromise(arg0)
672
+ ? arg0.then(curry2(_mapSeries, __, arg1))
673
+ : _mapSeries(arg0, arg1)
520
674
  }
521
675
 
522
676
  map.pool = (concurrencyLimit, mapper) => function concurrentPoolMapping(value) {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.5.0
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.