rubico 1.9.7 → 2.0.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 (593) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.js +3 -2
  3. package/.github/workflows/nodejs.yml +1 -1
  4. package/AggregateReducer.js +19 -0
  5. package/AggregateReducer.test.js +82 -0
  6. package/CHANGELOG.md +22 -1
  7. package/README.md +158 -81
  8. package/Transducer.js +75 -26
  9. package/Transducer.test.js +117 -0
  10. package/_internal/ComparisonOperator.js +68 -0
  11. package/_internal/File.js +41 -0
  12. package/_internal/FlatMappingAsyncIterator.js +4 -4
  13. package/_internal/FlatMappingIterator.js +1 -1
  14. package/_internal/TimeInLoopSuite.js +138 -0
  15. package/_internal/areAnyValuesPromises.js +23 -0
  16. package/_internal/{arrayAll.js → arrayEvery.js} +4 -4
  17. package/_internal/arrayExtend.js +3 -2
  18. package/_internal/arrayFilter.js +3 -4
  19. package/_internal/{arrayAny.js → arraySome.js} +8 -8
  20. package/_internal/{asyncIteratorAll.js → asyncIteratorEvery.js} +4 -4
  21. package/_internal/{asyncIteratorAny.js → asyncIteratorSome.js} +4 -4
  22. package/_internal/curry4.test.js +25 -0
  23. package/_internal/curry5.test.js +29 -0
  24. package/_internal/curryArgs2.js +43 -0
  25. package/_internal/curryArgs3.test.js +21 -0
  26. package/_internal/curryArgs4.js +65 -0
  27. package/_internal/curryArgs4.test.js +25 -0
  28. package/_internal/equals.js +13 -0
  29. package/_internal/findAllFilePaths.js +22 -0
  30. package/_internal/funcApply.js +2 -0
  31. package/_internal/funcCall.js +14 -0
  32. package/_internal/functionArrayAll.js +26 -0
  33. package/_internal/functionArrayAllSeries.js +55 -0
  34. package/_internal/functionObjectAll.js +32 -0
  35. package/_internal/genericReduce.js +4 -22
  36. package/_internal/genericTransform.js +15 -15
  37. package/_internal/improvedGenericTransform.js +93 -0
  38. package/_internal/{iteratorAll.js → iteratorEvery.js} +4 -4
  39. package/_internal/{iteratorAny.js → iteratorSome.js} +6 -6
  40. package/_internal/leftResolverRightResolverCompare.js +19 -0
  41. package/_internal/leftResolverRightValueCompare.js +16 -0
  42. package/_internal/leftValueRightResolverCompare.js +16 -0
  43. package/_internal/objectReduce.js +0 -1
  44. package/_internal/pathResolve.js +6 -0
  45. package/_internal/{reducerAll.js → reducerEvery.js} +4 -4
  46. package/_internal/reducerFlatMap.js +4 -4
  47. package/_internal/reducerFlatten.js +1 -1
  48. package/_internal/{reducerAny.js → reducerSome.js} +4 -4
  49. package/_internal/timeInLoop.js +37 -0
  50. package/_internal/timeInLoop.test.js +18 -0
  51. package/_internal/timeInLoopAsync.js +35 -0
  52. package/_internal/timeInLoopAsync.test.js +22 -0
  53. package/all.js +106 -40
  54. package/and.js +54 -36
  55. package/archive/{FlatMappingIteratorCool.js → FlatMappingIterator-2020-09-28.js} +1 -1
  56. package/archive/_Promise-2023-05-29.js +93 -0
  57. package/archive/arrayMap2-2023-05-29.js +73 -0
  58. package/archive/benchmarks-v1.9.7/all.js +34 -0
  59. package/archive/benchmarks-v1.9.7/and.js +24 -0
  60. package/archive/benchmarks-v1.9.7/assign.js +174 -0
  61. package/archive/benchmarks-v1.9.7/curry.js +55 -0
  62. package/archive/benchmarks-v1.9.7/eq.js +25 -0
  63. package/archive/benchmarks-v1.9.7/filter.js +1322 -0
  64. package/archive/benchmarks-v1.9.7/flatMap.js +48 -0
  65. package/archive/benchmarks-v1.9.7/get.js +44 -0
  66. package/archive/benchmarks-v1.9.7/gt.js +25 -0
  67. package/archive/benchmarks-v1.9.7/gte.js +25 -0
  68. package/archive/benchmarks-v1.9.7/lt.js +25 -0
  69. package/archive/benchmarks-v1.9.7/lte.js +25 -0
  70. package/archive/benchmarks-v1.9.7/map.js +892 -0
  71. package/archive/benchmarks-v1.9.7/omit.js +28 -0
  72. package/archive/benchmarks-v1.9.7/or.js +51 -0
  73. package/archive/benchmarks-v1.9.7/pick.js +24 -0
  74. package/archive/benchmarks-v1.9.7/pipe.js +152 -0
  75. package/archive/benchmarks-v1.9.7/reduce.js +739 -0
  76. package/archive/benchmarks-v1.9.7/switchCase.js +256 -0
  77. package/archive/benchmarks-v1.9.7/tap.js +90 -0
  78. package/archive/benchmarks-v1.9.7/transform.js +218 -0
  79. package/archive/benchmarks-v1.9.7/tryCatch.js +108 -0
  80. package/assign.js +18 -8
  81. package/bench +65 -0
  82. package/benchmark-output/v1.9.7 +268 -0
  83. package/benchmarks/all.async.js +43 -0
  84. package/benchmarks/all.js +42 -33
  85. package/benchmarks/always.js +15 -0
  86. package/benchmarks/and.async.js +25 -0
  87. package/benchmarks/and.js +20 -19
  88. package/benchmarks/assign.async.js +27 -0
  89. package/benchmarks/assign.js +20 -167
  90. package/benchmarks/curry.js +34 -54
  91. package/benchmarks/eq.async.js +23 -0
  92. package/benchmarks/eq.js +17 -19
  93. package/benchmarks/every.async.js +19 -0
  94. package/benchmarks/every.js +19 -0
  95. package/benchmarks/filter.async.js +32 -0
  96. package/benchmarks/filter.js +27 -1311
  97. package/benchmarks/flatMap.async.js +26 -0
  98. package/benchmarks/flatMap.js +26 -36
  99. package/benchmarks/get.async.js +19 -0
  100. package/benchmarks/get.js +27 -32
  101. package/benchmarks/gt.async.js +23 -0
  102. package/benchmarks/gt.js +17 -19
  103. package/benchmarks/gte.async.js +23 -0
  104. package/benchmarks/gte.js +17 -19
  105. package/benchmarks/lt.async.js +23 -0
  106. package/benchmarks/lt.js +17 -19
  107. package/benchmarks/lte.async.js +23 -0
  108. package/benchmarks/lte.js +17 -19
  109. package/benchmarks/map.async.js +43 -0
  110. package/benchmarks/map.js +24 -876
  111. package/benchmarks/misc/Promise.js +26 -0
  112. package/benchmarks/misc/isPromise.js +30 -0
  113. package/benchmarks/misc/promiseAll.js +36 -0
  114. package/benchmarks/not.js +23 -0
  115. package/benchmarks/omit.js +30 -20
  116. package/benchmarks/or.async.js +25 -0
  117. package/benchmarks/or.js +23 -49
  118. package/benchmarks/pick.js +30 -16
  119. package/benchmarks/pipe.async.js +47 -0
  120. package/benchmarks/pipe.js +46 -151
  121. package/benchmarks/reduce.async.js +32 -0
  122. package/benchmarks/reduce.js +27 -728
  123. package/benchmarks/set.async.js +19 -0
  124. package/benchmarks/set.js +41 -0
  125. package/benchmarks/some.async.js +19 -0
  126. package/benchmarks/some.js +19 -0
  127. package/benchmarks/switchCase.async.js +27 -0
  128. package/benchmarks/switchCase.js +55 -256
  129. package/benchmarks/tap.js +10 -85
  130. package/benchmarks/thunkify.js +15 -0
  131. package/benchmarks/transform.async.js +27 -0
  132. package/benchmarks/transform.js +28 -206
  133. package/benchmarks/tryCatch.async.js +25 -0
  134. package/benchmarks/tryCatch.js +24 -100
  135. package/build +472 -0
  136. package/compose.js +46 -0
  137. package/dist/Transducer.es.js +481 -0
  138. package/dist/Transducer.es.min.js +7 -0
  139. package/dist/Transducer.js +488 -0
  140. package/dist/Transducer.min.js +8 -0
  141. package/dist/Transducer.mjs +481 -0
  142. package/dist/__.es.js +2 -2
  143. package/dist/__.es.min.js +2 -2
  144. package/dist/__.js +2 -2
  145. package/dist/__.min.js +2 -2
  146. package/dist/__.mjs +2 -2
  147. package/dist/all.es.js +173 -92
  148. package/dist/all.es.min.js +3 -3
  149. package/dist/all.js +173 -92
  150. package/dist/all.min.js +3 -3
  151. package/dist/all.mjs +173 -92
  152. package/dist/always.es.js +2 -2
  153. package/dist/always.es.min.js +2 -2
  154. package/dist/always.js +2 -2
  155. package/dist/always.min.js +2 -2
  156. package/dist/always.mjs +2 -2
  157. package/dist/and.es.js +101 -32
  158. package/dist/and.es.min.js +3 -3
  159. package/dist/and.js +101 -32
  160. package/dist/and.min.js +3 -3
  161. package/dist/and.mjs +101 -32
  162. package/dist/assign.es.js +37 -10
  163. package/dist/assign.es.min.js +3 -3
  164. package/dist/assign.js +37 -10
  165. package/dist/assign.min.js +3 -3
  166. package/dist/assign.mjs +37 -10
  167. package/dist/compose.es.js +71 -0
  168. package/dist/compose.es.min.js +7 -0
  169. package/dist/compose.js +78 -0
  170. package/dist/compose.min.js +8 -0
  171. package/dist/compose.mjs +71 -0
  172. package/dist/curry.es.js +2 -2
  173. package/dist/curry.es.min.js +2 -2
  174. package/dist/curry.js +2 -2
  175. package/dist/curry.min.js +2 -2
  176. package/dist/curry.mjs +2 -2
  177. package/dist/eq.es.js +172 -49
  178. package/dist/eq.es.min.js +3 -3
  179. package/dist/eq.js +172 -49
  180. package/dist/eq.min.js +3 -3
  181. package/dist/eq.mjs +172 -49
  182. package/dist/every.es.js +194 -0
  183. package/dist/every.es.min.js +7 -0
  184. package/dist/every.js +201 -0
  185. package/dist/every.min.js +8 -0
  186. package/dist/every.mjs +194 -0
  187. package/dist/filter.es.js +14 -108
  188. package/dist/filter.es.min.js +3 -3
  189. package/dist/filter.js +14 -108
  190. package/dist/filter.min.js +3 -3
  191. package/dist/filter.mjs +14 -108
  192. package/dist/flatMap.es.js +27 -214
  193. package/dist/flatMap.es.min.js +3 -3
  194. package/dist/flatMap.js +27 -214
  195. package/dist/flatMap.min.js +3 -3
  196. package/dist/flatMap.mjs +27 -214
  197. package/dist/{x/forEach.es.js → forEach.es.js} +52 -70
  198. package/dist/forEach.es.min.js +7 -0
  199. package/dist/{x/forEach.js → forEach.js} +52 -70
  200. package/dist/forEach.min.js +8 -0
  201. package/dist/{x/forEach.mjs → forEach.mjs} +52 -70
  202. package/dist/get.es.js +60 -5
  203. package/dist/get.es.min.js +3 -3
  204. package/dist/get.js +60 -5
  205. package/dist/get.min.js +3 -3
  206. package/dist/get.mjs +60 -5
  207. package/dist/gt.es.js +171 -48
  208. package/dist/gt.es.min.js +3 -3
  209. package/dist/gt.js +171 -48
  210. package/dist/gt.min.js +3 -3
  211. package/dist/gt.mjs +171 -48
  212. package/dist/gte.es.js +171 -48
  213. package/dist/gte.es.min.js +3 -3
  214. package/dist/gte.js +171 -48
  215. package/dist/gte.min.js +3 -3
  216. package/dist/gte.mjs +171 -48
  217. package/dist/lt.es.js +171 -48
  218. package/dist/lt.es.min.js +3 -3
  219. package/dist/lt.js +171 -48
  220. package/dist/lt.min.js +3 -3
  221. package/dist/lt.mjs +171 -48
  222. package/dist/lte.es.js +171 -48
  223. package/dist/lte.es.min.js +3 -3
  224. package/dist/lte.js +171 -48
  225. package/dist/lte.min.js +3 -3
  226. package/dist/lte.mjs +171 -48
  227. package/dist/map.es.js +12 -101
  228. package/dist/map.es.min.js +3 -3
  229. package/dist/map.js +12 -101
  230. package/dist/map.min.js +3 -3
  231. package/dist/map.mjs +12 -101
  232. package/dist/not.es.js +75 -14
  233. package/dist/not.es.min.js +3 -3
  234. package/dist/not.js +75 -14
  235. package/dist/not.min.js +3 -3
  236. package/dist/not.mjs +75 -14
  237. package/dist/omit.es.js +7 -2
  238. package/dist/omit.es.min.js +3 -3
  239. package/dist/omit.js +7 -2
  240. package/dist/omit.min.js +3 -3
  241. package/dist/omit.mjs +7 -2
  242. package/dist/or.es.js +99 -31
  243. package/dist/or.es.min.js +3 -3
  244. package/dist/or.js +99 -31
  245. package/dist/or.min.js +3 -3
  246. package/dist/or.mjs +99 -31
  247. package/dist/pick.es.js +8 -3
  248. package/dist/pick.es.min.js +3 -3
  249. package/dist/pick.js +8 -3
  250. package/dist/pick.min.js +3 -3
  251. package/dist/pick.mjs +8 -3
  252. package/dist/pipe.es.js +42 -46
  253. package/dist/pipe.es.min.js +3 -3
  254. package/dist/pipe.js +42 -46
  255. package/dist/pipe.min.js +3 -3
  256. package/dist/pipe.mjs +42 -46
  257. package/dist/reduce.es.js +52 -94
  258. package/dist/reduce.es.min.js +3 -3
  259. package/dist/reduce.js +52 -94
  260. package/dist/reduce.min.js +3 -3
  261. package/dist/reduce.mjs +52 -94
  262. package/dist/rubico.es.js +762 -883
  263. package/dist/rubico.es.min.js +3 -3
  264. package/dist/rubico.global.js +2794 -0
  265. package/dist/rubico.global.min.js +8 -0
  266. package/dist/rubico.js +739 -869
  267. package/dist/rubico.min.js +3 -3
  268. package/dist/rubico.mjs +762 -883
  269. package/dist/set.es.js +18 -3
  270. package/dist/set.es.min.js +3 -3
  271. package/dist/set.js +18 -3
  272. package/dist/set.min.js +3 -3
  273. package/dist/set.mjs +18 -3
  274. package/dist/{any.js → some.es.js} +64 -54
  275. package/dist/some.es.min.js +7 -0
  276. package/dist/{any.mjs → some.js} +72 -48
  277. package/dist/some.min.js +8 -0
  278. package/dist/{any.es.js → some.mjs} +65 -48
  279. package/dist/switchCase.es.js +55 -5
  280. package/dist/switchCase.es.min.js +3 -3
  281. package/dist/switchCase.js +55 -5
  282. package/dist/switchCase.min.js +3 -3
  283. package/dist/switchCase.mjs +55 -5
  284. package/dist/tap.es.js +2 -9
  285. package/dist/tap.es.min.js +3 -3
  286. package/dist/tap.js +2 -9
  287. package/dist/tap.min.js +3 -3
  288. package/dist/tap.mjs +2 -9
  289. package/dist/thunkify.es.js +45 -2
  290. package/dist/thunkify.es.min.js +3 -3
  291. package/dist/thunkify.js +45 -2
  292. package/dist/thunkify.min.js +3 -3
  293. package/dist/thunkify.mjs +45 -2
  294. package/dist/transform.es.js +35 -71
  295. package/dist/transform.es.min.js +3 -3
  296. package/dist/transform.js +35 -71
  297. package/dist/transform.min.js +3 -3
  298. package/dist/transform.mjs +35 -71
  299. package/dist/tryCatch.es.js +33 -17
  300. package/dist/tryCatch.es.min.js +3 -3
  301. package/dist/tryCatch.js +33 -17
  302. package/dist/tryCatch.min.js +3 -3
  303. package/dist/tryCatch.mjs +33 -17
  304. package/dist/x/append.es.js +2 -2
  305. package/dist/x/append.es.min.js +2 -2
  306. package/dist/x/append.js +2 -2
  307. package/dist/x/append.min.js +2 -2
  308. package/dist/x/append.mjs +2 -2
  309. package/dist/x/callProp.es.js +2 -2
  310. package/dist/x/callProp.es.min.js +2 -2
  311. package/dist/x/callProp.js +2 -2
  312. package/dist/x/callProp.min.js +2 -2
  313. package/dist/x/callProp.mjs +2 -2
  314. package/dist/x/defaultsDeep.es.js +2 -2
  315. package/dist/x/defaultsDeep.es.min.js +2 -2
  316. package/dist/x/defaultsDeep.js +2 -2
  317. package/dist/x/defaultsDeep.min.js +2 -2
  318. package/dist/x/defaultsDeep.mjs +2 -2
  319. package/dist/x/differenceWith.es.js +7 -7
  320. package/dist/x/differenceWith.es.min.js +3 -3
  321. package/dist/x/differenceWith.js +7 -7
  322. package/dist/x/differenceWith.min.js +2 -2
  323. package/dist/x/differenceWith.mjs +7 -7
  324. package/dist/x/filterOut.es.js +60 -117
  325. package/dist/x/filterOut.es.min.js +3 -3
  326. package/dist/x/filterOut.js +60 -117
  327. package/dist/x/filterOut.min.js +3 -3
  328. package/dist/x/filterOut.mjs +60 -117
  329. package/dist/x/find.es.js +2 -2
  330. package/dist/x/find.es.min.js +2 -2
  331. package/dist/x/find.js +2 -2
  332. package/dist/x/find.min.js +2 -2
  333. package/dist/x/find.mjs +2 -2
  334. package/dist/x/findIndex.es.js +2 -2
  335. package/dist/x/findIndex.es.min.js +2 -2
  336. package/dist/x/findIndex.js +2 -2
  337. package/dist/x/findIndex.min.js +2 -2
  338. package/dist/x/findIndex.mjs +2 -2
  339. package/dist/x/first.es.js +2 -2
  340. package/dist/x/first.es.min.js +2 -2
  341. package/dist/x/first.js +2 -2
  342. package/dist/x/first.min.js +2 -2
  343. package/dist/x/first.mjs +2 -2
  344. package/dist/x/flatten.es.js +20 -207
  345. package/dist/x/flatten.es.min.js +3 -3
  346. package/dist/x/flatten.js +20 -207
  347. package/dist/x/flatten.min.js +3 -3
  348. package/dist/x/flatten.mjs +20 -207
  349. package/dist/x/groupBy.es.js +52 -94
  350. package/dist/x/groupBy.es.min.js +3 -3
  351. package/dist/x/groupBy.js +52 -94
  352. package/dist/x/groupBy.min.js +3 -3
  353. package/dist/x/groupBy.mjs +52 -94
  354. package/dist/x/has.es.js +2 -2
  355. package/dist/x/has.es.min.js +2 -2
  356. package/dist/x/has.js +2 -2
  357. package/dist/x/has.min.js +2 -2
  358. package/dist/x/has.mjs +2 -2
  359. package/dist/x/identity.es.js +2 -2
  360. package/dist/x/identity.es.min.js +2 -2
  361. package/dist/x/identity.js +2 -2
  362. package/dist/x/identity.min.js +2 -2
  363. package/dist/x/identity.mjs +2 -2
  364. package/dist/x/includes.es.js +2 -2
  365. package/dist/x/includes.es.min.js +2 -2
  366. package/dist/x/includes.js +2 -2
  367. package/dist/x/includes.min.js +2 -2
  368. package/dist/x/includes.mjs +2 -2
  369. package/dist/x/isDeepEqual.es.js +2 -2
  370. package/dist/x/isDeepEqual.es.min.js +2 -2
  371. package/dist/x/isDeepEqual.js +2 -2
  372. package/dist/x/isDeepEqual.min.js +2 -2
  373. package/dist/x/isDeepEqual.mjs +2 -2
  374. package/dist/x/isEmpty.es.js +2 -2
  375. package/dist/x/isEmpty.es.min.js +2 -2
  376. package/dist/x/isEmpty.js +2 -2
  377. package/dist/x/isEmpty.min.js +2 -2
  378. package/dist/x/isEmpty.mjs +2 -2
  379. package/dist/x/isEqual.es.js +2 -2
  380. package/dist/x/isEqual.es.min.js +2 -2
  381. package/dist/x/isEqual.js +2 -2
  382. package/dist/x/isEqual.min.js +2 -2
  383. package/dist/x/isEqual.mjs +2 -2
  384. package/dist/x/isFunction.es.js +2 -2
  385. package/dist/x/isFunction.es.min.js +2 -2
  386. package/dist/x/isFunction.js +2 -2
  387. package/dist/x/isFunction.min.js +2 -2
  388. package/dist/x/isFunction.mjs +2 -2
  389. package/dist/x/isIn.es.js +2 -2
  390. package/dist/x/isIn.es.min.js +2 -2
  391. package/dist/x/isIn.js +2 -2
  392. package/dist/x/isIn.min.js +2 -2
  393. package/dist/x/isIn.mjs +2 -2
  394. package/dist/x/isObject.es.js +2 -2
  395. package/dist/x/isObject.es.min.js +2 -2
  396. package/dist/x/isObject.js +2 -2
  397. package/dist/x/isObject.min.js +2 -2
  398. package/dist/x/isObject.mjs +2 -2
  399. package/dist/x/isString.es.js +2 -2
  400. package/dist/x/isString.es.min.js +2 -2
  401. package/dist/x/isString.js +2 -2
  402. package/dist/x/isString.min.js +2 -2
  403. package/dist/x/isString.mjs +2 -2
  404. package/dist/x/keys.es.js +2 -2
  405. package/dist/x/keys.es.min.js +2 -2
  406. package/dist/x/keys.js +2 -2
  407. package/dist/x/keys.min.js +2 -2
  408. package/dist/x/keys.mjs +2 -2
  409. package/dist/x/last.es.js +2 -2
  410. package/dist/x/last.es.min.js +2 -2
  411. package/dist/x/last.js +2 -2
  412. package/dist/x/last.min.js +2 -2
  413. package/dist/x/last.mjs +2 -2
  414. package/dist/x/maxBy.es.js +59 -6
  415. package/dist/x/maxBy.es.min.js +3 -3
  416. package/dist/x/maxBy.js +59 -6
  417. package/dist/x/maxBy.min.js +3 -3
  418. package/dist/x/maxBy.mjs +59 -6
  419. package/dist/x/noop.es.js +2 -2
  420. package/dist/x/noop.es.min.js +2 -2
  421. package/dist/x/noop.js +2 -2
  422. package/dist/x/noop.min.js +2 -2
  423. package/dist/x/noop.mjs +2 -2
  424. package/dist/x/pluck.es.js +32 -103
  425. package/dist/x/pluck.es.min.js +3 -3
  426. package/dist/x/pluck.js +32 -103
  427. package/dist/x/pluck.min.js +3 -3
  428. package/dist/x/pluck.mjs +32 -103
  429. package/dist/x/prepend.es.js +2 -2
  430. package/dist/x/prepend.es.min.js +2 -2
  431. package/dist/x/prepend.js +2 -2
  432. package/dist/x/prepend.min.js +2 -2
  433. package/dist/x/prepend.mjs +2 -2
  434. package/dist/x/size.es.js +2 -2
  435. package/dist/x/size.es.min.js +2 -2
  436. package/dist/x/size.js +2 -2
  437. package/dist/x/size.min.js +2 -2
  438. package/dist/x/size.mjs +2 -2
  439. package/dist/x/trace.es.js +2 -9
  440. package/dist/x/trace.es.min.js +3 -3
  441. package/dist/x/trace.js +2 -9
  442. package/dist/x/trace.min.js +3 -3
  443. package/dist/x/trace.mjs +2 -9
  444. package/dist/x/unionWith.es.js +2 -2
  445. package/dist/x/unionWith.es.min.js +2 -2
  446. package/dist/x/unionWith.js +2 -2
  447. package/dist/x/unionWith.min.js +2 -2
  448. package/dist/x/unionWith.mjs +2 -2
  449. package/dist/x/uniq.es.js +2 -2
  450. package/dist/x/uniq.es.min.js +2 -2
  451. package/dist/x/uniq.js +2 -2
  452. package/dist/x/uniq.min.js +2 -2
  453. package/dist/x/uniq.mjs +2 -2
  454. package/dist/x/unless.es.js +2 -2
  455. package/dist/x/unless.es.min.js +2 -2
  456. package/dist/x/unless.js +2 -2
  457. package/dist/x/unless.min.js +2 -2
  458. package/dist/x/unless.mjs +2 -2
  459. package/dist/x/values.es.js +2 -2
  460. package/dist/x/values.es.min.js +2 -2
  461. package/dist/x/values.js +2 -2
  462. package/dist/x/values.min.js +2 -2
  463. package/dist/x/values.mjs +2 -2
  464. package/dist/x/when.es.js +2 -2
  465. package/dist/x/when.es.min.js +2 -2
  466. package/dist/x/when.js +2 -2
  467. package/dist/x/when.min.js +2 -2
  468. package/dist/x/when.mjs +2 -2
  469. package/dist-test.js +31 -2042
  470. package/eq.js +21 -63
  471. package/es.js +739 -869
  472. package/every.js +94 -0
  473. package/filter.js +23 -91
  474. package/flatMap.js +75 -70
  475. package/forEach.js +82 -0
  476. package/get.js +23 -6
  477. package/global.js +6 -4
  478. package/gt.js +15 -58
  479. package/gte.js +14 -57
  480. package/index.js +739 -869
  481. package/lt.js +17 -60
  482. package/lte.js +14 -57
  483. package/map.js +9 -94
  484. package/memory-usage/reduce.js +2 -2
  485. package/not.js +27 -45
  486. package/omit.js +4 -0
  487. package/or.js +50 -33
  488. package/package.json +7 -7
  489. package/pick.js +5 -1
  490. package/pipe.js +13 -50
  491. package/reduce.js +42 -51
  492. package/rubico.js +22 -11
  493. package/set.js +43 -10
  494. package/some.js +105 -0
  495. package/switchCase.js +13 -3
  496. package/tap.js +0 -24
  497. package/test.js +847 -1096
  498. package/thunkify.js +9 -0
  499. package/tmp.js +1 -0
  500. package/transform.js +31 -16
  501. package/tryCatch.js +19 -15
  502. package/x/differenceWith.js +3 -3
  503. package/x/filterOut.test.js +6 -6
  504. package/x/flatten.js +1 -1
  505. package/x/flatten.test.js +0 -8
  506. package/x/index.js +0 -2
  507. package/x/pluck.js +18 -27
  508. package/x/pluck.test.js +3 -7
  509. package/x/timeInLoop.js +16 -25
  510. package/x/timeInLoop.test.js +8 -4
  511. package/any.js +0 -82
  512. package/dist/__.min.mjs +0 -7
  513. package/dist/all.min.mjs +0 -7
  514. package/dist/always.min.mjs +0 -7
  515. package/dist/and.min.mjs +0 -7
  516. package/dist/any.es.min.js +0 -7
  517. package/dist/any.min.js +0 -8
  518. package/dist/any.min.mjs +0 -7
  519. package/dist/assign.min.mjs +0 -7
  520. package/dist/curry.min.mjs +0 -7
  521. package/dist/eq.min.mjs +0 -7
  522. package/dist/filter.min.mjs +0 -7
  523. package/dist/flatMap.min.mjs +0 -7
  524. package/dist/fork.es.js +0 -159
  525. package/dist/fork.es.min.js +0 -7
  526. package/dist/fork.js +0 -166
  527. package/dist/fork.min.js +0 -8
  528. package/dist/fork.min.mjs +0 -7
  529. package/dist/fork.mjs +0 -159
  530. package/dist/get.min.mjs +0 -7
  531. package/dist/gt.min.mjs +0 -7
  532. package/dist/gte.min.mjs +0 -7
  533. package/dist/lt.min.mjs +0 -7
  534. package/dist/lte.min.mjs +0 -7
  535. package/dist/map.min.mjs +0 -7
  536. package/dist/not.min.mjs +0 -7
  537. package/dist/omit.min.mjs +0 -7
  538. package/dist/or.min.mjs +0 -7
  539. package/dist/pick.min.mjs +0 -7
  540. package/dist/pipe.min.mjs +0 -7
  541. package/dist/reduce.min.mjs +0 -7
  542. package/dist/rubico.min.mjs +0 -7
  543. package/dist/set.min.mjs +0 -7
  544. package/dist/switchCase.min.mjs +0 -7
  545. package/dist/tap.min.mjs +0 -7
  546. package/dist/thunkify.min.mjs +0 -7
  547. package/dist/transform.min.mjs +0 -7
  548. package/dist/tryCatch.min.mjs +0 -7
  549. package/dist/x/append.min.mjs +0 -7
  550. package/dist/x/callProp.min.mjs +0 -7
  551. package/dist/x/defaultsDeep.min.mjs +0 -7
  552. package/dist/x/differenceWith.min.mjs +0 -7
  553. package/dist/x/filterOut.min.mjs +0 -7
  554. package/dist/x/find.min.mjs +0 -7
  555. package/dist/x/findIndex.min.mjs +0 -7
  556. package/dist/x/first.min.mjs +0 -7
  557. package/dist/x/flatten.min.mjs +0 -7
  558. package/dist/x/forEach.es.min.js +0 -7
  559. package/dist/x/forEach.min.js +0 -8
  560. package/dist/x/forEach.min.mjs +0 -7
  561. package/dist/x/groupBy.min.mjs +0 -7
  562. package/dist/x/has.min.mjs +0 -7
  563. package/dist/x/identity.min.mjs +0 -7
  564. package/dist/x/includes.min.mjs +0 -7
  565. package/dist/x/isDeepEqual.min.mjs +0 -7
  566. package/dist/x/isEmpty.min.mjs +0 -7
  567. package/dist/x/isEqual.min.mjs +0 -7
  568. package/dist/x/isFunction.min.mjs +0 -7
  569. package/dist/x/isIn.min.mjs +0 -7
  570. package/dist/x/isObject.min.mjs +0 -7
  571. package/dist/x/isString.min.mjs +0 -7
  572. package/dist/x/keys.min.mjs +0 -7
  573. package/dist/x/last.min.mjs +0 -7
  574. package/dist/x/maxBy.min.mjs +0 -7
  575. package/dist/x/noop.min.mjs +0 -7
  576. package/dist/x/pluck.min.mjs +0 -7
  577. package/dist/x/prepend.min.mjs +0 -7
  578. package/dist/x/size.min.mjs +0 -7
  579. package/dist/x/trace.min.mjs +0 -7
  580. package/dist/x/unionWith.min.mjs +0 -7
  581. package/dist/x/uniq.min.mjs +0 -7
  582. package/dist/x/unless.min.mjs +0 -7
  583. package/dist/x/values.min.mjs +0 -7
  584. package/dist/x/when.min.mjs +0 -7
  585. package/distributor.js +0 -495
  586. package/fork.js +0 -101
  587. package/x/forEach.js +0 -93
  588. package/x/forEach.test.js +0 -218
  589. /package/{benchmarks → archive/benchmarks-v1.9.7}/any.js +0 -0
  590. /package/{x/forEach.benchmark.js → archive/benchmarks-v1.9.7/forEach.js} +0 -0
  591. /package/{benchmarks → archive/benchmarks-v1.9.7}/fork.js +0 -0
  592. /package/{benchmarks → archive/benchmarks-v1.9.7}/integration.js +0 -0
  593. /package/{benchmarks → archive/benchmarks-v1.9.7}/misc.js +0 -0
package/dist/flatMap.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.1
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
7
 
@@ -11,6 +11,8 @@
11
11
  else (root.flatMap = flatMap) // Browser
12
12
  }(typeof globalThis == 'object' ? globalThis : this, (function () { 'use strict'
13
13
 
14
+ const isPromise = value => value != null && typeof value.then == 'function'
15
+
14
16
  const isArray = Array.isArray
15
17
 
16
18
  const objectValues = Object.values
@@ -62,8 +64,6 @@ const curry3 = function (baseFunc, arg0, arg1, arg2) {
62
64
  return curry3ResolveArg2(baseFunc, arg0, arg1)
63
65
  }
64
66
 
65
- const isPromise = value => value != null && typeof value.then == 'function'
66
-
67
67
  const iteratorReduceAsync = async function (
68
68
  iterator, reducer, result,
69
69
  ) {
@@ -295,13 +295,6 @@ const curry5 = function (baseFunc, arg0, arg1, arg2, arg3, arg4) {
295
295
 
296
296
  const objectKeys = Object.keys
297
297
 
298
- const objectGetFirstKey = function (object) {
299
- for (const key in object) {
300
- return key
301
- }
302
- return undefined
303
- }
304
-
305
298
  const objectReduceAsync = async function (object, reducer, result, keys, index) {
306
299
  const keysLength = keys.length
307
300
  while (++index < keysLength) {
@@ -362,24 +355,6 @@ const mapReduce = function (map, reducer, result) {
362
355
  return result
363
356
  }
364
357
 
365
- const funcConcatSync = (
366
- funcA, funcB,
367
- ) => function pipedFunction(...args) {
368
- return funcB(funcA(...args))
369
- }
370
-
371
- const generatorFunctionReduce = (
372
- generatorFunction, reducer, result,
373
- ) => funcConcatSync(
374
- generatorFunction,
375
- curry3(iteratorReduce, __, reducer, result))
376
-
377
- const asyncGeneratorFunctionReduce = (
378
- asyncGeneratorFunction, reducer, result,
379
- ) => funcConcatSync(
380
- asyncGeneratorFunction,
381
- curry3(asyncIteratorReduce, __, reducer, result))
382
-
383
358
  const reducerConcat = (
384
359
  reducerA, reducerB,
385
360
  ) => function pipedReducer(result, item) {
@@ -389,26 +364,10 @@ const reducerConcat = (
389
364
  : reducerB(intermediate, item)
390
365
  }
391
366
 
392
- const genericReduce = function (args, reducer, result) {
393
- const collection = args[0]
367
+ const genericReduce = function (collection, reducer, result) {
394
368
  if (isArray(collection)) {
395
369
  return arrayReduce(collection, reducer, result)
396
370
  }
397
- if (typeof collection == 'function') {
398
- if (isGeneratorFunction(collection)) {
399
- return generatorFunctionReduce(collection, reducer, result)
400
- }
401
- if (isAsyncGeneratorFunction(collection)) {
402
- return asyncGeneratorFunctionReduce(collection, reducer, result)
403
- }
404
- return curryArgs3(
405
- genericReduce,
406
- __,
407
- args.length == 1
408
- ? reducerConcat(reducer, collection)
409
- : args.reduce(reducerConcat, reducer),
410
- result)
411
- }
412
371
  if (collection == null) {
413
372
  return result === undefined
414
373
  ? curry2(reducer, collection, __)
@@ -467,7 +426,7 @@ const FlatMappingIterator = function (iterator, flatMapper) {
467
426
  return iteration
468
427
  }
469
428
  const monadAsArray = genericReduce(
470
- [flatMapper(iteration.value)],
429
+ flatMapper(iteration.value),
471
430
  arrayPush,
472
431
  []) // this will always have at least one item
473
432
  if (monadAsArray.length > 1) {
@@ -513,12 +472,12 @@ const FlatMappingAsyncIterator = function (asyncIterator, flatMapper) {
513
472
  } else {
514
473
  const monad = flatMapper(value)
515
474
  if (isPromise(monad)) {
516
- const bufferLoading = monad.then(
517
- curryArgs3(genericReduce, __, arrayPush, buffer))
475
+ const bufferLoading =
476
+ monad.then(curry3(genericReduce, __, arrayPush, buffer))
518
477
  const promise = bufferLoading.then(() => promises.delete(promise))
519
478
  promises.add(promise)
520
479
  } else {
521
- const bufferLoading = genericReduce([monad], arrayPush, buffer)
480
+ const bufferLoading = genericReduce(monad, arrayPush, buffer)
522
481
  if (isPromise(bufferLoading)) {
523
482
  const promise = bufferLoading.then(() => promises.delete(promise))
524
483
  promises.add(promise)
@@ -538,8 +497,6 @@ const FlatMappingAsyncIterator = function (asyncIterator, flatMapper) {
538
497
  }
539
498
  }
540
499
 
541
- const isBinary = ArrayBuffer.isView
542
-
543
500
  const always = value => function getter() { return value }
544
501
 
545
502
  const getArg1 = (arg0, arg1) => arg1
@@ -548,6 +505,12 @@ const identity = value => value
548
505
 
549
506
  const promiseAll = Promise.all.bind(Promise)
550
507
 
508
+ const funcConcatSync = (
509
+ funcA, funcB,
510
+ ) => function pipedFunction(...args) {
511
+ return funcB(funcA(...args))
512
+ }
513
+
551
514
  const asyncIteratorForEach = async function (asyncIterator, callback) {
552
515
  const promises = []
553
516
  for await (const item of asyncIterator) {
@@ -817,165 +780,10 @@ const stringFlatMap = function (string, flatMapper) {
817
780
  : arrayFlattenToString(monadArray)
818
781
  }
819
782
 
820
- const streamWrite = function (stream, chunk, encoding, callback) {
821
- stream.write(chunk, encoding, callback)
822
- return stream
823
- }
824
-
825
- const streamFlatExtend = async function (stream, item) {
826
- const resultStreamWrite = curry2(streamWrite, stream, __),
827
- // resultStreamWriteReducer = (_, subItem) => stream.write(subItem),
828
- resultStreamWriteReducer = funcConcatSync(getArg1, resultStreamWrite),
829
- promises = []
830
- if (isArray(item)) {
831
- const itemLength = item.length
832
- let itemIndex = -1
833
- while (++itemIndex < itemLength) {
834
- stream.write(item[itemIndex])
835
- }
836
- } else if (item == null) {
837
- stream.write(item)
838
- } else if (typeof item[symbolIterator] == 'function') {
839
- for (const subItem of item) {
840
- stream.write(subItem)
841
- }
842
- } else if (typeof item[symbolAsyncIterator] == 'function') {
843
- promises.push(
844
- asyncIteratorForEach(item[symbolAsyncIterator](), resultStreamWrite))
845
- } else if (typeof item.chain == 'function') {
846
- const monadValue = item.chain(identity)
847
- isPromise(monadValue)
848
- ? promises.push(monadValue.then(resultStreamWrite))
849
- : stream.write(monadValue)
850
- } else if (typeof item.flatMap == 'function') {
851
- const monadValue = item.flatMap(identity)
852
- isPromise(monadValue)
853
- ? promises.push(monadValue.then(resultStreamWrite))
854
- : stream.write(monadValue)
855
- } else if (typeof item.reduce == 'function') {
856
- const folded = item.reduce(resultStreamWriteReducer, null)
857
- isPromise(folded) && promises.push(folded)
858
- } else if (item.constructor == Object) {
859
- for (const key in item) {
860
- stream.write(item[key])
861
- }
862
- } else {
863
- stream.write(item)
864
- }
865
- return promises.length == 0
866
- ? stream
867
- : promiseAll(promises).then(always(stream))
868
- }
869
-
870
- const streamFlatMap = async function (stream, flatMapper) {
871
- const promises = new Set()
872
- for await (const item of stream) {
873
- const monad = flatMapper(item)
874
- if (isPromise(monad)) {
875
- const selfDeletingPromise = monad.then(
876
- curry2(streamFlatExtend, stream, __)).then(
877
- () => promises.delete(selfDeletingPromise))
878
- promises.add(selfDeletingPromise)
879
- } else {
880
- const streamFlatteningOperation = streamFlatExtend(stream, monad)
881
- if (isPromise(streamFlatteningOperation)) {
882
- const selfDeletingPromise = streamFlatteningOperation.then(
883
- () => promises.delete(selfDeletingPromise))
884
- promises.add(selfDeletingPromise)
885
- }
886
- }
887
- }
888
- await promiseAll(promises)
889
- return stream
890
- }
891
-
892
- const globalThisHasBuffer = typeof Buffer == 'function'
893
-
894
- const noop = function () {}
895
-
896
- const bufferAlloc = globalThisHasBuffer ? Buffer.alloc : noop
897
-
898
- const _binaryExtend = function (typedArray, array) {
899
- const offset = typedArray.length
900
- const result = globalThisHasBuffer && typedArray.constructor == Buffer
901
- ? bufferAlloc(offset + array.length)
902
- : new typedArray.constructor(offset + array.length)
903
- result.set(typedArray)
904
- result.set(array, offset)
905
- return result
906
- }
907
-
908
- const binaryExtend = function (typedArray, array) {
909
- if (isArray(array) || isBinary(array)) {
910
- return _binaryExtend(typedArray, array)
911
- }
912
- return _binaryExtend(typedArray, [array])
913
- }
914
-
915
- const arrayJoinToBinary = function (array, init) {
916
- const length = array.length
917
- let index = -1,
918
- result = init
919
- while (++index < length) {
920
- result = binaryExtend(result, array[index])
921
- }
922
- return result
923
- }
924
-
925
- const arrayFlattenToBinary = function (array, result) {
926
- const flattened = arrayFlatten(array)
927
- return isPromise(flattened)
928
- ? flattened.then(curry2(arrayJoinToBinary, __, result))
929
- : arrayJoinToBinary(flattened, result)
930
- }
931
-
932
- const binaryFlatMap = function (binary, flatMapper) {
933
- const monadArray = arrayMap(binary, flatMapper),
934
- result = globalThisHasBuffer && binary.constructor == Buffer
935
- ? bufferAlloc(0)
936
- : new binary.constructor(0)
937
- return isPromise(monadArray)
938
- ? monadArray.then(curry2(arrayFlattenToBinary, __, result))
939
- : arrayFlattenToBinary(monadArray, result)
940
- }
941
-
942
- const reducerFlatMap = (
943
- reducer, flatMapper,
944
- ) => function flatMappingReducer(result, value) {
945
- const monad = flatMapper(value)
946
- return isPromise(monad)
947
- ? monad.then(curryArgs3(genericReduce, __, reducer, result))
948
- : genericReduce([monad], reducer, result)
949
- }
950
-
951
- const generatorFunctionFlatMap = (
952
- generatorFunction, flatMapper,
953
- ) => function* flatMappingGeneratorFunction(...args) {
954
- yield* FlatMappingIterator(generatorFunction(...args), flatMapper)
955
- }
956
-
957
- const asyncGeneratorFunctionFlatMap = (
958
- asyncGeneratorFunction, flatMapper,
959
- ) => async function* flatMappingAsyncGeneratorFunction(...args) {
960
- yield* FlatMappingAsyncIterator(asyncGeneratorFunction(...args), flatMapper)
961
- }
962
-
963
- const flatMap = flatMapper => function flatMapping(value) {
783
+ const _flatMap = function (value, flatMapper) {
964
784
  if (isArray(value)) {
965
785
  return arrayFlatMap(value, flatMapper)
966
786
  }
967
- if (typeof value == 'function') {
968
- if (isGeneratorFunction(value)) {
969
- return generatorFunctionFlatMap(value, flatMapper)
970
- }
971
- if (isAsyncGeneratorFunction(value)) {
972
- return asyncGeneratorFunctionFlatMap(value, flatMapper)
973
- }
974
- return reducerFlatMap(value, flatMapper)
975
- }
976
- if (isBinary(value)) {
977
- return binaryFlatMap(value, flatMapper)
978
- }
979
787
  if (value == null) {
980
788
  return flatMapper(value)
981
789
  }
@@ -994,12 +802,6 @@ const flatMap = flatMapper => function flatMapping(value) {
994
802
  if (typeof value.flatMap == 'function') {
995
803
  return value.flatMap(flatMapper)
996
804
  }
997
- if (
998
- typeof value[symbolAsyncIterator] == 'function'
999
- && typeof value.write == 'function'
1000
- ) {
1001
- return streamFlatMap(value, flatMapper)
1002
- }
1003
805
  const valueConstructor = value.constructor
1004
806
  if (valueConstructor == Object) {
1005
807
  return objectFlatMap(value, flatMapper)
@@ -1013,5 +815,16 @@ const flatMap = flatMapper => function flatMapping(value) {
1013
815
  return flatMapper(value)
1014
816
  }
1015
817
 
818
+ const flatMap = (...args) => {
819
+ const flatMapper = args.pop()
820
+ if (args.length == 0) {
821
+ return curry2(_flatMap, __, flatMapper)
822
+ }
823
+ const collection = args[0]
824
+ return isPromise(collection)
825
+ ? collection.then(curry2(_flatMap, __, flatMapper))
826
+ : _flatMap(args[0], flatMapper)
827
+ }
828
+
1016
829
  return flatMap
1017
830
  }())))
@@ -1,8 +1,8 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.1
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 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.flatMap=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=Array.isArray,t=(Object.values,Object.prototype.toString),e=n=>t.call(n),o=n=>"[object GeneratorFunction]"==e(n),r=n=>"[object AsyncGeneratorFunction]"==e(n),u=Symbol.for("placeholder"),c=function(n,t,e,o){return t==u?((n,t,e)=>function(o){return n(o,t,e)})(n,e,o):e==u?((n,t,e)=>function(o){return n(t,o,e)})(n,t,o):((n,t,e)=>function(o){return n(t,e,o)})(n,t,e)},f=n=>null!=n&&"function"==typeof n.then,i=async function(n,t,e){let o=n.next();if(o.done)return e;for(;!o.done;)e=t(e,o.value),f(e)&&(e=await e),o=n.next();return e},s=function(n,t,e){let o=n.next();if(o.done)return e;for(void 0===e&&(e=o.value,o=n.next());!o.done;){if(e=t(e,o.value),f(e))return e.then(c(i,n,t,u));o=n.next()}return e},l=async function(n,t,e){let o=await n.next();if(o.done)return e;for(void 0===e&&(e=o.value,o=await n.next());!o.done;)e=await t(e,o.value),o=await n.next();return e},a=Symbol.iterator,h=Symbol.asyncIterator,p=function(n,t,e){return t==u?((n,t)=>function(e){return n(e,t)})(n,e):((n,t)=>function(e){return n(t,e)})(n,t)},d=function(n,t,e,o){return t==u?((n,t,e)=>function(...o){return n(o,t,e)})(n,e,o):e==u?((n,t,e)=>function(...o){return n(t,o,e)})(n,t,o):((n,t,e)=>function(...o){return n(t,e,o)})(n,t,e)},y=function(n,t,e,o,r){return t==u?((n,t,e,o)=>function(r){return n(r,t,e,o)})(n,e,o,r):e==u?((n,t,e,o)=>function(r){return n(t,r,e,o)})(n,t,o,r):o==u?((n,t,e,o)=>function(r){return n(t,e,r,o)})(n,t,e,r):((n,t,e,o)=>function(r){return n(t,e,o,r)})(n,t,e,o)},g=async function(n,t,e,o){const r=n.length;for(;++o<r;)e=t(e,n[o],o,n),f(e)&&(e=await e);return e},w=Object.keys,v=async function(n,t,e,o,r){const u=o.length;for(;++r<u;){const u=o[r];e=t(e,n[u],u,n),f(e)&&(e=await e)}return e},b=async function(n,t,e,o){for(const[r,u]of o)e=t(e,u,r,n),f(e)&&(e=await e);return e},j=(n,t)=>function(...e){return t(n(...e))},x=(n,t)=>function(e,o){const r=n(e,o);return f(r)?r.then(p(t,u,o)):t(r,o)},M=function(t,e,i){const m=t[0];return n(m)?function(n,t,e){const o=n.length;let r=-1;for(void 0===e&&(e=n[++r]);++r<o;)if(e=t(e,n[r],r,n),f(e))return e.then(y(g,n,t,u,r));return e}(m,e,i):"function"==typeof m?o(m)?((n,t,e)=>j(n,c(s,u,t,e)))(m,e,i):r(m)?((n,t,e)=>j(n,c(l,u,t,e)))(m,e,i):d(M,u,1==t.length?x(e,m):t.reduce(x,e),i):null==m?void 0===i?p(e,m,u):e(i,m):m.constructor==Map?function(n,t,e){const o=n.entries();if(void 0===e){const n=o.next();if(n.done)return e;e=n.value[1]}for(const[r,c]of o)if(e=t(e,c,r,n),f(e))return e.then(y(b,n,t,u,o));return e}(m,e,i):"function"==typeof m[a]?s(m[a](),e,i):"function"==typeof m[h]?l(m[h](),e,i):"function"==typeof m.reduce?m.reduce(e,i):"function"==typeof m.chain?m.chain(p(e,i,u)):"function"==typeof m.flatMap?m.flatMap(p(e,i,u)):m.constructor==Object?function(n,t,e){const o=w(n),r=o.length;let c=-1;for(void 0===e&&(e=n[o[++c]]);++c<r;){const r=o[c];if(e=t(e,n[r],r,n),f(e))return e.then((i=v,l=t,a=u,h=o,p=c,(s=n)==u?((n,t,e,o,r)=>function(u){return n(u,t,e,o,r)})(i,l,a,h,p):l==u?((n,t,e,o,r)=>function(u){return n(t,u,e,o,r)})(i,s,a,h,p):a==u?((n,t,e,o,r)=>function(u){return n(t,e,u,o,r)})(i,s,l,h,p):h==u?((n,t,e,o,r)=>function(u){return n(t,e,o,u,r)})(i,s,l,a,p):((n,t,e,o,r)=>function(u){return n(t,e,o,r,u)})(i,s,l,a,h)))}var i,s,l,a,h,p;return e}(m,e,i):void 0===i?p(e,m,u):e(i,m)},m=function(n,t){return n.push(t),n},S=function(n,t){let e=[],o=0;return{[a](){return this},next(){if(o<e.length){const n=e[o];return o+=1,{value:n,done:!1}}const r=n.next();if(r.done)return r;const u=M([t(r.value)],m,[]);return u.length>1&&(e=u,o=1),{value:u[0],done:!1}}}},A=Promise.race.bind(Promise),O=n=>new Promise((t=>{setTimeout(t,n)})),I=function(n,t){const e=[],o=new Set;return{isAsyncIteratorDone:!1,[h](){return this},toString:()=>"[object FlatMappingAsyncIterator]",async next(){for(;!this.isAsyncIteratorDone||e.length>0||o.size>0;){if(!this.isAsyncIteratorDone){const{value:r,done:c}=await n.next();if(c)this.isAsyncIteratorDone=c;else{const n=t(r);if(f(n)){const t=n.then(d(M,u,m,e)).then((()=>o.delete(t)));o.add(t)}else{const t=M([n],m,e);if(f(t)){const n=t.then((()=>o.delete(n)));o.add(n)}}}}if(e.length>0)return{value:e.shift(),done:!1};o.size>0&&await A([O(1e3),...o])}return{value:void 0,done:!0}}}},P=ArrayBuffer.isView,B=n=>function(){return n},D=(n,t)=>t,z=n=>n,F=Promise.all.bind(Promise),T=async function(n,t){const e=[];for await(const o of n){const n=t(o);f(n)&&e.push(n)}return 0==e.length?n:F(e).then(B(n))},G=function(t){const e=t.length,o=[],r=[];let c=-1;for(;++c<e;){const e=t[c];if(n(e)){const n=e.length;let t=-1;for(;++t<n;)r.push(e[t])}else if(null==e)r.push(e);else if("function"==typeof e.then)o.push(e.then(p(m,r,u)));else if("function"==typeof e[a])for(const n of e)r.push(n);else if("function"==typeof e[h])o.push(T(e[h](),p(m,r,u)));else if("function"==typeof e.chain){const n=e.chain(z);f(n)?o.push(n.then(p(m,r,u))):r.push(n)}else if("function"==typeof e.flatMap){const n=e.flatMap(z);f(n)?o.push(n.then(p(m,r,u))):r.push(n)}else if("function"==typeof e.reduce){const n=e.reduce(j(D,p(m,r,u)),null);f(n)&&o.push(n)}else if(e.constructor==Object)for(const n in e)r.push(e[n]);else r.push(e)}return 0==o.length?r:F(o).then(B(r))},k=function(n,t){const e=n.length,o=Array(e);let r=-1,u=!1;for(;++r<e;){const e=t(n[r],r,n);f(e)&&(u=!0),o[r]=e}return u?F(o):o},V=n=>new Promise((n=>function(t){const e={};let o=0;for(const r in n){const u=n[r];f(u)?(o+=1,u.then((n=>function(r){e[n]=r,o-=1,0==o&&t(e)})(r))):e[r]=u}0==o&&t(e)})(n)),q=Object.assign,C=function(n){const t=[],e={},o=p(q,e,u),r=j(D,o);for(const u in n){const c=n[u];if(null!=c)if("function"==typeof c[a])for(const n of c)q(e,n);else if("function"==typeof c[h])t.push(T(c[h](),o));else if("function"==typeof c.chain){const n=c.chain(z);f(n)?t.push(n.then(o)):q(e,n)}else if("function"==typeof c.flatMap){const n=c.flatMap(z);f(n)?t.push(n.then(o)):o(n)}else if("function"==typeof c.reduce){const n=c.reduce(r,null);f(n)&&t.push(n)}else q(e,c)}return 0==t.length?e:F(t).then((()=>e))},E=function(n,t){const e=function(n,t){const e={};let o=!1;for(const r in n){const u=t(n[r],r,n);f(u)&&(o=!0),e[r]=u}return o?V(e):e}(n,t);return f(e)?e.then(C):C(e)},H=(n,t,e)=>n[t](e),J=function(t){t.size;const e=[],o=new Set,r=(n,t)=>o.add(t),i=c(H,o,"add",u);for(const u of t)if(n(u)){const n=u.length;let t=-1;for(;++t<n;)o.add(u[t])}else if(null==u)o.add(u);else if("function"==typeof u[a])for(const n of u)o.add(n);else if("function"==typeof u[h])e.push(T(u[h](),i));else if("function"==typeof u.chain){const n=u.chain(z);f(n)?e.push(n.then(i)):o.add(n)}else if("function"==typeof u.flatMap){const n=u.flatMap(z);f(n)?e.push(n.then(i)):o.add(n)}else if("function"==typeof u.reduce){const n=u.reduce(r,null);f(n)&&e.push(n)}else if(u.constructor==Object)for(const n in u)o.add(u[n]);else o.add(u);return 0==e.length?o:F(e).then((()=>o))},K=function(n,t){const e=function(n,t){const e=new Set,o=[];for(const r of n){const i=t(r,r,n);f(i)?o.push(i.then(c(H,e,"add",u))):e.add(i)}return 0==o.length?e:F(o).then(B(e))}(n,t);return f(e)?e.then(J):J(e)},L=(N=G,Q=p(((n,t)=>n.join(t)),u,""),function(...n){const t=N(...n);return f(t)?t.then(Q):Q(t)});var N,Q;const R=function(n,t,e,o){return n.write(t,e,o),n},U=async function(t,e){const o=p(R,t,u),r=j(D,o),c=[];if(n(e)){const n=e.length;let o=-1;for(;++o<n;)t.write(e[o])}else if(null==e)t.write(e);else if("function"==typeof e[a])for(const n of e)t.write(n);else if("function"==typeof e[h])c.push(T(e[h](),o));else if("function"==typeof e.chain){const n=e.chain(z);f(n)?c.push(n.then(o)):t.write(n)}else if("function"==typeof e.flatMap){const n=e.flatMap(z);f(n)?c.push(n.then(o)):t.write(n)}else if("function"==typeof e.reduce){const n=e.reduce(r,null);f(n)&&c.push(n)}else if(e.constructor==Object)for(const n in e)t.write(e[n]);else t.write(e);return 0==c.length?t:F(c).then(B(t))},W="function"==typeof Buffer,X=W?Buffer.alloc:function(){},Y=function(n,t){const e=n.length,o=W&&n.constructor==Buffer?X(e+t.length):new n.constructor(e+t.length);return o.set(n),o.set(t,e),o},Z=function(t,e){return n(e)||P(e)?Y(t,e):Y(t,[e])},$=function(n,t){const e=n.length;let o=-1,r=t;for(;++o<e;)r=Z(r,n[o]);return r},_=function(n,t){const e=G(n);return f(e)?e.then(p($,u,t)):$(e,t)};return t=>function(e){if(n(e))return function(n,t){const e=k(n,t);return f(e)?e.then(G):G(e)}(e,t);if("function"==typeof e)return o(e)?((n,t)=>function*(...e){yield*S(n(...e),t)})(e,t):r(e)?((n,t)=>async function*(...e){yield*I(n(...e),t)})(e,t):((n,t)=>function(e,o){const r=t(o);return f(r)?r.then(d(M,u,n,e)):M([r],n,e)})(e,t);if(P(e))return function(n,t){const e=k(n,t),o=W&&n.constructor==Buffer?X(0):new n.constructor(0);return f(e)?e.then(p(_,u,o)):_(e,o)}(e,t);if(null==e)return t(e);if("function"==typeof e.then)return e.then(t);if("function"==typeof e.next)return a in e?S(e,t):I(e,t);if("function"==typeof e.chain)return e.chain(t);if("function"==typeof e.flatMap)return e.flatMap(t);if("function"==typeof e[h]&&"function"==typeof e.write)return async function(n,t){const e=new Set;for await(const o of n){const r=t(o);if(f(r)){const t=r.then(p(U,n,u)).then((()=>e.delete(t)));e.add(t)}else{const t=U(n,r);if(f(t)){const n=t.then((()=>e.delete(n)));e.add(n)}}}return await F(e),n}(e,t);const c=e.constructor;return c==Object?E(e,t):c==Set?K(e,t):"string"==typeof e||c==String?function(n,t){const e=k(n,t);return f(e)?e.then(L):L(e)}(e,t):t(e)}}());
8
+ !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.flatMap=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=Array.isArray,e=(Object.values,Object.prototype.toString,Symbol.for("placeholder")),o=function(n,t,o,r){return t==e?((n,t,e)=>function(o){return n(o,t,e)})(n,o,r):o==e?((n,t,e)=>function(o){return n(t,o,e)})(n,t,r):((n,t,e)=>function(o){return n(t,e,o)})(n,t,o)},r=async function(t,e,o){let r=t.next();if(r.done)return o;for(;!r.done;)o=e(o,r.value),n(o)&&(o=await o),r=t.next();return o},u=Symbol.iterator,f=Symbol.asyncIterator,c=function(n,t,o){return t==e?((n,t)=>function(e){return n(e,t)})(n,o):((n,t)=>function(e){return n(t,e)})(n,t)},i=function(n,t,o,r,u){return t==e?((n,t,e,o)=>function(r){return n(r,t,e,o)})(n,o,r,u):o==e?((n,t,e,o)=>function(r){return n(t,r,e,o)})(n,t,r,u):r==e?((n,t,e,o)=>function(r){return n(t,e,r,o)})(n,t,o,u):((n,t,e,o)=>function(r){return n(t,e,o,r)})(n,t,o,r)},s=async function(t,e,o,r){const u=t.length;for(;++r<u;)o=e(o,t[r],r,t),n(o)&&(o=await o);return o},l=Object.keys,a=async function(t,e,o,r,u){const f=r.length;for(;++u<f;){const f=r[u];o=e(o,t[f],f,t),n(o)&&(o=await o)}return o},h=async function(t,e,o,r){for(const[u,f]of r)o=e(o,f,u,t),n(o)&&(o=await o);return o},p=function(p,d,y){return t(p)?function(t,o,r){const u=t.length;let f=-1;for(void 0===r&&(r=t[++f]);++f<u;)if(r=o(r,t[f],f,t),n(r))return r.then(i(s,t,o,e,f));return r}(p,d,y):null==p?void 0===y?c(d,p,e):d(y,p):p.constructor==Map?function(t,o,r){const u=t.entries();if(void 0===r){const n=u.next();if(n.done)return r;r=n.value[1]}for(const[f,c]of u)if(r=o(r,c,f,t),n(r))return r.then(i(h,t,o,e,u));return r}(p,d,y):"function"==typeof p[u]?function(t,u,f){let c=t.next();if(c.done)return f;for(void 0===f&&(f=c.value,c=t.next());!c.done;){if(f=u(f,c.value),n(f))return f.then(o(r,t,u,e));c=t.next()}return f}(p[u](),d,y):"function"==typeof p[f]?async function(n,t,e){let o=await n.next();if(o.done)return e;for(void 0===e&&(e=o.value,o=await n.next());!o.done;)e=await t(e,o.value),o=await n.next();return e}(p[f](),d,y):"function"==typeof p.reduce?p.reduce(d,y):"function"==typeof p.chain?p.chain(c(d,y,e)):"function"==typeof p.flatMap?p.flatMap(c(d,y,e)):p.constructor==Object?function(t,o,r){const u=l(t),f=u.length;let c=-1;for(void 0===r&&(r=t[u[++c]]);++c<f;){const f=u[c];if(r=o(r,t[f],f,t),n(r))return r.then((i=a,h=o,p=e,d=u,y=c,(s=t)==e?((n,t,e,o,r)=>function(u){return n(u,t,e,o,r)})(i,h,p,d,y):h==e?((n,t,e,o,r)=>function(u){return n(t,u,e,o,r)})(i,s,p,d,y):p==e?((n,t,e,o,r)=>function(u){return n(t,e,u,o,r)})(i,s,h,d,y):d==e?((n,t,e,o,r)=>function(u){return n(t,e,o,u,r)})(i,s,h,p,y):((n,t,e,o,r)=>function(u){return n(t,e,o,r,u)})(i,s,h,p,d)))}var i,s,h,p,d,y;return r}(p,d,y):void 0===y?c(d,p,e):d(y,p)},d=function(n,t){return n.push(t),n},y=Promise.race.bind(Promise),g=n=>new Promise((t=>{setTimeout(t,n)})),v=n=>function(){return n},b=(n,t)=>t,w=n=>n,x=Promise.all.bind(Promise),M=(n,t)=>function(...e){return t(n(...e))},j=async function(t,e){const o=[];for await(const r of t){const t=e(r);n(t)&&o.push(t)}return 0==o.length?t:x(o).then(v(t))},m=function(o){const r=o.length,i=[],s=[];let l=-1;for(;++l<r;){const r=o[l];if(t(r)){const n=r.length;let t=-1;for(;++t<n;)s.push(r[t])}else if(null==r)s.push(r);else if("function"==typeof r.then)i.push(r.then(c(d,s,e)));else if("function"==typeof r[u])for(const n of r)s.push(n);else if("function"==typeof r[f])i.push(j(r[f](),c(d,s,e)));else if("function"==typeof r.chain){const t=r.chain(w);n(t)?i.push(t.then(c(d,s,e))):s.push(t)}else if("function"==typeof r.flatMap){const t=r.flatMap(w);n(t)?i.push(t.then(c(d,s,e))):s.push(t)}else if("function"==typeof r.reduce){const t=r.reduce(M(b,c(d,s,e)),null);n(t)&&i.push(t)}else if(r.constructor==Object)for(const n in r)s.push(r[n]);else s.push(r)}return 0==i.length?s:x(i).then(v(s))},S=function(t,e){const o=t.length,r=Array(o);let u=-1,f=!1;for(;++u<o;){const o=e(t[u],u,t);n(o)&&(f=!0),r[u]=o}return f?x(r):r},A=t=>new Promise((t=>function(e){const o={};let r=0;for(const u in t){const f=t[u];n(f)?(r+=1,f.then((n=>function(t){o[n]=t,r-=1,0==r&&e(o)})(u))):o[u]=f}0==r&&e(o)})(t)),O=Object.assign,I=function(t){const o=[],r={},i=c(O,r,e),s=M(b,i);for(const e in t){const c=t[e];if(null!=c)if("function"==typeof c[u])for(const n of c)O(r,n);else if("function"==typeof c[f])o.push(j(c[f](),i));else if("function"==typeof c.chain){const t=c.chain(w);n(t)?o.push(t.then(i)):O(r,t)}else if("function"==typeof c.flatMap){const t=c.flatMap(w);n(t)?o.push(t.then(i)):i(t)}else if("function"==typeof c.reduce){const t=c.reduce(s,null);n(t)&&o.push(t)}else O(r,c)}return 0==o.length?r:x(o).then((()=>r))},P=function(t,e){const o=function(t,e){const o={};let r=!1;for(const u in t){const f=e(t[u],u,t);n(f)&&(r=!0),o[u]=f}return r?A(o):o}(t,e);return n(o)?o.then(I):I(o)},D=(n,t,e)=>n[t](e),z=function(r){r.size;const c=[],i=new Set,s=(n,t)=>i.add(t),l=o(D,i,"add",e);for(const e of r)if(t(e)){const n=e.length;let t=-1;for(;++t<n;)i.add(e[t])}else if(null==e)i.add(e);else if("function"==typeof e[u])for(const n of e)i.add(n);else if("function"==typeof e[f])c.push(j(e[f](),l));else if("function"==typeof e.chain){const t=e.chain(w);n(t)?c.push(t.then(l)):i.add(t)}else if("function"==typeof e.flatMap){const t=e.flatMap(w);n(t)?c.push(t.then(l)):i.add(t)}else if("function"==typeof e.reduce){const t=e.reduce(s,null);n(t)&&c.push(t)}else if(e.constructor==Object)for(const n in e)i.add(e[n]);else i.add(e);return 0==c.length?i:x(c).then((()=>i))},T=function(t,r){const u=function(t,r){const u=new Set,f=[];for(const c of t){const i=r(c,c,t);n(i)?f.push(i.then(o(D,u,"add",e))):u.add(i)}return 0==f.length?u:x(f).then(v(u))}(t,r);return n(u)?u.then(z):z(u)},k=(F=m,q=c(((n,t)=>n.join(t)),e,""),function(...t){const e=F(...t);return n(e)?e.then(q):q(e)});var F,q;const B=function(r,c){if(t(r))return function(t,e){const o=S(t,e);return n(o)?o.then(m):m(o)}(r,c);if(null==r)return c(r);if("function"==typeof r.then)return r.then(c);if("function"==typeof r.next)return u in r?function(n,t){let e=[],o=0;return{[u](){return this},next(){if(o<e.length){const n=e[o];return o+=1,{value:n,done:!1}}const r=n.next();if(r.done)return r;const u=p(t(r.value),d,[]);return u.length>1&&(e=u,o=1),{value:u[0],done:!1}}}}(r,c):function(t,r){const u=[],c=new Set;return{isAsyncIteratorDone:!1,[f](){return this},toString:()=>"[object FlatMappingAsyncIterator]",async next(){for(;!this.isAsyncIteratorDone||u.length>0||c.size>0;){if(!this.isAsyncIteratorDone){const{value:f,done:i}=await t.next();if(i)this.isAsyncIteratorDone=i;else{const t=r(f);if(n(t)){const n=t.then(o(p,e,d,u)).then((()=>c.delete(n)));c.add(n)}else{const e=p(t,d,u);if(n(e)){const n=e.then((()=>c.delete(n)));c.add(n)}}}}if(u.length>0)return{value:u.shift(),done:!1};c.size>0&&await y([g(1e3),...c])}return{value:void 0,done:!0}}}}(r,c);if("function"==typeof r.chain)return r.chain(c);if("function"==typeof r.flatMap)return r.flatMap(c);const i=r.constructor;return i==Object?P(r,c):i==Set?T(r,c):"string"==typeof r||i==String?function(t,e){const o=S(t,e);return n(o)?o.then(k):k(o)}(r,c):c(r)};return(...t)=>{const o=t.pop();if(0==t.length)return c(B,e,o);const r=t[0];return n(r)?r.then(c(B,e,o)):B(t[0],o)}}());