rubico 1.9.7 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.js +3 -2
  3. package/.github/workflows/nodejs.yml +1 -1
  4. package/AggregateReducer.js +19 -0
  5. package/AggregateReducer.test.js +82 -0
  6. package/CHANGELOG.md +22 -1
  7. package/Transducer.js +75 -26
  8. package/Transducer.test.js +117 -0
  9. package/_internal/ComparisonOperator.js +68 -0
  10. package/_internal/File.js +41 -0
  11. package/_internal/FlatMappingAsyncIterator.js +4 -4
  12. package/_internal/FlatMappingIterator.js +1 -1
  13. package/_internal/TimeInLoopSuite.js +138 -0
  14. package/_internal/areAnyValuesPromises.js +23 -0
  15. package/_internal/{arrayAll.js → arrayEvery.js} +4 -4
  16. package/_internal/arrayExtend.js +3 -2
  17. package/_internal/arrayFilter.js +3 -4
  18. package/_internal/{arrayAny.js → arraySome.js} +8 -8
  19. package/_internal/{asyncIteratorAll.js → asyncIteratorEvery.js} +4 -4
  20. package/_internal/{asyncIteratorAny.js → asyncIteratorSome.js} +4 -4
  21. package/_internal/curry4.test.js +25 -0
  22. package/_internal/curry5.test.js +29 -0
  23. package/_internal/curryArgs2.js +43 -0
  24. package/_internal/curryArgs3.test.js +21 -0
  25. package/_internal/curryArgs4.js +65 -0
  26. package/_internal/curryArgs4.test.js +25 -0
  27. package/_internal/equals.js +13 -0
  28. package/_internal/findAllFilePaths.js +22 -0
  29. package/_internal/funcApply.js +2 -0
  30. package/_internal/funcCall.js +14 -0
  31. package/_internal/functionArrayAll.js +26 -0
  32. package/_internal/functionArrayAllSeries.js +55 -0
  33. package/_internal/functionObjectAll.js +32 -0
  34. package/_internal/genericReduce.js +4 -22
  35. package/_internal/genericTransform.js +15 -15
  36. package/_internal/improvedGenericTransform.js +93 -0
  37. package/_internal/{iteratorAll.js → iteratorEvery.js} +4 -4
  38. package/_internal/{iteratorAny.js → iteratorSome.js} +6 -6
  39. package/_internal/leftResolverRightResolverCompare.js +19 -0
  40. package/_internal/leftResolverRightValueCompare.js +16 -0
  41. package/_internal/leftValueRightResolverCompare.js +16 -0
  42. package/_internal/objectReduce.js +0 -1
  43. package/_internal/pathResolve.js +6 -0
  44. package/_internal/{reducerAll.js → reducerEvery.js} +4 -4
  45. package/_internal/reducerFlatMap.js +4 -4
  46. package/_internal/reducerFlatten.js +1 -1
  47. package/_internal/{reducerAny.js → reducerSome.js} +4 -4
  48. package/_internal/timeInLoop.js +37 -0
  49. package/_internal/timeInLoop.test.js +18 -0
  50. package/_internal/timeInLoopAsync.js +35 -0
  51. package/_internal/timeInLoopAsync.test.js +22 -0
  52. package/all.js +106 -40
  53. package/and.js +54 -36
  54. package/archive/{FlatMappingIteratorCool.js → FlatMappingIterator-2020-09-28.js} +1 -1
  55. package/archive/_Promise-2023-05-29.js +93 -0
  56. package/archive/arrayMap2-2023-05-29.js +73 -0
  57. package/archive/benchmarks-v1.9.7/all.js +34 -0
  58. package/archive/benchmarks-v1.9.7/and.js +24 -0
  59. package/archive/benchmarks-v1.9.7/assign.js +174 -0
  60. package/archive/benchmarks-v1.9.7/curry.js +55 -0
  61. package/archive/benchmarks-v1.9.7/eq.js +25 -0
  62. package/archive/benchmarks-v1.9.7/filter.js +1322 -0
  63. package/archive/benchmarks-v1.9.7/flatMap.js +48 -0
  64. package/archive/benchmarks-v1.9.7/get.js +44 -0
  65. package/archive/benchmarks-v1.9.7/gt.js +25 -0
  66. package/archive/benchmarks-v1.9.7/gte.js +25 -0
  67. package/archive/benchmarks-v1.9.7/lt.js +25 -0
  68. package/archive/benchmarks-v1.9.7/lte.js +25 -0
  69. package/archive/benchmarks-v1.9.7/map.js +892 -0
  70. package/archive/benchmarks-v1.9.7/omit.js +28 -0
  71. package/archive/benchmarks-v1.9.7/or.js +51 -0
  72. package/archive/benchmarks-v1.9.7/pick.js +24 -0
  73. package/archive/benchmarks-v1.9.7/pipe.js +152 -0
  74. package/archive/benchmarks-v1.9.7/reduce.js +739 -0
  75. package/archive/benchmarks-v1.9.7/switchCase.js +256 -0
  76. package/archive/benchmarks-v1.9.7/tap.js +90 -0
  77. package/archive/benchmarks-v1.9.7/transform.js +218 -0
  78. package/archive/benchmarks-v1.9.7/tryCatch.js +108 -0
  79. package/assign.js +18 -8
  80. package/bench +65 -0
  81. package/benchmark-output/v1.9.7 +268 -0
  82. package/benchmarks/all.async.js +43 -0
  83. package/benchmarks/all.js +42 -33
  84. package/benchmarks/always.js +15 -0
  85. package/benchmarks/and.async.js +25 -0
  86. package/benchmarks/and.js +20 -19
  87. package/benchmarks/assign.async.js +27 -0
  88. package/benchmarks/assign.js +20 -167
  89. package/benchmarks/curry.js +34 -54
  90. package/benchmarks/eq.async.js +23 -0
  91. package/benchmarks/eq.js +17 -19
  92. package/benchmarks/every.async.js +19 -0
  93. package/benchmarks/every.js +19 -0
  94. package/benchmarks/filter.async.js +32 -0
  95. package/benchmarks/filter.js +27 -1311
  96. package/benchmarks/flatMap.async.js +26 -0
  97. package/benchmarks/flatMap.js +26 -36
  98. package/benchmarks/get.async.js +19 -0
  99. package/benchmarks/get.js +27 -32
  100. package/benchmarks/gt.async.js +23 -0
  101. package/benchmarks/gt.js +17 -19
  102. package/benchmarks/gte.async.js +23 -0
  103. package/benchmarks/gte.js +17 -19
  104. package/benchmarks/lt.async.js +23 -0
  105. package/benchmarks/lt.js +17 -19
  106. package/benchmarks/lte.async.js +23 -0
  107. package/benchmarks/lte.js +17 -19
  108. package/benchmarks/map.async.js +43 -0
  109. package/benchmarks/map.js +24 -876
  110. package/benchmarks/misc/Promise.js +26 -0
  111. package/benchmarks/misc/isPromise.js +30 -0
  112. package/benchmarks/misc/promiseAll.js +36 -0
  113. package/benchmarks/not.js +23 -0
  114. package/benchmarks/omit.js +30 -20
  115. package/benchmarks/or.async.js +25 -0
  116. package/benchmarks/or.js +23 -49
  117. package/benchmarks/pick.js +30 -16
  118. package/benchmarks/pipe.async.js +47 -0
  119. package/benchmarks/pipe.js +46 -151
  120. package/benchmarks/reduce.async.js +32 -0
  121. package/benchmarks/reduce.js +27 -728
  122. package/benchmarks/set.async.js +19 -0
  123. package/benchmarks/set.js +41 -0
  124. package/benchmarks/some.async.js +19 -0
  125. package/benchmarks/some.js +19 -0
  126. package/benchmarks/switchCase.async.js +27 -0
  127. package/benchmarks/switchCase.js +55 -256
  128. package/benchmarks/tap.js +10 -85
  129. package/benchmarks/thunkify.js +15 -0
  130. package/benchmarks/transform.async.js +27 -0
  131. package/benchmarks/transform.js +28 -206
  132. package/benchmarks/tryCatch.async.js +25 -0
  133. package/benchmarks/tryCatch.js +24 -100
  134. package/{distributor.js → build} +50 -50
  135. package/compose.js +46 -0
  136. package/dist/__.es.js +2 -2
  137. package/dist/__.es.min.js +2 -2
  138. package/dist/__.js +2 -2
  139. package/dist/__.min.js +2 -2
  140. package/dist/__.min.mjs +2 -2
  141. package/dist/__.mjs +2 -2
  142. package/dist/all.es.js +173 -92
  143. package/dist/all.es.min.js +3 -3
  144. package/dist/all.js +173 -92
  145. package/dist/all.min.js +3 -3
  146. package/dist/all.min.mjs +3 -3
  147. package/dist/all.mjs +173 -92
  148. package/dist/always.es.js +2 -2
  149. package/dist/always.es.min.js +2 -2
  150. package/dist/always.js +2 -2
  151. package/dist/always.min.js +2 -2
  152. package/dist/always.min.mjs +2 -2
  153. package/dist/always.mjs +2 -2
  154. package/dist/and.es.js +101 -32
  155. package/dist/and.es.min.js +3 -3
  156. package/dist/and.js +101 -32
  157. package/dist/and.min.js +3 -3
  158. package/dist/and.min.mjs +3 -3
  159. package/dist/and.mjs +101 -32
  160. package/dist/assign.es.js +37 -10
  161. package/dist/assign.es.min.js +3 -3
  162. package/dist/assign.js +37 -10
  163. package/dist/assign.min.js +3 -3
  164. package/dist/assign.min.mjs +3 -3
  165. package/dist/assign.mjs +37 -10
  166. package/dist/compose.es.js +71 -0
  167. package/dist/compose.es.min.js +7 -0
  168. package/dist/compose.js +78 -0
  169. package/dist/compose.min.js +8 -0
  170. package/dist/compose.min.mjs +7 -0
  171. package/dist/compose.mjs +71 -0
  172. package/dist/curry.es.js +2 -2
  173. package/dist/curry.es.min.js +2 -2
  174. package/dist/curry.js +2 -2
  175. package/dist/curry.min.js +2 -2
  176. package/dist/curry.min.mjs +2 -2
  177. package/dist/curry.mjs +2 -2
  178. package/dist/eq.es.js +172 -49
  179. package/dist/eq.es.min.js +3 -3
  180. package/dist/eq.js +172 -49
  181. package/dist/eq.min.js +3 -3
  182. package/dist/eq.min.mjs +3 -3
  183. package/dist/eq.mjs +172 -49
  184. package/dist/every.es.js +194 -0
  185. package/dist/every.es.min.js +7 -0
  186. package/dist/every.js +201 -0
  187. package/dist/every.min.js +8 -0
  188. package/dist/every.min.mjs +7 -0
  189. package/dist/every.mjs +194 -0
  190. package/dist/filter.es.js +14 -108
  191. package/dist/filter.es.min.js +3 -3
  192. package/dist/filter.js +14 -108
  193. package/dist/filter.min.js +3 -3
  194. package/dist/filter.min.mjs +3 -3
  195. package/dist/filter.mjs +14 -108
  196. package/dist/flatMap.es.js +27 -214
  197. package/dist/flatMap.es.min.js +3 -3
  198. package/dist/flatMap.js +27 -214
  199. package/dist/flatMap.min.js +3 -3
  200. package/dist/flatMap.min.mjs +3 -3
  201. package/dist/flatMap.mjs +27 -214
  202. package/dist/{x/forEach.es.js → forEach.es.js} +52 -70
  203. package/dist/forEach.es.min.js +7 -0
  204. package/dist/{x/forEach.js → forEach.js} +52 -70
  205. package/dist/forEach.min.js +8 -0
  206. package/dist/forEach.min.mjs +7 -0
  207. package/dist/{x/forEach.mjs → forEach.mjs} +52 -70
  208. package/dist/get.es.js +60 -5
  209. package/dist/get.es.min.js +3 -3
  210. package/dist/get.js +60 -5
  211. package/dist/get.min.js +3 -3
  212. package/dist/get.min.mjs +3 -3
  213. package/dist/get.mjs +60 -5
  214. package/dist/gt.es.js +171 -48
  215. package/dist/gt.es.min.js +3 -3
  216. package/dist/gt.js +171 -48
  217. package/dist/gt.min.js +3 -3
  218. package/dist/gt.min.mjs +3 -3
  219. package/dist/gt.mjs +171 -48
  220. package/dist/gte.es.js +171 -48
  221. package/dist/gte.es.min.js +3 -3
  222. package/dist/gte.js +171 -48
  223. package/dist/gte.min.js +3 -3
  224. package/dist/gte.min.mjs +3 -3
  225. package/dist/gte.mjs +171 -48
  226. package/dist/lt.es.js +171 -48
  227. package/dist/lt.es.min.js +3 -3
  228. package/dist/lt.js +171 -48
  229. package/dist/lt.min.js +3 -3
  230. package/dist/lt.min.mjs +3 -3
  231. package/dist/lt.mjs +171 -48
  232. package/dist/lte.es.js +171 -48
  233. package/dist/lte.es.min.js +3 -3
  234. package/dist/lte.js +171 -48
  235. package/dist/lte.min.js +3 -3
  236. package/dist/lte.min.mjs +3 -3
  237. package/dist/lte.mjs +171 -48
  238. package/dist/map.es.js +12 -101
  239. package/dist/map.es.min.js +3 -3
  240. package/dist/map.js +12 -101
  241. package/dist/map.min.js +3 -3
  242. package/dist/map.min.mjs +3 -3
  243. package/dist/map.mjs +12 -101
  244. package/dist/not.es.js +75 -14
  245. package/dist/not.es.min.js +3 -3
  246. package/dist/not.js +75 -14
  247. package/dist/not.min.js +3 -3
  248. package/dist/not.min.mjs +3 -3
  249. package/dist/not.mjs +75 -14
  250. package/dist/omit.es.js +7 -2
  251. package/dist/omit.es.min.js +3 -3
  252. package/dist/omit.js +7 -2
  253. package/dist/omit.min.js +3 -3
  254. package/dist/omit.min.mjs +3 -3
  255. package/dist/omit.mjs +7 -2
  256. package/dist/or.es.js +99 -31
  257. package/dist/or.es.min.js +3 -3
  258. package/dist/or.js +99 -31
  259. package/dist/or.min.js +3 -3
  260. package/dist/or.min.mjs +3 -3
  261. package/dist/or.mjs +99 -31
  262. package/dist/pick.es.js +8 -3
  263. package/dist/pick.es.min.js +3 -3
  264. package/dist/pick.js +8 -3
  265. package/dist/pick.min.js +3 -3
  266. package/dist/pick.min.mjs +3 -3
  267. package/dist/pick.mjs +8 -3
  268. package/dist/pipe.es.js +42 -46
  269. package/dist/pipe.es.min.js +3 -3
  270. package/dist/pipe.js +42 -46
  271. package/dist/pipe.min.js +3 -3
  272. package/dist/pipe.min.mjs +3 -3
  273. package/dist/pipe.mjs +42 -46
  274. package/dist/reduce.es.js +52 -94
  275. package/dist/reduce.es.min.js +3 -3
  276. package/dist/reduce.js +52 -94
  277. package/dist/reduce.min.js +3 -3
  278. package/dist/reduce.min.mjs +3 -3
  279. package/dist/reduce.mjs +52 -94
  280. package/dist/rubico.es.js +730 -869
  281. package/dist/rubico.es.min.js +3 -3
  282. package/dist/rubico.js +730 -869
  283. package/dist/rubico.min.js +3 -3
  284. package/dist/rubico.min.mjs +3 -3
  285. package/dist/rubico.mjs +730 -869
  286. package/dist/set.es.js +18 -3
  287. package/dist/set.es.min.js +3 -3
  288. package/dist/set.js +18 -3
  289. package/dist/set.min.js +3 -3
  290. package/dist/set.min.mjs +3 -3
  291. package/dist/set.mjs +18 -3
  292. package/dist/{any.js → some.es.js} +64 -54
  293. package/dist/some.es.min.js +7 -0
  294. package/dist/{any.mjs → some.js} +72 -48
  295. package/dist/some.min.js +8 -0
  296. package/dist/some.min.mjs +7 -0
  297. package/dist/{any.es.js → some.mjs} +65 -48
  298. package/dist/switchCase.es.js +55 -5
  299. package/dist/switchCase.es.min.js +3 -3
  300. package/dist/switchCase.js +55 -5
  301. package/dist/switchCase.min.js +3 -3
  302. package/dist/switchCase.min.mjs +3 -3
  303. package/dist/switchCase.mjs +55 -5
  304. package/dist/tap.es.js +2 -9
  305. package/dist/tap.es.min.js +3 -3
  306. package/dist/tap.js +2 -9
  307. package/dist/tap.min.js +3 -3
  308. package/dist/tap.min.mjs +3 -3
  309. package/dist/tap.mjs +2 -9
  310. package/dist/thunkify.es.js +45 -2
  311. package/dist/thunkify.es.min.js +3 -3
  312. package/dist/thunkify.js +45 -2
  313. package/dist/thunkify.min.js +3 -3
  314. package/dist/thunkify.min.mjs +3 -3
  315. package/dist/thunkify.mjs +45 -2
  316. package/dist/transform.es.js +35 -71
  317. package/dist/transform.es.min.js +3 -3
  318. package/dist/transform.js +35 -71
  319. package/dist/transform.min.js +3 -3
  320. package/dist/transform.min.mjs +3 -3
  321. package/dist/transform.mjs +35 -71
  322. package/dist/tryCatch.es.js +33 -17
  323. package/dist/tryCatch.es.min.js +3 -3
  324. package/dist/tryCatch.js +33 -17
  325. package/dist/tryCatch.min.js +3 -3
  326. package/dist/tryCatch.min.mjs +3 -3
  327. package/dist/tryCatch.mjs +33 -17
  328. package/dist/x/append.es.js +2 -2
  329. package/dist/x/append.es.min.js +2 -2
  330. package/dist/x/append.js +2 -2
  331. package/dist/x/append.min.js +2 -2
  332. package/dist/x/append.min.mjs +2 -2
  333. package/dist/x/append.mjs +2 -2
  334. package/dist/x/callProp.es.js +2 -2
  335. package/dist/x/callProp.es.min.js +2 -2
  336. package/dist/x/callProp.js +2 -2
  337. package/dist/x/callProp.min.js +2 -2
  338. package/dist/x/callProp.min.mjs +2 -2
  339. package/dist/x/callProp.mjs +2 -2
  340. package/dist/x/defaultsDeep.es.js +2 -2
  341. package/dist/x/defaultsDeep.es.min.js +2 -2
  342. package/dist/x/defaultsDeep.js +2 -2
  343. package/dist/x/defaultsDeep.min.js +2 -2
  344. package/dist/x/defaultsDeep.min.mjs +2 -2
  345. package/dist/x/defaultsDeep.mjs +2 -2
  346. package/dist/x/differenceWith.es.js +7 -7
  347. package/dist/x/differenceWith.es.min.js +3 -3
  348. package/dist/x/differenceWith.js +7 -7
  349. package/dist/x/differenceWith.min.js +2 -2
  350. package/dist/x/differenceWith.min.mjs +3 -3
  351. package/dist/x/differenceWith.mjs +7 -7
  352. package/dist/x/filterOut.es.js +60 -117
  353. package/dist/x/filterOut.es.min.js +3 -3
  354. package/dist/x/filterOut.js +60 -117
  355. package/dist/x/filterOut.min.js +3 -3
  356. package/dist/x/filterOut.min.mjs +3 -3
  357. package/dist/x/filterOut.mjs +60 -117
  358. package/dist/x/find.es.js +2 -2
  359. package/dist/x/find.es.min.js +2 -2
  360. package/dist/x/find.js +2 -2
  361. package/dist/x/find.min.js +2 -2
  362. package/dist/x/find.min.mjs +2 -2
  363. package/dist/x/find.mjs +2 -2
  364. package/dist/x/findIndex.es.js +2 -2
  365. package/dist/x/findIndex.es.min.js +2 -2
  366. package/dist/x/findIndex.js +2 -2
  367. package/dist/x/findIndex.min.js +2 -2
  368. package/dist/x/findIndex.min.mjs +2 -2
  369. package/dist/x/findIndex.mjs +2 -2
  370. package/dist/x/first.es.js +2 -2
  371. package/dist/x/first.es.min.js +2 -2
  372. package/dist/x/first.js +2 -2
  373. package/dist/x/first.min.js +2 -2
  374. package/dist/x/first.min.mjs +2 -2
  375. package/dist/x/first.mjs +2 -2
  376. package/dist/x/flatten.es.js +20 -207
  377. package/dist/x/flatten.es.min.js +3 -3
  378. package/dist/x/flatten.js +20 -207
  379. package/dist/x/flatten.min.js +3 -3
  380. package/dist/x/flatten.min.mjs +3 -3
  381. package/dist/x/flatten.mjs +20 -207
  382. package/dist/x/groupBy.es.js +52 -94
  383. package/dist/x/groupBy.es.min.js +3 -3
  384. package/dist/x/groupBy.js +52 -94
  385. package/dist/x/groupBy.min.js +3 -3
  386. package/dist/x/groupBy.min.mjs +3 -3
  387. package/dist/x/groupBy.mjs +52 -94
  388. package/dist/x/has.es.js +2 -2
  389. package/dist/x/has.es.min.js +2 -2
  390. package/dist/x/has.js +2 -2
  391. package/dist/x/has.min.js +2 -2
  392. package/dist/x/has.min.mjs +2 -2
  393. package/dist/x/has.mjs +2 -2
  394. package/dist/x/identity.es.js +2 -2
  395. package/dist/x/identity.es.min.js +2 -2
  396. package/dist/x/identity.js +2 -2
  397. package/dist/x/identity.min.js +2 -2
  398. package/dist/x/identity.min.mjs +2 -2
  399. package/dist/x/identity.mjs +2 -2
  400. package/dist/x/includes.es.js +2 -2
  401. package/dist/x/includes.es.min.js +2 -2
  402. package/dist/x/includes.js +2 -2
  403. package/dist/x/includes.min.js +2 -2
  404. package/dist/x/includes.min.mjs +2 -2
  405. package/dist/x/includes.mjs +2 -2
  406. package/dist/x/isDeepEqual.es.js +2 -2
  407. package/dist/x/isDeepEqual.es.min.js +2 -2
  408. package/dist/x/isDeepEqual.js +2 -2
  409. package/dist/x/isDeepEqual.min.js +2 -2
  410. package/dist/x/isDeepEqual.min.mjs +2 -2
  411. package/dist/x/isDeepEqual.mjs +2 -2
  412. package/dist/x/isEmpty.es.js +2 -2
  413. package/dist/x/isEmpty.es.min.js +2 -2
  414. package/dist/x/isEmpty.js +2 -2
  415. package/dist/x/isEmpty.min.js +2 -2
  416. package/dist/x/isEmpty.min.mjs +2 -2
  417. package/dist/x/isEmpty.mjs +2 -2
  418. package/dist/x/isEqual.es.js +2 -2
  419. package/dist/x/isEqual.es.min.js +2 -2
  420. package/dist/x/isEqual.js +2 -2
  421. package/dist/x/isEqual.min.js +2 -2
  422. package/dist/x/isEqual.min.mjs +2 -2
  423. package/dist/x/isEqual.mjs +2 -2
  424. package/dist/x/isFunction.es.js +2 -2
  425. package/dist/x/isFunction.es.min.js +2 -2
  426. package/dist/x/isFunction.js +2 -2
  427. package/dist/x/isFunction.min.js +2 -2
  428. package/dist/x/isFunction.min.mjs +2 -2
  429. package/dist/x/isFunction.mjs +2 -2
  430. package/dist/x/isIn.es.js +2 -2
  431. package/dist/x/isIn.es.min.js +2 -2
  432. package/dist/x/isIn.js +2 -2
  433. package/dist/x/isIn.min.js +2 -2
  434. package/dist/x/isIn.min.mjs +2 -2
  435. package/dist/x/isIn.mjs +2 -2
  436. package/dist/x/isObject.es.js +2 -2
  437. package/dist/x/isObject.es.min.js +2 -2
  438. package/dist/x/isObject.js +2 -2
  439. package/dist/x/isObject.min.js +2 -2
  440. package/dist/x/isObject.min.mjs +2 -2
  441. package/dist/x/isObject.mjs +2 -2
  442. package/dist/x/isString.es.js +2 -2
  443. package/dist/x/isString.es.min.js +2 -2
  444. package/dist/x/isString.js +2 -2
  445. package/dist/x/isString.min.js +2 -2
  446. package/dist/x/isString.min.mjs +2 -2
  447. package/dist/x/isString.mjs +2 -2
  448. package/dist/x/keys.es.js +2 -2
  449. package/dist/x/keys.es.min.js +2 -2
  450. package/dist/x/keys.js +2 -2
  451. package/dist/x/keys.min.js +2 -2
  452. package/dist/x/keys.min.mjs +2 -2
  453. package/dist/x/keys.mjs +2 -2
  454. package/dist/x/last.es.js +2 -2
  455. package/dist/x/last.es.min.js +2 -2
  456. package/dist/x/last.js +2 -2
  457. package/dist/x/last.min.js +2 -2
  458. package/dist/x/last.min.mjs +2 -2
  459. package/dist/x/last.mjs +2 -2
  460. package/dist/x/maxBy.es.js +59 -6
  461. package/dist/x/maxBy.es.min.js +3 -3
  462. package/dist/x/maxBy.js +59 -6
  463. package/dist/x/maxBy.min.js +3 -3
  464. package/dist/x/maxBy.min.mjs +3 -3
  465. package/dist/x/maxBy.mjs +59 -6
  466. package/dist/x/noop.es.js +2 -2
  467. package/dist/x/noop.es.min.js +2 -2
  468. package/dist/x/noop.js +2 -2
  469. package/dist/x/noop.min.js +2 -2
  470. package/dist/x/noop.min.mjs +2 -2
  471. package/dist/x/noop.mjs +2 -2
  472. package/dist/x/pluck.es.js +32 -103
  473. package/dist/x/pluck.es.min.js +3 -3
  474. package/dist/x/pluck.js +32 -103
  475. package/dist/x/pluck.min.js +3 -3
  476. package/dist/x/pluck.min.mjs +3 -3
  477. package/dist/x/pluck.mjs +32 -103
  478. package/dist/x/prepend.es.js +2 -2
  479. package/dist/x/prepend.es.min.js +2 -2
  480. package/dist/x/prepend.js +2 -2
  481. package/dist/x/prepend.min.js +2 -2
  482. package/dist/x/prepend.min.mjs +2 -2
  483. package/dist/x/prepend.mjs +2 -2
  484. package/dist/x/size.es.js +2 -2
  485. package/dist/x/size.es.min.js +2 -2
  486. package/dist/x/size.js +2 -2
  487. package/dist/x/size.min.js +2 -2
  488. package/dist/x/size.min.mjs +2 -2
  489. package/dist/x/size.mjs +2 -2
  490. package/dist/x/trace.es.js +2 -9
  491. package/dist/x/trace.es.min.js +3 -3
  492. package/dist/x/trace.js +2 -9
  493. package/dist/x/trace.min.js +3 -3
  494. package/dist/x/trace.min.mjs +3 -3
  495. package/dist/x/trace.mjs +2 -9
  496. package/dist/x/unionWith.es.js +2 -2
  497. package/dist/x/unionWith.es.min.js +2 -2
  498. package/dist/x/unionWith.js +2 -2
  499. package/dist/x/unionWith.min.js +2 -2
  500. package/dist/x/unionWith.min.mjs +2 -2
  501. package/dist/x/unionWith.mjs +2 -2
  502. package/dist/x/uniq.es.js +2 -2
  503. package/dist/x/uniq.es.min.js +2 -2
  504. package/dist/x/uniq.js +2 -2
  505. package/dist/x/uniq.min.js +2 -2
  506. package/dist/x/uniq.min.mjs +2 -2
  507. package/dist/x/uniq.mjs +2 -2
  508. package/dist/x/unless.es.js +2 -2
  509. package/dist/x/unless.es.min.js +2 -2
  510. package/dist/x/unless.js +2 -2
  511. package/dist/x/unless.min.js +2 -2
  512. package/dist/x/unless.min.mjs +2 -2
  513. package/dist/x/unless.mjs +2 -2
  514. package/dist/x/values.es.js +2 -2
  515. package/dist/x/values.es.min.js +2 -2
  516. package/dist/x/values.js +2 -2
  517. package/dist/x/values.min.js +2 -2
  518. package/dist/x/values.min.mjs +2 -2
  519. package/dist/x/values.mjs +2 -2
  520. package/dist/x/when.es.js +2 -2
  521. package/dist/x/when.es.min.js +2 -2
  522. package/dist/x/when.js +2 -2
  523. package/dist/x/when.min.js +2 -2
  524. package/dist/x/when.min.mjs +2 -2
  525. package/dist/x/when.mjs +2 -2
  526. package/dist-test.js +9 -2042
  527. package/eq.js +21 -63
  528. package/es.js +730 -869
  529. package/every.js +94 -0
  530. package/filter.js +23 -91
  531. package/flatMap.js +75 -70
  532. package/forEach.js +82 -0
  533. package/get.js +23 -6
  534. package/global.js +6 -4
  535. package/gt.js +15 -58
  536. package/gte.js +14 -57
  537. package/index.js +730 -869
  538. package/lt.js +17 -60
  539. package/lte.js +14 -57
  540. package/map.js +9 -94
  541. package/memory-usage/reduce.js +2 -2
  542. package/not.js +27 -45
  543. package/omit.js +4 -0
  544. package/or.js +50 -33
  545. package/package.json +7 -7
  546. package/pick.js +5 -1
  547. package/pipe.js +13 -50
  548. package/reduce.js +42 -51
  549. package/rubico.js +10 -8
  550. package/set.js +43 -10
  551. package/some.js +105 -0
  552. package/switchCase.js +13 -3
  553. package/tap.js +0 -24
  554. package/test.js +847 -1096
  555. package/thunkify.js +9 -0
  556. package/transform.js +31 -16
  557. package/tryCatch.js +19 -15
  558. package/x/differenceWith.js +3 -3
  559. package/x/filterOut.test.js +6 -6
  560. package/x/flatten.js +1 -1
  561. package/x/flatten.test.js +0 -8
  562. package/x/index.js +0 -2
  563. package/x/pluck.js +18 -27
  564. package/x/pluck.test.js +3 -7
  565. package/x/timeInLoop.js +16 -25
  566. package/x/timeInLoop.test.js +8 -4
  567. package/any.js +0 -82
  568. package/dist/any.es.min.js +0 -7
  569. package/dist/any.min.js +0 -8
  570. package/dist/any.min.mjs +0 -7
  571. package/dist/fork.es.js +0 -159
  572. package/dist/fork.es.min.js +0 -7
  573. package/dist/fork.js +0 -166
  574. package/dist/fork.min.js +0 -8
  575. package/dist/fork.min.mjs +0 -7
  576. package/dist/fork.mjs +0 -159
  577. package/dist/x/forEach.es.min.js +0 -7
  578. package/dist/x/forEach.min.js +0 -8
  579. package/dist/x/forEach.min.mjs +0 -7
  580. package/fork.js +0 -101
  581. package/x/forEach.js +0 -93
  582. package/x/forEach.test.js +0 -218
  583. /package/{benchmarks → archive/benchmarks-v1.9.7}/any.js +0 -0
  584. /package/{x/forEach.benchmark.js → archive/benchmarks-v1.9.7/forEach.js} +0 -0
  585. /package/{benchmarks → archive/benchmarks-v1.9.7}/fork.js +0 -0
  586. /package/{benchmarks → archive/benchmarks-v1.9.7}/integration.js +0 -0
  587. /package/{benchmarks → archive/benchmarks-v1.9.7}/misc.js +0 -0
package/thunkify.js CHANGED
@@ -1,3 +1,9 @@
1
+ const areAnyValuesPromises = require('./_internal/areAnyValuesPromises')
2
+ const promiseAll = require('./_internal/promiseAll')
3
+ const curry2 = require('./_internal/curry2')
4
+ const __ = require('./_internal/placeholder')
5
+ const funcApply = require('./_internal/funcApply')
6
+
1
7
  /**
2
8
  * @name thunkify
3
9
  *
@@ -18,6 +24,9 @@
18
24
  * ```
19
25
  */
20
26
  const thunkify = (func, ...args) => function thunk() {
27
+ if (areAnyValuesPromises(args)) {
28
+ return promiseAll(args).then(curry2(funcApply, func, __))
29
+ }
21
30
  return func(...args)
22
31
  }
23
32
 
package/transform.js CHANGED
@@ -3,6 +3,19 @@ const __ = require('./_internal/placeholder')
3
3
  const curry3 = require('./_internal/curry3')
4
4
  const genericTransform = require('./_internal/genericTransform')
5
5
 
6
+ // _transform(collection any, transducer function, initialValue function|any) -> Promise
7
+ const _transform = function (collection, transducer, initialValue) {
8
+ if (typeof initialValue == 'function') {
9
+ const actualInitialValue = initialValue(collection)
10
+ return isPromise(actualInitialValue)
11
+ ? actualInitialValue.then(curry3(genericTransform, collection, transducer, __))
12
+ : genericTransform(collection, transducer, actualInitialValue)
13
+ }
14
+ return isPromise(initialValue)
15
+ ? initialValue.then(curry3(genericTransform, collection, transducer, __))
16
+ : genericTransform(collection, transducer, initialValue)
17
+ }
18
+
6
19
  /**
7
20
  * @name transform
8
21
  *
@@ -10,19 +23,25 @@ const genericTransform = require('./_internal/genericTransform')
10
23
  * ```coffeescript [specscript]
11
24
  * type Reducer = (result any, item any)=>(result any)
12
25
  * type Transducer = Reducer=>Reducer
13
- * type Semigroup = Array|String|Set|TypedArray|{ concat: function }|{ write: function }|Object
14
- * type Foldable = Iterable|AsyncIterable|Object
26
+ * type Transformable = Array|String|Set|TypedArray|{ concat: function }|{ write: function }|Object
27
+ * type Foldable = Iterable|AsyncIterable|Object<value any>
15
28
  *
16
- * initialValue Semigroup|((foldable Foldable)=>Promise|Semigroup)
29
+ * initialValue Transformable|((foldable Foldable)=>Promise|Transformable)
30
+ *
31
+ * transform(
32
+ * foldable Foldable,
33
+ * transducer Transducer,
34
+ * initialValue? Transformable|(Foldable=>Promise|Transformable),
35
+ * ) -> result Promise|Transformable
17
36
  *
18
37
  * transform(
19
38
  * transducer Transducer,
20
- * initialValue?,
21
- * )(foldable Foldable) -> result Promise|Semigroup
39
+ * initialValue? Transformable|(Foldable=>Promise|Transformable),
40
+ * )(foldable Foldable) -> result Promise|Transformable
22
41
  * ```
23
42
  *
24
43
  * @description
25
- * Transforms a semigroup collection into any other semigroup collection. The type of transformation depends on the collection provided by the initial value. If the initial is a function it is used as a resolver for the provided collection. `transform` accepts semigroup collections, or collections that support a concatenation operation:
44
+ * Transforms a transformable collection into any other transformable collection. The type of transformation depends on the collection provided by the initial value. If the initial is a function it is used as a resolver for the provided collection. `transform` accepts transformable collections, or collections that support a concatenation operation:
26
45
  *
27
46
  * * `Array`; concatenation defined by `result.concat(values)`
28
47
  * * `string`; concatenation defined by `result + values`
@@ -115,18 +134,14 @@ const genericTransform = require('./_internal/genericTransform')
115
134
  *
116
135
  * TODO explore Semigroup = Iterator|AsyncIterator
117
136
  */
118
- const transform = function (transducer, init) {
119
- if (typeof init == 'function') {
120
- return function transforming(...args) {
121
- const result = init(...args)
122
- return isPromise(result)
123
- ? result.then(curry3(genericTransform, args, transducer, __))
124
- : genericTransform(args, transducer, result)
125
- }
137
+ const transform = function (...args) {
138
+ if (typeof args[0] == 'function') {
139
+ return curry3(_transform, __, args[0], args[1])
126
140
  }
127
- return function transforming(...args) {
128
- return genericTransform(args, transducer, init)
141
+ if (isPromise(args[0])) {
142
+ return args[0].then(curry3(_transform, __, args[1], args[2]))
129
143
  }
144
+ return _transform(args[0], args[1], args[2])
130
145
  }
131
146
 
132
147
  module.exports = transform
package/tryCatch.js CHANGED
@@ -1,7 +1,21 @@
1
1
  const isPromise = require('./_internal/isPromise')
2
+ const promiseAll = require('./_internal/promiseAll')
2
3
  const __ = require('./_internal/placeholder')
3
4
  const curry3 = require('./_internal/curry3')
4
5
  const catcherApply = require('./_internal/catcherApply')
6
+ const areAnyValuesPromises = require('./_internal/areAnyValuesPromises')
7
+
8
+ // _tryCatch(tryer function, catcher function, args Array) -> Promise
9
+ const _tryCatch = function (tryer, catcher, args) {
10
+ try {
11
+ const result = tryer(...args)
12
+ return isPromise(result)
13
+ ? result.catch(curry3(catcherApply, catcher, __, args))
14
+ : result
15
+ } catch (error) {
16
+ return catcher(error, ...args)
17
+ }
18
+ }
5
19
 
6
20
  /**
7
21
  * @name tryCatch
@@ -53,27 +67,17 @@ const tryCatch = function (...args) {
53
67
  if (args.length > 2) {
54
68
  const catcher = args.pop(),
55
69
  tryer = args.pop()
56
- try {
57
- const result = tryer(...args)
58
- return isPromise(result)
59
- ? result.catch(curry3(catcherApply, catcher, __, args))
60
- : result
61
- } catch (error) {
62
- return catcher(error, ...args)
70
+ if (areAnyValuesPromises(args)) {
71
+ return promiseAll(args)
72
+ .then(curry3(_tryCatch, tryer, catcher, __))
63
73
  }
74
+ return _tryCatch(tryer, catcher, args)
64
75
  }
65
76
 
66
77
  const tryer = args[0],
67
78
  catcher = args[1]
68
79
  return function tryCatcher(...args) {
69
- try {
70
- const result = tryer(...args)
71
- return isPromise(result)
72
- ? result.catch(curry3(catcherApply, catcher, __, args))
73
- : result
74
- } catch (error) {
75
- return catcher(error, ...args)
76
- }
80
+ return _tryCatch(tryer, catcher, args)
77
81
  }
78
82
  }
79
83
 
@@ -6,7 +6,7 @@ const thunkify5 = require('../_internal/thunkify5')
6
6
  const thunkConditional = require('../_internal/thunkConditional')
7
7
  const isPromise = require('../_internal/isPromise')
8
8
  const isArray = require('../_internal/isArray')
9
- const arrayAny = require('../_internal/arrayAny')
9
+ const arraySome = require('../_internal/arraySome')
10
10
  const arrayPush = require('../_internal/arrayPush')
11
11
  const funcConcatSync = require('../_internal/funcConcatSync')
12
12
  const noop = require('../_internal/noop')
@@ -33,7 +33,7 @@ const differenceWithArrayAsync = async function (
33
33
  const allValuesLength = allValues.length
34
34
  while (++index < allValuesLength) {
35
35
  const item = allValues[index]
36
- let doesItemExistByComparator = arrayAny(array, curry2(comparator, item, __))
36
+ let doesItemExistByComparator = arraySome(array, curry2(comparator, item, __))
37
37
  if (isPromise(doesItemExistByComparator)) {
38
38
  doesItemExistByComparator = await doesItemExistByComparator
39
39
  }
@@ -62,7 +62,7 @@ const differenceWithArray = function (comparator, allValues, array) {
62
62
  let index = -1
63
63
  while (++index < allValuesLength) {
64
64
  const item = allValues[index],
65
- doesItemExistByComparator = arrayAny(array, curry2(comparator, item, __))
65
+ doesItemExistByComparator = arraySome(array, curry2(comparator, item, __))
66
66
  if (isPromise(doesItemExistByComparator)) {
67
67
  return doesItemExistByComparator.then(funcConcatSync(
68
68
  curry3(thunkConditional, __, noop, thunkify2(arrayPush, result, item)),
@@ -40,13 +40,13 @@ describe('filterOut', () => {
40
40
 
41
41
  it('creates a rejecting generator function when passed a generator', () => {
42
42
  const rejectOdds = filterOut(number => number % 2 == 1)
43
- const oddsRejectingGeneratorFunc = rejectOdds(function* (array) {
43
+ const oddsRejectingGenerator = rejectOdds((function* (array) {
44
44
  for (const value of array) {
45
45
  yield value
46
46
  }
47
- })
47
+ })([1, 2, 3, 4, 5]))
48
48
  const evensArray = []
49
- for (const number of oddsRejectingGeneratorFunc([1, 2, 3, 4, 5])) {
49
+ for (const number of oddsRejectingGenerator) {
50
50
  evensArray.push(number)
51
51
  }
52
52
  assert.deepEqual(evensArray, [2, 4])
@@ -54,13 +54,13 @@ describe('filterOut', () => {
54
54
 
55
55
  it('creates a rejecting generator function when passed an async generator', async () => {
56
56
  const asyncRejectOdds = filterOut(async number => number % 2 == 1)
57
- const oddsRejectingGeneratorFunc = asyncRejectOdds(async function* (array) {
57
+ const oddsRejectingGenerator = asyncRejectOdds((async function* (array) {
58
58
  for (const value of array) {
59
59
  yield value
60
60
  }
61
- })
61
+ })([1, 2, 3, 4, 5]))
62
62
  const evensArray = []
63
- for await (const number of oddsRejectingGeneratorFunc([1, 2, 3, 4, 5])) {
63
+ for await (const number of oddsRejectingGenerator) {
64
64
  evensArray.push(number)
65
65
  }
66
66
  assert.deepEqual(evensArray, [2, 4])
package/x/flatten.js CHANGED
@@ -74,7 +74,7 @@ const flatten = function (value) {
74
74
  if (value.constructor == Object) {
75
75
  return objectFlatten(value)
76
76
  }
77
- return flatMap(identity)(value)
77
+ return flatMap(value, identity)
78
78
  }
79
79
 
80
80
  module.exports = flatten
package/x/flatten.test.js CHANGED
@@ -34,12 +34,4 @@ describe('flatten', () => {
34
34
  it('flatten(undefined)', async () => {
35
35
  assert.strictEqual(flatten(undefined), undefined)
36
36
  })
37
- it('flatteningReducer', async () => {
38
- const add = (a, b) => a + b
39
- const flatteningAdd = flatten(add)
40
- assert.strictEqual(
41
- [[1], [2], [3], [4], [5]].reduce(flatteningAdd, 0),
42
- 15,
43
- )
44
- })
45
37
  })
package/x/index.js CHANGED
@@ -7,7 +7,6 @@ const find = require('./find')
7
7
  const findIndex = require('./findIndex')
8
8
  const first = require('./first')
9
9
  const flatten = require('./flatten')
10
- const forEach = require('./forEach')
11
10
  const groupBy = require('./groupBy')
12
11
  const has = require('./has')
13
12
  const identity = require('./identity')
@@ -43,7 +42,6 @@ const rubicoX = {
43
42
  findIndex,
44
43
  first,
45
44
  flatten,
46
- forEach,
47
45
  groupBy,
48
46
  has,
49
47
  identity,
package/x/pluck.js CHANGED
@@ -7,28 +7,19 @@ const get = require('../get')
7
7
  *
8
8
  * @synopsis
9
9
  * ```coffeescript [specscript]
10
- * Functor<T> = Array<T>|Object<T>|Iterator<T>|AsyncIterator<T>|{ map: T=>any }
11
- * Reducer<T> = (any, T)=>Promise|any
10
+ * pluck(path string)(array Array) -> result Array
12
11
  *
13
- * var T any,
14
- * mapper T=>Promise|any,
15
- * functor Functor<T>
16
- * args ...any,
17
- * generatorFunction ...args=>Generator<T>,
18
- * asyncGeneratorFunction ...args=>AsyncGenerator<T>,
19
- * reducer Reducer<T>
20
- *
21
- * pluck(functor) -> Promise|Functor
22
- *
23
- * pluck(generatorFunction) -> ...args=>Generator
24
- *
25
- * pluck(asyncGeneratorFunction) -> ...args=>AsyncGenerator
26
- *
27
- * pluck(reducer) -> Reducer
12
+ * pluck(array Array, path string) -> result Array
28
13
  * ```
29
14
  *
30
15
  * @description
31
- * Apply a getter denoted by path across all items of a collection, creating a new collection of plucked values. Also works in transducer position.
16
+ * Creates an array of picked properties denoted by a path from another array.
17
+ *
18
+ * `pluck` supports three types of path patterns for nested property access.
19
+ *
20
+ * * dot delimited - `'a.b.c'`
21
+ * * bracket notation - `'a[0].value'`
22
+ * * an array of keys or indices - `['a', 0, 'value']`
32
23
  *
33
24
  * ```javascript [playground]
34
25
  * import pluck from 'https://unpkg.com/rubico/dist/x/pluck.es.js'
@@ -39,18 +30,18 @@ const get = require('../get')
39
30
  * { name: 'Jim', age: 22 },
40
31
  * ]
41
32
  *
42
- * const usernames = pluck('name')(users)
33
+ * const usernames = pluck(users, 'name')
43
34
  *
44
35
  * console.log(usernames) // ['George', 'Jane', 'Jim']
45
- *
46
- * const add = (a, b) => a + b
47
- *
48
- * console.log(
49
- * 'total age:',
50
- * users.reduce(pluck('age')(add), 0),
51
- * ) // total age: 96
52
36
  * ```
53
37
  */
54
- const pluck = funcConcat(get, map)
38
+ const pluck = function (...args) {
39
+ const path = args.pop()
40
+ const getter = get(path)
41
+ if (args.length == 0) {
42
+ return map(getter)
43
+ }
44
+ return map(args[0], getter)
45
+ }
55
46
 
56
47
  module.exports = pluck
package/x/pluck.test.js CHANGED
@@ -5,17 +5,13 @@ const createAbc = v => ({ a: { b: { c: v } } })
5
5
 
6
6
  describe('pluck', () => {
7
7
  it('creates a new collection by getting a path from every item of an old collection', async () => {
8
+ const nested = [1, 2, 3].map(createAbc)
8
9
  assert.deepEqual(
9
- pluck('a.b.c')([1, 2, 3].map(createAbc)),
10
+ pluck('a.b.c')(nested),
10
11
  [1, 2, 3],
11
12
  )
12
- })
13
- it('works in transducer position', async () => {
14
13
  assert.deepEqual(
15
- [1, 2, 3].map(createAbc).reduce(
16
- pluck('a.b.c')((a, b) => a.concat([b])),
17
- [],
18
- ),
14
+ pluck(nested, 'a.b.c'),
19
15
  [1, 2, 3],
20
16
  )
21
17
  })
package/x/timeInLoop.js CHANGED
@@ -1,23 +1,22 @@
1
+ const _timeInLoop = require('../_internal/timeInLoop')
2
+ const timeInLoopAsync = require('../_internal/timeInLoopAsync')
3
+
1
4
  /**
2
5
  * @name timeInLoop
3
6
  *
4
7
  * @synopsis
5
8
  * timeInLoop(desc string, loopCount number, fn function) -> undefined
6
9
  *
7
- * @catchphrase
8
- * How long does a function take to run this many loops
10
+ * @description
11
+ * Logs the amount of time required for a function to run a certain number of times
12
+ *
13
+ * ```coffeescript [specscript]
14
+ * timeInLoop('hello', 1e6, () => 'hello') // hello: 1e+6: 3.474ms
15
+ * ```
9
16
  *
10
- * @example
11
- * timeInLoop('yo', 1e6, () => 'yo') // yo: 1e+6: 3.474ms
17
+ * Reference: https://gist.github.com/funfunction/91b5876a5f562e1e352aed0fcabc3858
12
18
  */
13
- const timeInLoop = (desc, loopCount, fn) => {
14
- const d = `${desc}: ${loopCount.toExponential()}`
15
- console.time(d)
16
- for (let i = 0; i < loopCount; i++) {
17
- fn()
18
- }
19
- console.timeEnd(d)
20
- }
19
+ const timeInLoop = _timeInLoop
21
20
 
22
21
  /**
23
22
  * @name timeInLoop.async
@@ -25,21 +24,13 @@ const timeInLoop = (desc, loopCount, fn) => {
25
24
  * @synopsis
26
25
  * timeInLoop.async(desc string, loopCount number, fn function) -> undefined
27
26
  *
28
- * @catchphrase
27
+ * @description
29
28
  * Like timeInLoop, but every call is awaited
30
29
  *
31
- * @example
32
- * timeInLoop.async('asyncYo', 1e6, async () => 'yo') // asyncYo: 1e+6: 116.006ms
30
+ * ```coffeescript [specscript]
31
+ * timeInLoop.async('async hello', 1e6, async () => 'hello') // async hello: 1e+6: 116.006ms
32
+ * ```
33
33
  */
34
- timeInLoop.async = async (desc, loopCount, fn) => {
35
- const d = `${desc}: ${loopCount.toExponential()}`
36
- console.time(d)
37
- for (let i = 0; i < loopCount; i++) {
38
- await fn()
39
- }
40
- console.timeEnd(d)
41
- }
34
+ timeInLoop.async = timeInLoopAsync
42
35
 
43
36
  module.exports = timeInLoop
44
-
45
- // thanks: https://gist.github.com/funfunction/91b5876a5f562e1e352aed0fcabc3858
@@ -3,14 +3,18 @@ const timeInLoop = require('./timeInLoop')
3
3
 
4
4
  describe('timeInLoop', () => {
5
5
  it('timeInLoop(desc string, loopCount number, fn function) -> y undefined', async () => {
6
- const y = timeInLoop('hey', 1e5, () => 'hey')
7
- assert.strictEqual(y, undefined)
6
+ const result = timeInLoop('hey', 1e5, () => 'hey')
7
+ assert.equal(result.description, 'hey')
8
+ assert.equal(result.loopCount, 1e5)
9
+ assert.equal(typeof result.duration, 'number')
8
10
  })
9
11
 
10
12
  it('timeInLoop.async(desc string, loopCount number, fn function) -> y undefined', async () => {
11
13
  const p = timeInLoop.async('asyncHey', 1e5, async () => 'asyncHey')
12
14
  assert(p instanceof Promise)
13
- const y = await p
14
- assert.strictEqual(y, undefined)
15
+ const result = await p
16
+ assert.equal(result.description, 'asyncHey')
17
+ assert.equal(result.loopCount, 1e5)
18
+ assert.equal(typeof result.duration, 'number')
15
19
  })
16
20
  })
package/any.js DELETED
@@ -1,82 +0,0 @@
1
- const isArray = require('./_internal/isArray')
2
- const objectValues = require('./_internal/objectValues')
3
- const arrayAny = require('./_internal/arrayAny')
4
- const iteratorAny = require('./_internal/iteratorAny')
5
- const asyncIteratorAny = require('./_internal/asyncIteratorAny')
6
- const reducerAny = require('./_internal/reducerAny')
7
- const symbolIterator = require('./_internal/symbolIterator')
8
- const symbolAsyncIterator = require('./_internal/symbolAsyncIterator')
9
-
10
- /**
11
- * @name any
12
- *
13
- * @synopsis
14
- * ```coffeescript [specscript]
15
- * type Foldable = Iterable|AsyncIterable|Object
16
- *
17
- * any(predicate function)(collection Foldable) -> result Promise|boolean
18
- * ```
19
- *
20
- * @description
21
- * Test a predicate concurrently across all items of a collection, returning true if any executions return truthy.
22
- *
23
- * ```javascript [playground]
24
- * const isOdd = number => number % 2 == 1
25
- *
26
- * console.log(
27
- * any(isOdd)([1, 2, 3, 4, 5]),
28
- * ) // true
29
- * ```
30
- *
31
- * The collection can be any iterable, async iterable, or object values iterable collection. Below is an example of `any` accepting an async generator as the collection.
32
- *
33
- * ```javascript [playground]
34
- * const toTodosUrl = id => 'https://jsonplaceholder.typicode.com/todos/' + id
35
- *
36
- * const fetchedToJson = fetched => fetched.json()
37
- *
38
- * const fetchTodo = pipe([
39
- * toTodosUrl,
40
- * fetch,
41
- * fetchedToJson,
42
- * ])
43
- *
44
- * const todoIDsGenerator = async function* () {
45
- * yield 1; yield 2; yield 3; yield 4; yield 5
46
- * }
47
- *
48
- * any(pipe([
49
- * fetchTodo,
50
- * todo => todo.title.startsWith('fugiat'),
51
- * ]))(todoIDsGenerator()).then(console.log) // true
52
- * ```
53
- *
54
- * @execution concurrent
55
- *
56
- * @muxing
57
- *
58
- * @related or
59
- */
60
- const any = predicate => function anyTruthy(value) {
61
- if (isArray(value)) {
62
- return arrayAny(value, predicate)
63
- }
64
- if (value == null) {
65
- return predicate(value)
66
- }
67
- if (typeof value[symbolIterator] == 'function') {
68
- return iteratorAny(value[symbolIterator](), predicate)
69
- }
70
- if (typeof value[symbolAsyncIterator] == 'function') {
71
- return asyncIteratorAny(value[symbolAsyncIterator](), predicate, new Set())
72
- }
73
- if (typeof value.reduce == 'function') {
74
- return value.reduce(reducerAny(predicate), false)
75
- }
76
- if (value.constructor == Object) {
77
- return arrayAny(objectValues(value), predicate)
78
- }
79
- return predicate(value)
80
- }
81
-
82
- module.exports = any
@@ -1,7 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
- const isArray=Array.isArray,objectValues=Object.values,SelfReferencingPromise=function(r){const e=r.then((r=>[r,e]));return e},isPromise=r=>null!=r&&"function"==typeof r.then,promiseRace=Promise.race.bind(Promise),asyncArrayAny=async function(r,e,n,t){const o=r.length;for(;++n<o;){const o=e(r[n]);if(isPromise(o))t.add(SelfReferencingPromise(o));else if(o)return!0}for(;t.size>0;){const[r,e]=await promiseRace(t);if(t.delete(e),r)return!0}return!1},arrayAny=function(r,e){const n=r.length;let t=-1;for(;++t<n;){const n=e(r[t]);if(isPromise(n))return asyncArrayAny(r,e,t,new Set([SelfReferencingPromise(n)]));if(n)return!0}return!1},asyncIteratorAny=async function(r,e,n,t=20){let o=r.next();for(isPromise(o)&&(o=await o);!o.done;){if(n.size>=t){const[r,e]=await promiseRace(n);if(n.delete(e),r)return!0}const i=e(o.value);if(isPromise(i))n.add(SelfReferencingPromise(i));else if(i)return!0;o=r.next(),isPromise(o)&&(o=await o)}for(;n.size>0;){const[r,e]=await promiseRace(n);if(n.delete(e),r)return!0}return!1},iteratorAny=function(r,e){for(const n of r){const t=e(n);if(isPromise(t))return asyncIteratorAny(r,e,new Set([SelfReferencingPromise(t)]));if(t)return!0}return!1},reducerAnySync=r=>function(e,n){return!!e||r(n)},__=Symbol.for("placeholder"),curry2ResolveArg0=(r,e)=>function(n){return r(n,e)},curry2ResolveArg1=(r,e)=>function(n){return r(e,n)},curry2=function(r,e,n){return e==__?curry2ResolveArg0(r,n):curry2ResolveArg1(r,e)},reducerAny=r=>function(e,n){return!0===e?e:isPromise(e)?e.then((t=reducerAnySync(r),i=n,(o=__)==__?curry2ResolveArg0(t,i):curry2ResolveArg1(t,o))):!!e||r(n);var t,o,i},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,any=r=>function(e){return isArray(e)?arrayAny(e,r):null==e?r(e):"function"==typeof e[symbolIterator]?iteratorAny(e[symbolIterator](),r):"function"==typeof e[symbolAsyncIterator]?asyncIteratorAny(e[symbolAsyncIterator](),r,new Set):"function"==typeof e.reduce?e.reduce(reducerAny(r),!1):e.constructor==Object?arrayAny(objectValues(e),r):r(e)};export default any;
package/dist/any.min.js DELETED
@@ -1,8 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
-
8
- !function(t,n){"object"==typeof module?module.exports=n:"function"==typeof define?define((()=>n)):t.any=n}("object"==typeof globalThis?globalThis:this,function(){"use strict";const t=Array.isArray,n=Object.values,e=function(t){const n=t.then((t=>[t,n]));return n},r=t=>null!=t&&"function"==typeof t.then,o=Promise.race.bind(Promise),i=async function(t,n,i,u){const f=t.length;for(;++i<f;){const o=n(t[i]);if(r(o))u.add(e(o));else if(o)return!0}for(;u.size>0;){const[t,n]=await o(u);if(u.delete(n),t)return!0}return!1},u=function(t,n){const o=t.length;let u=-1;for(;++u<o;){const o=n(t[u]);if(r(o))return i(t,n,u,new Set([e(o)]));if(o)return!0}return!1},f=async function(t,n,i,u=20){let f=t.next();for(r(f)&&(f=await f);!f.done;){if(i.size>=u){const[t,n]=await o(i);if(i.delete(n),t)return!0}const c=n(f.value);if(r(c))i.add(e(c));else if(c)return!0;f=t.next(),r(f)&&(f=await f)}for(;i.size>0;){const[t,n]=await o(i);if(i.delete(n),t)return!0}return!1},c=Symbol.for("placeholder"),s=t=>function(n,e){return!0===n?n:r(n)?n.then((o=(t=>function(n,e){return!!n||t(e)})(t),u=e,(i=c)==c?((t,n)=>function(e){return t(e,n)})(o,u):((t,n)=>function(e){return t(n,e)})(o,i))):!!n||t(e);var o,i,u},a=Symbol.iterator,l=Symbol.asyncIterator;return o=>function(i){return t(i)?u(i,o):null==i?o(i):"function"==typeof i[a]?function(t,n){for(const o of t){const i=n(o);if(r(i))return f(t,n,new Set([e(i)]));if(i)return!0}return!1}(i[a](),o):"function"==typeof i[l]?f(i[l](),o,new Set):"function"==typeof i.reduce?i.reduce(s(o),!1):i.constructor==Object?u(n(i),o):o(i)}}());
package/dist/any.min.mjs DELETED
@@ -1,7 +0,0 @@
1
- /**
2
- * rubico v1.9.7
3
- * https://github.com/a-synchronous/rubico
4
- * (c) 2019-2021 Richard Tong
5
- * rubico may be freely distributed under the MIT license.
6
- */
7
- const isArray=Array.isArray,objectValues=Object.values,SelfReferencingPromise=function(r){const e=r.then((r=>[r,e]));return e},isPromise=r=>null!=r&&"function"==typeof r.then,promiseRace=Promise.race.bind(Promise),asyncArrayAny=async function(r,e,n,t){const o=r.length;for(;++n<o;){const o=e(r[n]);if(isPromise(o))t.add(SelfReferencingPromise(o));else if(o)return!0}for(;t.size>0;){const[r,e]=await promiseRace(t);if(t.delete(e),r)return!0}return!1},arrayAny=function(r,e){const n=r.length;let t=-1;for(;++t<n;){const n=e(r[t]);if(isPromise(n))return asyncArrayAny(r,e,t,new Set([SelfReferencingPromise(n)]));if(n)return!0}return!1},asyncIteratorAny=async function(r,e,n,t=20){let o=r.next();for(isPromise(o)&&(o=await o);!o.done;){if(n.size>=t){const[r,e]=await promiseRace(n);if(n.delete(e),r)return!0}const i=e(o.value);if(isPromise(i))n.add(SelfReferencingPromise(i));else if(i)return!0;o=r.next(),isPromise(o)&&(o=await o)}for(;n.size>0;){const[r,e]=await promiseRace(n);if(n.delete(e),r)return!0}return!1},iteratorAny=function(r,e){for(const n of r){const t=e(n);if(isPromise(t))return asyncIteratorAny(r,e,new Set([SelfReferencingPromise(t)]));if(t)return!0}return!1},reducerAnySync=r=>function(e,n){return!!e||r(n)},__=Symbol.for("placeholder"),curry2ResolveArg0=(r,e)=>function(n){return r(n,e)},curry2ResolveArg1=(r,e)=>function(n){return r(e,n)},curry2=function(r,e,n){return e==__?curry2ResolveArg0(r,n):curry2ResolveArg1(r,e)},reducerAny=r=>function(e,n){return!0===e?e:isPromise(e)?e.then((t=reducerAnySync(r),i=n,(o=__)==__?curry2ResolveArg0(t,i):curry2ResolveArg1(t,o))):!!e||r(n);var t,o,i},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,any=r=>function(e){return isArray(e)?arrayAny(e,r):null==e?r(e):"function"==typeof e[symbolIterator]?iteratorAny(e[symbolIterator](),r):"function"==typeof e[symbolAsyncIterator]?asyncIteratorAny(e[symbolAsyncIterator](),r,new Set):"function"==typeof e.reduce?e.reduce(reducerAny(r),!1):e.constructor==Object?arrayAny(objectValues(e),r):r(e)};export default any;