@typed/fx 2.0.0-beta.1 → 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 (664) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +35 -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 +162 -11
  10. package/dist/Fx/combinators/additive.d.ts.map +1 -1
  11. package/dist/Fx/combinators/additive.js +162 -11
  12. package/dist/Fx/combinators/catch.d.ts +202 -29
  13. package/dist/Fx/combinators/catch.d.ts.map +1 -1
  14. package/dist/Fx/combinators/catch.js +193 -23
  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 +21 -1
  19. package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -1
  20. package/dist/Fx/combinators/changesWithEffect.js +21 -1
  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 +44 -2
  37. package/dist/Fx/combinators/dropUntil.d.ts.map +1 -1
  38. package/dist/Fx/combinators/dropUntil.js +44 -2
  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 +48 -2
  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 +35 -0
  109. package/dist/Fx/combinators/index.d.ts.map +1 -1
  110. package/dist/Fx/combinators/index.js +35 -0
  111. package/dist/Fx/combinators/keyed.d.ts +123 -9
  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 +20 -1
  130. package/dist/Fx/combinators/mapBoth.d.ts.map +1 -1
  131. package/dist/Fx/combinators/mapBoth.js +20 -1
  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 +21 -5
  136. package/dist/Fx/combinators/mapError.d.ts.map +1 -1
  137. package/dist/Fx/combinators/mapError.js +21 -5
  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 +141 -20
  157. package/dist/Fx/combinators/provide.d.ts.map +1 -1
  158. package/dist/Fx/combinators/provide.js +137 -16
  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 +23 -1
  166. package/dist/Fx/combinators/result.d.ts.map +1 -1
  167. package/dist/Fx/combinators/result.js +27 -13
  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 +41 -2
  175. package/dist/Fx/combinators/scan.d.ts.map +1 -1
  176. package/dist/Fx/combinators/scan.js +43 -4
  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 +33 -2
  181. package/dist/Fx/combinators/skip.d.ts.map +1 -1
  182. package/dist/Fx/combinators/skip.js +33 -2
  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 +72 -4
  190. package/dist/Fx/combinators/skipWhile.d.ts.map +1 -1
  191. package/dist/Fx/combinators/skipWhile.js +72 -4
  192. package/dist/Fx/combinators/slice.d.ts +85 -3
  193. package/dist/Fx/combinators/slice.d.ts.map +1 -1
  194. package/dist/Fx/combinators/slice.js +35 -2
  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 +34 -2
  202. package/dist/Fx/combinators/take.d.ts.map +1 -1
  203. package/dist/Fx/combinators/take.js +34 -2
  204. package/dist/Fx/combinators/takeUntil.d.ts +49 -3
  205. package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
  206. package/dist/Fx/combinators/takeUntil.js +49 -3
  207. package/dist/Fx/combinators/takeWhile.d.ts +33 -2
  208. package/dist/Fx/combinators/takeWhile.d.ts.map +1 -1
  209. package/dist/Fx/combinators/takeWhile.js +33 -2
  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 +64 -4
  241. package/dist/Fx/combinators/zip.d.ts.map +1 -1
  242. package/dist/Fx/combinators/zip.js +64 -4
  243. package/dist/Fx/constructors/at.d.ts +21 -1
  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 +30 -1
  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 +1229 -104
  342. package/dist/Push/Push.d.ts.map +1 -1
  343. package/dist/Push/Push.js +1024 -95
  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 +133 -12
  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 +1197 -45
  456. package/dist/RefSubject/RefSubject.d.ts.map +1 -1
  457. package/dist/RefSubject/RefSubject.js +935 -88
  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 +740 -11
  480. package/dist/Sink/combinators.d.ts.map +1 -1
  481. package/dist/Sink/combinators.js +716 -14
  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 +447 -27
  486. package/dist/Versioned/Versioned.d.ts.map +1 -1
  487. package/dist/Versioned/Versioned.js +282 -48
  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 +126 -16
  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/additive.ts +0 -142
  498. package/src/Fx/combinators/catch.ts +0 -421
  499. package/src/Fx/combinators/causes.ts +0 -23
  500. package/src/Fx/combinators/changesWithEffect.ts +0 -66
  501. package/src/Fx/combinators/compact.ts +0 -15
  502. package/src/Fx/combinators/continueWith.ts +0 -78
  503. package/src/Fx/combinators/dropUntil.ts +0 -47
  504. package/src/Fx/combinators/ensuring.ts +0 -23
  505. package/src/Fx/combinators/exhaustLatestMap.ts +0 -74
  506. package/src/Fx/combinators/exhaustLatestMapEffect.ts +0 -25
  507. package/src/Fx/combinators/exhaustMap.ts +0 -36
  508. package/src/Fx/combinators/exhaustMapEffect.ts +0 -23
  509. package/src/Fx/combinators/exit.ts +0 -15
  510. package/src/Fx/combinators/filter.ts +0 -22
  511. package/src/Fx/combinators/filterEffect.ts +0 -31
  512. package/src/Fx/combinators/filterMap.ts +0 -23
  513. package/src/Fx/combinators/filterMapEffect.ts +0 -32
  514. package/src/Fx/combinators/filterMapLoop.ts +0 -35
  515. package/src/Fx/combinators/filterMapLoopCause.ts +0 -36
  516. package/src/Fx/combinators/filterMapLoopCauseEffect.ts +0 -46
  517. package/src/Fx/combinators/filterMapLoopEffect.ts +0 -36
  518. package/src/Fx/combinators/flatMap.ts +0 -51
  519. package/src/Fx/combinators/flatMapConcurrently.ts +0 -39
  520. package/src/Fx/combinators/flatMapConcurrentlyEffect.ts +0 -26
  521. package/src/Fx/combinators/flatMapEffect.ts +0 -42
  522. package/src/Fx/combinators/flip.ts +0 -14
  523. package/src/Fx/combinators/gen.ts +0 -24
  524. package/src/Fx/combinators/genScoped.ts +0 -24
  525. package/src/Fx/combinators/index.ts +0 -61
  526. package/src/Fx/combinators/keyed.ts +0 -369
  527. package/src/Fx/combinators/loop.ts +0 -27
  528. package/src/Fx/combinators/loopCause.ts +0 -34
  529. package/src/Fx/combinators/loopCauseEffect.ts +0 -36
  530. package/src/Fx/combinators/loopEffect.ts +0 -34
  531. package/src/Fx/combinators/map.ts +0 -22
  532. package/src/Fx/combinators/mapBoth.ts +0 -40
  533. package/src/Fx/combinators/mapEffect.ts +0 -32
  534. package/src/Fx/combinators/mapError.ts +0 -28
  535. package/src/Fx/combinators/mergeAll.ts +0 -22
  536. package/src/Fx/combinators/mergeOrdered.ts +0 -123
  537. package/src/Fx/combinators/onError.ts +0 -40
  538. package/src/Fx/combinators/onExit.ts +0 -82
  539. package/src/Fx/combinators/onInterrupt.ts +0 -87
  540. package/src/Fx/combinators/provide.ts +0 -124
  541. package/src/Fx/combinators/result.ts +0 -39
  542. package/src/Fx/combinators/scan.ts +0 -82
  543. package/src/Fx/combinators/skip.ts +0 -41
  544. package/src/Fx/combinators/skipRepeats.ts +0 -15
  545. package/src/Fx/combinators/skipRepeatsWith.ts +0 -40
  546. package/src/Fx/combinators/skipWhile.ts +0 -100
  547. package/src/Fx/combinators/slice.ts +0 -55
  548. package/src/Fx/combinators/switchMap.ts +0 -55
  549. package/src/Fx/combinators/switchMapEffect.ts +0 -25
  550. package/src/Fx/combinators/take.ts +0 -38
  551. package/src/Fx/combinators/takeUntil.ts +0 -88
  552. package/src/Fx/combinators/takeWhile.ts +0 -47
  553. package/src/Fx/combinators/tapEffect.ts +0 -39
  554. package/src/Fx/combinators/tuple.ts +0 -79
  555. package/src/Fx/combinators/unwrap.ts +0 -21
  556. package/src/Fx/combinators/unwrapScoped.ts +0 -26
  557. package/src/Fx/combinators/when.ts +0 -64
  558. package/src/Fx/combinators/withSpan.ts +0 -24
  559. package/src/Fx/combinators/zip.ts +0 -175
  560. package/src/Fx/constructors/at.ts +0 -23
  561. package/src/Fx/constructors/die.ts +0 -17
  562. package/src/Fx/constructors/empty.ts +0 -10
  563. package/src/Fx/constructors/fail.ts +0 -14
  564. package/src/Fx/constructors/failCause.ts +0 -14
  565. package/src/Fx/constructors/fn.ts +0 -245
  566. package/src/Fx/constructors/fromEffect.ts +0 -24
  567. package/src/Fx/constructors/fromFailures.ts +0 -19
  568. package/src/Fx/constructors/fromIterable.ts +0 -15
  569. package/src/Fx/constructors/fromSchedule.ts +0 -18
  570. package/src/Fx/constructors/fromYieldable.ts +0 -17
  571. package/src/Fx/constructors/index.ts +0 -15
  572. package/src/Fx/constructors/interrupt.ts +0 -13
  573. package/src/Fx/constructors/make.ts +0 -103
  574. package/src/Fx/constructors/periodic.ts +0 -15
  575. package/src/Fx/constructors/succeed.ts +0 -37
  576. package/src/Fx/constructors/suspend.ts +0 -6
  577. package/src/Fx/index.ts +0 -6
  578. package/src/Fx/internal/DeferredRef.ts +0 -87
  579. package/src/Fx/internal/UnionToTuple.ts +0 -12
  580. package/src/Fx/internal/diff.ts +0 -191
  581. package/src/Fx/internal/equivalence.ts +0 -12
  582. package/src/Fx/internal/multicast.ts +0 -51
  583. package/src/Fx/internal/ring-buffer.ts +0 -60
  584. package/src/Fx/internal/scope.ts +0 -58
  585. package/src/Fx/internal/yieldable.ts +0 -31
  586. package/src/Fx/run/collect.ts +0 -79
  587. package/src/Fx/run/first.ts +0 -20
  588. package/src/Fx/run/fork.ts +0 -40
  589. package/src/Fx/run/index.ts +0 -5
  590. package/src/Fx/run/observe.ts +0 -114
  591. package/src/Fx/run/runPromise.ts +0 -32
  592. package/src/Fx/stream.ts +0 -42
  593. package/src/Fx.additive-combinators.test.ts +0 -126
  594. package/src/Fx.catch-additive.test.ts +0 -206
  595. package/src/Fx.catch.test.ts +0 -60
  596. package/src/Fx.dropUntil.test.ts +0 -61
  597. package/src/Fx.fn.test.ts +0 -51
  598. package/src/Fx.lifecycle.test.ts +0 -79
  599. package/src/Fx.mapError-mapBoth.test.ts +0 -101
  600. package/src/Fx.provide-combinators.test.ts +0 -94
  601. package/src/Fx.result-changesWithEffect.test.ts +0 -112
  602. package/src/Fx.scan.test.ts +0 -73
  603. package/src/Fx.takeWhile-skipWhile.test.ts +0 -84
  604. package/src/Fx.test.ts +0 -71
  605. package/src/Fx.ts +0 -1
  606. package/src/Fx.zip-merge-additive.test.ts +0 -171
  607. package/src/Fx.zip.test.ts +0 -133
  608. package/src/Push/Push.ts +0 -1072
  609. package/src/Push/index.ts +0 -1
  610. package/src/Push.additive.test.ts +0 -256
  611. package/src/Push.test.ts +0 -26
  612. package/src/Push.ts +0 -1
  613. package/src/RefSubject/RefArray.ts +0 -512
  614. package/src/RefSubject/RefBigDecimal.test.ts +0 -56
  615. package/src/RefSubject/RefBigDecimal.ts +0 -295
  616. package/src/RefSubject/RefBigInt.test.ts +0 -56
  617. package/src/RefSubject/RefBigInt.ts +0 -189
  618. package/src/RefSubject/RefBoolean.test.ts +0 -57
  619. package/src/RefSubject/RefBoolean.ts +0 -185
  620. package/src/RefSubject/RefCause.test.ts +0 -53
  621. package/src/RefSubject/RefCause.ts +0 -146
  622. package/src/RefSubject/RefChunk.ts +0 -510
  623. package/src/RefSubject/RefDateTime.test.ts +0 -43
  624. package/src/RefSubject/RefDateTime.ts +0 -264
  625. package/src/RefSubject/RefDuration.test.ts +0 -49
  626. package/src/RefSubject/RefDuration.ts +0 -188
  627. package/src/RefSubject/RefGraph.ts +0 -650
  628. package/src/RefSubject/RefHashMap.ts +0 -465
  629. package/src/RefSubject/RefHashRing.ts +0 -262
  630. package/src/RefSubject/RefHashSet.ts +0 -308
  631. package/src/RefSubject/RefIterable.ts +0 -445
  632. package/src/RefSubject/RefOption.test.ts +0 -67
  633. package/src/RefSubject/RefOption.ts +0 -193
  634. package/src/RefSubject/RefRecord.ts +0 -612
  635. package/src/RefSubject/RefResult.test.ts +0 -63
  636. package/src/RefSubject/RefResult.ts +0 -209
  637. package/src/RefSubject/RefString.test.ts +0 -61
  638. package/src/RefSubject/RefString.ts +0 -256
  639. package/src/RefSubject/RefStruct.test.ts +0 -60
  640. package/src/RefSubject/RefStruct.ts +0 -253
  641. package/src/RefSubject/RefSubject.ts +0 -2646
  642. package/src/RefSubject/RefTrie.ts +0 -356
  643. package/src/RefSubject/RefTuple.test.ts +0 -60
  644. package/src/RefSubject/RefTuple.ts +0 -231
  645. package/src/RefSubject/index.ts +0 -21
  646. package/src/RefSubject.additive-parity.test.ts +0 -101
  647. package/src/RefSubject.test.ts +0 -65
  648. package/src/RefSubject.ts +0 -1
  649. package/src/Sink/Sink.ts +0 -159
  650. package/src/Sink/combinators.ts +0 -1115
  651. package/src/Sink/index.ts +0 -2
  652. package/src/Sink.combinators.test.ts +0 -88
  653. package/src/Sink.reduce-collect-head-last.test.ts +0 -107
  654. package/src/Sink.ts +0 -1
  655. package/src/Subject/Subject.ts +0 -441
  656. package/src/Subject/index.ts +0 -1
  657. package/src/Subject.test.ts +0 -47
  658. package/src/Subject.ts +0 -1
  659. package/src/Versioned/Versioned.ts +0 -597
  660. package/src/Versioned/index.ts +0 -1
  661. package/src/Versioned.filterMap.test.ts +0 -91
  662. package/src/Versioned.test.ts +0 -23
  663. package/src/Versioned.ts +0 -1
  664. package/src/index.ts +0 -7
@@ -1,11 +1,195 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Fiber from "effect/Fiber";
3
3
  import * as Scope from "effect/Scope";
4
+ /** Finalizer execution order accepted by the published Fx scope helpers.
5
+ *
6
+ * @remarks
7
+ * ## Why
8
+ *
9
+ * Fx operators sometimes require deterministic teardown and sometimes permit independent
10
+ * finalizers to run concurrently. This narrower type exposes only the strategies these helpers
11
+ * intentionally forward to Effect Scope.
12
+ *
13
+ * ## Ownership and lifetime
14
+ *
15
+ * This is compile-time metadata and acquires no runtime resources.
16
+ *
17
+ * @since 1.0.0
18
+ * @category type-level
19
+ * @stability internal-but-published
20
+ */
4
21
  export type ExecutionStrategy = "sequential" | "parallel";
22
+ /** Forks a closeable child from the current Scope and passes it to an Effect builder.
23
+ *
24
+ * @remarks
25
+ * ## Why
26
+ *
27
+ * Operators need a lifetime they can close independently while still guaranteeing that the parent
28
+ * Scope eventually closes it if the operator is interrupted.
29
+ *
30
+ * ## Ownership and lifetime
31
+ *
32
+ * The caller's required Scope owns the forked child. This helper does not close the child when `f`
33
+ * returns; parent closure does. Use `withExtendedScope` when the child must close at the returned
34
+ * Effect's exit. `f` retains its exact value, typed error, and service channels.
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * import { withCloseableScope } from "@typed/fx/Fx/internal/scope"
39
+ * import * as Effect from "effect/Effect"
40
+ *
41
+ * const child = withCloseableScope((scope) => Effect.succeed(scope), "sequential")
42
+ * const scope = Effect.runSync(Effect.scoped(child))
43
+ * ```
44
+ *
45
+ * @since 1.0.0
46
+ * @category lifecycle
47
+ * @stability internal-but-published
48
+ */
5
49
  export declare const withCloseableScope: <A, E, R>(f: (scope: Scope.Closeable) => Effect.Effect<A, E, R>, executionStrategy?: ExecutionStrategy) => Effect.Effect<A, E, R | Scope.Scope>;
50
+ /** Runs an Effect in a child Scope and closes that child when the Effect exits.
51
+ *
52
+ * @remarks
53
+ * ## Why
54
+ *
55
+ * Flattening and timing operators often need resources acquired by one inner Effect to survive its
56
+ * local construction but not the enclosing operator run.
57
+ *
58
+ * ## Ownership and lifetime
59
+ *
60
+ * A sequentially closing child Scope is forked from the required parent Scope, installed as the
61
+ * Effect's `Scope.Scope` service, and closed with the same `Exit` on success, typed failure, defect,
62
+ * or interruption. Non-Scope services and the `A`/`E` channels are unchanged.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * import { extendScope } from "@typed/fx/Fx/internal/scope"
67
+ * import * as Effect from "effect/Effect"
68
+ *
69
+ * const value = Effect.scoped(extendScope(Effect.succeed("ready")))
70
+ * ```
71
+ *
72
+ * @since 1.0.0
73
+ * @category lifecycle
74
+ * @stability internal-but-published
75
+ */
6
76
  export declare const extendScope: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R | Scope.Scope>;
77
+ /** Builds and runs an Effect inside a child Scope that closes at the Effect's exit.
78
+ *
79
+ * @remarks
80
+ * ## Why
81
+ *
82
+ * This combines access to the closeable child with guaranteed local teardown, allowing an operator
83
+ * to register resources and also close the lifetime explicitly before the parent ends.
84
+ *
85
+ * ## Ownership and lifetime
86
+ *
87
+ * The required parent Scope owns the child as a fallback. The child is provided to `f` as the
88
+ * current Scope and is also closed with `f`'s exact `Exit`. `executionStrategy` controls ordering of
89
+ * its finalizers. The helper preserves typed errors and remaining service requirements.
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * import { withExtendedScope } from "@typed/fx/Fx/internal/scope"
94
+ * import * as Effect from "effect/Effect"
95
+ * import * as Scope from "effect/Scope"
96
+ *
97
+ * const program = withExtendedScope((scope) =>
98
+ * Scope.addFinalizer(scope, Effect.log("child closed"))
99
+ * )
100
+ * Effect.runSync(Effect.scoped(program))
101
+ * ```
102
+ *
103
+ * @since 1.0.0
104
+ * @category lifecycle
105
+ * @stability internal-but-published
106
+ */
7
107
  export declare const withExtendedScope: <A, E, R>(f: (scope: Scope.Closeable) => Effect.Effect<A, E, R>, executionStrategy?: ExecutionStrategy) => Effect.Effect<A, E, R | Scope.Scope>;
108
+ /** Starts Effects as interruptible fibers owned by an operator's child Scope.
109
+ *
110
+ * @remarks
111
+ * ## Why
112
+ *
113
+ * Passing a constrained fork function prevents nested work from escaping the exact lifetime an Fx
114
+ * operator established for it.
115
+ *
116
+ * ## Ownership and lifetime
117
+ *
118
+ * Each returned Fiber is closed by that child Scope. The forked Effect keeps its own typed error and
119
+ * service channels; fiber creation itself cannot fail in the typed channel.
120
+ *
121
+ * @since 1.0.0
122
+ * @category type-level
123
+ * @stability internal-but-published
124
+ */
8
125
  export type Fork = <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<Fiber.Fiber<A, E>, never, R>;
126
+ /** Provides a child Scope and a function for forking interruptible work into it.
127
+ *
128
+ * @remarks
129
+ * ## Why
130
+ *
131
+ * Concurrent Fx operators need all child fibers to terminate together when their operator run ends,
132
+ * including failure and interruption paths.
133
+ *
134
+ * ## Ownership and lifetime
135
+ *
136
+ * The helper uses `withExtendedScope`, so the child closes on every exit and remains attached to the
137
+ * required parent Scope. Forks use `Effect.forkIn` with `uninterruptible: false` and
138
+ * `startImmediately: false`; their services come from the Effect supplied to `fork`. Finalizer order
139
+ * follows `executionStrategy`.
140
+ *
141
+ * @example
142
+ * ```ts
143
+ * import { withScopedFork } from "@typed/fx/Fx/internal/scope"
144
+ * import * as Effect from "effect/Effect"
145
+ * import * as Fiber from "effect/Fiber"
146
+ *
147
+ * const program = withScopedFork((fork) =>
148
+ * Effect.flatMap(fork(Effect.succeed(1)), Fiber.join)
149
+ * )
150
+ * Effect.runSync(Effect.scoped(program))
151
+ * ```
152
+ *
153
+ * @since 1.0.0
154
+ * @category lifecycle
155
+ * @stability internal-but-published
156
+ */
9
157
  export declare const withScopedFork: <A, E, R>(f: (fork: Fork, scope: Scope.Closeable) => Effect.Effect<A, E, R>, executionStrategy?: ExecutionStrategy) => Effect.Effect<A, E, R | Scope.Scope>;
158
+ /** Suspends until a Scope starts running its finalizers.
159
+ *
160
+ * @remarks
161
+ * ## Why
162
+ *
163
+ * Subjects remain subscribed for the lifetime of their observing Scope even when there is no other
164
+ * Effect work to await. Registering a finalizer turns that lifetime boundary into a completion
165
+ * signal without polling.
166
+ *
167
+ * ## Ownership and lifetime
168
+ *
169
+ * Execution registers one finalizer on `scope` from a small helper fiber using the current
170
+ * scheduler. The Effect resumes when that finalizer runs. Cancelling the callback interrupts the
171
+ * registration fiber; once registration has completed, the finalizer belongs to `scope`. No typed
172
+ * errors or services are introduced.
173
+ *
174
+ * @example
175
+ * ```ts
176
+ * import { awaitScopeClose } from "@typed/fx/Fx/internal/scope"
177
+ * import * as Effect from "effect/Effect"
178
+ * import * as Exit from "effect/Exit"
179
+ * import * as Fiber from "effect/Fiber"
180
+ * import * as Scope from "effect/Scope"
181
+ *
182
+ * const program = Effect.gen(function* () {
183
+ * const scope = yield* Scope.make()
184
+ * const waiter = yield* Effect.forkDetach(awaitScopeClose(scope))
185
+ * yield* Scope.close(scope, Exit.void)
186
+ * yield* Fiber.join(waiter)
187
+ * })
188
+ * ```
189
+ *
190
+ * @since 1.0.0
191
+ * @category lifecycle
192
+ * @stability internal-but-published
193
+ */
10
194
  export declare function awaitScopeClose(scope: Scope.Scope): Effect.Effect<unknown, never, never>;
11
195
  //# sourceMappingURL=scope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/Fx/internal/scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE1D,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EACxC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACrD,oBAAoB,iBAAiB,KACpC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CACiD,CAAC;AAExF,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EACjC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAInC,CAAC;AAEJ,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EACvC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACrD,oBAAoB,iBAAiB,KACpC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAKnC,CAAC;AAEJ,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEhD,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EACpC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACjE,oBAAoB,iBAAiB,KACpC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAQnC,CAAC;AAEJ,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,wCASjD"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../../src/Fx/internal/scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,UAAU,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KACrC,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,sBACjC,iBAAiB,KACpC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CACiD,CAAC;AAExF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UACzB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAInC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KACpC,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,sBACjC,iBAAiB,KACpC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAKnC,CAAC;AAEJ;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC3B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KACjC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,sBAC7C,iBAAiB,KACpC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAQnC,CAAC;AAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,wCASjD"}
@@ -1,10 +1,160 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Fiber from "effect/Fiber";
3
3
  import * as Scope from "effect/Scope";
4
+ /** Forks a closeable child from the current Scope and passes it to an Effect builder.
5
+ *
6
+ * @remarks
7
+ * ## Why
8
+ *
9
+ * Operators need a lifetime they can close independently while still guaranteeing that the parent
10
+ * Scope eventually closes it if the operator is interrupted.
11
+ *
12
+ * ## Ownership and lifetime
13
+ *
14
+ * The caller's required Scope owns the forked child. This helper does not close the child when `f`
15
+ * returns; parent closure does. Use `withExtendedScope` when the child must close at the returned
16
+ * Effect's exit. `f` retains its exact value, typed error, and service channels.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * import { withCloseableScope } from "@typed/fx/Fx/internal/scope"
21
+ * import * as Effect from "effect/Effect"
22
+ *
23
+ * const child = withCloseableScope((scope) => Effect.succeed(scope), "sequential")
24
+ * const scope = Effect.runSync(Effect.scoped(child))
25
+ * ```
26
+ *
27
+ * @since 1.0.0
28
+ * @category lifecycle
29
+ * @stability internal-but-published
30
+ */
4
31
  export const withCloseableScope = (f, executionStrategy) => Effect.scopedWith((scope) => Effect.flatMap(Scope.fork(scope, executionStrategy), f));
32
+ /** Runs an Effect in a child Scope and closes that child when the Effect exits.
33
+ *
34
+ * @remarks
35
+ * ## Why
36
+ *
37
+ * Flattening and timing operators often need resources acquired by one inner Effect to survive its
38
+ * local construction but not the enclosing operator run.
39
+ *
40
+ * ## Ownership and lifetime
41
+ *
42
+ * A sequentially closing child Scope is forked from the required parent Scope, installed as the
43
+ * Effect's `Scope.Scope` service, and closed with the same `Exit` on success, typed failure, defect,
44
+ * or interruption. Non-Scope services and the `A`/`E` channels are unchanged.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * import { extendScope } from "@typed/fx/Fx/internal/scope"
49
+ * import * as Effect from "effect/Effect"
50
+ *
51
+ * const value = Effect.scoped(extendScope(Effect.succeed("ready")))
52
+ * ```
53
+ *
54
+ * @since 1.0.0
55
+ * @category lifecycle
56
+ * @stability internal-but-published
57
+ */
5
58
  export const extendScope = (effect) => withCloseableScope((scope) => Scope.provide(effect.pipe(Effect.onExit((exit) => Scope.close(scope, exit))), scope), "sequential");
59
+ /** Builds and runs an Effect inside a child Scope that closes at the Effect's exit.
60
+ *
61
+ * @remarks
62
+ * ## Why
63
+ *
64
+ * This combines access to the closeable child with guaranteed local teardown, allowing an operator
65
+ * to register resources and also close the lifetime explicitly before the parent ends.
66
+ *
67
+ * ## Ownership and lifetime
68
+ *
69
+ * The required parent Scope owns the child as a fallback. The child is provided to `f` as the
70
+ * current Scope and is also closed with `f`'s exact `Exit`. `executionStrategy` controls ordering of
71
+ * its finalizers. The helper preserves typed errors and remaining service requirements.
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * import { withExtendedScope } from "@typed/fx/Fx/internal/scope"
76
+ * import * as Effect from "effect/Effect"
77
+ * import * as Scope from "effect/Scope"
78
+ *
79
+ * const program = withExtendedScope((scope) =>
80
+ * Scope.addFinalizer(scope, Effect.log("child closed"))
81
+ * )
82
+ * Effect.runSync(Effect.scoped(program))
83
+ * ```
84
+ *
85
+ * @since 1.0.0
86
+ * @category lifecycle
87
+ * @stability internal-but-published
88
+ */
6
89
  export const withExtendedScope = (f, executionStrategy) => withCloseableScope((scope) => Scope.provide(f(scope).pipe(Effect.onExit((exit) => Scope.close(scope, exit))), scope), executionStrategy);
90
+ /** Provides a child Scope and a function for forking interruptible work into it.
91
+ *
92
+ * @remarks
93
+ * ## Why
94
+ *
95
+ * Concurrent Fx operators need all child fibers to terminate together when their operator run ends,
96
+ * including failure and interruption paths.
97
+ *
98
+ * ## Ownership and lifetime
99
+ *
100
+ * The helper uses `withExtendedScope`, so the child closes on every exit and remains attached to the
101
+ * required parent Scope. Forks use `Effect.forkIn` with `uninterruptible: false` and
102
+ * `startImmediately: false`; their services come from the Effect supplied to `fork`. Finalizer order
103
+ * follows `executionStrategy`.
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * import { withScopedFork } from "@typed/fx/Fx/internal/scope"
108
+ * import * as Effect from "effect/Effect"
109
+ * import * as Fiber from "effect/Fiber"
110
+ *
111
+ * const program = withScopedFork((fork) =>
112
+ * Effect.flatMap(fork(Effect.succeed(1)), Fiber.join)
113
+ * )
114
+ * Effect.runSync(Effect.scoped(program))
115
+ * ```
116
+ *
117
+ * @since 1.0.0
118
+ * @category lifecycle
119
+ * @stability internal-but-published
120
+ */
7
121
  export const withScopedFork = (f, executionStrategy) => withExtendedScope((scope) => f((eff) => Effect.forkIn(eff, scope, { uninterruptible: false, startImmediately: false }), scope), executionStrategy);
122
+ /** Suspends until a Scope starts running its finalizers.
123
+ *
124
+ * @remarks
125
+ * ## Why
126
+ *
127
+ * Subjects remain subscribed for the lifetime of their observing Scope even when there is no other
128
+ * Effect work to await. Registering a finalizer turns that lifetime boundary into a completion
129
+ * signal without polling.
130
+ *
131
+ * ## Ownership and lifetime
132
+ *
133
+ * Execution registers one finalizer on `scope` from a small helper fiber using the current
134
+ * scheduler. The Effect resumes when that finalizer runs. Cancelling the callback interrupts the
135
+ * registration fiber; once registration has completed, the finalizer belongs to `scope`. No typed
136
+ * errors or services are introduced.
137
+ *
138
+ * @example
139
+ * ```ts
140
+ * import { awaitScopeClose } from "@typed/fx/Fx/internal/scope"
141
+ * import * as Effect from "effect/Effect"
142
+ * import * as Exit from "effect/Exit"
143
+ * import * as Fiber from "effect/Fiber"
144
+ * import * as Scope from "effect/Scope"
145
+ *
146
+ * const program = Effect.gen(function* () {
147
+ * const scope = yield* Scope.make()
148
+ * const waiter = yield* Effect.forkDetach(awaitScopeClose(scope))
149
+ * yield* Scope.close(scope, Exit.void)
150
+ * yield* Fiber.join(waiter)
151
+ * })
152
+ * ```
153
+ *
154
+ * @since 1.0.0
155
+ * @category lifecycle
156
+ * @stability internal-but-published
157
+ */
8
158
  export function awaitScopeClose(scope) {
9
159
  return Effect.callback(function (cb) {
10
160
  return Fiber.interrupt(Effect.runFork(Scope.addFinalizerExit(scope, () => Effect.sync(() => cb(Effect.void))), { scheduler: this }));
@@ -2,16 +2,131 @@ import * as Effect from "effect/Effect";
2
2
  import type { Sink } from "../../Sink/Sink.js";
3
3
  import type * as Fx from "../Fx.js";
4
4
  import { FxTypeId } from "../TypeId.js";
5
- export declare abstract class YieldableFx<A, E, R, B, E2, R2> extends Effect.YieldableClass<B, E2, R2> implements Fx.Fx<A, E, R> {
5
+ import { EffectableWithOverride } from "./effectableWithOverride.js";
6
+ /** Base class for values that are both an Fx push source and an Effect-compatible sample.
7
+ *
8
+ * @remarks
9
+ * ## Why
10
+ *
11
+ * RefSubject and Versioned values need one object that composes through Fx operators when observed
12
+ * and through Effect operators when a current value is requested. This class supplies the shared
13
+ * brands, pipeability, and Effect evaluator bridge without forcing the two channels to have the
14
+ * same value, error, or service types.
15
+ *
16
+ * ## Ownership and lifetime
17
+ *
18
+ * The base class acquires no resources. `run` defines the push subscription lifetime and `toEffect`
19
+ * defines sampling. The first Effect evaluation memoizes the Effect object returned by `toEffect`,
20
+ * not its result: each execution still follows that Effect's own acquisition, error, interruption,
21
+ * and cleanup behavior.
22
+ *
23
+ * This is a published advanced extension point coupled to Typed's Fx brand and Effect evaluator
24
+ * protocol. Its shape may change between prereleases.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * import { YieldableFx } from "@typed/fx/Fx/internal/yieldable"
29
+ * import type { Sink } from "@typed/fx/Sink/Sink"
30
+ * import * as Effect from "effect/Effect"
31
+ *
32
+ * class One extends YieldableFx<number, never, never, number, never, never> {
33
+ * run<R>(sink: Sink<number, never, R>): Effect.Effect<unknown, never, R> {
34
+ * return sink.onSuccess(1)
35
+ * }
36
+ * toEffect() {
37
+ * return Effect.succeed(1)
38
+ * }
39
+ * }
40
+ * ```
41
+ *
42
+ * @since 1.0.0
43
+ * @category advanced
44
+ * @stability internal-but-published
45
+ */
46
+ export declare abstract class YieldableFx<A, E, R, B, E2, R2> extends EffectableWithOverride<B, E2, R2> implements Fx.Fx<A, E, R> {
47
+ /** Fx variance marker that makes subclasses valid `Fx<A, E, R>` values.
48
+ *
49
+ * @remarks
50
+ * ## Why
51
+ *
52
+ * The marker carries Fx's value, error, and service variance through subclass types.
53
+ *
54
+ * ## Ownership and lifetime
55
+ *
56
+ * Immutable protocol metadata shared through the instance; it acquires no resources.
57
+ *
58
+ * @since 1.0.0
59
+ * @category symbols
60
+ */
6
61
  readonly [FxTypeId]: {
7
62
  _A: <A_1>(a: A_1) => A_1;
8
63
  _E: <A_1>(a: A_1) => A_1;
9
64
  _R: <A_1>(a: A_1) => A_1;
10
65
  };
66
+ /** Subscribes a Sink to the pushed channel.
67
+ *
68
+ * @remarks
69
+ * ## Why
70
+ *
71
+ * Implementations determine cardinality, ordering, and subscription cleanup. The contract exposes
72
+ * no typed failure because failures are delivered to the Sink; required services combine `R` with
73
+ * the sink's `RSink`.
74
+ *
75
+ * ## Ownership and lifetime
76
+ *
77
+ * The implementation owns the subscription and must bind cleanup to the lifetime visible in its
78
+ * service requirements.
79
+ *
80
+ * @since 1.0.0
81
+ * @category effects
82
+ */
11
83
  abstract run<RSink>(sink: Sink<A, E, RSink>): Effect.Effect<unknown, never, R | RSink>;
84
+ /** Builds the Effect used when the value is sampled or yielded.
85
+ *
86
+ * @remarks
87
+ * ## Why
88
+ *
89
+ * The returned Effect object is memoized by `override`; its result is not automatically cached.
90
+ *
91
+ * ## Ownership and lifetime
92
+ *
93
+ * Implementations define acquisition and finalization; the base class retains the returned Effect.
94
+ *
95
+ * @since 1.0.0
96
+ * @category effects
97
+ */
12
98
  abstract toEffect(): Effect.Effect<B, E2, R2>;
99
+ /** Pipes this dual Fx/Effect value through Effect or Typed combinators.
100
+ *
101
+ * @remarks
102
+ * ## Why
103
+ *
104
+ * Delegates to Effect's `pipeArguments` and acquires no resources.
105
+ *
106
+ * ## Ownership and lifetime
107
+ *
108
+ * Returns the combinator result and retains no state beyond whatever that result captures.
109
+ *
110
+ * @since 1.0.0
111
+ * @category combinators
112
+ */
13
113
  pipe(): unknown;
14
114
  protected _effect: Effect.Effect<B, E2, R2> | null;
15
- asEffect(): Effect.Effect<B, E2, R2>;
115
+ /** Memoized Effect view used by Effect's evaluator protocol.
116
+ *
117
+ * @remarks
118
+ * ## Why
119
+ *
120
+ * The getter calls `toEffect` at most once per instance. It does not run the Effect and therefore
121
+ * does not memoize successes or failures.
122
+ *
123
+ * ## Ownership and lifetime
124
+ *
125
+ * The instance retains the Effect description for its lifetime; each execution owns its own work.
126
+ *
127
+ * @since 1.0.0
128
+ * @category effects
129
+ */
130
+ get override(): Effect.Effect<B, E2, R2>;
16
131
  }
17
132
  //# sourceMappingURL=yieldable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"yieldable.d.ts","sourceRoot":"","sources":["../../../src/Fx/internal/yieldable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAQxC,8BAAsB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAClD,SAAQ,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CACvC,YAAW,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEzB,QAAQ,CAAC,CAAC,QAAQ,CAAC;;;;MAAY;IAC/B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;IACtF,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IAE7C,IAAI;IAKJ,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAQ;IAC1D,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;CAGrC"}
1
+ {"version":3,"file":"yieldable.d.ts","sourceRoot":"","sources":["../../../src/Fx/internal/yieldable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAQrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,8BAAsB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAClD,SAAQ,sBAAsB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CACxC,YAAW,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEzB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,CAAC,QAAQ,CAAC;;;;MAAY;IAE/B;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;IAEvF;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAE9C;;;;;;;;;;;;;OAaG;IACH,IAAI,YAEH;IAGD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAQ;IAC1D;;;;;;;;;;;;;;OAcG;IACH,IAAI,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAEvC;CACF"}
@@ -1,20 +1,103 @@
1
- import * as Effect from "effect/Effect";
2
1
  import { identity } from "effect/Function";
3
2
  import { pipeArguments } from "effect/Pipeable";
4
3
  import { FxTypeId } from "../TypeId.js";
4
+ import { EffectableWithOverride } from "./effectableWithOverride.js";
5
5
  const VARIANCE = {
6
6
  _A: identity,
7
7
  _E: identity,
8
8
  _R: identity,
9
9
  };
10
- export class YieldableFx extends Effect.YieldableClass {
10
+ /** Base class for values that are both an Fx push source and an Effect-compatible sample.
11
+ *
12
+ * @remarks
13
+ * ## Why
14
+ *
15
+ * RefSubject and Versioned values need one object that composes through Fx operators when observed
16
+ * and through Effect operators when a current value is requested. This class supplies the shared
17
+ * brands, pipeability, and Effect evaluator bridge without forcing the two channels to have the
18
+ * same value, error, or service types.
19
+ *
20
+ * ## Ownership and lifetime
21
+ *
22
+ * The base class acquires no resources. `run` defines the push subscription lifetime and `toEffect`
23
+ * defines sampling. The first Effect evaluation memoizes the Effect object returned by `toEffect`,
24
+ * not its result: each execution still follows that Effect's own acquisition, error, interruption,
25
+ * and cleanup behavior.
26
+ *
27
+ * This is a published advanced extension point coupled to Typed's Fx brand and Effect evaluator
28
+ * protocol. Its shape may change between prereleases.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * import { YieldableFx } from "@typed/fx/Fx/internal/yieldable"
33
+ * import type { Sink } from "@typed/fx/Sink/Sink"
34
+ * import * as Effect from "effect/Effect"
35
+ *
36
+ * class One extends YieldableFx<number, never, never, number, never, never> {
37
+ * run<R>(sink: Sink<number, never, R>): Effect.Effect<unknown, never, R> {
38
+ * return sink.onSuccess(1)
39
+ * }
40
+ * toEffect() {
41
+ * return Effect.succeed(1)
42
+ * }
43
+ * }
44
+ * ```
45
+ *
46
+ * @since 1.0.0
47
+ * @category advanced
48
+ * @stability internal-but-published
49
+ */
50
+ export class YieldableFx extends EffectableWithOverride {
51
+ /** Fx variance marker that makes subclasses valid `Fx<A, E, R>` values.
52
+ *
53
+ * @remarks
54
+ * ## Why
55
+ *
56
+ * The marker carries Fx's value, error, and service variance through subclass types.
57
+ *
58
+ * ## Ownership and lifetime
59
+ *
60
+ * Immutable protocol metadata shared through the instance; it acquires no resources.
61
+ *
62
+ * @since 1.0.0
63
+ * @category symbols
64
+ */
11
65
  [FxTypeId] = VARIANCE;
66
+ /** Pipes this dual Fx/Effect value through Effect or Typed combinators.
67
+ *
68
+ * @remarks
69
+ * ## Why
70
+ *
71
+ * Delegates to Effect's `pipeArguments` and acquires no resources.
72
+ *
73
+ * ## Ownership and lifetime
74
+ *
75
+ * Returns the combinator result and retains no state beyond whatever that result captures.
76
+ *
77
+ * @since 1.0.0
78
+ * @category combinators
79
+ */
12
80
  pipe() {
13
81
  return pipeArguments(this, arguments);
14
82
  }
15
83
  // Memoize the effect
16
84
  _effect = null;
17
- asEffect() {
85
+ /** Memoized Effect view used by Effect's evaluator protocol.
86
+ *
87
+ * @remarks
88
+ * ## Why
89
+ *
90
+ * The getter calls `toEffect` at most once per instance. It does not run the Effect and therefore
91
+ * does not memoize successes or failures.
92
+ *
93
+ * ## Ownership and lifetime
94
+ *
95
+ * The instance retains the Effect description for its lifetime; each execution owns its own work.
96
+ *
97
+ * @since 1.0.0
98
+ * @category effects
99
+ */
100
+ get override() {
18
101
  return (this._effect ??= this.toEffect());
19
102
  }
20
103
  }