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
 
@@ -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
7
  // () => Map<>
@@ -42,37 +42,6 @@ const curry3 = function (baseFunc, arg0, arg1, arg2) {
42
42
  return curry3ResolveArg2(baseFunc, arg0, arg1)
43
43
  }
44
44
 
45
- // argument resolver for curryArgs3
46
- const curryArgs3ResolveArgs0 = (
47
- baseFunc, arg1, arg2,
48
- ) => function args0Resolver(...args) {
49
- return baseFunc(args, arg1, arg2)
50
- }
51
-
52
- // argument resolver for curryArgs3
53
- const curryArgs3ResolveArgs1 = (
54
- baseFunc, arg0, arg2,
55
- ) => function arg1Resolver(...args) {
56
- return baseFunc(arg0, args, arg2)
57
- }
58
-
59
- // argument resolver for curryArgs3
60
- const curryArgs3ResolveArgs2 = (
61
- baseFunc, arg0, arg1,
62
- ) => function arg2Resolver(...args) {
63
- return baseFunc(arg0, arg1, args)
64
- }
65
-
66
- const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
67
- if (arg0 == __) {
68
- return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
69
- }
70
- if (arg1 == __) {
71
- return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
72
- }
73
- return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
74
- }
75
-
76
45
  const isArray = Array.isArray
77
46
 
78
47
  const objectValues = Object.values
@@ -169,6 +138,37 @@ const curry2 = function (baseFunc, arg0, arg1) {
169
138
  : curry2ResolveArg1(baseFunc, arg0)
170
139
  }
171
140
 
141
+ // argument resolver for curryArgs3
142
+ const curryArgs3ResolveArgs0 = (
143
+ baseFunc, arg1, arg2,
144
+ ) => function args0Resolver(...args) {
145
+ return baseFunc(args, arg1, arg2)
146
+ }
147
+
148
+ // argument resolver for curryArgs3
149
+ const curryArgs3ResolveArgs1 = (
150
+ baseFunc, arg0, arg2,
151
+ ) => function arg1Resolver(...args) {
152
+ return baseFunc(arg0, args, arg2)
153
+ }
154
+
155
+ // argument resolver for curryArgs3
156
+ const curryArgs3ResolveArgs2 = (
157
+ baseFunc, arg0, arg1,
158
+ ) => function arg2Resolver(...args) {
159
+ return baseFunc(arg0, arg1, args)
160
+ }
161
+
162
+ const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
163
+ if (arg0 == __) {
164
+ return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
165
+ }
166
+ if (arg1 == __) {
167
+ return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
168
+ }
169
+ return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
170
+ }
171
+
172
172
  // argument resolver for curry4
173
173
  const curry4ResolveArg0 = (
174
174
  baseFunc, arg1, arg2, arg3,
@@ -291,13 +291,6 @@ const curry5 = function (baseFunc, arg0, arg1, arg2, arg3, arg4) {
291
291
 
292
292
  const objectKeys = Object.keys
293
293
 
294
- const objectGetFirstKey = function (object) {
295
- for (const key in object) {
296
- return key
297
- }
298
- return undefined
299
- }
300
-
301
294
  const objectReduceAsync = async function (object, reducer, result, keys, index) {
302
295
  const keysLength = keys.length
303
296
  while (++index < keysLength) {
@@ -358,24 +351,6 @@ const mapReduce = function (map, reducer, result) {
358
351
  return result
359
352
  }
360
353
 
361
- const funcConcatSync = (
362
- funcA, funcB,
363
- ) => function pipedFunction(...args) {
364
- return funcB(funcA(...args))
365
- }
366
-
367
- const generatorFunctionReduce = (
368
- generatorFunction, reducer, result,
369
- ) => funcConcatSync(
370
- generatorFunction,
371
- curry3(iteratorReduce, __, reducer, result))
372
-
373
- const asyncGeneratorFunctionReduce = (
374
- asyncGeneratorFunction, reducer, result,
375
- ) => funcConcatSync(
376
- asyncGeneratorFunction,
377
- curry3(asyncIteratorReduce, __, reducer, result))
378
-
379
354
  const reducerConcat = (
380
355
  reducerA, reducerB,
381
356
  ) => function pipedReducer(result, item) {
@@ -385,26 +360,10 @@ const reducerConcat = (
385
360
  : reducerB(intermediate, item)
386
361
  }
387
362
 
388
- const genericReduce = function (args, reducer, result) {
389
- const collection = args[0]
363
+ const genericReduce = function (collection, reducer, result) {
390
364
  if (isArray(collection)) {
391
365
  return arrayReduce(collection, reducer, result)
392
366
  }
393
- if (typeof collection == 'function') {
394
- if (isGeneratorFunction(collection)) {
395
- return generatorFunctionReduce(collection, reducer, result)
396
- }
397
- if (isAsyncGeneratorFunction(collection)) {
398
- return asyncGeneratorFunctionReduce(collection, reducer, result)
399
- }
400
- return curryArgs3(
401
- genericReduce,
402
- __,
403
- args.length == 1
404
- ? reducerConcat(reducer, collection)
405
- : args.reduce(reducerConcat, reducer),
406
- result)
407
- }
408
367
  if (collection == null) {
409
368
  return result === undefined
410
369
  ? curry2(reducer, collection, __)
@@ -439,28 +398,27 @@ const genericReduce = function (args, reducer, result) {
439
398
  : reducer(result, collection)
440
399
  }
441
400
 
442
- const reduce = function (...args) {
443
- if (typeof args[0] != 'function') {
444
- const reducer = args[1]
445
- const initialValue = args[2]
446
- if (typeof initialValue == 'function') {
447
- return genericReduce([args[0]], reducer, initialValue(args[0]))
448
- }
449
- return genericReduce([args[0]], reducer, initialValue)
401
+ // _reduce(collection any, reducer function, initialValue function|any) -> Promise
402
+ const _reduce = function (collection, reducer, initialValue) {
403
+ if (typeof initialValue == 'function') {
404
+ const actualInitialValue = initialValue(collection)
405
+ return isPromise(actualInitialValue)
406
+ ? actualInitialValue.then(curry3(genericReduce, collection, reducer, __))
407
+ : genericReduce(collection, reducer, actualInitialValue)
450
408
  }
409
+ return isPromise(initialValue)
410
+ ? initialValue.then(curry3(genericReduce, collection, reducer, __))
411
+ : genericReduce(collection, reducer, initialValue)
412
+ }
451
413
 
452
- const reducer = args[0]
453
- const initialValue = args[1]
454
-
455
- if (typeof initialValue == 'function') {
456
- return function reducing(...args) {
457
- const result = initialValue(...args)
458
- return isPromise(result)
459
- ? result.then(curry3(genericReduce, args, reducer, __))
460
- : genericReduce(args, reducer, result)
461
- }
414
+ const reduce = function (...args) {
415
+ if (typeof args[0] == 'function') {
416
+ return curry3(_reduce, __, args[0], args[1])
417
+ }
418
+ if (isPromise(args[0])) {
419
+ return args[0].then(curry3(_reduce, __, args[1], args[2]))
462
420
  }
463
- return curryArgs3(genericReduce, __, reducer, initialValue)
421
+ return _reduce(args[0], args[1], args[2])
464
422
  }
465
423
 
466
424
  // (mapOfArrays Map<any=>Array>, key any, item any) => mapOfArrays
@@ -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 EmptyMap=()=>new Map,isPromise=r=>null!=r&&"function"==typeof r.then,__=Symbol.for("placeholder"),curry3ResolveArg0=(r,e,n)=>function(t){return r(t,e,n)},curry3ResolveArg1=(r,e,n)=>function(t){return r(e,t,n)},curry3ResolveArg2=(r,e,n)=>function(t){return r(e,n,t)},curry3=function(r,e,n,t){return e==__?curry3ResolveArg0(r,n,t):n==__?curry3ResolveArg1(r,e,t):curry3ResolveArg2(r,e,n)},curryArgs3ResolveArgs0=(r,e,n)=>function(...t){return r(t,e,n)},curryArgs3ResolveArgs1=(r,e,n)=>function(...t){return r(e,t,n)},curryArgs3ResolveArgs2=(r,e,n)=>function(...t){return r(e,n,t)},curryArgs3=function(r,e,n,t){return e==__?curryArgs3ResolveArgs0(r,n,t):n==__?curryArgs3ResolveArgs1(r,e,t):curryArgs3ResolveArgs2(r,e,n)},isArray=Array.isArray,objectValues=Object.values,objectProto=Object.prototype,nativeObjectToString=objectProto.toString,objectToString=r=>nativeObjectToString.call(r),generatorFunctionTag="[object GeneratorFunction]",isGeneratorFunction=r=>objectToString(r)==generatorFunctionTag,asyncGeneratorFunctionTag="[object AsyncGeneratorFunction]",isAsyncGeneratorFunction=r=>objectToString(r)==asyncGeneratorFunctionTag,iteratorReduceAsync=async function(r,e,n){let t=r.next();if(t.done)return n;for(;!t.done;)n=e(n,t.value),isPromise(n)&&(n=await n),t=r.next();return n},iteratorReduce=function(r,e,n){let t=r.next();if(t.done)return n;for(void 0===n&&(n=t.value,t=r.next());!t.done;){if(n=e(n,t.value),isPromise(n))return n.then(curry3(iteratorReduceAsync,r,e,__));t=r.next()}return n},asyncIteratorReduce=async function(r,e,n){let t=await r.next();if(t.done)return n;for(void 0===n&&(n=t.value,t=await r.next());!t.done;)n=await e(n,t.value),t=await r.next();return n},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,curry2ResolveArg0=(r,e)=>function(n){return r(n,e)},curry2ResolveArg1=(r,e)=>function(n){return r(e,n)},curry2=function(r,e,n){return e==__?curry2ResolveArg0(r,n):curry2ResolveArg1(r,e)},curry4ResolveArg0=(r,e,n,t)=>function(o){return r(o,e,n,t)},curry4ResolveArg1=(r,e,n,t)=>function(o){return r(e,o,n,t)},curry4ResolveArg2=(r,e,n,t)=>function(o){return r(e,n,o,t)},curry4ResolveArg3=(r,e,n,t)=>function(o){return r(e,n,t,o)},curry4=function(r,e,n,t,o){return e==__?curry4ResolveArg0(r,n,t,o):n==__?curry4ResolveArg1(r,e,t,o):t==__?curry4ResolveArg2(r,e,n,o):curry4ResolveArg3(r,e,n,t)},arrayReduceAsync=async function(r,e,n,t){const o=r.length;for(;++t<o;)n=e(n,r[t],t,r),isPromise(n)&&(n=await n);return n},arrayReduce=function(r,e,n){const t=r.length;let o=-1;for(void 0===n&&(n=r[++o]);++o<t;)if(n=e(n,r[o],o,r),isPromise(n))return n.then(curry4(arrayReduceAsync,r,e,__,o));return n},curry5ResolveArg0=(r,e,n,t,o)=>function(c){return r(c,e,n,t,o)},curry5ResolveArg1=(r,e,n,t,o)=>function(c){return r(e,c,n,t,o)},curry5ResolveArg2=(r,e,n,t,o)=>function(c){return r(e,n,c,t,o)},curry5ResolveArg3=(r,e,n,t,o)=>function(c){return r(e,n,t,c,o)},curry5ResolveArg4=(r,e,n,t,o)=>function(c){return r(e,n,t,o,c)},curry5=function(r,e,n,t,o,c){return e==__?curry5ResolveArg0(r,n,t,o,c):n==__?curry5ResolveArg1(r,e,t,o,c):t==__?curry5ResolveArg2(r,e,n,o,c):o==__?curry5ResolveArg3(r,e,n,t,c):curry5ResolveArg4(r,e,n,t,o)},objectKeys=Object.keys,objectGetFirstKey=function(r){for(const e in r)return e},objectReduceAsync=async function(r,e,n,t,o){const c=t.length;for(;++o<c;){const c=t[o];n=e(n,r[c],c,r),isPromise(n)&&(n=await n)}return n},objectReduce=function(r,e,n){const t=objectKeys(r),o=t.length;let c=-1;for(void 0===n&&(n=r[t[++c]]);++c<o;){const o=t[c];if(n=e(n,r[o],o,r),isPromise(n))return n.then((u=objectReduceAsync,i=e,y=__,a=t,f=c,(s=r)==__?curry5ResolveArg0(u,i,y,a,f):i==__?curry5ResolveArg1(u,s,y,a,f):y==__?curry5ResolveArg2(u,s,i,a,f):a==__?curry5ResolveArg3(u,s,i,y,f):curry5ResolveArg4(u,s,i,y,a)))}var u,s,i,y,a,f;return n},mapReduceAsync=async function(r,e,n,t){for(const[o,c]of t)n=e(n,c,o,r),isPromise(n)&&(n=await n);return n},mapReduce=function(r,e,n){const t=r.entries();if(void 0===n){const r=t.next();if(r.done)return n;n=r.value[1]}for(const[o,c]of t)if(n=e(n,c,o,r),isPromise(n))return n.then(curry4(mapReduceAsync,r,e,__,t));return n},funcConcatSync=(r,e)=>function(...n){return e(r(...n))},generatorFunctionReduce=(r,e,n)=>funcConcatSync(r,curry3(iteratorReduce,__,e,n)),asyncGeneratorFunctionReduce=(r,e,n)=>funcConcatSync(r,curry3(asyncIteratorReduce,__,e,n)),reducerConcat=(r,e)=>function(n,t){const o=r(n,t);return isPromise(o)?o.then(curry2(e,__,t)):e(o,t)},genericReduce=function(r,e,n){const t=r[0];return isArray(t)?arrayReduce(t,e,n):"function"==typeof t?objectToString(t)==generatorFunctionTag?generatorFunctionReduce(t,e,n):isAsyncGeneratorFunction(t)?asyncGeneratorFunctionReduce(t,e,n):curryArgs3(genericReduce,__,1==r.length?reducerConcat(e,t):r.reduce(reducerConcat,e),n):null==t?void 0===n?curry2(e,t,__):e(n,t):t.constructor==Map?mapReduce(t,e,n):"function"==typeof t[symbolIterator]?iteratorReduce(t[symbolIterator](),e,n):"function"==typeof t[symbolAsyncIterator]?asyncIteratorReduce(t[symbolAsyncIterator](),e,n):"function"==typeof t.reduce?t.reduce(e,n):"function"==typeof t.chain?t.chain(curry2(e,n,__)):"function"==typeof t.flatMap?t.flatMap(curry2(e,n,__)):t.constructor==Object?objectReduce(t,e,n):void 0===n?curry2(e,t,__):e(n,t)},reduce=function(...r){if("function"!=typeof r[0]){const e=r[1],n=r[2];return genericReduce([r[0]],e,"function"==typeof n?n(r[0]):n)}const e=r[0],n=r[1];return"function"==typeof n?function(...r){const t=n(...r);return isPromise(t)?t.then(curry3(genericReduce,r,e,__)):genericReduce(r,e,t)}:curryArgs3(genericReduce,__,e,n)},group=function(r,e,n){const t=r.get(e);return null==t?r.set(e,[n]):t.push(n),r},groupByProperty=r=>function(e,n){return group(e,n[r],n)},groupByResolver=r=>function(e,n){const t=r(n);return isPromise(t)?t.then(curry3(group,e,__,n)):group(e,t,n)},groupBy=r=>{return reduce("function"==typeof r?(n=r,function(r,e){const t=n(e);return isPromise(t)?t.then(curry3(group,r,__,e)):group(r,t,e)}):(e=r,function(r,n){return group(r,n[e],n)}),EmptyMap);var e,n};export default groupBy;
7
+ const EmptyMap=()=>new Map,isPromise=r=>null!=r&&"function"==typeof r.then,__=Symbol.for("placeholder"),curry3ResolveArg0=(r,e,n)=>function(t){return r(t,e,n)},curry3ResolveArg1=(r,e,n)=>function(t){return r(e,t,n)},curry3ResolveArg2=(r,e,n)=>function(t){return r(e,n,t)},curry3=function(r,e,n,t){return e==__?curry3ResolveArg0(r,n,t):n==__?curry3ResolveArg1(r,e,t):curry3ResolveArg2(r,e,n)},isArray=Array.isArray,objectValues=Object.values,objectProto=Object.prototype,nativeObjectToString=objectProto.toString,objectToString=r=>nativeObjectToString.call(r),generatorFunctionTag="[object GeneratorFunction]",isGeneratorFunction=r=>objectToString(r)==generatorFunctionTag,asyncGeneratorFunctionTag="[object AsyncGeneratorFunction]",isAsyncGeneratorFunction=r=>objectToString(r)==asyncGeneratorFunctionTag,iteratorReduceAsync=async function(r,e,n){let t=r.next();if(t.done)return n;for(;!t.done;)n=e(n,t.value),isPromise(n)&&(n=await n),t=r.next();return n},iteratorReduce=function(r,e,n){let t=r.next();if(t.done)return n;for(void 0===n&&(n=t.value,t=r.next());!t.done;){if(n=e(n,t.value),isPromise(n))return n.then(curry3(iteratorReduceAsync,r,e,__));t=r.next()}return n},asyncIteratorReduce=async function(r,e,n){let t=await r.next();if(t.done)return n;for(void 0===n&&(n=t.value,t=await r.next());!t.done;)n=await e(n,t.value),t=await r.next();return n},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,curry2ResolveArg0=(r,e)=>function(n){return r(n,e)},curry2ResolveArg1=(r,e)=>function(n){return r(e,n)},curry2=function(r,e,n){return e==__?curry2ResolveArg0(r,n):curry2ResolveArg1(r,e)},curryArgs3ResolveArgs0=(r,e,n)=>function(...t){return r(t,e,n)},curryArgs3ResolveArgs1=(r,e,n)=>function(...t){return r(e,t,n)},curryArgs3ResolveArgs2=(r,e,n)=>function(...t){return r(e,n,t)},curryArgs3=function(r,e,n,t){return e==__?curryArgs3ResolveArgs0(r,n,t):n==__?curryArgs3ResolveArgs1(r,e,t):curryArgs3ResolveArgs2(r,e,n)},curry4ResolveArg0=(r,e,n,t)=>function(o){return r(o,e,n,t)},curry4ResolveArg1=(r,e,n,t)=>function(o){return r(e,o,n,t)},curry4ResolveArg2=(r,e,n,t)=>function(o){return r(e,n,o,t)},curry4ResolveArg3=(r,e,n,t)=>function(o){return r(e,n,t,o)},curry4=function(r,e,n,t,o){return e==__?curry4ResolveArg0(r,n,t,o):n==__?curry4ResolveArg1(r,e,t,o):t==__?curry4ResolveArg2(r,e,n,o):curry4ResolveArg3(r,e,n,t)},arrayReduceAsync=async function(r,e,n,t){const o=r.length;for(;++t<o;)n=e(n,r[t],t,r),isPromise(n)&&(n=await n);return n},arrayReduce=function(r,e,n){const t=r.length;let o=-1;for(void 0===n&&(n=r[++o]);++o<t;)if(n=e(n,r[o],o,r),isPromise(n))return n.then(curry4(arrayReduceAsync,r,e,__,o));return n},curry5ResolveArg0=(r,e,n,t,o)=>function(u){return r(u,e,n,t,o)},curry5ResolveArg1=(r,e,n,t,o)=>function(u){return r(e,u,n,t,o)},curry5ResolveArg2=(r,e,n,t,o)=>function(u){return r(e,n,u,t,o)},curry5ResolveArg3=(r,e,n,t,o)=>function(u){return r(e,n,t,u,o)},curry5ResolveArg4=(r,e,n,t,o)=>function(u){return r(e,n,t,o,u)},curry5=function(r,e,n,t,o,u){return e==__?curry5ResolveArg0(r,n,t,o,u):n==__?curry5ResolveArg1(r,e,t,o,u):t==__?curry5ResolveArg2(r,e,n,o,u):o==__?curry5ResolveArg3(r,e,n,t,u):curry5ResolveArg4(r,e,n,t,o)},objectKeys=Object.keys,objectReduceAsync=async function(r,e,n,t,o){const u=t.length;for(;++o<u;){const u=t[o];n=e(n,r[u],u,r),isPromise(n)&&(n=await n)}return n},objectReduce=function(r,e,n){const t=objectKeys(r),o=t.length;let u=-1;for(void 0===n&&(n=r[t[++u]]);++u<o;){const o=t[u];if(n=e(n,r[o],o,r),isPromise(n))return n.then((c=objectReduceAsync,i=e,y=__,a=t,f=u,(s=r)==__?curry5ResolveArg0(c,i,y,a,f):i==__?curry5ResolveArg1(c,s,y,a,f):y==__?curry5ResolveArg2(c,s,i,a,f):a==__?curry5ResolveArg3(c,s,i,y,f):curry5ResolveArg4(c,s,i,y,a)))}var c,s,i,y,a,f;return n},mapReduceAsync=async function(r,e,n,t){for(const[o,u]of t)n=e(n,u,o,r),isPromise(n)&&(n=await n);return n},mapReduce=function(r,e,n){const t=r.entries();if(void 0===n){const r=t.next();if(r.done)return n;n=r.value[1]}for(const[o,u]of t)if(n=e(n,u,o,r),isPromise(n))return n.then(curry4(mapReduceAsync,r,e,__,t));return n},reducerConcat=(r,e)=>function(n,t){const o=r(n,t);return isPromise(o)?o.then(curry2(e,__,t)):e(o,t)},genericReduce=function(r,e,n){return isArray(r)?arrayReduce(r,e,n):null==r?void 0===n?curry2(e,r,__):e(n,r):r.constructor==Map?mapReduce(r,e,n):"function"==typeof r[symbolIterator]?iteratorReduce(r[symbolIterator](),e,n):"function"==typeof r[symbolAsyncIterator]?asyncIteratorReduce(r[symbolAsyncIterator](),e,n):"function"==typeof r.reduce?r.reduce(e,n):"function"==typeof r.chain?r.chain(curry2(e,n,__)):"function"==typeof r.flatMap?r.flatMap(curry2(e,n,__)):r.constructor==Object?objectReduce(r,e,n):void 0===n?curry2(e,r,__):e(n,r)},_reduce=function(r,e,n){if("function"==typeof n){const t=n(r);return isPromise(t)?t.then(curry3(genericReduce,r,e,__)):genericReduce(r,e,t)}return isPromise(n)?n.then(curry3(genericReduce,r,e,__)):genericReduce(r,e,n)},reduce=function(...r){return"function"==typeof r[0]?curry3(_reduce,__,r[0],r[1]):isPromise(r[0])?r[0].then(curry3(_reduce,__,r[1],r[2])):_reduce(r[0],r[1],r[2])},group=function(r,e,n){const t=r.get(e);return null==t?r.set(e,[n]):t.push(n),r},groupByProperty=r=>function(e,n){return group(e,n[r],n)},groupByResolver=r=>function(e,n){const t=r(n);return isPromise(t)?t.then(curry3(group,e,__,n)):group(e,t,n)},groupBy=r=>{return reduce("function"==typeof r?(n=r,function(r,e){const t=n(e);return isPromise(t)?t.then(curry3(group,r,__,e)):group(r,t,e)}):(e=r,function(r,n){return group(r,n[e],n)}),EmptyMap);var e,n};export default groupBy;