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/all.mjs CHANGED
@@ -1,14 +1,94 @@
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
+ 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
package/dist/always.es.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
 
@@ -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
  const always=a=>function(){return a};export default always;
package/dist/always.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
 
@@ -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
 
package/dist/always.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
 
package/dist/and.es.js CHANGED
@@ -1,14 +1,48 @@
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
+ const promiseAll = Promise.all.bind(Promise)
9
+
8
10
  const isPromise = value => value != null && typeof value.then == 'function'
9
11
 
12
+ const areAnyValuesPromises = function (values) {
13
+ const length = values.length
14
+ let index = -1
15
+ while (++index < length) {
16
+ const value = values[index]
17
+ if (isPromise(value)) {
18
+ return true
19
+ }
20
+ }
21
+ return false
22
+ }
23
+
10
24
  const __ = Symbol.for('placeholder')
11
25
 
26
+ // argument resolver for curry2
27
+ const curry2ResolveArg0 = (
28
+ baseFunc, arg1,
29
+ ) => function arg0Resolver(arg0) {
30
+ return baseFunc(arg0, arg1)
31
+ }
32
+
33
+ // argument resolver for curry2
34
+ const curry2ResolveArg1 = (
35
+ baseFunc, arg0,
36
+ ) => function arg1Resolver(arg1) {
37
+ return baseFunc(arg0, arg1)
38
+ }
39
+
40
+ const curry2 = function (baseFunc, arg0, arg1) {
41
+ return arg0 == __
42
+ ? curry2ResolveArg0(baseFunc, arg1)
43
+ : curry2ResolveArg1(baseFunc, arg0)
44
+ }
45
+
12
46
  // argument resolver for curry3
13
47
  const curry3ResolveArg0 = (
14
48
  baseFunc, arg1, arg2,
@@ -40,6 +74,27 @@ const curry3 = function (baseFunc, arg0, arg1, arg2) {
40
74
  return curry3ResolveArg2(baseFunc, arg0, arg1)
41
75
  }
42
76
 
77
+ // argument resolver for curryArgs2
78
+ const curryArgs2ResolveArgs0 = (
79
+ baseFunc, arg1, arg2,
80
+ ) => function args0Resolver(...args) {
81
+ return baseFunc(args, arg1)
82
+ }
83
+
84
+ // argument resolver for curryArgs2
85
+ const curryArgs2ResolveArgs1 = (
86
+ baseFunc, arg0, arg2,
87
+ ) => function arg1Resolver(...args) {
88
+ return baseFunc(arg0, args)
89
+ }
90
+
91
+ const curryArgs2 = function (baseFunc, arg0, arg1) {
92
+ if (arg0 == __) {
93
+ return curryArgs2ResolveArgs0(baseFunc, arg1)
94
+ }
95
+ return curryArgs2ResolveArgs1(baseFunc, arg0)
96
+ }
97
+
43
98
  const thunkConditional = (
44
99
  conditionalExpression, thunkOnTruthy, thunkOnFalsy,
45
100
  ) => conditionalExpression ? thunkOnTruthy() : thunkOnFalsy()
@@ -65,15 +120,15 @@ const thunkify3 = (func, arg0, arg1, arg2) => function thunk() {
65
120
 
66
121
  const always = value => function getter() { return value }
67
122
 
68
- const areAllNonfunctionsTruthy = function (predicates, index) {
123
+ const areAllValuesTruthy = function (predicates, index) {
69
124
  const length = predicates.length
70
125
  while (++index < length) {
71
- let predicate = predicates[index]
126
+ const predicate = predicates[index]
72
127
  if (isPromise(predicate)) {
73
128
  return predicate.then(curry3(
74
129
  thunkConditional,
75
130
  __,
76
- thunkify2(areAllNonfunctionsTruthy, predicates, index),
131
+ thunkify2(areAllValuesTruthy, predicates, index),
77
132
  always(false),
78
133
  ))
79
134
  }
@@ -84,12 +139,12 @@ const areAllNonfunctionsTruthy = function (predicates, index) {
84
139
  return true
85
140
  }
86
141
 
87
- const asyncArePredicatesAllTruthy = async function (predicates, point, index) {
142
+ const asyncArePredicatesAllTruthy = async function (args, predicates, index) {
88
143
  const length = predicates.length
89
144
  while (++index < length) {
90
145
  let predicate = predicates[index]
91
146
  if (typeof predicate == 'function') {
92
- predicate = predicate(point)
147
+ predicate = predicate(...args)
93
148
  }
94
149
  if (isPromise(predicate)) {
95
150
  predicate = await predicate
@@ -101,33 +156,47 @@ const asyncArePredicatesAllTruthy = async function (predicates, point, index) {
101
156
  return true
102
157
  }
103
158
 
104
- const and = predicates => {
105
- if (areAllValuesNonfunctions(predicates)) {
106
- return areAllNonfunctionsTruthy(predicates, -1)
107
- }
108
- return function arePredicatesAllTruthy(point) {
109
- const length = predicates.length
110
- let index = -1
111
-
112
- while (++index < length) {
113
- let predicate = predicates[index]
114
- if (typeof predicate == 'function') {
115
- predicate = predicate(point)
116
- }
117
- if (isPromise(predicate)) {
118
- return predicate.then(curry3(
119
- thunkConditional,
120
- __,
121
- thunkify3(asyncArePredicatesAllTruthy, predicates, point, index),
122
- always(false),
123
- ))
124
- }
125
- if (!predicate) {
126
- return false
127
- }
159
+ // areAllPredicatesTruthy(args Array, predicates Array<function>) -> Promise|boolean
160
+ const areAllPredicatesTruthy = function (args, predicates) {
161
+ const length = predicates.length
162
+ let index = -1
163
+
164
+ while (++index < length) {
165
+ let predicate = predicates[index]
166
+ if (typeof predicate == 'function') {
167
+ predicate = predicate(...args)
168
+ }
169
+ if (isPromise(predicate)) {
170
+ return predicate.then(curry3(
171
+ thunkConditional,
172
+ __,
173
+ thunkify3(asyncArePredicatesAllTruthy, args, predicates, index),
174
+ always(false),
175
+ ))
176
+ }
177
+ if (!predicate) {
178
+ return false
128
179
  }
129
- return true
130
180
  }
181
+ return true
182
+ }
183
+
184
+ const and = function (...args) {
185
+ const predicatesOrValues = args.pop()
186
+ if (areAllValuesNonfunctions(predicatesOrValues)) {
187
+ return areAllValuesTruthy(predicatesOrValues, -1)
188
+ }
189
+
190
+ if (args.length == 0) {
191
+ return curryArgs2(areAllPredicatesTruthy, __, predicatesOrValues)
192
+ }
193
+
194
+ if (areAnyValuesPromises(args)) {
195
+ return promiseAll(args)
196
+ .then(curry2(areAllPredicatesTruthy, __, predicatesOrValues))
197
+ }
198
+
199
+ return areAllPredicatesTruthy(args, predicatesOrValues)
131
200
  }
132
201
 
133
202
  export default and
@@ -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
- const isPromise=n=>null!=n&&"function"==typeof n.then,__=Symbol.for("placeholder"),curry3ResolveArg0=(n,r,t)=>function(e){return n(e,r,t)},curry3ResolveArg1=(n,r,t)=>function(e){return n(r,e,t)},curry3ResolveArg2=(n,r,t)=>function(e){return n(r,t,e)},curry3=function(n,r,t,e){return r==__?curry3ResolveArg0(n,t,e):t==__?curry3ResolveArg1(n,r,e):curry3ResolveArg2(n,r,t)},thunkConditional=(n,r,t)=>n?r():t(),areAllValuesNonfunctions=function(n){const r=n.length;let t=-1;for(;++t<r;)if("function"==typeof n[t])return!1;return!0},thunkify2=(n,r,t)=>function(){return n(r,t)},thunkify3=(n,r,t,e)=>function(){return n(r,t,e)},always=n=>function(){return n},areAllNonfunctionsTruthy=function(n,r){const t=n.length;for(;++r<t;){let t=n[r];if(isPromise(t))return t.then(curry3(thunkConditional,__,thunkify2(areAllNonfunctionsTruthy,n,r),always(!1)));if(!t)return!1}return!0},asyncArePredicatesAllTruthy=async function(n,r,t){const e=n.length;for(;++t<e;){let e=n[t];if("function"==typeof e&&(e=e(r)),isPromise(e)&&(e=await e),!e)return!1}return!0},and=n=>areAllValuesNonfunctions(n)?areAllNonfunctionsTruthy(n,-1):function(r){const t=n.length;let e=-1;for(;++e<t;){let t=n[e];if("function"==typeof t&&(t=t(r)),isPromise(t))return t.then(curry3(thunkConditional,__,thunkify3(asyncArePredicatesAllTruthy,n,r,e),always(!1)));if(!t)return!1}return!0};export default and;
7
+ const promiseAll=Promise.all.bind(Promise),isPromise=r=>null!=r&&"function"==typeof r.then,areAnyValuesPromises=function(r){const e=r.length;let n=-1;for(;++n<e;){const e=r[n];if(isPromise(e))return!0}return!1},__=Symbol.for("placeholder"),curry2ResolveArg0=(r,e)=>function(n){return r(n,e)},curry2ResolveArg1=(r,e)=>function(n){return r(e,n)},curry2=function(r,e,n){return e==__?curry2ResolveArg0(r,n):curry2ResolveArg1(r,e)},curry3ResolveArg0=(r,e,n)=>function(t){return r(t,e,n)},curry3ResolveArg1=(r,e,n)=>function(t){return r(e,t,n)},curry3ResolveArg2=(r,e,n)=>function(t){return r(e,n,t)},curry3=function(r,e,n,t){return e==__?curry3ResolveArg0(r,n,t):n==__?curry3ResolveArg1(r,e,t):curry3ResolveArg2(r,e,n)},curryArgs2ResolveArgs0=(r,e,n)=>function(...n){return r(n,e)},curryArgs2ResolveArgs1=(r,e,n)=>function(...n){return r(e,n)},curryArgs2=function(r,e,n){return e==__?curryArgs2ResolveArgs0(r,n):curryArgs2ResolveArgs1(r,e)},thunkConditional=(r,e,n)=>r?e():n(),areAllValuesNonfunctions=function(r){const e=r.length;let n=-1;for(;++n<e;)if("function"==typeof r[n])return!1;return!0},thunkify2=(r,e,n)=>function(){return r(e,n)},thunkify3=(r,e,n,t)=>function(){return r(e,n,t)},always=r=>function(){return r},areAllValuesTruthy=function(r,e){const n=r.length;for(;++e<n;){const n=r[e];if(isPromise(n))return n.then(curry3(thunkConditional,__,thunkify2(areAllValuesTruthy,r,e),always(!1)));if(!n)return!1}return!0},asyncArePredicatesAllTruthy=async function(r,e,n){const t=e.length;for(;++n<t;){let t=e[n];if("function"==typeof t&&(t=t(...r)),isPromise(t)&&(t=await t),!t)return!1}return!0},areAllPredicatesTruthy=function(r,e){const n=e.length;let t=-1;for(;++t<n;){let n=e[t];if("function"==typeof n&&(n=n(...r)),isPromise(n))return n.then(curry3(thunkConditional,__,thunkify3(asyncArePredicatesAllTruthy,r,e,t),always(!1)));if(!n)return!1}return!0},and=function(...r){const e=r.pop();return areAllValuesNonfunctions(e)?areAllValuesTruthy(e,-1):0==r.length?(n=areAllPredicatesTruthy,u=e,(t=__)==__?curryArgs2ResolveArgs0(n,u):curryArgs2ResolveArgs1(n,t)):areAnyValuesPromises(r)?promiseAll(r).then(curry2(areAllPredicatesTruthy,__,e)):areAllPredicatesTruthy(r,e);var n,t,u};export default and;