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