@typed/fx 2.0.0-beta.0 → 2.0.0-beta.10

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 (640) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -21
  3. package/dist/Fx/Fx.d.ts +371 -19
  4. package/dist/Fx/Fx.d.ts.map +1 -1
  5. package/dist/Fx/Fx.js +37 -6
  6. package/dist/Fx/TypeId.d.ts +52 -6
  7. package/dist/Fx/TypeId.d.ts.map +1 -1
  8. package/dist/Fx/TypeId.js +41 -4
  9. package/dist/Fx/combinators/additive.d.ts +245 -0
  10. package/dist/Fx/combinators/additive.d.ts.map +1 -0
  11. package/dist/Fx/combinators/additive.js +243 -0
  12. package/dist/Fx/combinators/catch.d.ts +246 -12
  13. package/dist/Fx/combinators/catch.d.ts.map +1 -1
  14. package/dist/Fx/combinators/catch.js +236 -12
  15. package/dist/Fx/combinators/causes.d.ts +25 -2
  16. package/dist/Fx/combinators/causes.d.ts.map +1 -1
  17. package/dist/Fx/combinators/causes.js +25 -2
  18. package/dist/Fx/combinators/changesWithEffect.d.ts +40 -0
  19. package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -0
  20. package/dist/Fx/combinators/changesWithEffect.js +48 -0
  21. package/dist/Fx/combinators/compact.d.ts +18 -1
  22. package/dist/Fx/combinators/compact.d.ts.map +1 -1
  23. package/dist/Fx/combinators/compact.js +18 -1
  24. package/dist/Fx/combinators/concatMap.d.ts +86 -0
  25. package/dist/Fx/combinators/concatMap.d.ts.map +1 -0
  26. package/dist/Fx/combinators/concatMap.js +86 -0
  27. package/dist/Fx/combinators/continueWith.d.ts +113 -5
  28. package/dist/Fx/combinators/continueWith.d.ts.map +1 -1
  29. package/dist/Fx/combinators/continueWith.js +113 -5
  30. package/dist/Fx/combinators/debounce.d.ts +34 -0
  31. package/dist/Fx/combinators/debounce.d.ts.map +1 -0
  32. package/dist/Fx/combinators/debounce.js +35 -0
  33. package/dist/Fx/combinators/delay.d.ts +36 -0
  34. package/dist/Fx/combinators/delay.d.ts.map +1 -0
  35. package/dist/Fx/combinators/delay.js +33 -0
  36. package/dist/Fx/combinators/dropUntil.d.ts +71 -0
  37. package/dist/Fx/combinators/dropUntil.d.ts.map +1 -0
  38. package/dist/Fx/combinators/dropUntil.js +65 -0
  39. package/dist/Fx/combinators/during.d.ts +38 -0
  40. package/dist/Fx/combinators/during.d.ts.map +1 -0
  41. package/dist/Fx/combinators/during.js +85 -0
  42. package/dist/Fx/combinators/ensuring.d.ts +34 -4
  43. package/dist/Fx/combinators/ensuring.d.ts.map +1 -1
  44. package/dist/Fx/combinators/ensuring.js +34 -4
  45. package/dist/Fx/combinators/exhaustLatestMap.d.ts +41 -5
  46. package/dist/Fx/combinators/exhaustLatestMap.d.ts.map +1 -1
  47. package/dist/Fx/combinators/exhaustLatestMap.js +41 -5
  48. package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts +40 -4
  49. package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts.map +1 -1
  50. package/dist/Fx/combinators/exhaustLatestMapEffect.js +40 -4
  51. package/dist/Fx/combinators/exhaustMap.d.ts +38 -1
  52. package/dist/Fx/combinators/exhaustMap.d.ts.map +1 -1
  53. package/dist/Fx/combinators/exhaustMap.js +38 -1
  54. package/dist/Fx/combinators/exhaustMapEffect.d.ts +33 -1
  55. package/dist/Fx/combinators/exhaustMapEffect.d.ts.map +1 -1
  56. package/dist/Fx/combinators/exhaustMapEffect.js +33 -1
  57. package/dist/Fx/combinators/exit.d.ts +23 -2
  58. package/dist/Fx/combinators/exit.d.ts.map +1 -1
  59. package/dist/Fx/combinators/exit.js +23 -2
  60. package/dist/Fx/combinators/filter.d.ts +17 -1
  61. package/dist/Fx/combinators/filter.d.ts.map +1 -1
  62. package/dist/Fx/combinators/filter.js +17 -1
  63. package/dist/Fx/combinators/filterEffect.d.ts +22 -1
  64. package/dist/Fx/combinators/filterEffect.d.ts.map +1 -1
  65. package/dist/Fx/combinators/filterEffect.js +22 -1
  66. package/dist/Fx/combinators/filterMap.d.ts +20 -1
  67. package/dist/Fx/combinators/filterMap.d.ts.map +1 -1
  68. package/dist/Fx/combinators/filterMap.js +20 -1
  69. package/dist/Fx/combinators/filterMapEffect.d.ts +21 -1
  70. package/dist/Fx/combinators/filterMapEffect.d.ts.map +1 -1
  71. package/dist/Fx/combinators/filterMapEffect.js +21 -1
  72. package/dist/Fx/combinators/filterMapLoop.d.ts +20 -1
  73. package/dist/Fx/combinators/filterMapLoop.d.ts.map +1 -1
  74. package/dist/Fx/combinators/filterMapLoop.js +20 -1
  75. package/dist/Fx/combinators/filterMapLoopCause.d.ts +21 -1
  76. package/dist/Fx/combinators/filterMapLoopCause.d.ts.map +1 -1
  77. package/dist/Fx/combinators/filterMapLoopCause.js +21 -1
  78. package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts +21 -1
  79. package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts.map +1 -1
  80. package/dist/Fx/combinators/filterMapLoopCauseEffect.js +21 -1
  81. package/dist/Fx/combinators/filterMapLoopEffect.d.ts +21 -1
  82. package/dist/Fx/combinators/filterMapLoopEffect.d.ts.map +1 -1
  83. package/dist/Fx/combinators/filterMapLoopEffect.js +21 -1
  84. package/dist/Fx/combinators/flatMap.d.ts +50 -5
  85. package/dist/Fx/combinators/flatMap.d.ts.map +1 -1
  86. package/dist/Fx/combinators/flatMap.js +36 -3
  87. package/dist/Fx/combinators/flatMapConcurrently.d.ts +51 -4
  88. package/dist/Fx/combinators/flatMapConcurrently.d.ts.map +1 -1
  89. package/dist/Fx/combinators/flatMapConcurrently.js +51 -4
  90. package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts +48 -4
  91. package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts.map +1 -1
  92. package/dist/Fx/combinators/flatMapConcurrentlyEffect.js +40 -2
  93. package/dist/Fx/combinators/flatMapEffect.d.ts +46 -4
  94. package/dist/Fx/combinators/flatMapEffect.d.ts.map +1 -1
  95. package/dist/Fx/combinators/flatMapEffect.js +32 -2
  96. package/dist/Fx/combinators/flip.d.ts +34 -2
  97. package/dist/Fx/combinators/flip.d.ts.map +1 -1
  98. package/dist/Fx/combinators/flip.js +34 -2
  99. package/dist/Fx/combinators/gen.d.ts +29 -10
  100. package/dist/Fx/combinators/gen.d.ts.map +1 -1
  101. package/dist/Fx/combinators/gen.js +28 -4
  102. package/dist/Fx/combinators/genScoped.d.ts +33 -10
  103. package/dist/Fx/combinators/genScoped.d.ts.map +1 -1
  104. package/dist/Fx/combinators/genScoped.js +31 -3
  105. package/dist/Fx/combinators/grouped.d.ts +89 -0
  106. package/dist/Fx/combinators/grouped.d.ts.map +1 -0
  107. package/dist/Fx/combinators/grouped.js +146 -0
  108. package/dist/Fx/combinators/index.d.ts +45 -0
  109. package/dist/Fx/combinators/index.d.ts.map +1 -1
  110. package/dist/Fx/combinators/index.js +45 -0
  111. package/dist/Fx/combinators/keyed.d.ts +124 -10
  112. package/dist/Fx/combinators/keyed.d.ts.map +1 -1
  113. package/dist/Fx/combinators/keyed.js +69 -11
  114. package/dist/Fx/combinators/loop.d.ts +17 -1
  115. package/dist/Fx/combinators/loop.d.ts.map +1 -1
  116. package/dist/Fx/combinators/loop.js +17 -1
  117. package/dist/Fx/combinators/loopCause.d.ts +18 -1
  118. package/dist/Fx/combinators/loopCause.d.ts.map +1 -1
  119. package/dist/Fx/combinators/loopCause.js +18 -1
  120. package/dist/Fx/combinators/loopCauseEffect.d.ts +19 -1
  121. package/dist/Fx/combinators/loopCauseEffect.d.ts.map +1 -1
  122. package/dist/Fx/combinators/loopCauseEffect.js +19 -1
  123. package/dist/Fx/combinators/loopEffect.d.ts +24 -1
  124. package/dist/Fx/combinators/loopEffect.d.ts.map +1 -1
  125. package/dist/Fx/combinators/loopEffect.js +24 -1
  126. package/dist/Fx/combinators/map.d.ts +46 -1
  127. package/dist/Fx/combinators/map.d.ts.map +1 -1
  128. package/dist/Fx/combinators/map.js +43 -1
  129. package/dist/Fx/combinators/mapBoth.d.ts +40 -0
  130. package/dist/Fx/combinators/mapBoth.d.ts.map +1 -0
  131. package/dist/Fx/combinators/mapBoth.js +33 -0
  132. package/dist/Fx/combinators/mapEffect.d.ts +25 -1
  133. package/dist/Fx/combinators/mapEffect.d.ts.map +1 -1
  134. package/dist/Fx/combinators/mapEffect.js +25 -1
  135. package/dist/Fx/combinators/mapError.d.ts +33 -0
  136. package/dist/Fx/combinators/mapError.d.ts.map +1 -0
  137. package/dist/Fx/combinators/mapError.js +32 -0
  138. package/dist/Fx/combinators/mergeAll.d.ts +35 -1
  139. package/dist/Fx/combinators/mergeAll.d.ts.map +1 -1
  140. package/dist/Fx/combinators/mergeAll.js +35 -1
  141. package/dist/Fx/combinators/mergeOrdered.d.ts +36 -4
  142. package/dist/Fx/combinators/mergeOrdered.d.ts.map +1 -1
  143. package/dist/Fx/combinators/mergeOrdered.js +68 -14
  144. package/dist/Fx/combinators/onError.d.ts +34 -4
  145. package/dist/Fx/combinators/onError.d.ts.map +1 -1
  146. package/dist/Fx/combinators/onError.js +34 -4
  147. package/dist/Fx/combinators/onExit.d.ts +29 -3
  148. package/dist/Fx/combinators/onExit.d.ts.map +1 -1
  149. package/dist/Fx/combinators/onExit.js +29 -3
  150. package/dist/Fx/combinators/onInterrupt.d.ts +49 -4
  151. package/dist/Fx/combinators/onInterrupt.d.ts.map +1 -1
  152. package/dist/Fx/combinators/onInterrupt.js +49 -4
  153. package/dist/Fx/combinators/pairwise.d.ts +28 -0
  154. package/dist/Fx/combinators/pairwise.d.ts.map +1 -0
  155. package/dist/Fx/combinators/pairwise.js +31 -0
  156. package/dist/Fx/combinators/provide.d.ts +162 -8
  157. package/dist/Fx/combinators/provide.d.ts.map +1 -1
  158. package/dist/Fx/combinators/provide.js +154 -6
  159. package/dist/Fx/combinators/race.d.ts +92 -0
  160. package/dist/Fx/combinators/race.d.ts.map +1 -0
  161. package/dist/Fx/combinators/race.js +149 -0
  162. package/dist/Fx/combinators/repeat.d.ts +41 -0
  163. package/dist/Fx/combinators/repeat.d.ts.map +1 -0
  164. package/dist/Fx/combinators/repeat.js +57 -0
  165. package/dist/Fx/combinators/result.d.ts +45 -0
  166. package/dist/Fx/combinators/result.d.ts.map +1 -0
  167. package/dist/Fx/combinators/result.js +46 -0
  168. package/dist/Fx/combinators/retry.d.ts +53 -0
  169. package/dist/Fx/combinators/retry.d.ts.map +1 -0
  170. package/dist/Fx/combinators/retry.js +71 -0
  171. package/dist/Fx/combinators/sample.d.ts +31 -0
  172. package/dist/Fx/combinators/sample.d.ts.map +1 -0
  173. package/dist/Fx/combinators/sample.js +42 -0
  174. package/dist/Fx/combinators/scan.d.ts +72 -0
  175. package/dist/Fx/combinators/scan.d.ts.map +1 -0
  176. package/dist/Fx/combinators/scan.js +77 -0
  177. package/dist/Fx/combinators/since.d.ts +30 -0
  178. package/dist/Fx/combinators/since.d.ts.map +1 -0
  179. package/dist/Fx/combinators/since.js +39 -0
  180. package/dist/Fx/combinators/skip.d.ts +45 -1
  181. package/dist/Fx/combinators/skip.d.ts.map +1 -1
  182. package/dist/Fx/combinators/skip.js +43 -1
  183. package/dist/Fx/combinators/skipRepeats.d.ts +17 -1
  184. package/dist/Fx/combinators/skipRepeats.d.ts.map +1 -1
  185. package/dist/Fx/combinators/skipRepeats.js +17 -1
  186. package/dist/Fx/combinators/skipRepeatsWith.d.ts +18 -1
  187. package/dist/Fx/combinators/skipRepeatsWith.d.ts.map +1 -1
  188. package/dist/Fx/combinators/skipRepeatsWith.js +18 -1
  189. package/dist/Fx/combinators/skipWhile.d.ts +117 -0
  190. package/dist/Fx/combinators/skipWhile.d.ts.map +1 -0
  191. package/dist/Fx/combinators/skipWhile.js +134 -0
  192. package/dist/Fx/combinators/slice.d.ts +97 -2
  193. package/dist/Fx/combinators/slice.d.ts.map +1 -1
  194. package/dist/Fx/combinators/slice.js +45 -1
  195. package/dist/Fx/combinators/switchMap.d.ts +39 -1
  196. package/dist/Fx/combinators/switchMap.d.ts.map +1 -1
  197. package/dist/Fx/combinators/switchMap.js +43 -5
  198. package/dist/Fx/combinators/switchMapEffect.d.ts +38 -1
  199. package/dist/Fx/combinators/switchMapEffect.d.ts.map +1 -1
  200. package/dist/Fx/combinators/switchMapEffect.js +38 -1
  201. package/dist/Fx/combinators/take.d.ts +46 -1
  202. package/dist/Fx/combinators/take.d.ts.map +1 -1
  203. package/dist/Fx/combinators/take.js +44 -1
  204. package/dist/Fx/combinators/takeUntil.d.ts +62 -2
  205. package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
  206. package/dist/Fx/combinators/takeUntil.js +62 -2
  207. package/dist/Fx/combinators/takeWhile.d.ts +60 -0
  208. package/dist/Fx/combinators/takeWhile.d.ts.map +1 -0
  209. package/dist/Fx/combinators/takeWhile.js +54 -0
  210. package/dist/Fx/combinators/tapEffect.d.ts +17 -1
  211. package/dist/Fx/combinators/tapEffect.d.ts.map +1 -1
  212. package/dist/Fx/combinators/tapEffect.js +17 -1
  213. package/dist/Fx/combinators/throttle.d.ts +79 -0
  214. package/dist/Fx/combinators/throttle.d.ts.map +1 -0
  215. package/dist/Fx/combinators/throttle.js +99 -0
  216. package/dist/Fx/combinators/timeout.d.ts +76 -0
  217. package/dist/Fx/combinators/timeout.d.ts.map +1 -0
  218. package/dist/Fx/combinators/timeout.js +110 -0
  219. package/dist/Fx/combinators/tuple.d.ts +32 -2
  220. package/dist/Fx/combinators/tuple.d.ts.map +1 -1
  221. package/dist/Fx/combinators/tuple.js +36 -5
  222. package/dist/Fx/combinators/until.d.ts +27 -0
  223. package/dist/Fx/combinators/until.d.ts.map +1 -0
  224. package/dist/Fx/combinators/until.js +56 -0
  225. package/dist/Fx/combinators/unwrap.d.ts +31 -2
  226. package/dist/Fx/combinators/unwrap.d.ts.map +1 -1
  227. package/dist/Fx/combinators/unwrap.js +30 -1
  228. package/dist/Fx/combinators/unwrapScoped.d.ts +34 -1
  229. package/dist/Fx/combinators/unwrapScoped.d.ts.map +1 -1
  230. package/dist/Fx/combinators/unwrapScoped.js +34 -1
  231. package/dist/Fx/combinators/when.d.ts +37 -2
  232. package/dist/Fx/combinators/when.d.ts.map +1 -1
  233. package/dist/Fx/combinators/when.js +38 -3
  234. package/dist/Fx/combinators/withLatestFrom.d.ts +58 -0
  235. package/dist/Fx/combinators/withLatestFrom.d.ts.map +1 -0
  236. package/dist/Fx/combinators/withLatestFrom.js +68 -0
  237. package/dist/Fx/combinators/withSpan.d.ts +35 -1
  238. package/dist/Fx/combinators/withSpan.d.ts.map +1 -1
  239. package/dist/Fx/combinators/withSpan.js +34 -3
  240. package/dist/Fx/combinators/zip.d.ts +135 -0
  241. package/dist/Fx/combinators/zip.d.ts.map +1 -0
  242. package/dist/Fx/combinators/zip.js +160 -0
  243. package/dist/Fx/constructors/at.d.ts +23 -3
  244. package/dist/Fx/constructors/at.d.ts.map +1 -1
  245. package/dist/Fx/constructors/at.js +21 -1
  246. package/dist/Fx/constructors/die.d.ts +22 -1
  247. package/dist/Fx/constructors/die.d.ts.map +1 -1
  248. package/dist/Fx/constructors/die.js +22 -1
  249. package/dist/Fx/constructors/empty.d.ts +19 -1
  250. package/dist/Fx/constructors/empty.d.ts.map +1 -1
  251. package/dist/Fx/constructors/empty.js +19 -1
  252. package/dist/Fx/constructors/fail.d.ts +22 -1
  253. package/dist/Fx/constructors/fail.d.ts.map +1 -1
  254. package/dist/Fx/constructors/fail.js +22 -1
  255. package/dist/Fx/constructors/failCause.d.ts +23 -1
  256. package/dist/Fx/constructors/failCause.d.ts.map +1 -1
  257. package/dist/Fx/constructors/failCause.js +23 -1
  258. package/dist/Fx/constructors/fn.d.ts +116 -16
  259. package/dist/Fx/constructors/fn.d.ts.map +1 -1
  260. package/dist/Fx/constructors/fn.js +36 -0
  261. package/dist/Fx/constructors/fromEffect.d.ts +45 -3
  262. package/dist/Fx/constructors/fromEffect.d.ts.map +1 -1
  263. package/dist/Fx/constructors/fromEffect.js +45 -3
  264. package/dist/Fx/constructors/fromFailures.d.ts +25 -1
  265. package/dist/Fx/constructors/fromFailures.d.ts.map +1 -1
  266. package/dist/Fx/constructors/fromFailures.js +25 -1
  267. package/dist/Fx/constructors/fromIterable.d.ts +23 -1
  268. package/dist/Fx/constructors/fromIterable.d.ts.map +1 -1
  269. package/dist/Fx/constructors/fromIterable.js +23 -1
  270. package/dist/Fx/constructors/fromSchedule.d.ts +26 -1
  271. package/dist/Fx/constructors/fromSchedule.d.ts.map +1 -1
  272. package/dist/Fx/constructors/fromSchedule.js +28 -3
  273. package/dist/Fx/constructors/index.d.ts +2 -1
  274. package/dist/Fx/constructors/index.d.ts.map +1 -1
  275. package/dist/Fx/constructors/index.js +2 -1
  276. package/dist/Fx/constructors/interrupt.d.ts +22 -2
  277. package/dist/Fx/constructors/interrupt.d.ts.map +1 -1
  278. package/dist/Fx/constructors/interrupt.js +22 -2
  279. package/dist/Fx/constructors/make.d.ts +151 -4
  280. package/dist/Fx/constructors/make.d.ts.map +1 -1
  281. package/dist/Fx/constructors/make.js +60 -7
  282. package/dist/Fx/constructors/periodic.d.ts +31 -2
  283. package/dist/Fx/constructors/periodic.d.ts.map +1 -1
  284. package/dist/Fx/constructors/periodic.js +30 -1
  285. package/dist/Fx/constructors/succeed.d.ts +79 -7
  286. package/dist/Fx/constructors/succeed.d.ts.map +1 -1
  287. package/dist/Fx/constructors/succeed.js +79 -7
  288. package/dist/Fx/constructors/suspend.d.ts +28 -0
  289. package/dist/Fx/constructors/suspend.d.ts.map +1 -1
  290. package/dist/Fx/constructors/suspend.js +28 -0
  291. package/dist/Fx/constructors/sync.d.ts +32 -0
  292. package/dist/Fx/constructors/sync.d.ts.map +1 -0
  293. package/dist/Fx/constructors/sync.js +32 -0
  294. package/dist/Fx/internal/DeferredRef.d.ts +259 -7
  295. package/dist/Fx/internal/DeferredRef.d.ts.map +1 -1
  296. package/dist/Fx/internal/DeferredRef.js +260 -9
  297. package/dist/Fx/internal/UnionToTuple.d.ts +22 -0
  298. package/dist/Fx/internal/UnionToTuple.d.ts.map +1 -1
  299. package/dist/Fx/internal/diff.d.ts +586 -0
  300. package/dist/Fx/internal/diff.d.ts.map +1 -1
  301. package/dist/Fx/internal/diff.js +120 -9
  302. package/dist/Fx/internal/effectableEvaluateKey.d.ts +30 -0
  303. package/dist/Fx/internal/effectableEvaluateKey.d.ts.map +1 -0
  304. package/dist/Fx/internal/effectableEvaluateKey.js +29 -0
  305. package/dist/Fx/internal/effectableWithOverride.d.ts +55 -0
  306. package/dist/Fx/internal/effectableWithOverride.d.ts.map +1 -0
  307. package/dist/Fx/internal/effectableWithOverride.js +46 -0
  308. package/dist/Fx/internal/equivalence.d.ts +29 -0
  309. package/dist/Fx/internal/equivalence.d.ts.map +1 -1
  310. package/dist/Fx/internal/equivalence.js +29 -0
  311. package/dist/Fx/internal/multicast.d.ts +145 -2
  312. package/dist/Fx/internal/multicast.d.ts.map +1 -1
  313. package/dist/Fx/internal/multicast.js +146 -4
  314. package/dist/Fx/internal/ring-buffer.d.ts +149 -0
  315. package/dist/Fx/internal/ring-buffer.d.ts.map +1 -1
  316. package/dist/Fx/internal/ring-buffer.js +155 -0
  317. package/dist/Fx/internal/scope.d.ts +184 -0
  318. package/dist/Fx/internal/scope.d.ts.map +1 -1
  319. package/dist/Fx/internal/scope.js +150 -0
  320. package/dist/Fx/internal/yieldable.d.ts +117 -2
  321. package/dist/Fx/internal/yieldable.d.ts.map +1 -1
  322. package/dist/Fx/internal/yieldable.js +86 -3
  323. package/dist/Fx/run/collect.d.ts +93 -4
  324. package/dist/Fx/run/collect.d.ts.map +1 -1
  325. package/dist/Fx/run/collect.js +94 -5
  326. package/dist/Fx/run/first.d.ts +23 -1
  327. package/dist/Fx/run/first.d.ts.map +1 -1
  328. package/dist/Fx/run/first.js +23 -1
  329. package/dist/Fx/run/fork.d.ts +52 -2
  330. package/dist/Fx/run/fork.d.ts.map +1 -1
  331. package/dist/Fx/run/fork.js +52 -2
  332. package/dist/Fx/run/observe.d.ts +112 -4
  333. package/dist/Fx/run/observe.d.ts.map +1 -1
  334. package/dist/Fx/run/observe.js +137 -16
  335. package/dist/Fx/run/runPromise.d.ts +45 -2
  336. package/dist/Fx/run/runPromise.d.ts.map +1 -1
  337. package/dist/Fx/run/runPromise.js +45 -2
  338. package/dist/Fx/stream.d.ts +92 -0
  339. package/dist/Fx/stream.d.ts.map +1 -1
  340. package/dist/Fx/stream.js +60 -1
  341. package/dist/Push/Push.d.ts +1286 -98
  342. package/dist/Push/Push.d.ts.map +1 -1
  343. package/dist/Push/Push.js +1074 -88
  344. package/dist/RefArray.d.ts +2 -0
  345. package/dist/RefArray.d.ts.map +1 -0
  346. package/dist/RefArray.js +1 -0
  347. package/dist/RefBigDecimal.d.ts +2 -0
  348. package/dist/RefBigDecimal.d.ts.map +1 -0
  349. package/dist/RefBigDecimal.js +1 -0
  350. package/dist/RefBigInt.d.ts +2 -0
  351. package/dist/RefBigInt.d.ts.map +1 -0
  352. package/dist/RefBigInt.js +1 -0
  353. package/dist/RefBoolean.d.ts +2 -0
  354. package/dist/RefBoolean.d.ts.map +1 -0
  355. package/dist/RefBoolean.js +1 -0
  356. package/dist/RefCause.d.ts +2 -0
  357. package/dist/RefCause.d.ts.map +1 -0
  358. package/dist/RefCause.js +1 -0
  359. package/dist/RefChunk.d.ts +2 -0
  360. package/dist/RefChunk.d.ts.map +1 -0
  361. package/dist/RefChunk.js +1 -0
  362. package/dist/RefDateTime.d.ts +2 -0
  363. package/dist/RefDateTime.d.ts.map +1 -0
  364. package/dist/RefDateTime.js +1 -0
  365. package/dist/RefDuration.d.ts +2 -0
  366. package/dist/RefDuration.d.ts.map +1 -0
  367. package/dist/RefDuration.js +1 -0
  368. package/dist/RefGraph.d.ts +2 -0
  369. package/dist/RefGraph.d.ts.map +1 -0
  370. package/dist/RefGraph.js +1 -0
  371. package/dist/RefHashMap.d.ts +2 -0
  372. package/dist/RefHashMap.d.ts.map +1 -0
  373. package/dist/RefHashMap.js +1 -0
  374. package/dist/RefHashRing.d.ts +2 -0
  375. package/dist/RefHashRing.d.ts.map +1 -0
  376. package/dist/RefHashRing.js +1 -0
  377. package/dist/RefHashSet.d.ts +2 -0
  378. package/dist/RefHashSet.d.ts.map +1 -0
  379. package/dist/RefHashSet.js +1 -0
  380. package/dist/RefIterable.d.ts +2 -0
  381. package/dist/RefIterable.d.ts.map +1 -0
  382. package/dist/RefIterable.js +1 -0
  383. package/dist/RefOption.d.ts +2 -0
  384. package/dist/RefOption.d.ts.map +1 -0
  385. package/dist/RefOption.js +1 -0
  386. package/dist/RefRecord.d.ts +2 -0
  387. package/dist/RefRecord.d.ts.map +1 -0
  388. package/dist/RefRecord.js +1 -0
  389. package/dist/RefResult.d.ts +2 -0
  390. package/dist/RefResult.d.ts.map +1 -0
  391. package/dist/RefResult.js +1 -0
  392. package/dist/RefString.d.ts +2 -0
  393. package/dist/RefString.d.ts.map +1 -0
  394. package/dist/RefString.js +1 -0
  395. package/dist/RefStruct.d.ts +2 -0
  396. package/dist/RefStruct.d.ts.map +1 -0
  397. package/dist/RefStruct.js +1 -0
  398. package/dist/RefSubject/Hydration.d.ts +504 -0
  399. package/dist/RefSubject/Hydration.d.ts.map +1 -0
  400. package/dist/RefSubject/Hydration.js +300 -0
  401. package/dist/RefSubject/RefArray.d.ts +382 -35
  402. package/dist/RefSubject/RefArray.d.ts.map +1 -1
  403. package/dist/RefSubject/RefArray.js +374 -40
  404. package/dist/RefSubject/RefBigDecimal.d.ts +241 -21
  405. package/dist/RefSubject/RefBigDecimal.d.ts.map +1 -1
  406. package/dist/RefSubject/RefBigDecimal.js +229 -20
  407. package/dist/RefSubject/RefBigInt.d.ts +181 -16
  408. package/dist/RefSubject/RefBigInt.d.ts.map +1 -1
  409. package/dist/RefSubject/RefBigInt.js +169 -15
  410. package/dist/RefSubject/RefBoolean.d.ts +181 -16
  411. package/dist/RefSubject/RefBoolean.d.ts.map +1 -1
  412. package/dist/RefSubject/RefBoolean.js +169 -15
  413. package/dist/RefSubject/RefCause.d.ts +133 -12
  414. package/dist/RefSubject/RefCause.d.ts.map +1 -1
  415. package/dist/RefSubject/RefCause.js +121 -11
  416. package/dist/RefSubject/RefChunk.d.ts +481 -76
  417. package/dist/RefSubject/RefChunk.d.ts.map +1 -1
  418. package/dist/RefSubject/RefChunk.js +471 -75
  419. package/dist/RefSubject/RefDateTime.d.ts +137 -16
  420. package/dist/RefSubject/RefDateTime.d.ts.map +1 -1
  421. package/dist/RefSubject/RefDateTime.js +122 -12
  422. package/dist/RefSubject/RefDuration.d.ts +169 -15
  423. package/dist/RefSubject/RefDuration.d.ts.map +1 -1
  424. package/dist/RefSubject/RefDuration.js +157 -14
  425. package/dist/RefSubject/RefGraph.d.ts +349 -35
  426. package/dist/RefSubject/RefGraph.d.ts.map +1 -1
  427. package/dist/RefSubject/RefGraph.js +334 -32
  428. package/dist/RefSubject/RefHashMap.d.ts +323 -28
  429. package/dist/RefSubject/RefHashMap.d.ts.map +1 -1
  430. package/dist/RefSubject/RefHashMap.js +317 -29
  431. package/dist/RefSubject/RefHashRing.d.ts +159 -15
  432. package/dist/RefSubject/RefHashRing.d.ts.map +1 -1
  433. package/dist/RefSubject/RefHashRing.js +145 -12
  434. package/dist/RefSubject/RefHashSet.d.ts +251 -22
  435. package/dist/RefSubject/RefHashSet.d.ts.map +1 -1
  436. package/dist/RefSubject/RefHashSet.js +238 -20
  437. package/dist/RefSubject/RefIterable.d.ts +358 -32
  438. package/dist/RefSubject/RefIterable.d.ts.map +1 -1
  439. package/dist/RefSubject/RefIterable.js +350 -30
  440. package/dist/RefSubject/RefOption.d.ts +157 -14
  441. package/dist/RefSubject/RefOption.d.ts.map +1 -1
  442. package/dist/RefSubject/RefOption.js +145 -13
  443. package/dist/RefSubject/RefRecord.d.ts +402 -64
  444. package/dist/RefSubject/RefRecord.d.ts.map +1 -1
  445. package/dist/RefSubject/RefRecord.js +364 -39
  446. package/dist/RefSubject/RefResult.d.ts +167 -35
  447. package/dist/RefSubject/RefResult.d.ts.map +1 -1
  448. package/dist/RefSubject/RefResult.js +133 -12
  449. package/dist/RefSubject/RefString.d.ts +205 -18
  450. package/dist/RefSubject/RefString.d.ts.map +1 -1
  451. package/dist/RefSubject/RefString.js +193 -17
  452. package/dist/RefSubject/RefStruct.d.ts +169 -14
  453. package/dist/RefSubject/RefStruct.d.ts.map +1 -1
  454. package/dist/RefSubject/RefStruct.js +157 -13
  455. package/dist/RefSubject/RefSubject.d.ts +1242 -43
  456. package/dist/RefSubject/RefSubject.d.ts.map +1 -1
  457. package/dist/RefSubject/RefSubject.js +1012 -86
  458. package/dist/RefSubject/RefTrie.d.ts +323 -37
  459. package/dist/RefSubject/RefTrie.d.ts.map +1 -1
  460. package/dist/RefSubject/RefTrie.js +311 -31
  461. package/dist/RefSubject/RefTuple.d.ts +127 -11
  462. package/dist/RefSubject/RefTuple.d.ts.map +1 -1
  463. package/dist/RefSubject/RefTuple.js +114 -9
  464. package/dist/RefSubject/index.d.ts +1 -0
  465. package/dist/RefSubject/index.d.ts.map +1 -1
  466. package/dist/RefSubject/index.js +1 -0
  467. package/dist/RefSubject.d.ts +2 -1
  468. package/dist/RefSubject.d.ts.map +1 -1
  469. package/dist/RefSubject.js +2 -1
  470. package/dist/RefTrie.d.ts +2 -0
  471. package/dist/RefTrie.d.ts.map +1 -0
  472. package/dist/RefTrie.js +1 -0
  473. package/dist/RefTuple.d.ts +2 -0
  474. package/dist/RefTuple.d.ts.map +1 -0
  475. package/dist/RefTuple.js +1 -0
  476. package/dist/Sink/Sink.d.ts +396 -23
  477. package/dist/Sink/Sink.d.ts.map +1 -1
  478. package/dist/Sink/Sink.js +55 -7
  479. package/dist/Sink/combinators.d.ts +789 -3
  480. package/dist/Sink/combinators.d.ts.map +1 -1
  481. package/dist/Sink/combinators.js +812 -7
  482. package/dist/Subject/Subject.d.ts +1022 -27
  483. package/dist/Subject/Subject.d.ts.map +1 -1
  484. package/dist/Subject/Subject.js +909 -43
  485. package/dist/Versioned/Versioned.d.ts +475 -25
  486. package/dist/Versioned/Versioned.d.ts.map +1 -1
  487. package/dist/Versioned/Versioned.js +298 -46
  488. package/dist/index.d.ts +22 -3
  489. package/dist/index.d.ts.map +1 -1
  490. package/dist/index.js +22 -3
  491. package/package.json +125 -11
  492. package/dist/Fx/constructors/fromYieldable.d.ts +0 -12
  493. package/dist/Fx/constructors/fromYieldable.d.ts.map +0 -1
  494. package/dist/Fx/constructors/fromYieldable.js +0 -12
  495. package/src/Fx/Fx.ts +0 -164
  496. package/src/Fx/TypeId.ts +0 -25
  497. package/src/Fx/combinators/catch.ts +0 -165
  498. package/src/Fx/combinators/causes.ts +0 -23
  499. package/src/Fx/combinators/compact.ts +0 -15
  500. package/src/Fx/combinators/continueWith.ts +0 -78
  501. package/src/Fx/combinators/ensuring.ts +0 -23
  502. package/src/Fx/combinators/exhaustLatestMap.ts +0 -74
  503. package/src/Fx/combinators/exhaustLatestMapEffect.ts +0 -25
  504. package/src/Fx/combinators/exhaustMap.ts +0 -36
  505. package/src/Fx/combinators/exhaustMapEffect.ts +0 -23
  506. package/src/Fx/combinators/exit.ts +0 -15
  507. package/src/Fx/combinators/filter.ts +0 -22
  508. package/src/Fx/combinators/filterEffect.ts +0 -31
  509. package/src/Fx/combinators/filterMap.ts +0 -23
  510. package/src/Fx/combinators/filterMapEffect.ts +0 -32
  511. package/src/Fx/combinators/filterMapLoop.ts +0 -35
  512. package/src/Fx/combinators/filterMapLoopCause.ts +0 -36
  513. package/src/Fx/combinators/filterMapLoopCauseEffect.ts +0 -46
  514. package/src/Fx/combinators/filterMapLoopEffect.ts +0 -36
  515. package/src/Fx/combinators/flatMap.ts +0 -51
  516. package/src/Fx/combinators/flatMapConcurrently.ts +0 -36
  517. package/src/Fx/combinators/flatMapConcurrentlyEffect.ts +0 -26
  518. package/src/Fx/combinators/flatMapEffect.ts +0 -42
  519. package/src/Fx/combinators/flip.ts +0 -14
  520. package/src/Fx/combinators/gen.ts +0 -24
  521. package/src/Fx/combinators/genScoped.ts +0 -24
  522. package/src/Fx/combinators/index.ts +0 -51
  523. package/src/Fx/combinators/keyed.ts +0 -369
  524. package/src/Fx/combinators/loop.ts +0 -27
  525. package/src/Fx/combinators/loopCause.ts +0 -34
  526. package/src/Fx/combinators/loopCauseEffect.ts +0 -36
  527. package/src/Fx/combinators/loopEffect.ts +0 -34
  528. package/src/Fx/combinators/map.ts +0 -22
  529. package/src/Fx/combinators/mapEffect.ts +0 -32
  530. package/src/Fx/combinators/mergeAll.ts +0 -22
  531. package/src/Fx/combinators/mergeOrdered.ts +0 -123
  532. package/src/Fx/combinators/onError.ts +0 -40
  533. package/src/Fx/combinators/onExit.ts +0 -82
  534. package/src/Fx/combinators/onInterrupt.ts +0 -87
  535. package/src/Fx/combinators/provide.ts +0 -62
  536. package/src/Fx/combinators/skip.ts +0 -20
  537. package/src/Fx/combinators/skipRepeats.ts +0 -15
  538. package/src/Fx/combinators/skipRepeatsWith.ts +0 -40
  539. package/src/Fx/combinators/slice.ts +0 -32
  540. package/src/Fx/combinators/switchMap.ts +0 -55
  541. package/src/Fx/combinators/switchMapEffect.ts +0 -25
  542. package/src/Fx/combinators/take.ts +0 -17
  543. package/src/Fx/combinators/takeUntil.ts +0 -50
  544. package/src/Fx/combinators/tapEffect.ts +0 -39
  545. package/src/Fx/combinators/tuple.ts +0 -79
  546. package/src/Fx/combinators/unwrap.ts +0 -21
  547. package/src/Fx/combinators/unwrapScoped.ts +0 -26
  548. package/src/Fx/combinators/when.ts +0 -64
  549. package/src/Fx/combinators/withSpan.ts +0 -24
  550. package/src/Fx/constructors/at.ts +0 -23
  551. package/src/Fx/constructors/die.ts +0 -17
  552. package/src/Fx/constructors/empty.ts +0 -10
  553. package/src/Fx/constructors/fail.ts +0 -14
  554. package/src/Fx/constructors/failCause.ts +0 -14
  555. package/src/Fx/constructors/fn.ts +0 -245
  556. package/src/Fx/constructors/fromEffect.ts +0 -24
  557. package/src/Fx/constructors/fromFailures.ts +0 -19
  558. package/src/Fx/constructors/fromIterable.ts +0 -15
  559. package/src/Fx/constructors/fromSchedule.ts +0 -18
  560. package/src/Fx/constructors/fromYieldable.ts +0 -17
  561. package/src/Fx/constructors/index.ts +0 -15
  562. package/src/Fx/constructors/interrupt.ts +0 -13
  563. package/src/Fx/constructors/make.ts +0 -103
  564. package/src/Fx/constructors/periodic.ts +0 -15
  565. package/src/Fx/constructors/succeed.ts +0 -37
  566. package/src/Fx/constructors/suspend.ts +0 -6
  567. package/src/Fx/index.ts +0 -6
  568. package/src/Fx/internal/DeferredRef.ts +0 -87
  569. package/src/Fx/internal/UnionToTuple.ts +0 -12
  570. package/src/Fx/internal/diff.ts +0 -191
  571. package/src/Fx/internal/equivalence.ts +0 -12
  572. package/src/Fx/internal/multicast.ts +0 -51
  573. package/src/Fx/internal/ring-buffer.ts +0 -60
  574. package/src/Fx/internal/scope.ts +0 -58
  575. package/src/Fx/internal/yieldable.ts +0 -31
  576. package/src/Fx/run/collect.ts +0 -79
  577. package/src/Fx/run/first.ts +0 -20
  578. package/src/Fx/run/fork.ts +0 -40
  579. package/src/Fx/run/index.ts +0 -5
  580. package/src/Fx/run/observe.ts +0 -114
  581. package/src/Fx/run/runPromise.ts +0 -32
  582. package/src/Fx/stream.ts +0 -42
  583. package/src/Fx.catch.test.ts +0 -61
  584. package/src/Fx.fn.test.ts +0 -51
  585. package/src/Fx.lifecycle.test.ts +0 -80
  586. package/src/Fx.test.ts +0 -71
  587. package/src/Fx.ts +0 -1
  588. package/src/Push/Push.ts +0 -903
  589. package/src/Push/index.ts +0 -1
  590. package/src/Push.test.ts +0 -26
  591. package/src/Push.ts +0 -1
  592. package/src/RefSubject/RefArray.ts +0 -512
  593. package/src/RefSubject/RefBigDecimal.test.ts +0 -56
  594. package/src/RefSubject/RefBigDecimal.ts +0 -295
  595. package/src/RefSubject/RefBigInt.test.ts +0 -56
  596. package/src/RefSubject/RefBigInt.ts +0 -189
  597. package/src/RefSubject/RefBoolean.test.ts +0 -57
  598. package/src/RefSubject/RefBoolean.ts +0 -185
  599. package/src/RefSubject/RefCause.test.ts +0 -53
  600. package/src/RefSubject/RefCause.ts +0 -146
  601. package/src/RefSubject/RefChunk.ts +0 -510
  602. package/src/RefSubject/RefDateTime.test.ts +0 -43
  603. package/src/RefSubject/RefDateTime.ts +0 -264
  604. package/src/RefSubject/RefDuration.test.ts +0 -49
  605. package/src/RefSubject/RefDuration.ts +0 -188
  606. package/src/RefSubject/RefGraph.ts +0 -650
  607. package/src/RefSubject/RefHashMap.ts +0 -465
  608. package/src/RefSubject/RefHashRing.ts +0 -262
  609. package/src/RefSubject/RefHashSet.ts +0 -308
  610. package/src/RefSubject/RefIterable.ts +0 -445
  611. package/src/RefSubject/RefOption.test.ts +0 -67
  612. package/src/RefSubject/RefOption.ts +0 -193
  613. package/src/RefSubject/RefRecord.ts +0 -612
  614. package/src/RefSubject/RefResult.test.ts +0 -63
  615. package/src/RefSubject/RefResult.ts +0 -209
  616. package/src/RefSubject/RefString.test.ts +0 -61
  617. package/src/RefSubject/RefString.ts +0 -256
  618. package/src/RefSubject/RefStruct.test.ts +0 -60
  619. package/src/RefSubject/RefStruct.ts +0 -253
  620. package/src/RefSubject/RefSubject.ts +0 -2545
  621. package/src/RefSubject/RefTrie.ts +0 -356
  622. package/src/RefSubject/RefTuple.test.ts +0 -60
  623. package/src/RefSubject/RefTuple.ts +0 -231
  624. package/src/RefSubject/index.ts +0 -21
  625. package/src/RefSubject.test.ts +0 -65
  626. package/src/RefSubject.ts +0 -1
  627. package/src/Sink/Sink.ts +0 -159
  628. package/src/Sink/combinators.ts +0 -993
  629. package/src/Sink/index.ts +0 -2
  630. package/src/Sink.ts +0 -1
  631. package/src/Subject/Subject.ts +0 -441
  632. package/src/Subject/index.ts +0 -1
  633. package/src/Subject.test.ts +0 -47
  634. package/src/Subject.ts +0 -1
  635. package/src/Versioned/Versioned.ts +0 -521
  636. package/src/Versioned/index.ts +0 -1
  637. package/src/Versioned.test.ts +0 -23
  638. package/src/Versioned.ts +0 -1
  639. package/src/index.ts +0 -7
  640. package/tsconfig.json +0 -6
@@ -1,123 +0,0 @@
1
- import * as Cause from "effect/Cause";
2
- import * as Deferred from "effect/Deferred";
3
- import * as Effect from "effect/Effect";
4
- import * as Exit from "effect/Exit";
5
- import * as Sink from "../../Sink/Sink.js";
6
- import { make } from "../constructors/make.js";
7
- import type { Fx } from "../Fx.js";
8
-
9
- /**
10
- * Merges multiple Fx streams concurrently but emits values in the order of the input streams.
11
- *
12
- * This ensures that values from the first Fx are emitted before values from the second Fx, and so on.
13
- * Values from later streams are buffered until earlier streams complete or emit their values (depending on semantics, but usually this means strictly ordered emission).
14
- *
15
- * @param fx - The Fx streams to merge.
16
- * @returns An `Fx` that emits values in order.
17
- * @since 1.0.0
18
- * @category combinators
19
- */
20
- export function mergeOrdered<FX extends ReadonlyArray<Fx<any, any, any>>>(
21
- ...fx: FX
22
- ): Fx<Fx.Success<FX[number]>, Fx.Error<FX[number]>, Fx.Services<FX[number]>> {
23
- return make<Fx.Success<FX[number]>, Fx.Error<FX[number]>, Fx.Services<FX[number]>>(
24
- Effect.fn(function* (sink) {
25
- const { makeSink, onEnd } = withBuffers(fx.length, sink);
26
-
27
- yield* Effect.forEach(fx, (fx, i) => Effect.onExit(fx.run(makeSink(i)), () => onEnd(i)), {
28
- concurrency: "unbounded",
29
- discard: true,
30
- });
31
- }),
32
- );
33
- }
34
-
35
- function withBuffers<A, E, R>(size: number, sink: Sink.Sink<A, E, R>) {
36
- const buffers = indexedBuffers(size, sink);
37
- const onSuccess = (index: number, value: A) => buffers.get(index)!.onSuccess(value);
38
- const onEnd = (index: number) => buffers.get(index)!.onEnd;
39
-
40
- const makeSink = (index: number) =>
41
- Sink.make<A, E, R>(
42
- (cause) => (Cause.hasInterruptsOnly(cause) ? onEnd(index) : sink.onFailure(cause)),
43
- (value) => onSuccess(index, value),
44
- );
45
-
46
- return {
47
- onSuccess,
48
- onEnd,
49
- makeSink,
50
- } as const;
51
- }
52
-
53
- function indexedBuffers<A, E, R>(size: number, sink: Sink.Sink<A, E, R>) {
54
- const buffers = new Map<number, ReturnType<typeof IndexedBuffer<A, E, R>>>();
55
-
56
- const last = size - 1;
57
- for (let i = 0; i < size; i++) {
58
- const deferred = Deferred.makeUnsafe<void>();
59
- const state = {
60
- ready: i === 0,
61
- deferred,
62
- };
63
-
64
- // First should start immediately
65
- if (i === 0) {
66
- Deferred.doneUnsafe(deferred, Exit.void);
67
- }
68
-
69
- buffers.set(
70
- i,
71
- IndexedBuffer(
72
- state,
73
- sink,
74
- i === last
75
- ? Effect.void
76
- : Effect.suspend(() => {
77
- const next = buffers.get(i + 1)!;
78
- next.state.ready = true;
79
- return Deferred.done(next.state.deferred, Exit.void);
80
- }),
81
- ),
82
- );
83
- }
84
-
85
- return buffers;
86
- }
87
-
88
- function IndexedBuffer<A, E, R>(
89
- state: {
90
- ready: boolean;
91
- deferred: Deferred.Deferred<void>;
92
- },
93
- sink: Sink.Sink<A, E, R>,
94
- onDone: Effect.Effect<void>,
95
- ) {
96
- let buffer: Array<A> = [];
97
-
98
- const onSuccess = (value: A) => {
99
- if (state.ready) {
100
- if (buffer.length === 0) return sink.onSuccess(value);
101
- buffer.push(value);
102
- const effect = Effect.forEach(buffer, sink.onSuccess);
103
- buffer = [];
104
- return effect;
105
- } else {
106
- buffer.push(value);
107
- return Effect.void;
108
- }
109
- };
110
-
111
- const onEnd = Effect.flatMap(Deferred.await(state.deferred), () => {
112
- if (buffer.length === 0) return onDone;
113
- const effect = Effect.forEach(buffer, sink.onSuccess);
114
- buffer = [];
115
- return Effect.ensuring(effect, onDone);
116
- });
117
-
118
- return {
119
- state,
120
- onSuccess,
121
- onEnd,
122
- };
123
- }
@@ -1,40 +0,0 @@
1
- import type * as Cause from "effect/Cause";
2
- import * as Effect from "effect/Effect";
3
- import { dual } from "effect/Function";
4
- import { make as makeSink } from "../../Sink/Sink.js";
5
- import { make } from "../constructors/make.js";
6
- import type { Fx } from "../Fx.js";
7
-
8
- /**
9
- * Adds an `Effect.onError`-style finalizer to an `Fx`.
10
- *
11
- * The cleanup is run only if the stream fails (including defects / interrupts
12
- * carried in the `Cause`).
13
- *
14
- * @since 1.0.0
15
- * @category combinators
16
- */
17
- export const onError: {
18
- <E, X, R2>(
19
- cleanup: (cause: Cause.Cause<E>) => Effect.Effect<X, never, R2>,
20
- ): <A, R>(self: Fx<A, E, R>) => Fx<A, E, R | R2>;
21
-
22
- <A, E, R, X, R2>(
23
- self: Fx<A, E, R>,
24
- cleanup: (cause: Cause.Cause<E>) => Effect.Effect<X, never, R2>,
25
- ): Fx<A, E, R | R2>;
26
- } = dual(
27
- 2,
28
- <A, E, R, X, R2>(
29
- self: Fx<A, E, R>,
30
- cleanup: (cause: Cause.Cause<E>) => Effect.Effect<X, never, R2>,
31
- ): Fx<A, E, R | R2> =>
32
- make<A, E, R | R2>((sink) =>
33
- self.run(
34
- makeSink(
35
- (cause) => Effect.flatMap(sink.onFailure(cause), () => Effect.ignore(cleanup(cause))),
36
- sink.onSuccess,
37
- ),
38
- ),
39
- ),
40
- );
@@ -1,82 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import * as Exit from "effect/Exit";
3
- import { dual } from "effect/Function";
4
- import * as Option from "effect/Option";
5
- import * as Ref from "effect/Ref";
6
- import { make as makeSink } from "../../Sink/Sink.js";
7
- import { make } from "../constructors/make.js";
8
- import type { Fx } from "../Fx.js";
9
-
10
- const toFinalizer =
11
- <A, E, XE, XR>(f: (exit: Exit.Exit<A, E>) => void | Effect.Effect<void, XE, XR>) =>
12
- (exit: Exit.Exit<A, E>): Effect.Effect<void, XE, XR> => {
13
- const x = f(exit);
14
- return Effect.isEffect(x) ? x : Effect.void;
15
- };
16
-
17
- /**
18
- * Adds an `Effect.onExit`-style finalizer to an `Fx`.
19
- *
20
- * The finalizer is run when the `Fx` terminates (success, failure, or interruption).
21
- *
22
- * @since 1.0.0
23
- * @category combinators
24
- */
25
- export const onExit: {
26
- <A, E, XE = never, XR = never>(
27
- f: (exit: Exit.Exit<void, E>) => void | Effect.Effect<void, XE, XR>,
28
- ): <R>(self: Fx<A, E, R>) => Fx<A, E | XE, R | XR>;
29
-
30
- <A, E, R, XE = never, XR = never>(
31
- self: Fx<A, E, R>,
32
- f: (exit: Exit.Exit<void, E>) => void | Effect.Effect<void, XE, XR>,
33
- ): Fx<A, E | XE, R | XR>;
34
- } = dual(
35
- 2,
36
- <A, E, R, XE, XR>(
37
- self: Fx<A, E, R>,
38
- f: (exit: Exit.Exit<void, E>) => void | Effect.Effect<void, XE, XR>,
39
- ): Fx<A, E | XE, R | XR> =>
40
- make<A, E | XE, R | XR>(
41
- Effect.fnUntraced(function* (sink) {
42
- const finalizer = toFinalizer(f);
43
- const observed = yield* Ref.make(Option.none<Exit.Exit<void, E>>());
44
-
45
- const recordExit = (exit: Exit.Exit<void, E>) =>
46
- Ref.modify(observed, (current) =>
47
- Option.isNone(current)
48
- ? ([true, Option.some(exit)] as const)
49
- : ([false, current] as const),
50
- ).pipe(Effect.asVoid);
51
-
52
- const runFinalizer = (exit: Exit.Exit<void, E>, allowReportFailure: boolean) =>
53
- Effect.matchCauseEffect(finalizer(exit), {
54
- onFailure: (cause) => (allowReportFailure ? sink.onFailure(cause) : Effect.void),
55
- onSuccess: () => Effect.void,
56
- });
57
-
58
- return yield* self
59
- .run(
60
- makeSink(
61
- (cause) =>
62
- Effect.flatMap(recordExit(Exit.failCause(cause)), () => sink.onFailure(cause)),
63
- sink.onSuccess,
64
- ),
65
- )
66
- .pipe(
67
- Effect.onExit((runExit) =>
68
- Effect.flatMap(Ref.get(observed), (maybe) =>
69
- Option.match(maybe, {
70
- onSome: (exit) => runFinalizer(exit, false),
71
- onNone: () =>
72
- Exit.match(runExit, {
73
- onFailure: (cause) => runFinalizer(Exit.failCause(cause), false),
74
- onSuccess: () => runFinalizer(Exit.succeed<void>(undefined), true),
75
- }),
76
- }),
77
- ),
78
- ),
79
- );
80
- }),
81
- ),
82
- );
@@ -1,87 +0,0 @@
1
- import * as Cause from "effect/Cause";
2
- import * as Effect from "effect/Effect";
3
- import { dual } from "effect/Function";
4
- import * as Option from "effect/Option";
5
- import * as Ref from "effect/Ref";
6
- import { make as makeSink } from "../../Sink/Sink.js";
7
- import { make } from "../constructors/make.js";
8
- import type { Fx } from "../Fx.js";
9
-
10
- const toFinalizer =
11
- <XE, XR>(
12
- f:
13
- | Effect.Effect<void, XE, XR>
14
- | ((interruptors: ReadonlySet<number>) => Effect.Effect<void, XE, XR>),
15
- ) =>
16
- (interruptors: ReadonlySet<number>) =>
17
- typeof f === "function" ? f(interruptors) : f;
18
-
19
- /**
20
- * Adds an `Effect.onInterrupt`-style finalizer to an `Fx`.
21
- *
22
- * The finalizer is run only when the stream is interrupted (either via an
23
- * interrupt cause or by interrupting the running fiber).
24
- *
25
- * @since 1.0.0
26
- * @category combinators
27
- */
28
- export const onInterrupt: {
29
- <XE, XR>(
30
- finalizer:
31
- | Effect.Effect<void, XE, XR>
32
- | ((interruptors: ReadonlySet<number>) => Effect.Effect<void, XE, XR>),
33
- ): <A, E, R>(self: Fx<A, E, R>) => Fx<A, E | XE, R | XR>;
34
-
35
- <A, E, R, XE, XR>(
36
- self: Fx<A, E, R>,
37
- finalizer:
38
- | Effect.Effect<void, XE, XR>
39
- | ((interruptors: ReadonlySet<number>) => Effect.Effect<void, XE, XR>),
40
- ): Fx<A, E | XE, R | XR>;
41
- } = dual(
42
- 2,
43
- <A, E, R, XE, XR>(
44
- self: Fx<A, E, R>,
45
- finalizer_:
46
- | Effect.Effect<void, XE, XR>
47
- | ((interruptors: ReadonlySet<number>) => Effect.Effect<void, XE, XR>),
48
- ): Fx<A, E | XE, R | XR> =>
49
- make<A, E | XE, R | XR>(
50
- Effect.fnUntraced(function* (sink) {
51
- const finalizer = toFinalizer(finalizer_);
52
- const interrupted = yield* Ref.make(Option.none<ReadonlySet<number>>());
53
-
54
- const record = (ids: ReadonlySet<number>) =>
55
- Ref.modify(interrupted, (current) =>
56
- Option.isNone(current)
57
- ? ([true, Option.some(ids)] as const)
58
- : ([false, current] as const),
59
- );
60
-
61
- const runFinalizer = (ids: ReadonlySet<number>) =>
62
- Effect.flatMap(record(ids), (first) =>
63
- first
64
- ? Effect.matchCauseEffect(finalizer(ids), {
65
- onFailure: () => Effect.void,
66
- onSuccess: () => Effect.void,
67
- })
68
- : Effect.void,
69
- );
70
-
71
- return yield* self
72
- .run(
73
- makeSink(
74
- (cause) =>
75
- Cause.hasInterruptsOnly(cause)
76
- ? Effect.matchCauseEffect(finalizer(Cause.interruptors(cause)), {
77
- onFailure: (cause2) => sink.onFailure(Cause.combine(cause, cause2)),
78
- onSuccess: () => sink.onFailure(cause),
79
- })
80
- : sink.onFailure(cause),
81
- sink.onSuccess,
82
- ),
83
- )
84
- .pipe(Effect.onInterrupt((ids) => runFinalizer(ids)));
85
- }),
86
- ),
87
- );
@@ -1,62 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import * as Exit from "effect/Exit";
3
- import { dual } from "effect/Function";
4
- import * as Layer from "effect/Layer";
5
- import * as Scope from "effect/Scope";
6
- import type * as ServiceMap from "effect/ServiceMap";
7
- import { make } from "../constructors/make.js";
8
- import type { Fx } from "../Fx.js";
9
-
10
- /**
11
- * Provides context to an Fx from a Layer.
12
- *
13
- * The context is provided to the entire Fx stream, including any effects run
14
- * during its execution. The context is scoped to the lifetime of the stream.
15
- *
16
- * @param layer - The Layer to provide.
17
- * @returns An `Fx` with the required context provided.
18
- * @since 1.0.0
19
- * @category combinators
20
- */
21
- export const provide: {
22
- <R2, E2 = never, R3 = never>(
23
- layer: Layer.Layer<R2, E2, R3>,
24
- ): <A, E, R>(fx: Fx<A, E, R>) => Fx<A, E | E2, Exclude<R, R2> | R3>;
25
-
26
- <A, E, R, R2, E2 = never, R3 = never>(
27
- fx: Fx<A, E, R>,
28
- layer: Layer.Layer<R2, E2, R3>,
29
- ): Fx<A, E | E2, Exclude<R, R2> | R3>;
30
- } = dual(
31
- 2,
32
- <A, E, R, R2, E2 = never, R3 = never>(
33
- fx: Fx<A, E, R>,
34
- layer: Layer.Layer<R2, E2, R3>,
35
- ): Fx<A, E | E2, Exclude<R, R2> | R3> =>
36
- make<A, E | E2, Exclude<R, R2> | R3>(
37
- Effect.fnUntraced(function* (sink) {
38
- const scope = yield* Scope.make();
39
- const servicesExit = yield* layer.pipe(Layer.buildWithScope(scope), Effect.exit);
40
-
41
- if (Exit.isFailure(servicesExit)) {
42
- yield* Scope.close(scope, servicesExit);
43
- return yield* sink.onFailure(servicesExit.cause);
44
- }
45
-
46
- return yield* fx.run(sink).pipe(
47
- Effect.provideServices(servicesExit.value),
48
- Effect.onExit((exit) => Scope.close(scope, exit)),
49
- );
50
- }),
51
- ),
52
- );
53
-
54
- export const provideServices: {
55
- <R2>(services: ServiceMap.ServiceMap<R2>): <A, E, R>(fx: Fx<A, E, R>) => Fx<A, E, Exclude<R, R2>>;
56
-
57
- <A, E, R, R2>(fx: Fx<A, E, R>, services: ServiceMap.ServiceMap<R2>): Fx<A, E, Exclude<R, R2>>;
58
- } = dual(
59
- 2,
60
- <A, E, R, R2>(fx: Fx<A, E, R>, services: ServiceMap.ServiceMap<R2>): Fx<A, E, Exclude<R, R2>> =>
61
- provide(fx, Layer.succeedServices(services)),
62
- );
@@ -1,20 +0,0 @@
1
- import { dual } from "effect/Function";
2
- import type { Fx } from "../Fx.js";
3
- import { slice } from "./slice.js";
4
-
5
- /**
6
- * Skips the first `n` elements of an Fx.
7
- *
8
- * @param n - The number of elements to skip.
9
- * @returns An `Fx` that emits values after the first `n` elements.
10
- * @since 1.0.0
11
- * @category combinators
12
- */
13
- export const skip: {
14
- (n: number): <A, E, R>(fx: Fx<A, E, R>) => Fx<A, E, R>;
15
-
16
- <A, E, R>(fx: Fx<A, E, R>, n: number): Fx<A, E, R>;
17
- } = dual(
18
- 2,
19
- <A, E, R>(fx: Fx<A, E, R>, n: number): Fx<A, E, R> => slice(fx, { skip: n, take: Infinity }),
20
- );
@@ -1,15 +0,0 @@
1
- import { equals } from "effect/Equal";
2
- import type { Fx } from "../Fx.js";
3
- import { skipRepeatsWith } from "./skipRepeatsWith.js";
4
-
5
- const skipRepeats_ = skipRepeatsWith<any>(equals);
6
-
7
- /**
8
- * Drops elements that are equal to the previous element using standard equality.
9
- *
10
- * @param fx - The `Fx` stream.
11
- * @returns An `Fx` with consecutive duplicates removed.
12
- * @since 1.0.0
13
- * @category combinators
14
- */
15
- export const skipRepeats: <A, E, R>(fx: Fx<A, E, R>) => Fx<A, E, R> = skipRepeats_;
@@ -1,40 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import type * as Equivalence from "effect/Equivalence";
3
- import * as Option from "effect/Option";
4
- import * as Ref from "effect/Ref";
5
- import * as sinkCore from "../../Sink/combinators.js";
6
- import { make as makeSink } from "../../Sink/Sink.js";
7
- import { make } from "../constructors/make.js";
8
- import type { Fx } from "../Fx.js";
9
-
10
- /**
11
- * Drops elements that are equal to the previous element using a custom equivalence function.
12
- *
13
- * @param Eq - The equivalence function to use.
14
- * @returns An `Fx` with consecutive duplicates removed.
15
- * @since 1.0.0
16
- * @category combinators
17
- */
18
- export const skipRepeatsWith =
19
- <A>(Eq: Equivalence.Equivalence<A>) =>
20
- <E, R>(fx: Fx<A, E, R>): Fx<A, E, R> =>
21
- make<A, E, R>((sink) =>
22
- sinkCore.withState(sink, Option.none<A>(), (sink) =>
23
- fx.run(
24
- makeSink(sink.onFailure, (a2) =>
25
- Effect.flatten(
26
- Ref.modify(
27
- sink.state,
28
- Option.match({
29
- onNone: () => [sink.onSuccess(a2), Option.some(a2)],
30
- onSome: (a) =>
31
- Eq(a, a2)
32
- ? [Effect.void, Option.some(a)]
33
- : [sink.onSuccess(a2), Option.some(a2)],
34
- }),
35
- ),
36
- ),
37
- ),
38
- ),
39
- ),
40
- );
@@ -1,32 +0,0 @@
1
- import { dual } from "effect/Function";
2
- import * as sinkCore from "../../Sink/combinators.js";
3
- import { make } from "../constructors/make.js";
4
- import type { Fx } from "../Fx.js";
5
-
6
- /**
7
- * Defines the bounds for slicing an Fx stream.
8
- * @since 1.0.0
9
- * @category models
10
- */
11
- export interface Bounds {
12
- readonly skip: number;
13
- readonly take: number;
14
- }
15
-
16
- /**
17
- * Slices an Fx by skipping a number of elements and then taking a number of elements.
18
- *
19
- * @param bounds - The `Bounds` specifying how many elements to skip and take.
20
- * @returns An `Fx` representing the slice.
21
- * @since 1.0.0
22
- * @category combinators
23
- */
24
- export const slice: {
25
- (bounds: Bounds): <A, E, R>(fx: Fx<A, E, R>) => Fx<A, E, R>;
26
-
27
- <A, E, R>(fx: Fx<A, E, R>, bounds: Bounds): Fx<A, E, R>;
28
- } = dual(
29
- 2,
30
- <A, E, R>(fx: Fx<A, E, R>, bounds: Bounds): Fx<A, E, R> =>
31
- make<A, E, R>((sink) => sinkCore.slice(sink, bounds, (sink) => fx.run(sink))),
32
- );
@@ -1,55 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import * as Fiber from "effect/Fiber";
3
- import { dual } from "effect/Function";
4
- import * as Scope from "effect/Scope";
5
- import * as ServiceMap from "effect/ServiceMap";
6
- import * as SyncronizedRef from "effect/SynchronizedRef";
7
- import { make as makeSink } from "../../Sink/Sink.js";
8
- import { make } from "../constructors/make.js";
9
- import type { Fx } from "../Fx.js";
10
- import { extendScope } from "../internal/scope.js";
11
- import type { FlatMapLike } from "./flatMap.js";
12
-
13
- /**
14
- * Maps each element of an Fx to a new Fx, and switches to the latest inner Fx.
15
- *
16
- * When a new element is emitted, the previous inner Fx is cancelled.
17
- *
18
- * @param f - A function that maps an element `A` to a new `Fx<B>`.
19
- * @returns An `Fx` that emits values from the latest inner stream.
20
- * @since 1.0.0
21
- * @category combinators
22
- */
23
- export const switchMap: FlatMapLike = dual(
24
- 2,
25
- <A, E, R, B, E2, R2>(
26
- self: Fx<A, E, R>,
27
- f: (a: A) => Fx<B, E2, R2>,
28
- ): Fx<B, E | E2, R | R2 | Scope.Scope> =>
29
- make<B, E | E2, R | R2 | Scope.Scope>(
30
- Effect.fn(function* (sink) {
31
- const ctx = yield* Effect.services<R2 | Scope.Scope>();
32
- const scope = ServiceMap.get(ctx, Scope.Scope);
33
- const fiberRef = yield* SyncronizedRef.make<Fiber.Fiber<unknown, never> | null>(null);
34
-
35
- const next = (value: A) =>
36
- Effect.forkIn(Effect.provideServices(f(value).run(sink), ctx), scope, {
37
- startImmediately: false,
38
- uninterruptible: false,
39
- });
40
-
41
- yield* self.run(
42
- makeSink(sink.onFailure, (value: A) =>
43
- SyncronizedRef.updateEffect(fiberRef, (fiber) =>
44
- fiber ? Fiber.interrupt(fiber).pipe(Effect.flatMap(() => next(value))) : next(value),
45
- ),
46
- ),
47
- );
48
-
49
- const fiber = yield* SyncronizedRef.get(fiberRef);
50
- if (fiber) {
51
- yield* Fiber.join(fiber);
52
- }
53
- }, extendScope),
54
- ),
55
- );
@@ -1,25 +0,0 @@
1
- import type * as Effect from "effect/Effect";
2
- import { dual, flow } from "effect/Function";
3
- import type * as Scope from "effect/Scope";
4
- import { fromEffect } from "../constructors/fromEffect.js";
5
- import type { Fx } from "../Fx.js";
6
- import type { FlatMapEffectLike } from "./flatMapEffect.js";
7
- import { switchMap } from "./switchMap.js";
8
-
9
- /**
10
- * Maps each element of an Fx to an Effect, and switches to the latest effect.
11
- *
12
- * When a new element is emitted, the previous effect is cancelled.
13
- *
14
- * @param f - A function that maps an element `A` to an `Effect<B>`.
15
- * @returns An `Fx` that emits the results of the latest effect.
16
- * @since 1.0.0
17
- * @category combinators
18
- */
19
- export const switchMapEffect: FlatMapEffectLike = dual(
20
- 2,
21
- <A, E, R, B, E2, R2>(
22
- self: Fx<A, E, R>,
23
- f: (a: A) => Effect.Effect<B, E2, R2>,
24
- ): Fx<B, E | E2, R | R2 | Scope.Scope> => switchMap(self, flow(f, fromEffect)),
25
- );
@@ -1,17 +0,0 @@
1
- import { dual } from "effect/Function";
2
- import type { Fx } from "../Fx.js";
3
- import { slice } from "./slice.js";
4
-
5
- /**
6
- * Takes the first `n` elements from an Fx and then completes.
7
- *
8
- * @param n - The number of elements to take.
9
- * @returns An `Fx` that emits at most `n` elements.
10
- * @since 1.0.0
11
- * @category combinators
12
- */
13
- export const take: {
14
- (n: number): <A, E, R>(fx: Fx<A, E, R>) => Fx<A, E, R>;
15
-
16
- <A, E, R>(fx: Fx<A, E, R>, n: number): Fx<A, E, R>;
17
- } = dual(2, <A, E, R>(fx: Fx<A, E, R>, n: number): Fx<A, E, R> => slice(fx, { skip: 0, take: n }));
@@ -1,50 +0,0 @@
1
- import { dual } from "effect/Function";
2
- import * as combinators from "../../Sink/combinators.js";
3
- import { make as makeSink } from "../../Sink/Sink.js";
4
- import { make as makeFx } from "../constructors/make.js";
5
- import type { Fx } from "../Fx.js";
6
-
7
- /**
8
- * Takes elements from an Fx until a predicate returns true.
9
- * The element that satisfies the predicate is not included in the output.
10
- *
11
- * @param predicate - The predicate function.
12
- * @returns An `Fx` that completes when the predicate matches.
13
- * @since 1.0.0
14
- * @category combinators
15
- */
16
- export const takeUntil: {
17
- <A>(predicate: (a: A) => boolean): <E, R>(fx: Fx<A, E, R>) => Fx<A, E, R>;
18
- <A, E, R>(fx: Fx<A, E, R>, predicate: (a: A) => boolean): Fx<A, E, R>;
19
- } = dual(2, <A, E, R>(fx: Fx<A, E, R>, predicate: (a: A) => boolean): Fx<A, E, R> => {
20
- return makeFx<A, E, R>((sink) =>
21
- combinators.withEarlyExit(sink, (sink) =>
22
- fx.run(
23
- makeSink(sink.onFailure, (a) => {
24
- if (predicate(a)) {
25
- return sink.earlyExit;
26
- }
27
- return sink.onSuccess(a);
28
- }),
29
- ),
30
- ),
31
- );
32
- });
33
-
34
- /**
35
- * Drops elements from an Fx after a predicate returns true.
36
- * The element that satisfies the predicate is included in the output.
37
- *
38
- * @param predicate - The predicate function.
39
- * @returns An `Fx` that stops emitting when the predicate matches.
40
- * @since 1.0.0
41
- * @category combinators
42
- */
43
- export const dropAfter: {
44
- <A>(predicate: (a: A) => boolean): <E, R>(fx: Fx<A, E, R>) => Fx<A, E, R>;
45
- <A, E, R>(fx: Fx<A, E, R>, predicate: (a: A) => boolean): Fx<A, E, R>;
46
- } = dual(
47
- 2,
48
- <A, E, R>(fx: Fx<A, E, R>, predicate: (a: A) => boolean): Fx<A, E, R> =>
49
- makeFx<A, E, R>((sink) => combinators.dropAfter(sink, predicate, (sink) => fx.run(sink))),
50
- );