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
@@ -1,10 +1,34 @@
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 __ = Symbol.for('placeholder')
11
+
12
+ // argument resolver for curry2
13
+ const curry2ResolveArg0 = (
14
+ baseFunc, arg1,
15
+ ) => function arg0Resolver(arg0) {
16
+ return baseFunc(arg0, arg1)
17
+ }
18
+
19
+ // argument resolver for curry2
20
+ const curry2ResolveArg1 = (
21
+ baseFunc, arg0,
22
+ ) => function arg1Resolver(arg1) {
23
+ return baseFunc(arg0, arg1)
24
+ }
25
+
26
+ const curry2 = function (baseFunc, arg0, arg1) {
27
+ return arg0 == __
28
+ ? curry2ResolveArg0(baseFunc, arg1)
29
+ : curry2ResolveArg1(baseFunc, arg0)
30
+ }
31
+
8
32
  const isArray = Array.isArray
9
33
 
10
34
  const objectValues = Object.values
@@ -14,11 +38,9 @@ const SelfReferencingPromise = function (basePromise) {
14
38
  return promise
15
39
  }
16
40
 
17
- const isPromise = value => value != null && typeof value.then == 'function'
18
-
19
41
  const promiseRace = Promise.race.bind(Promise)
20
42
 
21
- const asyncArrayAny = async function (
43
+ const asyncArraySome = async function (
22
44
  array, predicate, index, promisesInFlight,
23
45
  ) {
24
46
  const length = array.length
@@ -41,13 +63,13 @@ const asyncArrayAny = async function (
41
63
  return false
42
64
  }
43
65
 
44
- const arrayAny = function (array, predicate) {
66
+ const arraySome = function (array, predicate) {
45
67
  const length = array.length
46
68
  let index = -1
47
69
  while (++index < length) {
48
70
  const predication = predicate(array[index])
49
71
  if (isPromise(predication)) {
50
- return asyncArrayAny(
72
+ return asyncArraySome(
51
73
  array, predicate, index, new Set([SelfReferencingPromise(predication)]))
52
74
  }
53
75
  if (predication) {
@@ -57,7 +79,7 @@ const arrayAny = function (array, predicate) {
57
79
  return false
58
80
  }
59
81
 
60
- const asyncIteratorAny = async function (
82
+ const asyncIteratorSome = async function (
61
83
  iterator, predicate, promisesInFlight, maxConcurrency = 20,
62
84
  ) {
63
85
  let iteration = iterator.next()
@@ -94,11 +116,11 @@ const asyncIteratorAny = async function (
94
116
  return false
95
117
  }
96
118
 
97
- const iteratorAny = function (iterator, predicate) {
119
+ const iteratorSome = function (iterator, predicate) {
98
120
  for (const item of iterator) {
99
121
  const predication = predicate(item)
100
122
  if (isPromise(predication)) {
101
- return asyncIteratorAny(
123
+ return asyncIteratorSome(
102
124
  iterator, predicate, new Set([SelfReferencingPromise(predication)]))
103
125
  }
104
126
  if (predication) {
@@ -112,29 +134,7 @@ const reducerAnySync = predicate => function anyReducer(result, item) {
112
134
  return result ? true : predicate(item)
113
135
  }
114
136
 
115
- const __ = Symbol.for('placeholder')
116
-
117
- // argument resolver for curry2
118
- const curry2ResolveArg0 = (
119
- baseFunc, arg1,
120
- ) => function arg0Resolver(arg0) {
121
- return baseFunc(arg0, arg1)
122
- }
123
-
124
- // argument resolver for curry2
125
- const curry2ResolveArg1 = (
126
- baseFunc, arg0,
127
- ) => function arg1Resolver(arg1) {
128
- return baseFunc(arg0, arg1)
129
- }
130
-
131
- const curry2 = function (baseFunc, arg0, arg1) {
132
- return arg0 == __
133
- ? curry2ResolveArg0(baseFunc, arg1)
134
- : curry2ResolveArg1(baseFunc, arg0)
135
- }
136
-
137
- const reducerAny = predicate => function anyReducer(result, item) {
137
+ const reducerSome = predicate => function anyReducer(result, item) {
138
138
  return result === true ? result
139
139
  : isPromise(result) ? result.then(curry2(reducerAnySync(predicate), __, item))
140
140
  : result ? true : predicate(item)
@@ -144,26 +144,43 @@ const symbolIterator = Symbol.iterator
144
144
 
145
145
  const symbolAsyncIterator = Symbol.asyncIterator
146
146
 
147
- const any = predicate => function anyTruthy(value) {
148
- if (isArray(value)) {
149
- return arrayAny(value, predicate)
147
+ // _some(collection Array|Iterable|AsyncIterable|{ reduce: function }|Object, predicate function) -> Promise|boolean
148
+ const _some = function (collection, predicate) {
149
+ if (isArray(collection)) {
150
+ return arraySome(collection, predicate)
150
151
  }
151
- if (value == null) {
152
- return predicate(value)
152
+ if (collection == null) {
153
+ return predicate(collection)
153
154
  }
154
- if (typeof value[symbolIterator] == 'function') {
155
- return iteratorAny(value[symbolIterator](), predicate)
155
+ if (typeof collection[symbolIterator] == 'function') {
156
+ return iteratorSome(collection[symbolIterator](), predicate)
156
157
  }
157
- if (typeof value[symbolAsyncIterator] == 'function') {
158
- return asyncIteratorAny(value[symbolAsyncIterator](), predicate, new Set())
158
+ if (typeof collection[symbolAsyncIterator] == 'function') {
159
+ return asyncIteratorSome(
160
+ collection[symbolAsyncIterator](), predicate, new Set()
161
+ )
159
162
  }
160
- if (typeof value.reduce == 'function') {
161
- return value.reduce(reducerAny(predicate), false)
163
+ if (typeof collection.reduce == 'function') {
164
+ return collection.reduce(reducerSome(predicate), false)
162
165
  }
163
- if (value.constructor == Object) {
164
- return arrayAny(objectValues(value), predicate)
166
+ if (collection.constructor == Object) {
167
+ return arraySome(objectValues(collection), predicate)
165
168
  }
166
- return predicate(value)
169
+ return predicate(collection)
170
+ }
171
+
172
+ const some = function (...args) {
173
+ const predicate = args.pop()
174
+ if (args.length == 0) {
175
+ return curry2(_some, __, predicate)
176
+ }
177
+
178
+ const collection = args[0]
179
+ if (isPromise(collection)) {
180
+ return collection.then(curry2(_some, __, predicate))
181
+ }
182
+
183
+ return _some(collection, predicate)
167
184
  }
168
185
 
169
- export default any
186
+ export default some
@@ -1,12 +1,26 @@
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 thunkConditional = (
11
25
  conditionalExpression, thunkOnTruthy, thunkOnFalsy,
12
26
  ) => conditionalExpression ? thunkOnTruthy() : thunkOnFalsy()
@@ -134,13 +148,49 @@ const nonfunctionsConditional = function (array, index) {
134
148
  return array[index]
135
149
  }
136
150
 
137
- const switchCase = values => {
151
+ // argument resolver for curryArgs3
152
+ const curryArgs3ResolveArgs0 = (
153
+ baseFunc, arg1, arg2,
154
+ ) => function args0Resolver(...args) {
155
+ return baseFunc(args, arg1, arg2)
156
+ }
157
+
158
+ // argument resolver for curryArgs3
159
+ const curryArgs3ResolveArgs1 = (
160
+ baseFunc, arg0, arg2,
161
+ ) => function arg1Resolver(...args) {
162
+ return baseFunc(arg0, args, arg2)
163
+ }
164
+
165
+ // argument resolver for curryArgs3
166
+ const curryArgs3ResolveArgs2 = (
167
+ baseFunc, arg0, arg1,
168
+ ) => function arg2Resolver(...args) {
169
+ return baseFunc(arg0, arg1, args)
170
+ }
171
+
172
+ const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
173
+ if (arg0 == __) {
174
+ return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
175
+ }
176
+ if (arg1 == __) {
177
+ return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
178
+ }
179
+ return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
180
+ }
181
+
182
+ const switchCase = (...args) => {
183
+ const values = args.pop()
138
184
  if (areAllValuesNonfunctions(values)) {
139
185
  return nonfunctionsConditional(values, -2)
140
186
  }
141
- return function switchingCases(...args) {
142
- return arrayConditional(values, args, -2)
187
+ if (args.length == 0) {
188
+ return curryArgs3(arrayConditional, values, __, -2)
189
+ }
190
+ if (areAnyValuesPromises(args)) {
191
+ return promiseAll(args).then(curry3(arrayConditional, values, __, -2))
143
192
  }
193
+ return arrayConditional(values, args, -2)
144
194
  }
145
195
 
146
196
  export default switchCase
@@ -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,thunkConditional=(n,t,r)=>n?t():r(),thunkifyArgs=(n,t)=>function(){return n(...t)},thunkify3=(n,t,r,o)=>function(){return n(t,r,o)},__=Symbol.for("placeholder"),curry3ResolveArg0=(n,t,r)=>function(o){return n(o,t,r)},curry3ResolveArg1=(n,t,r)=>function(o){return n(t,o,r)},curry3ResolveArg2=(n,t,r)=>function(o){return n(t,r,o)},curry3=function(n,t,r,o){return t==__?curry3ResolveArg0(n,r,o):r==__?curry3ResolveArg1(n,t,o):curry3ResolveArg2(n,t,r)},always=n=>function(){return n},arrayConditional=function(n,t,r){const o=n.length-1;for(;(r+=2)<o;){const o=n[r],u=n[r+1],i="function"==typeof o?o(...t):o;if(isPromise(i))return i.then(curry3(thunkConditional,__,"function"==typeof u?thunkifyArgs(u,t):always(u),thunkify3(arrayConditional,n,t,r)));if(i)return"function"==typeof u?u(...t):u}if(r==n.length)return;const u=n[o];return"function"==typeof u?u(...t):u},areAllValuesNonfunctions=function(n){const t=n.length;let r=-1;for(;++r<t;)if("function"==typeof n[r])return!1;return!0},thunkify2=(n,t,r)=>function(){return n(t,r)},nonfunctionsConditional=function(n,t){const r=n.length,o=r-1;for(;(t+=2)<o;){const r=n[t],o=n[t+1];if(isPromise(r))return r.then(curry3(thunkConditional,__,always(o),thunkify2(nonfunctionsConditional,n,t)));if(r)return o}if(t!=r)return n[t]},switchCase=n=>areAllValuesNonfunctions(n)?nonfunctionsConditional(n,-2):function(...t){return arrayConditional(n,t,-2)};export default switchCase;
7
+ const promiseAll=Promise.all.bind(Promise),isPromise=r=>null!=r&&"function"==typeof r.then,areAnyValuesPromises=function(r){const n=r.length;let o=-1;for(;++o<n;){const n=r[o];if(isPromise(n))return!0}return!1},thunkConditional=(r,n,o)=>r?n():o(),thunkifyArgs=(r,n)=>function(){return r(...n)},thunkify3=(r,n,o,t)=>function(){return r(n,o,t)},__=Symbol.for("placeholder"),curry3ResolveArg0=(r,n,o)=>function(t){return r(t,n,o)},curry3ResolveArg1=(r,n,o)=>function(t){return r(n,t,o)},curry3ResolveArg2=(r,n,o)=>function(t){return r(n,o,t)},curry3=function(r,n,o,t){return n==__?curry3ResolveArg0(r,o,t):o==__?curry3ResolveArg1(r,n,t):curry3ResolveArg2(r,n,o)},always=r=>function(){return r},arrayConditional=function(r,n,o){const t=r.length-1;for(;(o+=2)<t;){const t=r[o],e=r[o+1],u="function"==typeof t?t(...n):t;if(isPromise(u))return u.then(curry3(thunkConditional,__,"function"==typeof e?thunkifyArgs(e,n):always(e),thunkify3(arrayConditional,r,n,o)));if(u)return"function"==typeof e?e(...n):e}if(o==r.length)return;const e=r[t];return"function"==typeof e?e(...n):e},areAllValuesNonfunctions=function(r){const n=r.length;let o=-1;for(;++o<n;)if("function"==typeof r[o])return!1;return!0},thunkify2=(r,n,o)=>function(){return r(n,o)},nonfunctionsConditional=function(r,n){const o=r.length,t=o-1;for(;(n+=2)<t;){const o=r[n],t=r[n+1];if(isPromise(o))return o.then(curry3(thunkConditional,__,always(t),thunkify2(nonfunctionsConditional,r,n)));if(o)return t}if(n!=o)return r[n]},curryArgs3ResolveArgs0=(r,n,o)=>function(...t){return r(t,n,o)},curryArgs3ResolveArgs1=(r,n,o)=>function(...t){return r(n,t,o)},curryArgs3ResolveArgs2=(r,n,o)=>function(...t){return r(n,o,t)},curryArgs3=function(r,n,o,t){return n==__?curryArgs3ResolveArgs0(r,o,t):o==__?curryArgs3ResolveArgs1(r,n,t):curryArgs3ResolveArgs2(r,n,o)},switchCase=(...r)=>{const n=r.pop();return areAllValuesNonfunctions(n)?nonfunctionsConditional(n,-2):0==r.length?(o=arrayConditional,e=__,u=-2,(t=n)==__?curryArgs3ResolveArgs0(o,e,u):e==__?curryArgs3ResolveArgs1(o,t,u):curryArgs3ResolveArgs2(o,t,e)):areAnyValuesPromises(r)?promiseAll(r).then(curry3(arrayConditional,n,__,-2)):arrayConditional(n,r,-2);var o,t,e,u};export default switchCase;
@@ -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
 
@@ -11,8 +11,22 @@
11
11
  else (root.switchCase = switchCase) // Browser
12
12
  }(typeof globalThis == 'object' ? globalThis : this, (function () { 'use strict'
13
13
 
14
+ const promiseAll = Promise.all.bind(Promise)
15
+
14
16
  const isPromise = value => value != null && typeof value.then == 'function'
15
17
 
18
+ const areAnyValuesPromises = function (values) {
19
+ const length = values.length
20
+ let index = -1
21
+ while (++index < length) {
22
+ const value = values[index]
23
+ if (isPromise(value)) {
24
+ return true
25
+ }
26
+ }
27
+ return false
28
+ }
29
+
16
30
  const thunkConditional = (
17
31
  conditionalExpression, thunkOnTruthy, thunkOnFalsy,
18
32
  ) => conditionalExpression ? thunkOnTruthy() : thunkOnFalsy()
@@ -140,13 +154,49 @@ const nonfunctionsConditional = function (array, index) {
140
154
  return array[index]
141
155
  }
142
156
 
143
- const switchCase = values => {
157
+ // argument resolver for curryArgs3
158
+ const curryArgs3ResolveArgs0 = (
159
+ baseFunc, arg1, arg2,
160
+ ) => function args0Resolver(...args) {
161
+ return baseFunc(args, arg1, arg2)
162
+ }
163
+
164
+ // argument resolver for curryArgs3
165
+ const curryArgs3ResolveArgs1 = (
166
+ baseFunc, arg0, arg2,
167
+ ) => function arg1Resolver(...args) {
168
+ return baseFunc(arg0, args, arg2)
169
+ }
170
+
171
+ // argument resolver for curryArgs3
172
+ const curryArgs3ResolveArgs2 = (
173
+ baseFunc, arg0, arg1,
174
+ ) => function arg2Resolver(...args) {
175
+ return baseFunc(arg0, arg1, args)
176
+ }
177
+
178
+ const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
179
+ if (arg0 == __) {
180
+ return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
181
+ }
182
+ if (arg1 == __) {
183
+ return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
184
+ }
185
+ return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
186
+ }
187
+
188
+ const switchCase = (...args) => {
189
+ const values = args.pop()
144
190
  if (areAllValuesNonfunctions(values)) {
145
191
  return nonfunctionsConditional(values, -2)
146
192
  }
147
- return function switchingCases(...args) {
148
- return arrayConditional(values, args, -2)
193
+ if (args.length == 0) {
194
+ return curryArgs3(arrayConditional, values, __, -2)
195
+ }
196
+ if (areAnyValuesPromises(args)) {
197
+ return promiseAll(args).then(curry3(arrayConditional, values, __, -2))
149
198
  }
199
+ return arrayConditional(values, args, -2)
150
200
  }
151
201
 
152
202
  return switchCase
@@ -1,8 +1,8 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.1
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
7
 
8
- !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.switchCase=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=(n,t,o)=>n?t():o(),o=(n,t)=>function(){return n(...t)},e=(n,t,o,e)=>function(){return n(t,o,e)},r=Symbol.for("placeholder"),u=function(n,t,o,e){return t==r?((n,t,o)=>function(e){return n(e,t,o)})(n,o,e):o==r?((n,t,o)=>function(e){return n(t,e,o)})(n,t,e):((n,t,o)=>function(e){return n(t,o,e)})(n,t,o)},f=n=>function(){return n},i=function(c,l,s){const h=c.length-1;for(;(s+=2)<h;){const h=c[s],p=c[s+1],y="function"==typeof h?h(...l):h;if(n(y))return y.then(u(t,r,"function"==typeof p?o(p,l):f(p),e(i,c,l,s)));if(y)return"function"==typeof p?p(...l):p}if(s==c.length)return;const p=c[h];return"function"==typeof p?p(...l):p},c=(n,t,o)=>function(){return n(t,o)},l=function(o,e){const i=o.length,s=i-1;for(;(e+=2)<s;){const i=o[e],s=o[e+1];if(n(i))return i.then(u(t,r,f(s),c(l,o,e)));if(i)return s}if(e!=i)return o[e]};return n=>function(n){const t=n.length;let o=-1;for(;++o<t;)if("function"==typeof n[o])return!1;return!0}(n)?l(n,-2):function(...t){return i(n,t,-2)}}());
8
+ !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.switchCase=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=Promise.all.bind(Promise),t=n=>null!=n&&"function"==typeof n.then,e=(n,t,e)=>n?t():e(),o=(n,t)=>function(){return n(...t)},r=(n,t,e,o)=>function(){return n(t,e,o)},u=Symbol.for("placeholder"),f=function(n,t,e,o){return t==u?((n,t,e)=>function(o){return n(o,t,e)})(n,e,o):e==u?((n,t,e)=>function(o){return n(t,o,e)})(n,t,o):((n,t,e)=>function(o){return n(t,e,o)})(n,t,e)},i=n=>function(){return n},c=function(n,l,s){const h=n.length-1;for(;(s+=2)<h;){const h=n[s],p=n[s+1],y="function"==typeof h?h(...l):h;if(t(y))return y.then(f(e,u,"function"==typeof p?o(p,l):i(p),r(c,n,l,s)));if(y)return"function"==typeof p?p(...l):p}if(s==n.length)return;const p=n[h];return"function"==typeof p?p(...l):p},l=(n,t,e)=>function(){return n(t,e)},s=function(n,o){const r=n.length,c=r-1;for(;(o+=2)<c;){const r=n[o],c=n[o+1];if(t(r))return r.then(f(e,u,i(c),l(s,n,o)));if(r)return c}if(o!=r)return n[o]};return(...e)=>{const o=e.pop();return function(n){const t=n.length;let e=-1;for(;++e<t;)if("function"==typeof n[e])return!1;return!0}(o)?s(o,-2):0==e.length?(r=c,l=u,h=-2,(i=o)==u?((n,t,e)=>function(...o){return n(o,t,e)})(r,l,h):l==u?((n,t,e)=>function(...o){return n(t,o,e)})(r,i,h):((n,t,e)=>function(...o){return n(t,e,o)})(r,i,l)):function(n){const e=n.length;let o=-1;for(;++o<e;){const e=n[o];if(t(e))return!0}return!1}(e)?n(e).then(f(c,o,u,-2)):c(o,e,-2);var r,i,l,h}}());
@@ -1,12 +1,26 @@
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 thunkConditional = (
11
25
  conditionalExpression, thunkOnTruthy, thunkOnFalsy,
12
26
  ) => conditionalExpression ? thunkOnTruthy() : thunkOnFalsy()
@@ -134,13 +148,49 @@ const nonfunctionsConditional = function (array, index) {
134
148
  return array[index]
135
149
  }
136
150
 
137
- const switchCase = values => {
151
+ // argument resolver for curryArgs3
152
+ const curryArgs3ResolveArgs0 = (
153
+ baseFunc, arg1, arg2,
154
+ ) => function args0Resolver(...args) {
155
+ return baseFunc(args, arg1, arg2)
156
+ }
157
+
158
+ // argument resolver for curryArgs3
159
+ const curryArgs3ResolveArgs1 = (
160
+ baseFunc, arg0, arg2,
161
+ ) => function arg1Resolver(...args) {
162
+ return baseFunc(arg0, args, arg2)
163
+ }
164
+
165
+ // argument resolver for curryArgs3
166
+ const curryArgs3ResolveArgs2 = (
167
+ baseFunc, arg0, arg1,
168
+ ) => function arg2Resolver(...args) {
169
+ return baseFunc(arg0, arg1, args)
170
+ }
171
+
172
+ const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
173
+ if (arg0 == __) {
174
+ return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
175
+ }
176
+ if (arg1 == __) {
177
+ return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
178
+ }
179
+ return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
180
+ }
181
+
182
+ const switchCase = (...args) => {
183
+ const values = args.pop()
138
184
  if (areAllValuesNonfunctions(values)) {
139
185
  return nonfunctionsConditional(values, -2)
140
186
  }
141
- return function switchingCases(...args) {
142
- return arrayConditional(values, args, -2)
187
+ if (args.length == 0) {
188
+ return curryArgs3(arrayConditional, values, __, -2)
189
+ }
190
+ if (areAnyValuesPromises(args)) {
191
+ return promiseAll(args).then(curry3(arrayConditional, values, __, -2))
143
192
  }
193
+ return arrayConditional(values, args, -2)
144
194
  }
145
195
 
146
196
  export default switchCase
package/dist/tap.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
 
@@ -9,11 +9,6 @@ const isPromise = value => value != null && typeof value.then == 'function'
9
9
 
10
10
  const always = value => function getter() { return value }
11
11
 
12
- const tapSync = func => function tapping(...args) {
13
- func(...args)
14
- return args[0]
15
- }
16
-
17
12
  const thunkifyArgs = (func, args) => function thunk() {
18
13
  return func(...args)
19
14
  }
@@ -61,8 +56,6 @@ const tap = func => function tapping(...args) {
61
56
  return isPromise(call) ? call.then(always(result)) : result
62
57
  }
63
58
 
64
- tap.sync = tapSync
65
-
66
59
  tap.if = (predicate, func) => function tappingIf(...args) {
67
60
  const predication = predicate(...args)
68
61
  if (isPromise(predication)) {
@@ -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=r=>null!=r&&"function"==typeof r.then,always=r=>function(){return r},tapSync=r=>function(...n){return r(...n),n[0]},thunkifyArgs=(r,n)=>function(){return r(...n)},thunkConditional=(r,n,t)=>r?n():t(),__=Symbol.for("placeholder"),curry3ResolveArg0=(r,n,t)=>function(e){return r(e,n,t)},curry3ResolveArg1=(r,n,t)=>function(e){return r(n,e,t)},curry3ResolveArg2=(r,n,t)=>function(e){return r(n,t,e)},curry3=function(r,n,t,e){return n==__?curry3ResolveArg0(r,t,e):t==__?curry3ResolveArg1(r,n,e):curry3ResolveArg2(r,n,t)},tap=r=>function(...n){const t=n[0],e=r(...n);return isPromise(e)?e.then(always(t)):t};tap.sync=tapSync,tap.if=(r,n)=>function(...t){const e=r(...t);if(isPromise(e))return e.then((u=thunkConditional,o=__,c=thunkifyArgs(tap(n),t),i=always(t[0]),o==__?curry3ResolveArg0(u,c,i):c==__?curry3ResolveArg1(u,o,i):curry3ResolveArg2(u,o,c)));var u,o,c,i;if(e){const r=n(...t);if(isPromise(r))return r.then(always(t[0]))}return t[0]};export default tap;
7
+ const isPromise=r=>null!=r&&"function"==typeof r.then,always=r=>function(){return r},thunkifyArgs=(r,n)=>function(){return r(...n)},thunkConditional=(r,n,e)=>r?n():e(),__=Symbol.for("placeholder"),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)},tap=r=>function(...n){const e=n[0],t=r(...n);return isPromise(t)?t.then(always(e)):e};tap.if=(r,n)=>function(...e){const t=r(...e);if(isPromise(t))return t.then((o=thunkConditional,u=__,i=thunkifyArgs(tap(n),e),s=always(e[0]),u==__?curry3ResolveArg0(o,i,s):i==__?curry3ResolveArg1(o,u,s):curry3ResolveArg2(o,u,i)));var o,u,i,s;if(t){const r=n(...e);if(isPromise(r))return r.then(always(e[0]))}return e[0]};export default tap;
package/dist/tap.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
 
@@ -15,11 +15,6 @@ const isPromise = value => value != null && typeof value.then == 'function'
15
15
 
16
16
  const always = value => function getter() { return value }
17
17
 
18
- const tapSync = func => function tapping(...args) {
19
- func(...args)
20
- return args[0]
21
- }
22
-
23
18
  const thunkifyArgs = (func, args) => function thunk() {
24
19
  return func(...args)
25
20
  }
@@ -67,8 +62,6 @@ const tap = func => function tapping(...args) {
67
62
  return isPromise(call) ? call.then(always(result)) : result
68
63
  }
69
64
 
70
- tap.sync = tapSync
71
-
72
65
  tap.if = (predicate, func) => function tappingIf(...args) {
73
66
  const predication = predicate(...args)
74
67
  if (isPromise(predication)) {
package/dist/tap.min.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
- * rubico v1.9.7
2
+ * rubico v2.0.1
3
3
  * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
4
+ * (c) 2019-2023 Richard Tong
5
5
  * rubico may be freely distributed under the MIT license.
6
6
  */
7
7
 
8
- !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.tap=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=n=>function(){return n},e=(n,t,e)=>n?t():e(),o=Symbol.for("placeholder"),r=e=>function(...o){const r=o[0],u=e(...o);return n(u)?u.then(t(r)):r};return r.sync=n=>function(...t){return n(...t),t[0]},r.if=(u,f)=>function(...i){const c=u(...i);if(n(c))return c.then((l=e,s=o,h=((n,t)=>function(){return n(...t)})(r(f),i),p=t(i[0]),s==o?((n,t,e)=>function(o){return n(o,t,e)})(l,h,p):h==o?((n,t,e)=>function(o){return n(t,o,e)})(l,s,p):((n,t,e)=>function(o){return n(t,e,o)})(l,s,h)));var l,s,h,p;if(c){const e=f(...i);if(n(e))return e.then(t(i[0]))}return i[0]},r}());
8
+ !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.tap=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=n=>function(){return n},e=(n,t,e)=>n?t():e(),o=Symbol.for("placeholder"),r=e=>function(...o){const r=o[0],u=e(...o);return n(u)?u.then(t(r)):r};return r.if=(u,f)=>function(...i){const c=u(...i);if(n(c))return c.then((l=e,s=o,h=((n,t)=>function(){return n(...t)})(r(f),i),p=t(i[0]),s==o?((n,t,e)=>function(o){return n(o,t,e)})(l,h,p):h==o?((n,t,e)=>function(o){return n(t,o,e)})(l,s,p):((n,t,e)=>function(o){return n(t,e,o)})(l,s,h)));var l,s,h,p;if(c){const e=f(...i);if(n(e))return e.then(t(i[0]))}return i[0]},r}());
package/dist/tap.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
 
@@ -9,11 +9,6 @@ const isPromise = value => value != null && typeof value.then == 'function'
9
9
 
10
10
  const always = value => function getter() { return value }
11
11
 
12
- const tapSync = func => function tapping(...args) {
13
- func(...args)
14
- return args[0]
15
- }
16
-
17
12
  const thunkifyArgs = (func, args) => function thunk() {
18
13
  return func(...args)
19
14
  }
@@ -61,8 +56,6 @@ const tap = func => function tapping(...args) {
61
56
  return isPromise(call) ? call.then(always(result)) : result
62
57
  }
63
58
 
64
- tap.sync = tapSync
65
-
66
59
  tap.if = (predicate, func) => function tappingIf(...args) {
67
60
  const predication = predicate(...args)
68
61
  if (isPromise(predication)) {
@@ -1,11 +1,54 @@
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
+
24
+ const __ = Symbol.for('placeholder')
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
+
46
+ const funcApply = (func, args) => func(...args)
47
+
8
48
  const thunkify = (func, ...args) => function thunk() {
49
+ if (areAnyValuesPromises(args)) {
50
+ return promiseAll(args).then(curry2(funcApply, func, __))
51
+ }
9
52
  return func(...args)
10
53
  }
11
54
 
@@ -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 thunkify=(t,...n)=>function(){return t(...n)};export default thunkify;
7
+ const 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},promiseAll=Promise.all.bind(Promise),__=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)},funcApply=(r,e)=>r(...e),thunkify=(r,...e)=>function(){return areAnyValuesPromises(e)?promiseAll(e).then((n=funcApply,u=__,(o=r)==__?curry2ResolveArg0(n,u):curry2ResolveArg1(n,o))):r(...e);var n,o,u};export default thunkify;