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,26 @@
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
+
7
+ const suite = new TimeInLoopSuite()
8
+
9
+ const isPromise = value => value != null && typeof value.then == 'function'
10
+
11
+ suite.add('vanilla Promise', async () => {
12
+ const p = Promise.resolve('hello')
13
+ await p
14
+ })
15
+
16
+ suite.add('Bluebird Promise', async () => {
17
+ const p = Bluebird.resolve('hello')
18
+ await p
19
+ })
20
+
21
+ if (process.argv[1] == __filename) {
22
+ suite.on('caseBestRun', run => console.log(run.output))
23
+ suite.run()
24
+ }
25
+
26
+ module.exports = suite
@@ -0,0 +1,30 @@
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 isPromise = require('../../_internal/isPromise')
7
+ const map = require('../map')
8
+
9
+ const lodashMap = _.map
10
+ const lodashFpMap = _fp.map
11
+ const ramdaMap = R.map
12
+
13
+ const suite = new TimeInLoopSuite({ loopCount: 1e5 })
14
+
15
+ suite.add('isPromise .then', () => {
16
+ const p = Promise.resolve()
17
+ isPromise(p)
18
+ })
19
+
20
+ suite.add('isPromise instanceof', () => {
21
+ const p = Promise.resolve()
22
+ p instanceof Promise
23
+ })
24
+
25
+ if (process.argv[1] == __filename) {
26
+ suite.on('caseBestRun', run => console.log(run.output))
27
+ suite.run()
28
+ }
29
+
30
+ module.exports = suite
@@ -0,0 +1,36 @@
1
+ const Bluebird = require('bluebird')
2
+ const TimeInLoopSuite = require('../../_internal/TimeInLoopSuite')
3
+ const promiseAll = require('../../_internal/promiseAll')
4
+
5
+ const suite = new TimeInLoopSuite({ loopCount: 1e5 })
6
+
7
+ suite.add('rubico promiseAll', async () => {
8
+ await promiseAll([
9
+ Promise.resolve(1),
10
+ Promise.resolve(1),
11
+ Promise.resolve(1),
12
+ ])
13
+ })
14
+
15
+ suite.add('vanilla Promise.all', async () => {
16
+ await Promise.all([
17
+ Promise.resolve(1),
18
+ Promise.resolve(1),
19
+ Promise.resolve(1),
20
+ ])
21
+ })
22
+
23
+ suite.add('Bluebird Promise.all', async () => {
24
+ await Bluebird.all([
25
+ Promise.resolve(1),
26
+ Promise.resolve(1),
27
+ Promise.resolve(1),
28
+ ])
29
+ })
30
+
31
+ if (process.argv[1] == __filename) {
32
+ suite.on('caseBestRun', run => console.log(run.output))
33
+ suite.run()
34
+ }
35
+
36
+ module.exports = suite
@@ -0,0 +1,23 @@
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const not = require('../not')
3
+
4
+ const suite = new TimeInLoopSuite()
5
+
6
+ suite.add('rubico not primitive', () => {
7
+ not(true)
8
+ })
9
+
10
+ suite.add('rubico not predicate', () => {
11
+ not({ a: 1 }, value => value.a == 1)
12
+ })
13
+
14
+ suite.add('rubico not predicate tacit', () => {
15
+ not(value => value.a == 1)({ a: 1 })
16
+ })
17
+
18
+ if (process.argv[1] == __filename) {
19
+ suite.on('caseBestRun', run => console.log(run.output))
20
+ suite.run()
21
+ }
22
+
23
+ module.exports = suite
@@ -1,28 +1,38 @@
1
- const timeInLoop = require('../x/timeInLoop')
2
- const rubico = require('rubico')
3
1
  const _ = require('lodash')
2
+ const _fp = require('lodash/fp')
3
+ const R = require('ramda')
4
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
5
+ const omit = require('../omit')
4
6
 
5
- /**
6
- * @name omitRace
7
- *
8
- * @benchmark
9
- * rubico.omit(['a', 'b', 'c'])(object): 1e+6: 599.19ms
10
- * _.omit(['a', 'b', 'c'])(object): 1e+6: 2.651s
11
- *
12
- * 2020-11-30
13
- * rubico.omit(['a', 'b', 'c'])(object): 1e+6: 628.47ms
14
- * _.omit(['a', 'b', 'c'])(object): 1e+6: 2.595s
15
- */
7
+ const suite = new TimeInLoopSuite()
16
8
 
17
- {
18
- const objectABCDE = { a: 1, b: 2, c: 3, d: 4, e: 5 }
9
+ const lodashOmit = _.omit
10
+ const lodashFpOmit = _fp.omit
11
+ const ramdaOmit = R.omit
19
12
 
20
- const keys = ['a', 'b', 'c']
13
+ suite.add('rubico omit', () => {
14
+ omit({ a: 1, b: 2, c: 3 }, ['b', 'c'])
15
+ })
21
16
 
22
- // console.log(rubico.omit(keys)(objectABCDE))
23
- // console.log(_.omit(objectABCDE, keys))
17
+ suite.add('rubico omit tacit', () => {
18
+ omit(['b', 'c'])({ a: 1, b: 2, c: 3 })
19
+ })
24
20
 
25
- // timeInLoop("rubico.omit(['a', 'b', 'c'])(object)", 1e6, () => rubico.omit(keys)(objectABCDE))
21
+ suite.add('lodash omit', () => {
22
+ lodashOmit({ a: 1, b: 2, c: 3 }, ['b', 'c'])
23
+ })
26
24
 
27
- // timeInLoop("_.omit(['a', 'b', 'c'])(object)", 1e6, () => _.omit(objectABCDE, keys))
25
+ suite.add('lodash/fp omit', () => {
26
+ lodashFpOmit(['b', 'c'])({ a: 1, b: 2, c: 3 })
27
+ })
28
+
29
+ suite.add('ramda omit', () => {
30
+ ramdaOmit(['b', 'c'])({ a: 1, b: 2, c: 3 })
31
+ })
32
+
33
+ if (process.argv[1] == __filename) {
34
+ suite.on('caseBestRun', run => console.log(run.output))
35
+ suite.run()
28
36
  }
37
+
38
+ module.exports = suite
@@ -0,0 +1,25 @@
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const or = require('../or')
3
+
4
+ const suite = new TimeInLoopSuite({ async: true, loopCount: 1e5 })
5
+
6
+ suite.add('rubico or', async () => {
7
+ await or({ a: 1 }, [
8
+ async value => value.a == 2,
9
+ async value => typeof value == 'object',
10
+ ])
11
+ })
12
+
13
+ suite.add('rubico or tacit', async () => {
14
+ await or([
15
+ async value => value.a == 2,
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/or.js CHANGED
@@ -1,51 +1,25 @@
1
- const timeInLoop = require('../x/timeInLoop')
2
- const rubico = require('..')
3
-
4
- const { or } = rubico
5
-
6
- const isPromise = value => value != null && typeof value.then == 'function'
7
-
8
- const isOdd = x => x % 2 == 1
9
-
10
- const threeOddChecks = number => isOdd(number) || isOdd(number) || isOdd(number)
11
-
12
- const threeIsOdd = or([isOdd, isOdd, isOdd])
13
-
14
- const arrayOr = (fns, x) => {
15
- const promises = []
16
- for (let i = 0; i < fns.length; i++) {
17
- const point = fns[i](x)
18
- if (isPromise(point)) promises.push(point)
19
- else if (point) return (promises.length > 0
20
- ? Promise.all(promises).then(() => true)
21
- : true)
22
- }
23
- return (promises.length > 0
24
- ? Promise.all(promises).then(res => res.some(x => x))
25
- : false)
1
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
2
+ const or = require('../or')
3
+
4
+ const suite = new TimeInLoopSuite()
5
+
6
+ suite.add('rubico or', () => {
7
+ or({}, [
8
+ value => value.a == 1,
9
+ value => typeof value == 'object',
10
+ ])
11
+ })
12
+
13
+ suite.add('rubico or tacit', () => {
14
+ or([
15
+ value => value.a == 1,
16
+ value => typeof value == 'object',
17
+ ])({})
18
+ })
19
+
20
+ if (process.argv[1] == __filename) {
21
+ suite.on('caseBestRun', run => console.log(run.output))
22
+ suite.run()
26
23
  }
27
24
 
28
- const isOddArray = [isOdd, isOdd, isOdd]
29
-
30
- /**
31
- * @name or
32
- *
33
- * @benchmark
34
- * isOdd(value) || isOdd(value) || isOdd(value): 1e+6: 5.96ms
35
- * arrayOr([isOdd, isOdd, isOdd]): 1e+6: 27.249ms
36
- * or([isOdd, isOdd, isOdd]): 1e+6: 15.245ms
37
- *
38
- * @remarks
39
- * ...args slows down from ~48ms
40
- */
41
-
42
- {
43
- // console.log(arrayOr(isOddArray, 2))
44
- // console.log(or([isOdd, isOdd, isOdd])(2))
45
-
46
- // timeInLoop('isOdd(value) || isOdd(value) || isOdd(value)', 1e6, () => threeOddChecks(2))
47
-
48
- // timeInLoop('arrayOr([isOdd, isOdd, isOdd])', 1e6, () => arrayOr(isOddArray, 2))
49
-
50
- // timeInLoop('or([isOdd, isOdd, isOdd])', 1e6, () => threeIsOdd(2))
51
- }
25
+ module.exports = suite
@@ -1,24 +1,38 @@
1
- const timeInLoop = require('../x/timeInLoop')
2
- const rubico = require('rubico')
3
1
  const _ = require('lodash')
2
+ const _fp = require('lodash/fp')
3
+ const R = require('ramda')
4
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
5
+ const pick = require('../pick')
4
6
 
5
- /**
6
- * @name pickRace
7
- *
8
- * @benchmark
9
- * rubico.pick(['a', 'b', 'c'])(object): 1e+6: 165.468ms
10
- * _.pick(['a', 'b', 'c'])(object): 1e+6: 1.324s
11
- */
7
+ const lodashPick = _.pick
8
+ const lodashFpPick = _fp.pick
9
+ const ramdaPick = R.pick
12
10
 
13
- {
14
- const objectABCDE = { a: 1, b: 2, c: 3, d: 4, e: 5 }
11
+ const suite = new TimeInLoopSuite()
15
12
 
16
- const keys = ['a', 'b', 'c']
13
+ suite.add('rubico pick', () => {
14
+ pick({ a: 1, b: 2, c: 3 }, ['a'])
15
+ })
17
16
 
18
- // console.log(rubico.pick(keys)(objectABCDE))
19
- // console.log(_.pick(objectABCDE, keys))
17
+ suite.add('rubico pick tacit', () => {
18
+ pick(['a'])({ a: 1, b: 2, c: 3 })
19
+ })
20
20
 
21
- // timeInLoop("rubico.pick(['a', 'b', 'c'])(object)", 1e6, () => rubico.pick(keys)(objectABCDE))
21
+ suite.add('lodash pick', () => {
22
+ lodashPick({ a: 1, b: 2, c: 3 }, ['a'])
23
+ })
22
24
 
23
- // timeInLoop("_.pick(['a', 'b', 'c'])(object)", 1e6, () => _.pick(objectABCDE, keys))
25
+ suite.add('lodash fp pick', () => {
26
+ lodashFpPick(['a'])({ a: 1, b: 2, c: 3 })
27
+ })
28
+
29
+ suite.add('ramda pick', () => {
30
+ ramdaPick(['a'])({ a: 1, b: 2, c: 3 })
31
+ })
32
+
33
+ if (process.argv[1] == __filename) {
34
+ suite.on('caseBestRun', run => console.log(run.output))
35
+ suite.run()
24
36
  }
37
+
38
+ module.exports = suite
@@ -0,0 +1,47 @@
1
+ const async = require('async')
2
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
3
+ const pipe = require('../pipe')
4
+
5
+ const asyncWaterfall = async.waterfall
6
+
7
+ const suite = new TimeInLoopSuite({ async: true, loopCount: 1e5 })
8
+
9
+ suite.add('rubico pipe', async () => {
10
+ await pipe(3, [
11
+ async n => n + 1,
12
+ async n => n * 2,
13
+ async n => n - 3,
14
+ ])
15
+ })
16
+
17
+ suite.add('rubico pipe tacit', async () => {
18
+ await pipe([
19
+ async n => n + 1,
20
+ async n => n * 2,
21
+ async n => n - 3,
22
+ ])(3)
23
+ })
24
+
25
+ suite.add('async waterfall', async () => {
26
+ await asyncWaterfall([
27
+ cb => {
28
+ cb(null, 3)
29
+ },
30
+ (n, cb) => {
31
+ cb(null, n + 1)
32
+ },
33
+ (n, cb) => {
34
+ cb(null, n * 2)
35
+ },
36
+ (n, cb) => {
37
+ cb(null, n - 3)
38
+ },
39
+ ])
40
+ })
41
+
42
+ if (process.argv[1] == __filename) {
43
+ suite.on('caseBestRun', run => console.log(run.output))
44
+ suite.run()
45
+ }
46
+
47
+ module.exports = suite
@@ -1,152 +1,47 @@
1
- const timeInLoop = require('../x/timeInLoop')
2
- const _ = require('lodash/fp')
3
- const { pipe } = require('..')
1
+ const _fp = require('lodash/fp')
4
2
  const R = require('ramda')
5
-
6
- const isPromise = value => value != null && typeof value.then == 'function'
7
-
8
- /**
9
- * @name funcConcat
10
- *
11
- * @benchmark
12
- * funcConcat1: 1e+6: 25.164ms
13
- * funcConcat2: 1e+6: 26.097ms
14
- * funcConcat20: 1e+6: 25.276ms
15
- * funcConcat30: 1e+6: 24.74ms
16
- * funcConcat31: 1e+6: 15.768ms
17
- *
18
- * funcConcat1 - async: 1e+6: 302.914ms
19
- * funcConcat2 - async: 1e+6: 302.83ms
20
- * funcConcat20 - async: 1e+6: 297.492ms
21
- * funcConcat30 - async: 1e+6: 250.784ms
22
- * funcConcat31 - async: 1e+6: 244.547ms
23
- */
24
-
25
- const funcConcat1 = (funcA, funcB) => function pipedFunction(...args) {
26
- const intermediate = funcA.apply(null, args)
27
- const resolver = _funcCallResolver(funcB)
28
- return isPromise(intermediate)
29
- ? intermediate.then(res => funcB.call(null, res))
30
- : funcB.call(null, intermediate)
31
- }
32
-
33
- const _funcCallResolver = func => function resolver(value) {
34
- return func.call(null, value)
35
- }
36
-
37
- const funcConcat2 = (funcA, funcB) => function pipedFunction(...args) {
38
- const intermediate = funcA.apply(null, args)
39
- const resolver = _funcCallResolver(funcB)
40
- return isPromise(intermediate)
41
- ? intermediate.then(resolver)
42
- : resolver(intermediate)
43
- }
44
-
45
- const funcConcat20 = (funcA, funcB) => function pipedFunction(...args) {
46
- const intermediate = funcA.apply(null, args)
47
- const resolver = _funcCallResolver(funcB)
48
- return isPromise(intermediate)
49
- ? intermediate.then(resolver)
50
- : funcB.call(null, intermediate)
51
- }
52
-
53
- const funcConcat30 = (funcA, funcB) => function pipedFunction(...args) {
54
- const intermediate = funcA.apply(null, args)
55
- return isPromise(intermediate)
56
- ? intermediate.then(funcB)
57
- : funcB.call(null, intermediate)
58
- }
59
-
60
- const funcConcat31 = (funcA, funcB) => function pipedFunction(...args) {
61
- const intermediate = funcA(...args)
62
- return isPromise(intermediate)
63
- ? intermediate.then(funcB)
64
- : funcB(intermediate)
65
- }
66
-
67
- {
68
- const funcA = number => number + 1
69
-
70
- const funcB = number => number + 2
71
-
72
- const asyncFuncA = async number => number + 1
73
-
74
- const asyncFuncB = async number => number + 2
75
-
76
- // console.log(funcConcat1(funcA, funcB)(2))
77
- // console.log(funcConcat2(funcA, funcB)(2))
78
- // console.log(funcConcat20(funcA, funcB)(2))
79
- // console.log(funcConcat30(funcA, funcB)(2))
80
- // console.log(funcConcat31(funcA, funcB)(2))
81
- // funcConcat1(asyncFuncA, asyncFuncB)(2).then(console.log)
82
- // funcConcat2(asyncFuncA, asyncFuncB)(2).then(console.log)
83
- // funcConcat20(asyncFuncA, asyncFuncB)(2).then(console.log)
84
- // funcConcat30(asyncFuncA, asyncFuncB)(2).then(console.log)
85
- // funcConcat31(asyncFuncA, asyncFuncB)(2).then(console.log)
86
-
87
- // timeInLoop('funcConcat1', 1e6, () => funcConcat1(funcA, funcB)(2))
88
-
89
- // timeInLoop('funcConcat2', 1e6, () => funcConcat2(funcA, funcB)(2))
90
-
91
- // timeInLoop('funcConcat20', 1e6, () => funcConcat20(funcA, funcB)(2))
92
-
93
- // timeInLoop('funcConcat30', 1e6, () => funcConcat30(funcA, funcB)(2))
94
-
95
- // timeInLoop('funcConcat31', 1e6, () => funcConcat31(funcA, funcB)(2))
96
-
97
- // timeInLoop.async('funcConcat1 - async', 1e6, () => funcConcat1(asyncFuncA, asyncFuncB)(2))
98
-
99
- // timeInLoop.async('funcConcat2 - async', 1e6, () => funcConcat2(asyncFuncA, asyncFuncB)(2))
100
-
101
- // timeInLoop.async('funcConcat20 - async', 1e6, () => funcConcat20(asyncFuncA, asyncFuncB)(2))
102
-
103
- // timeInLoop.async('funcConcat30 - async', 1e6, () => funcConcat30(asyncFuncA, asyncFuncB)(2))
104
-
105
- // timeInLoop.async('funcConcat31 - async', 1e6, () => funcConcat31(asyncFuncA, asyncFuncB)(2))
106
- }
107
-
108
- const funcConcatSync = (
109
- funcA, funcB,
110
- ) => function pipedFunction(...args) {
111
- return funcB(funcA(...args))
112
- }
113
-
114
- const pipeSync = funcs => funcs.reduce(funcConcatSync)
115
-
116
- /**
117
- * @name pipe
118
- *
119
- * @benchmark
120
- * rubico.pipe: 1e+6: 249.955ms
121
- * rubico.pipe.sync: 1e+6: 94.613ms
122
- * _.pipe: 1e+6: 463.235ms
123
- * R.pipe: 1e+6: 1.034s
124
- */
125
-
126
-
127
- const funcs = [
128
- number => number + 1,
129
- number => number + 2,
130
- number => number + 3,
131
- ]
132
-
133
- const rubicoPipeline = pipe(funcs)
134
-
135
- const pipeSyncPipeline = pipeSync(funcs)
136
-
137
- const lodashPipeline = _.pipe(funcs)
138
-
139
- const ramdaPipeline = R.pipe(...funcs)
140
-
141
- // console.log('rubicoPipeline(2)', pipe(funcs)(2))
142
- // console.log('pipeSyncPipeline(2)', pipe.sync(funcs)(2))
143
- // console.log('lodashPipeline(2)', _.pipe(funcs)(2))
144
- // console.log('ramdaPipeline(2)', R.pipe(...funcs)(2))
145
-
146
- // timeInLoop('rubico.pipe', 1e6, () => pipe(funcs)(2))
147
-
148
- // timeInLoop('rubico.pipe.sync', 1e6, () => pipe.sync(funcs)(2))
149
-
150
- // timeInLoop('_.pipe', 1e6, () => _.pipe(funcs)(2))
151
-
152
- // timeInLoop('R.pipe', 1e6, () => R.pipe(funcs[0], funcs[1], funcs[2])(2))
3
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
4
+ const pipe = require('../pipe')
5
+
6
+ const lodashFpPipe = _fp.pipe
7
+ const ramdaPipe = R.pipe
8
+ const suite = new TimeInLoopSuite()
9
+
10
+ suite.add('rubico pipe', () => {
11
+ pipe(1, [
12
+ number => number + 1,
13
+ number => number + 2,
14
+ number => number + 3,
15
+ ])
16
+ })
17
+
18
+ suite.add('rubico pipe tacit', () => {
19
+ pipe([
20
+ number => number + 1,
21
+ number => number + 2,
22
+ number => number + 3,
23
+ ])(1)
24
+ })
25
+
26
+ suite.add('ramda pipe', () => {
27
+ ramdaPipe(
28
+ number => number + 1,
29
+ number => number + 2,
30
+ number => number + 3,
31
+ )(1)
32
+ })
33
+
34
+ suite.add('lodash/fp pipe', () => {
35
+ lodashFpPipe([
36
+ number => number + 1,
37
+ number => number + 2,
38
+ number => number + 3,
39
+ ])(1)
40
+ })
41
+
42
+ if (process.argv[1] == __filename) {
43
+ suite.on('caseBestRun', run => console.log(run.output))
44
+ suite.run()
45
+ }
46
+
47
+ module.exports = suite
@@ -0,0 +1,32 @@
1
+ const Bluebird = require('bluebird')
2
+ const async = require('async')
3
+ const TimeInLoopSuite = require('../_internal/TimeInLoopSuite')
4
+ const reduce = require('../reduce')
5
+
6
+ const bluebirdReduce = Bluebird.reduce
7
+ const asyncReduce = async.reduce
8
+
9
+ const suite = new TimeInLoopSuite({ async: true, loopCount: 1e5 })
10
+
11
+ suite.add('rubico reduce', async () => {
12
+ await reduce([1, 2, 3, 4, 5], async (a, b) => a + b, 0)
13
+ })
14
+
15
+ suite.add('rubico reduce tacit', async () => {
16
+ await reduce(async (a, b) => a + b, 0)([1, 2, 3, 4, 5])
17
+ })
18
+
19
+ suite.add('async reduce', async () => {
20
+ await asyncReduce([1, 2, 3, 4, 5], 0, async (a, b) => a + b)
21
+ })
22
+
23
+ suite.add('Bluebird reduce', async () => {
24
+ await bluebirdReduce([1, 2, 3, 4, 5], async (a, b) => a + b, 0)
25
+ })
26
+
27
+ if (process.argv[1] == __filename) {
28
+ suite.on('caseBestRun', run => console.log(run.output))
29
+ suite.run()
30
+ }
31
+
32
+ module.exports = suite