rubico 1.9.7 → 2.0.0

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