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
package/dist/and.mjs CHANGED
@@ -1,14 +1,48 @@
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 promiseAll = Promise.all.bind(Promise)
9
+
8
10
  const isPromise = value => value != null && typeof value.then == 'function'
9
11
 
12
+ const areAnyValuesPromises = function (values) {
13
+ const length = values.length
14
+ let index = -1
15
+ while (++index < length) {
16
+ const value = values[index]
17
+ if (isPromise(value)) {
18
+ return true
19
+ }
20
+ }
21
+ return false
22
+ }
23
+
10
24
  const __ = Symbol.for('placeholder')
11
25
 
26
+ // argument resolver for curry2
27
+ const curry2ResolveArg0 = (
28
+ baseFunc, arg1,
29
+ ) => function arg0Resolver(arg0) {
30
+ return baseFunc(arg0, arg1)
31
+ }
32
+
33
+ // argument resolver for curry2
34
+ const curry2ResolveArg1 = (
35
+ baseFunc, arg0,
36
+ ) => function arg1Resolver(arg1) {
37
+ return baseFunc(arg0, arg1)
38
+ }
39
+
40
+ const curry2 = function (baseFunc, arg0, arg1) {
41
+ return arg0 == __
42
+ ? curry2ResolveArg0(baseFunc, arg1)
43
+ : curry2ResolveArg1(baseFunc, arg0)
44
+ }
45
+
12
46
  // argument resolver for curry3
13
47
  const curry3ResolveArg0 = (
14
48
  baseFunc, arg1, arg2,
@@ -40,6 +74,27 @@ const curry3 = function (baseFunc, arg0, arg1, arg2) {
40
74
  return curry3ResolveArg2(baseFunc, arg0, arg1)
41
75
  }
42
76
 
77
+ // argument resolver for curryArgs2
78
+ const curryArgs2ResolveArgs0 = (
79
+ baseFunc, arg1, arg2,
80
+ ) => function args0Resolver(...args) {
81
+ return baseFunc(args, arg1)
82
+ }
83
+
84
+ // argument resolver for curryArgs2
85
+ const curryArgs2ResolveArgs1 = (
86
+ baseFunc, arg0, arg2,
87
+ ) => function arg1Resolver(...args) {
88
+ return baseFunc(arg0, args)
89
+ }
90
+
91
+ const curryArgs2 = function (baseFunc, arg0, arg1) {
92
+ if (arg0 == __) {
93
+ return curryArgs2ResolveArgs0(baseFunc, arg1)
94
+ }
95
+ return curryArgs2ResolveArgs1(baseFunc, arg0)
96
+ }
97
+
43
98
  const thunkConditional = (
44
99
  conditionalExpression, thunkOnTruthy, thunkOnFalsy,
45
100
  ) => conditionalExpression ? thunkOnTruthy() : thunkOnFalsy()
@@ -65,15 +120,15 @@ const thunkify3 = (func, arg0, arg1, arg2) => function thunk() {
65
120
 
66
121
  const always = value => function getter() { return value }
67
122
 
68
- const areAllNonfunctionsTruthy = function (predicates, index) {
123
+ const areAllValuesTruthy = function (predicates, index) {
69
124
  const length = predicates.length
70
125
  while (++index < length) {
71
- let predicate = predicates[index]
126
+ const predicate = predicates[index]
72
127
  if (isPromise(predicate)) {
73
128
  return predicate.then(curry3(
74
129
  thunkConditional,
75
130
  __,
76
- thunkify2(areAllNonfunctionsTruthy, predicates, index),
131
+ thunkify2(areAllValuesTruthy, predicates, index),
77
132
  always(false),
78
133
  ))
79
134
  }
@@ -84,12 +139,12 @@ const areAllNonfunctionsTruthy = function (predicates, index) {
84
139
  return true
85
140
  }
86
141
 
87
- const asyncArePredicatesAllTruthy = async function (predicates, point, index) {
142
+ const asyncArePredicatesAllTruthy = async function (args, predicates, index) {
88
143
  const length = predicates.length
89
144
  while (++index < length) {
90
145
  let predicate = predicates[index]
91
146
  if (typeof predicate == 'function') {
92
- predicate = predicate(point)
147
+ predicate = predicate(...args)
93
148
  }
94
149
  if (isPromise(predicate)) {
95
150
  predicate = await predicate
@@ -101,33 +156,47 @@ const asyncArePredicatesAllTruthy = async function (predicates, point, index) {
101
156
  return true
102
157
  }
103
158
 
104
- const and = predicates => {
105
- if (areAllValuesNonfunctions(predicates)) {
106
- return areAllNonfunctionsTruthy(predicates, -1)
107
- }
108
- return function arePredicatesAllTruthy(point) {
109
- const length = predicates.length
110
- let index = -1
111
-
112
- while (++index < length) {
113
- let predicate = predicates[index]
114
- if (typeof predicate == 'function') {
115
- predicate = predicate(point)
116
- }
117
- if (isPromise(predicate)) {
118
- return predicate.then(curry3(
119
- thunkConditional,
120
- __,
121
- thunkify3(asyncArePredicatesAllTruthy, predicates, point, index),
122
- always(false),
123
- ))
124
- }
125
- if (!predicate) {
126
- return false
127
- }
159
+ // areAllPredicatesTruthy(args Array, predicates Array<function>) -> Promise|boolean
160
+ const areAllPredicatesTruthy = function (args, predicates) {
161
+ const length = predicates.length
162
+ let index = -1
163
+
164
+ while (++index < length) {
165
+ let predicate = predicates[index]
166
+ if (typeof predicate == 'function') {
167
+ predicate = predicate(...args)
168
+ }
169
+ if (isPromise(predicate)) {
170
+ return predicate.then(curry3(
171
+ thunkConditional,
172
+ __,
173
+ thunkify3(asyncArePredicatesAllTruthy, args, predicates, index),
174
+ always(false),
175
+ ))
176
+ }
177
+ if (!predicate) {
178
+ return false
128
179
  }
129
- return true
130
180
  }
181
+ return true
182
+ }
183
+
184
+ const and = function (...args) {
185
+ const predicatesOrValues = args.pop()
186
+ if (areAllValuesNonfunctions(predicatesOrValues)) {
187
+ return areAllValuesTruthy(predicatesOrValues, -1)
188
+ }
189
+
190
+ if (args.length == 0) {
191
+ return curryArgs2(areAllPredicatesTruthy, __, predicatesOrValues)
192
+ }
193
+
194
+ if (areAnyValuesPromises(args)) {
195
+ return promiseAll(args)
196
+ .then(curry2(areAllPredicatesTruthy, __, predicatesOrValues))
197
+ }
198
+
199
+ return areAllPredicatesTruthy(args, predicatesOrValues)
131
200
  }
132
201
 
133
202
  export default and
package/dist/assign.es.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,26 @@ const objectAssign = Object.assign
11
11
 
12
12
  const __ = Symbol.for('placeholder')
13
13
 
14
+ // argument resolver for curry2
15
+ const curry2ResolveArg0 = (
16
+ baseFunc, arg1,
17
+ ) => function arg0Resolver(arg0) {
18
+ return baseFunc(arg0, arg1)
19
+ }
20
+
21
+ // argument resolver for curry2
22
+ const curry2ResolveArg1 = (
23
+ baseFunc, arg0,
24
+ ) => function arg1Resolver(arg1) {
25
+ return baseFunc(arg0, arg1)
26
+ }
27
+
28
+ const curry2 = function (baseFunc, arg0, arg1) {
29
+ return arg0 == __
30
+ ? curry2ResolveArg0(baseFunc, arg1)
31
+ : curry2ResolveArg1(baseFunc, arg0)
32
+ }
33
+
14
34
  // argument resolver for curry3
15
35
  const curry3ResolveArg0 = (
16
36
  baseFunc, arg1, arg2,
@@ -51,7 +71,7 @@ const objectSet = function (object, property, value) {
51
71
  return object
52
72
  }
53
73
 
54
- const funcObjectAll = funcs => function objectAllFuncs(...args) {
74
+ const functionObjectAll = function (funcs, args) {
55
75
  const result = {}, promises = []
56
76
  for (const key in funcs) {
57
77
  const resultItem = funcs[key](...args)
@@ -64,14 +84,21 @@ const funcObjectAll = funcs => function objectAllFuncs(...args) {
64
84
  return promises.length == 0 ? result : promiseAll(promises).then(always(result))
65
85
  }
66
86
 
67
- const assign = function (funcs) {
68
- const allFuncs = funcObjectAll(funcs)
69
- return function assignment(value) {
70
- const result = allFuncs(value)
71
- return isPromise(result)
72
- ? result.then(curry3(objectAssign, {}, value, __))
73
- : ({ ...value, ...result })
87
+ // _assign(object Object, funcs Object<function>) -> Promise|Object
88
+ const _assign = function (object, funcs) {
89
+ const result = functionObjectAll(funcs, [object])
90
+ return isPromise(result)
91
+ ? result.then(curry3(objectAssign, {}, object, __))
92
+ : ({ ...object, ...result })
93
+ }
94
+
95
+ const assign = function (arg0, arg1) {
96
+ if (arg1 == null) {
97
+ return curry2(_assign, __, arg0)
74
98
  }
99
+ return isPromise(arg0)
100
+ ? arg0.then(curry2(_assign, __, arg1))
101
+ : _assign(arg0, arg1)
75
102
  }
76
103
 
77
104
  export default assign
@@ -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 isPromise=r=>null!=r&&"function"==typeof r.then,objectAssign=Object.assign,__=Symbol.for("placeholder"),curry3ResolveArg0=(r,n,e)=>function(t){return r(t,n,e)},curry3ResolveArg1=(r,n,e)=>function(t){return r(n,t,e)},curry3ResolveArg2=(r,n,e)=>function(t){return r(n,e,t)},curry3=function(r,n,e,t){return n==__?curry3ResolveArg0(r,e,t):e==__?curry3ResolveArg1(r,n,t):curry3ResolveArg2(r,n,e)},always=r=>function(){return r},promiseAll=Promise.all.bind(Promise),objectSet=function(r,n,e){return r[n]=e,r},funcObjectAll=r=>function(...n){const e={},t=[];for(const o in r){const c=r[o](...n);isPromise(c)?t.push(c.then(curry3(objectSet,e,o,__))):e[o]=c}return 0==t.length?e:promiseAll(t).then((o=e,function(){return o}));var o},assign=function(r){const n=funcObjectAll(r);return function(r){const e=n(r);return isPromise(e)?e.then(curry3(objectAssign,{},r,__)):{...r,...e}}};export default assign;
7
+ const isPromise=r=>null!=r&&"function"==typeof r.then,objectAssign=Object.assign,__=Symbol.for("placeholder"),curry2ResolveArg0=(r,n)=>function(e){return r(e,n)},curry2ResolveArg1=(r,n)=>function(e){return r(n,e)},curry2=function(r,n,e){return n==__?curry2ResolveArg0(r,e):curry2ResolveArg1(r,n)},curry3ResolveArg0=(r,n,e)=>function(t){return r(t,n,e)},curry3ResolveArg1=(r,n,e)=>function(t){return r(n,t,e)},curry3ResolveArg2=(r,n,e)=>function(t){return r(n,e,t)},curry3=function(r,n,e,t){return n==__?curry3ResolveArg0(r,e,t):e==__?curry3ResolveArg1(r,n,t):curry3ResolveArg2(r,n,e)},always=r=>function(){return r},promiseAll=Promise.all.bind(Promise),objectSet=function(r,n,e){return r[n]=e,r},functionObjectAll=function(r,n){const e={},t=[];for(const o in r){const u=r[o](...n);isPromise(u)?t.push(u.then(curry3(objectSet,e,o,__))):e[o]=u}return 0==t.length?e:promiseAll(t).then((o=e,function(){return o}));var o},_assign=function(r,n){const e=functionObjectAll(n,[r]);return isPromise(e)?e.then(curry3(objectAssign,{},r,__)):{...r,...e}},assign=function(r,n){return null==n?curry2(_assign,__,r):isPromise(r)?r.then(curry2(_assign,__,n)):_assign(r,n)};export default assign;
package/dist/assign.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
 
@@ -17,6 +17,26 @@ const objectAssign = Object.assign
17
17
 
18
18
  const __ = Symbol.for('placeholder')
19
19
 
20
+ // argument resolver for curry2
21
+ const curry2ResolveArg0 = (
22
+ baseFunc, arg1,
23
+ ) => function arg0Resolver(arg0) {
24
+ return baseFunc(arg0, arg1)
25
+ }
26
+
27
+ // argument resolver for curry2
28
+ const curry2ResolveArg1 = (
29
+ baseFunc, arg0,
30
+ ) => function arg1Resolver(arg1) {
31
+ return baseFunc(arg0, arg1)
32
+ }
33
+
34
+ const curry2 = function (baseFunc, arg0, arg1) {
35
+ return arg0 == __
36
+ ? curry2ResolveArg0(baseFunc, arg1)
37
+ : curry2ResolveArg1(baseFunc, arg0)
38
+ }
39
+
20
40
  // argument resolver for curry3
21
41
  const curry3ResolveArg0 = (
22
42
  baseFunc, arg1, arg2,
@@ -57,7 +77,7 @@ const objectSet = function (object, property, value) {
57
77
  return object
58
78
  }
59
79
 
60
- const funcObjectAll = funcs => function objectAllFuncs(...args) {
80
+ const functionObjectAll = function (funcs, args) {
61
81
  const result = {}, promises = []
62
82
  for (const key in funcs) {
63
83
  const resultItem = funcs[key](...args)
@@ -70,14 +90,21 @@ const funcObjectAll = funcs => function objectAllFuncs(...args) {
70
90
  return promises.length == 0 ? result : promiseAll(promises).then(always(result))
71
91
  }
72
92
 
73
- const assign = function (funcs) {
74
- const allFuncs = funcObjectAll(funcs)
75
- return function assignment(value) {
76
- const result = allFuncs(value)
77
- return isPromise(result)
78
- ? result.then(curry3(objectAssign, {}, value, __))
79
- : ({ ...value, ...result })
93
+ // _assign(object Object, funcs Object<function>) -> Promise|Object
94
+ const _assign = function (object, funcs) {
95
+ const result = functionObjectAll(funcs, [object])
96
+ return isPromise(result)
97
+ ? result.then(curry3(objectAssign, {}, object, __))
98
+ : ({ ...object, ...result })
99
+ }
100
+
101
+ const assign = function (arg0, arg1) {
102
+ if (arg1 == null) {
103
+ return curry2(_assign, __, arg0)
80
104
  }
105
+ return isPromise(arg0)
106
+ ? arg0.then(curry2(_assign, __, arg1))
107
+ : _assign(arg0, arg1)
81
108
  }
82
109
 
83
110
  return assign
@@ -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(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.assign=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=Object.assign,o=Symbol.for("placeholder"),e=function(n,t,e,r){return t==o?((n,t,o)=>function(e){return n(e,t,o)})(n,e,r):e==o?((n,t,o)=>function(e){return n(t,e,o)})(n,t,r):((n,t,o)=>function(e){return n(t,o,e)})(n,t,e)},r=Promise.all.bind(Promise),u=function(n,t,o){return n[t]=o,n};return function(i){const c=(t=>function(...i){const c={},f=[];for(const r in t){const s=t[r](...i);n(s)?f.push(s.then(e(u,c,r,o))):c[r]=s}return 0==f.length?c:r(f).then((s=c,function(){return s}));var s})(i);return function(r){const u=c(r);return n(u)?u.then(e(t,{},r,o)):{...r,...u}}}}());
8
+ !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.assign=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=n=>null!=n&&"function"==typeof n.then,t=Object.assign,e=Symbol.for("placeholder"),o=function(n,t,o){return t==e?((n,t)=>function(e){return n(e,t)})(n,o):((n,t)=>function(e){return n(t,e)})(n,t)},u=function(n,t,o,u){return t==e?((n,t,e)=>function(o){return n(o,t,e)})(n,o,u):o==e?((n,t,e)=>function(o){return n(t,o,e)})(n,t,u):((n,t,e)=>function(o){return n(t,e,o)})(n,t,o)},r=Promise.all.bind(Promise),i=function(n,t,e){return n[t]=e,n},c=function(o,c){const f=function(t,o){const c={},f=[];for(const r in t){const s=t[r](...o);n(s)?f.push(s.then(u(i,c,r,e))):c[r]=s}return 0==f.length?c:r(f).then((s=c,function(){return s}));var s}(c,[o]);return n(f)?f.then(u(t,{},o,e)):{...o,...f}};return function(t,u){return null==u?o(c,e,t):n(t)?t.then(o(c,e,u)):c(t,u)}}());
@@ -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 isPromise=r=>null!=r&&"function"==typeof r.then,objectAssign=Object.assign,__=Symbol.for("placeholder"),curry3ResolveArg0=(r,n,e)=>function(t){return r(t,n,e)},curry3ResolveArg1=(r,n,e)=>function(t){return r(n,t,e)},curry3ResolveArg2=(r,n,e)=>function(t){return r(n,e,t)},curry3=function(r,n,e,t){return n==__?curry3ResolveArg0(r,e,t):e==__?curry3ResolveArg1(r,n,t):curry3ResolveArg2(r,n,e)},always=r=>function(){return r},promiseAll=Promise.all.bind(Promise),objectSet=function(r,n,e){return r[n]=e,r},funcObjectAll=r=>function(...n){const e={},t=[];for(const o in r){const c=r[o](...n);isPromise(c)?t.push(c.then(curry3(objectSet,e,o,__))):e[o]=c}return 0==t.length?e:promiseAll(t).then((o=e,function(){return o}));var o},assign=function(r){const n=funcObjectAll(r);return function(r){const e=n(r);return isPromise(e)?e.then(curry3(objectAssign,{},r,__)):{...r,...e}}};export default assign;
7
+ const isPromise=r=>null!=r&&"function"==typeof r.then,objectAssign=Object.assign,__=Symbol.for("placeholder"),curry2ResolveArg0=(r,n)=>function(e){return r(e,n)},curry2ResolveArg1=(r,n)=>function(e){return r(n,e)},curry2=function(r,n,e){return n==__?curry2ResolveArg0(r,e):curry2ResolveArg1(r,n)},curry3ResolveArg0=(r,n,e)=>function(t){return r(t,n,e)},curry3ResolveArg1=(r,n,e)=>function(t){return r(n,t,e)},curry3ResolveArg2=(r,n,e)=>function(t){return r(n,e,t)},curry3=function(r,n,e,t){return n==__?curry3ResolveArg0(r,e,t):e==__?curry3ResolveArg1(r,n,t):curry3ResolveArg2(r,n,e)},always=r=>function(){return r},promiseAll=Promise.all.bind(Promise),objectSet=function(r,n,e){return r[n]=e,r},functionObjectAll=function(r,n){const e={},t=[];for(const o in r){const u=r[o](...n);isPromise(u)?t.push(u.then(curry3(objectSet,e,o,__))):e[o]=u}return 0==t.length?e:promiseAll(t).then((o=e,function(){return o}));var o},_assign=function(r,n){const e=functionObjectAll(n,[r]);return isPromise(e)?e.then(curry3(objectAssign,{},r,__)):{...r,...e}},assign=function(r,n){return null==n?curry2(_assign,__,r):isPromise(r)?r.then(curry2(_assign,__,n)):_assign(r,n)};export default assign;
package/dist/assign.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
7
 
@@ -11,6 +11,26 @@ const objectAssign = Object.assign
11
11
 
12
12
  const __ = Symbol.for('placeholder')
13
13
 
14
+ // argument resolver for curry2
15
+ const curry2ResolveArg0 = (
16
+ baseFunc, arg1,
17
+ ) => function arg0Resolver(arg0) {
18
+ return baseFunc(arg0, arg1)
19
+ }
20
+
21
+ // argument resolver for curry2
22
+ const curry2ResolveArg1 = (
23
+ baseFunc, arg0,
24
+ ) => function arg1Resolver(arg1) {
25
+ return baseFunc(arg0, arg1)
26
+ }
27
+
28
+ const curry2 = function (baseFunc, arg0, arg1) {
29
+ return arg0 == __
30
+ ? curry2ResolveArg0(baseFunc, arg1)
31
+ : curry2ResolveArg1(baseFunc, arg0)
32
+ }
33
+
14
34
  // argument resolver for curry3
15
35
  const curry3ResolveArg0 = (
16
36
  baseFunc, arg1, arg2,
@@ -51,7 +71,7 @@ const objectSet = function (object, property, value) {
51
71
  return object
52
72
  }
53
73
 
54
- const funcObjectAll = funcs => function objectAllFuncs(...args) {
74
+ const functionObjectAll = function (funcs, args) {
55
75
  const result = {}, promises = []
56
76
  for (const key in funcs) {
57
77
  const resultItem = funcs[key](...args)
@@ -64,14 +84,21 @@ const funcObjectAll = funcs => function objectAllFuncs(...args) {
64
84
  return promises.length == 0 ? result : promiseAll(promises).then(always(result))
65
85
  }
66
86
 
67
- const assign = function (funcs) {
68
- const allFuncs = funcObjectAll(funcs)
69
- return function assignment(value) {
70
- const result = allFuncs(value)
71
- return isPromise(result)
72
- ? result.then(curry3(objectAssign, {}, value, __))
73
- : ({ ...value, ...result })
87
+ // _assign(object Object, funcs Object<function>) -> Promise|Object
88
+ const _assign = function (object, funcs) {
89
+ const result = functionObjectAll(funcs, [object])
90
+ return isPromise(result)
91
+ ? result.then(curry3(objectAssign, {}, object, __))
92
+ : ({ ...object, ...result })
93
+ }
94
+
95
+ const assign = function (arg0, arg1) {
96
+ if (arg1 == null) {
97
+ return curry2(_assign, __, arg0)
74
98
  }
99
+ return isPromise(arg0)
100
+ ? arg0.then(curry2(_assign, __, arg1))
101
+ : _assign(arg0, arg1)
75
102
  }
76
103
 
77
104
  export default assign
@@ -0,0 +1,71 @@
1
+ /**
2
+ * rubico v2.0.0
3
+ * https://github.com/a-synchronous/rubico
4
+ * (c) 2019-2023 Richard Tong
5
+ * rubico may be freely distributed under the MIT license.
6
+ */
7
+ const __ = Symbol.for('placeholder')
8
+
9
+ // argument resolver for curry2
10
+ const curry2ResolveArg0 = (
11
+ baseFunc, arg1,
12
+ ) => function arg0Resolver(arg0) {
13
+ return baseFunc(arg0, arg1)
14
+ }
15
+
16
+ // argument resolver for curry2
17
+ const curry2ResolveArg1 = (
18
+ baseFunc, arg0,
19
+ ) => function arg1Resolver(arg1) {
20
+ return baseFunc(arg0, arg1)
21
+ }
22
+
23
+ const curry2 = function (baseFunc, arg0, arg1) {
24
+ return arg0 == __
25
+ ? curry2ResolveArg0(baseFunc, arg1)
26
+ : curry2ResolveArg1(baseFunc, arg0)
27
+ }
28
+
29
+ const promiseAll = Promise.all.bind(Promise)
30
+
31
+ const funcApply = (func, args) => func(...args)
32
+
33
+ const isPromise = value => value != null && typeof value.then == 'function'
34
+
35
+ const areAnyValuesPromises = function (values) {
36
+ const length = values.length
37
+ let index = -1
38
+ while (++index < length) {
39
+ const value = values[index]
40
+ if (isPromise(value)) {
41
+ return true
42
+ }
43
+ }
44
+ return false
45
+ }
46
+
47
+ const funcConcat = (
48
+ funcA, funcB,
49
+ ) => function pipedFunction(...args) {
50
+ const intermediate = funcA(...args)
51
+ return isPromise(intermediate)
52
+ ? intermediate.then(funcB)
53
+ : funcB(intermediate)
54
+ }
55
+
56
+ const compose = function (...args) {
57
+ const funcs = args.pop()
58
+ const composition = funcs.reduceRight(funcConcat)
59
+
60
+ if (args.length == 0) {
61
+ return composition
62
+ }
63
+
64
+ if (areAnyValuesPromises(args)) {
65
+ return promiseAll(args).then(curry2(funcApply, composition, __))
66
+ }
67
+
68
+ return composition(...args)
69
+ }
70
+
71
+ export default compose
@@ -0,0 +1,7 @@
1
+ /**
2
+ * rubico v2.0.0
3
+ * https://github.com/a-synchronous/rubico
4
+ * (c) 2019-2023 Richard Tong
5
+ * rubico may be freely distributed under the MIT license.
6
+ */
7
+ const __=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)},promiseAll=Promise.all.bind(Promise),funcApply=(r,e)=>r(...e),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},funcConcat=(r,e)=>function(...n){const o=r(...n);return isPromise(o)?o.then(e):e(o)},compose=function(...r){const e=r.pop().reduceRight(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 compose;
@@ -0,0 +1,78 @@
1
+ /**
2
+ * rubico v2.0.0
3
+ * https://github.com/a-synchronous/rubico
4
+ * (c) 2019-2023 Richard Tong
5
+ * rubico may be freely distributed under the MIT license.
6
+ */
7
+
8
+ (function (root, compose) {
9
+ if (typeof module == 'object') (module.exports = compose) // CommonJS
10
+ else if (typeof define == 'function') define(() => compose) // AMD
11
+ else (root.compose = compose) // Browser
12
+ }(typeof globalThis == 'object' ? globalThis : this, (function () { 'use strict'
13
+ const __ = Symbol.for('placeholder')
14
+
15
+ // argument resolver for curry2
16
+ const curry2ResolveArg0 = (
17
+ baseFunc, arg1,
18
+ ) => function arg0Resolver(arg0) {
19
+ return baseFunc(arg0, arg1)
20
+ }
21
+
22
+ // argument resolver for curry2
23
+ const curry2ResolveArg1 = (
24
+ baseFunc, arg0,
25
+ ) => function arg1Resolver(arg1) {
26
+ return baseFunc(arg0, arg1)
27
+ }
28
+
29
+ const curry2 = function (baseFunc, arg0, arg1) {
30
+ return arg0 == __
31
+ ? curry2ResolveArg0(baseFunc, arg1)
32
+ : curry2ResolveArg1(baseFunc, arg0)
33
+ }
34
+
35
+ const promiseAll = Promise.all.bind(Promise)
36
+
37
+ const funcApply = (func, args) => func(...args)
38
+
39
+ const isPromise = value => value != null && typeof value.then == 'function'
40
+
41
+ const areAnyValuesPromises = function (values) {
42
+ const length = values.length
43
+ let index = -1
44
+ while (++index < length) {
45
+ const value = values[index]
46
+ if (isPromise(value)) {
47
+ return true
48
+ }
49
+ }
50
+ return false
51
+ }
52
+
53
+ const funcConcat = (
54
+ funcA, funcB,
55
+ ) => function pipedFunction(...args) {
56
+ const intermediate = funcA(...args)
57
+ return isPromise(intermediate)
58
+ ? intermediate.then(funcB)
59
+ : funcB(intermediate)
60
+ }
61
+
62
+ const compose = function (...args) {
63
+ const funcs = args.pop()
64
+ const composition = funcs.reduceRight(funcConcat)
65
+
66
+ if (args.length == 0) {
67
+ return composition
68
+ }
69
+
70
+ if (areAnyValuesPromises(args)) {
71
+ return promiseAll(args).then(curry2(funcApply, composition, __))
72
+ }
73
+
74
+ return composition(...args)
75
+ }
76
+
77
+ return compose
78
+ }())))
@@ -0,0 +1,8 @@
1
+ /**
2
+ * rubico v2.0.0
3
+ * https://github.com/a-synchronous/rubico
4
+ * (c) 2019-2023 Richard Tong
5
+ * rubico may be freely distributed under the MIT license.
6
+ */
7
+
8
+ !function(n,t){"object"==typeof module?module.exports=t:"function"==typeof define?define((()=>t)):n.compose=t}("object"==typeof globalThis?globalThis:this,function(){"use strict";const n=Symbol.for("placeholder"),t=Promise.all.bind(Promise),e=(n,t)=>n(...t),o=n=>null!=n&&"function"==typeof n.then,r=(n,t)=>function(...e){const r=n(...e);return o(r)?r.then(t):t(r)};return function(...u){const c=u.pop().reduceRight(r);return 0==u.length?c:function(n){const t=n.length;let e=-1;for(;++e<t;){const t=n[e];if(o(t))return!0}return!1}(u)?t(u).then((i=e,l=n,(f=c)==n?((n,t)=>function(e){return n(e,t)})(i,l):((n,t)=>function(e){return n(t,e)})(i,f))):c(...u);var i,f,l}}());
@@ -0,0 +1,7 @@
1
+ /**
2
+ * rubico v2.0.0
3
+ * https://github.com/a-synchronous/rubico
4
+ * (c) 2019-2023 Richard Tong
5
+ * rubico may be freely distributed under the MIT license.
6
+ */
7
+ const __=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)},promiseAll=Promise.all.bind(Promise),funcApply=(r,e)=>r(...e),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},funcConcat=(r,e)=>function(...n){const o=r(...n);return isPromise(o)?o.then(e):e(o)},compose=function(...r){const e=r.pop().reduceRight(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 compose;