rubico 1.9.6 → 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 (589) 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 +162 -0
  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 +105 -45
  53. package/always.js +3 -9
  54. package/and.js +69 -45
  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 +45 -22
  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/{distributor.js → build} +50 -50
  136. package/compose.js +46 -0
  137. package/curry.js +20 -12
  138. package/dist/__.es.js +2 -2
  139. package/dist/__.es.min.js +2 -2
  140. package/dist/__.js +2 -2
  141. package/dist/__.min.js +2 -2
  142. package/dist/__.min.mjs +2 -2
  143. package/dist/__.mjs +2 -2
  144. package/dist/all.es.js +173 -92
  145. package/dist/all.es.min.js +3 -3
  146. package/dist/all.js +173 -92
  147. package/dist/all.min.js +3 -3
  148. package/dist/all.min.mjs +3 -3
  149. package/dist/all.mjs +173 -92
  150. package/dist/always.es.js +2 -2
  151. package/dist/always.es.min.js +2 -2
  152. package/dist/always.js +2 -2
  153. package/dist/always.min.js +2 -2
  154. package/dist/always.min.mjs +2 -2
  155. package/dist/always.mjs +2 -2
  156. package/dist/and.es.js +101 -32
  157. package/dist/and.es.min.js +3 -3
  158. package/dist/and.js +101 -32
  159. package/dist/and.min.js +3 -3
  160. package/dist/and.min.mjs +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.min.mjs +3 -3
  167. package/dist/assign.mjs +37 -10
  168. package/dist/compose.es.js +71 -0
  169. package/dist/compose.es.min.js +7 -0
  170. package/dist/compose.js +78 -0
  171. package/dist/compose.min.js +8 -0
  172. package/dist/compose.min.mjs +7 -0
  173. package/dist/compose.mjs +71 -0
  174. package/dist/curry.es.js +2 -2
  175. package/dist/curry.es.min.js +2 -2
  176. package/dist/curry.js +2 -2
  177. package/dist/curry.min.js +2 -2
  178. package/dist/curry.min.mjs +2 -2
  179. package/dist/curry.mjs +2 -2
  180. package/dist/eq.es.js +172 -49
  181. package/dist/eq.es.min.js +3 -3
  182. package/dist/eq.js +172 -49
  183. package/dist/eq.min.js +3 -3
  184. package/dist/eq.min.mjs +3 -3
  185. package/dist/eq.mjs +172 -49
  186. package/dist/every.es.js +194 -0
  187. package/dist/every.es.min.js +7 -0
  188. package/dist/every.js +201 -0
  189. package/dist/every.min.js +8 -0
  190. package/dist/every.min.mjs +7 -0
  191. package/dist/every.mjs +194 -0
  192. package/dist/filter.es.js +14 -108
  193. package/dist/filter.es.min.js +3 -3
  194. package/dist/filter.js +14 -108
  195. package/dist/filter.min.js +3 -3
  196. package/dist/filter.min.mjs +3 -3
  197. package/dist/filter.mjs +14 -108
  198. package/dist/flatMap.es.js +27 -214
  199. package/dist/flatMap.es.min.js +3 -3
  200. package/dist/flatMap.js +27 -214
  201. package/dist/flatMap.min.js +3 -3
  202. package/dist/flatMap.min.mjs +3 -3
  203. package/dist/flatMap.mjs +27 -214
  204. package/dist/{x/forEach.es.js → forEach.es.js} +52 -70
  205. package/dist/forEach.es.min.js +7 -0
  206. package/dist/{x/forEach.js → forEach.js} +52 -70
  207. package/dist/forEach.min.js +8 -0
  208. package/dist/forEach.min.mjs +7 -0
  209. package/dist/{x/forEach.mjs → forEach.mjs} +52 -70
  210. package/dist/get.es.js +60 -5
  211. package/dist/get.es.min.js +3 -3
  212. package/dist/get.js +60 -5
  213. package/dist/get.min.js +3 -3
  214. package/dist/get.min.mjs +3 -3
  215. package/dist/get.mjs +60 -5
  216. package/dist/gt.es.js +171 -48
  217. package/dist/gt.es.min.js +3 -3
  218. package/dist/gt.js +171 -48
  219. package/dist/gt.min.js +3 -3
  220. package/dist/gt.min.mjs +3 -3
  221. package/dist/gt.mjs +171 -48
  222. package/dist/gte.es.js +171 -48
  223. package/dist/gte.es.min.js +3 -3
  224. package/dist/gte.js +171 -48
  225. package/dist/gte.min.js +3 -3
  226. package/dist/gte.min.mjs +3 -3
  227. package/dist/gte.mjs +171 -48
  228. package/dist/lt.es.js +171 -48
  229. package/dist/lt.es.min.js +3 -3
  230. package/dist/lt.js +171 -48
  231. package/dist/lt.min.js +3 -3
  232. package/dist/lt.min.mjs +3 -3
  233. package/dist/lt.mjs +171 -48
  234. package/dist/lte.es.js +171 -48
  235. package/dist/lte.es.min.js +3 -3
  236. package/dist/lte.js +171 -48
  237. package/dist/lte.min.js +3 -3
  238. package/dist/lte.min.mjs +3 -3
  239. package/dist/lte.mjs +171 -48
  240. package/dist/map.es.js +12 -101
  241. package/dist/map.es.min.js +3 -3
  242. package/dist/map.js +12 -101
  243. package/dist/map.min.js +3 -3
  244. package/dist/map.min.mjs +3 -3
  245. package/dist/map.mjs +12 -101
  246. package/dist/not.es.js +75 -14
  247. package/dist/not.es.min.js +3 -3
  248. package/dist/not.js +75 -14
  249. package/dist/not.min.js +3 -3
  250. package/dist/not.min.mjs +3 -3
  251. package/dist/not.mjs +75 -14
  252. package/dist/omit.es.js +38 -3
  253. package/dist/omit.es.min.js +3 -3
  254. package/dist/omit.js +38 -3
  255. package/dist/omit.min.js +3 -3
  256. package/dist/omit.min.mjs +3 -3
  257. package/dist/omit.mjs +38 -3
  258. package/dist/or.es.js +99 -31
  259. package/dist/or.es.min.js +3 -3
  260. package/dist/or.js +99 -31
  261. package/dist/or.min.js +3 -3
  262. package/dist/or.min.mjs +3 -3
  263. package/dist/or.mjs +99 -31
  264. package/dist/pick.es.js +38 -3
  265. package/dist/pick.es.min.js +3 -3
  266. package/dist/pick.js +38 -3
  267. package/dist/pick.min.js +3 -3
  268. package/dist/pick.min.mjs +3 -3
  269. package/dist/pick.mjs +38 -3
  270. package/dist/pipe.es.js +42 -46
  271. package/dist/pipe.es.min.js +3 -3
  272. package/dist/pipe.js +42 -46
  273. package/dist/pipe.min.js +3 -3
  274. package/dist/pipe.min.mjs +3 -3
  275. package/dist/pipe.mjs +42 -46
  276. package/dist/reduce.es.js +52 -94
  277. package/dist/reduce.es.min.js +3 -3
  278. package/dist/reduce.js +52 -94
  279. package/dist/reduce.min.js +3 -3
  280. package/dist/reduce.min.mjs +3 -3
  281. package/dist/reduce.mjs +52 -94
  282. package/dist/rubico.es.js +746 -869
  283. package/dist/rubico.es.min.js +3 -3
  284. package/dist/rubico.js +746 -869
  285. package/dist/rubico.min.js +3 -3
  286. package/dist/rubico.min.mjs +3 -3
  287. package/dist/rubico.mjs +746 -869
  288. package/dist/set.es.js +18 -3
  289. package/dist/set.es.min.js +3 -3
  290. package/dist/set.js +18 -3
  291. package/dist/set.min.js +3 -3
  292. package/dist/set.min.mjs +3 -3
  293. package/dist/set.mjs +18 -3
  294. package/dist/{any.js → some.es.js} +64 -54
  295. package/dist/some.es.min.js +7 -0
  296. package/dist/{any.mjs → some.js} +72 -48
  297. package/dist/some.min.js +8 -0
  298. package/dist/some.min.mjs +7 -0
  299. package/dist/{any.es.js → some.mjs} +65 -48
  300. package/dist/switchCase.es.js +55 -5
  301. package/dist/switchCase.es.min.js +3 -3
  302. package/dist/switchCase.js +55 -5
  303. package/dist/switchCase.min.js +3 -3
  304. package/dist/switchCase.min.mjs +3 -3
  305. package/dist/switchCase.mjs +55 -5
  306. package/dist/tap.es.js +2 -9
  307. package/dist/tap.es.min.js +3 -3
  308. package/dist/tap.js +2 -9
  309. package/dist/tap.min.js +3 -3
  310. package/dist/tap.min.mjs +3 -3
  311. package/dist/tap.mjs +2 -9
  312. package/dist/thunkify.es.js +45 -2
  313. package/dist/thunkify.es.min.js +3 -3
  314. package/dist/thunkify.js +45 -2
  315. package/dist/thunkify.min.js +3 -3
  316. package/dist/thunkify.min.mjs +3 -3
  317. package/dist/thunkify.mjs +45 -2
  318. package/dist/transform.es.js +35 -71
  319. package/dist/transform.es.min.js +3 -3
  320. package/dist/transform.js +35 -71
  321. package/dist/transform.min.js +3 -3
  322. package/dist/transform.min.mjs +3 -3
  323. package/dist/transform.mjs +35 -71
  324. package/dist/tryCatch.es.js +33 -17
  325. package/dist/tryCatch.es.min.js +3 -3
  326. package/dist/tryCatch.js +33 -17
  327. package/dist/tryCatch.min.js +3 -3
  328. package/dist/tryCatch.min.mjs +3 -3
  329. package/dist/tryCatch.mjs +33 -17
  330. package/dist/x/append.es.js +2 -2
  331. package/dist/x/append.es.min.js +2 -2
  332. package/dist/x/append.js +2 -2
  333. package/dist/x/append.min.js +2 -2
  334. package/dist/x/append.min.mjs +2 -2
  335. package/dist/x/append.mjs +2 -2
  336. package/dist/x/callProp.es.js +2 -2
  337. package/dist/x/callProp.es.min.js +2 -2
  338. package/dist/x/callProp.js +2 -2
  339. package/dist/x/callProp.min.js +2 -2
  340. package/dist/x/callProp.min.mjs +2 -2
  341. package/dist/x/callProp.mjs +2 -2
  342. package/dist/x/defaultsDeep.es.js +2 -2
  343. package/dist/x/defaultsDeep.es.min.js +2 -2
  344. package/dist/x/defaultsDeep.js +2 -2
  345. package/dist/x/defaultsDeep.min.js +2 -2
  346. package/dist/x/defaultsDeep.min.mjs +2 -2
  347. package/dist/x/defaultsDeep.mjs +2 -2
  348. package/dist/x/differenceWith.es.js +7 -7
  349. package/dist/x/differenceWith.es.min.js +3 -3
  350. package/dist/x/differenceWith.js +7 -7
  351. package/dist/x/differenceWith.min.js +2 -2
  352. package/dist/x/differenceWith.min.mjs +3 -3
  353. package/dist/x/differenceWith.mjs +7 -7
  354. package/dist/x/filterOut.es.js +60 -117
  355. package/dist/x/filterOut.es.min.js +3 -3
  356. package/dist/x/filterOut.js +60 -117
  357. package/dist/x/filterOut.min.js +3 -3
  358. package/dist/x/filterOut.min.mjs +3 -3
  359. package/dist/x/filterOut.mjs +60 -117
  360. package/dist/x/find.es.js +2 -2
  361. package/dist/x/find.es.min.js +2 -2
  362. package/dist/x/find.js +2 -2
  363. package/dist/x/find.min.js +2 -2
  364. package/dist/x/find.min.mjs +2 -2
  365. package/dist/x/find.mjs +2 -2
  366. package/dist/x/findIndex.es.js +2 -2
  367. package/dist/x/findIndex.es.min.js +2 -2
  368. package/dist/x/findIndex.js +2 -2
  369. package/dist/x/findIndex.min.js +2 -2
  370. package/dist/x/findIndex.min.mjs +2 -2
  371. package/dist/x/findIndex.mjs +2 -2
  372. package/dist/x/first.es.js +2 -2
  373. package/dist/x/first.es.min.js +2 -2
  374. package/dist/x/first.js +2 -2
  375. package/dist/x/first.min.js +2 -2
  376. package/dist/x/first.min.mjs +2 -2
  377. package/dist/x/first.mjs +2 -2
  378. package/dist/x/flatten.es.js +20 -207
  379. package/dist/x/flatten.es.min.js +3 -3
  380. package/dist/x/flatten.js +20 -207
  381. package/dist/x/flatten.min.js +3 -3
  382. package/dist/x/flatten.min.mjs +3 -3
  383. package/dist/x/flatten.mjs +20 -207
  384. package/dist/x/groupBy.es.js +52 -94
  385. package/dist/x/groupBy.es.min.js +3 -3
  386. package/dist/x/groupBy.js +52 -94
  387. package/dist/x/groupBy.min.js +3 -3
  388. package/dist/x/groupBy.min.mjs +3 -3
  389. package/dist/x/groupBy.mjs +52 -94
  390. package/dist/x/has.es.js +2 -2
  391. package/dist/x/has.es.min.js +2 -2
  392. package/dist/x/has.js +2 -2
  393. package/dist/x/has.min.js +2 -2
  394. package/dist/x/has.min.mjs +2 -2
  395. package/dist/x/has.mjs +2 -2
  396. package/dist/x/identity.es.js +2 -2
  397. package/dist/x/identity.es.min.js +2 -2
  398. package/dist/x/identity.js +2 -2
  399. package/dist/x/identity.min.js +2 -2
  400. package/dist/x/identity.min.mjs +2 -2
  401. package/dist/x/identity.mjs +2 -2
  402. package/dist/x/includes.es.js +2 -2
  403. package/dist/x/includes.es.min.js +2 -2
  404. package/dist/x/includes.js +2 -2
  405. package/dist/x/includes.min.js +2 -2
  406. package/dist/x/includes.min.mjs +2 -2
  407. package/dist/x/includes.mjs +2 -2
  408. package/dist/x/isDeepEqual.es.js +2 -2
  409. package/dist/x/isDeepEqual.es.min.js +2 -2
  410. package/dist/x/isDeepEqual.js +2 -2
  411. package/dist/x/isDeepEqual.min.js +2 -2
  412. package/dist/x/isDeepEqual.min.mjs +2 -2
  413. package/dist/x/isDeepEqual.mjs +2 -2
  414. package/dist/x/isEmpty.es.js +2 -2
  415. package/dist/x/isEmpty.es.min.js +2 -2
  416. package/dist/x/isEmpty.js +2 -2
  417. package/dist/x/isEmpty.min.js +2 -2
  418. package/dist/x/isEmpty.min.mjs +2 -2
  419. package/dist/x/isEmpty.mjs +2 -2
  420. package/dist/x/isEqual.es.js +2 -2
  421. package/dist/x/isEqual.es.min.js +2 -2
  422. package/dist/x/isEqual.js +2 -2
  423. package/dist/x/isEqual.min.js +2 -2
  424. package/dist/x/isEqual.min.mjs +2 -2
  425. package/dist/x/isEqual.mjs +2 -2
  426. package/dist/x/isFunction.es.js +2 -2
  427. package/dist/x/isFunction.es.min.js +2 -2
  428. package/dist/x/isFunction.js +2 -2
  429. package/dist/x/isFunction.min.js +2 -2
  430. package/dist/x/isFunction.min.mjs +2 -2
  431. package/dist/x/isFunction.mjs +2 -2
  432. package/dist/x/isIn.es.js +2 -2
  433. package/dist/x/isIn.es.min.js +2 -2
  434. package/dist/x/isIn.js +2 -2
  435. package/dist/x/isIn.min.js +2 -2
  436. package/dist/x/isIn.min.mjs +2 -2
  437. package/dist/x/isIn.mjs +2 -2
  438. package/dist/x/isObject.es.js +2 -2
  439. package/dist/x/isObject.es.min.js +2 -2
  440. package/dist/x/isObject.js +2 -2
  441. package/dist/x/isObject.min.js +2 -2
  442. package/dist/x/isObject.min.mjs +2 -2
  443. package/dist/x/isObject.mjs +2 -2
  444. package/dist/x/isString.es.js +2 -2
  445. package/dist/x/isString.es.min.js +2 -2
  446. package/dist/x/isString.js +2 -2
  447. package/dist/x/isString.min.js +2 -2
  448. package/dist/x/isString.min.mjs +2 -2
  449. package/dist/x/isString.mjs +2 -2
  450. package/dist/x/keys.es.js +2 -2
  451. package/dist/x/keys.es.min.js +2 -2
  452. package/dist/x/keys.js +2 -2
  453. package/dist/x/keys.min.js +2 -2
  454. package/dist/x/keys.min.mjs +2 -2
  455. package/dist/x/keys.mjs +2 -2
  456. package/dist/x/last.es.js +2 -2
  457. package/dist/x/last.es.min.js +2 -2
  458. package/dist/x/last.js +2 -2
  459. package/dist/x/last.min.js +2 -2
  460. package/dist/x/last.min.mjs +2 -2
  461. package/dist/x/last.mjs +2 -2
  462. package/dist/x/maxBy.es.js +59 -6
  463. package/dist/x/maxBy.es.min.js +3 -3
  464. package/dist/x/maxBy.js +59 -6
  465. package/dist/x/maxBy.min.js +3 -3
  466. package/dist/x/maxBy.min.mjs +3 -3
  467. package/dist/x/maxBy.mjs +59 -6
  468. package/dist/x/noop.es.js +2 -2
  469. package/dist/x/noop.es.min.js +2 -2
  470. package/dist/x/noop.js +2 -2
  471. package/dist/x/noop.min.js +2 -2
  472. package/dist/x/noop.min.mjs +2 -2
  473. package/dist/x/noop.mjs +2 -2
  474. package/dist/x/pluck.es.js +32 -103
  475. package/dist/x/pluck.es.min.js +3 -3
  476. package/dist/x/pluck.js +32 -103
  477. package/dist/x/pluck.min.js +3 -3
  478. package/dist/x/pluck.min.mjs +3 -3
  479. package/dist/x/pluck.mjs +32 -103
  480. package/dist/x/prepend.es.js +2 -2
  481. package/dist/x/prepend.es.min.js +2 -2
  482. package/dist/x/prepend.js +2 -2
  483. package/dist/x/prepend.min.js +2 -2
  484. package/dist/x/prepend.min.mjs +2 -2
  485. package/dist/x/prepend.mjs +2 -2
  486. package/dist/x/size.es.js +2 -2
  487. package/dist/x/size.es.min.js +2 -2
  488. package/dist/x/size.js +2 -2
  489. package/dist/x/size.min.js +2 -2
  490. package/dist/x/size.min.mjs +2 -2
  491. package/dist/x/size.mjs +2 -2
  492. package/dist/x/trace.es.js +2 -9
  493. package/dist/x/trace.es.min.js +3 -3
  494. package/dist/x/trace.js +2 -9
  495. package/dist/x/trace.min.js +3 -3
  496. package/dist/x/trace.min.mjs +3 -3
  497. package/dist/x/trace.mjs +2 -9
  498. package/dist/x/unionWith.es.js +2 -2
  499. package/dist/x/unionWith.es.min.js +2 -2
  500. package/dist/x/unionWith.js +2 -2
  501. package/dist/x/unionWith.min.js +2 -2
  502. package/dist/x/unionWith.min.mjs +2 -2
  503. package/dist/x/unionWith.mjs +2 -2
  504. package/dist/x/uniq.es.js +2 -2
  505. package/dist/x/uniq.es.min.js +2 -2
  506. package/dist/x/uniq.js +2 -2
  507. package/dist/x/uniq.min.js +2 -2
  508. package/dist/x/uniq.min.mjs +2 -2
  509. package/dist/x/uniq.mjs +2 -2
  510. package/dist/x/unless.es.js +2 -2
  511. package/dist/x/unless.es.min.js +2 -2
  512. package/dist/x/unless.js +2 -2
  513. package/dist/x/unless.min.js +2 -2
  514. package/dist/x/unless.min.mjs +2 -2
  515. package/dist/x/unless.mjs +2 -2
  516. package/dist/x/values.es.js +2 -2
  517. package/dist/x/values.es.min.js +2 -2
  518. package/dist/x/values.js +2 -2
  519. package/dist/x/values.min.js +2 -2
  520. package/dist/x/values.min.mjs +2 -2
  521. package/dist/x/values.mjs +2 -2
  522. package/dist/x/when.es.js +2 -2
  523. package/dist/x/when.es.min.js +2 -2
  524. package/dist/x/when.js +2 -2
  525. package/dist/x/when.min.js +2 -2
  526. package/dist/x/when.min.mjs +2 -2
  527. package/dist/x/when.mjs +2 -2
  528. package/dist-test.js +9 -2025
  529. package/eq.js +21 -63
  530. package/es.js +746 -869
  531. package/every.js +94 -0
  532. package/filter.js +83 -125
  533. package/flatMap.js +105 -154
  534. package/forEach.js +82 -0
  535. package/get.js +44 -36
  536. package/global.js +6 -4
  537. package/gt.js +15 -58
  538. package/gte.js +14 -57
  539. package/index.js +746 -869
  540. package/lt.js +17 -60
  541. package/lte.js +14 -57
  542. package/map.js +153 -203
  543. package/memory-usage/reduce.js +2 -2
  544. package/not.js +30 -49
  545. package/omit.js +36 -13
  546. package/or.js +64 -41
  547. package/package.json +7 -7
  548. package/pick.js +52 -22
  549. package/pipe.js +27 -92
  550. package/reduce.js +114 -129
  551. package/rubico.js +10 -8
  552. package/set.js +60 -24
  553. package/some.js +105 -0
  554. package/switchCase.js +29 -25
  555. package/tap.js +15 -45
  556. package/test.js +847 -1083
  557. package/thunkify.js +11 -5
  558. package/transform.js +57 -81
  559. package/tryCatch.js +38 -32
  560. package/x/differenceWith.js +3 -3
  561. package/x/filterOut.test.js +6 -6
  562. package/x/flatten.js +1 -1
  563. package/x/flatten.test.js +0 -8
  564. package/x/index.js +0 -2
  565. package/x/pluck.js +18 -27
  566. package/x/pluck.test.js +3 -7
  567. package/x/timeInLoop.js +16 -25
  568. package/x/timeInLoop.test.js +8 -4
  569. package/any.js +0 -88
  570. package/dist/any.es.min.js +0 -7
  571. package/dist/any.min.js +0 -8
  572. package/dist/any.min.mjs +0 -7
  573. package/dist/fork.es.js +0 -159
  574. package/dist/fork.es.min.js +0 -7
  575. package/dist/fork.js +0 -166
  576. package/dist/fork.min.js +0 -8
  577. package/dist/fork.min.mjs +0 -7
  578. package/dist/fork.mjs +0 -159
  579. package/dist/x/forEach.es.min.js +0 -7
  580. package/dist/x/forEach.min.js +0 -8
  581. package/dist/x/forEach.min.mjs +0 -7
  582. package/fork.js +0 -91
  583. package/x/forEach.js +0 -93
  584. package/x/forEach.test.js +0 -218
  585. /package/{benchmarks → archive/benchmarks-v1.9.7}/any.js +0 -0
  586. /package/{x/forEach.benchmark.js → archive/benchmarks-v1.9.7/forEach.js} +0 -0
  587. /package/{benchmarks → archive/benchmarks-v1.9.7}/fork.js +0 -0
  588. /package/{benchmarks → archive/benchmarks-v1.9.7}/integration.js +0 -0
  589. /package/{benchmarks → archive/benchmarks-v1.9.7}/misc.js +0 -0
@@ -1,7 +1,7 @@
1
1
  /**
2
- * rubico v1.9.6
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(t,e){const r=new Map,n=function(n){if(r.has(n))return r.get(n);const i=t(n);return r.set(n,i),r.size>e&&r.clear(),i};return n.cache=r,n},pathDelimiters=/[.|[|\]]+/,parsePropertyPath=function(t){const e=t.length-1,r="["==t[0],n="]"==t[e];return r&&n?t.slice(1,e).split(pathDelimiters):r?t.slice(1).split(pathDelimiters):n?t.slice(0,e).split(pathDelimiters):t.split(pathDelimiters)},memoizedCappedParsePropertyPath=memoizeCappedUnary(parsePropertyPath,500),propertyPathToArray=t=>isArray(t)?t:"string"==typeof t?memoizedCappedParsePropertyPath(t):[t],getByPath=function(t,e){const r=propertyPathToArray(e),n=r.length;let i=-1,s=t;for(;++i<n;)if(s=s[r[i]],null==s)return;return s},isObject=t=>{if(null==t)return!1;const e=typeof t;return"object"==e||"function"==e},setByPath=function(t,e,r){if(!isObject(t))return t;const n=propertyPathToArray(r),i=n.length,s=i-1,a={...t};let o=a,p=-1;for(;++p<i;){const t=n[p];if(p==s)o[t]=e;else{const e=o[t],r=isArray(e)?e.slice():{...e};o[t]=r,o=r}}return a},pick=t=>function(e){if(null==e)return e;const r=t.length;let n={},i=-1;for(;++i<r;){const r=t[i],s=getByPath(e,r);null!=s&&(n=setByPath(n,s,r))}return n};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.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * rubico v1.9.6
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) {
@@ -105,7 +107,30 @@ const setByPath = function (obj, value, path) {
105
107
  return result
106
108
  }
107
109
 
108
- const pick = keys => function picking(source) {
110
+ const __ = Symbol.for('placeholder')
111
+
112
+ // argument resolver for curry2
113
+ const curry2ResolveArg0 = (
114
+ baseFunc, arg1,
115
+ ) => function arg0Resolver(arg0) {
116
+ return baseFunc(arg0, arg1)
117
+ }
118
+
119
+ // argument resolver for curry2
120
+ const curry2ResolveArg1 = (
121
+ baseFunc, arg0,
122
+ ) => function arg1Resolver(arg1) {
123
+ return baseFunc(arg0, arg1)
124
+ }
125
+
126
+ const curry2 = function (baseFunc, arg0, arg1) {
127
+ return arg0 == __
128
+ ? curry2ResolveArg0(baseFunc, arg1)
129
+ : curry2ResolveArg1(baseFunc, arg0)
130
+ }
131
+
132
+ // _pick(source Object, keys Array<string>) -> result Object
133
+ const _pick = function (source, keys) {
109
134
  if (source == null) {
110
135
  return source
111
136
  }
@@ -122,5 +147,15 @@ const pick = keys => function picking(source) {
122
147
  return result
123
148
  }
124
149
 
150
+ const pick = function (arg0, arg1) {
151
+ if (arg1 == null) {
152
+ return curry2(_pick, __, arg0)
153
+ }
154
+ if (isPromise(arg0)) {
155
+ return arg0.then(curry2(_pick, __, arg1))
156
+ }
157
+ return _pick(arg0, arg1)
158
+ }
159
+
125
160
  return pick
126
161
  }())))
package/dist/pick.min.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
- * rubico v1.9.6
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.pick=n}("object"==typeof globalThis?globalThis:this,function(){"use strict";const t=Array.isArray,n=/[.|[|\]]+/,e=function(t,n){const e=new Map,o=function(o){if(e.has(o))return e.get(o);const r=t(o);return e.set(o,r),e.size>n&&e.clear(),r};return o.cache=e,o}((function(t){const e=t.length-1,o="["==t[0],r="]"==t[e];return o&&r?t.slice(1,e).split(n):o?t.slice(1).split(n):r?t.slice(0,e).split(n):t.split(n)}),500),o=n=>t(n)?n:"string"==typeof n?e(n):[n],r=function(t,n){const e=o(n),r=e.length;let i=-1,c=t;for(;++i<r;)if(c=c[e[i]],null==c)return;return c},i=function(n,e,r){if(!(t=>{if(null==t)return!1;const n=typeof t;return"object"==n||"function"==n})(n))return n;const i=o(r),c=i.length,l=c-1,s={...n};let u=s,f=-1;for(;++f<c;){const n=i[f];if(f==l)u[n]=e;else{const e=u[n],o=t(e)?e.slice():{...e};u[n]=o,u=o}}return s};return t=>function(n){if(null==n)return n;const e=t.length;let o={},c=-1;for(;++c<e;){const e=t[c],l=r(n,e);null!=l&&(o=i(o,l,e))}return o}}());
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.6
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(t,e){const r=new Map,n=function(n){if(r.has(n))return r.get(n);const i=t(n);return r.set(n,i),r.size>e&&r.clear(),i};return n.cache=r,n},pathDelimiters=/[.|[|\]]+/,parsePropertyPath=function(t){const e=t.length-1,r="["==t[0],n="]"==t[e];return r&&n?t.slice(1,e).split(pathDelimiters):r?t.slice(1).split(pathDelimiters):n?t.slice(0,e).split(pathDelimiters):t.split(pathDelimiters)},memoizedCappedParsePropertyPath=memoizeCappedUnary(parsePropertyPath,500),propertyPathToArray=t=>isArray(t)?t:"string"==typeof t?memoizedCappedParsePropertyPath(t):[t],getByPath=function(t,e){const r=propertyPathToArray(e),n=r.length;let i=-1,s=t;for(;++i<n;)if(s=s[r[i]],null==s)return;return s},isObject=t=>{if(null==t)return!1;const e=typeof t;return"object"==e||"function"==e},setByPath=function(t,e,r){if(!isObject(t))return t;const n=propertyPathToArray(r),i=n.length,s=i-1,a={...t};let o=a,p=-1;for(;++p<i;){const t=n[p];if(p==s)o[t]=e;else{const e=o[t],r=isArray(e)?e.slice():{...e};o[t]=r,o=r}}return a},pick=t=>function(e){if(null==e)return e;const r=t.length;let n={},i=-1;for(;++i<r;){const r=t[i],s=getByPath(e,r);null!=s&&(n=setByPath(n,s,r))}return n};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.6
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) {
@@ -99,7 +101,30 @@ const setByPath = function (obj, value, path) {
99
101
  return result
100
102
  }
101
103
 
102
- const pick = keys => function picking(source) {
104
+ const __ = Symbol.for('placeholder')
105
+
106
+ // argument resolver for curry2
107
+ const curry2ResolveArg0 = (
108
+ baseFunc, arg1,
109
+ ) => function arg0Resolver(arg0) {
110
+ return baseFunc(arg0, arg1)
111
+ }
112
+
113
+ // argument resolver for curry2
114
+ const curry2ResolveArg1 = (
115
+ baseFunc, arg0,
116
+ ) => function arg1Resolver(arg1) {
117
+ return baseFunc(arg0, arg1)
118
+ }
119
+
120
+ const curry2 = function (baseFunc, arg0, arg1) {
121
+ return arg0 == __
122
+ ? curry2ResolveArg0(baseFunc, arg1)
123
+ : curry2ResolveArg1(baseFunc, arg0)
124
+ }
125
+
126
+ // _pick(source Object, keys Array<string>) -> result Object
127
+ const _pick = function (source, keys) {
103
128
  if (source == null) {
104
129
  return source
105
130
  }
@@ -116,4 +141,14 @@ const pick = keys => function picking(source) {
116
141
  return result
117
142
  }
118
143
 
144
+ const pick = function (arg0, arg1) {
145
+ if (arg1 == null) {
146
+ return curry2(_pick, __, arg0)
147
+ }
148
+ if (isPromise(arg0)) {
149
+ return arg0.then(curry2(_pick, __, arg1))
150
+ }
151
+ return _pick(arg0, arg1)
152
+ }
153
+
119
154
  export default pick
package/dist/pipe.es.js CHANGED
@@ -1,14 +1,26 @@
1
1
  /**
2
- * rubico v1.9.6
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.6
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.6
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.6
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.6
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.6
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