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
@@ -0,0 +1,194 @@
1
+ /**
2
+ * rubico v2.0.1
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.1
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.1
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.1
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)}}());
package/dist/every.mjs ADDED
@@ -0,0 +1,194 @@
1
+ /**
2
+ * rubico v2.0.1
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