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