rubico 1.9.7 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (587) hide show
  1. package/.eslintignore +5 -0
  2. package/.eslintrc.js +3 -2
  3. package/.github/workflows/nodejs.yml +1 -1
  4. package/AggregateReducer.js +19 -0
  5. package/AggregateReducer.test.js +82 -0
  6. package/CHANGELOG.md +22 -1
  7. package/Transducer.js +75 -26
  8. package/Transducer.test.js +117 -0
  9. package/_internal/ComparisonOperator.js +68 -0
  10. package/_internal/File.js +41 -0
  11. package/_internal/FlatMappingAsyncIterator.js +4 -4
  12. package/_internal/FlatMappingIterator.js +1 -1
  13. package/_internal/TimeInLoopSuite.js +138 -0
  14. package/_internal/areAnyValuesPromises.js +23 -0
  15. package/_internal/{arrayAll.js → arrayEvery.js} +4 -4
  16. package/_internal/arrayExtend.js +3 -2
  17. package/_internal/arrayFilter.js +3 -4
  18. package/_internal/{arrayAny.js → arraySome.js} +8 -8
  19. package/_internal/{asyncIteratorAll.js → asyncIteratorEvery.js} +4 -4
  20. package/_internal/{asyncIteratorAny.js → asyncIteratorSome.js} +4 -4
  21. package/_internal/curry4.test.js +25 -0
  22. package/_internal/curry5.test.js +29 -0
  23. package/_internal/curryArgs2.js +43 -0
  24. package/_internal/curryArgs3.test.js +21 -0
  25. package/_internal/curryArgs4.js +65 -0
  26. package/_internal/curryArgs4.test.js +25 -0
  27. package/_internal/equals.js +13 -0
  28. package/_internal/findAllFilePaths.js +22 -0
  29. package/_internal/funcApply.js +2 -0
  30. package/_internal/funcCall.js +14 -0
  31. package/_internal/functionArrayAll.js +26 -0
  32. package/_internal/functionArrayAllSeries.js +55 -0
  33. package/_internal/functionObjectAll.js +32 -0
  34. package/_internal/genericReduce.js +4 -22
  35. package/_internal/genericTransform.js +15 -15
  36. package/_internal/improvedGenericTransform.js +93 -0
  37. package/_internal/{iteratorAll.js → iteratorEvery.js} +4 -4
  38. package/_internal/{iteratorAny.js → iteratorSome.js} +6 -6
  39. package/_internal/leftResolverRightResolverCompare.js +19 -0
  40. package/_internal/leftResolverRightValueCompare.js +16 -0
  41. package/_internal/leftValueRightResolverCompare.js +16 -0
  42. package/_internal/objectReduce.js +0 -1
  43. package/_internal/pathResolve.js +6 -0
  44. package/_internal/{reducerAll.js → reducerEvery.js} +4 -4
  45. package/_internal/reducerFlatMap.js +4 -4
  46. package/_internal/reducerFlatten.js +1 -1
  47. package/_internal/{reducerAny.js → reducerSome.js} +4 -4
  48. package/_internal/timeInLoop.js +37 -0
  49. package/_internal/timeInLoop.test.js +18 -0
  50. package/_internal/timeInLoopAsync.js +35 -0
  51. package/_internal/timeInLoopAsync.test.js +22 -0
  52. package/all.js +106 -40
  53. package/and.js +54 -36
  54. package/archive/{FlatMappingIteratorCool.js → FlatMappingIterator-2020-09-28.js} +1 -1
  55. package/archive/_Promise-2023-05-29.js +93 -0
  56. package/archive/arrayMap2-2023-05-29.js +73 -0
  57. package/archive/benchmarks-v1.9.7/all.js +34 -0
  58. package/archive/benchmarks-v1.9.7/and.js +24 -0
  59. package/archive/benchmarks-v1.9.7/assign.js +174 -0
  60. package/archive/benchmarks-v1.9.7/curry.js +55 -0
  61. package/archive/benchmarks-v1.9.7/eq.js +25 -0
  62. package/archive/benchmarks-v1.9.7/filter.js +1322 -0
  63. package/archive/benchmarks-v1.9.7/flatMap.js +48 -0
  64. package/archive/benchmarks-v1.9.7/get.js +44 -0
  65. package/archive/benchmarks-v1.9.7/gt.js +25 -0
  66. package/archive/benchmarks-v1.9.7/gte.js +25 -0
  67. package/archive/benchmarks-v1.9.7/lt.js +25 -0
  68. package/archive/benchmarks-v1.9.7/lte.js +25 -0
  69. package/archive/benchmarks-v1.9.7/map.js +892 -0
  70. package/archive/benchmarks-v1.9.7/omit.js +28 -0
  71. package/archive/benchmarks-v1.9.7/or.js +51 -0
  72. package/archive/benchmarks-v1.9.7/pick.js +24 -0
  73. package/archive/benchmarks-v1.9.7/pipe.js +152 -0
  74. package/archive/benchmarks-v1.9.7/reduce.js +739 -0
  75. package/archive/benchmarks-v1.9.7/switchCase.js +256 -0
  76. package/archive/benchmarks-v1.9.7/tap.js +90 -0
  77. package/archive/benchmarks-v1.9.7/transform.js +218 -0
  78. package/archive/benchmarks-v1.9.7/tryCatch.js +108 -0
  79. package/assign.js +18 -8
  80. package/bench +65 -0
  81. package/benchmark-output/v1.9.7 +268 -0
  82. package/benchmarks/all.async.js +43 -0
  83. package/benchmarks/all.js +42 -33
  84. package/benchmarks/always.js +15 -0
  85. package/benchmarks/and.async.js +25 -0
  86. package/benchmarks/and.js +20 -19
  87. package/benchmarks/assign.async.js +27 -0
  88. package/benchmarks/assign.js +20 -167
  89. package/benchmarks/curry.js +34 -54
  90. package/benchmarks/eq.async.js +23 -0
  91. package/benchmarks/eq.js +17 -19
  92. package/benchmarks/every.async.js +19 -0
  93. package/benchmarks/every.js +19 -0
  94. package/benchmarks/filter.async.js +32 -0
  95. package/benchmarks/filter.js +27 -1311
  96. package/benchmarks/flatMap.async.js +26 -0
  97. package/benchmarks/flatMap.js +26 -36
  98. package/benchmarks/get.async.js +19 -0
  99. package/benchmarks/get.js +27 -32
  100. package/benchmarks/gt.async.js +23 -0
  101. package/benchmarks/gt.js +17 -19
  102. package/benchmarks/gte.async.js +23 -0
  103. package/benchmarks/gte.js +17 -19
  104. package/benchmarks/lt.async.js +23 -0
  105. package/benchmarks/lt.js +17 -19
  106. package/benchmarks/lte.async.js +23 -0
  107. package/benchmarks/lte.js +17 -19
  108. package/benchmarks/map.async.js +43 -0
  109. package/benchmarks/map.js +24 -876
  110. package/benchmarks/misc/Promise.js +26 -0
  111. package/benchmarks/misc/isPromise.js +30 -0
  112. package/benchmarks/misc/promiseAll.js +36 -0
  113. package/benchmarks/not.js +23 -0
  114. package/benchmarks/omit.js +30 -20
  115. package/benchmarks/or.async.js +25 -0
  116. package/benchmarks/or.js +23 -49
  117. package/benchmarks/pick.js +30 -16
  118. package/benchmarks/pipe.async.js +47 -0
  119. package/benchmarks/pipe.js +46 -151
  120. package/benchmarks/reduce.async.js +32 -0
  121. package/benchmarks/reduce.js +27 -728
  122. package/benchmarks/set.async.js +19 -0
  123. package/benchmarks/set.js +41 -0
  124. package/benchmarks/some.async.js +19 -0
  125. package/benchmarks/some.js +19 -0
  126. package/benchmarks/switchCase.async.js +27 -0
  127. package/benchmarks/switchCase.js +55 -256
  128. package/benchmarks/tap.js +10 -85
  129. package/benchmarks/thunkify.js +15 -0
  130. package/benchmarks/transform.async.js +27 -0
  131. package/benchmarks/transform.js +28 -206
  132. package/benchmarks/tryCatch.async.js +25 -0
  133. package/benchmarks/tryCatch.js +24 -100
  134. package/{distributor.js → build} +50 -50
  135. package/compose.js +46 -0
  136. package/dist/__.es.js +2 -2
  137. package/dist/__.es.min.js +2 -2
  138. package/dist/__.js +2 -2
  139. package/dist/__.min.js +2 -2
  140. package/dist/__.min.mjs +2 -2
  141. package/dist/__.mjs +2 -2
  142. package/dist/all.es.js +173 -92
  143. package/dist/all.es.min.js +3 -3
  144. package/dist/all.js +173 -92
  145. package/dist/all.min.js +3 -3
  146. package/dist/all.min.mjs +3 -3
  147. package/dist/all.mjs +173 -92
  148. package/dist/always.es.js +2 -2
  149. package/dist/always.es.min.js +2 -2
  150. package/dist/always.js +2 -2
  151. package/dist/always.min.js +2 -2
  152. package/dist/always.min.mjs +2 -2
  153. package/dist/always.mjs +2 -2
  154. package/dist/and.es.js +101 -32
  155. package/dist/and.es.min.js +3 -3
  156. package/dist/and.js +101 -32
  157. package/dist/and.min.js +3 -3
  158. package/dist/and.min.mjs +3 -3
  159. package/dist/and.mjs +101 -32
  160. package/dist/assign.es.js +37 -10
  161. package/dist/assign.es.min.js +3 -3
  162. package/dist/assign.js +37 -10
  163. package/dist/assign.min.js +3 -3
  164. package/dist/assign.min.mjs +3 -3
  165. package/dist/assign.mjs +37 -10
  166. package/dist/compose.es.js +71 -0
  167. package/dist/compose.es.min.js +7 -0
  168. package/dist/compose.js +78 -0
  169. package/dist/compose.min.js +8 -0
  170. package/dist/compose.min.mjs +7 -0
  171. package/dist/compose.mjs +71 -0
  172. package/dist/curry.es.js +2 -2
  173. package/dist/curry.es.min.js +2 -2
  174. package/dist/curry.js +2 -2
  175. package/dist/curry.min.js +2 -2
  176. package/dist/curry.min.mjs +2 -2
  177. package/dist/curry.mjs +2 -2
  178. package/dist/eq.es.js +172 -49
  179. package/dist/eq.es.min.js +3 -3
  180. package/dist/eq.js +172 -49
  181. package/dist/eq.min.js +3 -3
  182. package/dist/eq.min.mjs +3 -3
  183. package/dist/eq.mjs +172 -49
  184. package/dist/every.es.js +194 -0
  185. package/dist/every.es.min.js +7 -0
  186. package/dist/every.js +201 -0
  187. package/dist/every.min.js +8 -0
  188. package/dist/every.min.mjs +7 -0
  189. package/dist/every.mjs +194 -0
  190. package/dist/filter.es.js +14 -108
  191. package/dist/filter.es.min.js +3 -3
  192. package/dist/filter.js +14 -108
  193. package/dist/filter.min.js +3 -3
  194. package/dist/filter.min.mjs +3 -3
  195. package/dist/filter.mjs +14 -108
  196. package/dist/flatMap.es.js +27 -214
  197. package/dist/flatMap.es.min.js +3 -3
  198. package/dist/flatMap.js +27 -214
  199. package/dist/flatMap.min.js +3 -3
  200. package/dist/flatMap.min.mjs +3 -3
  201. package/dist/flatMap.mjs +27 -214
  202. package/dist/{x/forEach.es.js → forEach.es.js} +52 -70
  203. package/dist/forEach.es.min.js +7 -0
  204. package/dist/{x/forEach.js → forEach.js} +52 -70
  205. package/dist/forEach.min.js +8 -0
  206. package/dist/forEach.min.mjs +7 -0
  207. package/dist/{x/forEach.mjs → forEach.mjs} +52 -70
  208. package/dist/get.es.js +60 -5
  209. package/dist/get.es.min.js +3 -3
  210. package/dist/get.js +60 -5
  211. package/dist/get.min.js +3 -3
  212. package/dist/get.min.mjs +3 -3
  213. package/dist/get.mjs +60 -5
  214. package/dist/gt.es.js +171 -48
  215. package/dist/gt.es.min.js +3 -3
  216. package/dist/gt.js +171 -48
  217. package/dist/gt.min.js +3 -3
  218. package/dist/gt.min.mjs +3 -3
  219. package/dist/gt.mjs +171 -48
  220. package/dist/gte.es.js +171 -48
  221. package/dist/gte.es.min.js +3 -3
  222. package/dist/gte.js +171 -48
  223. package/dist/gte.min.js +3 -3
  224. package/dist/gte.min.mjs +3 -3
  225. package/dist/gte.mjs +171 -48
  226. package/dist/lt.es.js +171 -48
  227. package/dist/lt.es.min.js +3 -3
  228. package/dist/lt.js +171 -48
  229. package/dist/lt.min.js +3 -3
  230. package/dist/lt.min.mjs +3 -3
  231. package/dist/lt.mjs +171 -48
  232. package/dist/lte.es.js +171 -48
  233. package/dist/lte.es.min.js +3 -3
  234. package/dist/lte.js +171 -48
  235. package/dist/lte.min.js +3 -3
  236. package/dist/lte.min.mjs +3 -3
  237. package/dist/lte.mjs +171 -48
  238. package/dist/map.es.js +12 -101
  239. package/dist/map.es.min.js +3 -3
  240. package/dist/map.js +12 -101
  241. package/dist/map.min.js +3 -3
  242. package/dist/map.min.mjs +3 -3
  243. package/dist/map.mjs +12 -101
  244. package/dist/not.es.js +75 -14
  245. package/dist/not.es.min.js +3 -3
  246. package/dist/not.js +75 -14
  247. package/dist/not.min.js +3 -3
  248. package/dist/not.min.mjs +3 -3
  249. package/dist/not.mjs +75 -14
  250. package/dist/omit.es.js +7 -2
  251. package/dist/omit.es.min.js +3 -3
  252. package/dist/omit.js +7 -2
  253. package/dist/omit.min.js +3 -3
  254. package/dist/omit.min.mjs +3 -3
  255. package/dist/omit.mjs +7 -2
  256. package/dist/or.es.js +99 -31
  257. package/dist/or.es.min.js +3 -3
  258. package/dist/or.js +99 -31
  259. package/dist/or.min.js +3 -3
  260. package/dist/or.min.mjs +3 -3
  261. package/dist/or.mjs +99 -31
  262. package/dist/pick.es.js +8 -3
  263. package/dist/pick.es.min.js +3 -3
  264. package/dist/pick.js +8 -3
  265. package/dist/pick.min.js +3 -3
  266. package/dist/pick.min.mjs +3 -3
  267. package/dist/pick.mjs +8 -3
  268. package/dist/pipe.es.js +42 -46
  269. package/dist/pipe.es.min.js +3 -3
  270. package/dist/pipe.js +42 -46
  271. package/dist/pipe.min.js +3 -3
  272. package/dist/pipe.min.mjs +3 -3
  273. package/dist/pipe.mjs +42 -46
  274. package/dist/reduce.es.js +52 -94
  275. package/dist/reduce.es.min.js +3 -3
  276. package/dist/reduce.js +52 -94
  277. package/dist/reduce.min.js +3 -3
  278. package/dist/reduce.min.mjs +3 -3
  279. package/dist/reduce.mjs +52 -94
  280. package/dist/rubico.es.js +730 -869
  281. package/dist/rubico.es.min.js +3 -3
  282. package/dist/rubico.js +730 -869
  283. package/dist/rubico.min.js +3 -3
  284. package/dist/rubico.min.mjs +3 -3
  285. package/dist/rubico.mjs +730 -869
  286. package/dist/set.es.js +18 -3
  287. package/dist/set.es.min.js +3 -3
  288. package/dist/set.js +18 -3
  289. package/dist/set.min.js +3 -3
  290. package/dist/set.min.mjs +3 -3
  291. package/dist/set.mjs +18 -3
  292. package/dist/{any.js → some.es.js} +64 -54
  293. package/dist/some.es.min.js +7 -0
  294. package/dist/{any.mjs → some.js} +72 -48
  295. package/dist/some.min.js +8 -0
  296. package/dist/some.min.mjs +7 -0
  297. package/dist/{any.es.js → some.mjs} +65 -48
  298. package/dist/switchCase.es.js +55 -5
  299. package/dist/switchCase.es.min.js +3 -3
  300. package/dist/switchCase.js +55 -5
  301. package/dist/switchCase.min.js +3 -3
  302. package/dist/switchCase.min.mjs +3 -3
  303. package/dist/switchCase.mjs +55 -5
  304. package/dist/tap.es.js +2 -9
  305. package/dist/tap.es.min.js +3 -3
  306. package/dist/tap.js +2 -9
  307. package/dist/tap.min.js +3 -3
  308. package/dist/tap.min.mjs +3 -3
  309. package/dist/tap.mjs +2 -9
  310. package/dist/thunkify.es.js +45 -2
  311. package/dist/thunkify.es.min.js +3 -3
  312. package/dist/thunkify.js +45 -2
  313. package/dist/thunkify.min.js +3 -3
  314. package/dist/thunkify.min.mjs +3 -3
  315. package/dist/thunkify.mjs +45 -2
  316. package/dist/transform.es.js +35 -71
  317. package/dist/transform.es.min.js +3 -3
  318. package/dist/transform.js +35 -71
  319. package/dist/transform.min.js +3 -3
  320. package/dist/transform.min.mjs +3 -3
  321. package/dist/transform.mjs +35 -71
  322. package/dist/tryCatch.es.js +33 -17
  323. package/dist/tryCatch.es.min.js +3 -3
  324. package/dist/tryCatch.js +33 -17
  325. package/dist/tryCatch.min.js +3 -3
  326. package/dist/tryCatch.min.mjs +3 -3
  327. package/dist/tryCatch.mjs +33 -17
  328. package/dist/x/append.es.js +2 -2
  329. package/dist/x/append.es.min.js +2 -2
  330. package/dist/x/append.js +2 -2
  331. package/dist/x/append.min.js +2 -2
  332. package/dist/x/append.min.mjs +2 -2
  333. package/dist/x/append.mjs +2 -2
  334. package/dist/x/callProp.es.js +2 -2
  335. package/dist/x/callProp.es.min.js +2 -2
  336. package/dist/x/callProp.js +2 -2
  337. package/dist/x/callProp.min.js +2 -2
  338. package/dist/x/callProp.min.mjs +2 -2
  339. package/dist/x/callProp.mjs +2 -2
  340. package/dist/x/defaultsDeep.es.js +2 -2
  341. package/dist/x/defaultsDeep.es.min.js +2 -2
  342. package/dist/x/defaultsDeep.js +2 -2
  343. package/dist/x/defaultsDeep.min.js +2 -2
  344. package/dist/x/defaultsDeep.min.mjs +2 -2
  345. package/dist/x/defaultsDeep.mjs +2 -2
  346. package/dist/x/differenceWith.es.js +7 -7
  347. package/dist/x/differenceWith.es.min.js +3 -3
  348. package/dist/x/differenceWith.js +7 -7
  349. package/dist/x/differenceWith.min.js +2 -2
  350. package/dist/x/differenceWith.min.mjs +3 -3
  351. package/dist/x/differenceWith.mjs +7 -7
  352. package/dist/x/filterOut.es.js +60 -117
  353. package/dist/x/filterOut.es.min.js +3 -3
  354. package/dist/x/filterOut.js +60 -117
  355. package/dist/x/filterOut.min.js +3 -3
  356. package/dist/x/filterOut.min.mjs +3 -3
  357. package/dist/x/filterOut.mjs +60 -117
  358. package/dist/x/find.es.js +2 -2
  359. package/dist/x/find.es.min.js +2 -2
  360. package/dist/x/find.js +2 -2
  361. package/dist/x/find.min.js +2 -2
  362. package/dist/x/find.min.mjs +2 -2
  363. package/dist/x/find.mjs +2 -2
  364. package/dist/x/findIndex.es.js +2 -2
  365. package/dist/x/findIndex.es.min.js +2 -2
  366. package/dist/x/findIndex.js +2 -2
  367. package/dist/x/findIndex.min.js +2 -2
  368. package/dist/x/findIndex.min.mjs +2 -2
  369. package/dist/x/findIndex.mjs +2 -2
  370. package/dist/x/first.es.js +2 -2
  371. package/dist/x/first.es.min.js +2 -2
  372. package/dist/x/first.js +2 -2
  373. package/dist/x/first.min.js +2 -2
  374. package/dist/x/first.min.mjs +2 -2
  375. package/dist/x/first.mjs +2 -2
  376. package/dist/x/flatten.es.js +20 -207
  377. package/dist/x/flatten.es.min.js +3 -3
  378. package/dist/x/flatten.js +20 -207
  379. package/dist/x/flatten.min.js +3 -3
  380. package/dist/x/flatten.min.mjs +3 -3
  381. package/dist/x/flatten.mjs +20 -207
  382. package/dist/x/groupBy.es.js +52 -94
  383. package/dist/x/groupBy.es.min.js +3 -3
  384. package/dist/x/groupBy.js +52 -94
  385. package/dist/x/groupBy.min.js +3 -3
  386. package/dist/x/groupBy.min.mjs +3 -3
  387. package/dist/x/groupBy.mjs +52 -94
  388. package/dist/x/has.es.js +2 -2
  389. package/dist/x/has.es.min.js +2 -2
  390. package/dist/x/has.js +2 -2
  391. package/dist/x/has.min.js +2 -2
  392. package/dist/x/has.min.mjs +2 -2
  393. package/dist/x/has.mjs +2 -2
  394. package/dist/x/identity.es.js +2 -2
  395. package/dist/x/identity.es.min.js +2 -2
  396. package/dist/x/identity.js +2 -2
  397. package/dist/x/identity.min.js +2 -2
  398. package/dist/x/identity.min.mjs +2 -2
  399. package/dist/x/identity.mjs +2 -2
  400. package/dist/x/includes.es.js +2 -2
  401. package/dist/x/includes.es.min.js +2 -2
  402. package/dist/x/includes.js +2 -2
  403. package/dist/x/includes.min.js +2 -2
  404. package/dist/x/includes.min.mjs +2 -2
  405. package/dist/x/includes.mjs +2 -2
  406. package/dist/x/isDeepEqual.es.js +2 -2
  407. package/dist/x/isDeepEqual.es.min.js +2 -2
  408. package/dist/x/isDeepEqual.js +2 -2
  409. package/dist/x/isDeepEqual.min.js +2 -2
  410. package/dist/x/isDeepEqual.min.mjs +2 -2
  411. package/dist/x/isDeepEqual.mjs +2 -2
  412. package/dist/x/isEmpty.es.js +2 -2
  413. package/dist/x/isEmpty.es.min.js +2 -2
  414. package/dist/x/isEmpty.js +2 -2
  415. package/dist/x/isEmpty.min.js +2 -2
  416. package/dist/x/isEmpty.min.mjs +2 -2
  417. package/dist/x/isEmpty.mjs +2 -2
  418. package/dist/x/isEqual.es.js +2 -2
  419. package/dist/x/isEqual.es.min.js +2 -2
  420. package/dist/x/isEqual.js +2 -2
  421. package/dist/x/isEqual.min.js +2 -2
  422. package/dist/x/isEqual.min.mjs +2 -2
  423. package/dist/x/isEqual.mjs +2 -2
  424. package/dist/x/isFunction.es.js +2 -2
  425. package/dist/x/isFunction.es.min.js +2 -2
  426. package/dist/x/isFunction.js +2 -2
  427. package/dist/x/isFunction.min.js +2 -2
  428. package/dist/x/isFunction.min.mjs +2 -2
  429. package/dist/x/isFunction.mjs +2 -2
  430. package/dist/x/isIn.es.js +2 -2
  431. package/dist/x/isIn.es.min.js +2 -2
  432. package/dist/x/isIn.js +2 -2
  433. package/dist/x/isIn.min.js +2 -2
  434. package/dist/x/isIn.min.mjs +2 -2
  435. package/dist/x/isIn.mjs +2 -2
  436. package/dist/x/isObject.es.js +2 -2
  437. package/dist/x/isObject.es.min.js +2 -2
  438. package/dist/x/isObject.js +2 -2
  439. package/dist/x/isObject.min.js +2 -2
  440. package/dist/x/isObject.min.mjs +2 -2
  441. package/dist/x/isObject.mjs +2 -2
  442. package/dist/x/isString.es.js +2 -2
  443. package/dist/x/isString.es.min.js +2 -2
  444. package/dist/x/isString.js +2 -2
  445. package/dist/x/isString.min.js +2 -2
  446. package/dist/x/isString.min.mjs +2 -2
  447. package/dist/x/isString.mjs +2 -2
  448. package/dist/x/keys.es.js +2 -2
  449. package/dist/x/keys.es.min.js +2 -2
  450. package/dist/x/keys.js +2 -2
  451. package/dist/x/keys.min.js +2 -2
  452. package/dist/x/keys.min.mjs +2 -2
  453. package/dist/x/keys.mjs +2 -2
  454. package/dist/x/last.es.js +2 -2
  455. package/dist/x/last.es.min.js +2 -2
  456. package/dist/x/last.js +2 -2
  457. package/dist/x/last.min.js +2 -2
  458. package/dist/x/last.min.mjs +2 -2
  459. package/dist/x/last.mjs +2 -2
  460. package/dist/x/maxBy.es.js +59 -6
  461. package/dist/x/maxBy.es.min.js +3 -3
  462. package/dist/x/maxBy.js +59 -6
  463. package/dist/x/maxBy.min.js +3 -3
  464. package/dist/x/maxBy.min.mjs +3 -3
  465. package/dist/x/maxBy.mjs +59 -6
  466. package/dist/x/noop.es.js +2 -2
  467. package/dist/x/noop.es.min.js +2 -2
  468. package/dist/x/noop.js +2 -2
  469. package/dist/x/noop.min.js +2 -2
  470. package/dist/x/noop.min.mjs +2 -2
  471. package/dist/x/noop.mjs +2 -2
  472. package/dist/x/pluck.es.js +32 -103
  473. package/dist/x/pluck.es.min.js +3 -3
  474. package/dist/x/pluck.js +32 -103
  475. package/dist/x/pluck.min.js +3 -3
  476. package/dist/x/pluck.min.mjs +3 -3
  477. package/dist/x/pluck.mjs +32 -103
  478. package/dist/x/prepend.es.js +2 -2
  479. package/dist/x/prepend.es.min.js +2 -2
  480. package/dist/x/prepend.js +2 -2
  481. package/dist/x/prepend.min.js +2 -2
  482. package/dist/x/prepend.min.mjs +2 -2
  483. package/dist/x/prepend.mjs +2 -2
  484. package/dist/x/size.es.js +2 -2
  485. package/dist/x/size.es.min.js +2 -2
  486. package/dist/x/size.js +2 -2
  487. package/dist/x/size.min.js +2 -2
  488. package/dist/x/size.min.mjs +2 -2
  489. package/dist/x/size.mjs +2 -2
  490. package/dist/x/trace.es.js +2 -9
  491. package/dist/x/trace.es.min.js +3 -3
  492. package/dist/x/trace.js +2 -9
  493. package/dist/x/trace.min.js +3 -3
  494. package/dist/x/trace.min.mjs +3 -3
  495. package/dist/x/trace.mjs +2 -9
  496. package/dist/x/unionWith.es.js +2 -2
  497. package/dist/x/unionWith.es.min.js +2 -2
  498. package/dist/x/unionWith.js +2 -2
  499. package/dist/x/unionWith.min.js +2 -2
  500. package/dist/x/unionWith.min.mjs +2 -2
  501. package/dist/x/unionWith.mjs +2 -2
  502. package/dist/x/uniq.es.js +2 -2
  503. package/dist/x/uniq.es.min.js +2 -2
  504. package/dist/x/uniq.js +2 -2
  505. package/dist/x/uniq.min.js +2 -2
  506. package/dist/x/uniq.min.mjs +2 -2
  507. package/dist/x/uniq.mjs +2 -2
  508. package/dist/x/unless.es.js +2 -2
  509. package/dist/x/unless.es.min.js +2 -2
  510. package/dist/x/unless.js +2 -2
  511. package/dist/x/unless.min.js +2 -2
  512. package/dist/x/unless.min.mjs +2 -2
  513. package/dist/x/unless.mjs +2 -2
  514. package/dist/x/values.es.js +2 -2
  515. package/dist/x/values.es.min.js +2 -2
  516. package/dist/x/values.js +2 -2
  517. package/dist/x/values.min.js +2 -2
  518. package/dist/x/values.min.mjs +2 -2
  519. package/dist/x/values.mjs +2 -2
  520. package/dist/x/when.es.js +2 -2
  521. package/dist/x/when.es.min.js +2 -2
  522. package/dist/x/when.js +2 -2
  523. package/dist/x/when.min.js +2 -2
  524. package/dist/x/when.min.mjs +2 -2
  525. package/dist/x/when.mjs +2 -2
  526. package/dist-test.js +9 -2042
  527. package/eq.js +21 -63
  528. package/es.js +730 -869
  529. package/every.js +94 -0
  530. package/filter.js +23 -91
  531. package/flatMap.js +75 -70
  532. package/forEach.js +82 -0
  533. package/get.js +23 -6
  534. package/global.js +6 -4
  535. package/gt.js +15 -58
  536. package/gte.js +14 -57
  537. package/index.js +730 -869
  538. package/lt.js +17 -60
  539. package/lte.js +14 -57
  540. package/map.js +9 -94
  541. package/memory-usage/reduce.js +2 -2
  542. package/not.js +27 -45
  543. package/omit.js +4 -0
  544. package/or.js +50 -33
  545. package/package.json +7 -7
  546. package/pick.js +5 -1
  547. package/pipe.js +13 -50
  548. package/reduce.js +42 -51
  549. package/rubico.js +10 -8
  550. package/set.js +43 -10
  551. package/some.js +105 -0
  552. package/switchCase.js +13 -3
  553. package/tap.js +0 -24
  554. package/test.js +847 -1096
  555. package/thunkify.js +9 -0
  556. package/transform.js +31 -16
  557. package/tryCatch.js +19 -15
  558. package/x/differenceWith.js +3 -3
  559. package/x/filterOut.test.js +6 -6
  560. package/x/flatten.js +1 -1
  561. package/x/flatten.test.js +0 -8
  562. package/x/index.js +0 -2
  563. package/x/pluck.js +18 -27
  564. package/x/pluck.test.js +3 -7
  565. package/x/timeInLoop.js +16 -25
  566. package/x/timeInLoop.test.js +8 -4
  567. package/any.js +0 -82
  568. package/dist/any.es.min.js +0 -7
  569. package/dist/any.min.js +0 -8
  570. package/dist/any.min.mjs +0 -7
  571. package/dist/fork.es.js +0 -159
  572. package/dist/fork.es.min.js +0 -7
  573. package/dist/fork.js +0 -166
  574. package/dist/fork.min.js +0 -8
  575. package/dist/fork.min.mjs +0 -7
  576. package/dist/fork.mjs +0 -159
  577. package/dist/x/forEach.es.min.js +0 -7
  578. package/dist/x/forEach.min.js +0 -8
  579. package/dist/x/forEach.min.mjs +0 -7
  580. package/fork.js +0 -101
  581. package/x/forEach.js +0 -93
  582. package/x/forEach.test.js +0 -218
  583. /package/{benchmarks → archive/benchmarks-v1.9.7}/any.js +0 -0
  584. /package/{x/forEach.benchmark.js → archive/benchmarks-v1.9.7/forEach.js} +0 -0
  585. /package/{benchmarks → archive/benchmarks-v1.9.7}/fork.js +0 -0
  586. /package/{benchmarks → archive/benchmarks-v1.9.7}/integration.js +0 -0
  587. /package/{benchmarks → archive/benchmarks-v1.9.7}/misc.js +0 -0
@@ -0,0 +1,19 @@
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const set = require('../set')
3
+
4
+ const suite = new TimeInLoopSuite({ async: true, loopCount: 1e5 })
5
+
6
+ suite.add('rubico set', async () => {
7
+ await set({}, 'a', async () => 1)
8
+ })
9
+
10
+ suite.add('rubico set tacit', async () => {
11
+ await set('a', async () => 1)({})
12
+ })
13
+
14
+ if (process.argv[1] == __filename) {
15
+ suite.on('caseBestRun', run => console.log(run.output))
16
+ suite.run()
17
+ }
18
+
19
+ module.exports = suite
@@ -0,0 +1,41 @@
1
+ const Bluebird = require('bluebird')
2
+ const _ = require('lodash')
3
+ const _fp = require('lodash/fp')
4
+ const R = require('ramda')
5
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
6
+ const set = require('../set')
7
+
8
+ const lodashSet = _.set
9
+ const lodashFpSet = _fp.set
10
+ const ramdaSet = R.set
11
+
12
+ const suite = new TimeInLoopSuite()
13
+
14
+ suite.add('rubico set', () => {
15
+ set({}, 'a', 1)
16
+ })
17
+
18
+ suite.add('rubico set tacit', () => {
19
+ set('a', 1)({})
20
+ })
21
+
22
+ suite.add('lodash set', () => {
23
+ lodashSet({}, 'a', 1)
24
+ })
25
+
26
+ suite.add('lodash/fp set', () => {
27
+ lodashFpSet('a', 1)({})
28
+ })
29
+
30
+ const ramdaALens = R.lensProp('a')
31
+
32
+ suite.add('ramda get', () => {
33
+ ramdaSet(ramdaALens, 1, {})
34
+ })
35
+
36
+ if (process.argv[1] == __filename) {
37
+ suite.on('caseBestRun', run => console.log(run.output))
38
+ suite.run()
39
+ }
40
+
41
+ module.exports = suite
@@ -0,0 +1,19 @@
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const some = require('../some')
3
+
4
+ const suite = new TimeInLoopSuite({ async: true, loopCount: 1e5 })
5
+
6
+ suite.add('rubico some', async () => {
7
+ await some([1, 3, 5], async number => number % 2 == 1)
8
+ })
9
+
10
+ suite.add('rubico some tacit', async () => {
11
+ await some(async number => number % 2 == 1)([1, 3, 5])
12
+ })
13
+
14
+ if (process.argv[1] == __filename) {
15
+ suite.on('caseBestRun', run => console.log(run.output))
16
+ suite.run()
17
+ }
18
+
19
+ module.exports = suite
@@ -0,0 +1,19 @@
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const some = require('../some')
3
+
4
+ const suite = new TimeInLoopSuite()
5
+
6
+ suite.add('rubico some', () => {
7
+ some([1, 2, 3, 4, 5], number => number % 2 == 1)
8
+ })
9
+
10
+ suite.add('rubico some tacit', () => {
11
+ some(number => number % 2 == 1)([1, 2, 3, 4, 5])
12
+ })
13
+
14
+ if (process.argv[1] == __filename) {
15
+ suite.on('caseBestRun', run => console.log(run.output))
16
+ suite.run()
17
+ }
18
+
19
+ module.exports = suite
@@ -0,0 +1,27 @@
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const switchCase = require('../switchCase')
3
+
4
+ const suite = new TimeInLoopSuite({ async: true, loopCount: 1e5 })
5
+
6
+ suite.add('rubico switchCase', async () => {
7
+ await switchCase('hello', [
8
+ async s => s == 'hello',
9
+ async () => 'world',
10
+ async () => 'goodbye',
11
+ ])
12
+ })
13
+
14
+ suite.add('rubico switchCase tacit', async () => {
15
+ await switchCase([
16
+ async s => s == 'hello',
17
+ async () => 'world',
18
+ async () => 'goodbye',
19
+ ])('hello')
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
@@ -1,256 +1,55 @@
1
- const { switchCase } = require('..')
2
- const { timeInLoop } = require('../x')
3
-
4
- const isPromise = value => value != null && typeof value.then == 'function'
5
-
6
- const possiblePromiseThen = (value, func) => (
7
- isPromise(value) ? value.then(func) : func(value))
8
-
9
- /**
10
- * @name funcConditional
11
- *
12
- * @synopsis
13
- * funcConditional(
14
- * funcs Array<args=>Promise|any>,
15
- * )(args ...any) -> Promise|any
16
- */
17
- const funcConditional = funcs => function funcSwitching(...args) {
18
- const lastIndex = funcs.length - 1
19
- let funcsIndex = -2
20
- while ((funcsIndex += 2) < lastIndex) {
21
- const shouldReturnNext = funcs[funcsIndex].apply(null, args)
22
- if (isPromise(shouldReturnNext)) {
23
- return shouldReturnNext.then(res => res
24
- ? funcs[funcsIndex + 1].apply(null, args)
25
- : asyncFuncSwitch(funcs, args, funcsIndex))
26
- }
27
- if (shouldReturnNext) {
28
- return funcs[funcsIndex + 1].apply(null, args)
29
- }
30
- }
31
- return funcs[funcsIndex].apply(null, args)
32
- }
33
-
34
- const funcConditionalRegularCalls = funcs => function funcSwitching(...args) {
35
- const lastIndex = funcs.length - 1
36
- let funcsIndex = -2
37
- while ((funcsIndex += 2) < lastIndex) {
38
- const shouldReturnNext = funcs[funcsIndex](...args)
39
- if (isPromise(shouldReturnNext)) {
40
- return shouldReturnNext.then(res => res
41
- ? funcs[funcsIndex + 1](...args)
42
- : asyncFuncSwitch(funcs, args, funcsIndex))
43
- }
44
- if (shouldReturnNext) {
45
- return funcs[funcsIndex + 1](...args)
46
- }
47
- }
48
- return funcs[funcsIndex](...args)
49
- }
50
-
51
- const arraySwitchCase = (funcs, args, index) => {
52
- if (index === funcs.length - 1) return funcs[index](...args)
53
- return possiblePromiseThen(
54
- funcs[index](...args),
55
- ok => ok
56
- ? funcs[index + 1](...args)
57
- : arraySwitchCase(funcs, args, index + 2),
58
- )
59
- }
60
-
61
- const switchCase1 = funcConditional
62
-
63
- const switchCase10 = funcConditionalRegularCalls
64
-
65
- const switchCase2 = funcs => (...args) => arraySwitchCase(funcs, args, 0)
66
-
67
- // argument resolver for curry2
68
- const curry2ResolveArg0 = (
69
- baseFunc, arg1,
70
- ) => function arg0Resolver(arg0) {
71
- return baseFunc(arg0, arg1)
72
- }
73
-
74
- // argument resolver for curry2
75
- const curry2ResolveArg1 = (
76
- baseFunc, arg0,
77
- ) => function arg1Resolver(arg1) {
78
- return baseFunc(arg0, arg1)
79
- }
80
-
81
- /**
82
- * @name curry2
83
- *
84
- * @synopsis
85
- * __ = Symbol('placeholder')
86
- *
87
- * curry2(
88
- * baseFunc function,
89
- * arg0 __|any,
90
- * arg1 __|any,
91
- * ) -> function
92
- */
93
- const curry2 = function (baseFunc, arg0, arg1) {
94
- return arg0 == __
95
- ? curry2ResolveArg0(baseFunc, arg1)
96
- : curry2ResolveArg1(baseFunc, arg0)
97
- }
98
-
99
- const thunkify1 = (func, arg0) => () => func(arg0)
100
-
101
- const thunkify3 = (func, arg0, arg1, arg2) => () => func(arg0, arg1, arg2)
102
-
103
- const asyncFuncSwitch = async function (funcs, args, funcsIndex) {
104
- const lastIndex = funcs.length - 1
105
- while ((funcsIndex += 2) < lastIndex) {
106
- if (await funcs[funcsIndex](...args)) {
107
- return funcs[funcsIndex + 1](...args)
108
- }
109
- }
110
- return funcs[funcsIndex](...args)
111
- }
112
-
113
- const __ = Symbol('placeholder')
114
-
115
- const thunkConditional = (
116
- boolean, thunkA, thunkB,
117
- ) => boolean ? thunkA() : thunkB()
118
-
119
- const switchCase3 = funcs => function funcSwitching(...args) {
120
- const lastIndex = funcs.length - 1
121
- let funcsIndex = -2
122
-
123
- while ((funcsIndex += 2) < lastIndex) {
124
- const shouldReturnNext = funcs[funcsIndex](...args)
125
- if (isPromise(shouldReturnNext)) {
126
- return shouldReturnNext.then(
127
- curry3(
128
- thunkConditional,
129
- __,
130
- thunkify1(
131
- curry2(funcApply, funcs[funcsIndex + 1], __),
132
- args),
133
- thunkify3(asyncFuncSwitch, funcs, args, funcsIndex)))
134
- }
135
- if (shouldReturnNext) {
136
- return funcs[funcsIndex + 1](...args)
137
- }
138
- }
139
- return funcs[funcsIndex](...args)
140
- }
141
-
142
-
143
- /**
144
- * @name switchCase
145
- *
146
- * @benchmark
147
- *
148
- * @NOTE Bo5 runs
149
- * fiveCases_switchCaseRubico1: 1e+6: 369.264ms
150
- * fiveCases_switchCaseRubico10: 1e+6: 314.024ms
151
- * fiveCases_switchCaseRubico2: 1e+6: 301.841ms
152
- * fiveCases_switchCaseRubico3: 1e+6: 271.723ms
153
- *
154
- * fiveMilCases_switchCaseRubico1: 5e+0: 326.556ms
155
- * fiveMilCases_switchCaseRubico10: 5e+0: 263.211ms
156
- * fiveMilCases_switchCaseRubico2: Error: Maximum call stack size exceeded
157
- * fiveMilCases_switchCaseRubico3: 5e+0: 262.337ms
158
- *
159
- * fiveThousandCases_switchCaseRubico1: 5e+2: 63.736ms
160
- * fiveThousandCases_switchCaseRubico10: 5e+2: 48.004ms
161
- * fiveThousandCases_switchCaseRubico2: 5e+2: 270.643ms
162
- * fiveThousandCases_switchCaseRubico3: 5e+2: 25.742ms
163
- */
164
-
165
- {
166
- const isOdd = x => x % 2 === 1
167
-
168
- const odd = () => 'odd'
169
-
170
- const even = () => 'even'
171
-
172
- /**
173
- * @name createCases
174
- *
175
- * @synopsis
176
- * createCases(length number) -> cases Array<function, length>
177
- */
178
- const createCases = function (length) {
179
- if (!isOdd(length)) throw new RangeError('length must be odd')
180
- const output = [], lastIndex = length - 1
181
- let index = -1
182
- while (++index < lastIndex) {
183
- output[index] = isOdd(index) ? odd : isOdd
184
- }
185
- output[index] = even
186
- return output
187
- }
188
-
189
- const fiveCases = createCases(5)
190
-
191
- const fiveCases_vanilla = num => isOdd(num) ? odd() : isOdd(num) ? odd() : even()
192
-
193
- const fiveCases_vanillaArgs = (...args) => isOdd(...args) ? odd(...args) : isOdd(...args) ? odd(...args) : even(...args)
194
-
195
- const fiveCases_switchCaseRubico1 = switchCase1(fiveCases)
196
-
197
- const fiveCases_switchCaseRubico10 = switchCase10(fiveCases)
198
-
199
- const fiveCases_switchCaseRubico2 = switchCase2(fiveCases)
200
-
201
- const fiveCases_switchCaseRubico3 = switchCase3(fiveCases)
202
-
203
- const fiveMilCases = createCases(4_999_999)
204
-
205
- const fiveMilCases_switchCaseRubico = switchCase(fiveMilCases)
206
-
207
- const fiveMilCases_switchCaseRubico1 = switchCase1(fiveMilCases)
208
-
209
- const fiveMilCases_switchCaseRubico10 = switchCase10(fiveMilCases)
210
-
211
- const fiveMilCases_switchCaseRubico2 = switchCase2(fiveMilCases)
212
-
213
- const fiveMilCases_switchCaseRubico3 = switchCase3(fiveMilCases)
214
-
215
- const fiveThousandCases = createCases(4_999)
216
-
217
- const fiveThousandCases_switchCaseRubico = switchCase(fiveThousandCases)
218
-
219
- const fiveThousandCases_switchCaseRubico1 = switchCase1(fiveThousandCases)
220
-
221
- const fiveThousandCases_switchCaseRubico10 = switchCase10(fiveThousandCases)
222
-
223
- const fiveThousandCases_switchCaseRubico2 = switchCase2(fiveThousandCases)
224
-
225
- const fiveThousandCases_switchCaseRubico3 = switchCase3(fiveThousandCases)
226
-
227
- // timeInLoop('fiveCases_vanilla', 1e6, () => fiveCases_vanilla(2))
228
-
229
- // timeInLoop('fiveCases_vanillaArgs', 1e6, () => fiveCases_vanillaArgs(2))
230
-
231
- // timeInLoop('fiveCases_switchCaseRubico1', 1e6, () => fiveCases_switchCaseRubico1(2))
232
-
233
- // timeInLoop('fiveCases_switchCaseRubico10', 1e6, () => fiveCases_switchCaseRubico10(2))
234
-
235
- // timeInLoop('fiveCases_switchCaseRubico2', 1e6, () => fiveCases_switchCaseRubico2(2))
236
-
237
- // console.log(fiveCases_switchCaseRubico3(2))
238
-
239
- // timeInLoop('fiveCases_switchCaseRubico3', 1e6, () => fiveCases_switchCaseRubico3(2))
240
-
241
- // timeInLoop('fiveMilCases_switchCaseRubico1', 5, () => fiveMilCases_switchCaseRubico1(2))
242
-
243
- // timeInLoop('fiveMilCases_switchCaseRubico10', 5, () => fiveMilCases_switchCaseRubico10(2))
244
-
245
- // timeInLoop('fiveMilCases_switchCaseRubico2', 5, () => fiveMilCases_switchCaseRubico2(2))
246
-
247
- // timeInLoop('fiveMilCases_switchCaseRubico3', 5, () => fiveMilCases_switchCaseRubico3(2))
248
-
249
- // timeInLoop('fiveThousandCases_switchCaseRubico1', 500, () => fiveThousandCases_switchCaseRubico1(2))
250
-
251
- // timeInLoop('fiveThousandCases_switchCaseRubico10', 500, () => fiveThousandCases_switchCaseRubico10(2))
252
-
253
- // timeInLoop('fiveThousandCases_switchCaseRubico2', 500, () => fiveThousandCases_switchCaseRubico2(2))
254
-
255
- // timeInLoop('fiveThousandCases_switchCaseRubico3', 500, () => fiveThousandCases_switchCaseRubico3(2))
256
- }
1
+ const _ = require('lodash')
2
+ const _fp = require('lodash/fp')
3
+ const R = require('ramda')
4
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
5
+ const switchCase = require('../switchCase')
6
+
7
+ const ramdaCond = R.cond
8
+ const lodashCond = _.cond
9
+ const lodashFpCond = _fp.cond
10
+
11
+ const suite = new TimeInLoopSuite()
12
+
13
+ suite.add('switchCase', () => {
14
+ switchCase(1, [
15
+ number => number % 2 == 1,
16
+ 'number is odd',
17
+ 'number is even',
18
+ ])
19
+ })
20
+
21
+ suite.add('switchCase tacit', () => {
22
+ switchCase([
23
+ number => number % 2 == 1,
24
+ 'number is odd',
25
+ 'number is even',
26
+ ])(1)
27
+ })
28
+
29
+ suite.add('lodash cond', () => {
30
+ lodashCond([
31
+ [number => number % 2 == 1, R.always('number is odd')],
32
+ [R.T, R.always('number is even')],
33
+ ])(1)
34
+ })
35
+
36
+ suite.add('lodash/fp cond', () => {
37
+ lodashFpCond([
38
+ [number => number % 2 == 1, R.always('number is odd')],
39
+ [R.T, R.always('number is even')],
40
+ ])(1)
41
+ })
42
+
43
+ suite.add('ramda cond', () => {
44
+ ramdaCond([
45
+ [number => number % 2 == 1, R.always('number is odd')],
46
+ [R.T, R.always('number is even')],
47
+ ])(1)
48
+ })
49
+
50
+ if (process.argv[1] == __filename) {
51
+ suite.on('caseBestRun', run => console.log(run.output))
52
+ suite.run()
53
+ }
54
+
55
+ module.exports = suite
package/benchmarks/tap.js CHANGED
@@ -1,90 +1,15 @@
1
- const timeInLoop = require('../x/timeInLoop')
2
- const _ = require('lodash/fp')
3
- const { tap } = require('..')
4
- const R = require('ramda')
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const tap = require('../tap')
5
3
 
6
- const isPromise = value => value != null && typeof value.then == 'function'
4
+ const suite = new TimeInLoopSuite({ loopCount: 1e7 })
7
5
 
8
- /**
9
- * @name tap
10
- *
11
- * @benchmark
12
- * tapNoopThunk: 1e+6: 4.242ms
13
- * tapRegularCallNoopThunk: 1e+6: 4.969ms
14
- * _tapNoopThunk: 1e+6: 155.716ms
15
- * RTapNoopThunk: 1e+6: 291.025ms
16
- */
6
+ suite.add('tap', () => {
7
+ tap(() => {})()
8
+ })
17
9
 
18
- {
19
- const noop = () => {}
20
-
21
- const tapNoop = tap(noop)
22
-
23
- const tapNoopThunk = () => tapNoop('yo')
24
-
25
- tap.regularCall = func => function tapping(input) {
26
- const call = func(input)
27
- return isPromise(call) ? call.then(() => input) : input
28
- }
29
-
30
- const tapRegularCallNoop = tap.regularCall(noop)
31
-
32
- const tapRegularCallNoopThunk = () => tapRegularCallNoop('yo')
33
-
34
- const _tapNoop = _.tap(noop)
35
-
36
- const _tapNoopThunk = () => _tapNoop('yo')
37
-
38
- const RTapNoop = R.tap(noop)
39
-
40
- const RTapNoopThunk = () => RTapNoop('yo')
41
-
42
- // const func = tapNoopThunk
43
- // const func = tapRegularCallNoopThunk
44
- // const func = tapNoopThunk
45
- // const func = _tapNoopThunk
46
- // const func = RTapNoopThunk
47
-
48
- // console.log(func())
49
-
50
- // timeInLoop(func.name, 1e6, func)
51
- }
52
-
53
- const tap0 = func => function tapping(...args) {
54
- const point = args[0],
55
- call = func(...args)
56
- return isPromise(call) ? call.then(() => point) : point
57
- }
58
-
59
- const always = value => function getter() { return value }
60
-
61
- const tap1 = func => function tapping(...args) {
62
- const point = args[0],
63
- call = func(...args)
64
- return isPromise(call) ? call.then(always(point)) : point
65
- }
66
-
67
- /**
68
- * @name tap
69
- *
70
- * @benchmark
71
- * tap0: 1e+7: 141.116ms
72
- * tap1: 1e+7: 141.007ms
73
- */
74
-
75
- {
76
- const array = []
77
-
78
- const noop = function () {}
79
-
80
- // timeInLoop('tap0', 1e7, () => tap0(noop)(0))
81
-
82
- // timeInLoop('tap1', 1e7, () => tap1(noop)(0))
10
+ if (process.argv[1] == __filename) {
11
+ suite.on('caseBestRun', run => console.log(run.output))
12
+ suite.run()
83
13
  }
84
14
 
85
- /**
86
- * @name tap.if
87
- *
88
- * @benchmark
89
- * TODO
90
- */
15
+ module.exports = suite
@@ -0,0 +1,15 @@
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const thunkify = require('../thunkify')
3
+
4
+ const suite = new TimeInLoopSuite({ loopCount: 1e7 })
5
+
6
+ suite.add('rubico thunkify', () => {
7
+ thunkify((a, b) => a + b, 1, 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,27 @@
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const Transducer = require('../Transducer')
3
+ const transform = require('../transform')
4
+
5
+ const suite = new TimeInLoopSuite({ async: true, loopCount: 1e5 })
6
+
7
+ suite.add('rubico transform', async () => {
8
+ await transform(
9
+ [1, 2, 3, 4, 5],
10
+ Transducer.map(async number => number ** 2),
11
+ [],
12
+ )
13
+ })
14
+
15
+ suite.add('rubico transform tacit', async () => {
16
+ await transform(
17
+ Transducer.map(async number => number ** 2),
18
+ [],
19
+ )([1, 2, 3, 4, 5])
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