rubico 1.9.7 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (593) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.js +3 -2
  3. package/.github/workflows/nodejs.yml +1 -1
  4. package/AggregateReducer.js +19 -0
  5. package/AggregateReducer.test.js +82 -0
  6. package/CHANGELOG.md +22 -1
  7. package/README.md +158 -81
  8. package/Transducer.js +75 -26
  9. package/Transducer.test.js +117 -0
  10. package/_internal/ComparisonOperator.js +68 -0
  11. package/_internal/File.js +41 -0
  12. package/_internal/FlatMappingAsyncIterator.js +4 -4
  13. package/_internal/FlatMappingIterator.js +1 -1
  14. package/_internal/TimeInLoopSuite.js +138 -0
  15. package/_internal/areAnyValuesPromises.js +23 -0
  16. package/_internal/{arrayAll.js → arrayEvery.js} +4 -4
  17. package/_internal/arrayExtend.js +3 -2
  18. package/_internal/arrayFilter.js +3 -4
  19. package/_internal/{arrayAny.js → arraySome.js} +8 -8
  20. package/_internal/{asyncIteratorAll.js → asyncIteratorEvery.js} +4 -4
  21. package/_internal/{asyncIteratorAny.js → asyncIteratorSome.js} +4 -4
  22. package/_internal/curry4.test.js +25 -0
  23. package/_internal/curry5.test.js +29 -0
  24. package/_internal/curryArgs2.js +43 -0
  25. package/_internal/curryArgs3.test.js +21 -0
  26. package/_internal/curryArgs4.js +65 -0
  27. package/_internal/curryArgs4.test.js +25 -0
  28. package/_internal/equals.js +13 -0
  29. package/_internal/findAllFilePaths.js +22 -0
  30. package/_internal/funcApply.js +2 -0
  31. package/_internal/funcCall.js +14 -0
  32. package/_internal/functionArrayAll.js +26 -0
  33. package/_internal/functionArrayAllSeries.js +55 -0
  34. package/_internal/functionObjectAll.js +32 -0
  35. package/_internal/genericReduce.js +4 -22
  36. package/_internal/genericTransform.js +15 -15
  37. package/_internal/improvedGenericTransform.js +93 -0
  38. package/_internal/{iteratorAll.js → iteratorEvery.js} +4 -4
  39. package/_internal/{iteratorAny.js → iteratorSome.js} +6 -6
  40. package/_internal/leftResolverRightResolverCompare.js +19 -0
  41. package/_internal/leftResolverRightValueCompare.js +16 -0
  42. package/_internal/leftValueRightResolverCompare.js +16 -0
  43. package/_internal/objectReduce.js +0 -1
  44. package/_internal/pathResolve.js +6 -0
  45. package/_internal/{reducerAll.js → reducerEvery.js} +4 -4
  46. package/_internal/reducerFlatMap.js +4 -4
  47. package/_internal/reducerFlatten.js +1 -1
  48. package/_internal/{reducerAny.js → reducerSome.js} +4 -4
  49. package/_internal/timeInLoop.js +37 -0
  50. package/_internal/timeInLoop.test.js +18 -0
  51. package/_internal/timeInLoopAsync.js +35 -0
  52. package/_internal/timeInLoopAsync.test.js +22 -0
  53. package/all.js +106 -40
  54. package/and.js +54 -36
  55. package/archive/{FlatMappingIteratorCool.js → FlatMappingIterator-2020-09-28.js} +1 -1
  56. package/archive/_Promise-2023-05-29.js +93 -0
  57. package/archive/arrayMap2-2023-05-29.js +73 -0
  58. package/archive/benchmarks-v1.9.7/all.js +34 -0
  59. package/archive/benchmarks-v1.9.7/and.js +24 -0
  60. package/archive/benchmarks-v1.9.7/assign.js +174 -0
  61. package/archive/benchmarks-v1.9.7/curry.js +55 -0
  62. package/archive/benchmarks-v1.9.7/eq.js +25 -0
  63. package/archive/benchmarks-v1.9.7/filter.js +1322 -0
  64. package/archive/benchmarks-v1.9.7/flatMap.js +48 -0
  65. package/archive/benchmarks-v1.9.7/get.js +44 -0
  66. package/archive/benchmarks-v1.9.7/gt.js +25 -0
  67. package/archive/benchmarks-v1.9.7/gte.js +25 -0
  68. package/archive/benchmarks-v1.9.7/lt.js +25 -0
  69. package/archive/benchmarks-v1.9.7/lte.js +25 -0
  70. package/archive/benchmarks-v1.9.7/map.js +892 -0
  71. package/archive/benchmarks-v1.9.7/omit.js +28 -0
  72. package/archive/benchmarks-v1.9.7/or.js +51 -0
  73. package/archive/benchmarks-v1.9.7/pick.js +24 -0
  74. package/archive/benchmarks-v1.9.7/pipe.js +152 -0
  75. package/archive/benchmarks-v1.9.7/reduce.js +739 -0
  76. package/archive/benchmarks-v1.9.7/switchCase.js +256 -0
  77. package/archive/benchmarks-v1.9.7/tap.js +90 -0
  78. package/archive/benchmarks-v1.9.7/transform.js +218 -0
  79. package/archive/benchmarks-v1.9.7/tryCatch.js +108 -0
  80. package/assign.js +18 -8
  81. package/bench +65 -0
  82. package/benchmark-output/v1.9.7 +268 -0
  83. package/benchmarks/all.async.js +43 -0
  84. package/benchmarks/all.js +42 -33
  85. package/benchmarks/always.js +15 -0
  86. package/benchmarks/and.async.js +25 -0
  87. package/benchmarks/and.js +20 -19
  88. package/benchmarks/assign.async.js +27 -0
  89. package/benchmarks/assign.js +20 -167
  90. package/benchmarks/curry.js +34 -54
  91. package/benchmarks/eq.async.js +23 -0
  92. package/benchmarks/eq.js +17 -19
  93. package/benchmarks/every.async.js +19 -0
  94. package/benchmarks/every.js +19 -0
  95. package/benchmarks/filter.async.js +32 -0
  96. package/benchmarks/filter.js +27 -1311
  97. package/benchmarks/flatMap.async.js +26 -0
  98. package/benchmarks/flatMap.js +26 -36
  99. package/benchmarks/get.async.js +19 -0
  100. package/benchmarks/get.js +27 -32
  101. package/benchmarks/gt.async.js +23 -0
  102. package/benchmarks/gt.js +17 -19
  103. package/benchmarks/gte.async.js +23 -0
  104. package/benchmarks/gte.js +17 -19
  105. package/benchmarks/lt.async.js +23 -0
  106. package/benchmarks/lt.js +17 -19
  107. package/benchmarks/lte.async.js +23 -0
  108. package/benchmarks/lte.js +17 -19
  109. package/benchmarks/map.async.js +43 -0
  110. package/benchmarks/map.js +24 -876
  111. package/benchmarks/misc/Promise.js +26 -0
  112. package/benchmarks/misc/isPromise.js +30 -0
  113. package/benchmarks/misc/promiseAll.js +36 -0
  114. package/benchmarks/not.js +23 -0
  115. package/benchmarks/omit.js +30 -20
  116. package/benchmarks/or.async.js +25 -0
  117. package/benchmarks/or.js +23 -49
  118. package/benchmarks/pick.js +30 -16
  119. package/benchmarks/pipe.async.js +47 -0
  120. package/benchmarks/pipe.js +46 -151
  121. package/benchmarks/reduce.async.js +32 -0
  122. package/benchmarks/reduce.js +27 -728
  123. package/benchmarks/set.async.js +19 -0
  124. package/benchmarks/set.js +41 -0
  125. package/benchmarks/some.async.js +19 -0
  126. package/benchmarks/some.js +19 -0
  127. package/benchmarks/switchCase.async.js +27 -0
  128. package/benchmarks/switchCase.js +55 -256
  129. package/benchmarks/tap.js +10 -85
  130. package/benchmarks/thunkify.js +15 -0
  131. package/benchmarks/transform.async.js +27 -0
  132. package/benchmarks/transform.js +28 -206
  133. package/benchmarks/tryCatch.async.js +25 -0
  134. package/benchmarks/tryCatch.js +24 -100
  135. package/build +472 -0
  136. package/compose.js +46 -0
  137. package/dist/Transducer.es.js +481 -0
  138. package/dist/Transducer.es.min.js +7 -0
  139. package/dist/Transducer.js +488 -0
  140. package/dist/Transducer.min.js +8 -0
  141. package/dist/Transducer.mjs +481 -0
  142. package/dist/__.es.js +2 -2
  143. package/dist/__.es.min.js +2 -2
  144. package/dist/__.js +2 -2
  145. package/dist/__.min.js +2 -2
  146. package/dist/__.mjs +2 -2
  147. package/dist/all.es.js +173 -92
  148. package/dist/all.es.min.js +3 -3
  149. package/dist/all.js +173 -92
  150. package/dist/all.min.js +3 -3
  151. package/dist/all.mjs +173 -92
  152. package/dist/always.es.js +2 -2
  153. package/dist/always.es.min.js +2 -2
  154. package/dist/always.js +2 -2
  155. package/dist/always.min.js +2 -2
  156. package/dist/always.mjs +2 -2
  157. package/dist/and.es.js +101 -32
  158. package/dist/and.es.min.js +3 -3
  159. package/dist/and.js +101 -32
  160. package/dist/and.min.js +3 -3
  161. package/dist/and.mjs +101 -32
  162. package/dist/assign.es.js +37 -10
  163. package/dist/assign.es.min.js +3 -3
  164. package/dist/assign.js +37 -10
  165. package/dist/assign.min.js +3 -3
  166. package/dist/assign.mjs +37 -10
  167. package/dist/compose.es.js +71 -0
  168. package/dist/compose.es.min.js +7 -0
  169. package/dist/compose.js +78 -0
  170. package/dist/compose.min.js +8 -0
  171. package/dist/compose.mjs +71 -0
  172. package/dist/curry.es.js +2 -2
  173. package/dist/curry.es.min.js +2 -2
  174. package/dist/curry.js +2 -2
  175. package/dist/curry.min.js +2 -2
  176. package/dist/curry.mjs +2 -2
  177. package/dist/eq.es.js +172 -49
  178. package/dist/eq.es.min.js +3 -3
  179. package/dist/eq.js +172 -49
  180. package/dist/eq.min.js +3 -3
  181. package/dist/eq.mjs +172 -49
  182. package/dist/every.es.js +194 -0
  183. package/dist/every.es.min.js +7 -0
  184. package/dist/every.js +201 -0
  185. package/dist/every.min.js +8 -0
  186. package/dist/every.mjs +194 -0
  187. package/dist/filter.es.js +14 -108
  188. package/dist/filter.es.min.js +3 -3
  189. package/dist/filter.js +14 -108
  190. package/dist/filter.min.js +3 -3
  191. package/dist/filter.mjs +14 -108
  192. package/dist/flatMap.es.js +27 -214
  193. package/dist/flatMap.es.min.js +3 -3
  194. package/dist/flatMap.js +27 -214
  195. package/dist/flatMap.min.js +3 -3
  196. package/dist/flatMap.mjs +27 -214
  197. package/dist/{x/forEach.es.js → forEach.es.js} +52 -70
  198. package/dist/forEach.es.min.js +7 -0
  199. package/dist/{x/forEach.js → forEach.js} +52 -70
  200. package/dist/forEach.min.js +8 -0
  201. package/dist/{x/forEach.mjs → forEach.mjs} +52 -70
  202. package/dist/get.es.js +60 -5
  203. package/dist/get.es.min.js +3 -3
  204. package/dist/get.js +60 -5
  205. package/dist/get.min.js +3 -3
  206. package/dist/get.mjs +60 -5
  207. package/dist/gt.es.js +171 -48
  208. package/dist/gt.es.min.js +3 -3
  209. package/dist/gt.js +171 -48
  210. package/dist/gt.min.js +3 -3
  211. package/dist/gt.mjs +171 -48
  212. package/dist/gte.es.js +171 -48
  213. package/dist/gte.es.min.js +3 -3
  214. package/dist/gte.js +171 -48
  215. package/dist/gte.min.js +3 -3
  216. package/dist/gte.mjs +171 -48
  217. package/dist/lt.es.js +171 -48
  218. package/dist/lt.es.min.js +3 -3
  219. package/dist/lt.js +171 -48
  220. package/dist/lt.min.js +3 -3
  221. package/dist/lt.mjs +171 -48
  222. package/dist/lte.es.js +171 -48
  223. package/dist/lte.es.min.js +3 -3
  224. package/dist/lte.js +171 -48
  225. package/dist/lte.min.js +3 -3
  226. package/dist/lte.mjs +171 -48
  227. package/dist/map.es.js +12 -101
  228. package/dist/map.es.min.js +3 -3
  229. package/dist/map.js +12 -101
  230. package/dist/map.min.js +3 -3
  231. package/dist/map.mjs +12 -101
  232. package/dist/not.es.js +75 -14
  233. package/dist/not.es.min.js +3 -3
  234. package/dist/not.js +75 -14
  235. package/dist/not.min.js +3 -3
  236. package/dist/not.mjs +75 -14
  237. package/dist/omit.es.js +7 -2
  238. package/dist/omit.es.min.js +3 -3
  239. package/dist/omit.js +7 -2
  240. package/dist/omit.min.js +3 -3
  241. package/dist/omit.mjs +7 -2
  242. package/dist/or.es.js +99 -31
  243. package/dist/or.es.min.js +3 -3
  244. package/dist/or.js +99 -31
  245. package/dist/or.min.js +3 -3
  246. package/dist/or.mjs +99 -31
  247. package/dist/pick.es.js +8 -3
  248. package/dist/pick.es.min.js +3 -3
  249. package/dist/pick.js +8 -3
  250. package/dist/pick.min.js +3 -3
  251. package/dist/pick.mjs +8 -3
  252. package/dist/pipe.es.js +42 -46
  253. package/dist/pipe.es.min.js +3 -3
  254. package/dist/pipe.js +42 -46
  255. package/dist/pipe.min.js +3 -3
  256. package/dist/pipe.mjs +42 -46
  257. package/dist/reduce.es.js +52 -94
  258. package/dist/reduce.es.min.js +3 -3
  259. package/dist/reduce.js +52 -94
  260. package/dist/reduce.min.js +3 -3
  261. package/dist/reduce.mjs +52 -94
  262. package/dist/rubico.es.js +762 -883
  263. package/dist/rubico.es.min.js +3 -3
  264. package/dist/rubico.global.js +2794 -0
  265. package/dist/rubico.global.min.js +8 -0
  266. package/dist/rubico.js +739 -869
  267. package/dist/rubico.min.js +3 -3
  268. package/dist/rubico.mjs +762 -883
  269. package/dist/set.es.js +18 -3
  270. package/dist/set.es.min.js +3 -3
  271. package/dist/set.js +18 -3
  272. package/dist/set.min.js +3 -3
  273. package/dist/set.mjs +18 -3
  274. package/dist/{any.js → some.es.js} +64 -54
  275. package/dist/some.es.min.js +7 -0
  276. package/dist/{any.mjs → some.js} +72 -48
  277. package/dist/some.min.js +8 -0
  278. package/dist/{any.es.js → some.mjs} +65 -48
  279. package/dist/switchCase.es.js +55 -5
  280. package/dist/switchCase.es.min.js +3 -3
  281. package/dist/switchCase.js +55 -5
  282. package/dist/switchCase.min.js +3 -3
  283. package/dist/switchCase.mjs +55 -5
  284. package/dist/tap.es.js +2 -9
  285. package/dist/tap.es.min.js +3 -3
  286. package/dist/tap.js +2 -9
  287. package/dist/tap.min.js +3 -3
  288. package/dist/tap.mjs +2 -9
  289. package/dist/thunkify.es.js +45 -2
  290. package/dist/thunkify.es.min.js +3 -3
  291. package/dist/thunkify.js +45 -2
  292. package/dist/thunkify.min.js +3 -3
  293. package/dist/thunkify.mjs +45 -2
  294. package/dist/transform.es.js +35 -71
  295. package/dist/transform.es.min.js +3 -3
  296. package/dist/transform.js +35 -71
  297. package/dist/transform.min.js +3 -3
  298. package/dist/transform.mjs +35 -71
  299. package/dist/tryCatch.es.js +33 -17
  300. package/dist/tryCatch.es.min.js +3 -3
  301. package/dist/tryCatch.js +33 -17
  302. package/dist/tryCatch.min.js +3 -3
  303. package/dist/tryCatch.mjs +33 -17
  304. package/dist/x/append.es.js +2 -2
  305. package/dist/x/append.es.min.js +2 -2
  306. package/dist/x/append.js +2 -2
  307. package/dist/x/append.min.js +2 -2
  308. package/dist/x/append.mjs +2 -2
  309. package/dist/x/callProp.es.js +2 -2
  310. package/dist/x/callProp.es.min.js +2 -2
  311. package/dist/x/callProp.js +2 -2
  312. package/dist/x/callProp.min.js +2 -2
  313. package/dist/x/callProp.mjs +2 -2
  314. package/dist/x/defaultsDeep.es.js +2 -2
  315. package/dist/x/defaultsDeep.es.min.js +2 -2
  316. package/dist/x/defaultsDeep.js +2 -2
  317. package/dist/x/defaultsDeep.min.js +2 -2
  318. package/dist/x/defaultsDeep.mjs +2 -2
  319. package/dist/x/differenceWith.es.js +7 -7
  320. package/dist/x/differenceWith.es.min.js +3 -3
  321. package/dist/x/differenceWith.js +7 -7
  322. package/dist/x/differenceWith.min.js +2 -2
  323. package/dist/x/differenceWith.mjs +7 -7
  324. package/dist/x/filterOut.es.js +60 -117
  325. package/dist/x/filterOut.es.min.js +3 -3
  326. package/dist/x/filterOut.js +60 -117
  327. package/dist/x/filterOut.min.js +3 -3
  328. package/dist/x/filterOut.mjs +60 -117
  329. package/dist/x/find.es.js +2 -2
  330. package/dist/x/find.es.min.js +2 -2
  331. package/dist/x/find.js +2 -2
  332. package/dist/x/find.min.js +2 -2
  333. package/dist/x/find.mjs +2 -2
  334. package/dist/x/findIndex.es.js +2 -2
  335. package/dist/x/findIndex.es.min.js +2 -2
  336. package/dist/x/findIndex.js +2 -2
  337. package/dist/x/findIndex.min.js +2 -2
  338. package/dist/x/findIndex.mjs +2 -2
  339. package/dist/x/first.es.js +2 -2
  340. package/dist/x/first.es.min.js +2 -2
  341. package/dist/x/first.js +2 -2
  342. package/dist/x/first.min.js +2 -2
  343. package/dist/x/first.mjs +2 -2
  344. package/dist/x/flatten.es.js +20 -207
  345. package/dist/x/flatten.es.min.js +3 -3
  346. package/dist/x/flatten.js +20 -207
  347. package/dist/x/flatten.min.js +3 -3
  348. package/dist/x/flatten.mjs +20 -207
  349. package/dist/x/groupBy.es.js +52 -94
  350. package/dist/x/groupBy.es.min.js +3 -3
  351. package/dist/x/groupBy.js +52 -94
  352. package/dist/x/groupBy.min.js +3 -3
  353. package/dist/x/groupBy.mjs +52 -94
  354. package/dist/x/has.es.js +2 -2
  355. package/dist/x/has.es.min.js +2 -2
  356. package/dist/x/has.js +2 -2
  357. package/dist/x/has.min.js +2 -2
  358. package/dist/x/has.mjs +2 -2
  359. package/dist/x/identity.es.js +2 -2
  360. package/dist/x/identity.es.min.js +2 -2
  361. package/dist/x/identity.js +2 -2
  362. package/dist/x/identity.min.js +2 -2
  363. package/dist/x/identity.mjs +2 -2
  364. package/dist/x/includes.es.js +2 -2
  365. package/dist/x/includes.es.min.js +2 -2
  366. package/dist/x/includes.js +2 -2
  367. package/dist/x/includes.min.js +2 -2
  368. package/dist/x/includes.mjs +2 -2
  369. package/dist/x/isDeepEqual.es.js +2 -2
  370. package/dist/x/isDeepEqual.es.min.js +2 -2
  371. package/dist/x/isDeepEqual.js +2 -2
  372. package/dist/x/isDeepEqual.min.js +2 -2
  373. package/dist/x/isDeepEqual.mjs +2 -2
  374. package/dist/x/isEmpty.es.js +2 -2
  375. package/dist/x/isEmpty.es.min.js +2 -2
  376. package/dist/x/isEmpty.js +2 -2
  377. package/dist/x/isEmpty.min.js +2 -2
  378. package/dist/x/isEmpty.mjs +2 -2
  379. package/dist/x/isEqual.es.js +2 -2
  380. package/dist/x/isEqual.es.min.js +2 -2
  381. package/dist/x/isEqual.js +2 -2
  382. package/dist/x/isEqual.min.js +2 -2
  383. package/dist/x/isEqual.mjs +2 -2
  384. package/dist/x/isFunction.es.js +2 -2
  385. package/dist/x/isFunction.es.min.js +2 -2
  386. package/dist/x/isFunction.js +2 -2
  387. package/dist/x/isFunction.min.js +2 -2
  388. package/dist/x/isFunction.mjs +2 -2
  389. package/dist/x/isIn.es.js +2 -2
  390. package/dist/x/isIn.es.min.js +2 -2
  391. package/dist/x/isIn.js +2 -2
  392. package/dist/x/isIn.min.js +2 -2
  393. package/dist/x/isIn.mjs +2 -2
  394. package/dist/x/isObject.es.js +2 -2
  395. package/dist/x/isObject.es.min.js +2 -2
  396. package/dist/x/isObject.js +2 -2
  397. package/dist/x/isObject.min.js +2 -2
  398. package/dist/x/isObject.mjs +2 -2
  399. package/dist/x/isString.es.js +2 -2
  400. package/dist/x/isString.es.min.js +2 -2
  401. package/dist/x/isString.js +2 -2
  402. package/dist/x/isString.min.js +2 -2
  403. package/dist/x/isString.mjs +2 -2
  404. package/dist/x/keys.es.js +2 -2
  405. package/dist/x/keys.es.min.js +2 -2
  406. package/dist/x/keys.js +2 -2
  407. package/dist/x/keys.min.js +2 -2
  408. package/dist/x/keys.mjs +2 -2
  409. package/dist/x/last.es.js +2 -2
  410. package/dist/x/last.es.min.js +2 -2
  411. package/dist/x/last.js +2 -2
  412. package/dist/x/last.min.js +2 -2
  413. package/dist/x/last.mjs +2 -2
  414. package/dist/x/maxBy.es.js +59 -6
  415. package/dist/x/maxBy.es.min.js +3 -3
  416. package/dist/x/maxBy.js +59 -6
  417. package/dist/x/maxBy.min.js +3 -3
  418. package/dist/x/maxBy.mjs +59 -6
  419. package/dist/x/noop.es.js +2 -2
  420. package/dist/x/noop.es.min.js +2 -2
  421. package/dist/x/noop.js +2 -2
  422. package/dist/x/noop.min.js +2 -2
  423. package/dist/x/noop.mjs +2 -2
  424. package/dist/x/pluck.es.js +32 -103
  425. package/dist/x/pluck.es.min.js +3 -3
  426. package/dist/x/pluck.js +32 -103
  427. package/dist/x/pluck.min.js +3 -3
  428. package/dist/x/pluck.mjs +32 -103
  429. package/dist/x/prepend.es.js +2 -2
  430. package/dist/x/prepend.es.min.js +2 -2
  431. package/dist/x/prepend.js +2 -2
  432. package/dist/x/prepend.min.js +2 -2
  433. package/dist/x/prepend.mjs +2 -2
  434. package/dist/x/size.es.js +2 -2
  435. package/dist/x/size.es.min.js +2 -2
  436. package/dist/x/size.js +2 -2
  437. package/dist/x/size.min.js +2 -2
  438. package/dist/x/size.mjs +2 -2
  439. package/dist/x/trace.es.js +2 -9
  440. package/dist/x/trace.es.min.js +3 -3
  441. package/dist/x/trace.js +2 -9
  442. package/dist/x/trace.min.js +3 -3
  443. package/dist/x/trace.mjs +2 -9
  444. package/dist/x/unionWith.es.js +2 -2
  445. package/dist/x/unionWith.es.min.js +2 -2
  446. package/dist/x/unionWith.js +2 -2
  447. package/dist/x/unionWith.min.js +2 -2
  448. package/dist/x/unionWith.mjs +2 -2
  449. package/dist/x/uniq.es.js +2 -2
  450. package/dist/x/uniq.es.min.js +2 -2
  451. package/dist/x/uniq.js +2 -2
  452. package/dist/x/uniq.min.js +2 -2
  453. package/dist/x/uniq.mjs +2 -2
  454. package/dist/x/unless.es.js +2 -2
  455. package/dist/x/unless.es.min.js +2 -2
  456. package/dist/x/unless.js +2 -2
  457. package/dist/x/unless.min.js +2 -2
  458. package/dist/x/unless.mjs +2 -2
  459. package/dist/x/values.es.js +2 -2
  460. package/dist/x/values.es.min.js +2 -2
  461. package/dist/x/values.js +2 -2
  462. package/dist/x/values.min.js +2 -2
  463. package/dist/x/values.mjs +2 -2
  464. package/dist/x/when.es.js +2 -2
  465. package/dist/x/when.es.min.js +2 -2
  466. package/dist/x/when.js +2 -2
  467. package/dist/x/when.min.js +2 -2
  468. package/dist/x/when.mjs +2 -2
  469. package/dist-test.js +31 -2042
  470. package/eq.js +21 -63
  471. package/es.js +739 -869
  472. package/every.js +94 -0
  473. package/filter.js +23 -91
  474. package/flatMap.js +75 -70
  475. package/forEach.js +82 -0
  476. package/get.js +23 -6
  477. package/global.js +6 -4
  478. package/gt.js +15 -58
  479. package/gte.js +14 -57
  480. package/index.js +739 -869
  481. package/lt.js +17 -60
  482. package/lte.js +14 -57
  483. package/map.js +9 -94
  484. package/memory-usage/reduce.js +2 -2
  485. package/not.js +27 -45
  486. package/omit.js +4 -0
  487. package/or.js +50 -33
  488. package/package.json +7 -7
  489. package/pick.js +5 -1
  490. package/pipe.js +13 -50
  491. package/reduce.js +42 -51
  492. package/rubico.js +22 -11
  493. package/set.js +43 -10
  494. package/some.js +105 -0
  495. package/switchCase.js +13 -3
  496. package/tap.js +0 -24
  497. package/test.js +847 -1096
  498. package/thunkify.js +9 -0
  499. package/tmp.js +1 -0
  500. package/transform.js +31 -16
  501. package/tryCatch.js +19 -15
  502. package/x/differenceWith.js +3 -3
  503. package/x/filterOut.test.js +6 -6
  504. package/x/flatten.js +1 -1
  505. package/x/flatten.test.js +0 -8
  506. package/x/index.js +0 -2
  507. package/x/pluck.js +18 -27
  508. package/x/pluck.test.js +3 -7
  509. package/x/timeInLoop.js +16 -25
  510. package/x/timeInLoop.test.js +8 -4
  511. package/any.js +0 -82
  512. package/dist/__.min.mjs +0 -7
  513. package/dist/all.min.mjs +0 -7
  514. package/dist/always.min.mjs +0 -7
  515. package/dist/and.min.mjs +0 -7
  516. package/dist/any.es.min.js +0 -7
  517. package/dist/any.min.js +0 -8
  518. package/dist/any.min.mjs +0 -7
  519. package/dist/assign.min.mjs +0 -7
  520. package/dist/curry.min.mjs +0 -7
  521. package/dist/eq.min.mjs +0 -7
  522. package/dist/filter.min.mjs +0 -7
  523. package/dist/flatMap.min.mjs +0 -7
  524. package/dist/fork.es.js +0 -159
  525. package/dist/fork.es.min.js +0 -7
  526. package/dist/fork.js +0 -166
  527. package/dist/fork.min.js +0 -8
  528. package/dist/fork.min.mjs +0 -7
  529. package/dist/fork.mjs +0 -159
  530. package/dist/get.min.mjs +0 -7
  531. package/dist/gt.min.mjs +0 -7
  532. package/dist/gte.min.mjs +0 -7
  533. package/dist/lt.min.mjs +0 -7
  534. package/dist/lte.min.mjs +0 -7
  535. package/dist/map.min.mjs +0 -7
  536. package/dist/not.min.mjs +0 -7
  537. package/dist/omit.min.mjs +0 -7
  538. package/dist/or.min.mjs +0 -7
  539. package/dist/pick.min.mjs +0 -7
  540. package/dist/pipe.min.mjs +0 -7
  541. package/dist/reduce.min.mjs +0 -7
  542. package/dist/rubico.min.mjs +0 -7
  543. package/dist/set.min.mjs +0 -7
  544. package/dist/switchCase.min.mjs +0 -7
  545. package/dist/tap.min.mjs +0 -7
  546. package/dist/thunkify.min.mjs +0 -7
  547. package/dist/transform.min.mjs +0 -7
  548. package/dist/tryCatch.min.mjs +0 -7
  549. package/dist/x/append.min.mjs +0 -7
  550. package/dist/x/callProp.min.mjs +0 -7
  551. package/dist/x/defaultsDeep.min.mjs +0 -7
  552. package/dist/x/differenceWith.min.mjs +0 -7
  553. package/dist/x/filterOut.min.mjs +0 -7
  554. package/dist/x/find.min.mjs +0 -7
  555. package/dist/x/findIndex.min.mjs +0 -7
  556. package/dist/x/first.min.mjs +0 -7
  557. package/dist/x/flatten.min.mjs +0 -7
  558. package/dist/x/forEach.es.min.js +0 -7
  559. package/dist/x/forEach.min.js +0 -8
  560. package/dist/x/forEach.min.mjs +0 -7
  561. package/dist/x/groupBy.min.mjs +0 -7
  562. package/dist/x/has.min.mjs +0 -7
  563. package/dist/x/identity.min.mjs +0 -7
  564. package/dist/x/includes.min.mjs +0 -7
  565. package/dist/x/isDeepEqual.min.mjs +0 -7
  566. package/dist/x/isEmpty.min.mjs +0 -7
  567. package/dist/x/isEqual.min.mjs +0 -7
  568. package/dist/x/isFunction.min.mjs +0 -7
  569. package/dist/x/isIn.min.mjs +0 -7
  570. package/dist/x/isObject.min.mjs +0 -7
  571. package/dist/x/isString.min.mjs +0 -7
  572. package/dist/x/keys.min.mjs +0 -7
  573. package/dist/x/last.min.mjs +0 -7
  574. package/dist/x/maxBy.min.mjs +0 -7
  575. package/dist/x/noop.min.mjs +0 -7
  576. package/dist/x/pluck.min.mjs +0 -7
  577. package/dist/x/prepend.min.mjs +0 -7
  578. package/dist/x/size.min.mjs +0 -7
  579. package/dist/x/trace.min.mjs +0 -7
  580. package/dist/x/unionWith.min.mjs +0 -7
  581. package/dist/x/uniq.min.mjs +0 -7
  582. package/dist/x/unless.min.mjs +0 -7
  583. package/dist/x/values.min.mjs +0 -7
  584. package/dist/x/when.min.mjs +0 -7
  585. package/distributor.js +0 -495
  586. package/fork.js +0 -101
  587. package/x/forEach.js +0 -93
  588. package/x/forEach.test.js +0 -218
  589. /package/{benchmarks → archive/benchmarks-v1.9.7}/any.js +0 -0
  590. /package/{x/forEach.benchmark.js → archive/benchmarks-v1.9.7/forEach.js} +0 -0
  591. /package/{benchmarks → archive/benchmarks-v1.9.7}/fork.js +0 -0
  592. /package/{benchmarks → archive/benchmarks-v1.9.7}/integration.js +0 -0
  593. /package/{benchmarks → archive/benchmarks-v1.9.7}/misc.js +0 -0
package/dist/reduce.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.1
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
7
 
@@ -46,37 +46,6 @@ const curry3 = function (baseFunc, arg0, arg1, arg2) {
46
46
  return curry3ResolveArg2(baseFunc, arg0, arg1)
47
47
  }
48
48
 
49
- // argument resolver for curryArgs3
50
- const curryArgs3ResolveArgs0 = (
51
- baseFunc, arg1, arg2,
52
- ) => function args0Resolver(...args) {
53
- return baseFunc(args, arg1, arg2)
54
- }
55
-
56
- // argument resolver for curryArgs3
57
- const curryArgs3ResolveArgs1 = (
58
- baseFunc, arg0, arg2,
59
- ) => function arg1Resolver(...args) {
60
- return baseFunc(arg0, args, arg2)
61
- }
62
-
63
- // argument resolver for curryArgs3
64
- const curryArgs3ResolveArgs2 = (
65
- baseFunc, arg0, arg1,
66
- ) => function arg2Resolver(...args) {
67
- return baseFunc(arg0, arg1, args)
68
- }
69
-
70
- const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
71
- if (arg0 == __) {
72
- return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
73
- }
74
- if (arg1 == __) {
75
- return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
76
- }
77
- return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
78
- }
79
-
80
49
  const isArray = Array.isArray
81
50
 
82
51
  const objectValues = Object.values
@@ -173,6 +142,37 @@ const curry2 = function (baseFunc, arg0, arg1) {
173
142
  : curry2ResolveArg1(baseFunc, arg0)
174
143
  }
175
144
 
145
+ // argument resolver for curryArgs3
146
+ const curryArgs3ResolveArgs0 = (
147
+ baseFunc, arg1, arg2,
148
+ ) => function args0Resolver(...args) {
149
+ return baseFunc(args, arg1, arg2)
150
+ }
151
+
152
+ // argument resolver for curryArgs3
153
+ const curryArgs3ResolveArgs1 = (
154
+ baseFunc, arg0, arg2,
155
+ ) => function arg1Resolver(...args) {
156
+ return baseFunc(arg0, args, arg2)
157
+ }
158
+
159
+ // argument resolver for curryArgs3
160
+ const curryArgs3ResolveArgs2 = (
161
+ baseFunc, arg0, arg1,
162
+ ) => function arg2Resolver(...args) {
163
+ return baseFunc(arg0, arg1, args)
164
+ }
165
+
166
+ const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
167
+ if (arg0 == __) {
168
+ return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
169
+ }
170
+ if (arg1 == __) {
171
+ return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
172
+ }
173
+ return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
174
+ }
175
+
176
176
  // argument resolver for curry4
177
177
  const curry4ResolveArg0 = (
178
178
  baseFunc, arg1, arg2, arg3,
@@ -295,13 +295,6 @@ const curry5 = function (baseFunc, arg0, arg1, arg2, arg3, arg4) {
295
295
 
296
296
  const objectKeys = Object.keys
297
297
 
298
- const objectGetFirstKey = function (object) {
299
- for (const key in object) {
300
- return key
301
- }
302
- return undefined
303
- }
304
-
305
298
  const objectReduceAsync = async function (object, reducer, result, keys, index) {
306
299
  const keysLength = keys.length
307
300
  while (++index < keysLength) {
@@ -362,24 +355,6 @@ const mapReduce = function (map, reducer, result) {
362
355
  return result
363
356
  }
364
357
 
365
- const funcConcatSync = (
366
- funcA, funcB,
367
- ) => function pipedFunction(...args) {
368
- return funcB(funcA(...args))
369
- }
370
-
371
- const generatorFunctionReduce = (
372
- generatorFunction, reducer, result,
373
- ) => funcConcatSync(
374
- generatorFunction,
375
- curry3(iteratorReduce, __, reducer, result))
376
-
377
- const asyncGeneratorFunctionReduce = (
378
- asyncGeneratorFunction, reducer, result,
379
- ) => funcConcatSync(
380
- asyncGeneratorFunction,
381
- curry3(asyncIteratorReduce, __, reducer, result))
382
-
383
358
  const reducerConcat = (
384
359
  reducerA, reducerB,
385
360
  ) => function pipedReducer(result, item) {
@@ -389,26 +364,10 @@ const reducerConcat = (
389
364
  : reducerB(intermediate, item)
390
365
  }
391
366
 
392
- const genericReduce = function (args, reducer, result) {
393
- const collection = args[0]
367
+ const genericReduce = function (collection, reducer, result) {
394
368
  if (isArray(collection)) {
395
369
  return arrayReduce(collection, reducer, result)
396
370
  }
397
- if (typeof collection == 'function') {
398
- if (isGeneratorFunction(collection)) {
399
- return generatorFunctionReduce(collection, reducer, result)
400
- }
401
- if (isAsyncGeneratorFunction(collection)) {
402
- return asyncGeneratorFunctionReduce(collection, reducer, result)
403
- }
404
- return curryArgs3(
405
- genericReduce,
406
- __,
407
- args.length == 1
408
- ? reducerConcat(reducer, collection)
409
- : args.reduce(reducerConcat, reducer),
410
- result)
411
- }
412
371
  if (collection == null) {
413
372
  return result === undefined
414
373
  ? curry2(reducer, collection, __)
@@ -443,28 +402,27 @@ const genericReduce = function (args, reducer, result) {
443
402
  : reducer(result, collection)
444
403
  }
445
404
 
446
- const reduce = function (...args) {
447
- if (typeof args[0] != 'function') {
448
- const reducer = args[1]
449
- const initialValue = args[2]
450
- if (typeof initialValue == 'function') {
451
- return genericReduce([args[0]], reducer, initialValue(args[0]))
452
- }
453
- return genericReduce([args[0]], reducer, initialValue)
405
+ // _reduce(collection any, reducer function, initialValue function|any) -> Promise
406
+ const _reduce = function (collection, reducer, initialValue) {
407
+ if (typeof initialValue == 'function') {
408
+ const actualInitialValue = initialValue(collection)
409
+ return isPromise(actualInitialValue)
410
+ ? actualInitialValue.then(curry3(genericReduce, collection, reducer, __))
411
+ : genericReduce(collection, reducer, actualInitialValue)
454
412
  }
413
+ return isPromise(initialValue)
414
+ ? initialValue.then(curry3(genericReduce, collection, reducer, __))
415
+ : genericReduce(collection, reducer, initialValue)
416
+ }
455
417
 
456
- const reducer = args[0]
457
- const initialValue = args[1]
458
-
459
- if (typeof initialValue == 'function') {
460
- return function reducing(...args) {
461
- const result = initialValue(...args)
462
- return isPromise(result)
463
- ? result.then(curry3(genericReduce, args, reducer, __))
464
- : genericReduce(args, reducer, result)
465
- }
418
+ const reduce = function (...args) {
419
+ if (typeof args[0] == 'function') {
420
+ return curry3(_reduce, __, args[0], args[1])
421
+ }
422
+ if (isPromise(args[0])) {
423
+ return args[0].then(curry3(_reduce, __, args[1], args[2]))
466
424
  }
467
- return curryArgs3(genericReduce, __, reducer, initialValue)
425
+ return _reduce(args[0], args[1], args[2])
468
426
  }
469
427
 
470
428
  return reduce
@@ -1,8 +1,8 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.1
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
7
 
8
- !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.reduce=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=Symbol.for("placeholder"),e=function(n,e,o,r){return e==t?((n,t,e)=>function(o){return n(o,t,e)})(n,o,r):o==t?((n,t,e)=>function(o){return n(t,o,e)})(n,e,r):((n,t,e)=>function(o){return n(t,e,o)})(n,e,o)},o=function(n,e,o,r){return e==t?((n,t,e)=>function(...o){return n(o,t,e)})(n,o,r):o==t?((n,t,e)=>function(...o){return n(t,o,e)})(n,e,r):((n,t,e)=>function(...o){return n(t,e,o)})(n,e,o)},r=Array.isArray,u=(Object.values,Object.prototype.toString),c=n=>u.call(n),f=async function(t,e,o){let r=t.next();if(r.done)return o;for(;!r.done;)o=e(o,r.value),n(o)&&(o=await o),r=t.next();return o},i=function(o,r,u){let c=o.next();if(c.done)return u;for(void 0===u&&(u=c.value,c=o.next());!c.done;){if(u=r(u,c.value),n(u))return u.then(e(f,o,r,t));c=o.next()}return u},a=async function(n,t,e){let o=await n.next();if(o.done)return e;for(void 0===e&&(e=o.value,o=await n.next());!o.done;)e=await t(e,o.value),o=await n.next();return e},l=Symbol.iterator,s=Symbol.asyncIterator,y=function(n,e,o){return e==t?((n,t)=>function(e){return n(e,t)})(n,o):((n,t)=>function(e){return n(t,e)})(n,e)},d=function(n,e,o,r,u){return e==t?((n,t,e,o)=>function(r){return n(r,t,e,o)})(n,o,r,u):o==t?((n,t,e,o)=>function(r){return n(t,r,e,o)})(n,e,r,u):r==t?((n,t,e,o)=>function(r){return n(t,e,r,o)})(n,e,o,u):((n,t,e,o)=>function(r){return n(t,e,o,r)})(n,e,o,r)},p=async function(t,e,o,r){const u=t.length;for(;++r<u;)o=e(o,t[r],r,t),n(o)&&(o=await o);return o},h=Object.keys,v=async function(t,e,o,r,u){const c=r.length;for(;++u<c;){const c=r[u];o=e(o,t[c],c,t),n(o)&&(o=await o)}return o},b=async function(t,e,o,r){for(const[u,c]of r)o=e(o,c,u,t),n(o)&&(o=await o);return o},x=(n,t)=>function(...e){return t(n(...e))},g=(e,o)=>function(r,u){const c=e(r,u);return n(c)?c.then(y(o,t,u)):o(c,u)},j=function(u,f,w){const m=u[0];return r(m)?function(e,o,r){const u=e.length;let c=-1;for(void 0===r&&(r=e[++c]);++c<u;)if(r=o(r,e[c],c,e),n(r))return r.then(d(p,e,o,t,c));return r}(m,f,w):"function"==typeof m?"[object GeneratorFunction]"==c(m)?((n,o,r)=>x(n,e(i,t,o,r)))(m,f,w):(n=>"[object AsyncGeneratorFunction]"==c(n))(m)?((n,o,r)=>x(n,e(a,t,o,r)))(m,f,w):o(j,t,1==u.length?g(f,m):u.reduce(g,f),w):null==m?void 0===w?y(f,m,t):f(w,m):m.constructor==Map?function(e,o,r){const u=e.entries();if(void 0===r){const n=u.next();if(n.done)return r;r=n.value[1]}for(const[c,f]of u)if(r=o(r,f,c,e),n(r))return r.then(d(b,e,o,t,u));return r}(m,f,w):"function"==typeof m[l]?i(m[l](),f,w):"function"==typeof m[s]?a(m[s](),f,w):"function"==typeof m.reduce?m.reduce(f,w):"function"==typeof m.chain?m.chain(y(f,w,t)):"function"==typeof m.flatMap?m.flatMap(y(f,w,t)):m.constructor==Object?function(e,o,r){const u=h(e),c=u.length;let f=-1;for(void 0===r&&(r=e[u[++f]]);++f<c;){const c=u[f];if(r=o(r,e[c],c,e),n(r))return r.then((i=v,l=o,s=t,y=u,d=f,(a=e)==t?((n,t,e,o,r)=>function(u){return n(u,t,e,o,r)})(i,l,s,y,d):l==t?((n,t,e,o,r)=>function(u){return n(t,u,e,o,r)})(i,a,s,y,d):s==t?((n,t,e,o,r)=>function(u){return n(t,e,u,o,r)})(i,a,l,y,d):y==t?((n,t,e,o,r)=>function(u){return n(t,e,o,u,r)})(i,a,l,s,d):((n,t,e,o,r)=>function(u){return n(t,e,o,r,u)})(i,a,l,s,y)))}var i,a,l,s,y,d;return r}(m,f,w):void 0===w?y(f,m,t):f(w,m)};return function(...r){if("function"!=typeof r[0]){const n=r[1],t=r[2];return j([r[0]],n,"function"==typeof t?t(r[0]):t)}const u=r[0],c=r[1];return"function"==typeof c?function(...o){const r=c(...o);return n(r)?r.then(e(j,o,u,t)):j(o,u,r)}:o(j,t,u,c)}}());
8
+ !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.reduce=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=Symbol.for("placeholder"),e=function(n,e,r,o){return e==t?((n,t,e)=>function(r){return n(r,t,e)})(n,r,o):r==t?((n,t,e)=>function(r){return n(t,r,e)})(n,e,o):((n,t,e)=>function(r){return n(t,e,r)})(n,e,r)},r=Array.isArray,o=(Object.values,Object.prototype.toString,async function(t,e,r){let o=t.next();if(o.done)return r;for(;!o.done;)r=e(r,o.value),n(r)&&(r=await r),o=t.next();return r}),u=Symbol.iterator,f=Symbol.asyncIterator,i=function(n,e,r){return e==t?((n,t)=>function(e){return n(e,t)})(n,r):((n,t)=>function(e){return n(t,e)})(n,e)},c=function(n,e,r,o,u){return e==t?((n,t,e,r)=>function(o){return n(o,t,e,r)})(n,r,o,u):r==t?((n,t,e,r)=>function(o){return n(t,o,e,r)})(n,e,o,u):o==t?((n,t,e,r)=>function(o){return n(t,e,o,r)})(n,e,r,u):((n,t,e,r)=>function(o){return n(t,e,r,o)})(n,e,r,o)},a=async function(t,e,r,o){const u=t.length;for(;++o<u;)r=e(r,t[o],o,t),n(r)&&(r=await r);return r},l=Object.keys,s=async function(t,e,r,o,u){const f=o.length;for(;++u<f;){const f=o[u];r=e(r,t[f],f,t),n(r)&&(r=await r)}return r},y=async function(t,e,r,o){for(const[u,f]of o)r=e(r,f,u,t),n(r)&&(r=await r);return r},d=function(d,h,p){return r(d)?function(e,r,o){const u=e.length;let f=-1;for(void 0===o&&(o=e[++f]);++f<u;)if(o=r(o,e[f],f,e),n(o))return o.then(c(a,e,r,t,f));return o}(d,h,p):null==d?void 0===p?i(h,d,t):h(p,d):d.constructor==Map?function(e,r,o){const u=e.entries();if(void 0===o){const n=u.next();if(n.done)return o;o=n.value[1]}for(const[f,i]of u)if(o=r(o,i,f,e),n(o))return o.then(c(y,e,r,t,u));return o}(d,h,p):"function"==typeof d[u]?function(r,u,f){let i=r.next();if(i.done)return f;for(void 0===f&&(f=i.value,i=r.next());!i.done;){if(f=u(f,i.value),n(f))return f.then(e(o,r,u,t));i=r.next()}return f}(d[u](),h,p):"function"==typeof d[f]?async function(n,t,e){let r=await n.next();if(r.done)return e;for(void 0===e&&(e=r.value,r=await n.next());!r.done;)e=await t(e,r.value),r=await n.next();return e}(d[f](),h,p):"function"==typeof d.reduce?d.reduce(h,p):"function"==typeof d.chain?d.chain(i(h,p,t)):"function"==typeof d.flatMap?d.flatMap(i(h,p,t)):d.constructor==Object?function(e,r,o){const u=l(e),f=u.length;let i=-1;for(void 0===o&&(o=e[u[++i]]);++i<f;){const f=u[i];if(o=r(o,e[f],f,e),n(o))return o.then((c=s,y=r,d=t,h=u,p=i,(a=e)==t?((n,t,e,r,o)=>function(u){return n(u,t,e,r,o)})(c,y,d,h,p):y==t?((n,t,e,r,o)=>function(u){return n(t,u,e,r,o)})(c,a,d,h,p):d==t?((n,t,e,r,o)=>function(u){return n(t,e,u,r,o)})(c,a,y,h,p):h==t?((n,t,e,r,o)=>function(u){return n(t,e,r,u,o)})(c,a,y,d,p):((n,t,e,r,o)=>function(u){return n(t,e,r,o,u)})(c,a,y,d,h)))}var c,a,y,d,h,p;return o}(d,h,p):void 0===p?i(h,d,t):h(p,d)},h=function(r,o,u){if("function"==typeof u){const f=u(r);return n(f)?f.then(e(d,r,o,t)):d(r,o,f)}return n(u)?u.then(e(d,r,o,t)):d(r,o,u)};return function(...r){return"function"==typeof r[0]?e(h,t,r[0],r[1]):n(r[0])?r[0].then(e(h,t,r[1],r[2])):h(r[0],r[1],r[2])}}());
package/dist/reduce.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.1
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
7
 
@@ -40,37 +40,6 @@ const curry3 = function (baseFunc, arg0, arg1, arg2) {
40
40
  return curry3ResolveArg2(baseFunc, arg0, arg1)
41
41
  }
42
42
 
43
- // argument resolver for curryArgs3
44
- const curryArgs3ResolveArgs0 = (
45
- baseFunc, arg1, arg2,
46
- ) => function args0Resolver(...args) {
47
- return baseFunc(args, arg1, arg2)
48
- }
49
-
50
- // argument resolver for curryArgs3
51
- const curryArgs3ResolveArgs1 = (
52
- baseFunc, arg0, arg2,
53
- ) => function arg1Resolver(...args) {
54
- return baseFunc(arg0, args, arg2)
55
- }
56
-
57
- // argument resolver for curryArgs3
58
- const curryArgs3ResolveArgs2 = (
59
- baseFunc, arg0, arg1,
60
- ) => function arg2Resolver(...args) {
61
- return baseFunc(arg0, arg1, args)
62
- }
63
-
64
- const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
65
- if (arg0 == __) {
66
- return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
67
- }
68
- if (arg1 == __) {
69
- return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
70
- }
71
- return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
72
- }
73
-
74
43
  const isArray = Array.isArray
75
44
 
76
45
  const objectValues = Object.values
@@ -167,6 +136,37 @@ const curry2 = function (baseFunc, arg0, arg1) {
167
136
  : curry2ResolveArg1(baseFunc, arg0)
168
137
  }
169
138
 
139
+ // argument resolver for curryArgs3
140
+ const curryArgs3ResolveArgs0 = (
141
+ baseFunc, arg1, arg2,
142
+ ) => function args0Resolver(...args) {
143
+ return baseFunc(args, arg1, arg2)
144
+ }
145
+
146
+ // argument resolver for curryArgs3
147
+ const curryArgs3ResolveArgs1 = (
148
+ baseFunc, arg0, arg2,
149
+ ) => function arg1Resolver(...args) {
150
+ return baseFunc(arg0, args, arg2)
151
+ }
152
+
153
+ // argument resolver for curryArgs3
154
+ const curryArgs3ResolveArgs2 = (
155
+ baseFunc, arg0, arg1,
156
+ ) => function arg2Resolver(...args) {
157
+ return baseFunc(arg0, arg1, args)
158
+ }
159
+
160
+ const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
161
+ if (arg0 == __) {
162
+ return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
163
+ }
164
+ if (arg1 == __) {
165
+ return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
166
+ }
167
+ return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
168
+ }
169
+
170
170
  // argument resolver for curry4
171
171
  const curry4ResolveArg0 = (
172
172
  baseFunc, arg1, arg2, arg3,
@@ -289,13 +289,6 @@ const curry5 = function (baseFunc, arg0, arg1, arg2, arg3, arg4) {
289
289
 
290
290
  const objectKeys = Object.keys
291
291
 
292
- const objectGetFirstKey = function (object) {
293
- for (const key in object) {
294
- return key
295
- }
296
- return undefined
297
- }
298
-
299
292
  const objectReduceAsync = async function (object, reducer, result, keys, index) {
300
293
  const keysLength = keys.length
301
294
  while (++index < keysLength) {
@@ -356,24 +349,6 @@ const mapReduce = function (map, reducer, result) {
356
349
  return result
357
350
  }
358
351
 
359
- const funcConcatSync = (
360
- funcA, funcB,
361
- ) => function pipedFunction(...args) {
362
- return funcB(funcA(...args))
363
- }
364
-
365
- const generatorFunctionReduce = (
366
- generatorFunction, reducer, result,
367
- ) => funcConcatSync(
368
- generatorFunction,
369
- curry3(iteratorReduce, __, reducer, result))
370
-
371
- const asyncGeneratorFunctionReduce = (
372
- asyncGeneratorFunction, reducer, result,
373
- ) => funcConcatSync(
374
- asyncGeneratorFunction,
375
- curry3(asyncIteratorReduce, __, reducer, result))
376
-
377
352
  const reducerConcat = (
378
353
  reducerA, reducerB,
379
354
  ) => function pipedReducer(result, item) {
@@ -383,26 +358,10 @@ const reducerConcat = (
383
358
  : reducerB(intermediate, item)
384
359
  }
385
360
 
386
- const genericReduce = function (args, reducer, result) {
387
- const collection = args[0]
361
+ const genericReduce = function (collection, reducer, result) {
388
362
  if (isArray(collection)) {
389
363
  return arrayReduce(collection, reducer, result)
390
364
  }
391
- if (typeof collection == 'function') {
392
- if (isGeneratorFunction(collection)) {
393
- return generatorFunctionReduce(collection, reducer, result)
394
- }
395
- if (isAsyncGeneratorFunction(collection)) {
396
- return asyncGeneratorFunctionReduce(collection, reducer, result)
397
- }
398
- return curryArgs3(
399
- genericReduce,
400
- __,
401
- args.length == 1
402
- ? reducerConcat(reducer, collection)
403
- : args.reduce(reducerConcat, reducer),
404
- result)
405
- }
406
365
  if (collection == null) {
407
366
  return result === undefined
408
367
  ? curry2(reducer, collection, __)
@@ -437,28 +396,27 @@ const genericReduce = function (args, reducer, result) {
437
396
  : reducer(result, collection)
438
397
  }
439
398
 
440
- const reduce = function (...args) {
441
- if (typeof args[0] != 'function') {
442
- const reducer = args[1]
443
- const initialValue = args[2]
444
- if (typeof initialValue == 'function') {
445
- return genericReduce([args[0]], reducer, initialValue(args[0]))
446
- }
447
- return genericReduce([args[0]], reducer, initialValue)
399
+ // _reduce(collection any, reducer function, initialValue function|any) -> Promise
400
+ const _reduce = function (collection, reducer, initialValue) {
401
+ if (typeof initialValue == 'function') {
402
+ const actualInitialValue = initialValue(collection)
403
+ return isPromise(actualInitialValue)
404
+ ? actualInitialValue.then(curry3(genericReduce, collection, reducer, __))
405
+ : genericReduce(collection, reducer, actualInitialValue)
448
406
  }
407
+ return isPromise(initialValue)
408
+ ? initialValue.then(curry3(genericReduce, collection, reducer, __))
409
+ : genericReduce(collection, reducer, initialValue)
410
+ }
449
411
 
450
- const reducer = args[0]
451
- const initialValue = args[1]
452
-
453
- if (typeof initialValue == 'function') {
454
- return function reducing(...args) {
455
- const result = initialValue(...args)
456
- return isPromise(result)
457
- ? result.then(curry3(genericReduce, args, reducer, __))
458
- : genericReduce(args, reducer, result)
459
- }
412
+ const reduce = function (...args) {
413
+ if (typeof args[0] == 'function') {
414
+ return curry3(_reduce, __, args[0], args[1])
415
+ }
416
+ if (isPromise(args[0])) {
417
+ return args[0].then(curry3(_reduce, __, args[1], args[2]))
460
418
  }
461
- return curryArgs3(genericReduce, __, reducer, initialValue)
419
+ return _reduce(args[0], args[1], args[2])
462
420
  }
463
421
 
464
422
  export default reduce