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
package/dist/all.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.0
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
7
 
@@ -11,10 +11,90 @@
11
11
  else (root.all = all) // Browser
12
12
  }(typeof globalThis == 'object' ? globalThis : this, (function () { 'use strict'
13
13
 
14
+ const isPromise = value => value != null && typeof value.then == 'function'
15
+
16
+ const areAnyValuesPromises = function (values) {
17
+ const length = values.length
18
+ let index = -1
19
+ while (++index < length) {
20
+ const value = values[index]
21
+ if (isPromise(value)) {
22
+ return true
23
+ }
24
+ }
25
+ return false
26
+ }
27
+
28
+ const promiseAll = Promise.all.bind(Promise)
29
+
14
30
  const isArray = Array.isArray
15
31
 
16
32
  const __ = Symbol.for('placeholder')
17
33
 
34
+ // argument resolver for curry2
35
+ const curry2ResolveArg0 = (
36
+ baseFunc, arg1,
37
+ ) => function arg0Resolver(arg0) {
38
+ return baseFunc(arg0, arg1)
39
+ }
40
+
41
+ // argument resolver for curry2
42
+ const curry2ResolveArg1 = (
43
+ baseFunc, arg0,
44
+ ) => function arg1Resolver(arg1) {
45
+ return baseFunc(arg0, arg1)
46
+ }
47
+
48
+ const curry2 = function (baseFunc, arg0, arg1) {
49
+ return arg0 == __
50
+ ? curry2ResolveArg0(baseFunc, arg1)
51
+ : curry2ResolveArg1(baseFunc, arg0)
52
+ }
53
+
54
+ // argument resolver for curryArgs2
55
+ const curryArgs2ResolveArgs0 = (
56
+ baseFunc, arg1, arg2,
57
+ ) => function args0Resolver(...args) {
58
+ return baseFunc(args, arg1)
59
+ }
60
+
61
+ // argument resolver for curryArgs2
62
+ const curryArgs2ResolveArgs1 = (
63
+ baseFunc, arg0, arg2,
64
+ ) => function arg1Resolver(...args) {
65
+ return baseFunc(arg0, args)
66
+ }
67
+
68
+ const curryArgs2 = function (baseFunc, arg0, arg1) {
69
+ if (arg0 == __) {
70
+ return curryArgs2ResolveArgs0(baseFunc, arg1)
71
+ }
72
+ return curryArgs2ResolveArgs1(baseFunc, arg0)
73
+ }
74
+
75
+ const functionArrayAll = function (funcs, args) {
76
+ const funcsLength = funcs.length,
77
+ result = Array(funcsLength)
78
+ let funcsIndex = -1, isAsync = false
79
+ while (++funcsIndex < funcsLength) {
80
+ const resultItem = funcs[funcsIndex](...args)
81
+ if (isPromise(resultItem)) {
82
+ isAsync = true
83
+ }
84
+ result[funcsIndex] = resultItem
85
+ }
86
+ return isAsync ? promiseAll(result) : result
87
+ }
88
+
89
+ const funcConcat = (
90
+ funcA, funcB,
91
+ ) => function pipedFunction(...args) {
92
+ const intermediate = funcA(...args)
93
+ return isPromise(intermediate)
94
+ ? intermediate.then(funcB)
95
+ : funcB(intermediate)
96
+ }
97
+
18
98
  // argument resolver for curry3
19
99
  const curry3ResolveArg0 = (
20
100
  baseFunc, arg1, arg2,
@@ -46,118 +126,119 @@ const curry3 = function (baseFunc, arg0, arg1, arg2) {
46
126
  return curry3ResolveArg2(baseFunc, arg0, arg1)
47
127
  }
48
128
 
49
- const isPromise = value => value != null && typeof value.then == 'function'
129
+ // argument resolver for curry4
130
+ const curry4ResolveArg0 = (
131
+ baseFunc, arg1, arg2, arg3,
132
+ ) => function arg0Resolver(arg0) {
133
+ return baseFunc(arg0, arg1, arg2, arg3)
134
+ }
50
135
 
51
- const promiseAll = Promise.all.bind(Promise)
136
+ // argument resolver for curry4
137
+ const curry4ResolveArg1 = (
138
+ baseFunc, arg0, arg2, arg3,
139
+ ) => function arg1Resolver(arg1) {
140
+ return baseFunc(arg0, arg1, arg2, arg3)
141
+ }
142
+
143
+ // argument resolver for curry4
144
+ const curry4ResolveArg2 = (
145
+ baseFunc, arg0, arg1, arg3,
146
+ ) => function arg2Resolver(arg2) {
147
+ return baseFunc(arg0, arg1, arg2, arg3)
148
+ }
52
149
 
53
- const callPropUnary = (value, property, arg0) => value[property](arg0)
150
+ // argument resolver for curry4
151
+ const curry4ResolveArg3 = (
152
+ baseFunc, arg0, arg1, arg2,
153
+ ) => function arg3Resolver(arg3) {
154
+ return baseFunc(arg0, arg1, arg2, arg3)
155
+ }
54
156
 
55
- const arrayAll = function (array, predicate) {
56
- const arrayLength = array.length,
57
- promises = []
58
- let index = -1
59
- while (++index < arrayLength) {
60
- const predication = predicate(array[index])
61
- if (isPromise(predication)) {
62
- promises.push(predication)
63
- } else if (!predication) {
64
- return false
65
- }
157
+ const curry4 = function (baseFunc, arg0, arg1, arg2, arg3) {
158
+ if (arg0 == __) {
159
+ return curry4ResolveArg0(baseFunc, arg1, arg2, arg3)
66
160
  }
67
- return promises.length == 0
68
- ? true
69
- : promiseAll(promises).then(curry3(callPropUnary, __, 'every', Boolean))
70
- }
71
-
72
- const iteratorAll = function (iterator, predicate) {
73
- const promises = []
74
- for (const item of iterator) {
75
- const predication = predicate(item)
76
- if (isPromise(predication)) {
77
- promises.push(predication)
78
- } else if (!predication) {
79
- return false
80
- }
161
+ if (arg1 == __) {
162
+ return curry4ResolveArg1(baseFunc, arg0, arg2, arg3)
163
+ }
164
+ if (arg2 == __) {
165
+ return curry4ResolveArg2(baseFunc, arg0, arg1, arg3)
81
166
  }
82
- return promises.length == 0
83
- ? true
84
- : promiseAll(promises).then(curry3(callPropUnary, __, 'every', Boolean))
167
+ return curry4ResolveArg3(baseFunc, arg0, arg1, arg2)
85
168
  }
86
169
 
87
- const SelfReferencingPromise = function (basePromise) {
88
- const promise = basePromise.then(res => [res, promise])
89
- return promise
170
+ const objectSet = function (object, property, value) {
171
+ object[property] = value
172
+ return object
90
173
  }
91
174
 
92
- const promiseRace = Promise.race.bind(Promise)
93
-
94
- const asyncIteratorAll = async function (
95
- asyncIterator, predicate, promisesInFlight, maxConcurrency = 20,
96
- ) {
97
- let iteration = await asyncIterator.next()
98
- while (!iteration.done) {
99
- if (promisesInFlight.size >= maxConcurrency) {
100
- const [predication, promise] = await promiseRace(promisesInFlight)
101
- promisesInFlight.delete(promise)
102
- if (!predication) {
103
- return false
104
- }
105
- }
106
-
107
- const predication = predicate(iteration.value)
108
- if (isPromise(predication)) {
109
- promisesInFlight.add(SelfReferencingPromise(predication))
110
- } else if (!predication) {
111
- return false
112
- }
113
- iteration = await asyncIterator.next()
175
+ const asyncFunctionArrayAllSeries = async function (funcs, args, result, funcsIndex) {
176
+ const funcsLength = funcs.length
177
+ while (++funcsIndex < funcsLength) {
178
+ const resultItem = funcs[funcsIndex](...args)
179
+ result[funcsIndex] = isPromise(resultItem) ? await resultItem : resultItem
114
180
  }
115
- while (promisesInFlight.size > 0) {
116
- const [predication, promise] = await promiseRace(promisesInFlight)
117
- promisesInFlight.delete(promise)
118
- if (!predication) {
119
- return false
181
+ return result
182
+ }
183
+
184
+ const functionArrayAllSeries = function (funcs, args) {
185
+ const funcsLength = funcs.length, result = []
186
+ let funcsIndex = -1
187
+ while (++funcsIndex < funcsLength) {
188
+ const resultItem = funcs[funcsIndex](...args)
189
+ if (isPromise(resultItem)) {
190
+ return resultItem.then(funcConcat(
191
+ curry3(objectSet, result, funcsIndex, __),
192
+ curry4(asyncFunctionArrayAllSeries, funcs, args, __, funcsIndex)))
120
193
  }
194
+ result[funcsIndex] = resultItem
121
195
  }
122
- return true
196
+ return result
123
197
  }
124
198
 
125
- const objectValues = Object.values
199
+ const always = value => function getter() { return value }
126
200
 
127
- const reducerAllSync = (predicate, result, item) => result ? predicate(item) : false
128
-
129
- const reducerAll = predicate => function allReducer(result, item) {
130
- return result === false ? false
131
- : isPromise(result) ? result.then(
132
- curry3(reducerAllSync, predicate, __, item))
133
- : result ? predicate(item) : false
201
+ const functionObjectAll = function (funcs, args) {
202
+ const result = {}, promises = []
203
+ for (const key in funcs) {
204
+ const resultItem = funcs[key](...args)
205
+ if (isPromise(resultItem)) {
206
+ promises.push(resultItem.then(curry3(objectSet, result, key, __)))
207
+ } else {
208
+ result[key] = resultItem
209
+ }
210
+ }
211
+ return promises.length == 0 ? result : promiseAll(promises).then(always(result))
134
212
  }
135
213
 
136
- const symbolIterator = Symbol.iterator
137
-
138
- const symbolAsyncIterator = Symbol.asyncIterator
139
-
140
- const all = predicate => function allTruthy(value) {
141
- if (isArray(value)) {
142
- return arrayAll(value, predicate)
143
- }
144
- if (value == null) {
145
- return predicate(value)
214
+ const all = function (...args) {
215
+ const funcs = args.pop()
216
+ if (args.length == 0) {
217
+ return isArray(funcs)
218
+ ? curryArgs2(functionArrayAll, funcs, __)
219
+ : curryArgs2(functionObjectAll, funcs, __)
146
220
  }
147
221
 
148
- if (typeof value[symbolIterator] == 'function') {
149
- return iteratorAll(value[symbolIterator](), predicate)
222
+ if (areAnyValuesPromises(args)) {
223
+ return isArray(funcs)
224
+ ? promiseAll(args).then(curry2(functionArrayAll, funcs, __))
225
+ : promiseAll(args).then(curry2(functionObjectAll, funcs, __))
150
226
  }
151
- if (typeof value[symbolAsyncIterator] == 'function') {
152
- return asyncIteratorAll(value[symbolAsyncIterator](), predicate, new Set())
153
- }
154
- if (typeof value.reduce == 'function') {
155
- return value.reduce(reducerAll(predicate), true)
227
+
228
+ return isArray(funcs)
229
+ ? functionArrayAll(funcs, args)
230
+ : functionObjectAll(funcs, args)
231
+ }
232
+
233
+ all.series = function allSeries(...args) {
234
+ const funcs = args.pop()
235
+ if (args.length == 0) {
236
+ return curryArgs2(functionArrayAllSeries, funcs, __)
156
237
  }
157
- if (value.constructor == Object) {
158
- return arrayAll(objectValues(value), predicate)
238
+ if (areAnyValuesPromises(args)) {
239
+ return promiseAll(args).then(curry2(functionArrayAllSeries, funcs, __))
159
240
  }
160
- return predicate(value)
241
+ return functionArrayAllSeries(funcs, args)
161
242
  }
162
243
 
163
244
  return all
package/dist/all.min.js CHANGED
@@ -1,8 +1,8 @@
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
 
8
- !function(e,n){"object"==typeof module?module.exports=n:"function"==typeof define?define((()=>n)):e.all=n}("object"==typeof globalThis?globalThis:this,function(){"use strict";const e=Array.isArray,n=Symbol.for("placeholder"),t=function(e,t,o,r){return t==n?((e,n,t)=>function(o){return e(o,n,t)})(e,o,r):o==n?((e,n,t)=>function(o){return e(n,o,t)})(e,t,r):((e,n,t)=>function(o){return e(n,t,o)})(e,t,o)},o=e=>null!=e&&"function"==typeof e.then,r=Promise.all.bind(Promise),i=(e,n,t)=>e[n](t),u=function(e,u){const f=e.length,c=[];let l=-1;for(;++l<f;){const n=u(e[l]);if(o(n))c.push(n);else if(!n)return!1}return 0==c.length||r(c).then(t(i,n,"every",Boolean))},f=function(e){const n=e.then((e=>[e,n]));return n},c=Promise.race.bind(Promise),l=Object.values,s=(e,n,t)=>!!n&&e(t),a=Symbol.iterator,y=Symbol.asyncIterator;return d=>function(h){return e(h)?u(h,d):null==h?d(h):"function"==typeof h[a]?function(e,u){const f=[];for(const n of e){const e=u(n);if(o(e))f.push(e);else if(!e)return!1}return 0==f.length||r(f).then(t(i,n,"every",Boolean))}(h[a](),d):"function"==typeof h[y]?async function(e,n,t,r=20){let i=await e.next();for(;!i.done;){if(t.size>=r){const[e,n]=await c(t);if(t.delete(n),!e)return!1}const u=n(i.value);if(o(u))t.add(f(u));else if(!u)return!1;i=await e.next()}for(;t.size>0;){const[e,n]=await c(t);if(t.delete(n),!e)return!1}return!0}(h[y](),d,new Set):"function"==typeof h.reduce?h.reduce((e=>function(r,i){return!1!==r&&(o(r)?r.then(t(s,e,n,i)):!!r&&e(i))})(d),!0):h.constructor==Object?u(l(h),d):d(h)}}());
8
+ !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.all=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=function(t){const r=t.length;let o=-1;for(;++o<r;){const r=t[o];if(n(r))return!0}return!1},r=Promise.all.bind(Promise),o=Array.isArray,e=Symbol.for("placeholder"),u=function(n,t,r){return t==e?((n,t)=>function(r){return n(r,t)})(n,r):((n,t)=>function(r){return n(t,r)})(n,t)},c=function(n,t,r){return t==e?((n,t,r)=>function(...r){return n(r,t)})(n,r):((n,t,r)=>function(...r){return n(t,r)})(n,t)},i=function(t,o){const e=t.length,u=Array(e);let c=-1,i=!1;for(;++c<e;){const r=t[c](...o);n(r)&&(i=!0),u[c]=r}return i?r(u):u},f=(t,r)=>function(...o){const e=t(...o);return n(e)?e.then(r):r(e)},s=function(n,t,r,o){return t==e?((n,t,r)=>function(o){return n(o,t,r)})(n,r,o):r==e?((n,t,r)=>function(o){return n(t,o,r)})(n,t,o):((n,t,r)=>function(o){return n(t,r,o)})(n,t,r)},l=function(n,t,r){return n[t]=r,n},h=async function(t,r,o,e){const u=t.length;for(;++e<u;){const u=t[e](...r);o[e]=n(u)?await u:u}return o},a=function(t,r){const o=t.length,u=[];let c=-1;for(;++c<o;){const o=t[c](...r);if(n(o))return o.then(f(s(l,u,c,e),(i=h,p=r,g=e,y=c,(a=t)==e?((n,t,r,o)=>function(e){return n(e,t,r,o)})(i,p,g,y):p==e?((n,t,r,o)=>function(e){return n(t,e,r,o)})(i,a,g,y):g==e?((n,t,r,o)=>function(e){return n(t,r,e,o)})(i,a,p,y):((n,t,r,o)=>function(e){return n(t,r,o,e)})(i,a,p,g))));u[c]=o}var i,a,p,g,y;return u},p=function(t,o){const u={},c=[];for(const r in t){const i=t[r](...o);n(i)?c.push(i.then(s(l,u,r,e))):u[r]=i}return 0==c.length?u:r(c).then((i=u,function(){return i}));var i},g=function(...n){const f=n.pop();return 0==n.length?o(f)?c(i,f,e):c(p,f,e):t(n)?o(f)?r(n).then(u(i,f,e)):r(n).then(u(p,f,e)):o(f)?i(f,n):p(f,n)};return g.series=function(...n){const o=n.pop();return 0==n.length?c(a,o,e):t(n)?r(n).then(u(a,o,e)):a(o,n)},g}());
package/dist/all.min.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.0
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
- const isArray=Array.isArray,__=Symbol.for("placeholder"),curry3ResolveArg0=(r,e,t)=>function(o){return r(o,e,t)},curry3ResolveArg1=(r,e,t)=>function(o){return r(e,o,t)},curry3ResolveArg2=(r,e,t)=>function(o){return r(e,t,o)},curry3=function(r,e,t,o){return e==__?curry3ResolveArg0(r,t,o):t==__?curry3ResolveArg1(r,e,o):curry3ResolveArg2(r,e,t)},isPromise=r=>null!=r&&"function"==typeof r.then,promiseAll=Promise.all.bind(Promise),callPropUnary=(r,e,t)=>r[e](t),arrayAll=function(r,e){const t=r.length,o=[];let n=-1;for(;++n<t;){const t=e(r[n]);if(isPromise(t))o.push(t);else if(!t)return!1}return 0==o.length||promiseAll(o).then(curry3(callPropUnary,__,"every",Boolean))},iteratorAll=function(r,e){const t=[];for(const o of r){const r=e(o);if(isPromise(r))t.push(r);else if(!r)return!1}return 0==t.length||promiseAll(t).then(curry3(callPropUnary,__,"every",Boolean))},SelfReferencingPromise=function(r){const e=r.then((r=>[r,e]));return e},promiseRace=Promise.race.bind(Promise),asyncIteratorAll=async function(r,e,t,o=20){let n=await r.next();for(;!n.done;){if(t.size>=o){const[r,e]=await promiseRace(t);if(t.delete(e),!r)return!1}const l=e(n.value);if(isPromise(l))t.add(SelfReferencingPromise(l));else if(!l)return!1;n=await r.next()}for(;t.size>0;){const[r,e]=await promiseRace(t);if(t.delete(e),!r)return!1}return!0},objectValues=Object.values,reducerAllSync=(r,e,t)=>!!e&&r(t),reducerAll=r=>function(e,t){return!1!==e&&(isPromise(e)?e.then(curry3(reducerAllSync,r,__,t)):!!e&&r(t))},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,all=r=>function(e){return isArray(e)?arrayAll(e,r):null==e?r(e):"function"==typeof e[symbolIterator]?iteratorAll(e[symbolIterator](),r):"function"==typeof e[symbolAsyncIterator]?asyncIteratorAll(e[symbolAsyncIterator](),r,new Set):"function"==typeof e.reduce?e.reduce(reducerAll(r),!0):e.constructor==Object?arrayAll(objectValues(e),r):r(e)};export default all;
7
+ const isPromise=r=>null!=r&&"function"==typeof r.then,areAnyValuesPromises=function(r){const n=r.length;let e=-1;for(;++e<n;){const n=r[e];if(isPromise(n))return!0}return!1},promiseAll=Promise.all.bind(Promise),isArray=Array.isArray,__=Symbol.for("placeholder"),curry2ResolveArg0=(r,n)=>function(e){return r(e,n)},curry2ResolveArg1=(r,n)=>function(e){return r(n,e)},curry2=function(r,n,e){return n==__?curry2ResolveArg0(r,e):curry2ResolveArg1(r,n)},curryArgs2ResolveArgs0=(r,n,e)=>function(...e){return r(e,n)},curryArgs2ResolveArgs1=(r,n,e)=>function(...e){return r(n,e)},curryArgs2=function(r,n,e){return n==__?curryArgs2ResolveArgs0(r,e):curryArgs2ResolveArgs1(r,n)},functionArrayAll=function(r,n){const e=r.length,t=Array(e);let o=-1,u=!1;for(;++o<e;){const e=r[o](...n);isPromise(e)&&(u=!0),t[o]=e}return u?promiseAll(t):t},funcConcat=(r,n)=>function(...e){const t=r(...e);return isPromise(t)?t.then(n):n(t)},curry3ResolveArg0=(r,n,e)=>function(t){return r(t,n,e)},curry3ResolveArg1=(r,n,e)=>function(t){return r(n,t,e)},curry3ResolveArg2=(r,n,e)=>function(t){return r(n,e,t)},curry3=function(r,n,e,t){return n==__?curry3ResolveArg0(r,e,t):e==__?curry3ResolveArg1(r,n,t):curry3ResolveArg2(r,n,e)},curry4ResolveArg0=(r,n,e,t)=>function(o){return r(o,n,e,t)},curry4ResolveArg1=(r,n,e,t)=>function(o){return r(n,o,e,t)},curry4ResolveArg2=(r,n,e,t)=>function(o){return r(n,e,o,t)},curry4ResolveArg3=(r,n,e,t)=>function(o){return r(n,e,t,o)},curry4=function(r,n,e,t,o){return n==__?curry4ResolveArg0(r,e,t,o):e==__?curry4ResolveArg1(r,n,t,o):t==__?curry4ResolveArg2(r,n,e,o):curry4ResolveArg3(r,n,e,t)},objectSet=function(r,n,e){return r[n]=e,r},asyncFunctionArrayAllSeries=async function(r,n,e,t){const o=r.length;for(;++t<o;){const o=r[t](...n);e[t]=isPromise(o)?await o:o}return e},functionArrayAllSeries=function(r,n){const e=r.length,t=[];let o=-1;for(;++o<e;){const e=r[o](...n);if(isPromise(e))return e.then(funcConcat(curry3(objectSet,t,o,__),(u=asyncFunctionArrayAllSeries,s=n,l=__,i=o,(c=r)==__?curry4ResolveArg0(u,s,l,i):s==__?curry4ResolveArg1(u,c,l,i):l==__?curry4ResolveArg2(u,c,s,i):curry4ResolveArg3(u,c,s,l))));t[o]=e}var u,c,s,l,i;return t},always=r=>function(){return r},functionObjectAll=function(r,n){const e={},t=[];for(const o in r){const u=r[o](...n);isPromise(u)?t.push(u.then(curry3(objectSet,e,o,__))):e[o]=u}return 0==t.length?e:promiseAll(t).then((o=e,function(){return o}));var o},all=function(...r){const n=r.pop();return 0==r.length?isArray(n)?curryArgs2(functionArrayAll,n,__):curryArgs2(functionObjectAll,n,__):areAnyValuesPromises(r)?isArray(n)?promiseAll(r).then(curry2(functionArrayAll,n,__)):promiseAll(r).then(curry2(functionObjectAll,n,__)):isArray(n)?functionArrayAll(n,r):functionObjectAll(n,r)};all.series=function(...r){const n=r.pop();return 0==r.length?curryArgs2(functionArrayAllSeries,n,__):areAnyValuesPromises(r)?promiseAll(r).then(curry2(functionArrayAllSeries,n,__)):functionArrayAllSeries(n,r)};export default all;
package/dist/all.mjs CHANGED
@@ -1,14 +1,94 @@
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
 
8
+ const isPromise = value => value != null && typeof value.then == 'function'
9
+
10
+ const areAnyValuesPromises = function (values) {
11
+ const length = values.length
12
+ let index = -1
13
+ while (++index < length) {
14
+ const value = values[index]
15
+ if (isPromise(value)) {
16
+ return true
17
+ }
18
+ }
19
+ return false
20
+ }
21
+
22
+ const promiseAll = Promise.all.bind(Promise)
23
+
8
24
  const isArray = Array.isArray
9
25
 
10
26
  const __ = Symbol.for('placeholder')
11
27
 
28
+ // argument resolver for curry2
29
+ const curry2ResolveArg0 = (
30
+ baseFunc, arg1,
31
+ ) => function arg0Resolver(arg0) {
32
+ return baseFunc(arg0, arg1)
33
+ }
34
+
35
+ // argument resolver for curry2
36
+ const curry2ResolveArg1 = (
37
+ baseFunc, arg0,
38
+ ) => function arg1Resolver(arg1) {
39
+ return baseFunc(arg0, arg1)
40
+ }
41
+
42
+ const curry2 = function (baseFunc, arg0, arg1) {
43
+ return arg0 == __
44
+ ? curry2ResolveArg0(baseFunc, arg1)
45
+ : curry2ResolveArg1(baseFunc, arg0)
46
+ }
47
+
48
+ // argument resolver for curryArgs2
49
+ const curryArgs2ResolveArgs0 = (
50
+ baseFunc, arg1, arg2,
51
+ ) => function args0Resolver(...args) {
52
+ return baseFunc(args, arg1)
53
+ }
54
+
55
+ // argument resolver for curryArgs2
56
+ const curryArgs2ResolveArgs1 = (
57
+ baseFunc, arg0, arg2,
58
+ ) => function arg1Resolver(...args) {
59
+ return baseFunc(arg0, args)
60
+ }
61
+
62
+ const curryArgs2 = function (baseFunc, arg0, arg1) {
63
+ if (arg0 == __) {
64
+ return curryArgs2ResolveArgs0(baseFunc, arg1)
65
+ }
66
+ return curryArgs2ResolveArgs1(baseFunc, arg0)
67
+ }
68
+
69
+ const functionArrayAll = function (funcs, args) {
70
+ const funcsLength = funcs.length,
71
+ result = Array(funcsLength)
72
+ let funcsIndex = -1, isAsync = false
73
+ while (++funcsIndex < funcsLength) {
74
+ const resultItem = funcs[funcsIndex](...args)
75
+ if (isPromise(resultItem)) {
76
+ isAsync = true
77
+ }
78
+ result[funcsIndex] = resultItem
79
+ }
80
+ return isAsync ? promiseAll(result) : result
81
+ }
82
+
83
+ const funcConcat = (
84
+ funcA, funcB,
85
+ ) => function pipedFunction(...args) {
86
+ const intermediate = funcA(...args)
87
+ return isPromise(intermediate)
88
+ ? intermediate.then(funcB)
89
+ : funcB(intermediate)
90
+ }
91
+
12
92
  // argument resolver for curry3
13
93
  const curry3ResolveArg0 = (
14
94
  baseFunc, arg1, arg2,
@@ -40,118 +120,119 @@ const curry3 = function (baseFunc, arg0, arg1, arg2) {
40
120
  return curry3ResolveArg2(baseFunc, arg0, arg1)
41
121
  }
42
122
 
43
- const isPromise = value => value != null && typeof value.then == 'function'
123
+ // argument resolver for curry4
124
+ const curry4ResolveArg0 = (
125
+ baseFunc, arg1, arg2, arg3,
126
+ ) => function arg0Resolver(arg0) {
127
+ return baseFunc(arg0, arg1, arg2, arg3)
128
+ }
44
129
 
45
- const promiseAll = Promise.all.bind(Promise)
130
+ // argument resolver for curry4
131
+ const curry4ResolveArg1 = (
132
+ baseFunc, arg0, arg2, arg3,
133
+ ) => function arg1Resolver(arg1) {
134
+ return baseFunc(arg0, arg1, arg2, arg3)
135
+ }
136
+
137
+ // argument resolver for curry4
138
+ const curry4ResolveArg2 = (
139
+ baseFunc, arg0, arg1, arg3,
140
+ ) => function arg2Resolver(arg2) {
141
+ return baseFunc(arg0, arg1, arg2, arg3)
142
+ }
46
143
 
47
- const callPropUnary = (value, property, arg0) => value[property](arg0)
144
+ // argument resolver for curry4
145
+ const curry4ResolveArg3 = (
146
+ baseFunc, arg0, arg1, arg2,
147
+ ) => function arg3Resolver(arg3) {
148
+ return baseFunc(arg0, arg1, arg2, arg3)
149
+ }
48
150
 
49
- const arrayAll = function (array, predicate) {
50
- const arrayLength = array.length,
51
- promises = []
52
- let index = -1
53
- while (++index < arrayLength) {
54
- const predication = predicate(array[index])
55
- if (isPromise(predication)) {
56
- promises.push(predication)
57
- } else if (!predication) {
58
- return false
59
- }
151
+ const curry4 = function (baseFunc, arg0, arg1, arg2, arg3) {
152
+ if (arg0 == __) {
153
+ return curry4ResolveArg0(baseFunc, arg1, arg2, arg3)
60
154
  }
61
- return promises.length == 0
62
- ? true
63
- : promiseAll(promises).then(curry3(callPropUnary, __, 'every', Boolean))
64
- }
65
-
66
- const iteratorAll = function (iterator, predicate) {
67
- const promises = []
68
- for (const item of iterator) {
69
- const predication = predicate(item)
70
- if (isPromise(predication)) {
71
- promises.push(predication)
72
- } else if (!predication) {
73
- return false
74
- }
155
+ if (arg1 == __) {
156
+ return curry4ResolveArg1(baseFunc, arg0, arg2, arg3)
157
+ }
158
+ if (arg2 == __) {
159
+ return curry4ResolveArg2(baseFunc, arg0, arg1, arg3)
75
160
  }
76
- return promises.length == 0
77
- ? true
78
- : promiseAll(promises).then(curry3(callPropUnary, __, 'every', Boolean))
161
+ return curry4ResolveArg3(baseFunc, arg0, arg1, arg2)
79
162
  }
80
163
 
81
- const SelfReferencingPromise = function (basePromise) {
82
- const promise = basePromise.then(res => [res, promise])
83
- return promise
164
+ const objectSet = function (object, property, value) {
165
+ object[property] = value
166
+ return object
84
167
  }
85
168
 
86
- const promiseRace = Promise.race.bind(Promise)
87
-
88
- const asyncIteratorAll = async function (
89
- asyncIterator, predicate, promisesInFlight, maxConcurrency = 20,
90
- ) {
91
- let iteration = await asyncIterator.next()
92
- while (!iteration.done) {
93
- if (promisesInFlight.size >= maxConcurrency) {
94
- const [predication, promise] = await promiseRace(promisesInFlight)
95
- promisesInFlight.delete(promise)
96
- if (!predication) {
97
- return false
98
- }
99
- }
100
-
101
- const predication = predicate(iteration.value)
102
- if (isPromise(predication)) {
103
- promisesInFlight.add(SelfReferencingPromise(predication))
104
- } else if (!predication) {
105
- return false
106
- }
107
- iteration = await asyncIterator.next()
169
+ const asyncFunctionArrayAllSeries = async function (funcs, args, result, funcsIndex) {
170
+ const funcsLength = funcs.length
171
+ while (++funcsIndex < funcsLength) {
172
+ const resultItem = funcs[funcsIndex](...args)
173
+ result[funcsIndex] = isPromise(resultItem) ? await resultItem : resultItem
108
174
  }
109
- while (promisesInFlight.size > 0) {
110
- const [predication, promise] = await promiseRace(promisesInFlight)
111
- promisesInFlight.delete(promise)
112
- if (!predication) {
113
- return false
175
+ return result
176
+ }
177
+
178
+ const functionArrayAllSeries = function (funcs, args) {
179
+ const funcsLength = funcs.length, result = []
180
+ let funcsIndex = -1
181
+ while (++funcsIndex < funcsLength) {
182
+ const resultItem = funcs[funcsIndex](...args)
183
+ if (isPromise(resultItem)) {
184
+ return resultItem.then(funcConcat(
185
+ curry3(objectSet, result, funcsIndex, __),
186
+ curry4(asyncFunctionArrayAllSeries, funcs, args, __, funcsIndex)))
114
187
  }
188
+ result[funcsIndex] = resultItem
115
189
  }
116
- return true
190
+ return result
117
191
  }
118
192
 
119
- const objectValues = Object.values
193
+ const always = value => function getter() { return value }
120
194
 
121
- const reducerAllSync = (predicate, result, item) => result ? predicate(item) : false
122
-
123
- const reducerAll = predicate => function allReducer(result, item) {
124
- return result === false ? false
125
- : isPromise(result) ? result.then(
126
- curry3(reducerAllSync, predicate, __, item))
127
- : result ? predicate(item) : false
195
+ const functionObjectAll = function (funcs, args) {
196
+ const result = {}, promises = []
197
+ for (const key in funcs) {
198
+ const resultItem = funcs[key](...args)
199
+ if (isPromise(resultItem)) {
200
+ promises.push(resultItem.then(curry3(objectSet, result, key, __)))
201
+ } else {
202
+ result[key] = resultItem
203
+ }
204
+ }
205
+ return promises.length == 0 ? result : promiseAll(promises).then(always(result))
128
206
  }
129
207
 
130
- const symbolIterator = Symbol.iterator
131
-
132
- const symbolAsyncIterator = Symbol.asyncIterator
133
-
134
- const all = predicate => function allTruthy(value) {
135
- if (isArray(value)) {
136
- return arrayAll(value, predicate)
137
- }
138
- if (value == null) {
139
- return predicate(value)
208
+ const all = function (...args) {
209
+ const funcs = args.pop()
210
+ if (args.length == 0) {
211
+ return isArray(funcs)
212
+ ? curryArgs2(functionArrayAll, funcs, __)
213
+ : curryArgs2(functionObjectAll, funcs, __)
140
214
  }
141
215
 
142
- if (typeof value[symbolIterator] == 'function') {
143
- return iteratorAll(value[symbolIterator](), predicate)
216
+ if (areAnyValuesPromises(args)) {
217
+ return isArray(funcs)
218
+ ? promiseAll(args).then(curry2(functionArrayAll, funcs, __))
219
+ : promiseAll(args).then(curry2(functionObjectAll, funcs, __))
144
220
  }
145
- if (typeof value[symbolAsyncIterator] == 'function') {
146
- return asyncIteratorAll(value[symbolAsyncIterator](), predicate, new Set())
147
- }
148
- if (typeof value.reduce == 'function') {
149
- return value.reduce(reducerAll(predicate), true)
221
+
222
+ return isArray(funcs)
223
+ ? functionArrayAll(funcs, args)
224
+ : functionObjectAll(funcs, args)
225
+ }
226
+
227
+ all.series = function allSeries(...args) {
228
+ const funcs = args.pop()
229
+ if (args.length == 0) {
230
+ return curryArgs2(functionArrayAllSeries, funcs, __)
150
231
  }
151
- if (value.constructor == Object) {
152
- return arrayAll(objectValues(value), predicate)
232
+ if (areAnyValuesPromises(args)) {
233
+ return promiseAll(args).then(curry2(functionArrayAllSeries, funcs, __))
153
234
  }
154
- return predicate(value)
235
+ return functionArrayAllSeries(funcs, args)
155
236
  }
156
237
 
157
238
  export default all