rubico 1.9.7 → 2.0.1

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