rubico 1.9.7 → 2.0.0

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