@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023-present The Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  ## API overview
12
12
 
13
- - **Fx** — Stream type `Fx.Fx<A, E, R>` with constructors (`succeed`, `fail`, `fromEffect`, `fromIterable`, `make`, `periodic`, etc.), combinators (`map`, `flatMap`, `filter`, `take`, `switchMap`, etc.), and run (`runPromise`, `collect`, `fork`, `observe`).
13
+ - **Fx** — Stream type `Fx.Fx<A, E, R>` with constructors (`succeed`, `fail`, `fromEffect`, `fromIterable`, `make`, `periodic`, etc.), combinators (`map`, `flatMap`, `filter`, `take`, `switchMap`, etc.), and run (`runPromise`, `collectAll`, `fork`, `observe`).
14
14
  - **Push** — Push-based stream abstraction.
15
15
  - **RefSubject** — Mutable reactive refs; `RefSubject.make(initial)`; typed helpers like `RefSubject.increment` / `RefSubject.decrement` for numbers; `RefArray`, `RefBoolean`, `RefOption`, etc.
16
16
  - **Subject** — Multicast subject for Fx streams.
@@ -20,17 +20,18 @@
20
20
  ## Example
21
21
 
22
22
  ```ts
23
+ import { Effect } from "effect";
23
24
  import { Fx } from "@typed/fx";
24
25
 
25
26
  Fx.fromIterable([1, 2, 3]).pipe(
26
27
  Fx.filter((n) => n % 2 === 0),
27
28
  Fx.map((n) => n * 2),
28
29
  Fx.observe((n) => Effect.log(`emitted: ${n}`)),
29
- Effect.runPromise
30
+ Effect.runPromise,
30
31
  );
31
32
  ```
32
33
 
33
- See the [counter example](https://github.com/typed-smol/typed-smol/tree/main/examples/counter) for a full runnable app.
34
+ See the [counter example](https://github.com/TylorS/typed/tree/development/examples/counter) for a full runnable app.
34
35
 
35
36
  ## API reference
36
37
 
@@ -69,7 +70,6 @@ Reactive stream type with concurrency, error handling, and context, integrated w
69
70
  - `never` — Run forever without emitting.
70
71
  - `fromEffect(effect)` — One-value Fx from an Effect (emit on success, fail on failure).
71
72
  - `fromIterable(iterable)` — Emit each element of the iterable then complete.
72
- - `fromYieldable(yieldable)` — Fx from any Yieldable (Effect, Promise, etc.).
73
73
  - `fromSchedule(schedule)` — Emit `void` each time the schedule fires.
74
74
  - `fromFailures(failures)` — Fx that fails with combined failures from an iterable.
75
75
  - `make(run)` — Low-level: build Fx from a function that runs a Sink.
@@ -82,56 +82,80 @@ Reactive stream type with concurrency, error handling, and context, integrated w
82
82
 
83
83
  - `map(f)` — Transform emitted values.
84
84
  - `mapEffect(f)` — Transform with an Effect.
85
+ - `mapError(f)` — Transform typed failures.
86
+ - `mapBoth({ onSuccess, onFailure })` — Transform both success values and typed failures.
85
87
  - `flatMap(f)` — Map to inner Fx and merge (concurrent; like mergeMap).
86
- - `flatMapEffect(f)` — FlatMap with an Effect returning Fx.
87
- - `flatMapConcurrently(f, concurrency?)` — FlatMap with a concurrency limit.
88
- - `flatMapConcurrentlyEffect(f, concurrency?)` — Same with Effect-based inner Fx.
88
+ - `flatMapEffect(f)` — Map to an Effect and merge its successful values.
89
+ - `flatMapConcurrently(f, concurrency)` — FlatMap with a positive safe-integer concurrency limit; invalid limits fail through the Fx error channel with `IllegalArgumentError`.
90
+ - `flatMapConcurrentlyEffect(f, concurrency)` — Map to Effects with the same validated concurrency contract.
89
91
  - `switchMap(f)` — Map to inner Fx and switch to latest (cancels previous).
90
- - `switchMapEffect(f)` — SwitchMap with Effect returning Fx.
92
+ - `switchMapEffect(f)` — Map to an Effect and switch to the latest execution.
91
93
  - `exhaustMap(f)` — Map to inner Fx, ignore new outer values while inner runs.
92
- - `exhaustMapEffect(f)` — ExhaustMap with Effect returning Fx.
94
+ - `exhaustMapEffect(f)` — Map to an Effect, ignoring new values while it runs.
93
95
  - `exhaustLatestMap(f)` — Like exhaustMap but cancel previous inner when new outer arrives.
94
- - `exhaustLatestMapEffect(f)` — ExhaustLatestMap with Effect returning Fx.
96
+ - `exhaustLatestMapEffect(f)` — Effect-based exhaustLatestMap.
95
97
  - `filter(f)` — Keep only values satisfying the predicate.
96
98
  - `filterEffect(f)` — Filter with an Effect predicate.
97
99
  - `filterMap(f)` — Filter and map to Option; compact.
98
100
  - `filterMapEffect(f)` — FilterMap with Effect.
99
101
  - `compact` — Filter out `None`, unwrap `Some`.
100
102
  - `take(n)` — Take first n elements.
101
- - `takeUntil(fx)` — Take until another Fx emits.
103
+ - `takeEffect(effect)` — Take first n elements, where n is computed by an Effect.
104
+ - `takeUntil(predicate)` — Take values until the predicate matches; the matching value is excluded.
105
+ - `takeUntilEffect(f)` — Take values until an effectful predicate matches; the matching value is excluded.
106
+ - `takeWhile(f)` — Take while predicate holds.
107
+ - `takeWhileEffect(f)` — Take while effectful predicate holds.
102
108
  - `skip(n)` — Skip first n elements.
109
+ - `skipEffect(effect)` — Skip first n elements, where n is computed by an Effect.
110
+ - `skipWhile(f)` / `dropWhile(f)` — Skip while predicate holds.
111
+ - `skipWhileEffect(f)` / `dropWhileEffect(f)` — Skip while effectful predicate holds.
103
112
  - `slice(options)` — Skip/take by bounds.
113
+ - `sliceEffect(effect)` — Skip/take by bounds produced by an Effect.
104
114
  - `skipRepeats` — Drop consecutive duplicates (Equal).
105
115
  - `skipRepeatsWith(equiv)` — Drop consecutive duplicates with custom equivalence.
116
+ - `changesWithEffect(f)` — Effectful consecutive deduplication predicate.
117
+ - `merge(fx)` — Merge with another Fx.
106
118
  - `mergeAll(fxs)` — Merge multiple Fx streams.
107
119
  - `mergeOrdered(fxs)` — Merge with ordering guarantees.
120
+ - `concat(fx)` — Concatenate with another Fx (run second after first completes).
121
+ - `zip(fx)` / `zipWith(fx, f)` — Zip streams in lockstep.
122
+ - `zipLatest(fx)` / `zipLatestWith(fx, f)` — Zip latest values after both emit once.
108
123
  - `catch(f)` — Recover from errors.
124
+ - `catchIf(refinement, f)` — Recover conditionally from typed failures.
125
+ - `catchCauseIf(predicate, f)` — Recover conditionally from failure causes.
126
+ - `catchTags(handlers)` — Recover from multiple tagged failures with handler map.
109
127
  - `onError(f)` — Run an effect on failure.
110
128
  - `onExit(f)` — Run an effect on exit (success/failure/interrupt).
111
129
  - `onInterrupt(f)` — Run an effect on interrupt.
112
130
  - `ensuring(effect)` — Run effect when Fx ends (success, failure, or interrupt).
113
- - `provide(services)` — Provide context to the Fx.
114
- - `when(condition, fx)` — Run Fx only when condition holds.
131
+ - `provide(layer)` — Provide services to the Fx from a Layer.
132
+ - `provideService(tag, service)` — Provide a single service to the Fx.
133
+ - `provideServiceEffect(tag, effect)` — Provide a service produced by an Effect.
134
+ - `if(condition, { onTrue, onFalse })` — Switch between two Fx streams based on a boolean Fx.
135
+ - `when(condition, { onTrue, onFalse })` — Map a boolean Fx to one of two values.
115
136
  - `unwrap` — Unwrap Fx of Fx (flatten one level).
116
137
  - `unwrapScoped` — Unwrap with Scope for inner Fx.
117
138
  - `gen(f)` — Build Fx from a generator (yield Effects, return Fx).
118
139
  - `genScoped(f)` — gen with Scope.
119
140
  - `loop(initial, f)` — Loop with state and Option for continue/exit.
120
141
  - `loopEffect(initial, f)` — Loop with Effect.
142
+ - `scan(initial, f)` — Emit running accumulation (includes initial value).
143
+ - `scanEffect(initial, f)` — Effectful running accumulation.
121
144
  - `loopCause(initial, f)` — Loop with Cause handling.
122
145
  - `loopCauseEffect(initial, f)` — Loop with Cause and Effect.
123
146
  - `filterMapLoop(initial, f)` — Loop yielding Option.
124
147
  - `filterMapLoopEffect(initial, f)` — filterMapLoop with Effect.
125
148
  - `filterMapLoopCause(initial, f)` — filterMapLoop with Cause.
126
149
  - `filterMapLoopCauseEffect(initial, f)` — filterMapLoop with Cause and Effect.
127
- - `keyed(keyFn, f)` — Keyed stream (e.g. by id) with inner Fx per key.
128
- - `tapEffect(f)` — Run effect for each value, pass value through.
150
+ - `keyed({ getKey, onValue, debounce? })` — Track array elements by key and run an inner Fx per key.
151
+ - `tap(f)` — Run a function or Effect for each value, then pass the value through.
129
152
  - `exit` — Turn Fx of Exit into Fx that fails/succeeds accordingly.
153
+ - `result` — Materialize successes/failures as `Result`.
130
154
  - `causes` — Expose failures as Cause emissions.
131
155
  - `continueWith(f)` — When Fx ends, continue with another Fx.
132
156
  - `flip` — Swap success and error types.
133
157
  - `tuple(...fxs)` — Combine Fx streams into tuple Fx.
134
- - `withSpan(name?, options?)` — Add tracing span around the Fx.
158
+ - `withSpan(name, options?)` — Add tracing spans around the Fx and sink callbacks.
135
159
 
136
160
  **Run**
137
161
 
@@ -188,6 +212,8 @@ Mutable reactive reference: observable state that can be read (as Effect), updat
188
212
  **Constructors**
189
213
 
190
214
  - `make(initial, options?)` — Create RefSubject from value, Effect, or Fx; options include `eq` (equivalence).
215
+ - `hydrate(schema, initial, options?)` — Create a callable `HydratedRefSubject` that is both reactive state and its DOM hydration ref. A named hydration requires a string-encoded schema.
216
+ - `hydrateAll(first, ...rest)` — Compose hydrated states into one DOM ref invocation.
191
217
  - `fromEffect(effect)` — RefSubject driven by an Effect (e.g. initial value from async source).
192
218
  - `fromFx(fx)` — RefSubject that follows an Fx stream.
193
219
  - `fromStream(stream)` — RefSubject from an Effect Stream.
@@ -206,6 +232,17 @@ Mutable reactive reference: observable state that can be read (as Effect), updat
206
232
  - `proxy(ref)` — Create a proxy RefSubject that forwards to the given ref.
207
233
  - `isRefSubject(value)` — Type guard for RefSubject.
208
234
 
235
+ **Hydration**
236
+
237
+ ```ts
238
+ const count = yield * RefSubject.hydrate(Schema.Number, 0);
239
+ const page = yield * RefSubject.hydrate(Schema.NumberFromString, 1, { name: "page" });
240
+
241
+ html`<section ref=${RefSubject.hydrateAll(count, page)}>${count}</section>`;
242
+ ```
243
+
244
+ The returned state is directly callable as the specialized DOM ref; there is no separate hydration property. Unnamed states share a versioned `data-typed-refsubject` tuple that is consumed and removed without installing an ongoing subscription. A named state uses its string codec directly in `data-<name>`, retains that attribute, and keeps it synchronized with exactly one scope-owned subscription. Closing the scope stops named synchronization.
245
+
209
246
  **Derived**
210
247
 
211
248
  - `map(ref, f)` — Computed that applies f to the value.
@@ -223,7 +260,7 @@ Mutable reactive reference: observable state that can be read (as Effect), updat
223
260
 
224
261
  **Typed refs** (each has `make` and domain-specific helpers)
225
262
 
226
- - `RefArray` — Array ref; e.g. prepend, append, remove.
263
+ - `RefArray` — Array ref; e.g. prepend, append, insertAt, replaceAt, drop, and filterValues.
227
264
  - `RefBoolean` — Boolean ref; e.g. toggle, setTrue, setFalse.
228
265
  - `RefOption` — Option ref.
229
266
  - `RefResult` — Result ref.
@@ -256,15 +293,15 @@ Multicast point: both an Fx and a Sink; multiple subscribers share one run of th
256
293
 
257
294
  **Constructors**
258
295
 
259
- - `Subject.make(replay?)` — Create a subject; optional replay buffer size.
260
- - `Subject.unsafeMake(replay?)` — Create without Scope (unsafe for cleanup).
296
+ - `Subject.make(replay?)` — Create a subject; optional replay buffer size must be an integer from 0 through 4,294,967,295, otherwise the Effect fails with `IllegalArgumentError`.
297
+ - `Subject.unsafeMake(replay?)` — Create without Scope (unsafe for cleanup); replay capacity has the same bounds and throws `IllegalArgumentError` when invalid.
261
298
 
262
299
  **Combinators**
263
300
 
264
301
  - `Subject.share(fx, subject)` — Multicast Fx through a subject (one run, many subscribers).
265
302
  - `Subject.multicast(fx)` — Share Fx with a fresh subject.
266
303
  - `Subject.hold(fx)` — Fx that holds last value for late subscribers.
267
- - `Subject.replay(fx, n)` — Replay last n values to new subscribers.
304
+ - `Subject.replay(fx, n)` — Replay the last `n` values to new subscribers. Invalid capacities fail through the Fx error channel with `IllegalArgumentError`; valid capacities retain storage under the caller's memory policy.
268
305
 
269
306
  **Service**
270
307
 
@@ -311,7 +348,7 @@ Consumer of values: two callbacks, one for success and one for failure.
311
348
  - `tapEffect(sink, f)` — Tap with Effect, pass value through.
312
349
  - `flip(sink)` — Swap success and error types.
313
350
  - `exit(sink)` — Sink for Exit (success/failure).
314
- - `dropAfter(sink, n)` — Drop values after the nth.
351
+ - `dropAfter(sink, predicate, run)` — Run with a derived sink that forwards through the first predicate match, then exits early.
315
352
  - `skipInterrupt(sink)` — Ignore interrupt at the Sink.
316
353
 
317
354
  **Service**
package/dist/Fx/Fx.d.ts CHANGED
@@ -2,7 +2,7 @@ import * as Effect from "effect/Effect";
2
2
  import type { Layer } from "effect/Layer";
3
3
  import { type Pipeable } from "effect/Pipeable";
4
4
  import type * as Scope from "effect/Scope";
5
- import * as ServiceMap from "effect/ServiceMap";
5
+ import * as Context from "effect/Context";
6
6
  import type * as Types from "effect/Types";
7
7
  import type * as Sink from "../Sink/Sink.js";
8
8
  import { FxTypeId } from "./TypeId.js";
@@ -19,78 +19,430 @@ import { FxTypeId } from "./TypeId.js";
19
19
  * 0, 1, or many values over time. It is similar to RxJS Observables or
20
20
  * AsyncIterables, but built on top of Effect's fiber-based concurrency model.
21
21
  *
22
+ * @remarks
23
+ * ## Why
24
+ *
25
+ * Browser events, clocks, sockets, and users decide when work exists. `Fx`
26
+ * models that producer-driven direction while retaining Effect's explicit
27
+ * success, error, and service channels. An `Effect`, `Stream`, `Promise`,
28
+ * `ReadableStream`, iterable, or custom source can participate through an
29
+ * explicit constructor; `Fx` extends the Effect ecosystem rather than
30
+ * replacing it.
31
+ *
32
+ * ## Ownership and lifetime
33
+ *
34
+ * Constructing an `Fx` starts no work. Calling `run` returns an `Effect` whose
35
+ * running fiber and `Scope` own subscriptions, child fibers, and finalizers.
36
+ * Interruption propagates through that Effect lifetime. The supplied `Sink`
37
+ * contributes its requirements to `run`; failures are delivered to the Sink,
38
+ * which is why the returned Effect itself cannot fail.
39
+ *
40
+ * ## Composition
41
+ *
42
+ * The type parameters follow Effect's `A`, `E`, `R` vocabulary. Consequently,
43
+ * an `Fx<RenderEvent, E, R>` can describe arbitrary UI without hiding its
44
+ * failures or required services.
45
+ *
46
+ * ## Effect foundations
47
+ *
48
+ * `Fx` execution is an [Effect](https://effect.website/docs/v4/api/effect/Effect),
49
+ * resource ownership uses [Scope](https://effect.website/docs/v4/api/effect/Scope),
50
+ * concurrent runs use [Fiber](https://effect.website/docs/v4/api/effect/Fiber), and
51
+ * failures retain Effect's structured [Cause](https://effect.website/docs/v4/api/effect/Cause).
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * import { Effect } from "effect"
56
+ * import { Fx } from "@typed/fx"
57
+ *
58
+ * const keys: Fx.Fx<KeyboardEvent> = Fx.callback((emit) => {
59
+ * const onKey = (event: KeyboardEvent) => emit.succeed(event)
60
+ * document.addEventListener("keydown", onKey)
61
+ * return Effect.sync(() => document.removeEventListener("keydown", onKey))
62
+ * })
63
+ * ```
64
+ *
22
65
  * @since 1.0.0
23
- * @category models
66
+ * @category Type contracts
24
67
  */
25
68
  export interface Fx<A, E = never, R = never> extends Pipeable {
69
+ /**
70
+ * Identifies this value as an `Fx` and records its success, error, and service variance.
71
+ *
72
+ * @remarks
73
+ * ## Why
74
+ *
75
+ * The marker makes `Fx` distinguishable at runtime without executing it, while its
76
+ * type carries the three channels through structural composition.
77
+ *
78
+ * ## Ownership and lifetime
79
+ *
80
+ * Reading the marker starts no work and acquires no resources.
81
+ *
82
+ * @since 1.0.0
83
+ * @category symbols
84
+ */
26
85
  readonly [FxTypeId]: Fx.Variance<A, E, R>;
27
86
  /**
28
- * Runs the Fx stream by providing a Sink to consume the values.
29
- * The result is an Effect that runs the stream process.
87
+ * Connects this producer to a `Sink` and returns the `Effect` that owns the connection.
88
+ *
89
+ * @remarks
90
+ * ## Why
91
+ *
92
+ * Keeping execution behind an `Effect` preserves typed services, structured
93
+ * concurrency, and interruption instead of starting hidden work during construction.
94
+ * Values are offered to the sink in the order chosen by this `Fx`; the producer may
95
+ * emit zero, one, or many values.
96
+ *
97
+ * ## Ownership and lifetime
98
+ *
99
+ * Work starts when the returned `Effect` runs. Its fiber owns the subscription and
100
+ * any child scopes. Interrupting it interrupts the producer and runs its finalizers.
101
+ * Producer failures are delivered to `sink.onFailure`, so they are not repeated in
102
+ * the returned Effect's error channel.
103
+ *
104
+ * @since 1.0.0
105
+ * @category runners
30
106
  */
31
107
  readonly run: <RSink>(sink: Sink.Sink<A, E, RSink>) => Effect.Effect<unknown, never, R | RSink>;
32
108
  }
33
109
  export declare namespace Fx {
34
110
  /**
35
- * Any Fx type with wildcards.
111
+ * Matches any `Fx` regardless of its value, error, or service channels.
112
+ *
113
+ * @remarks
114
+ * ## Why
115
+ *
116
+ * Generic helpers sometimes need to retain an entire unknown `Fx` type before
117
+ * extracting its channels with `Success`, `Error`, and `Services`.
118
+ *
119
+ * ## Ownership and lifetime
120
+ *
121
+ * This type alias performs no acquisition and starts no stream.
122
+ *
36
123
  * @since 1.0.0
37
124
  * @category models
38
125
  */
39
126
  type Any = Fx<any, any, any>;
40
127
  /**
41
- * Variance markers for Fx types.
128
+ * Describes how an `Fx` varies in its value, error, and service channels.
129
+ *
130
+ * @remarks
131
+ * ## Why
132
+ *
133
+ * The phantom fields preserve `Fx<A, E, R>` relationships through TypeScript's
134
+ * structural type system and power channel extraction without runtime sampling.
135
+ *
136
+ * ## Ownership and lifetime
137
+ *
138
+ * Variance markers are type-level metadata and retain no values or resources.
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * import type { Fx } from "@typed/fx/Fx"
143
+ *
144
+ * type NumberFxVariance = Fx.Variance<number, never, never>
145
+ * ```
146
+ *
42
147
  * @since 1.0.0
43
148
  * @category models
44
149
  */
45
150
  interface Variance<A, E, R> {
151
+ /**
152
+ * Covariant marker for emitted values.
153
+ *
154
+ * @remarks
155
+ * ## Why
156
+ *
157
+ * Preserves the `A` relationship without retaining an emitted value.
158
+ *
159
+ * ## Ownership and lifetime
160
+ *
161
+ * This phantom field starts no work and owns no resource.
162
+ *
163
+ * @since 1.0.0
164
+ * @category models
165
+ */
46
166
  readonly _A: Types.Covariant<A>;
167
+ /**
168
+ * Covariant marker for typed failures.
169
+ *
170
+ * @remarks
171
+ * ## Why
172
+ *
173
+ * Preserves the `E` relationship without manufacturing a failure.
174
+ *
175
+ * ## Ownership and lifetime
176
+ *
177
+ * This phantom field starts no work and owns no resource.
178
+ *
179
+ * @since 1.0.0
180
+ * @category models
181
+ */
47
182
  readonly _E: Types.Covariant<E>;
183
+ /**
184
+ * Covariant marker for required services.
185
+ *
186
+ * @remarks
187
+ * ## Why
188
+ *
189
+ * Preserves the `R` relationship without reading an Effect context.
190
+ *
191
+ * ## Ownership and lifetime
192
+ *
193
+ * This phantom field starts no work and owns no resource.
194
+ *
195
+ * @since 1.0.0
196
+ * @category models
197
+ */
48
198
  readonly _R: Types.Covariant<R>;
49
199
  }
50
200
  /**
51
- * Extract the success type from an Fx.
201
+ * Extracts the emitted value type from an `Fx`.
202
+ *
203
+ * @remarks
204
+ * ## Why
205
+ *
206
+ * Higher-order APIs can preserve a producer's value channel without restating all
207
+ * three `Fx` type parameters. `never` remains `never` rather than distributing.
208
+ *
209
+ * ## Ownership and lifetime
210
+ *
211
+ * This conditional type performs no runtime work.
52
212
  * @since 1.0.0
53
- * @category type-level
213
+ * @category Type contracts
54
214
  */
55
215
  type Success<T> = [T] extends [never] ? never : T extends Fx<infer _A, infer _E, infer _R> ? _A : never;
56
216
  /**
57
- * Extract the error type from an Fx.
217
+ * Extracts the typed error from an `Fx`.
218
+ *
219
+ * @remarks
220
+ * ## Why
221
+ *
222
+ * Higher-order APIs can combine an unknown producer's failure channel precisely.
223
+ * `never` remains `never` rather than distributing.
224
+ *
225
+ * ## Ownership and lifetime
226
+ *
227
+ * This conditional type performs no runtime work.
58
228
  * @since 1.0.0
59
- * @category type-level
229
+ * @category Type contracts
60
230
  */
61
231
  type Error<T> = [T] extends [never] ? never : T extends Fx<infer _A, infer _E, infer _R> ? _E : never;
62
232
  /**
63
- * Extract the required services from an Fx.
233
+ * Extracts the services required to run an `Fx`.
234
+ *
235
+ * @remarks
236
+ * ## Why
237
+ *
238
+ * Combinators and helpers can expose the complete environment of a producer without
239
+ * evaluating it. The tuple wrapper prevents unwanted conditional distribution.
240
+ *
241
+ * ## Ownership and lifetime
242
+ *
243
+ * This conditional type performs no runtime work.
64
244
  * @since 1.0.0
65
- * @category type-level
245
+ * @category Type contracts
66
246
  */
67
247
  type Services<T> = [T] extends [never] ? never : [T] extends [Fx<infer _A, infer _E, infer _R>] ? _R : never;
248
+ /**
249
+ * An `Fx` whose implementation is obtained from an Effect service.
250
+ *
251
+ * @remarks
252
+ * ## Why
253
+ *
254
+ * Long-lived producers can be selected and replaced through Effect's service graph
255
+ * while remaining directly usable as `Fx<A, E, Self>`.
256
+ *
257
+ * ## Ownership and lifetime
258
+ *
259
+ * The service declaration owns nothing. A layer made with `make` owns the supplied
260
+ * producer for that layer's scope; each run reads the installed service.
261
+ *
262
+ * @example
263
+ * ```ts
264
+ * import { Fx } from "@typed/fx"
265
+ * import type { Fx as FxModel } from "@typed/fx/Fx"
266
+ *
267
+ * class Ticks extends Fx.Service<Ticks, number>()("app/Ticks") {}
268
+ * const service: FxModel.Service<Ticks, "app/Ticks", number, never> = Ticks
269
+ * ```
270
+ *
271
+ * @since 1.0.0
272
+ * @category Providing services
273
+ */
68
274
  interface Service<Self, Id extends string, A, E> extends Fx<A, E, Self> {
275
+ /**
276
+ * Stable diagnostic identifier used to create the Effect service.
277
+ *
278
+ * @remarks
279
+ * ## Why
280
+ *
281
+ * Keeps the service identity visible to diagnostics and tooling.
282
+ *
283
+ * ## Ownership and lifetime
284
+ *
285
+ * Reading the identifier starts no work and owns no resource.
286
+ *
287
+ * @since 1.0.0
288
+ * @category models
289
+ */
69
290
  readonly id: Id;
70
- readonly service: ServiceMap.Service<Self, Fx<A, E>>;
291
+ /**
292
+ * Effect service tag containing the installed producer.
293
+ *
294
+ * @remarks
295
+ * ## Why
296
+ *
297
+ * Exposes the underlying Effect service for direct context and layer composition.
298
+ *
299
+ * ## Ownership and lifetime
300
+ *
301
+ * The tag is inert; the layer that installs its value owns the producer lifetime.
302
+ *
303
+ * @since 1.0.0
304
+ * @category models
305
+ */
306
+ readonly service: Context.Service<Self, Fx<A, E>>;
307
+ /**
308
+ * Builds a layer from an `Fx`, or from an `Effect` that acquires one.
309
+ *
310
+ * @remarks
311
+ * ## Why
312
+ *
313
+ * Connects producer acquisition directly to Effect's service graph.
314
+ *
315
+ * ## Ownership and lifetime
316
+ *
317
+ * Scope is removed from the layer requirements because layer acquisition supplies
318
+ * it. Other services and typed failures remain visible.
319
+ *
320
+ * @since 1.0.0
321
+ * @category layers
322
+ */
71
323
  readonly make: <R = never>(fx: Fx<A, E, R> | Effect.Effect<Fx<A, E, R>, E, R>) => Layer<Self, E, Exclude<R, Scope.Scope>>;
72
324
  }
325
+ /**
326
+ * The constructible service class returned by `Fx.Service`.
327
+ *
328
+ * @remarks
329
+ * ## Why
330
+ *
331
+ * A single value can act as the service tag, the service-backed `Fx`, and the owner
332
+ * of its [Layer](https://effect.website/docs/v4/api/effect/Layer) constructor,
333
+ * matching Effect's class-based service ergonomics.
334
+ *
335
+ * ## Ownership and lifetime
336
+ *
337
+ * Constructing the class returns the class value and starts no producer. Installed
338
+ * layer scopes own actual implementations.
339
+ *
340
+ * @example
341
+ * ```ts
342
+ * import { Fx } from "@typed/fx"
343
+ * import type { Fx as FxModel } from "@typed/fx/Fx"
344
+ *
345
+ * class Ticks extends Fx.Service<Ticks, number>()("app/Ticks") {}
346
+ * const definition: FxModel.Class<Ticks, "app/Ticks", number, never> = Ticks
347
+ * ```
348
+ *
349
+ * @since 1.0.0
350
+ * @category models
351
+ */
73
352
  interface Class<Self, Id extends string, A, E> extends Service<Self, Id, A, E> {
353
+ /**
354
+ * Returns the service class as its service-backed `Fx` value.
355
+ *
356
+ * @remarks
357
+ * ## Why
358
+ *
359
+ * Supports Effect's class-as-tag ergonomics without allocating wrapper instances.
360
+ *
361
+ * ## Ownership and lifetime
362
+ *
363
+ * Construction starts no producer. The installed layer owns the implementation.
364
+ *
365
+ * @since 1.0.0
366
+ * @category constructors
367
+ */
74
368
  new (): Service<Self, Id, A, E>;
75
369
  }
76
370
  }
77
371
  /**
78
- * Extract the success type from an Fx.
372
+ * Alias of `Fx.Success` for extracting an `Fx` value channel.
373
+ *
374
+ * @remarks
375
+ * ## Why
376
+ *
377
+ * The top-level alias supports type-only imports without requiring namespace syntax.
378
+ *
379
+ * ## Ownership and lifetime
380
+ *
381
+ * This type alias performs no runtime work.
79
382
  * @since 1.0.0
80
- * @category type-level
383
+ * @category Type contracts
81
384
  */
82
385
  export type Success<T> = Fx.Success<T>;
83
386
  /**
84
- * Extract the error type from an Fx.
387
+ * Alias of `Fx.Error` for extracting an `Fx` error channel.
388
+ *
389
+ * @remarks
390
+ * ## Why
391
+ *
392
+ * The top-level alias supports type-only imports without requiring namespace syntax.
393
+ *
394
+ * ## Ownership and lifetime
395
+ *
396
+ * This type alias performs no runtime work.
85
397
  * @since 1.0.0
86
- * @category type-level
398
+ * @category Type contracts
87
399
  */
88
400
  export type Error<T> = Fx.Error<T>;
89
401
  /**
90
- * Extract the required services from an Fx.
402
+ * Alias of `Fx.Services` for extracting an `Fx` service channel.
403
+ *
404
+ * @remarks
405
+ * ## Why
406
+ *
407
+ * The top-level alias supports type-only imports without requiring namespace syntax.
408
+ *
409
+ * ## Ownership and lifetime
410
+ *
411
+ * This type alias performs no runtime work.
91
412
  * @since 1.0.0
92
- * @category type-level
413
+ * @category Type contracts
93
414
  */
94
415
  export type Services<T> = Fx.Services<T>;
416
+ /**
417
+ * Defines an Effect service whose value is also a directly runnable `Fx`.
418
+ *
419
+ * @remarks
420
+ * ## Why
421
+ *
422
+ * Applications often need a producer selected by the Effect environment: a clock,
423
+ * event source, transport, or domain feed. `Service` keeps that dependency in `R`
424
+ * and provides the corresponding layer constructor without a parallel wrapper API.
425
+ *
426
+ * ## Ownership and lifetime
427
+ *
428
+ * Defining the class starts no work. `Class.make` acquires the producer when its layer
429
+ * is built, supplies the acquisition context to it, and binds its lifetime to the
430
+ * layer scope. Running the class reads the currently installed implementation.
431
+ *
432
+ * @example
433
+ * ```ts
434
+ * import { Effect, Layer } from "effect"
435
+ * import { Fx } from "@typed/fx"
436
+ *
437
+ * class Ticks extends Fx.Service<Ticks, number>()("app/Ticks") {}
438
+ *
439
+ * const TicksLive = Ticks.make(Fx.succeed(1))
440
+ * const values = Fx.collectAll(Ticks).pipe(Effect.provide(TicksLive))
441
+ * const program = Effect.map(values, (items) => items[0])
442
+ * ```
443
+ *
444
+ * @since 1.0.0
445
+ * @category Providing services
446
+ */
95
447
  export declare function Service<Self, A, E = never>(): <const Id extends string>(id: Id) => Fx.Class<Self, Id, A, E>;
96
448
  //# sourceMappingURL=Fx.d.ts.map