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/map.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.
@@ -65,35 +65,6 @@ const curry2 = function (baseFunc, arg0, arg1) {
65
65
  : curry2ResolveArg1(baseFunc, arg0)
66
66
  }
67
67
 
68
- const isArray = Array.isArray
69
-
70
- const isObject = value => {
71
- if (value == null) {
72
- return false
73
- }
74
-
75
- const typeofValue = typeof value
76
- return (typeofValue == 'object') || (typeofValue == 'function')
77
- }
78
-
79
- const promiseAll = Promise.all.bind(Promise)
80
-
81
- const arrayMap = function (array, mapper) {
82
- const arrayLength = array.length,
83
- result = Array(arrayLength)
84
- let index = -1,
85
- isAsync = false
86
-
87
- while (++index < arrayLength) {
88
- const resultItem = mapper(array[index], index, array)
89
- if (isPromise(resultItem)) {
90
- isAsync = true
91
- }
92
- result[index] = resultItem
93
- }
94
- return isAsync ? promiseAll(result) : result
95
- }
96
-
97
68
  // argument resolver for curry3
98
69
  const curry3ResolveArg0 = (
99
70
  baseFunc, arg1, arg2,
@@ -125,6 +96,35 @@ const curry3 = function (baseFunc, arg0, arg1, arg2) {
125
96
  return curry3ResolveArg2(baseFunc, arg0, arg1)
126
97
  }
127
98
 
99
+ const isArray = Array.isArray
100
+
101
+ const isObject = value => {
102
+ if (value == null) {
103
+ return false
104
+ }
105
+
106
+ const typeofValue = typeof value
107
+ return (typeofValue == 'object') || (typeofValue == 'function')
108
+ }
109
+
110
+ const promiseAll = Promise.all.bind(Promise)
111
+
112
+ const arrayMap = function (array, mapper) {
113
+ const arrayLength = array.length,
114
+ result = Array(arrayLength)
115
+ let index = -1,
116
+ isAsync = false
117
+
118
+ while (++index < arrayLength) {
119
+ const resultItem = mapper(array[index], index, array)
120
+ if (isPromise(resultItem)) {
121
+ isAsync = true
122
+ }
123
+ result[index] = resultItem
124
+ }
125
+ return isAsync ? promiseAll(result) : result
126
+ }
127
+
128
128
  const callPropUnary = (value, property, arg0) => value[property](arg0)
129
129
 
130
130
  const stringMap = function (string, mapper) {
@@ -335,6 +335,7 @@ const objectMapSeries = function (object, f) {
335
335
  thunkify4(_objectMapSeriesAsync, object, f, result, doneKeys),
336
336
  ))
337
337
  }
338
+ result[key] = resultItem
338
339
  }
339
340
  return result
340
341
  }
@@ -433,15 +434,14 @@ const tapSync = func => function tapping(...args) {
433
434
  const promiseRace = Promise.race.bind(Promise)
434
435
 
435
436
  const arrayMapPoolAsync = async function (
436
- array, mapper, concurrencyLimit, result, index, promises,
437
+ array, f, concurrencyLimit, result, index, promises,
437
438
  ) {
438
439
  const arrayLength = array.length
439
440
  while (++index < arrayLength) {
440
441
  if (promises.size >= concurrencyLimit) {
441
442
  await promiseRace(promises)
442
443
  }
443
-
444
- const resultItem = mapper(array[index])
444
+ const resultItem = f(array[index])
445
445
  if (isPromise(resultItem)) {
446
446
  const selfDeletingPromise = resultItem.then(
447
447
  tapSync(() => promises.delete(selfDeletingPromise)))
@@ -454,13 +454,12 @@ const arrayMapPoolAsync = async function (
454
454
  return promiseAll(result)
455
455
  }
456
456
 
457
- const arrayMapPool = function (array, mapper, concurrentLimit) {
457
+ const arrayMapPool = function (array, concurrency, f) {
458
458
  const arrayLength = array.length,
459
459
  result = Array(arrayLength)
460
460
  let index = -1
461
461
  while (++index < arrayLength) {
462
-
463
- const resultItem = mapper(array[index])
462
+ const resultItem = f(array[index])
464
463
  if (isPromise(resultItem)) {
465
464
  const promises = new Set(),
466
465
  selfDeletingPromise = resultItem.then(
@@ -468,13 +467,167 @@ const arrayMapPool = function (array, mapper, concurrentLimit) {
468
467
  promises.add(selfDeletingPromise)
469
468
  result[index] = selfDeletingPromise
470
469
  return arrayMapPoolAsync(
471
- array, mapper, concurrentLimit, result, index, promises)
470
+ array, f, concurrency, result, index, promises)
472
471
  }
473
472
  result[index] = resultItem
474
473
  }
475
474
  return result
476
475
  }
477
476
 
477
+ const stringMapPool = function (s, concurrency, f) {
478
+ const result = arrayMapPool(s, concurrency, f)
479
+ return isPromise(result)
480
+ ? result.then(curry3(callPropUnary, __, 'join', ''))
481
+ : result.join('')
482
+ }
483
+
484
+ const _setMapPoolAsync = async function (
485
+ s, iterator, concurrency, f, result, promises,
486
+ ) {
487
+ let iteration = iterator.next()
488
+ while (!iteration.done) {
489
+ if (promises.size >= concurrency) {
490
+ await promiseRace(promises)
491
+ }
492
+ const resultItem = f(iteration.value, iteration.value, s)
493
+ if (isPromise(resultItem)) {
494
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
495
+ promises.delete(selfDeletingPromise)
496
+ result.add(resolvedValue)
497
+ })
498
+ promises.add(selfDeletingPromise)
499
+ } else {
500
+ result.add(resultItem)
501
+ }
502
+ iteration = iterator.next()
503
+ }
504
+ if (promises.size > 0) {
505
+ await promiseAll(promises)
506
+ }
507
+ return result
508
+ }
509
+
510
+ const setMapPool = function (s, concurrency, f) {
511
+ const result = new Set()
512
+ const iterator = s[symbolIterator]()
513
+ let iteration = iterator.next()
514
+ while (!iteration.done) {
515
+ const resultItem = f(iteration.value, iteration.value, s)
516
+ if (isPromise(resultItem)) {
517
+ const promises = new Set()
518
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
519
+ promises.delete(selfDeletingPromise)
520
+ result.add(resolvedValue)
521
+ })
522
+ promises.add(selfDeletingPromise)
523
+ return _setMapPoolAsync(s, iterator, concurrency, f, result, promises)
524
+ }
525
+ result.add(resultItem)
526
+ iteration = iterator.next()
527
+ }
528
+ return result
529
+ }
530
+
531
+ const _mapMapPoolAsync = async function (
532
+ m, iterator, concurrency, f, result, promises,
533
+ ) {
534
+ let iteration = iterator.next()
535
+ while (!iteration.done) {
536
+ if (promises.size >= concurrency) {
537
+ await promiseRace(promises)
538
+ }
539
+ const key = iteration.value[0]
540
+ const resultItem = f(iteration.value[1], key, m)
541
+ if (isPromise(resultItem)) {
542
+ result.set(key, resultItem)
543
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
544
+ promises.delete(selfDeletingPromise)
545
+ result.set(key, resolvedValue)
546
+ })
547
+ promises.add(selfDeletingPromise)
548
+ } else {
549
+ result.set(key, resultItem)
550
+ }
551
+ iteration = iterator.next()
552
+ }
553
+ if (promises.size > 0) {
554
+ await promiseAll(promises)
555
+ }
556
+ return result
557
+ }
558
+
559
+ const mapMapPool = function (m, concurrency, f) {
560
+ const result = new Map()
561
+ const iterator = m[symbolIterator]()
562
+ let iteration = iterator.next()
563
+ while (!iteration.done) {
564
+ const key = iteration.value[0]
565
+ const resultItem = f(iteration.value[1], key, m)
566
+ if (isPromise(resultItem)) {
567
+ const promises = new Set()
568
+ result.set(key, resultItem)
569
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
570
+ promises.delete(selfDeletingPromise)
571
+ result.set(key, resolvedValue)
572
+ })
573
+ promises.add(selfDeletingPromise)
574
+ return _mapMapPoolAsync(m, iterator, concurrency, f, result, promises)
575
+ }
576
+ result.set(key, resultItem)
577
+ iteration = iterator.next()
578
+ }
579
+ return result
580
+ }
581
+
582
+ const _objectMapPoolAsync = async function (
583
+ o, concurrency, f, result, doneKeys, promises,
584
+ ) {
585
+ for (const key in o) {
586
+ if (key in doneKeys) {
587
+ continue
588
+ }
589
+ if (promises.size >= concurrency) {
590
+ await promiseRace(promises)
591
+ }
592
+ const resultItem = f(o[key], key, o)
593
+ if (isPromise(resultItem)) {
594
+ result[key] = resultItem
595
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
596
+ promises.delete(selfDeletingPromise)
597
+ result[key] = resolvedValue
598
+ })
599
+ promises.add(selfDeletingPromise)
600
+ } else {
601
+ result[key] = resultItem
602
+ }
603
+ }
604
+ if (promises.size > 0) {
605
+ await promiseAll(promises)
606
+ }
607
+ return result
608
+ }
609
+
610
+ const objectMapPool = function (o, concurrency, f) {
611
+ const result = {}
612
+ const doneKeys = {}
613
+ for (const key in o) {
614
+ doneKeys[key] = true
615
+ const resultItem = f(o[key], key, o)
616
+ if (isPromise(resultItem)) {
617
+ const promises = new Set()
618
+ result[key] = resultItem
619
+ const selfDeletingPromise = resultItem.then(resolvedValue => {
620
+ promises.delete(selfDeletingPromise)
621
+ result[key] = resolvedValue
622
+ })
623
+ promises.add(selfDeletingPromise)
624
+ return _objectMapPoolAsync(o, concurrency, f, result, doneKeys, promises)
625
+ }
626
+ result[key] = resultItem
627
+ }
628
+ return result
629
+ }
630
+
478
631
  const _curryArity = (arity, func, args) => function curried(...curriedArgs) {
479
632
  const argsLength = args.length,
480
633
  curriedArgsLength = curriedArgs.length,
@@ -610,7 +763,7 @@ const _map = function (value, mapper) {
610
763
  }
611
764
 
612
765
  const map = function (arg0, arg1) {
613
- if (typeof arg0 == 'function') {
766
+ if (arg1 == null) {
614
767
  return curry2(_map, __, arg0)
615
768
  }
616
769
  return isPromise(arg0)
@@ -633,7 +786,7 @@ const _mapEntries = (value, mapper) => {
633
786
  }
634
787
 
635
788
  map.entries = function mapEntries(arg0, arg1) {
636
- if (typeof arg0 == 'function') {
789
+ if (arg1 == null) {
637
790
  return curry2(_mapEntries, __, arg0)
638
791
  }
639
792
  return isPromise(arg0)
@@ -665,7 +818,7 @@ const _mapSeries = function (collection, f) {
665
818
  }
666
819
 
667
820
  map.series = function mapSeries(arg0, arg1) {
668
- if (typeof arg0 == 'function') {
821
+ if (arg1 == null) {
669
822
  return curry2(_mapSeries, __, arg0)
670
823
  }
671
824
  return isPromise(arg0)
@@ -673,11 +826,35 @@ map.series = function mapSeries(arg0, arg1) {
673
826
  : _mapSeries(arg0, arg1)
674
827
  }
675
828
 
676
- map.pool = (concurrencyLimit, mapper) => function concurrentPoolMapping(value) {
677
- if (isArray(value)) {
678
- return arrayMapPool(value, mapper, concurrencyLimit)
829
+ const _mapPool = function (collection, concurrency, f) {
830
+ if (isArray(collection)) {
831
+ return arrayMapPool(collection, concurrency, f)
679
832
  }
680
- throw new TypeError(`${value} is not an Array`)
833
+ if (collection == null) {
834
+ throw new TypeError(`invalid collection ${collection}`)
835
+ }
836
+ if (typeof collection == 'string' || collection.constructor == String) {
837
+ return stringMapPool(collection, concurrency, f)
838
+ }
839
+ if (collection.constructor == Set) {
840
+ return setMapPool(collection, concurrency, f)
841
+ }
842
+ if (collection.constructor == Map) {
843
+ return mapMapPool(collection, concurrency, f)
844
+ }
845
+ if (collection.constructor == Object) {
846
+ return objectMapPool(collection, concurrency, f)
847
+ }
848
+ throw new TypeError(`invalid collection ${collection}`)
849
+ }
850
+
851
+ map.pool = function mapPool(arg0, arg1, arg2) {
852
+ if (arg2 == null) {
853
+ return curry3(_mapPool, __, arg0, arg1)
854
+ }
855
+ return isPromise(arg0)
856
+ ? arg0.then(curry3(_mapPool, __, arg1, arg2))
857
+ : _mapPool(arg0, arg1, arg2)
681
858
  }
682
859
 
683
860
  export default map
package/dist/not.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/not.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/not.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/not.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/omit.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/omit.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/omit.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/omit.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/or.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.
package/dist/or.es.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/or.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/or.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/or.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/pick.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/pick.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/pick.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/pick.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/pipe.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/pipe.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/pipe.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/pipe.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/reduce.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/reduce.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/reduce.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.