rubico 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/README.md +158 -81
  2. package/build +257 -280
  3. package/dist/Transducer.es.js +481 -0
  4. package/dist/Transducer.es.min.js +7 -0
  5. package/dist/Transducer.js +488 -0
  6. package/dist/Transducer.min.js +8 -0
  7. package/dist/Transducer.mjs +481 -0
  8. package/dist/__.es.js +1 -1
  9. package/dist/__.es.min.js +1 -1
  10. package/dist/__.js +1 -1
  11. package/dist/__.min.js +1 -1
  12. package/dist/__.mjs +1 -1
  13. package/dist/all.es.js +1 -1
  14. package/dist/all.es.min.js +1 -1
  15. package/dist/all.js +1 -1
  16. package/dist/all.min.js +1 -1
  17. package/dist/all.mjs +1 -1
  18. package/dist/always.es.js +1 -1
  19. package/dist/always.es.min.js +1 -1
  20. package/dist/always.js +1 -1
  21. package/dist/always.min.js +1 -1
  22. package/dist/always.mjs +1 -1
  23. package/dist/and.es.js +1 -1
  24. package/dist/and.es.min.js +1 -1
  25. package/dist/and.js +1 -1
  26. package/dist/and.min.js +1 -1
  27. package/dist/and.mjs +1 -1
  28. package/dist/assign.es.js +1 -1
  29. package/dist/assign.es.min.js +1 -1
  30. package/dist/assign.js +1 -1
  31. package/dist/assign.min.js +1 -1
  32. package/dist/assign.mjs +1 -1
  33. package/dist/compose.es.js +1 -1
  34. package/dist/compose.es.min.js +1 -1
  35. package/dist/compose.js +1 -1
  36. package/dist/compose.min.js +1 -1
  37. package/dist/compose.mjs +1 -1
  38. package/dist/curry.es.js +1 -1
  39. package/dist/curry.es.min.js +1 -1
  40. package/dist/curry.js +1 -1
  41. package/dist/curry.min.js +1 -1
  42. package/dist/curry.mjs +1 -1
  43. package/dist/eq.es.js +1 -1
  44. package/dist/eq.es.min.js +1 -1
  45. package/dist/eq.js +1 -1
  46. package/dist/eq.min.js +1 -1
  47. package/dist/eq.mjs +1 -1
  48. package/dist/every.es.js +1 -1
  49. package/dist/every.es.min.js +1 -1
  50. package/dist/every.js +1 -1
  51. package/dist/every.min.js +1 -1
  52. package/dist/every.mjs +1 -1
  53. package/dist/filter.es.js +1 -1
  54. package/dist/filter.es.min.js +1 -1
  55. package/dist/filter.js +1 -1
  56. package/dist/filter.min.js +1 -1
  57. package/dist/filter.mjs +1 -1
  58. package/dist/flatMap.es.js +1 -1
  59. package/dist/flatMap.es.min.js +1 -1
  60. package/dist/flatMap.js +1 -1
  61. package/dist/flatMap.min.js +1 -1
  62. package/dist/flatMap.mjs +1 -1
  63. package/dist/forEach.es.js +1 -1
  64. package/dist/forEach.es.min.js +1 -1
  65. package/dist/forEach.js +1 -1
  66. package/dist/forEach.min.js +1 -1
  67. package/dist/forEach.mjs +1 -1
  68. package/dist/get.es.js +1 -1
  69. package/dist/get.es.min.js +1 -1
  70. package/dist/get.js +1 -1
  71. package/dist/get.min.js +1 -1
  72. package/dist/get.mjs +1 -1
  73. package/dist/gt.es.js +1 -1
  74. package/dist/gt.es.min.js +1 -1
  75. package/dist/gt.js +1 -1
  76. package/dist/gt.min.js +1 -1
  77. package/dist/gt.mjs +1 -1
  78. package/dist/gte.es.js +1 -1
  79. package/dist/gte.es.min.js +1 -1
  80. package/dist/gte.js +1 -1
  81. package/dist/gte.min.js +1 -1
  82. package/dist/gte.mjs +1 -1
  83. package/dist/lt.es.js +1 -1
  84. package/dist/lt.es.min.js +1 -1
  85. package/dist/lt.js +1 -1
  86. package/dist/lt.min.js +1 -1
  87. package/dist/lt.mjs +1 -1
  88. package/dist/lte.es.js +1 -1
  89. package/dist/lte.es.min.js +1 -1
  90. package/dist/lte.js +1 -1
  91. package/dist/lte.min.js +1 -1
  92. package/dist/lte.mjs +1 -1
  93. package/dist/map.es.js +1 -1
  94. package/dist/map.es.min.js +1 -1
  95. package/dist/map.js +1 -1
  96. package/dist/map.min.js +1 -1
  97. package/dist/map.mjs +1 -1
  98. package/dist/not.es.js +1 -1
  99. package/dist/not.es.min.js +1 -1
  100. package/dist/not.js +1 -1
  101. package/dist/not.min.js +1 -1
  102. package/dist/not.mjs +1 -1
  103. package/dist/omit.es.js +1 -1
  104. package/dist/omit.es.min.js +1 -1
  105. package/dist/omit.js +1 -1
  106. package/dist/omit.min.js +1 -1
  107. package/dist/omit.mjs +1 -1
  108. package/dist/or.es.js +1 -1
  109. package/dist/or.es.min.js +1 -1
  110. package/dist/or.js +1 -1
  111. package/dist/or.min.js +1 -1
  112. package/dist/or.mjs +1 -1
  113. package/dist/pick.es.js +1 -1
  114. package/dist/pick.es.min.js +1 -1
  115. package/dist/pick.js +1 -1
  116. package/dist/pick.min.js +1 -1
  117. package/dist/pick.mjs +1 -1
  118. package/dist/pipe.es.js +1 -1
  119. package/dist/pipe.es.min.js +1 -1
  120. package/dist/pipe.js +1 -1
  121. package/dist/pipe.min.js +1 -1
  122. package/dist/pipe.mjs +1 -1
  123. package/dist/reduce.es.js +1 -1
  124. package/dist/reduce.es.min.js +1 -1
  125. package/dist/reduce.js +1 -1
  126. package/dist/reduce.min.js +1 -1
  127. package/dist/reduce.mjs +1 -1
  128. package/dist/rubico.es.js +28 -10
  129. package/dist/rubico.es.min.js +2 -2
  130. package/dist/rubico.global.js +2794 -0
  131. package/dist/rubico.global.min.js +8 -0
  132. package/dist/rubico.js +15 -6
  133. package/dist/rubico.min.js +2 -2
  134. package/dist/rubico.mjs +28 -10
  135. package/dist/set.es.js +1 -1
  136. package/dist/set.es.min.js +1 -1
  137. package/dist/set.js +1 -1
  138. package/dist/set.min.js +1 -1
  139. package/dist/set.mjs +1 -1
  140. package/dist/some.es.js +1 -1
  141. package/dist/some.es.min.js +1 -1
  142. package/dist/some.js +1 -1
  143. package/dist/some.min.js +1 -1
  144. package/dist/some.mjs +1 -1
  145. package/dist/switchCase.es.js +1 -1
  146. package/dist/switchCase.es.min.js +1 -1
  147. package/dist/switchCase.js +1 -1
  148. package/dist/switchCase.min.js +1 -1
  149. package/dist/switchCase.mjs +1 -1
  150. package/dist/tap.es.js +1 -1
  151. package/dist/tap.es.min.js +1 -1
  152. package/dist/tap.js +1 -1
  153. package/dist/tap.min.js +1 -1
  154. package/dist/tap.mjs +1 -1
  155. package/dist/thunkify.es.js +1 -1
  156. package/dist/thunkify.es.min.js +1 -1
  157. package/dist/thunkify.js +1 -1
  158. package/dist/thunkify.min.js +1 -1
  159. package/dist/thunkify.mjs +1 -1
  160. package/dist/transform.es.js +1 -1
  161. package/dist/transform.es.min.js +1 -1
  162. package/dist/transform.js +1 -1
  163. package/dist/transform.min.js +1 -1
  164. package/dist/transform.mjs +1 -1
  165. package/dist/tryCatch.es.js +1 -1
  166. package/dist/tryCatch.es.min.js +1 -1
  167. package/dist/tryCatch.js +1 -1
  168. package/dist/tryCatch.min.js +1 -1
  169. package/dist/tryCatch.mjs +1 -1
  170. package/dist/x/append.es.js +1 -1
  171. package/dist/x/append.es.min.js +1 -1
  172. package/dist/x/append.js +1 -1
  173. package/dist/x/append.min.js +1 -1
  174. package/dist/x/append.mjs +1 -1
  175. package/dist/x/callProp.es.js +1 -1
  176. package/dist/x/callProp.es.min.js +1 -1
  177. package/dist/x/callProp.js +1 -1
  178. package/dist/x/callProp.min.js +1 -1
  179. package/dist/x/callProp.mjs +1 -1
  180. package/dist/x/defaultsDeep.es.js +1 -1
  181. package/dist/x/defaultsDeep.es.min.js +1 -1
  182. package/dist/x/defaultsDeep.js +1 -1
  183. package/dist/x/defaultsDeep.min.js +1 -1
  184. package/dist/x/defaultsDeep.mjs +1 -1
  185. package/dist/x/differenceWith.es.js +1 -1
  186. package/dist/x/differenceWith.es.min.js +1 -1
  187. package/dist/x/differenceWith.js +1 -1
  188. package/dist/x/differenceWith.min.js +1 -1
  189. package/dist/x/differenceWith.mjs +1 -1
  190. package/dist/x/filterOut.es.js +1 -1
  191. package/dist/x/filterOut.es.min.js +1 -1
  192. package/dist/x/filterOut.js +1 -1
  193. package/dist/x/filterOut.min.js +1 -1
  194. package/dist/x/filterOut.mjs +1 -1
  195. package/dist/x/find.es.js +1 -1
  196. package/dist/x/find.es.min.js +1 -1
  197. package/dist/x/find.js +1 -1
  198. package/dist/x/find.min.js +1 -1
  199. package/dist/x/find.mjs +1 -1
  200. package/dist/x/findIndex.es.js +1 -1
  201. package/dist/x/findIndex.es.min.js +1 -1
  202. package/dist/x/findIndex.js +1 -1
  203. package/dist/x/findIndex.min.js +1 -1
  204. package/dist/x/findIndex.mjs +1 -1
  205. package/dist/x/first.es.js +1 -1
  206. package/dist/x/first.es.min.js +1 -1
  207. package/dist/x/first.js +1 -1
  208. package/dist/x/first.min.js +1 -1
  209. package/dist/x/first.mjs +1 -1
  210. package/dist/x/flatten.es.js +1 -1
  211. package/dist/x/flatten.es.min.js +1 -1
  212. package/dist/x/flatten.js +1 -1
  213. package/dist/x/flatten.min.js +1 -1
  214. package/dist/x/flatten.mjs +1 -1
  215. package/dist/x/groupBy.es.js +1 -1
  216. package/dist/x/groupBy.es.min.js +1 -1
  217. package/dist/x/groupBy.js +1 -1
  218. package/dist/x/groupBy.min.js +1 -1
  219. package/dist/x/groupBy.mjs +1 -1
  220. package/dist/x/has.es.js +1 -1
  221. package/dist/x/has.es.min.js +1 -1
  222. package/dist/x/has.js +1 -1
  223. package/dist/x/has.min.js +1 -1
  224. package/dist/x/has.mjs +1 -1
  225. package/dist/x/identity.es.js +1 -1
  226. package/dist/x/identity.es.min.js +1 -1
  227. package/dist/x/identity.js +1 -1
  228. package/dist/x/identity.min.js +1 -1
  229. package/dist/x/identity.mjs +1 -1
  230. package/dist/x/includes.es.js +1 -1
  231. package/dist/x/includes.es.min.js +1 -1
  232. package/dist/x/includes.js +1 -1
  233. package/dist/x/includes.min.js +1 -1
  234. package/dist/x/includes.mjs +1 -1
  235. package/dist/x/isDeepEqual.es.js +1 -1
  236. package/dist/x/isDeepEqual.es.min.js +1 -1
  237. package/dist/x/isDeepEqual.js +1 -1
  238. package/dist/x/isDeepEqual.min.js +1 -1
  239. package/dist/x/isDeepEqual.mjs +1 -1
  240. package/dist/x/isEmpty.es.js +1 -1
  241. package/dist/x/isEmpty.es.min.js +1 -1
  242. package/dist/x/isEmpty.js +1 -1
  243. package/dist/x/isEmpty.min.js +1 -1
  244. package/dist/x/isEmpty.mjs +1 -1
  245. package/dist/x/isEqual.es.js +1 -1
  246. package/dist/x/isEqual.es.min.js +1 -1
  247. package/dist/x/isEqual.js +1 -1
  248. package/dist/x/isEqual.min.js +1 -1
  249. package/dist/x/isEqual.mjs +1 -1
  250. package/dist/x/isFunction.es.js +1 -1
  251. package/dist/x/isFunction.es.min.js +1 -1
  252. package/dist/x/isFunction.js +1 -1
  253. package/dist/x/isFunction.min.js +1 -1
  254. package/dist/x/isFunction.mjs +1 -1
  255. package/dist/x/isIn.es.js +1 -1
  256. package/dist/x/isIn.es.min.js +1 -1
  257. package/dist/x/isIn.js +1 -1
  258. package/dist/x/isIn.min.js +1 -1
  259. package/dist/x/isIn.mjs +1 -1
  260. package/dist/x/isObject.es.js +1 -1
  261. package/dist/x/isObject.es.min.js +1 -1
  262. package/dist/x/isObject.js +1 -1
  263. package/dist/x/isObject.min.js +1 -1
  264. package/dist/x/isObject.mjs +1 -1
  265. package/dist/x/isString.es.js +1 -1
  266. package/dist/x/isString.es.min.js +1 -1
  267. package/dist/x/isString.js +1 -1
  268. package/dist/x/isString.min.js +1 -1
  269. package/dist/x/isString.mjs +1 -1
  270. package/dist/x/keys.es.js +1 -1
  271. package/dist/x/keys.es.min.js +1 -1
  272. package/dist/x/keys.js +1 -1
  273. package/dist/x/keys.min.js +1 -1
  274. package/dist/x/keys.mjs +1 -1
  275. package/dist/x/last.es.js +1 -1
  276. package/dist/x/last.es.min.js +1 -1
  277. package/dist/x/last.js +1 -1
  278. package/dist/x/last.min.js +1 -1
  279. package/dist/x/last.mjs +1 -1
  280. package/dist/x/maxBy.es.js +1 -1
  281. package/dist/x/maxBy.es.min.js +1 -1
  282. package/dist/x/maxBy.js +1 -1
  283. package/dist/x/maxBy.min.js +1 -1
  284. package/dist/x/maxBy.mjs +1 -1
  285. package/dist/x/noop.es.js +1 -1
  286. package/dist/x/noop.es.min.js +1 -1
  287. package/dist/x/noop.js +1 -1
  288. package/dist/x/noop.min.js +1 -1
  289. package/dist/x/noop.mjs +1 -1
  290. package/dist/x/pluck.es.js +1 -1
  291. package/dist/x/pluck.es.min.js +1 -1
  292. package/dist/x/pluck.js +1 -1
  293. package/dist/x/pluck.min.js +1 -1
  294. package/dist/x/pluck.mjs +1 -1
  295. package/dist/x/prepend.es.js +1 -1
  296. package/dist/x/prepend.es.min.js +1 -1
  297. package/dist/x/prepend.js +1 -1
  298. package/dist/x/prepend.min.js +1 -1
  299. package/dist/x/prepend.mjs +1 -1
  300. package/dist/x/size.es.js +1 -1
  301. package/dist/x/size.es.min.js +1 -1
  302. package/dist/x/size.js +1 -1
  303. package/dist/x/size.min.js +1 -1
  304. package/dist/x/size.mjs +1 -1
  305. package/dist/x/trace.es.js +1 -1
  306. package/dist/x/trace.es.min.js +1 -1
  307. package/dist/x/trace.js +1 -1
  308. package/dist/x/trace.min.js +1 -1
  309. package/dist/x/trace.mjs +1 -1
  310. package/dist/x/unionWith.es.js +1 -1
  311. package/dist/x/unionWith.es.min.js +1 -1
  312. package/dist/x/unionWith.js +1 -1
  313. package/dist/x/unionWith.min.js +1 -1
  314. package/dist/x/unionWith.mjs +1 -1
  315. package/dist/x/uniq.es.js +1 -1
  316. package/dist/x/uniq.es.min.js +1 -1
  317. package/dist/x/uniq.js +1 -1
  318. package/dist/x/uniq.min.js +1 -1
  319. package/dist/x/uniq.mjs +1 -1
  320. package/dist/x/unless.es.js +1 -1
  321. package/dist/x/unless.es.min.js +1 -1
  322. package/dist/x/unless.js +1 -1
  323. package/dist/x/unless.min.js +1 -1
  324. package/dist/x/unless.mjs +1 -1
  325. package/dist/x/values.es.js +1 -1
  326. package/dist/x/values.es.min.js +1 -1
  327. package/dist/x/values.js +1 -1
  328. package/dist/x/values.min.js +1 -1
  329. package/dist/x/values.mjs +1 -1
  330. package/dist/x/when.es.js +1 -1
  331. package/dist/x/when.es.min.js +1 -1
  332. package/dist/x/when.js +1 -1
  333. package/dist/x/when.min.js +1 -1
  334. package/dist/x/when.mjs +1 -1
  335. package/dist-test.js +26 -4
  336. package/es.js +15 -6
  337. package/index.js +15 -6
  338. package/package.json +1 -1
  339. package/rubico.js +14 -5
  340. package/tmp.js +1 -0
  341. package/dist/__.min.mjs +0 -7
  342. package/dist/all.min.mjs +0 -7
  343. package/dist/always.min.mjs +0 -7
  344. package/dist/and.min.mjs +0 -7
  345. package/dist/assign.min.mjs +0 -7
  346. package/dist/compose.min.mjs +0 -7
  347. package/dist/curry.min.mjs +0 -7
  348. package/dist/eq.min.mjs +0 -7
  349. package/dist/every.min.mjs +0 -7
  350. package/dist/filter.min.mjs +0 -7
  351. package/dist/flatMap.min.mjs +0 -7
  352. package/dist/forEach.min.mjs +0 -7
  353. package/dist/get.min.mjs +0 -7
  354. package/dist/gt.min.mjs +0 -7
  355. package/dist/gte.min.mjs +0 -7
  356. package/dist/lt.min.mjs +0 -7
  357. package/dist/lte.min.mjs +0 -7
  358. package/dist/map.min.mjs +0 -7
  359. package/dist/not.min.mjs +0 -7
  360. package/dist/omit.min.mjs +0 -7
  361. package/dist/or.min.mjs +0 -7
  362. package/dist/pick.min.mjs +0 -7
  363. package/dist/pipe.min.mjs +0 -7
  364. package/dist/reduce.min.mjs +0 -7
  365. package/dist/rubico.min.mjs +0 -7
  366. package/dist/set.min.mjs +0 -7
  367. package/dist/some.min.mjs +0 -7
  368. package/dist/switchCase.min.mjs +0 -7
  369. package/dist/tap.min.mjs +0 -7
  370. package/dist/thunkify.min.mjs +0 -7
  371. package/dist/transform.min.mjs +0 -7
  372. package/dist/tryCatch.min.mjs +0 -7
  373. package/dist/x/append.min.mjs +0 -7
  374. package/dist/x/callProp.min.mjs +0 -7
  375. package/dist/x/defaultsDeep.min.mjs +0 -7
  376. package/dist/x/differenceWith.min.mjs +0 -7
  377. package/dist/x/filterOut.min.mjs +0 -7
  378. package/dist/x/find.min.mjs +0 -7
  379. package/dist/x/findIndex.min.mjs +0 -7
  380. package/dist/x/first.min.mjs +0 -7
  381. package/dist/x/flatten.min.mjs +0 -7
  382. package/dist/x/groupBy.min.mjs +0 -7
  383. package/dist/x/has.min.mjs +0 -7
  384. package/dist/x/identity.min.mjs +0 -7
  385. package/dist/x/includes.min.mjs +0 -7
  386. package/dist/x/isDeepEqual.min.mjs +0 -7
  387. package/dist/x/isEmpty.min.mjs +0 -7
  388. package/dist/x/isEqual.min.mjs +0 -7
  389. package/dist/x/isFunction.min.mjs +0 -7
  390. package/dist/x/isIn.min.mjs +0 -7
  391. package/dist/x/isObject.min.mjs +0 -7
  392. package/dist/x/isString.min.mjs +0 -7
  393. package/dist/x/keys.min.mjs +0 -7
  394. package/dist/x/last.min.mjs +0 -7
  395. package/dist/x/maxBy.min.mjs +0 -7
  396. package/dist/x/noop.min.mjs +0 -7
  397. package/dist/x/pluck.min.mjs +0 -7
  398. package/dist/x/prepend.min.mjs +0 -7
  399. package/dist/x/size.min.mjs +0 -7
  400. package/dist/x/trace.min.mjs +0 -7
  401. package/dist/x/unionWith.min.mjs +0 -7
  402. package/dist/x/uniq.min.mjs +0 -7
  403. package/dist/x/unless.min.mjs +0 -7
  404. package/dist/x/values.min.mjs +0 -7
  405. package/dist/x/when.min.mjs +0 -7
@@ -0,0 +1,481 @@
1
+ /**
2
+ * rubico v2.0.1
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
+ const isPromise = value => value != null && typeof value.then == 'function'
9
+
10
+ const funcConcat = (
11
+ funcA, funcB,
12
+ ) => function pipedFunction(...args) {
13
+ const intermediate = funcA(...args)
14
+ return isPromise(intermediate)
15
+ ? intermediate.then(funcB)
16
+ : funcB(intermediate)
17
+ }
18
+
19
+ const __ = Symbol.for('placeholder')
20
+
21
+ // argument resolver for curry2
22
+ const curry2ResolveArg0 = (
23
+ baseFunc, arg1,
24
+ ) => function arg0Resolver(arg0) {
25
+ return baseFunc(arg0, arg1)
26
+ }
27
+
28
+ // argument resolver for curry2
29
+ const curry2ResolveArg1 = (
30
+ baseFunc, arg0,
31
+ ) => function arg1Resolver(arg1) {
32
+ return baseFunc(arg0, arg1)
33
+ }
34
+
35
+ const curry2 = function (baseFunc, arg0, arg1) {
36
+ return arg0 == __
37
+ ? curry2ResolveArg0(baseFunc, arg1)
38
+ : curry2ResolveArg1(baseFunc, arg0)
39
+ }
40
+
41
+ const reducerMap = (
42
+ reducer, mapper,
43
+ ) => function mappingReducer(result, reducerItem) {
44
+ const mappingReducerItem = mapper(reducerItem)
45
+ return isPromise(mappingReducerItem)
46
+ ? mappingReducerItem.then(curry2(reducer, result, __))
47
+ : reducer(result, mappingReducerItem)
48
+ }
49
+
50
+ // argument resolver for curry3
51
+ const curry3ResolveArg0 = (
52
+ baseFunc, arg1, arg2,
53
+ ) => function arg0Resolver(arg0) {
54
+ return baseFunc(arg0, arg1, arg2)
55
+ }
56
+
57
+ // argument resolver for curry3
58
+ const curry3ResolveArg1 = (
59
+ baseFunc, arg0, arg2,
60
+ ) => function arg1Resolver(arg1) {
61
+ return baseFunc(arg0, arg1, arg2)
62
+ }
63
+
64
+ // argument resolver for curry3
65
+ const curry3ResolveArg2 = (
66
+ baseFunc, arg0, arg1,
67
+ ) => function arg2Resolver(arg2) {
68
+ return baseFunc(arg0, arg1, arg2)
69
+ }
70
+
71
+ const curry3 = function (baseFunc, arg0, arg1, arg2) {
72
+ if (arg0 == __) {
73
+ return curry3ResolveArg0(baseFunc, arg1, arg2)
74
+ }
75
+ if (arg1 == __) {
76
+ return curry3ResolveArg1(baseFunc, arg0, arg2)
77
+ }
78
+ return curry3ResolveArg2(baseFunc, arg0, arg1)
79
+ }
80
+
81
+ const thunkify2 = (func, arg0, arg1) => function thunk() {
82
+ return func(arg0, arg1)
83
+ }
84
+
85
+ const thunkConditional = (
86
+ conditionalExpression, thunkOnTruthy, thunkOnFalsy,
87
+ ) => conditionalExpression ? thunkOnTruthy() : thunkOnFalsy()
88
+
89
+ const always = value => function getter() { return value }
90
+
91
+ const reducerFilter = (
92
+ reducer, predicate,
93
+ ) => function filteringReducer(result, item) {
94
+ const shouldInclude = predicate(item)
95
+ return isPromise(shouldInclude)
96
+ ? shouldInclude.then(curry3(
97
+ thunkConditional,
98
+ __,
99
+ thunkify2(reducer, result, item),
100
+ always(result)))
101
+ : shouldInclude ? reducer(result, item) : result
102
+ }
103
+
104
+ const isArray = Array.isArray
105
+
106
+ const objectValues = Object.values
107
+
108
+ const objectProto = Object.prototype
109
+
110
+ const nativeObjectToString = objectProto.toString
111
+
112
+ const objectToString = value => nativeObjectToString.call(value)
113
+
114
+ const generatorFunctionTag = '[object GeneratorFunction]'
115
+
116
+ const isGeneratorFunction = value => objectToString(value) == generatorFunctionTag
117
+
118
+ const asyncGeneratorFunctionTag = '[object AsyncGeneratorFunction]'
119
+
120
+ const isAsyncGeneratorFunction = value => objectToString(value) == asyncGeneratorFunctionTag
121
+
122
+ const iteratorReduceAsync = async function (
123
+ iterator, reducer, result,
124
+ ) {
125
+ let iteration = iterator.next()
126
+ if (iteration.done) {
127
+ return result
128
+ }
129
+
130
+ while (!iteration.done) {
131
+ result = reducer(result, iteration.value)
132
+ if (isPromise(result)) {
133
+ result = await result
134
+ }
135
+ iteration = iterator.next()
136
+ }
137
+ return result
138
+ }
139
+
140
+ const iteratorReduce = function (iterator, reducer, result) {
141
+ let iteration = iterator.next()
142
+ if (iteration.done) {
143
+ return result
144
+ }
145
+ if (result === undefined) {
146
+ result = iteration.value
147
+ iteration = iterator.next()
148
+ }
149
+ while (!iteration.done) {
150
+ result = reducer(result, iteration.value)
151
+ if (isPromise(result)) {
152
+ return result.then(curry3(iteratorReduceAsync, iterator, reducer, __))
153
+ }
154
+ iteration = iterator.next()
155
+ }
156
+ return result
157
+ }
158
+
159
+ const asyncIteratorReduce = async function (asyncIterator, reducer, result) {
160
+ let iteration = await asyncIterator.next()
161
+ if (iteration.done) {
162
+ return result
163
+ }
164
+ if (result === undefined) {
165
+ result = iteration.value
166
+ iteration = await asyncIterator.next()
167
+ }
168
+
169
+ while (!iteration.done) {
170
+ result = await reducer(result, iteration.value)
171
+ iteration = await asyncIterator.next()
172
+ }
173
+ return result
174
+ }
175
+
176
+ const symbolIterator = Symbol.iterator
177
+
178
+ const symbolAsyncIterator = Symbol.asyncIterator
179
+
180
+ // argument resolver for curryArgs3
181
+ const curryArgs3ResolveArgs0 = (
182
+ baseFunc, arg1, arg2,
183
+ ) => function args0Resolver(...args) {
184
+ return baseFunc(args, arg1, arg2)
185
+ }
186
+
187
+ // argument resolver for curryArgs3
188
+ const curryArgs3ResolveArgs1 = (
189
+ baseFunc, arg0, arg2,
190
+ ) => function arg1Resolver(...args) {
191
+ return baseFunc(arg0, args, arg2)
192
+ }
193
+
194
+ // argument resolver for curryArgs3
195
+ const curryArgs3ResolveArgs2 = (
196
+ baseFunc, arg0, arg1,
197
+ ) => function arg2Resolver(...args) {
198
+ return baseFunc(arg0, arg1, args)
199
+ }
200
+
201
+ const curryArgs3 = function (baseFunc, arg0, arg1, arg2) {
202
+ if (arg0 == __) {
203
+ return curryArgs3ResolveArgs0(baseFunc, arg1, arg2)
204
+ }
205
+ if (arg1 == __) {
206
+ return curryArgs3ResolveArgs1(baseFunc, arg0, arg2)
207
+ }
208
+ return curryArgs3ResolveArgs2(baseFunc, arg0, arg1)
209
+ }
210
+
211
+ // argument resolver for curry4
212
+ const curry4ResolveArg0 = (
213
+ baseFunc, arg1, arg2, arg3,
214
+ ) => function arg0Resolver(arg0) {
215
+ return baseFunc(arg0, arg1, arg2, arg3)
216
+ }
217
+
218
+ // argument resolver for curry4
219
+ const curry4ResolveArg1 = (
220
+ baseFunc, arg0, arg2, arg3,
221
+ ) => function arg1Resolver(arg1) {
222
+ return baseFunc(arg0, arg1, arg2, arg3)
223
+ }
224
+
225
+ // argument resolver for curry4
226
+ const curry4ResolveArg2 = (
227
+ baseFunc, arg0, arg1, arg3,
228
+ ) => function arg2Resolver(arg2) {
229
+ return baseFunc(arg0, arg1, arg2, arg3)
230
+ }
231
+
232
+ // argument resolver for curry4
233
+ const curry4ResolveArg3 = (
234
+ baseFunc, arg0, arg1, arg2,
235
+ ) => function arg3Resolver(arg3) {
236
+ return baseFunc(arg0, arg1, arg2, arg3)
237
+ }
238
+
239
+ const curry4 = function (baseFunc, arg0, arg1, arg2, arg3) {
240
+ if (arg0 == __) {
241
+ return curry4ResolveArg0(baseFunc, arg1, arg2, arg3)
242
+ }
243
+ if (arg1 == __) {
244
+ return curry4ResolveArg1(baseFunc, arg0, arg2, arg3)
245
+ }
246
+ if (arg2 == __) {
247
+ return curry4ResolveArg2(baseFunc, arg0, arg1, arg3)
248
+ }
249
+ return curry4ResolveArg3(baseFunc, arg0, arg1, arg2)
250
+ }
251
+
252
+ const arrayReduceAsync = async function (
253
+ array, reducer, result, index,
254
+ ) {
255
+ const length = array.length
256
+ while (++index < length) {
257
+ result = reducer(result, array[index], index, array)
258
+ if (isPromise(result)) {
259
+ result = await result
260
+ }
261
+ }
262
+ return result
263
+ }
264
+
265
+ const arrayReduce = function (array, reducer, result) {
266
+ const arrayLength = array.length
267
+ let index = -1
268
+ if (result === undefined) {
269
+ result = array[++index]
270
+ }
271
+ while (++index < arrayLength) {
272
+ result = reducer(result, array[index], index, array)
273
+ if (isPromise(result)) {
274
+ return result.then(curry4(arrayReduceAsync, array, reducer, __, index))
275
+ }
276
+ }
277
+ return result
278
+ }
279
+
280
+ // argument resolver for curry5
281
+ const curry5ResolveArg0 = (
282
+ baseFunc, arg1, arg2, arg3, arg4,
283
+ ) => function arg0Resolver(arg0) {
284
+ return baseFunc(arg0, arg1, arg2, arg3, arg4)
285
+ }
286
+
287
+ // argument resolver for curry5
288
+ const curry5ResolveArg1 = (
289
+ baseFunc, arg0, arg2, arg3, arg4,
290
+ ) => function arg1Resolver(arg1) {
291
+ return baseFunc(arg0, arg1, arg2, arg3, arg4)
292
+ }
293
+
294
+ // argument resolver for curry5
295
+ const curry5ResolveArg2 = (
296
+ baseFunc, arg0, arg1, arg3, arg4,
297
+ ) => function arg2Resolver(arg2) {
298
+ return baseFunc(arg0, arg1, arg2, arg3, arg4)
299
+ }
300
+
301
+ // argument resolver for curry5
302
+ const curry5ResolveArg3 = (
303
+ baseFunc, arg0, arg1, arg2, arg4,
304
+ ) => function arg3Resolver(arg3) {
305
+ return baseFunc(arg0, arg1, arg2, arg3, arg4)
306
+ }
307
+
308
+ // argument resolver for curry5
309
+ const curry5ResolveArg4 = (
310
+ baseFunc, arg0, arg1, arg2, arg3,
311
+ ) => function arg3Resolver(arg4) {
312
+ return baseFunc(arg0, arg1, arg2, arg3, arg4)
313
+ }
314
+
315
+ const curry5 = function (baseFunc, arg0, arg1, arg2, arg3, arg4) {
316
+ if (arg0 == __) {
317
+ return curry5ResolveArg0(baseFunc, arg1, arg2, arg3, arg4)
318
+ }
319
+ if (arg1 == __) {
320
+ return curry5ResolveArg1(baseFunc, arg0, arg2, arg3, arg4)
321
+ }
322
+ if (arg2 == __) {
323
+ return curry5ResolveArg2(baseFunc, arg0, arg1, arg3, arg4)
324
+ }
325
+ if (arg3 == __) {
326
+ return curry5ResolveArg3(baseFunc, arg0, arg1, arg2, arg4)
327
+ }
328
+ return curry5ResolveArg4(baseFunc, arg0, arg1, arg2, arg3)
329
+ }
330
+
331
+ const objectKeys = Object.keys
332
+
333
+ const objectReduceAsync = async function (object, reducer, result, keys, index) {
334
+ const keysLength = keys.length
335
+ while (++index < keysLength) {
336
+ const key = keys[index]
337
+ result = reducer(result, object[key], key, object)
338
+ if (isPromise(result)) {
339
+ result = await result
340
+ }
341
+ }
342
+ return result
343
+ }
344
+
345
+ const objectReduce = function (object, reducer, result) {
346
+ const keys = objectKeys(object),
347
+ keysLength = keys.length
348
+ let index = -1
349
+ if (result === undefined) {
350
+ result = object[keys[++index]]
351
+ }
352
+ while (++index < keysLength) {
353
+ const key = keys[index]
354
+ result = reducer(result, object[key], key, object)
355
+ if (isPromise(result)) {
356
+ return result.then(curry5(objectReduceAsync, object, reducer, __, keys, index))
357
+ }
358
+ }
359
+ return result
360
+ }
361
+
362
+ const mapReduceAsync = async function (
363
+ map, reducer, result, mapEntriesIter,
364
+ ) {
365
+ for (const [key, value] of mapEntriesIter) {
366
+ result = reducer(result, value, key, map)
367
+ if (isPromise(result)) {
368
+ result = await result
369
+ }
370
+ }
371
+ return result
372
+ }
373
+
374
+ const mapReduce = function (map, reducer, result) {
375
+ const mapEntriesIter = map.entries()
376
+ if (result === undefined) {
377
+ const firstIteration = mapEntriesIter.next()
378
+ if (firstIteration.done) {
379
+ return result
380
+ }
381
+ result = firstIteration.value[1]
382
+ }
383
+ for (const [key, value] of mapEntriesIter) {
384
+ result = reducer(result, value, key, map)
385
+ if (isPromise(result)) {
386
+ return result.then(curry4(
387
+ mapReduceAsync, map, reducer, __, mapEntriesIter))
388
+ }
389
+ }
390
+ return result
391
+ }
392
+
393
+ const reducerConcat = (
394
+ reducerA, reducerB,
395
+ ) => function pipedReducer(result, item) {
396
+ const intermediate = reducerA(result, item)
397
+ return isPromise(intermediate)
398
+ ? intermediate.then(curry2(reducerB, __, item))
399
+ : reducerB(intermediate, item)
400
+ }
401
+
402
+ const genericReduce = function (collection, reducer, result) {
403
+ if (isArray(collection)) {
404
+ return arrayReduce(collection, reducer, result)
405
+ }
406
+ if (collection == null) {
407
+ return result === undefined
408
+ ? curry2(reducer, collection, __)
409
+ : reducer(result, collection)
410
+ }
411
+
412
+ if (collection.constructor == Map) {
413
+ return mapReduce(collection, reducer, result)
414
+ }
415
+ if (typeof collection[symbolIterator] == 'function') {
416
+ return iteratorReduce(
417
+ collection[symbolIterator](), reducer, result)
418
+ }
419
+ if (typeof collection[symbolAsyncIterator] == 'function') {
420
+ return asyncIteratorReduce(
421
+ collection[symbolAsyncIterator](), reducer, result)
422
+ }
423
+ if (typeof collection.reduce == 'function') {
424
+ return collection.reduce(reducer, result)
425
+ }
426
+ if (typeof collection.chain == 'function') {
427
+ return collection.chain(curry2(reducer, result, __))
428
+ }
429
+ if (typeof collection.flatMap == 'function') {
430
+ return collection.flatMap(curry2(reducer, result, __))
431
+ }
432
+ if (collection.constructor == Object) {
433
+ return objectReduce(collection, reducer, result)
434
+ }
435
+ return result === undefined
436
+ ? curry2(reducer, collection, __)
437
+ : reducer(result, collection)
438
+ }
439
+
440
+ const reducerFlatMap = (
441
+ reducer, flatMapper,
442
+ ) => function flatMappingReducer(result, value) {
443
+ const monad = flatMapper(value)
444
+ return isPromise(monad)
445
+ ? monad.then(curry3(genericReduce, __, reducer, result))
446
+ : genericReduce(monad, reducer, result)
447
+ }
448
+
449
+ const reducerForEach = (
450
+ reducer, callback,
451
+ ) => function executingForEach(result, item) {
452
+ const operation = callback(item)
453
+ if (isPromise(operation)) {
454
+ return operation.then(thunkify2(reducer, result, item))
455
+ }
456
+ return reducer(result, item)
457
+ }
458
+
459
+ const Transducer = {}
460
+
461
+ Transducer.map = function transducerMap(mapper) {
462
+ return curry2(reducerMap, __, mapper)
463
+ }
464
+
465
+ Transducer.filter = function transducerFilter(predicate) {
466
+ return curry2(reducerFilter, __, predicate)
467
+ }
468
+
469
+ Transducer.flatMap = function transducerFlatMap(flatMapper) {
470
+ return curry2(reducerFlatMap, __, flatMapper)
471
+ }
472
+
473
+ Transducer.forEach = function transducerForEach(func) {
474
+ return curry2(reducerForEach, __, func)
475
+ }
476
+
477
+ Transducer.passthrough = function transducerPassthrough(reducer) {
478
+ return reducer
479
+ }
480
+
481
+ export default Transducer
@@ -0,0 +1,7 @@
1
+ /**
2
+ * rubico v2.0.1
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 isPromise=r=>null!=r&&"function"==typeof r.then,funcConcat=(r,e)=>function(...n){const t=r(...n);return isPromise(t)?t.then(e):e(t)},__=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)},reducerMap=(r,e)=>function(n,t){const o=e(t);return isPromise(o)?o.then(curry2(r,n,__)):r(n,o)},curry3ResolveArg0=(r,e,n)=>function(t){return r(t,e,n)},curry3ResolveArg1=(r,e,n)=>function(t){return r(e,t,n)},curry3ResolveArg2=(r,e,n)=>function(t){return r(e,n,t)},curry3=function(r,e,n,t){return e==__?curry3ResolveArg0(r,n,t):n==__?curry3ResolveArg1(r,e,t):curry3ResolveArg2(r,e,n)},thunkify2=(r,e,n)=>function(){return r(e,n)},thunkConditional=(r,e,n)=>r?e():n(),always=r=>function(){return r},reducerFilter=(r,e)=>function(n,t){const o=e(t);return isPromise(o)?o.then(curry3(thunkConditional,__,thunkify2(r,n,t),(c=n,function(){return c}))):o?r(n,t):n;var c},isArray=Array.isArray,objectValues=Object.values,objectProto=Object.prototype,nativeObjectToString=objectProto.toString,objectToString=r=>nativeObjectToString.call(r),generatorFunctionTag="[object GeneratorFunction]",isGeneratorFunction=r=>objectToString(r)==generatorFunctionTag,asyncGeneratorFunctionTag="[object AsyncGeneratorFunction]",isAsyncGeneratorFunction=r=>objectToString(r)==asyncGeneratorFunctionTag,iteratorReduceAsync=async function(r,e,n){let t=r.next();if(t.done)return n;for(;!t.done;)n=e(n,t.value),isPromise(n)&&(n=await n),t=r.next();return n},iteratorReduce=function(r,e,n){let t=r.next();if(t.done)return n;for(void 0===n&&(n=t.value,t=r.next());!t.done;){if(n=e(n,t.value),isPromise(n))return n.then(curry3(iteratorReduceAsync,r,e,__));t=r.next()}return n},asyncIteratorReduce=async function(r,e,n){let t=await r.next();if(t.done)return n;for(void 0===n&&(n=t.value,t=await r.next());!t.done;)n=await e(n,t.value),t=await r.next();return n},symbolIterator=Symbol.iterator,symbolAsyncIterator=Symbol.asyncIterator,curryArgs3ResolveArgs0=(r,e,n)=>function(...t){return r(t,e,n)},curryArgs3ResolveArgs1=(r,e,n)=>function(...t){return r(e,t,n)},curryArgs3ResolveArgs2=(r,e,n)=>function(...t){return r(e,n,t)},curryArgs3=function(r,e,n,t){return e==__?curryArgs3ResolveArgs0(r,n,t):n==__?curryArgs3ResolveArgs1(r,e,t):curryArgs3ResolveArgs2(r,e,n)},curry4ResolveArg0=(r,e,n,t)=>function(o){return r(o,e,n,t)},curry4ResolveArg1=(r,e,n,t)=>function(o){return r(e,o,n,t)},curry4ResolveArg2=(r,e,n,t)=>function(o){return r(e,n,o,t)},curry4ResolveArg3=(r,e,n,t)=>function(o){return r(e,n,t,o)},curry4=function(r,e,n,t,o){return e==__?curry4ResolveArg0(r,n,t,o):n==__?curry4ResolveArg1(r,e,t,o):t==__?curry4ResolveArg2(r,e,n,o):curry4ResolveArg3(r,e,n,t)},arrayReduceAsync=async function(r,e,n,t){const o=r.length;for(;++t<o;)n=e(n,r[t],t,r),isPromise(n)&&(n=await n);return n},arrayReduce=function(r,e,n){const t=r.length;let o=-1;for(void 0===n&&(n=r[++o]);++o<t;)if(n=e(n,r[o],o,r),isPromise(n))return n.then(curry4(arrayReduceAsync,r,e,__,o));return n},curry5ResolveArg0=(r,e,n,t,o)=>function(c){return r(c,e,n,t,o)},curry5ResolveArg1=(r,e,n,t,o)=>function(c){return r(e,c,n,t,o)},curry5ResolveArg2=(r,e,n,t,o)=>function(c){return r(e,n,c,t,o)},curry5ResolveArg3=(r,e,n,t,o)=>function(c){return r(e,n,t,c,o)},curry5ResolveArg4=(r,e,n,t,o)=>function(c){return r(e,n,t,o,c)},curry5=function(r,e,n,t,o,c){return e==__?curry5ResolveArg0(r,n,t,o,c):n==__?curry5ResolveArg1(r,e,t,o,c):t==__?curry5ResolveArg2(r,e,n,o,c):o==__?curry5ResolveArg3(r,e,n,t,c):curry5ResolveArg4(r,e,n,t,o)},objectKeys=Object.keys,objectReduceAsync=async function(r,e,n,t,o){const c=t.length;for(;++o<c;){const c=t[o];n=e(n,r[c],c,r),isPromise(n)&&(n=await n)}return n},objectReduce=function(r,e,n){const t=objectKeys(r),o=t.length;let c=-1;for(void 0===n&&(n=r[t[++c]]);++c<o;){const o=t[c];if(n=e(n,r[o],o,r),isPromise(n))return n.then((u=objectReduceAsync,s=e,y=__,a=t,f=c,(i=r)==__?curry5ResolveArg0(u,s,y,a,f):s==__?curry5ResolveArg1(u,i,y,a,f):y==__?curry5ResolveArg2(u,i,s,a,f):a==__?curry5ResolveArg3(u,i,s,y,f):curry5ResolveArg4(u,i,s,y,a)))}var u,i,s,y,a,f;return n},mapReduceAsync=async function(r,e,n,t){for(const[o,c]of t)n=e(n,c,o,r),isPromise(n)&&(n=await n);return n},mapReduce=function(r,e,n){const t=r.entries();if(void 0===n){const r=t.next();if(r.done)return n;n=r.value[1]}for(const[o,c]of t)if(n=e(n,c,o,r),isPromise(n))return n.then(curry4(mapReduceAsync,r,e,__,t));return n},reducerConcat=(r,e)=>function(n,t){const o=r(n,t);return isPromise(o)?o.then(curry2(e,__,t)):e(o,t)},genericReduce=function(r,e,n){return isArray(r)?arrayReduce(r,e,n):null==r?void 0===n?curry2(e,r,__):e(n,r):r.constructor==Map?mapReduce(r,e,n):"function"==typeof r[symbolIterator]?iteratorReduce(r[symbolIterator](),e,n):"function"==typeof r[symbolAsyncIterator]?asyncIteratorReduce(r[symbolAsyncIterator](),e,n):"function"==typeof r.reduce?r.reduce(e,n):"function"==typeof r.chain?r.chain(curry2(e,n,__)):"function"==typeof r.flatMap?r.flatMap(curry2(e,n,__)):r.constructor==Object?objectReduce(r,e,n):void 0===n?curry2(e,r,__):e(n,r)},reducerFlatMap=(r,e)=>function(n,t){const o=e(t);return isPromise(o)?o.then(curry3(genericReduce,__,r,n)):genericReduce(o,r,n)},reducerForEach=(r,e)=>function(n,t){const o=e(t);return isPromise(o)?o.then(thunkify2(r,n,t)):r(n,t)},Transducer={map:function(r){return curry2(reducerMap,__,r)},filter:function(r){return curry2(reducerFilter,__,r)},flatMap:function(r){return curry2(reducerFlatMap,__,r)},forEach:function(r){return curry2(reducerForEach,__,r)},passthrough:function(r){return r}};export default Transducer;