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/bench ADDED
@@ -0,0 +1,65 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs')
4
+ const os = require('os')
5
+ const { fork, spawn } = require('child_process')
6
+ const File = require('./_internal/File')
7
+ const findAllFilePaths = require('./_internal/findAllFilePaths')
8
+ const package = require('./package.json')
9
+
10
+ // sortBenchmarkFilePaths(paths Array<string>) -> sorted Array<string>
11
+ const sortBenchmarkFilePaths = function (paths) {
12
+ const miscPaths = paths.filter(p => p.includes('/misc/'))
13
+ const corePaths = paths.filter(p => !p.includes('/misc/'))
14
+ corePaths.sort()
15
+ miscPaths.sort()
16
+ return corePaths.concat(miscPaths)
17
+ }
18
+
19
+ const outputFile = new File(`${__dirname}/benchmark-output/v${package.version}`)
20
+
21
+ const write = function (str) {
22
+ process.stdout.write(str)
23
+ outputFile.write(str)
24
+ }
25
+
26
+ // bench(options?: { bestOf?: number }) -> Promise<>
27
+ const bench = async function (options = {}) {
28
+ const systemInfo = `
29
+ rubico v${package.version} / NodeJS ${process.version} / OS ${os.release()}
30
+ `.trim()
31
+ write(systemInfo + '\n\n')
32
+
33
+ const { bestOf = 5 } = options
34
+ const paths = await
35
+ findAllFilePaths(`${__dirname}/benchmarks`)
36
+ .then(sortBenchmarkFilePaths)
37
+
38
+ const outputMap = new Map()
39
+
40
+ for (const path of paths) {
41
+ const fileName = path.replace(`${__dirname}/`, '')
42
+ write(fileName + '\n')
43
+
44
+ const lines = []
45
+ const proc = spawn('node', [path])
46
+ proc.stdout.on('data', data => {
47
+ lines.push(data.toString())
48
+ })
49
+ await new Promise(resolve => {
50
+ proc.on('close', () => {
51
+ for (const line of lines) {
52
+ write(line)
53
+ }
54
+ write('\n')
55
+ resolve()
56
+ })
57
+ })
58
+ }
59
+ }
60
+
61
+ if (process.argv[1] == __filename) {
62
+ bench()
63
+ }
64
+
65
+ module.exports = bench
@@ -0,0 +1,268 @@
1
+ rubico v1.9.7 / NodeJS v18.12.1 / OS 6.3.6-arch1-1
2
+
3
+ benchmarks/all.async.js
4
+ rubico async array all: 1e+5: 113.398ms
5
+ rubico async array all tacit: 1e+5: 246.972ms
6
+ rubico async object all: 1e+5: 222.268ms
7
+ rubico async object all tacit: 1e+5: 236.216ms
8
+
9
+ benchmarks/all.js
10
+ rubico array all: 1e+6: 173.662ms
11
+ rubico array all tacit: 1e+6: 1.292s
12
+ rubico object all: 1e+6: 287.025ms
13
+ rubico object all tacit: 1e+6: 479.790ms
14
+
15
+ benchmarks/always.js
16
+ rubico always: 1e+7: 9.761ms
17
+
18
+ benchmarks/and.async.js
19
+ rubico and: 1e+5: 86.501ms
20
+ rubico and tacit: 1e+5: 85.752ms
21
+
22
+ benchmarks/and.js
23
+ rubico and: 1e+6: 134.150ms
24
+ rubico and tacit: 1e+6: 167.594ms
25
+
26
+ benchmarks/assign.async.js
27
+ rubico assign: 1e+5: 267.046ms
28
+ rubico assign tacit: 1e+5: 270.214ms
29
+
30
+ benchmarks/assign.js
31
+ rubico assign: 1e+6: 392.597ms
32
+ rubico assign tacit: 1e+6: 431.178ms
33
+
34
+ benchmarks/curry.js
35
+ rubico curry: 1e+6: 147.679ms
36
+ rubico curry tacit: 1e+6: 248.036ms
37
+ lodash/fp curry: 1e+6: 4.630s
38
+ ramda curry: 1e+6: 509.689ms
39
+
40
+ benchmarks/eq.async.js
41
+ rubico eq Promises: 1e+5: 103.777ms
42
+ rubico eq left value right resolver: 1e+5: 111.884ms
43
+ rubico eq left resolver right resolver: 1e+5: 110.390ms
44
+
45
+ benchmarks/eq.js
46
+ rubico eq primitive: 1e+6: 31.732ms
47
+ rubico eq left value right resolver: 1e+6: 87.040ms
48
+ rubico eq left resolver right resolver: 1e+6: 151.196ms
49
+
50
+ benchmarks/every.async.js
51
+ rubico every: 1e+5: 116.195ms
52
+ rubico every tacit: 1e+5: 119.193ms
53
+
54
+ benchmarks/every.js
55
+ rubico every: 1e+6: 31.209ms
56
+ rubico every tacit: 1e+6: 83.103ms
57
+
58
+ benchmarks/filter.async.js
59
+ rubico filter: 1e+5: 216.516ms
60
+ rubico filter tacit: 1e+5: 227.178ms
61
+ async filter: 1e+5: 195.048ms
62
+ Bluebird filter: 1e+5: 1.110s
63
+
64
+ benchmarks/filter.js
65
+ rubico filter: 1e+6: 66.900ms
66
+ rubico filter tacit: 1e+6: 166.110ms
67
+ lodash filter: 1e+6: 121.042ms
68
+ lodash/fp filter: 1e+6: 3.749s
69
+ ramda filter: 1e+6: 314.716ms
70
+
71
+ benchmarks/flatMap.async.js
72
+ rubico flatMap: 1e+5: 145.027ms
73
+ rubico flatMap tacit: 1e+5: 150.894ms
74
+ async flatMap: 1e+5: 355.875ms
75
+
76
+ benchmarks/flatMap.js
77
+ rubico flatMap: 1e+6: 194.979ms
78
+ rubico flatMap tacit: 1e+6: 268.297ms
79
+ lodash flatMap: 1e+6: 205.762ms
80
+ lodash/fp flatMap: 1e+6: 4.011s
81
+ ramda flatMap: 1e+6: 1.403s
82
+
83
+ benchmarks/get.async.js
84
+ rubico get: 1e+5: 31.593ms
85
+ rubico get tacit: 1e+5: 37.317ms
86
+
87
+ benchmarks/get.js
88
+ rubico get: 1e+6: 23.717ms
89
+ rubico get tacit: 1e+6: 46.783ms
90
+ lodash get: 1e+6: 48.303ms
91
+ lodash/fp get: 1e+6: 3.326s
92
+ ramda get: 1e+6: 228.383ms
93
+
94
+ benchmarks/gt.async.js
95
+ rubico gt Promises: 1e+5: 105.508ms
96
+ rubico gt left value right resolver: 1e+5: 111.884ms
97
+ rubico gt left resolver right resolver: 1e+5: 111.922ms
98
+
99
+ benchmarks/gt.js
100
+ rubico gt primitive: 1e+6: 30.712ms
101
+ rubico gt left value right resolver: 1e+6: 90.201ms
102
+ rubico gt left resolver right resolver: 1e+6: 148.505ms
103
+
104
+ benchmarks/gte.async.js
105
+ rubico gte Promises: 1e+5: 105.664ms
106
+ rubico gte left value right resolver: 1e+5: 112.728ms
107
+ rubico gte left resolver right resolver: 1e+5: 111.509ms
108
+
109
+ benchmarks/gte.js
110
+ rubico gte primitive: 1e+6: 32.341ms
111
+ rubico gte left value right resolver: 1e+6: 90.721ms
112
+ rubico gte left resolver right resolver: 1e+6: 136.099ms
113
+
114
+ benchmarks/lt.async.js
115
+ rubico lt Promises: 1e+5: 105.682ms
116
+ rubico lt left value right resolver: 1e+5: 110.897ms
117
+ rubico lt left resolver right resolver: 1e+5: 111.133ms
118
+
119
+ benchmarks/lt.js
120
+ rubico lt primitive: 1e+6: 30.448ms
121
+ rubico lt left value right resolver: 1e+6: 104.770ms
122
+ rubico lt left resolver right resolver: 1e+6: 135.844ms
123
+
124
+ benchmarks/lte.async.js
125
+ rubico lte Promises: 1e+5: 105.420ms
126
+ rubico lte left value right resolver: 1e+5: 112.446ms
127
+ rubico lte left resolver right resolver: 1e+5: 111.491ms
128
+
129
+ benchmarks/lte.js
130
+ rubico lte primitive: 1e+6: 32.181ms
131
+ rubico lte left value right resolver: 1e+6: 89.221ms
132
+ rubico lte left resolver right resolver: 1e+6: 149.565ms
133
+
134
+ benchmarks/map.async.js
135
+ rubico map: 1e+5: 107.143ms
136
+ rubico map tacit: 1e+5: 114.379ms
137
+ async map: 1e+5: 173.965ms
138
+ bluebird map: 1e+5: 985.614ms
139
+ vanilla map and Promise.all: 1e+5: 101.073ms
140
+
141
+ benchmarks/map.js
142
+ rubico map: 1e+6: 39.198ms
143
+ rubico map tacit: 1e+6: 110.067ms
144
+ lodash map: 1e+6: 30.109ms
145
+ lodash/fp map: 1e+6: 3.552s
146
+ ramda map: 1e+6: 294.459ms
147
+
148
+ benchmarks/not.js
149
+ rubico not primitive: 1e+6: 6.092ms
150
+ rubico not predicate: 1e+6: 59.403ms
151
+ rubico not predicate tacit: 1e+6: 92.298ms
152
+
153
+ benchmarks/omit.js
154
+ rubico omit: 1e+6: 679.009ms
155
+ rubico omit tacit: 1e+6: 706.551ms
156
+ lodash omit: 1e+6: 1.427s
157
+ lodash/fp omit: 1e+6: 5.613s
158
+ ramda omit: 1e+6: 399.519ms
159
+
160
+ benchmarks/or.async.js
161
+ rubico or: 1e+5: 91.735ms
162
+ rubico or tacit: 1e+5: 88.578ms
163
+
164
+ benchmarks/or.js
165
+ rubico or: 1e+6: 128.814ms
166
+ rubico or tacit: 1e+6: 171.069ms
167
+
168
+ benchmarks/pick.js
169
+ rubico pick: 1e+6: 88.926ms
170
+ rubico pick tacit: 1e+6: 118.456ms
171
+ lodash pick: 1e+6: 374.595ms
172
+ lodash fp pick: 1e+6: 3.635s
173
+ ramda pick: 1e+6: 254.004ms
174
+
175
+ benchmarks/pipe.async.js
176
+ rubico pipe: 1e+5: 87.330ms
177
+ rubico pipe tacit: 1e+5: 83.130ms
178
+ async waterfall: 1e+5: 131.535ms
179
+
180
+ benchmarks/pipe.js
181
+ rubico pipe: 1e+6: 215.993ms
182
+ rubico pipe tacit: 1e+6: 186.419ms
183
+ ramda pipe: 1e+6: 1.055s
184
+ lodash/fp pipe: 1e+6: 497.454ms
185
+
186
+ benchmarks/reduce.async.js
187
+ rubico reduce: 1e+5: 200.542ms
188
+ rubico reduce tacit: 1e+5: 211.528ms
189
+ async reduce: 1e+5: 202.368ms
190
+ Bluebird reduce: 1e+5: 2.431s
191
+
192
+ benchmarks/reduce.js
193
+ rubico reduce: 1e+6: 26.706ms
194
+ rubico reduce tacit: 1e+6: 104.285ms
195
+ lodash reduce: 1e+6: 29.708ms
196
+ lodash/fp reduce: 1e+6: 3.500s
197
+ ramda reduce: 1e+6: 458.479ms
198
+
199
+ benchmarks/set.async.js
200
+ rubico set: 1e+5: 66.993ms
201
+ rubico set tacit: 1e+5: 73.471ms
202
+
203
+ benchmarks/set.js
204
+ rubico set: 1e+6: 53.981ms
205
+ rubico set tacit: 1e+6: 80.393ms
206
+ lodash set: 1e+6: 62.218ms
207
+ lodash/fp set: 1e+6: 5.292s
208
+ ramda get: 1e+6: 1.049s
209
+
210
+ benchmarks/some.async.js
211
+ rubico some: 1e+5: 508.451ms
212
+ rubico some tacit: 1e+5: 531.387ms
213
+
214
+ benchmarks/some.js
215
+ rubico some: 1e+6: 25.770ms
216
+ rubico some tacit: 1e+6: 56.635ms
217
+
218
+ benchmarks/switchCase.async.js
219
+ rubico switchCase: 1e+5: 75.426ms
220
+ rubico switchCase tacit: 1e+5: 196.970ms
221
+
222
+ benchmarks/switchCase.js
223
+ switchCase: 1e+6: 60.119ms
224
+ switchCase tacit: 1e+6: 724.607ms
225
+ lodash cond: 1e+6: 1.128s
226
+ lodash/fp cond: 1e+6: 1.232s
227
+ ramda cond: 1e+6: 1.194s
228
+
229
+ benchmarks/tap.js
230
+ tap: 1e+7: 336.995ms
231
+
232
+ benchmarks/thunkify.js
233
+ rubico thunkify: 1e+7: 9.754ms
234
+
235
+ benchmarks/transform.async.js
236
+ rubico transform: 1e+5: 522.428ms
237
+ rubico transform tacit: 1e+5: 536.997ms
238
+
239
+ benchmarks/transform.js
240
+ rubico transform array -> array: 1e+6: 137.846ms
241
+ rubico transform array -> array tacit: 1e+6: 293.453ms
242
+ rubico transform array -> string: 1e+6: 1.664s
243
+ rubico transform array -> string tacit: 1e+6: 1.669s
244
+ ramda into array -> array: 1e+6: 1.077s
245
+ ramda into array -> string: 1e+6: 1.259s
246
+
247
+ benchmarks/tryCatch.async.js
248
+ rubico tryCatch: 1e+4: 173.183ms
249
+ rubico tryCatch tacit: 1e+4: 163.937ms
250
+
251
+ benchmarks/tryCatch.js
252
+ rubico tryCatch: 1e+5: 944.721ms
253
+ rubico tryCatch tacit: 1e+5: 934.322ms
254
+ ramda tryCatch: 1e+5: 1.054s
255
+
256
+ benchmarks/misc/Promise.js
257
+ vanilla Promise: 1e+6: 826.502ms
258
+ Bluebird Promise: 1e+6: 1.398s
259
+
260
+ benchmarks/misc/isPromise.js
261
+ isPromise .then: 1e+5: 1.183ms
262
+ isPromise instanceof: 1e+5: 1.760ms
263
+
264
+ benchmarks/misc/promiseAll.js
265
+ rubico promiseAll: 1e+5: 290.210ms
266
+ vanilla Promise.all: 1e+5: 294.923ms
267
+ Bluebird Promise.all: 1e+5: 393.508ms
268
+
@@ -0,0 +1,43 @@
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const all = require('../all')
3
+
4
+ const suite = new TimeInLoopSuite({ async: true, loopCount: 1e5 })
5
+
6
+ suite.add('rubico async array all', async () => {
7
+ await all(5, [
8
+ async value => value + 1,
9
+ async value => value + 2,
10
+ async value => value + 3,
11
+ ])
12
+ })
13
+
14
+ suite.add('rubico async array all tacit', async () => {
15
+ await all([
16
+ async value => value + 1,
17
+ async value => value + 2,
18
+ async value => value + 3,
19
+ ])(5)
20
+ })
21
+
22
+ suite.add('rubico async object all', async () => {
23
+ await all(5, {
24
+ a: async value => value + 1,
25
+ b: async value => value + 2,
26
+ c: async value => value + 3,
27
+ })
28
+ })
29
+
30
+ suite.add('rubico async object all tacit', async () => {
31
+ await all({
32
+ a: async value => value + 1,
33
+ b: async value => value + 2,
34
+ c: async value => value + 3,
35
+ })(5)
36
+ })
37
+
38
+ if (process.argv[1] == __filename) {
39
+ suite.on('caseBestRun', run => console.log(run.output))
40
+ suite.run()
41
+ }
42
+
43
+ module.exports = suite
package/benchmarks/all.js CHANGED
@@ -1,34 +1,43 @@
1
- const timeInLoop = require('../x/timeInLoop')
2
- const rubico = require('..')
3
- const _ = require('lodash')
4
- const R = require('ramda')
5
-
6
- const isOdd = number => number % 2 == 1
7
-
8
- const isEven = number => number % 2 == 0
9
-
10
- /**
11
- * @name allRace
12
- *
13
- * @benchmark
14
- * _.every: 1e+6: 20.984ms
15
- * R.all: 1e+6: 368.142ms
16
- * rubico.all: 1e+6: 24.772ms
17
- *
18
- * @remarks
19
- * promise check
20
- */
21
-
22
- {
23
- const evenNumbers = [2, 4, 6, 8, 10]
24
-
25
- // console.log(_.every(evenNumbers, isEven))
26
- // console.log(R.all(isEven)(evenNumbers))
27
- // console.log(rubico.all(isEven)(evenNumbers))
28
-
29
- // timeInLoop('_.every', 1e6, () => _.every(evenNumbers, isEven))
30
-
31
- // timeInLoop('R.all', 1e6, () => R.all(isEven)(evenNumbers))
32
-
33
- // timeInLoop('rubico.all', 1e6, () => rubico.all(isEven)(evenNumbers))
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const all = require('../all')
3
+
4
+ const suite = new TimeInLoopSuite()
5
+
6
+ suite.add('rubico array all', () => {
7
+ all(5, [
8
+ value => value + 1,
9
+ value => value + 2,
10
+ value => value + 3,
11
+ ])
12
+ })
13
+
14
+ suite.add('rubico array all tacit', () => {
15
+ all([
16
+ value => value + 1,
17
+ value => value + 2,
18
+ value => value + 3,
19
+ ])(5)
20
+ })
21
+
22
+ suite.add('rubico object all', () => {
23
+ all(5, {
24
+ a: value => value + 1,
25
+ b: value => value + 2,
26
+ c: value => value + 3,
27
+ })
28
+ })
29
+
30
+ suite.add('rubico object all tacit', () => {
31
+ all({
32
+ a: value => value + 1,
33
+ b: value => value + 2,
34
+ c: value => value + 3,
35
+ })(5)
36
+ })
37
+
38
+ if (process.argv[1] == __filename) {
39
+ suite.on('caseBestRun', run => console.log(run.output))
40
+ suite.run()
34
41
  }
42
+
43
+ module.exports = suite
@@ -0,0 +1,15 @@
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const always = require('../always')
3
+
4
+ const suite = new TimeInLoopSuite({ loopCount: 1e7 })
5
+
6
+ suite.add('rubico always', () => {
7
+ always(1)()
8
+ })
9
+
10
+ if (process.argv[1] == __filename) {
11
+ suite.on('caseBestRun', run => console.log(run.output))
12
+ suite.run()
13
+ }
14
+
15
+ module.exports = suite
@@ -0,0 +1,25 @@
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const and = require('../and')
3
+
4
+ const suite = new TimeInLoopSuite({ async: true, loopCount: 1e5 })
5
+
6
+ suite.add('rubico and', async () => {
7
+ await and({ a: 1 }, [
8
+ async value => value.a == 1,
9
+ async value => typeof value == 'object',
10
+ ])
11
+ })
12
+
13
+ suite.add('rubico and tacit', async () => {
14
+ await and([
15
+ async value => value.a == 1,
16
+ async value => typeof value == 'object',
17
+ ])({ a: 1 })
18
+ })
19
+
20
+ if (process.argv[1] == __filename) {
21
+ suite.on('caseBestRun', run => console.log(run.output))
22
+ suite.run()
23
+ }
24
+
25
+ module.exports = suite
package/benchmarks/and.js CHANGED
@@ -1,24 +1,25 @@
1
- const timeInLoop = require('../x/timeInLoop')
2
- const rubico = require('..')
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const and = require('../and')
3
3
 
4
- const { and } = rubico
4
+ const suite = new TimeInLoopSuite()
5
5
 
6
- const isOdd = x => x % 2 == 1
6
+ suite.add('rubico and', () => {
7
+ and({ a: 1 }, [
8
+ value => value.a == 1,
9
+ value => typeof value == 'object',
10
+ ])
11
+ })
7
12
 
8
- const threeOddChecks = number => isOdd(number) && isOdd(number) && isOdd(number)
13
+ suite.add('rubico and tacit', () => {
14
+ and([
15
+ value => value.a == 1,
16
+ value => typeof value == 'object',
17
+ ])({ a: 1 })
18
+ })
9
19
 
10
- const threeIsOdd = and([isOdd, isOdd, isOdd])
11
-
12
- /**
13
- * @name or
14
- *
15
- * @benchmark
16
- * isOdd(value) && isOdd(value) && isOdd(value): 1e+6: 6.664ms
17
- * and([isOdd, isOdd, isOdd]): 1e+6: 16.842ms
18
- */
19
-
20
- {
21
- // timeInLoop('isOdd(value) && isOdd(value) && isOdd(value)', 1e6, () => threeOddChecks(1))
22
-
23
- // timeInLoop('and([isOdd, isOdd, isOdd])', 1e6, () => threeIsOdd(1))
20
+ if (process.argv[1] == __filename) {
21
+ suite.on('caseBestRun', run => console.log(run.output))
22
+ suite.run()
24
23
  }
24
+
25
+ module.exports = suite
@@ -0,0 +1,27 @@
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const assign = require('../assign')
3
+
4
+ const suite = new TimeInLoopSuite({ async: true, loopCount: 1e5 })
5
+
6
+ suite.add('rubico assign', async () => {
7
+ await assign({}, {
8
+ a: async () => 1,
9
+ b: async () => 2,
10
+ c: async () => 3,
11
+ })
12
+ })
13
+
14
+ suite.add('rubico assign tacit', async () => {
15
+ await assign({
16
+ a: async () => 1,
17
+ b: async () => 2,
18
+ c: async () => 3,
19
+ })({})
20
+ })
21
+
22
+ if (process.argv[1] == __filename) {
23
+ suite.on('caseBestRun', run => console.log(run.output))
24
+ suite.run()
25
+ }
26
+
27
+ module.exports = suite