@typed/fx 0.0.9 → 0.0.12

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 (539) hide show
  1. package/.eslintcache +1 -1
  2. package/cjs/Fx.d.ts +19 -8
  3. package/cjs/Fx.d.ts.map +1 -1
  4. package/cjs/Fx.js +12 -2
  5. package/cjs/Fx.js.map +1 -1
  6. package/cjs/Subject.d.ts +22 -0
  7. package/cjs/Subject.d.ts.map +1 -0
  8. package/cjs/Subject.js +58 -0
  9. package/cjs/Subject.js.map +1 -0
  10. package/cjs/_internal.d.ts +19 -20
  11. package/cjs/_internal.d.ts.map +1 -1
  12. package/cjs/_internal.js +21 -76
  13. package/cjs/_internal.js.map +1 -1
  14. package/cjs/combine.d.ts +4 -4
  15. package/cjs/combine.d.ts.map +1 -1
  16. package/cjs/combine.js +9 -13
  17. package/cjs/combine.js.map +1 -1
  18. package/cjs/continueWith.d.ts +2 -2
  19. package/cjs/continueWith.d.ts.map +1 -1
  20. package/cjs/continueWith.js +2 -3
  21. package/cjs/continueWith.js.map +1 -1
  22. package/cjs/debounce.d.ts +2 -11
  23. package/cjs/debounce.d.ts.map +1 -1
  24. package/cjs/debounce.js +4 -24
  25. package/cjs/debounce.js.map +1 -1
  26. package/cjs/delay.d.ts +2 -2
  27. package/cjs/delay.d.ts.map +1 -1
  28. package/cjs/delay.js +4 -5
  29. package/cjs/delay.js.map +1 -1
  30. package/cjs/during.d.ts +1 -1
  31. package/cjs/during.d.ts.map +1 -1
  32. package/cjs/during.js +6 -9
  33. package/cjs/during.js.map +1 -1
  34. package/cjs/filterLoop.d.ts +25 -0
  35. package/cjs/filterLoop.d.ts.map +1 -0
  36. package/cjs/filterLoop.js +108 -0
  37. package/cjs/filterLoop.js.map +1 -0
  38. package/cjs/filterMap.d.ts +24 -0
  39. package/cjs/filterMap.d.ts.map +1 -0
  40. package/cjs/{map.js → filterMap.js} +27 -40
  41. package/cjs/filterMap.js.map +1 -0
  42. package/cjs/flatMap.d.ts +2 -10
  43. package/cjs/flatMap.d.ts.map +1 -1
  44. package/cjs/flatMap.js +10 -25
  45. package/cjs/flatMap.js.map +1 -1
  46. package/cjs/flatMapConcurrently.d.ts +2 -2
  47. package/cjs/flatMapConcurrently.d.ts.map +1 -1
  48. package/cjs/flatMapConcurrently.js +3 -3
  49. package/cjs/flatMapConcurrently.js.map +1 -1
  50. package/cjs/fromEffect.d.ts +34 -15
  51. package/cjs/fromEffect.d.ts.map +1 -1
  52. package/cjs/fromEffect.js +28 -15
  53. package/cjs/fromEffect.js.map +1 -1
  54. package/cjs/fromIterable.d.ts +9 -0
  55. package/cjs/fromIterable.d.ts.map +1 -0
  56. package/cjs/{drain.js → fromIterable.js} +14 -13
  57. package/cjs/fromIterable.js.map +1 -0
  58. package/cjs/hold.d.ts +16 -17
  59. package/cjs/hold.d.ts.map +1 -1
  60. package/cjs/hold.js +28 -25
  61. package/cjs/hold.js.map +1 -1
  62. package/cjs/index.d.ts +19 -15
  63. package/cjs/index.d.ts.map +1 -1
  64. package/cjs/index.js +19 -28
  65. package/cjs/index.js.map +1 -1
  66. package/cjs/mapCause.d.ts +5 -0
  67. package/cjs/mapCause.d.ts.map +1 -0
  68. package/cjs/mapCause.js +41 -0
  69. package/cjs/mapCause.js.map +1 -0
  70. package/cjs/mapEffect.d.ts +4 -0
  71. package/cjs/mapEffect.d.ts.map +1 -0
  72. package/cjs/{never.js → mapEffect.js} +6 -4
  73. package/cjs/mapEffect.js.map +1 -0
  74. package/cjs/merge.d.ts +3 -3
  75. package/cjs/merge.d.ts.map +1 -1
  76. package/cjs/merge.js +7 -11
  77. package/cjs/merge.js.map +1 -1
  78. package/cjs/multicast.d.ts +20 -19
  79. package/cjs/multicast.d.ts.map +1 -1
  80. package/cjs/multicast.js +30 -34
  81. package/cjs/multicast.js.map +1 -1
  82. package/cjs/orElse.d.ts +2 -5
  83. package/cjs/orElse.d.ts.map +1 -1
  84. package/cjs/orElse.js +9 -11
  85. package/cjs/orElse.js.map +1 -1
  86. package/cjs/provide.d.ts +8 -8
  87. package/cjs/provide.d.ts.map +1 -1
  88. package/cjs/provide.js +23 -9
  89. package/cjs/provide.js.map +1 -1
  90. package/cjs/runCollect.d.ts +4 -0
  91. package/cjs/runCollect.d.ts.map +1 -0
  92. package/cjs/{from.js → runCollect.js} +6 -15
  93. package/cjs/runCollect.js.map +1 -0
  94. package/cjs/runDrain.d.ts +4 -0
  95. package/cjs/runDrain.d.ts.map +1 -0
  96. package/cjs/runDrain.js +38 -0
  97. package/cjs/runDrain.js.map +1 -0
  98. package/cjs/runObserve.d.ts +4 -0
  99. package/cjs/runObserve.d.ts.map +1 -0
  100. package/cjs/{takeUntil.js → runObserve.js} +6 -17
  101. package/cjs/runObserve.js.map +1 -0
  102. package/cjs/runReduce.d.ts +6 -0
  103. package/cjs/runReduce.d.ts.map +1 -0
  104. package/cjs/runReduce.js +50 -0
  105. package/cjs/runReduce.js.map +1 -0
  106. package/cjs/scheduled.d.ts +4 -4
  107. package/cjs/scheduled.d.ts.map +1 -1
  108. package/cjs/scheduled.js +8 -8
  109. package/cjs/scheduled.js.map +1 -1
  110. package/cjs/since.d.ts +1 -1
  111. package/cjs/since.d.ts.map +1 -1
  112. package/cjs/since.js +5 -9
  113. package/cjs/since.js.map +1 -1
  114. package/cjs/skipRepeats.d.ts +1 -1
  115. package/cjs/skipRepeats.d.ts.map +1 -1
  116. package/cjs/skipRepeats.js +4 -5
  117. package/cjs/skipRepeats.js.map +1 -1
  118. package/cjs/skipWhile.d.ts +3 -3
  119. package/cjs/skipWhile.d.ts.map +1 -1
  120. package/cjs/skipWhile.js +12 -15
  121. package/cjs/skipWhile.js.map +1 -1
  122. package/cjs/slice.d.ts +3 -3
  123. package/cjs/slice.d.ts.map +1 -1
  124. package/cjs/slice.js +15 -23
  125. package/cjs/slice.js.map +1 -1
  126. package/cjs/snapshot.d.ts +2 -2
  127. package/cjs/snapshot.d.ts.map +1 -1
  128. package/cjs/snapshot.js +6 -8
  129. package/cjs/snapshot.js.map +1 -1
  130. package/cjs/suspendSucceed.d.ts +1 -1
  131. package/cjs/suspendSucceed.d.ts.map +1 -1
  132. package/cjs/suspendSucceed.js +1 -25
  133. package/cjs/suspendSucceed.js.map +1 -1
  134. package/cjs/switchMap.d.ts +1 -9
  135. package/cjs/switchMap.d.ts.map +1 -1
  136. package/cjs/switchMap.js +5 -18
  137. package/cjs/switchMap.js.map +1 -1
  138. package/cjs/takeWhile.d.ts +3 -3
  139. package/cjs/takeWhile.d.ts.map +1 -1
  140. package/cjs/takeWhile.js +6 -38
  141. package/cjs/takeWhile.js.map +1 -1
  142. package/cjs/tapEffect.d.ts +5 -0
  143. package/cjs/tapEffect.d.ts.map +1 -0
  144. package/cjs/{observe.js → tapEffect.js} +8 -15
  145. package/cjs/tapEffect.js.map +1 -0
  146. package/cjs/throttle.d.ts +2 -2
  147. package/cjs/throttle.d.ts.map +1 -1
  148. package/cjs/throttle.js +6 -13
  149. package/cjs/throttle.js.map +1 -1
  150. package/cjs/transform.d.ts +13 -8
  151. package/cjs/transform.d.ts.map +1 -1
  152. package/cjs/transform.js +9 -2
  153. package/cjs/transform.js.map +1 -1
  154. package/cjs/until.d.ts +1 -1
  155. package/cjs/until.d.ts.map +1 -1
  156. package/cjs/until.js +5 -7
  157. package/cjs/until.js.map +1 -1
  158. package/{esm/fromCallback.d.ts → cjs/withEmitter.d.ts} +4 -4
  159. package/cjs/withEmitter.d.ts.map +1 -0
  160. package/cjs/{fromCallback.js → withEmitter.js} +22 -16
  161. package/cjs/withEmitter.js.map +1 -0
  162. package/cjs/zip.d.ts +4 -4
  163. package/cjs/zip.d.ts.map +1 -1
  164. package/cjs/zip.js +11 -15
  165. package/cjs/zip.js.map +1 -1
  166. package/cjs/zipIterable.d.ts +4 -0
  167. package/cjs/zipIterable.d.ts.map +1 -0
  168. package/cjs/{zipItems.js → zipIterable.js} +23 -20
  169. package/cjs/zipIterable.js.map +1 -0
  170. package/esm/Fx.d.ts +19 -8
  171. package/esm/Fx.d.ts.map +1 -1
  172. package/esm/Fx.js +10 -1
  173. package/esm/Fx.js.map +1 -1
  174. package/esm/Subject.d.ts +22 -0
  175. package/esm/Subject.d.ts.map +1 -0
  176. package/esm/Subject.js +32 -0
  177. package/esm/Subject.js.map +1 -0
  178. package/esm/_internal.d.ts +19 -20
  179. package/esm/_internal.d.ts.map +1 -1
  180. package/esm/_internal.js +16 -72
  181. package/esm/_internal.js.map +1 -1
  182. package/esm/combine.d.ts +4 -4
  183. package/esm/combine.d.ts.map +1 -1
  184. package/esm/combine.js +12 -16
  185. package/esm/combine.js.map +1 -1
  186. package/esm/continueWith.d.ts +2 -2
  187. package/esm/continueWith.d.ts.map +1 -1
  188. package/esm/continueWith.js +3 -4
  189. package/esm/continueWith.js.map +1 -1
  190. package/esm/debounce.d.ts +2 -11
  191. package/esm/debounce.d.ts.map +1 -1
  192. package/esm/debounce.js +7 -27
  193. package/esm/debounce.js.map +1 -1
  194. package/esm/delay.d.ts +2 -2
  195. package/esm/delay.d.ts.map +1 -1
  196. package/esm/delay.js +6 -7
  197. package/esm/delay.js.map +1 -1
  198. package/esm/during.d.ts +1 -1
  199. package/esm/during.d.ts.map +1 -1
  200. package/esm/during.js +9 -12
  201. package/esm/during.js.map +1 -1
  202. package/esm/filterLoop.d.ts +25 -0
  203. package/esm/filterLoop.d.ts.map +1 -0
  204. package/esm/filterLoop.js +76 -0
  205. package/esm/filterLoop.js.map +1 -0
  206. package/esm/filterMap.d.ts +24 -0
  207. package/esm/filterMap.d.ts.map +1 -0
  208. package/esm/filterMap.js +53 -0
  209. package/esm/filterMap.js.map +1 -0
  210. package/esm/flatMap.d.ts +2 -10
  211. package/esm/flatMap.d.ts.map +1 -1
  212. package/esm/flatMap.js +9 -24
  213. package/esm/flatMap.js.map +1 -1
  214. package/esm/flatMapConcurrently.d.ts +2 -2
  215. package/esm/flatMapConcurrently.d.ts.map +1 -1
  216. package/esm/flatMapConcurrently.js +3 -3
  217. package/esm/flatMapConcurrently.js.map +1 -1
  218. package/esm/fromEffect.d.ts +34 -15
  219. package/esm/fromEffect.d.ts.map +1 -1
  220. package/esm/fromEffect.js +25 -13
  221. package/esm/fromEffect.js.map +1 -1
  222. package/esm/fromIterable.d.ts +9 -0
  223. package/esm/fromIterable.d.ts.map +1 -0
  224. package/esm/fromIterable.js +14 -0
  225. package/esm/fromIterable.js.map +1 -0
  226. package/esm/hold.d.ts +16 -17
  227. package/esm/hold.d.ts.map +1 -1
  228. package/esm/hold.js +28 -25
  229. package/esm/hold.js.map +1 -1
  230. package/esm/index.d.ts +19 -15
  231. package/esm/index.d.ts.map +1 -1
  232. package/esm/index.js +19 -16
  233. package/esm/index.js.map +1 -1
  234. package/esm/mapCause.d.ts +5 -0
  235. package/esm/mapCause.d.ts.map +1 -0
  236. package/esm/mapCause.js +13 -0
  237. package/esm/mapCause.js.map +1 -0
  238. package/esm/mapEffect.d.ts +4 -0
  239. package/esm/mapEffect.d.ts.map +1 -0
  240. package/esm/mapEffect.js +5 -0
  241. package/esm/mapEffect.js.map +1 -0
  242. package/esm/merge.d.ts +3 -3
  243. package/esm/merge.d.ts.map +1 -1
  244. package/esm/merge.js +9 -13
  245. package/esm/merge.js.map +1 -1
  246. package/esm/multicast.d.ts +20 -19
  247. package/esm/multicast.d.ts.map +1 -1
  248. package/esm/multicast.js +33 -37
  249. package/esm/multicast.js.map +1 -1
  250. package/esm/orElse.d.ts +2 -5
  251. package/esm/orElse.d.ts.map +1 -1
  252. package/esm/orElse.js +10 -10
  253. package/esm/orElse.js.map +1 -1
  254. package/esm/provide.d.ts +8 -8
  255. package/esm/provide.d.ts.map +1 -1
  256. package/esm/provide.js +20 -6
  257. package/esm/provide.js.map +1 -1
  258. package/esm/runCollect.d.ts +4 -0
  259. package/esm/runCollect.d.ts.map +1 -0
  260. package/esm/runCollect.js +7 -0
  261. package/esm/runCollect.js.map +1 -0
  262. package/esm/runDrain.d.ts +4 -0
  263. package/esm/runDrain.d.ts.map +1 -0
  264. package/esm/runDrain.js +11 -0
  265. package/esm/runDrain.js.map +1 -0
  266. package/esm/runObserve.d.ts +4 -0
  267. package/esm/runObserve.d.ts.map +1 -0
  268. package/esm/runObserve.js +8 -0
  269. package/esm/runObserve.js.map +1 -0
  270. package/esm/runReduce.d.ts +6 -0
  271. package/esm/runReduce.d.ts.map +1 -0
  272. package/esm/runReduce.js +22 -0
  273. package/esm/runReduce.js.map +1 -0
  274. package/esm/scheduled.d.ts +4 -4
  275. package/esm/scheduled.d.ts.map +1 -1
  276. package/esm/scheduled.js +8 -8
  277. package/esm/scheduled.js.map +1 -1
  278. package/esm/since.d.ts +1 -1
  279. package/esm/since.d.ts.map +1 -1
  280. package/esm/since.js +8 -12
  281. package/esm/since.js.map +1 -1
  282. package/esm/skipRepeats.d.ts +1 -1
  283. package/esm/skipRepeats.d.ts.map +1 -1
  284. package/esm/skipRepeats.js +5 -6
  285. package/esm/skipRepeats.js.map +1 -1
  286. package/esm/skipWhile.d.ts +3 -3
  287. package/esm/skipWhile.d.ts.map +1 -1
  288. package/esm/skipWhile.js +13 -16
  289. package/esm/skipWhile.js.map +1 -1
  290. package/esm/slice.d.ts +3 -3
  291. package/esm/slice.d.ts.map +1 -1
  292. package/esm/slice.js +17 -25
  293. package/esm/slice.js.map +1 -1
  294. package/esm/snapshot.d.ts +2 -2
  295. package/esm/snapshot.d.ts.map +1 -1
  296. package/esm/snapshot.js +8 -10
  297. package/esm/snapshot.js.map +1 -1
  298. package/esm/suspendSucceed.d.ts +1 -1
  299. package/esm/suspendSucceed.d.ts.map +1 -1
  300. package/esm/suspendSucceed.js +1 -2
  301. package/esm/suspendSucceed.js.map +1 -1
  302. package/esm/switchMap.d.ts +1 -9
  303. package/esm/switchMap.d.ts.map +1 -1
  304. package/esm/switchMap.js +6 -18
  305. package/esm/switchMap.js.map +1 -1
  306. package/esm/takeWhile.d.ts +3 -3
  307. package/esm/takeWhile.d.ts.map +1 -1
  308. package/esm/takeWhile.js +8 -17
  309. package/esm/takeWhile.js.map +1 -1
  310. package/esm/tapEffect.d.ts +5 -0
  311. package/esm/tapEffect.d.ts.map +1 -0
  312. package/esm/tapEffect.js +6 -0
  313. package/esm/tapEffect.js.map +1 -0
  314. package/esm/throttle.d.ts +2 -2
  315. package/esm/throttle.d.ts.map +1 -1
  316. package/esm/throttle.js +9 -16
  317. package/esm/throttle.js.map +1 -1
  318. package/esm/transform.d.ts +13 -8
  319. package/esm/transform.d.ts.map +1 -1
  320. package/esm/transform.js +6 -1
  321. package/esm/transform.js.map +1 -1
  322. package/esm/until.d.ts +1 -1
  323. package/esm/until.d.ts.map +1 -1
  324. package/esm/until.js +8 -10
  325. package/esm/until.js.map +1 -1
  326. package/{cjs/fromCallback.d.ts → esm/withEmitter.d.ts} +4 -4
  327. package/esm/withEmitter.d.ts.map +1 -0
  328. package/esm/withEmitter.js +26 -0
  329. package/esm/withEmitter.js.map +1 -0
  330. package/esm/zip.d.ts +4 -4
  331. package/esm/zip.d.ts.map +1 -1
  332. package/esm/zip.js +14 -18
  333. package/esm/zip.js.map +1 -1
  334. package/esm/zipIterable.d.ts +4 -0
  335. package/esm/zipIterable.d.ts.map +1 -0
  336. package/esm/zipIterable.js +26 -0
  337. package/esm/zipIterable.js.map +1 -0
  338. package/package.json +107 -113
  339. package/perf/_internal.ts +39 -35
  340. package/perf/cases/filter-map-reduce.ts +48 -0
  341. package/perf/cases/flatMap.ts +49 -0
  342. package/perf/cases/switchMap.ts +36 -0
  343. package/perf/readme-base.md +14 -0
  344. package/perf/readme.md +40 -0
  345. package/perf/runFullSuite.ts +37 -0
  346. package/perf/runPerfTest.ts +18 -0
  347. package/perf/tsconfig.json +1 -1
  348. package/src/Fx.ts +35 -10
  349. package/src/Subject.ts +46 -0
  350. package/src/_internal.ts +59 -114
  351. package/src/combine.test.ts +15 -16
  352. package/src/combine.ts +44 -48
  353. package/src/continueWith.test.ts +26 -0
  354. package/src/continueWith.ts +9 -11
  355. package/src/debounce.test.ts +4 -6
  356. package/src/debounce.ts +30 -49
  357. package/src/delay.test.ts +5 -6
  358. package/src/delay.ts +9 -8
  359. package/src/during.test.ts +39 -0
  360. package/src/during.ts +43 -47
  361. package/src/filterLoop.test.ts +63 -0
  362. package/src/filterLoop.ts +143 -0
  363. package/src/filterMap.test.ts +33 -0
  364. package/src/filterMap.ts +71 -0
  365. package/src/flatMap.test.ts +39 -12
  366. package/src/flatMap.ts +25 -51
  367. package/src/flatMapConcurrently.test.ts +23 -0
  368. package/src/flatMapConcurrently.ts +6 -12
  369. package/src/fromEffect.ts +74 -26
  370. package/src/fromIterable.ts +15 -0
  371. package/src/hold.test.ts +3 -3
  372. package/src/hold.ts +48 -44
  373. package/src/index.ts +19 -15
  374. package/src/mapCause.test.ts +34 -0
  375. package/src/mapCause.ts +16 -0
  376. package/src/mapEffect.test.ts +21 -0
  377. package/src/mapEffect.ts +17 -0
  378. package/src/merge.test.ts +10 -30
  379. package/src/merge.ts +17 -38
  380. package/src/multicast.test.ts +22 -28
  381. package/src/multicast.ts +71 -57
  382. package/src/orElse.test.ts +22 -0
  383. package/src/orElse.ts +21 -34
  384. package/src/periodic.test.ts +4 -4
  385. package/src/provide.test.ts +56 -0
  386. package/src/provide.ts +47 -36
  387. package/src/runCollect.ts +19 -0
  388. package/src/runDrain.ts +23 -0
  389. package/src/runObserve.ts +31 -0
  390. package/src/runReduce.ts +64 -0
  391. package/src/scheduled.ts +28 -26
  392. package/src/since.test.ts +40 -0
  393. package/src/since.ts +25 -42
  394. package/src/skipRepeats.test.ts +28 -0
  395. package/src/skipRepeats.ts +8 -9
  396. package/src/skipWhile.test.ts +44 -0
  397. package/src/skipWhile.ts +36 -22
  398. package/src/slice.test.ts +12 -10
  399. package/src/slice.ts +36 -42
  400. package/src/snapshot.test.ts +51 -0
  401. package/src/snapshot.ts +48 -37
  402. package/src/suspendSucceed.ts +2 -4
  403. package/src/switchMap.test.ts +23 -13
  404. package/src/switchMap.ts +32 -50
  405. package/src/takeWhile.test.ts +44 -0
  406. package/src/takeWhile.ts +20 -25
  407. package/src/tapEffect.ts +24 -0
  408. package/src/throttle.test.ts +5 -7
  409. package/src/throttle.ts +37 -42
  410. package/src/transform.ts +14 -6
  411. package/src/until.test.ts +8 -14
  412. package/src/until.ts +22 -32
  413. package/src/withEmitter.test.ts +28 -0
  414. package/src/withEmitter.ts +49 -0
  415. package/src/zip.test.ts +12 -13
  416. package/src/zip.ts +45 -52
  417. package/src/zipIterable.test.ts +19 -0
  418. package/src/zipIterable.ts +51 -0
  419. package/cjs/Sink.d.ts +0 -25
  420. package/cjs/Sink.d.ts.map +0 -1
  421. package/cjs/Sink.js +0 -66
  422. package/cjs/Sink.js.map +0 -1
  423. package/cjs/TSemaphore.d.ts +0 -4
  424. package/cjs/TSemaphore.d.ts.map +0 -1
  425. package/cjs/TSemaphore.js +0 -33
  426. package/cjs/TSemaphore.js.map +0 -1
  427. package/cjs/drain.d.ts +0 -7
  428. package/cjs/drain.d.ts.map +0 -1
  429. package/cjs/drain.js.map +0 -1
  430. package/cjs/empty.d.ts +0 -3
  431. package/cjs/empty.d.ts.map +0 -1
  432. package/cjs/empty.js +0 -9
  433. package/cjs/empty.js.map +0 -1
  434. package/cjs/from.d.ts +0 -11
  435. package/cjs/from.d.ts.map +0 -1
  436. package/cjs/from.js.map +0 -1
  437. package/cjs/fromCallback.d.ts.map +0 -1
  438. package/cjs/fromCallback.js.map +0 -1
  439. package/cjs/loop.d.ts +0 -4
  440. package/cjs/loop.d.ts.map +0 -1
  441. package/cjs/loop.js +0 -34
  442. package/cjs/loop.js.map +0 -1
  443. package/cjs/map.d.ts +0 -28
  444. package/cjs/map.d.ts.map +0 -1
  445. package/cjs/map.js.map +0 -1
  446. package/cjs/never.d.ts +0 -2
  447. package/cjs/never.d.ts.map +0 -1
  448. package/cjs/never.js.map +0 -1
  449. package/cjs/observe.d.ts +0 -7
  450. package/cjs/observe.d.ts.map +0 -1
  451. package/cjs/observe.js.map +0 -1
  452. package/cjs/reduce.d.ts +0 -7
  453. package/cjs/reduce.d.ts.map +0 -1
  454. package/cjs/reduce.js +0 -64
  455. package/cjs/reduce.js.map +0 -1
  456. package/cjs/takeUntil.d.ts +0 -4
  457. package/cjs/takeUntil.d.ts.map +0 -1
  458. package/cjs/takeUntil.js.map +0 -1
  459. package/cjs/tap.d.ts +0 -9
  460. package/cjs/tap.d.ts.map +0 -1
  461. package/cjs/tap.js +0 -54
  462. package/cjs/tap.js.map +0 -1
  463. package/cjs/zipItems.d.ts +0 -4
  464. package/cjs/zipItems.d.ts.map +0 -1
  465. package/cjs/zipItems.js.map +0 -1
  466. package/esm/Sink.d.ts +0 -25
  467. package/esm/Sink.d.ts.map +0 -1
  468. package/esm/Sink.js +0 -31
  469. package/esm/Sink.js.map +0 -1
  470. package/esm/TSemaphore.d.ts +0 -4
  471. package/esm/TSemaphore.d.ts.map +0 -1
  472. package/esm/TSemaphore.js +0 -5
  473. package/esm/TSemaphore.js.map +0 -1
  474. package/esm/drain.d.ts +0 -7
  475. package/esm/drain.d.ts.map +0 -1
  476. package/esm/drain.js +0 -12
  477. package/esm/drain.js.map +0 -1
  478. package/esm/empty.d.ts +0 -3
  479. package/esm/empty.d.ts.map +0 -1
  480. package/esm/empty.js +0 -5
  481. package/esm/empty.js.map +0 -1
  482. package/esm/from.d.ts +0 -11
  483. package/esm/from.d.ts.map +0 -1
  484. package/esm/from.js +0 -15
  485. package/esm/from.js.map +0 -1
  486. package/esm/fromCallback.d.ts.map +0 -1
  487. package/esm/fromCallback.js +0 -20
  488. package/esm/fromCallback.js.map +0 -1
  489. package/esm/loop.d.ts +0 -4
  490. package/esm/loop.d.ts.map +0 -1
  491. package/esm/loop.js +0 -29
  492. package/esm/loop.js.map +0 -1
  493. package/esm/map.d.ts +0 -28
  494. package/esm/map.d.ts.map +0 -1
  495. package/esm/map.js +0 -64
  496. package/esm/map.js.map +0 -1
  497. package/esm/never.d.ts +0 -2
  498. package/esm/never.d.ts.map +0 -1
  499. package/esm/never.js +0 -4
  500. package/esm/never.js.map +0 -1
  501. package/esm/observe.d.ts +0 -7
  502. package/esm/observe.d.ts.map +0 -1
  503. package/esm/observe.js +0 -12
  504. package/esm/observe.js.map +0 -1
  505. package/esm/reduce.d.ts +0 -7
  506. package/esm/reduce.d.ts.map +0 -1
  507. package/esm/reduce.js +0 -35
  508. package/esm/reduce.js.map +0 -1
  509. package/esm/takeUntil.d.ts +0 -4
  510. package/esm/takeUntil.d.ts.map +0 -1
  511. package/esm/takeUntil.js +0 -19
  512. package/esm/takeUntil.js.map +0 -1
  513. package/esm/tap.d.ts +0 -9
  514. package/esm/tap.d.ts.map +0 -1
  515. package/esm/tap.js +0 -23
  516. package/esm/tap.js.map +0 -1
  517. package/esm/zipItems.d.ts +0 -4
  518. package/esm/zipItems.d.ts.map +0 -1
  519. package/esm/zipItems.js +0 -23
  520. package/esm/zipItems.js.map +0 -1
  521. package/perf/filter-map-reduce.ts +0 -49
  522. package/perf/flatMap.ts +0 -48
  523. package/perf/switchMap.ts +0 -40
  524. package/src/Sink.ts +0 -84
  525. package/src/TSemaphore.ts +0 -8
  526. package/src/drain.ts +0 -21
  527. package/src/empty.ts +0 -5
  528. package/src/from.test.ts +0 -18
  529. package/src/from.ts +0 -18
  530. package/src/fromCallback.ts +0 -40
  531. package/src/loop.ts +0 -37
  532. package/src/map.ts +0 -83
  533. package/src/never.ts +0 -5
  534. package/src/observe.ts +0 -24
  535. package/src/reduce.ts +0 -81
  536. package/src/takeUntil.ts +0 -29
  537. package/src/tap.ts +0 -48
  538. package/src/zipItems.test.ts +0 -21
  539. package/src/zipItems.ts +0 -41
package/esm/reduce.d.ts DELETED
@@ -1,7 +0,0 @@
1
- import * as Effect from '@effect/core/io/Effect';
2
- import * as Maybe from '@tsplus/stdlib/data/Maybe';
3
- import { Fx } from './Fx.js';
4
- export declare function reduceFilterMap<R, E, A, E1, B>(seed: B, f: (b: B, a: A) => Maybe.Maybe<B>): (fx: Fx<R, E, A, E1>) => Effect.Effect<R, E1 | E, B>;
5
- export declare function reduce<B, A>(seed: B, f: (b: B, a: A) => B): <R, E, E1>(fx: Fx<R, E, A, E1>) => Effect.Effect<R, E | E1, B>;
6
- export declare function collectAll<R, E, A, E1>(fx: Fx<R, E, A, E1>): Effect.Effect<R, E | E1, readonly A[]>;
7
- //# sourceMappingURL=reduce.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reduce.d.ts","sourceRoot":"","sources":["../src/reduce.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAGhD,OAAO,KAAK,KAAK,MAAM,2BAA2B,CAAA;AAElD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAI5B,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAC5E,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAG,aAAa,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAG1D;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kEAwBzD;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EACpC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAClB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAExC"}
package/esm/reduce.js DELETED
@@ -1,35 +0,0 @@
1
- import * as Effect from '@effect/core/io/Effect';
2
- import { makeRef } from '@effect/core/io/Ref';
3
- import { pipe } from '@fp-ts/data/Function';
4
- import * as Maybe from '@tsplus/stdlib/data/Maybe';
5
- import { Sink } from './Sink.js';
6
- import { FilterMapFx, MapFx } from './map.js';
7
- export function reduceFilterMap(seed, f) {
8
- return (fx) => {
9
- return reduceFilterMap_(fx, seed, f);
10
- };
11
- }
12
- export function reduce(seed, f) {
13
- return (fx) => {
14
- if (fx instanceof FilterMapFx) {
15
- return pipe(fx.fx, reduceFilterMap(seed, (b, a) => pipe(a, fx.f, Maybe.map((a2) => f(b, a2)))));
16
- }
17
- if (fx instanceof MapFx) {
18
- return pipe(fx.fx, reduce(seed, (b, a) => f(b, fx.f(a))));
19
- }
20
- return reduce_(fx, seed, f);
21
- };
22
- }
23
- export function collectAll(fx) {
24
- return reduce_(fx, [], (b, a) => b.concat([a]));
25
- }
26
- function reduce_(fx, seed, f) {
27
- return pipe(makeRef(() => seed), Effect.flatMap((ref) => fx.run(Sink((a) => ref.update((b) => f(b, a)), Effect.failCause, ref.get))));
28
- }
29
- function reduceFilterMap_(fx, seed, f) {
30
- return pipe(makeRef(() => seed), Effect.flatMap((ref) => fx.run(Sink((a) => ref.modify((b) => [
31
- null,
32
- pipe(f(b, a), Maybe.getOrElse(() => b)),
33
- ]), Effect.failCause, ref.get))));
34
- }
35
- //# sourceMappingURL=reduce.js.map
package/esm/reduce.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"reduce.js","sourceRoot":"","sources":["../src/reduce.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,2BAA2B,CAAA;AAGlD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAE7C,MAAM,UAAU,eAAe,CAAiB,IAAO,EAAE,CAAiC;IACxF,OAAO,CAAC,EAAmB,EAA+B,EAAE;QAC1D,OAAO,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACtC,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,MAAM,CAAO,IAAO,EAAE,CAAoB;IACxD,OAAO,CAAW,EAAmB,EAA+B,EAAE;QACpE,IAAI,EAAE,YAAY,WAAW,EAAE;YAC7B,OAAO,IAAI,CACT,EAAE,CAAC,EAAE,EACL,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC7B,IAAI,CACF,CAAC,EACD,EAAE,CAAC,CAAC,EACJ,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAC5B,CACF,CACF,CAAA;SACF;QAED,IAAI,EAAE,YAAY,KAAK,EAAE;YACvB,OAAO,IAAI,CACT,EAAE,CAAC,EAAE,EACL,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACtC,CAAA;SACF;QAED,OAAO,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC7B,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,EAAmB;IAEnB,OAAO,OAAO,CAAC,EAAE,EAAE,EAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACjE,CAAC;AAED,SAAS,OAAO,CAAiB,EAAmB,EAAE,IAAO,EAAE,CAAoB;IACjF,OAAO,IAAI,CACT,OAAO,CAAI,GAAG,EAAE,CAAC,IAAI,CAAC,EACtB,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACrB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAC3E,CACF,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,EAAmB,EACnB,IAAO,EACP,CAAiC;IAEjC,OAAO,IAAI,CACT,OAAO,CAAI,GAAG,EAAE,CAAC,IAAI,CAAC,EACtB,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACrB,EAAE,CAAC,GAAG,CACJ,IAAI,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAChB,IAAI;QACJ,IAAI,CACF,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EACP,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CACzB;KACF,CAAC,EACJ,MAAM,CAAC,SAAS,EAChB,GAAG,CAAC,GAAG,CACR,CACF,CACF,CACF,CAAA;AACH,CAAC"}
@@ -1,4 +0,0 @@
1
- import { Predicate } from '@fp-ts/data/Predicate';
2
- import { Fx } from './Fx.js';
3
- export declare function takeUntil<A>(predicate: Predicate<A>): <R, E, E1>(fx: Fx<R, E, A, E1>) => Fx<R, E, A, E1>;
4
- //# sourceMappingURL=takeUntil.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"takeUntil.d.ts","sourceRoot":"","sources":["../src/takeUntil.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAI5B,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,sDAmBnD"}
package/esm/takeUntil.js DELETED
@@ -1,19 +0,0 @@
1
- import * as Effect from '@effect/core/io/Effect';
2
- import * as Exit from '@effect/core/io/Exit';
3
- import { pipe } from '@fp-ts/data/Function';
4
- import { Fx } from './Fx.js';
5
- import { deferredCallback } from './_internal.js';
6
- export function takeUntil(predicate) {
7
- return (fx) => Fx((sink) => deferredCallback((cb) => {
8
- return fx.run({
9
- ...sink,
10
- event: (a) => {
11
- if (!predicate(a)) {
12
- return sink.event(a);
13
- }
14
- return pipe(sink.end, Effect.tap((b) => cb(Exit.succeed(b))));
15
- },
16
- });
17
- }));
18
- }
19
- //# sourceMappingURL=takeUntil.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"takeUntil.js","sourceRoot":"","sources":["../src/takeUntil.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,IAAI,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAG3C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,MAAM,UAAU,SAAS,CAAI,SAAuB;IAClD,OAAO,CAAW,EAAmB,EAAmB,EAAE,CACxD,EAAE,CAAC,CAAY,IAA2B,EAAE,EAAE,CAC5C,gBAAgB,CAA8B,CAAC,EAAE,EAAE,EAAE;QACnD,OAAO,EAAE,CAAC,GAAG,CAAC;YACZ,GAAG,IAAI;YACP,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;gBACX,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;oBACjB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;iBACrB;gBAED,OAAO,IAAI,CACT,IAAI,CAAC,GAAG,EACR,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CACvC,CAAA;YACH,CAAC;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CACH,CAAA;AACL,CAAC"}
package/esm/tap.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import * as Cause from '@effect/core/io/Cause';
2
- import * as Effect from '@effect/core/io/Effect';
3
- import { Fx } from './Fx.js';
4
- export declare function tap<A, B>(f: (a: A) => B): <R, E, E1>(fx: Fx<R, E, A, E1>) => Fx<R, E, A, E1>;
5
- export declare function tapEffect<A, R2, E2, B>(f: (a: A) => Effect.Effect<R2, E2, B>): <R, E, E1>(fx: Fx<R, E, A, E1>) => Fx<R2 | R, E2 | E, A, E2 | E1>;
6
- export declare function tapCauseEffect<E, R2, E2, B>(f: (e: Cause.Cause<E>) => Effect.Effect<R2, E2, B>): <R, A, E1>(fx: Fx<R, E, A, E1>) => Fx<R2 | R, E | E2, A, E2 | E1>;
7
- export declare function tapErrorEffect<E, R2, E2, B>(f: (e: E) => Effect.Effect<R2, E2, B>): <R, A, E1>(fx: Fx<R, E, A, E1>) => Fx<R2 | R, E | E2, A, E2 | E1>;
8
- export declare function tapEndEffect<R2, E2, B>(effect: Effect.Effect<R2, E2, B>): <R, E, A, E1>(fx: Fx<R, E, A, E1>) => Fx<R2 | R, E2 | E, A, E2 | E1>;
9
- //# sourceMappingURL=tap.d.ts.map
package/esm/tap.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"tap.d.ts","sourceRoot":"","sources":["../src/tap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAIhD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAI5B,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,sDAEvC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,qEAK5E;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,qEAK9F;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,qEAejF;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,wEAGvE"}
package/esm/tap.js DELETED
@@ -1,23 +0,0 @@
1
- import * as Cause from '@effect/core/io/Cause';
2
- import * as Effect from '@effect/core/io/Effect';
3
- import { flow, pipe } from '@fp-ts/data/Function';
4
- import * as Either from '@tsplus/stdlib/data/Either';
5
- import { Fx } from './Fx.js';
6
- import { Sink } from './Sink.js';
7
- import { map } from './map.js';
8
- export function tap(f) {
9
- return map((a) => (f(a), a));
10
- }
11
- export function tapEffect(f) {
12
- return (fx) => Fx((sink) => fx.run(Sink((a) => pipe(a, f, Effect.zipRight(sink.event(a))), sink.error, sink.end)));
13
- }
14
- export function tapCauseEffect(f) {
15
- return (fx) => Fx((sink) => fx.run(Sink(sink.event, (e) => pipe(e, f, Effect.zipRight(sink.error(e))), sink.end)));
16
- }
17
- export function tapErrorEffect(f) {
18
- return (fx) => Fx((sink) => fx.run(Sink(sink.event, (e) => pipe(Cause.failureOrCause(e), Either.fold(flow(f, Effect.zipRight(sink.error(e))), sink.error)), sink.end)));
19
- }
20
- export function tapEndEffect(effect) {
21
- return (fx) => Fx((sink) => fx.run(Sink(sink.event, sink.error, Effect.zipRight(sink.end)(effect))));
22
- }
23
- //# sourceMappingURL=tap.js.map
package/esm/tap.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"tap.js","sourceRoot":"","sources":["../src/tap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,uBAAuB,CAAA;AAC9C,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAA;AAEpD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,MAAM,UAAU,GAAG,CAAO,CAAc;IACtC,OAAO,GAAG,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,SAAS,CAAe,CAAqC;IAC3E,OAAO,CAAW,EAAmB,EAAkC,EAAE,CACvE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CACV,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CACtF,CAAA;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAe,CAAkD;IAC7F,OAAO,CAAW,EAAmB,EAAkC,EAAE,CACvE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CACV,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CACtF,CAAA;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAe,CAAqC;IAChF,OAAO,CAAW,EAAmB,EAAkC,EAAE,CACvE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CACV,EAAE,CAAC,GAAG,CACJ,IAAI,CACF,IAAI,CAAC,KAAK,EACV,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,CACF,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CACjE,EACH,IAAI,CAAC,GAAG,CACT,CACF,CACF,CAAA;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAY,MAAgC;IACtE,OAAO,CAAc,EAAmB,EAAkC,EAAE,CAC1E,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACzF,CAAC"}
package/esm/zipItems.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import { Fx } from './Fx.js';
2
- export declare function zipItems<A, B, C>(array: ReadonlyArray<A>, f: (a: A, b: B) => C): <R, E, E1>(fx: Fx<R, E, B, E1>) => Fx<R, E, C, E1>;
3
- export declare function withItems<A>(array: ReadonlyArray<A>): <R, E, B, E1>(fx: Fx<R, E, B, E1>) => Fx<R, E, A, E1>;
4
- //# sourceMappingURL=zipItems.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zipItems.d.ts","sourceRoot":"","sources":["../src/zipItems.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAI5B,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,sDA2B9E;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,yDAEnD"}
package/esm/zipItems.js DELETED
@@ -1,23 +0,0 @@
1
- import * as Effect from '@effect/core/io/Effect';
2
- import * as Exit from '@effect/core/io/Exit';
3
- import { flow, pipe } from '@fp-ts/data/Function';
4
- import { identity } from '@tsplus/stdlib/data/Function';
5
- import { Fx } from './Fx.js';
6
- import { Sink } from './Sink.js';
7
- import { deferredCallback } from './_internal.js';
8
- export function zipItems(array, f) {
9
- return (fx) => Fx((sink) => deferredCallback((cb) => {
10
- let i = 0;
11
- return fx.run(Sink((b) => {
12
- const a = array[i++];
13
- const c = f(a, b);
14
- return pipe(sink.event(c), Effect.flatMap((x) => i === array.length
15
- ? pipe(sink.end, Effect.flatMap(flow(Exit.succeed, cb)))
16
- : Effect.succeed(x)));
17
- }, sink.error, sink.end));
18
- }));
19
- }
20
- export function withItems(array) {
21
- return (fx) => pipe(fx, zipItems(array, identity));
22
- }
23
- //# sourceMappingURL=zipItems.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zipItems.js","sourceRoot":"","sources":["../src/zipItems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,IAAI,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAEvD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,MAAM,UAAU,QAAQ,CAAU,KAAuB,EAAE,CAAoB;IAC7E,OAAO,CAAW,EAAmB,EAAmB,EAAE,CACxD,EAAE,CAAC,CAAY,IAA2B,EAAE,EAAE,CAC5C,gBAAgB,CAA8B,CAAC,EAAE,EAAE,EAAE;QACnD,IAAI,CAAC,GAAG,CAAC,CAAA;QAET,OAAO,EAAE,CAAC,GAAG,CACX,IAAI,CACF,CAAC,CAAC,EAAE,EAAE;YACJ,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;YACpB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAEjB,OAAO,IAAI,CACT,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACb,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACnB,CAAC,KAAK,KAAK,CAAC,MAAM;gBAChB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CACtB,CACF,CAAA;QACH,CAAC,EACD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,CACT,CACF,CAAA;IACH,CAAC,CAAC,CACH,CAAA;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAI,KAAuB;IAClD,OAAO,CAAc,EAAmB,EAAmB,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;AACnG,CAAC"}
@@ -1,49 +0,0 @@
1
- import * as EffectStream from '@effect/core/Stream/Stream'
2
- import { pipe } from '@fp-ts/data/Function'
3
- import * as M from '@most/core'
4
- import * as Chunk from '@tsplus/stdlib/collections/Chunk'
5
- import * as rxjs from 'rxjs'
6
-
7
- import {
8
- array,
9
- effectTsStreamTest,
10
- fxEffectTest,
11
- iterations,
12
- mostStreamTest,
13
- runPerformanceTest,
14
- rxjsObservableTest,
15
- } from './_internal.js'
16
-
17
- import * as Stream from '@/index.js'
18
-
19
- const filterEvens = (x: number) => x % 2 === 0
20
- const addOne = (x: number) => x + 1
21
- const add = (x: number, y: number): number => x + y
22
-
23
- runPerformanceTest({
24
- name: 'filter -> map -> reduce ' + iterations + ' integers',
25
- cases: [
26
- fxEffectTest(() =>
27
- pipe(
28
- Stream.from(array),
29
- Stream.filter(filterEvens),
30
- Stream.map(addOne),
31
- Stream.reduce(0, add),
32
- ),
33
- ),
34
- mostStreamTest(() =>
35
- pipe(M.periodic(0), M.withItems(array), M.filter(filterEvens), M.map(addOne), M.scan(add, 0)),
36
- ),
37
- rxjsObservableTest(() =>
38
- pipe(rxjs.from(array), rxjs.filter(filterEvens), rxjs.map(addOne), rxjs.scan(add, 0)),
39
- ),
40
- effectTsStreamTest(() =>
41
- pipe(
42
- EffectStream.fromChunk(Chunk.from(array)),
43
- EffectStream.filter(filterEvens),
44
- EffectStream.map(addOne),
45
- EffectStream.scan(0, add),
46
- ),
47
- ),
48
- ],
49
- })
package/perf/flatMap.ts DELETED
@@ -1,48 +0,0 @@
1
- import * as EffectStream from '@effect/core/Stream/Stream'
2
- import { pipe } from '@fp-ts/data/Function'
3
- import * as M from '@most/core'
4
- import * as Chunk from '@tsplus/stdlib/collections/Chunk'
5
- import * as rxjs from 'rxjs'
6
-
7
- import {
8
- array,
9
- effectTsStreamTest,
10
- fxEffectTest,
11
- iterations,
12
- mostStreamTest,
13
- runPerformanceTest,
14
- rxjsObservableTest,
15
- } from './_internal.js'
16
-
17
- import * as Stream from '@/index.js'
18
-
19
- const nestedArray = array.map((x) => Array.from({ length: x }, (_, i) => x * 1000 + i))
20
-
21
- const add = (x: number, y: number): number => x + y
22
-
23
- runPerformanceTest({
24
- name: 'flatMap ' + iterations + ' integers',
25
- cases: [
26
- fxEffectTest(() =>
27
- pipe(Stream.from(nestedArray), Stream.flatMap(Stream.from), Stream.reduce(0, add)),
28
- ),
29
- mostStreamTest(() =>
30
- pipe(
31
- M.periodic(0),
32
- M.withItems(nestedArray),
33
- M.chain((ns) => pipe(M.periodic(0), M.withItems(ns))),
34
- M.scan(add, 0),
35
- ),
36
- ),
37
- rxjsObservableTest(() =>
38
- pipe(rxjs.from(nestedArray), rxjs.flatMap(rxjs.from), rxjs.scan(add, 0)),
39
- ),
40
- effectTsStreamTest(() =>
41
- pipe(
42
- EffectStream.fromChunk(Chunk.from(nestedArray)),
43
- EffectStream.flatMap((ns) => EffectStream.fromChunk(Chunk.from(ns))),
44
- EffectStream.scan(0, add),
45
- ),
46
- ),
47
- ],
48
- })
package/perf/switchMap.ts DELETED
@@ -1,40 +0,0 @@
1
- import { pipe } from '@fp-ts/data/Function'
2
- import * as M from '@most/core'
3
- import * as rxjs from 'rxjs'
4
-
5
- import {
6
- array,
7
- fxEffectTest,
8
- iterations,
9
- mostStreamTest,
10
- runPerformanceTest,
11
- rxjsObservableTest,
12
- } from './_internal.js'
13
-
14
- import * as Stream from '@/index.js'
15
-
16
- const nestedArray = array.map((x) => Array.from({ length: x }, (_, i) => x * 1000 + i))
17
-
18
- const add = (x: number, y: number): number => x + y
19
-
20
- runPerformanceTest({
21
- name: 'switchMap ' + iterations + ' integers',
22
- cases: [
23
- fxEffectTest(() =>
24
- pipe(Stream.from(nestedArray), Stream.switchMap(Stream.from), Stream.reduce(0, add)),
25
- ),
26
- mostStreamTest(() =>
27
- pipe(
28
- M.periodic(0),
29
- M.withItems(nestedArray),
30
- M.map((ns) => pipe(M.periodic(0), M.withItems(ns))),
31
- M.switchLatest,
32
- M.scan(add, 0),
33
- ),
34
- ),
35
- rxjsObservableTest(() =>
36
- pipe(rxjs.from(nestedArray), rxjs.switchMap(rxjs.from), rxjs.scan(add, 0)),
37
- ),
38
- // Effect Stream is pull-based and does not offer switchMap
39
- ],
40
- })
package/src/Sink.ts DELETED
@@ -1,84 +0,0 @@
1
- import { Cause } from '@effect/core/io/Cause'
2
- import * as Effect from '@effect/core/io/Effect'
3
- import { flow, pipe } from '@fp-ts/data/Function'
4
- import * as Maybe from '@tsplus/stdlib/data/Maybe'
5
-
6
- export interface Sink<E, A, R2, E2, B> {
7
- readonly event: (value: A) => Effect.Effect<R2, E2, unknown>
8
- readonly error: (cause: Cause<E>) => Effect.Effect<R2, E2, B>
9
- readonly end: Effect.Effect<R2, E2, B>
10
- }
11
-
12
- export function Sink<E, A, R2 = never, E2 = E, B = void>(
13
- event: Sink<E, A, R2, E2, B>['event'],
14
- error: Sink<E, A, R2, E2, B>['error'] = Effect.failCause as any,
15
- end: Sink<E, A, R2, E2, B>['end'] = Effect.unit as any,
16
- ): Sink<E, A, R2, E2, B> {
17
- return { event, error, end }
18
- }
19
-
20
- export namespace Sink {
21
- export type InputErrorsOf<T> = T extends Sink<infer R, any, any, any, any> ? R : never
22
- export type EventOf<T> = T extends Sink<any, infer R, any, any, any> ? R : never
23
- export type ResourcesOf<T> = T extends Sink<any, any, infer R, any, any> ? R : never
24
- export type OutputErrorsOf<T> = T extends Sink<any, any, any, infer R, any> ? R : never
25
- export type OutputOf<T> = T extends Sink<any, any, any, any, infer R> ? R : never
26
- }
27
-
28
- export function mapInputEvent<A, B>(
29
- f: (a: A) => B,
30
- ): <E, R2, E2, C>(sink: Sink<E, B, R2, E2, C>) => Sink<E, A, R2, E2, C> {
31
- return (sink) => Sink(flow(f, sink.event), sink.error, sink.end)
32
- }
33
-
34
- export function mapInputEventEffect<A, R3, E3, B>(
35
- f: (a: A) => Effect.Effect<R3, E3, B>,
36
- ): <E, R2, E2, C>(sink: Sink<E, B, R2, E2, C>) => Sink<E, A, R2 | R3, E2 | E3, C> {
37
- return (sink) => Sink(flow(f, Effect.flatMap(sink.event)), sink.error, sink.end)
38
- }
39
-
40
- export function mapInputCause<E, E2>(
41
- f: (e: Cause<E>) => Cause<E2>,
42
- ): <A, R2, E3, B>(sink: Sink<E2, A, R2, E3, B>) => Sink<E, A, R2, E3, B> {
43
- return (sink) => Sink(sink.event, flow(f, sink.error), sink.end)
44
- }
45
-
46
- export function mapInputCauseEffect<E, R3, E3, E2>(
47
- f: (e: Cause<E>) => Effect.Effect<R3, E3, Cause<E2>>,
48
- ): <A, R2, E4, B>(sink: Sink<E2, A, R2, E4, B>) => Sink<E, A, R2 | R3, E3 | E4, B> {
49
- return (sink) => Sink(sink.event, flow(f, Effect.flatMap(sink.error)), sink.end)
50
- }
51
-
52
- export function mapOutput<B, C>(
53
- f: (b: B) => C,
54
- ): <E, A, R2, E2>(sink: Sink<E, A, R2, E2, B>) => Sink<E, A, R2, E2, C> {
55
- return (sink) => Sink(sink.event, flow(sink.error, Effect.map(f)), pipe(sink.end, Effect.map(f)))
56
- }
57
-
58
- export function mapOutputEffect<B, R3, E3, C>(
59
- f: (b: B) => Effect.Effect<R3, E3, C>,
60
- ): <E, A, R2, E2>(sink: Sink<E, A, R2, E2, B>) => Sink<E, A, R2 | R3, E2 | E3, C> {
61
- return (sink) =>
62
- Sink(sink.event, flow(sink.error, Effect.flatMap(f)), pipe(sink.end, Effect.flatMap(f)))
63
- }
64
-
65
- export function mapOutputCause<E2, E3>(f: (e: Cause<E2>) => Cause<E3>) {
66
- return <E, A, R2, B>(sink: Sink<E, A, R2, E2, B>): Sink<E, A, R2, E3, B> =>
67
- Sink(
68
- flow(sink.event, Effect.mapErrorCause(f)),
69
- flow(sink.error, Effect.mapErrorCause(f)),
70
- pipe(sink.end, Effect.mapErrorCause(f)),
71
- )
72
- }
73
-
74
- export function filterMap<A, B>(f: (a: A) => Maybe.Maybe<B>) {
75
- return <E, R2, E2, C>(sink: Sink<E, B, R2, E2, C>): Sink<E, A, R2, E2, C> =>
76
- Sink(
77
- flow(
78
- f,
79
- Maybe.fold(() => Effect.unit, sink.event),
80
- ),
81
- sink.error,
82
- sink.end,
83
- )
84
- }
package/src/TSemaphore.ts DELETED
@@ -1,8 +0,0 @@
1
- import * as TSemaphore from '@effect/core/stm/TSemaphore'
2
-
3
- import { transform } from './transform.js'
4
-
5
- export const withPermit = (self: TSemaphore.TSemaphore) => transform(TSemaphore.withPermit(self))
6
-
7
- export const withPermits = (permits: number) => (self: TSemaphore.TSemaphore) =>
8
- transform(TSemaphore.withPermits(permits)(self))
package/src/drain.ts DELETED
@@ -1,21 +0,0 @@
1
- import * as Effect from '@effect/core/io/Effect'
2
- import { Fiber } from '@effect/core/io/Fiber'
3
-
4
- import { Fx } from './Fx.js'
5
- import { Sink } from './Sink.js'
6
-
7
- export function drainNow<R, E, A, E1>(fx: Fx<R, E, A, E1>): Effect.Effect<R, E | E1, void> {
8
- return fx.run(Sink(Effect.succeed, Effect.failCause, Effect.unit))
9
- }
10
-
11
- export function drain<R, E, A, E1>(
12
- fx: Fx<R, E, A, E1>,
13
- ): Effect.Effect<R, never, Fiber.Runtime<E | E1, void>> {
14
- return Effect.fork(drainNow(fx))
15
- }
16
-
17
- export function drainDaemon<R, E, A, E1>(
18
- fx: Fx<R, E, A, E1>,
19
- ): Effect.Effect<R, never, Fiber.Runtime<E | E1, void>> {
20
- return Effect.forkDaemon(drainNow(fx))
21
- }
package/src/empty.ts DELETED
@@ -1,5 +0,0 @@
1
- import { Fx } from './Fx.js'
2
-
3
- export function empty<A>(): Fx<unknown, never, A, never> {
4
- return Fx((sink) => sink.end)
5
- }
package/src/from.test.ts DELETED
@@ -1,18 +0,0 @@
1
- import { deepStrictEqual } from 'assert'
2
-
3
- import { unsafeRunPromise } from '@effect/core/io/Effect'
4
-
5
- import { from } from './from.js'
6
- import { collectAll } from './reduce.js'
7
-
8
- describe(import.meta.url, () => {
9
- describe('from', () => {
10
- it('converts a collection into a fx', async () => {
11
- const values = [1, 2, 3]
12
- const test = collectAll(from(values))
13
- const events = await unsafeRunPromise(test)
14
-
15
- deepStrictEqual(events, values)
16
- })
17
- })
18
- })
package/src/from.ts DELETED
@@ -1,18 +0,0 @@
1
- import * as Effect from '@effect/core/io/Effect'
2
- import { pipe } from '@fp-ts/data/Function'
3
- import { Collection } from '@tsplus/stdlib/collections/Collection'
4
-
5
- import { Fx } from './Fx.js'
6
- import { Sink } from './Sink.js'
7
-
8
- export function from<A>(collection: Collection<A>): Fx<never, never, A> {
9
- return new FromCollectionFx(collection)
10
- }
11
-
12
- export class FromCollectionFx<A> implements Fx<never, never, A> {
13
- constructor(readonly collection: Collection<A>) {}
14
-
15
- run<R2, E2, B>(sink: Sink<never, A, R2, E2, B>): Effect.Effect<R2, E2, B> {
16
- return pipe(Effect.forEachDiscard(this.collection, sink.event), Effect.zipRight(sink.end))
17
- }
18
- }
@@ -1,40 +0,0 @@
1
- import { Cause } from '@effect/core/io/Cause'
2
- import * as Effect from '@effect/core/io/Effect'
3
- import * as Exit from '@effect/core/io/Exit'
4
- import { unsafeForkUnstarted } from '@effect/core/io/Fiber/_internal/runtime'
5
- import { flow } from '@fp-ts/data/Function'
6
-
7
- import { Fx } from './Fx.js'
8
- import { Sink } from './Sink.js'
9
-
10
- export function make<R, E, A>(
11
- f: (sink: {
12
- readonly event: (a: A) => void
13
- readonly error: (cause: Cause<E>) => void
14
- readonly end: () => void
15
- }) => Effect.Canceler<R>,
16
- ): Fx<R, E, A> {
17
- return Fx<R, E, A>(<R2, E2, B>(sink: Sink<E, A, R2, E2, B>) =>
18
- Effect.withFiberRuntime<R | R2, E2, B>((fiber, status) => {
19
- const unsafeRun = <R, E, A>(
20
- eff: Effect.Effect<R, E, A>,
21
- observer: (exit: Exit.Exit<E, A>) => void,
22
- ) => {
23
- const f = unsafeForkUnstarted(eff, fiber, status.runtimeFlags)
24
- f.addObserver(observer)
25
- f.start(eff)
26
- }
27
-
28
- return Effect.asyncEffect((cb) =>
29
- f({
30
- event: (a) =>
31
- unsafeRun(sink.event(a), (exit) =>
32
- Exit.isFailure(exit) ? cb(Effect.failCause(exit.cause)) : undefined,
33
- ),
34
- error: (e) => unsafeRun(sink.error(e), flow(Effect.done, cb)),
35
- end: () => unsafeRun(sink.end, flow(Effect.done, cb)),
36
- }),
37
- )
38
- }),
39
- )
40
- }
package/src/loop.ts DELETED
@@ -1,37 +0,0 @@
1
- import { Fx } from './Fx.js'
2
- import { Sink } from './Sink.js'
3
-
4
- export function loop<A, B, C>(seed: A, f: (a: A, b: B) => readonly [C, A]) {
5
- return <R, E, E1>(fx: Fx<R, E, B, E1>): Fx<R, E, C, E1> => new LoopFx(fx, seed, f)
6
- }
7
-
8
- export function scan<A, B>(seed: A, f: (a: A, b: B) => A) {
9
- return loop(seed, (a, b: B) => {
10
- const x = f(a, b)
11
- return [x, x]
12
- })
13
- }
14
-
15
- class LoopFx<R, E, E1, A, B, C> implements Fx<R, E, C, E1> {
16
- constructor(
17
- readonly fx: Fx<R, E, B, E1>,
18
- readonly seed: A,
19
- readonly f: (a: A, b: B) => readonly [C, A],
20
- ) {}
21
-
22
- readonly run: Fx<R, E, C, E1>['run'] = (sink) => {
23
- let acc = this.seed
24
-
25
- return this.fx.run(
26
- Sink(
27
- (b) => {
28
- const [c, a] = this.f(acc, b)
29
- acc = a
30
- return sink.event(c)
31
- },
32
- sink.error,
33
- sink.end,
34
- ),
35
- )
36
- }
37
- }
package/src/map.ts DELETED
@@ -1,83 +0,0 @@
1
- import * as Effect from '@effect/core/io/Effect'
2
- import { flow, identity, pipe } from '@fp-ts/data/Function'
3
- import { Predicate } from '@fp-ts/data/Predicate'
4
- import { Refinement } from '@fp-ts/data/Refinement'
5
- import * as Maybe from '@tsplus/stdlib/data/Maybe'
6
-
7
- import { Fx } from './Fx.js'
8
- import * as Sink from './Sink.js'
9
- import { FromEffectFx } from './fromEffect.js'
10
-
11
- export function map<A, B>(f: (a: A) => B) {
12
- return <R, E, E1>(fx: Fx<R, E, A, E1>): Fx<R, E, B, E1> => MapFx.make(fx, f)
13
- }
14
-
15
- export function as<B>(b: B) {
16
- return <R, E, A, E1>(fx: Fx<R, E, A, E1>): Fx<R, E, B, E1> => map(() => b)(fx)
17
- }
18
-
19
- export function asUnit<R, E, A, E1>(fx: Fx<R, E, A, E1>): Fx<R, E, void, E1> {
20
- return as<void>(undefined)(fx)
21
- }
22
-
23
- export class MapFx<R, E, A, B, E1> implements Fx<R, E, B, E1> {
24
- constructor(readonly fx: Fx<R, E, A, E1>, readonly f: (a: A) => B) {}
25
-
26
- run<R2, E2, C>(sink: Sink.Sink<E, B, R2, E2, C>): Effect.Effect<R | R2, E1 | E2, C> {
27
- return this.fx.run(Sink.mapInputEvent(this.f)(sink))
28
- }
29
-
30
- static make = <R, E, A, B, E1>(fx: Fx<R, E, A, E1>, f: (a: A) => B): Fx<R, E, B, E1> => {
31
- if (fx instanceof MapFx) {
32
- return new MapFx(fx.fx, flow(fx.f, f))
33
- }
34
-
35
- if (fx instanceof FromEffectFx) {
36
- return new FromEffectFx(pipe(fx.effect, Effect.map(f)))
37
- }
38
-
39
- if (fx instanceof FilterMapFx) {
40
- return FilterMapFx.make(fx.fx, flow(fx.f, Maybe.map(f)))
41
- }
42
-
43
- return new MapFx(fx, f)
44
- }
45
- }
46
-
47
- export function filterMap<A, B>(f: (a: A) => Maybe.Maybe<B>) {
48
- return <R, E, E1>(fx: Fx<R, E, A, E1>): Fx<R, E, B, E1> => FilterMapFx.make(fx, f)
49
- }
50
-
51
- export function filter<A, B extends A>(
52
- predicate: Refinement<A, B>,
53
- ): <R, E, E1>(fx: Fx<R, E, A, E1>) => Fx<R, E, B, E1>
54
- export function filter<A>(
55
- predicate: Predicate<A>,
56
- ): <R, E, E1>(fx: Fx<R, E, A, E1>) => Fx<R, E, A, E1>
57
-
58
- export function filter<A>(predicate: Predicate<A>) {
59
- return filterMap((a: A) => Maybe.fromPredicate(a, predicate))
60
- }
61
-
62
- export function compact<R, E, A, E1>(fx: Fx<R, E, Maybe.Maybe<A>, E1>): Fx<R, E, A, E1> {
63
- return pipe(fx, filterMap(identity))
64
- }
65
-
66
- export class FilterMapFx<R, E, A, E1, B> implements Fx<R, E, B, E1> {
67
- constructor(readonly fx: Fx<R, E, A, E1>, readonly f: (a: A) => Maybe.Maybe<B>) {}
68
-
69
- run<R2, E2, C>(sink: Sink.Sink<E, B, R2, E2, C>): Effect.Effect<R | R2, E1 | E2, C> {
70
- return this.fx.run(pipe(sink, Sink.filterMap(this.f)))
71
- }
72
-
73
- static make = <R, E, A, E1, B>(
74
- fx: Fx<R, E, A, E1>,
75
- f: (a: A) => Maybe.Maybe<B>,
76
- ): Fx<R, E, B, E1> => {
77
- if (fx instanceof FilterMapFx) {
78
- return new FilterMapFx(fx.fx, flow(fx.f, Maybe.flatMap(f)))
79
- }
80
-
81
- return new FilterMapFx(fx, f)
82
- }
83
- }
package/src/never.ts DELETED
@@ -1,5 +0,0 @@
1
- import * as Effect from '@effect/core/io/Effect'
2
-
3
- import { fromEffect } from './fromEffect.js'
4
-
5
- export const never = fromEffect(Effect.never)