rubico 2.4.2 → 2.6.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 (375) hide show
  1. package/README.md +3 -0
  2. package/_internal/arrayMapPool.js +11 -19
  3. package/_internal/mapMapPool.js +80 -0
  4. package/_internal/mapMapSeries.js +62 -0
  5. package/_internal/objectForEachSeries.js +6 -4
  6. package/_internal/objectMapPool.js +77 -0
  7. package/_internal/objectMapSeries.js +62 -0
  8. package/_internal/setAdd.js +14 -0
  9. package/_internal/setMapPool.js +79 -0
  10. package/_internal/setMapSeries.js +61 -0
  11. package/_internal/stringMap.js +1 -1
  12. package/_internal/stringMapPool.js +22 -0
  13. package/_internal/stringMapSeries.js +31 -0
  14. package/all.js +11 -1
  15. package/and.js +9 -0
  16. package/assign.js +14 -1
  17. package/compose.js +8 -0
  18. package/dist/Transducer.es.js +1 -1
  19. package/dist/Transducer.es.min.js +1 -1
  20. package/dist/Transducer.js +1 -1
  21. package/dist/Transducer.min.js +1 -1
  22. package/dist/Transducer.mjs +1 -1
  23. package/dist/__.es.js +1 -1
  24. package/dist/__.es.min.js +1 -1
  25. package/dist/__.js +1 -1
  26. package/dist/__.min.js +1 -1
  27. package/dist/__.mjs +1 -1
  28. package/dist/all.es.js +1 -1
  29. package/dist/all.es.min.js +1 -1
  30. package/dist/all.js +1 -1
  31. package/dist/all.min.js +1 -1
  32. package/dist/all.mjs +1 -1
  33. package/dist/always.es.js +1 -1
  34. package/dist/always.es.min.js +1 -1
  35. package/dist/always.js +1 -1
  36. package/dist/always.min.js +1 -1
  37. package/dist/always.mjs +1 -1
  38. package/dist/and.es.js +1 -1
  39. package/dist/and.es.min.js +1 -1
  40. package/dist/and.js +1 -1
  41. package/dist/and.min.js +1 -1
  42. package/dist/and.mjs +1 -1
  43. package/dist/assign.es.js +1 -1
  44. package/dist/assign.es.min.js +1 -1
  45. package/dist/assign.js +1 -1
  46. package/dist/assign.min.js +1 -1
  47. package/dist/assign.mjs +1 -1
  48. package/dist/compose.es.js +1 -1
  49. package/dist/compose.es.min.js +1 -1
  50. package/dist/compose.js +1 -1
  51. package/dist/compose.min.js +1 -1
  52. package/dist/compose.mjs +1 -1
  53. package/dist/curry.es.js +1 -1
  54. package/dist/curry.es.min.js +1 -1
  55. package/dist/curry.js +1 -1
  56. package/dist/curry.min.js +1 -1
  57. package/dist/curry.mjs +1 -1
  58. package/dist/eq.es.js +1 -1
  59. package/dist/eq.es.min.js +1 -1
  60. package/dist/eq.js +1 -1
  61. package/dist/eq.min.js +1 -1
  62. package/dist/eq.mjs +1 -1
  63. package/dist/every.es.js +1 -1
  64. package/dist/every.es.min.js +1 -1
  65. package/dist/every.js +1 -1
  66. package/dist/every.min.js +1 -1
  67. package/dist/every.mjs +1 -1
  68. package/dist/filter.es.js +1 -1
  69. package/dist/filter.es.min.js +1 -1
  70. package/dist/filter.js +1 -1
  71. package/dist/filter.min.js +1 -1
  72. package/dist/filter.mjs +1 -1
  73. package/dist/flatMap.es.js +1 -1
  74. package/dist/flatMap.es.min.js +1 -1
  75. package/dist/flatMap.js +1 -1
  76. package/dist/flatMap.min.js +1 -1
  77. package/dist/flatMap.mjs +1 -1
  78. package/dist/forEach.es.js +11 -8
  79. package/dist/forEach.es.min.js +2 -2
  80. package/dist/forEach.js +11 -8
  81. package/dist/forEach.min.js +2 -2
  82. package/dist/forEach.mjs +11 -8
  83. package/dist/get.es.js +1 -1
  84. package/dist/get.es.min.js +1 -1
  85. package/dist/get.js +1 -1
  86. package/dist/get.min.js +1 -1
  87. package/dist/get.mjs +1 -1
  88. package/dist/gt.es.js +1 -1
  89. package/dist/gt.es.min.js +1 -1
  90. package/dist/gt.js +1 -1
  91. package/dist/gt.min.js +1 -1
  92. package/dist/gt.mjs +1 -1
  93. package/dist/gte.es.js +1 -1
  94. package/dist/gte.es.min.js +1 -1
  95. package/dist/gte.js +1 -1
  96. package/dist/gte.min.js +1 -1
  97. package/dist/gte.mjs +1 -1
  98. package/dist/lt.es.js +1 -1
  99. package/dist/lt.es.min.js +1 -1
  100. package/dist/lt.js +1 -1
  101. package/dist/lt.min.js +1 -1
  102. package/dist/lt.mjs +1 -1
  103. package/dist/lte.es.js +1 -1
  104. package/dist/lte.es.min.js +1 -1
  105. package/dist/lte.js +1 -1
  106. package/dist/lte.min.js +1 -1
  107. package/dist/lte.mjs +1 -1
  108. package/dist/map.es.js +382 -51
  109. package/dist/map.es.min.js +2 -2
  110. package/dist/map.js +382 -51
  111. package/dist/map.min.js +2 -2
  112. package/dist/map.mjs +382 -51
  113. package/dist/not.es.js +1 -1
  114. package/dist/not.es.min.js +1 -1
  115. package/dist/not.js +1 -1
  116. package/dist/not.min.js +1 -1
  117. package/dist/not.mjs +1 -1
  118. package/dist/omit.es.js +1 -1
  119. package/dist/omit.es.min.js +1 -1
  120. package/dist/omit.js +1 -1
  121. package/dist/omit.min.js +1 -1
  122. package/dist/omit.mjs +1 -1
  123. package/dist/or.es.js +1 -1
  124. package/dist/or.es.min.js +1 -1
  125. package/dist/or.js +1 -1
  126. package/dist/or.min.js +1 -1
  127. package/dist/or.mjs +1 -1
  128. package/dist/pick.es.js +1 -1
  129. package/dist/pick.es.min.js +1 -1
  130. package/dist/pick.js +1 -1
  131. package/dist/pick.min.js +1 -1
  132. package/dist/pick.mjs +1 -1
  133. package/dist/pipe.es.js +1 -1
  134. package/dist/pipe.es.min.js +1 -1
  135. package/dist/pipe.js +1 -1
  136. package/dist/pipe.min.js +1 -1
  137. package/dist/pipe.mjs +1 -1
  138. package/dist/reduce.es.js +1 -1
  139. package/dist/reduce.es.min.js +1 -1
  140. package/dist/reduce.js +1 -1
  141. package/dist/reduce.min.js +1 -1
  142. package/dist/reduce.mjs +1 -1
  143. package/dist/rubico.es.js +362 -33
  144. package/dist/rubico.es.min.js +2 -2
  145. package/dist/rubico.global.js +362 -33
  146. package/dist/rubico.global.min.js +2 -2
  147. package/dist/rubico.js +362 -33
  148. package/dist/rubico.min.js +2 -2
  149. package/dist/rubico.mjs +362 -33
  150. package/dist/set.es.js +1 -1
  151. package/dist/set.es.min.js +1 -1
  152. package/dist/set.js +1 -1
  153. package/dist/set.min.js +1 -1
  154. package/dist/set.mjs +1 -1
  155. package/dist/some.es.js +1 -1
  156. package/dist/some.es.min.js +1 -1
  157. package/dist/some.js +1 -1
  158. package/dist/some.min.js +1 -1
  159. package/dist/some.mjs +1 -1
  160. package/dist/switchCase.es.js +1 -1
  161. package/dist/switchCase.es.min.js +1 -1
  162. package/dist/switchCase.js +1 -1
  163. package/dist/switchCase.min.js +1 -1
  164. package/dist/switchCase.mjs +1 -1
  165. package/dist/tap.es.js +38 -1
  166. package/dist/tap.es.min.js +2 -2
  167. package/dist/tap.js +38 -1
  168. package/dist/tap.min.js +2 -2
  169. package/dist/tap.mjs +38 -1
  170. package/dist/thunkify.es.js +1 -1
  171. package/dist/thunkify.es.min.js +1 -1
  172. package/dist/thunkify.js +1 -1
  173. package/dist/thunkify.min.js +1 -1
  174. package/dist/thunkify.mjs +1 -1
  175. package/dist/transform.es.js +1 -1
  176. package/dist/transform.es.min.js +1 -1
  177. package/dist/transform.js +1 -1
  178. package/dist/transform.min.js +1 -1
  179. package/dist/transform.mjs +1 -1
  180. package/dist/tryCatch.es.js +1 -1
  181. package/dist/tryCatch.es.min.js +1 -1
  182. package/dist/tryCatch.js +1 -1
  183. package/dist/tryCatch.min.js +1 -1
  184. package/dist/tryCatch.mjs +1 -1
  185. package/dist/x/append.es.js +1 -1
  186. package/dist/x/append.es.min.js +1 -1
  187. package/dist/x/append.js +1 -1
  188. package/dist/x/append.min.js +1 -1
  189. package/dist/x/append.mjs +1 -1
  190. package/dist/x/callProp.es.js +1 -1
  191. package/dist/x/callProp.es.min.js +1 -1
  192. package/dist/x/callProp.js +1 -1
  193. package/dist/x/callProp.min.js +1 -1
  194. package/dist/x/callProp.mjs +1 -1
  195. package/dist/x/defaultsDeep.es.js +1 -1
  196. package/dist/x/defaultsDeep.es.min.js +1 -1
  197. package/dist/x/defaultsDeep.js +1 -1
  198. package/dist/x/defaultsDeep.min.js +1 -1
  199. package/dist/x/defaultsDeep.mjs +1 -1
  200. package/dist/x/differenceWith.es.js +1 -1
  201. package/dist/x/differenceWith.es.min.js +1 -1
  202. package/dist/x/differenceWith.js +1 -1
  203. package/dist/x/differenceWith.min.js +1 -1
  204. package/dist/x/differenceWith.mjs +1 -1
  205. package/dist/x/filterOut.es.js +1 -1
  206. package/dist/x/filterOut.es.min.js +1 -1
  207. package/dist/x/filterOut.js +1 -1
  208. package/dist/x/filterOut.min.js +1 -1
  209. package/dist/x/filterOut.mjs +1 -1
  210. package/dist/x/find.es.js +1 -1
  211. package/dist/x/find.es.min.js +1 -1
  212. package/dist/x/find.js +1 -1
  213. package/dist/x/find.min.js +1 -1
  214. package/dist/x/find.mjs +1 -1
  215. package/dist/x/findIndex.es.js +1 -1
  216. package/dist/x/findIndex.es.min.js +1 -1
  217. package/dist/x/findIndex.js +1 -1
  218. package/dist/x/findIndex.min.js +1 -1
  219. package/dist/x/findIndex.mjs +1 -1
  220. package/dist/x/first.es.js +1 -1
  221. package/dist/x/first.es.min.js +1 -1
  222. package/dist/x/first.js +1 -1
  223. package/dist/x/first.min.js +1 -1
  224. package/dist/x/first.mjs +1 -1
  225. package/dist/x/flatten.es.js +1 -1
  226. package/dist/x/flatten.es.min.js +1 -1
  227. package/dist/x/flatten.js +1 -1
  228. package/dist/x/flatten.min.js +1 -1
  229. package/dist/x/flatten.mjs +1 -1
  230. package/dist/x/groupBy.es.js +1 -1
  231. package/dist/x/groupBy.es.min.js +1 -1
  232. package/dist/x/groupBy.js +1 -1
  233. package/dist/x/groupBy.min.js +1 -1
  234. package/dist/x/groupBy.mjs +1 -1
  235. package/dist/x/has.es.js +1 -1
  236. package/dist/x/has.es.min.js +1 -1
  237. package/dist/x/has.js +1 -1
  238. package/dist/x/has.min.js +1 -1
  239. package/dist/x/has.mjs +1 -1
  240. package/dist/x/identity.es.js +1 -1
  241. package/dist/x/identity.es.min.js +1 -1
  242. package/dist/x/identity.js +1 -1
  243. package/dist/x/identity.min.js +1 -1
  244. package/dist/x/identity.mjs +1 -1
  245. package/dist/x/includes.es.js +1 -1
  246. package/dist/x/includes.es.min.js +1 -1
  247. package/dist/x/includes.js +1 -1
  248. package/dist/x/includes.min.js +1 -1
  249. package/dist/x/includes.mjs +1 -1
  250. package/dist/x/isDeepEqual.es.js +1 -1
  251. package/dist/x/isDeepEqual.es.min.js +1 -1
  252. package/dist/x/isDeepEqual.js +1 -1
  253. package/dist/x/isDeepEqual.min.js +1 -1
  254. package/dist/x/isDeepEqual.mjs +1 -1
  255. package/dist/x/isEmpty.es.js +1 -1
  256. package/dist/x/isEmpty.es.min.js +1 -1
  257. package/dist/x/isEmpty.js +1 -1
  258. package/dist/x/isEmpty.min.js +1 -1
  259. package/dist/x/isEmpty.mjs +1 -1
  260. package/dist/x/isEqual.es.js +1 -1
  261. package/dist/x/isEqual.es.min.js +1 -1
  262. package/dist/x/isEqual.js +1 -1
  263. package/dist/x/isEqual.min.js +1 -1
  264. package/dist/x/isEqual.mjs +1 -1
  265. package/dist/x/isFunction.es.js +1 -1
  266. package/dist/x/isFunction.es.min.js +1 -1
  267. package/dist/x/isFunction.js +1 -1
  268. package/dist/x/isFunction.min.js +1 -1
  269. package/dist/x/isFunction.mjs +1 -1
  270. package/dist/x/isIn.es.js +1 -1
  271. package/dist/x/isIn.es.min.js +1 -1
  272. package/dist/x/isIn.js +1 -1
  273. package/dist/x/isIn.min.js +1 -1
  274. package/dist/x/isIn.mjs +1 -1
  275. package/dist/x/isObject.es.js +1 -1
  276. package/dist/x/isObject.es.min.js +1 -1
  277. package/dist/x/isObject.js +1 -1
  278. package/dist/x/isObject.min.js +1 -1
  279. package/dist/x/isObject.mjs +1 -1
  280. package/dist/x/isString.es.js +1 -1
  281. package/dist/x/isString.es.min.js +1 -1
  282. package/dist/x/isString.js +1 -1
  283. package/dist/x/isString.min.js +1 -1
  284. package/dist/x/isString.mjs +1 -1
  285. package/dist/x/keys.es.js +1 -1
  286. package/dist/x/keys.es.min.js +1 -1
  287. package/dist/x/keys.js +1 -1
  288. package/dist/x/keys.min.js +1 -1
  289. package/dist/x/keys.mjs +1 -1
  290. package/dist/x/last.es.js +1 -1
  291. package/dist/x/last.es.min.js +1 -1
  292. package/dist/x/last.js +1 -1
  293. package/dist/x/last.min.js +1 -1
  294. package/dist/x/last.mjs +1 -1
  295. package/dist/x/maxBy.es.js +1 -1
  296. package/dist/x/maxBy.es.min.js +1 -1
  297. package/dist/x/maxBy.js +1 -1
  298. package/dist/x/maxBy.min.js +1 -1
  299. package/dist/x/maxBy.mjs +1 -1
  300. package/dist/x/noop.es.js +1 -1
  301. package/dist/x/noop.es.min.js +1 -1
  302. package/dist/x/noop.js +1 -1
  303. package/dist/x/noop.min.js +1 -1
  304. package/dist/x/noop.mjs +1 -1
  305. package/dist/x/pluck.es.js +382 -51
  306. package/dist/x/pluck.es.min.js +2 -2
  307. package/dist/x/pluck.js +382 -51
  308. package/dist/x/pluck.min.js +2 -2
  309. package/dist/x/pluck.mjs +382 -51
  310. package/dist/x/prepend.es.js +1 -1
  311. package/dist/x/prepend.es.min.js +1 -1
  312. package/dist/x/prepend.js +1 -1
  313. package/dist/x/prepend.min.js +1 -1
  314. package/dist/x/prepend.mjs +1 -1
  315. package/dist/x/size.es.js +1 -1
  316. package/dist/x/size.es.min.js +1 -1
  317. package/dist/x/size.js +1 -1
  318. package/dist/x/size.min.js +1 -1
  319. package/dist/x/size.mjs +1 -1
  320. package/dist/x/trace.es.js +38 -1
  321. package/dist/x/trace.es.min.js +2 -2
  322. package/dist/x/trace.js +38 -1
  323. package/dist/x/trace.min.js +2 -2
  324. package/dist/x/trace.mjs +38 -1
  325. package/dist/x/unionWith.es.js +1 -1
  326. package/dist/x/unionWith.es.min.js +1 -1
  327. package/dist/x/unionWith.js +1 -1
  328. package/dist/x/unionWith.min.js +1 -1
  329. package/dist/x/unionWith.mjs +1 -1
  330. package/dist/x/uniq.es.js +1 -1
  331. package/dist/x/uniq.es.min.js +1 -1
  332. package/dist/x/uniq.js +1 -1
  333. package/dist/x/uniq.min.js +1 -1
  334. package/dist/x/uniq.mjs +1 -1
  335. package/dist/x/unless.es.js +1 -1
  336. package/dist/x/unless.es.min.js +1 -1
  337. package/dist/x/unless.js +1 -1
  338. package/dist/x/unless.min.js +1 -1
  339. package/dist/x/unless.mjs +1 -1
  340. package/dist/x/values.es.js +1 -1
  341. package/dist/x/values.es.min.js +1 -1
  342. package/dist/x/values.js +1 -1
  343. package/dist/x/values.min.js +1 -1
  344. package/dist/x/values.mjs +1 -1
  345. package/dist/x/when.es.js +1 -1
  346. package/dist/x/when.es.min.js +1 -1
  347. package/dist/x/when.js +1 -1
  348. package/dist/x/when.min.js +1 -1
  349. package/dist/x/when.mjs +1 -1
  350. package/eq.js +6 -0
  351. package/es.js +362 -33
  352. package/every.js +6 -0
  353. package/filter.js +9 -0
  354. package/flatMap.js +7 -0
  355. package/forEach.js +22 -3
  356. package/get.js +6 -0
  357. package/gt.js +6 -0
  358. package/gte.js +6 -0
  359. package/index.js +362 -33
  360. package/lt.js +6 -0
  361. package/lte.js +6 -0
  362. package/map.js +172 -44
  363. package/not.js +8 -0
  364. package/omit.js +7 -0
  365. package/or.js +9 -0
  366. package/package.json +1 -1
  367. package/pick.js +7 -0
  368. package/pipe.js +8 -0
  369. package/reduce.js +8 -0
  370. package/set.js +6 -0
  371. package/some.js +6 -0
  372. package/switchCase.js +12 -0
  373. package/tap.js +11 -0
  374. package/transform.js +38 -10
  375. package/tryCatch.js +14 -0
package/dist/forEach.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
@@ -142,11 +142,11 @@ const arrayForEachSeries = function (array, callback) {
142
142
  // _objectForEachSeriesAsync(
143
143
  // object Object,
144
144
  // callback function,
145
- // firstKey string
145
+ // doneKeys Object,
146
146
  // ) -> Promise<object>
147
- const _objectForEachSeriesAsync = async function (object, callback, firstKey) {
147
+ const _objectForEachSeriesAsync = async function (object, callback, doneKeys) {
148
148
  for (const key in object) {
149
- if (key == firstKey) {
149
+ if (key in doneKeys) {
150
150
  continue
151
151
  }
152
152
  const operation = callback(object[key])
@@ -158,11 +158,13 @@ const _objectForEachSeriesAsync = async function (object, callback, firstKey) {
158
158
  }
159
159
 
160
160
  const objectForEachSeries = function (object, callback) {
161
+ const doneKeys = {}
161
162
  for (const key in object) {
163
+ doneKeys[key] = true
162
164
  const operation = callback(object[key])
163
165
  if (isPromise(operation)) {
164
166
  return operation
165
- .then(thunkify3(_objectForEachSeriesAsync, object, callback, key))
167
+ .then(thunkify3(_objectForEachSeriesAsync, object, callback, doneKeys))
166
168
  }
167
169
  }
168
170
  return object
@@ -221,7 +223,8 @@ const _forEach = function (collection, callback) {
221
223
  return collection
222
224
  }
223
225
  if (typeof collection.forEach == 'function') {
224
- return collection.forEach(callback)
226
+ collection.forEach(callback)
227
+ return collection
225
228
  }
226
229
  if (typeof collection[symbolIterator] == 'function') {
227
230
  return iteratorForEach(collection[symbolIterator](), callback)
@@ -249,7 +252,7 @@ const _forEachSeries = function (collection, callback) {
249
252
  return arrayForEachSeries(collection, callback)
250
253
  }
251
254
  if (collection == null) {
252
- throw new Error(`invalid collection ${collection}`)
255
+ throw new TypeError(`invalid collection ${collection}`)
253
256
  }
254
257
  if (typeof collection[symbolIterator] == 'function') {
255
258
  return iteratorForEachSeries(collection[symbolIterator](), callback)
@@ -260,7 +263,7 @@ const _forEachSeries = function (collection, callback) {
260
263
  if (collection.constructor == Object) {
261
264
  return objectForEachSeries(collection, callback)
262
265
  }
263
- throw new Error(`invalid collection ${collection}`)
266
+ throw new TypeError(`invalid collection ${collection}`)
264
267
  }
265
268
 
266
269
  forEach.series = function forEachSeries(arg0, arg1) {
@@ -1,8 +1,8 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.forEach=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=Symbol.for("placeholder"),o=function(n,o,r){return o==t?((n,t)=>function(o){return n(o,t)})(n,r):((n,t)=>function(o){return n(t,o)})(n,o)},r=Array.isArray,e=(Object.prototype.toString,Promise.all.bind(Promise)),c=n=>function(){return n},u=Symbol.iterator,f=Symbol.asyncIterator,i=(n,t,o,r)=>function(){return n(t,o,r)},s=async function(t,o,r){const e=t.length;for(;++r<e;){const e=o(t[r]);n(e)&&await e}return t},l=async function(t,o,r){for(const e in t){if(e==r)continue;const c=o(t[e]);n(c)&&await c}return t},a=(n,t,o)=>function(){return n(t,o)},h=async function(t,o){let r=t.next();for(;!r.done;){const e=o(r.value);n(e)&&await e,r=t.next()}return t},y=function(t,o){return r(t)?function(t,o){const r=t.length,u=[];let f=-1;for(;++f<r;){const r=o(t[f]);n(r)&&u.push(r)}return 0==u.length?t:e(u).then(c(t))}(t,o):null==t?t:"function"==typeof t.forEach?t.forEach(o):"function"==typeof t[u]?function(t,o){const r=[];for(const e of t){const t=o(e);n(t)&&r.push(t)}return 0==r.length?t:e(r).then(c(t))}(t[u](),o):"function"==typeof t[f]?async function(t,o){const r=[];for await(const e of t){const t=o(e);n(t)&&r.push(t)}return 0==r.length?t:e(r).then(c(t))}(t[f](),o):t.constructor==Object?function(t,o){const r=[];for(const e in t){const c=o(t[e]);n(c)&&r.push(c)}return 0==r.length?t:e(r).then(c(t))}(t,o):t},p=function(r,e){return"function"==typeof r?o(y,t,r):n(r)?r.then(o(y,t,e)):y(r,e)},b=function(t,o){if(r(t))return function(t,o){const r=t.length;let e=-1;for(;++e<r;){const r=o(t[e]);if(n(r))return r.then(i(s,t,o,e))}return t}(t,o);if(null==t)throw new Error(`invalid collection ${t}`);if("function"==typeof t[u])return function(t,o){let r=t.next();for(;!t.done;){const e=o(r.value);if(n(e))return e.then(a(h,t,o));r=t.next()}return t}(t[u](),o);if("function"==typeof t[f])return async function(t,o){for await(const r of t){const t=o(r);n(t)&&await t}return t}(t[f](),o);if(t.constructor==Object)return function(t,o){for(const r in t){const e=o(t[r]);if(n(e))return e.then(i(l,t,o,r))}return t}(t,o);throw new Error(`invalid collection ${t}`)};return p.series=function(r,e){return"function"==typeof r?o(b,t,r):n(r)?r.then(o(b,t,e)):b(r,e)},p}());
8
+ !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.forEach=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=Symbol.for("placeholder"),o=function(n,o,r){return o==t?((n,t)=>function(o){return n(o,t)})(n,r):((n,t)=>function(o){return n(t,o)})(n,o)},r=Array.isArray,e=(Object.prototype.toString,Promise.all.bind(Promise)),c=n=>function(){return n},u=Symbol.iterator,f=Symbol.asyncIterator,i=(n,t,o,r)=>function(){return n(t,o,r)},s=async function(t,o,r){const e=t.length;for(;++r<e;){const e=o(t[r]);n(e)&&await e}return t},l=async function(t,o,r){for(const e in t){if(e in r)continue;const c=o(t[e]);n(c)&&await c}return t},a=(n,t,o)=>function(){return n(t,o)},h=async function(t,o){let r=t.next();for(;!r.done;){const e=o(r.value);n(e)&&await e,r=t.next()}return t},y=function(t,o){return r(t)?function(t,o){const r=t.length,u=[];let f=-1;for(;++f<r;){const r=o(t[f]);n(r)&&u.push(r)}return 0==u.length?t:e(u).then(c(t))}(t,o):null==t?t:"function"==typeof t.forEach?(t.forEach(o),t):"function"==typeof t[u]?function(t,o){const r=[];for(const e of t){const t=o(e);n(t)&&r.push(t)}return 0==r.length?t:e(r).then(c(t))}(t[u](),o):"function"==typeof t[f]?async function(t,o){const r=[];for await(const e of t){const t=o(e);n(t)&&r.push(t)}return 0==r.length?t:e(r).then(c(t))}(t[f](),o):t.constructor==Object?function(t,o){const r=[];for(const e in t){const c=o(t[e]);n(c)&&r.push(c)}return 0==r.length?t:e(r).then(c(t))}(t,o):t},p=function(r,e){return"function"==typeof r?o(y,t,r):n(r)?r.then(o(y,t,e)):y(r,e)},b=function(t,o){if(r(t))return function(t,o){const r=t.length;let e=-1;for(;++e<r;){const r=o(t[e]);if(n(r))return r.then(i(s,t,o,e))}return t}(t,o);if(null==t)throw new TypeError(`invalid collection ${t}`);if("function"==typeof t[u])return function(t,o){let r=t.next();for(;!t.done;){const e=o(r.value);if(n(e))return e.then(a(h,t,o));r=t.next()}return t}(t[u](),o);if("function"==typeof t[f])return async function(t,o){for await(const r of t){const t=o(r);n(t)&&await t}return t}(t[f](),o);if(t.constructor==Object)return function(t,o){const r={};for(const e in t){r[e]=!0;const c=o(t[e]);if(n(c))return c.then(i(l,t,o,r))}return t}(t,o);throw new TypeError(`invalid collection ${t}`)};return p.series=function(r,e){return"function"==typeof r?o(b,t,r):n(r)?r.then(o(b,t,e)):b(r,e)},p}());
package/dist/forEach.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
@@ -136,11 +136,11 @@ const arrayForEachSeries = function (array, callback) {
136
136
  // _objectForEachSeriesAsync(
137
137
  // object Object,
138
138
  // callback function,
139
- // firstKey string
139
+ // doneKeys Object,
140
140
  // ) -> Promise<object>
141
- const _objectForEachSeriesAsync = async function (object, callback, firstKey) {
141
+ const _objectForEachSeriesAsync = async function (object, callback, doneKeys) {
142
142
  for (const key in object) {
143
- if (key == firstKey) {
143
+ if (key in doneKeys) {
144
144
  continue
145
145
  }
146
146
  const operation = callback(object[key])
@@ -152,11 +152,13 @@ const _objectForEachSeriesAsync = async function (object, callback, firstKey) {
152
152
  }
153
153
 
154
154
  const objectForEachSeries = function (object, callback) {
155
+ const doneKeys = {}
155
156
  for (const key in object) {
157
+ doneKeys[key] = true
156
158
  const operation = callback(object[key])
157
159
  if (isPromise(operation)) {
158
160
  return operation
159
- .then(thunkify3(_objectForEachSeriesAsync, object, callback, key))
161
+ .then(thunkify3(_objectForEachSeriesAsync, object, callback, doneKeys))
160
162
  }
161
163
  }
162
164
  return object
@@ -215,7 +217,8 @@ const _forEach = function (collection, callback) {
215
217
  return collection
216
218
  }
217
219
  if (typeof collection.forEach == 'function') {
218
- return collection.forEach(callback)
220
+ collection.forEach(callback)
221
+ return collection
219
222
  }
220
223
  if (typeof collection[symbolIterator] == 'function') {
221
224
  return iteratorForEach(collection[symbolIterator](), callback)
@@ -243,7 +246,7 @@ const _forEachSeries = function (collection, callback) {
243
246
  return arrayForEachSeries(collection, callback)
244
247
  }
245
248
  if (collection == null) {
246
- throw new Error(`invalid collection ${collection}`)
249
+ throw new TypeError(`invalid collection ${collection}`)
247
250
  }
248
251
  if (typeof collection[symbolIterator] == 'function') {
249
252
  return iteratorForEachSeries(collection[symbolIterator](), callback)
@@ -254,7 +257,7 @@ const _forEachSeries = function (collection, callback) {
254
257
  if (collection.constructor == Object) {
255
258
  return objectForEachSeries(collection, callback)
256
259
  }
257
- throw new Error(`invalid collection ${collection}`)
260
+ throw new TypeError(`invalid collection ${collection}`)
258
261
  }
259
262
 
260
263
  forEach.series = function forEachSeries(arg0, arg1) {
package/dist/get.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/get.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/get.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/get.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/gt.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/gt.es.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/gt.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/gt.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/gt.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/gte.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/gte.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/gte.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/gte.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/lt.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/lt.es.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/lt.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/lt.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/lt.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/lte.es.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/lte.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/lte.min.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.
package/dist/lte.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * rubico v2.4.2
2
+ * rubico v2.6.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.