@typed/fx 2.0.0-beta.4 → 2.0.0-beta.6

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 (663) hide show
  1. package/README.md +34 -20
  2. package/dist/Fx/Fx.d.ts +362 -10
  3. package/dist/Fx/Fx.d.ts.map +1 -1
  4. package/dist/Fx/Fx.js +32 -1
  5. package/dist/Fx/TypeId.d.ts +49 -3
  6. package/dist/Fx/TypeId.d.ts.map +1 -1
  7. package/dist/Fx/TypeId.js +39 -2
  8. package/dist/Fx/combinators/additive.d.ts +156 -5
  9. package/dist/Fx/combinators/additive.d.ts.map +1 -1
  10. package/dist/Fx/combinators/additive.js +156 -5
  11. package/dist/Fx/combinators/catch.d.ts +195 -22
  12. package/dist/Fx/combinators/catch.d.ts.map +1 -1
  13. package/dist/Fx/combinators/catch.js +186 -16
  14. package/dist/Fx/combinators/causes.d.ts +24 -1
  15. package/dist/Fx/combinators/causes.d.ts.map +1 -1
  16. package/dist/Fx/combinators/causes.js +24 -1
  17. package/dist/Fx/combinators/changesWithEffect.d.ts +20 -0
  18. package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -1
  19. package/dist/Fx/combinators/changesWithEffect.js +20 -0
  20. package/dist/Fx/combinators/compact.d.ts +17 -0
  21. package/dist/Fx/combinators/compact.d.ts.map +1 -1
  22. package/dist/Fx/combinators/compact.js +17 -0
  23. package/dist/Fx/combinators/concatMap.d.ts +86 -0
  24. package/dist/Fx/combinators/concatMap.d.ts.map +1 -0
  25. package/dist/Fx/combinators/concatMap.js +86 -0
  26. package/dist/Fx/combinators/continueWith.d.ts +109 -1
  27. package/dist/Fx/combinators/continueWith.d.ts.map +1 -1
  28. package/dist/Fx/combinators/continueWith.js +109 -1
  29. package/dist/Fx/combinators/debounce.d.ts +34 -0
  30. package/dist/Fx/combinators/debounce.d.ts.map +1 -0
  31. package/dist/Fx/combinators/debounce.js +35 -0
  32. package/dist/Fx/combinators/delay.d.ts +34 -0
  33. package/dist/Fx/combinators/delay.d.ts.map +1 -0
  34. package/dist/Fx/combinators/delay.js +31 -0
  35. package/dist/Fx/combinators/dropUntil.d.ts +42 -0
  36. package/dist/Fx/combinators/dropUntil.d.ts.map +1 -1
  37. package/dist/Fx/combinators/dropUntil.js +42 -0
  38. package/dist/Fx/combinators/during.d.ts +38 -0
  39. package/dist/Fx/combinators/during.d.ts.map +1 -0
  40. package/dist/Fx/combinators/during.js +85 -0
  41. package/dist/Fx/combinators/ensuring.d.ts +33 -3
  42. package/dist/Fx/combinators/ensuring.d.ts.map +1 -1
  43. package/dist/Fx/combinators/ensuring.js +33 -3
  44. package/dist/Fx/combinators/exhaustLatestMap.d.ts +40 -4
  45. package/dist/Fx/combinators/exhaustLatestMap.d.ts.map +1 -1
  46. package/dist/Fx/combinators/exhaustLatestMap.js +40 -4
  47. package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts +39 -3
  48. package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts.map +1 -1
  49. package/dist/Fx/combinators/exhaustLatestMapEffect.js +39 -3
  50. package/dist/Fx/combinators/exhaustMap.d.ts +37 -0
  51. package/dist/Fx/combinators/exhaustMap.d.ts.map +1 -1
  52. package/dist/Fx/combinators/exhaustMap.js +37 -0
  53. package/dist/Fx/combinators/exhaustMapEffect.d.ts +32 -0
  54. package/dist/Fx/combinators/exhaustMapEffect.d.ts.map +1 -1
  55. package/dist/Fx/combinators/exhaustMapEffect.js +32 -0
  56. package/dist/Fx/combinators/exit.d.ts +22 -1
  57. package/dist/Fx/combinators/exit.d.ts.map +1 -1
  58. package/dist/Fx/combinators/exit.js +22 -1
  59. package/dist/Fx/combinators/filter.d.ts +16 -0
  60. package/dist/Fx/combinators/filter.d.ts.map +1 -1
  61. package/dist/Fx/combinators/filter.js +16 -0
  62. package/dist/Fx/combinators/filterEffect.d.ts +21 -0
  63. package/dist/Fx/combinators/filterEffect.d.ts.map +1 -1
  64. package/dist/Fx/combinators/filterEffect.js +21 -0
  65. package/dist/Fx/combinators/filterMap.d.ts +19 -0
  66. package/dist/Fx/combinators/filterMap.d.ts.map +1 -1
  67. package/dist/Fx/combinators/filterMap.js +19 -0
  68. package/dist/Fx/combinators/filterMapEffect.d.ts +20 -0
  69. package/dist/Fx/combinators/filterMapEffect.d.ts.map +1 -1
  70. package/dist/Fx/combinators/filterMapEffect.js +20 -0
  71. package/dist/Fx/combinators/filterMapLoop.d.ts +19 -0
  72. package/dist/Fx/combinators/filterMapLoop.d.ts.map +1 -1
  73. package/dist/Fx/combinators/filterMapLoop.js +19 -0
  74. package/dist/Fx/combinators/filterMapLoopCause.d.ts +20 -0
  75. package/dist/Fx/combinators/filterMapLoopCause.d.ts.map +1 -1
  76. package/dist/Fx/combinators/filterMapLoopCause.js +20 -0
  77. package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts +20 -0
  78. package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts.map +1 -1
  79. package/dist/Fx/combinators/filterMapLoopCauseEffect.js +20 -0
  80. package/dist/Fx/combinators/filterMapLoopEffect.d.ts +20 -0
  81. package/dist/Fx/combinators/filterMapLoopEffect.d.ts.map +1 -1
  82. package/dist/Fx/combinators/filterMapLoopEffect.js +20 -0
  83. package/dist/Fx/combinators/flatMap.d.ts +48 -3
  84. package/dist/Fx/combinators/flatMap.d.ts.map +1 -1
  85. package/dist/Fx/combinators/flatMap.js +35 -2
  86. package/dist/Fx/combinators/flatMapConcurrently.d.ts +50 -3
  87. package/dist/Fx/combinators/flatMapConcurrently.d.ts.map +1 -1
  88. package/dist/Fx/combinators/flatMapConcurrently.js +47 -1
  89. package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts +47 -3
  90. package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts.map +1 -1
  91. package/dist/Fx/combinators/flatMapConcurrentlyEffect.js +39 -1
  92. package/dist/Fx/combinators/flatMapEffect.d.ts +44 -2
  93. package/dist/Fx/combinators/flatMapEffect.d.ts.map +1 -1
  94. package/dist/Fx/combinators/flatMapEffect.js +31 -1
  95. package/dist/Fx/combinators/flip.d.ts +33 -1
  96. package/dist/Fx/combinators/flip.d.ts.map +1 -1
  97. package/dist/Fx/combinators/flip.js +33 -1
  98. package/dist/Fx/combinators/gen.d.ts +28 -9
  99. package/dist/Fx/combinators/gen.d.ts.map +1 -1
  100. package/dist/Fx/combinators/gen.js +27 -3
  101. package/dist/Fx/combinators/genScoped.d.ts +32 -9
  102. package/dist/Fx/combinators/genScoped.d.ts.map +1 -1
  103. package/dist/Fx/combinators/genScoped.js +30 -2
  104. package/dist/Fx/combinators/grouped.d.ts +89 -0
  105. package/dist/Fx/combinators/grouped.d.ts.map +1 -0
  106. package/dist/Fx/combinators/grouped.js +146 -0
  107. package/dist/Fx/combinators/index.d.ts +35 -0
  108. package/dist/Fx/combinators/index.d.ts.map +1 -1
  109. package/dist/Fx/combinators/index.js +35 -0
  110. package/dist/Fx/combinators/keyed.d.ts +121 -7
  111. package/dist/Fx/combinators/keyed.d.ts.map +1 -1
  112. package/dist/Fx/combinators/keyed.js +64 -6
  113. package/dist/Fx/combinators/loop.d.ts +16 -0
  114. package/dist/Fx/combinators/loop.d.ts.map +1 -1
  115. package/dist/Fx/combinators/loop.js +16 -0
  116. package/dist/Fx/combinators/loopCause.d.ts +17 -0
  117. package/dist/Fx/combinators/loopCause.d.ts.map +1 -1
  118. package/dist/Fx/combinators/loopCause.js +17 -0
  119. package/dist/Fx/combinators/loopCauseEffect.d.ts +18 -0
  120. package/dist/Fx/combinators/loopCauseEffect.d.ts.map +1 -1
  121. package/dist/Fx/combinators/loopCauseEffect.js +18 -0
  122. package/dist/Fx/combinators/loopEffect.d.ts +23 -0
  123. package/dist/Fx/combinators/loopEffect.d.ts.map +1 -1
  124. package/dist/Fx/combinators/loopEffect.js +23 -0
  125. package/dist/Fx/combinators/map.d.ts +45 -0
  126. package/dist/Fx/combinators/map.d.ts.map +1 -1
  127. package/dist/Fx/combinators/map.js +42 -0
  128. package/dist/Fx/combinators/mapBoth.d.ts +19 -0
  129. package/dist/Fx/combinators/mapBoth.d.ts.map +1 -1
  130. package/dist/Fx/combinators/mapBoth.js +19 -0
  131. package/dist/Fx/combinators/mapEffect.d.ts +24 -0
  132. package/dist/Fx/combinators/mapEffect.d.ts.map +1 -1
  133. package/dist/Fx/combinators/mapEffect.js +24 -0
  134. package/dist/Fx/combinators/mapError.d.ts +20 -4
  135. package/dist/Fx/combinators/mapError.d.ts.map +1 -1
  136. package/dist/Fx/combinators/mapError.js +20 -4
  137. package/dist/Fx/combinators/mergeAll.d.ts +34 -0
  138. package/dist/Fx/combinators/mergeAll.d.ts.map +1 -1
  139. package/dist/Fx/combinators/mergeAll.js +34 -0
  140. package/dist/Fx/combinators/mergeOrdered.d.ts +35 -3
  141. package/dist/Fx/combinators/mergeOrdered.d.ts.map +1 -1
  142. package/dist/Fx/combinators/mergeOrdered.js +35 -3
  143. package/dist/Fx/combinators/onError.d.ts +33 -3
  144. package/dist/Fx/combinators/onError.d.ts.map +1 -1
  145. package/dist/Fx/combinators/onError.js +33 -3
  146. package/dist/Fx/combinators/onExit.d.ts +28 -2
  147. package/dist/Fx/combinators/onExit.d.ts.map +1 -1
  148. package/dist/Fx/combinators/onExit.js +28 -2
  149. package/dist/Fx/combinators/onInterrupt.d.ts +48 -3
  150. package/dist/Fx/combinators/onInterrupt.d.ts.map +1 -1
  151. package/dist/Fx/combinators/onInterrupt.js +48 -3
  152. package/dist/Fx/combinators/pairwise.d.ts +28 -0
  153. package/dist/Fx/combinators/pairwise.d.ts.map +1 -0
  154. package/dist/Fx/combinators/pairwise.js +31 -0
  155. package/dist/Fx/combinators/provide.d.ts +130 -9
  156. package/dist/Fx/combinators/provide.d.ts.map +1 -1
  157. package/dist/Fx/combinators/provide.js +130 -9
  158. package/dist/Fx/combinators/race.d.ts +92 -0
  159. package/dist/Fx/combinators/race.d.ts.map +1 -0
  160. package/dist/Fx/combinators/race.js +149 -0
  161. package/dist/Fx/combinators/repeat.d.ts +41 -0
  162. package/dist/Fx/combinators/repeat.d.ts.map +1 -0
  163. package/dist/Fx/combinators/repeat.js +57 -0
  164. package/dist/Fx/combinators/result.d.ts +22 -0
  165. package/dist/Fx/combinators/result.d.ts.map +1 -1
  166. package/dist/Fx/combinators/result.js +26 -12
  167. package/dist/Fx/combinators/retry.d.ts +53 -0
  168. package/dist/Fx/combinators/retry.d.ts.map +1 -0
  169. package/dist/Fx/combinators/retry.js +71 -0
  170. package/dist/Fx/combinators/sample.d.ts +31 -0
  171. package/dist/Fx/combinators/sample.d.ts.map +1 -0
  172. package/dist/Fx/combinators/sample.js +42 -0
  173. package/dist/Fx/combinators/scan.d.ts +39 -0
  174. package/dist/Fx/combinators/scan.d.ts.map +1 -1
  175. package/dist/Fx/combinators/scan.js +39 -0
  176. package/dist/Fx/combinators/since.d.ts +30 -0
  177. package/dist/Fx/combinators/since.d.ts.map +1 -0
  178. package/dist/Fx/combinators/since.js +39 -0
  179. package/dist/Fx/combinators/skip.d.ts +31 -0
  180. package/dist/Fx/combinators/skip.d.ts.map +1 -1
  181. package/dist/Fx/combinators/skip.js +31 -0
  182. package/dist/Fx/combinators/skipRepeats.d.ts +16 -0
  183. package/dist/Fx/combinators/skipRepeats.d.ts.map +1 -1
  184. package/dist/Fx/combinators/skipRepeats.js +16 -0
  185. package/dist/Fx/combinators/skipRepeatsWith.d.ts +17 -0
  186. package/dist/Fx/combinators/skipRepeatsWith.d.ts.map +1 -1
  187. package/dist/Fx/combinators/skipRepeatsWith.js +17 -0
  188. package/dist/Fx/combinators/skipWhile.d.ts +68 -0
  189. package/dist/Fx/combinators/skipWhile.d.ts.map +1 -1
  190. package/dist/Fx/combinators/skipWhile.js +68 -0
  191. package/dist/Fx/combinators/slice.d.ts +82 -0
  192. package/dist/Fx/combinators/slice.d.ts.map +1 -1
  193. package/dist/Fx/combinators/slice.js +33 -0
  194. package/dist/Fx/combinators/switchMap.d.ts +38 -0
  195. package/dist/Fx/combinators/switchMap.d.ts.map +1 -1
  196. package/dist/Fx/combinators/switchMap.js +38 -0
  197. package/dist/Fx/combinators/switchMapEffect.d.ts +37 -0
  198. package/dist/Fx/combinators/switchMapEffect.d.ts.map +1 -1
  199. package/dist/Fx/combinators/switchMapEffect.js +37 -0
  200. package/dist/Fx/combinators/take.d.ts +32 -0
  201. package/dist/Fx/combinators/take.d.ts.map +1 -1
  202. package/dist/Fx/combinators/take.js +32 -0
  203. package/dist/Fx/combinators/takeUntil.d.ts +46 -0
  204. package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
  205. package/dist/Fx/combinators/takeUntil.js +46 -0
  206. package/dist/Fx/combinators/takeWhile.d.ts +31 -0
  207. package/dist/Fx/combinators/takeWhile.d.ts.map +1 -1
  208. package/dist/Fx/combinators/takeWhile.js +31 -0
  209. package/dist/Fx/combinators/tapEffect.d.ts +16 -0
  210. package/dist/Fx/combinators/tapEffect.d.ts.map +1 -1
  211. package/dist/Fx/combinators/tapEffect.js +16 -0
  212. package/dist/Fx/combinators/throttle.d.ts +79 -0
  213. package/dist/Fx/combinators/throttle.d.ts.map +1 -0
  214. package/dist/Fx/combinators/throttle.js +99 -0
  215. package/dist/Fx/combinators/timeout.d.ts +76 -0
  216. package/dist/Fx/combinators/timeout.d.ts.map +1 -0
  217. package/dist/Fx/combinators/timeout.js +110 -0
  218. package/dist/Fx/combinators/tuple.d.ts +30 -0
  219. package/dist/Fx/combinators/tuple.d.ts.map +1 -1
  220. package/dist/Fx/combinators/tuple.js +34 -3
  221. package/dist/Fx/combinators/until.d.ts +27 -0
  222. package/dist/Fx/combinators/until.d.ts.map +1 -0
  223. package/dist/Fx/combinators/until.js +56 -0
  224. package/dist/Fx/combinators/unwrap.d.ts +29 -0
  225. package/dist/Fx/combinators/unwrap.d.ts.map +1 -1
  226. package/dist/Fx/combinators/unwrap.js +29 -0
  227. package/dist/Fx/combinators/unwrapScoped.d.ts +33 -0
  228. package/dist/Fx/combinators/unwrapScoped.d.ts.map +1 -1
  229. package/dist/Fx/combinators/unwrapScoped.js +33 -0
  230. package/dist/Fx/combinators/when.d.ts +35 -0
  231. package/dist/Fx/combinators/when.d.ts.map +1 -1
  232. package/dist/Fx/combinators/when.js +36 -1
  233. package/dist/Fx/combinators/withLatestFrom.d.ts +58 -0
  234. package/dist/Fx/combinators/withLatestFrom.d.ts.map +1 -0
  235. package/dist/Fx/combinators/withLatestFrom.js +68 -0
  236. package/dist/Fx/combinators/withSpan.d.ts +35 -1
  237. package/dist/Fx/combinators/withSpan.d.ts.map +1 -1
  238. package/dist/Fx/combinators/withSpan.js +34 -3
  239. package/dist/Fx/combinators/zip.d.ts +60 -0
  240. package/dist/Fx/combinators/zip.d.ts.map +1 -1
  241. package/dist/Fx/combinators/zip.js +60 -0
  242. package/dist/Fx/constructors/at.d.ts +20 -0
  243. package/dist/Fx/constructors/at.d.ts.map +1 -1
  244. package/dist/Fx/constructors/at.js +20 -0
  245. package/dist/Fx/constructors/die.d.ts +21 -0
  246. package/dist/Fx/constructors/die.d.ts.map +1 -1
  247. package/dist/Fx/constructors/die.js +21 -0
  248. package/dist/Fx/constructors/empty.d.ts +18 -0
  249. package/dist/Fx/constructors/empty.d.ts.map +1 -1
  250. package/dist/Fx/constructors/empty.js +18 -0
  251. package/dist/Fx/constructors/fail.d.ts +21 -0
  252. package/dist/Fx/constructors/fail.d.ts.map +1 -1
  253. package/dist/Fx/constructors/fail.js +21 -0
  254. package/dist/Fx/constructors/failCause.d.ts +22 -0
  255. package/dist/Fx/constructors/failCause.d.ts.map +1 -1
  256. package/dist/Fx/constructors/failCause.js +22 -0
  257. package/dist/Fx/constructors/fn.d.ts +113 -13
  258. package/dist/Fx/constructors/fn.d.ts.map +1 -1
  259. package/dist/Fx/constructors/fn.js +36 -0
  260. package/dist/Fx/constructors/fromEffect.d.ts +43 -1
  261. package/dist/Fx/constructors/fromEffect.d.ts.map +1 -1
  262. package/dist/Fx/constructors/fromEffect.js +43 -1
  263. package/dist/Fx/constructors/fromFailures.d.ts +24 -0
  264. package/dist/Fx/constructors/fromFailures.d.ts.map +1 -1
  265. package/dist/Fx/constructors/fromFailures.js +24 -0
  266. package/dist/Fx/constructors/fromIterable.d.ts +22 -0
  267. package/dist/Fx/constructors/fromIterable.d.ts.map +1 -1
  268. package/dist/Fx/constructors/fromIterable.js +22 -0
  269. package/dist/Fx/constructors/fromSchedule.d.ts +23 -0
  270. package/dist/Fx/constructors/fromSchedule.d.ts.map +1 -1
  271. package/dist/Fx/constructors/fromSchedule.js +25 -2
  272. package/dist/Fx/constructors/index.d.ts +2 -1
  273. package/dist/Fx/constructors/index.d.ts.map +1 -1
  274. package/dist/Fx/constructors/index.js +2 -1
  275. package/dist/Fx/constructors/interrupt.d.ts +21 -1
  276. package/dist/Fx/constructors/interrupt.d.ts.map +1 -1
  277. package/dist/Fx/constructors/interrupt.js +21 -1
  278. package/dist/Fx/constructors/make.d.ts +146 -1
  279. package/dist/Fx/constructors/make.d.ts.map +1 -1
  280. package/dist/Fx/constructors/make.js +54 -3
  281. package/dist/Fx/constructors/periodic.d.ts +29 -0
  282. package/dist/Fx/constructors/periodic.d.ts.map +1 -1
  283. package/dist/Fx/constructors/periodic.js +29 -0
  284. package/dist/Fx/constructors/succeed.d.ts +75 -3
  285. package/dist/Fx/constructors/succeed.d.ts.map +1 -1
  286. package/dist/Fx/constructors/succeed.js +75 -3
  287. package/dist/Fx/constructors/suspend.d.ts +28 -0
  288. package/dist/Fx/constructors/suspend.d.ts.map +1 -1
  289. package/dist/Fx/constructors/suspend.js +28 -0
  290. package/dist/Fx/constructors/sync.d.ts +32 -0
  291. package/dist/Fx/constructors/sync.d.ts.map +1 -0
  292. package/dist/Fx/constructors/sync.js +32 -0
  293. package/dist/Fx/internal/DeferredRef.d.ts +259 -7
  294. package/dist/Fx/internal/DeferredRef.d.ts.map +1 -1
  295. package/dist/Fx/internal/DeferredRef.js +260 -9
  296. package/dist/Fx/internal/UnionToTuple.d.ts +22 -0
  297. package/dist/Fx/internal/UnionToTuple.d.ts.map +1 -1
  298. package/dist/Fx/internal/diff.d.ts +586 -0
  299. package/dist/Fx/internal/diff.d.ts.map +1 -1
  300. package/dist/Fx/internal/diff.js +120 -9
  301. package/dist/Fx/internal/effectableEvaluateKey.d.ts +30 -0
  302. package/dist/Fx/internal/effectableEvaluateKey.d.ts.map +1 -0
  303. package/dist/Fx/internal/effectableEvaluateKey.js +29 -0
  304. package/dist/Fx/internal/effectableWithOverride.d.ts +55 -0
  305. package/dist/Fx/internal/effectableWithOverride.d.ts.map +1 -0
  306. package/dist/Fx/internal/effectableWithOverride.js +46 -0
  307. package/dist/Fx/internal/equivalence.d.ts +29 -0
  308. package/dist/Fx/internal/equivalence.d.ts.map +1 -1
  309. package/dist/Fx/internal/equivalence.js +29 -0
  310. package/dist/Fx/internal/multicast.d.ts +145 -2
  311. package/dist/Fx/internal/multicast.d.ts.map +1 -1
  312. package/dist/Fx/internal/multicast.js +146 -4
  313. package/dist/Fx/internal/ring-buffer.d.ts +149 -0
  314. package/dist/Fx/internal/ring-buffer.d.ts.map +1 -1
  315. package/dist/Fx/internal/ring-buffer.js +155 -0
  316. package/dist/Fx/internal/scope.d.ts +184 -0
  317. package/dist/Fx/internal/scope.d.ts.map +1 -1
  318. package/dist/Fx/internal/scope.js +150 -0
  319. package/dist/Fx/internal/yieldable.d.ts +117 -2
  320. package/dist/Fx/internal/yieldable.d.ts.map +1 -1
  321. package/dist/Fx/internal/yieldable.js +86 -3
  322. package/dist/Fx/run/collect.d.ts +89 -0
  323. package/dist/Fx/run/collect.d.ts.map +1 -1
  324. package/dist/Fx/run/collect.js +90 -1
  325. package/dist/Fx/run/first.d.ts +22 -0
  326. package/dist/Fx/run/first.d.ts.map +1 -1
  327. package/dist/Fx/run/first.js +22 -0
  328. package/dist/Fx/run/fork.d.ts +50 -0
  329. package/dist/Fx/run/fork.d.ts.map +1 -1
  330. package/dist/Fx/run/fork.js +50 -0
  331. package/dist/Fx/run/observe.d.ts +106 -0
  332. package/dist/Fx/run/observe.d.ts.map +1 -1
  333. package/dist/Fx/run/observe.js +106 -0
  334. package/dist/Fx/run/runPromise.d.ts +43 -0
  335. package/dist/Fx/run/runPromise.d.ts.map +1 -1
  336. package/dist/Fx/run/runPromise.js +43 -0
  337. package/dist/Fx/stream.d.ts +92 -0
  338. package/dist/Fx/stream.d.ts.map +1 -1
  339. package/dist/Fx/stream.js +60 -1
  340. package/dist/Push/Push.d.ts +1216 -91
  341. package/dist/Push/Push.d.ts.map +1 -1
  342. package/dist/Push/Push.js +1012 -83
  343. package/dist/RefArray.d.ts +2 -0
  344. package/dist/RefArray.d.ts.map +1 -0
  345. package/dist/RefArray.js +1 -0
  346. package/dist/RefBigDecimal.d.ts +2 -0
  347. package/dist/RefBigDecimal.d.ts.map +1 -0
  348. package/dist/RefBigDecimal.js +1 -0
  349. package/dist/RefBigInt.d.ts +2 -0
  350. package/dist/RefBigInt.d.ts.map +1 -0
  351. package/dist/RefBigInt.js +1 -0
  352. package/dist/RefBoolean.d.ts +2 -0
  353. package/dist/RefBoolean.d.ts.map +1 -0
  354. package/dist/RefBoolean.js +1 -0
  355. package/dist/RefCause.d.ts +2 -0
  356. package/dist/RefCause.d.ts.map +1 -0
  357. package/dist/RefCause.js +1 -0
  358. package/dist/RefChunk.d.ts +2 -0
  359. package/dist/RefChunk.d.ts.map +1 -0
  360. package/dist/RefChunk.js +1 -0
  361. package/dist/RefDateTime.d.ts +2 -0
  362. package/dist/RefDateTime.d.ts.map +1 -0
  363. package/dist/RefDateTime.js +1 -0
  364. package/dist/RefDuration.d.ts +2 -0
  365. package/dist/RefDuration.d.ts.map +1 -0
  366. package/dist/RefDuration.js +1 -0
  367. package/dist/RefGraph.d.ts +2 -0
  368. package/dist/RefGraph.d.ts.map +1 -0
  369. package/dist/RefGraph.js +1 -0
  370. package/dist/RefHashMap.d.ts +2 -0
  371. package/dist/RefHashMap.d.ts.map +1 -0
  372. package/dist/RefHashMap.js +1 -0
  373. package/dist/RefHashRing.d.ts +2 -0
  374. package/dist/RefHashRing.d.ts.map +1 -0
  375. package/dist/RefHashRing.js +1 -0
  376. package/dist/RefHashSet.d.ts +2 -0
  377. package/dist/RefHashSet.d.ts.map +1 -0
  378. package/dist/RefHashSet.js +1 -0
  379. package/dist/RefIterable.d.ts +2 -0
  380. package/dist/RefIterable.d.ts.map +1 -0
  381. package/dist/RefIterable.js +1 -0
  382. package/dist/RefOption.d.ts +2 -0
  383. package/dist/RefOption.d.ts.map +1 -0
  384. package/dist/RefOption.js +1 -0
  385. package/dist/RefRecord.d.ts +2 -0
  386. package/dist/RefRecord.d.ts.map +1 -0
  387. package/dist/RefRecord.js +1 -0
  388. package/dist/RefResult.d.ts +2 -0
  389. package/dist/RefResult.d.ts.map +1 -0
  390. package/dist/RefResult.js +1 -0
  391. package/dist/RefString.d.ts +2 -0
  392. package/dist/RefString.d.ts.map +1 -0
  393. package/dist/RefString.js +1 -0
  394. package/dist/RefStruct.d.ts +2 -0
  395. package/dist/RefStruct.d.ts.map +1 -0
  396. package/dist/RefStruct.js +1 -0
  397. package/dist/RefSubject/Hydration.d.ts +504 -0
  398. package/dist/RefSubject/Hydration.d.ts.map +1 -0
  399. package/dist/RefSubject/Hydration.js +300 -0
  400. package/dist/RefSubject/RefArray.d.ts +351 -4
  401. package/dist/RefSubject/RefArray.d.ts.map +1 -1
  402. package/dist/RefSubject/RefArray.js +339 -3
  403. package/dist/RefSubject/RefBigDecimal.d.ts +221 -1
  404. package/dist/RefSubject/RefBigDecimal.d.ts.map +1 -1
  405. package/dist/RefSubject/RefBigDecimal.js +210 -1
  406. package/dist/RefSubject/RefBigInt.d.ts +166 -1
  407. package/dist/RefSubject/RefBigInt.d.ts.map +1 -1
  408. package/dist/RefSubject/RefBigInt.js +155 -1
  409. package/dist/RefSubject/RefBoolean.d.ts +166 -1
  410. package/dist/RefSubject/RefBoolean.d.ts.map +1 -1
  411. package/dist/RefSubject/RefBoolean.js +155 -1
  412. package/dist/RefSubject/RefCause.d.ts +122 -1
  413. package/dist/RefSubject/RefCause.d.ts.map +1 -1
  414. package/dist/RefSubject/RefCause.js +111 -1
  415. package/dist/RefSubject/RefChunk.d.ts +406 -1
  416. package/dist/RefSubject/RefChunk.d.ts.map +1 -1
  417. package/dist/RefSubject/RefChunk.js +394 -0
  418. package/dist/RefSubject/RefDateTime.d.ts +122 -1
  419. package/dist/RefSubject/RefDateTime.d.ts.map +1 -1
  420. package/dist/RefSubject/RefDateTime.js +111 -1
  421. package/dist/RefSubject/RefDuration.d.ts +155 -1
  422. package/dist/RefSubject/RefDuration.d.ts.map +1 -1
  423. package/dist/RefSubject/RefDuration.js +144 -1
  424. package/dist/RefSubject/RefGraph.d.ts +320 -6
  425. package/dist/RefSubject/RefGraph.d.ts.map +1 -1
  426. package/dist/RefSubject/RefGraph.js +303 -0
  427. package/dist/RefSubject/RefHashMap.d.ts +296 -1
  428. package/dist/RefSubject/RefHashMap.d.ts.map +1 -1
  429. package/dist/RefSubject/RefHashMap.js +284 -0
  430. package/dist/RefSubject/RefHashRing.d.ts +146 -2
  431. package/dist/RefSubject/RefHashRing.d.ts.map +1 -1
  432. package/dist/RefSubject/RefHashRing.js +133 -0
  433. package/dist/RefSubject/RefHashSet.d.ts +230 -1
  434. package/dist/RefSubject/RefHashSet.d.ts.map +1 -1
  435. package/dist/RefSubject/RefHashSet.js +218 -0
  436. package/dist/RefSubject/RefIterable.d.ts +327 -1
  437. package/dist/RefSubject/RefIterable.d.ts.map +1 -1
  438. package/dist/RefSubject/RefIterable.js +315 -0
  439. package/dist/RefSubject/RefOption.d.ts +144 -1
  440. package/dist/RefSubject/RefOption.d.ts.map +1 -1
  441. package/dist/RefSubject/RefOption.js +133 -1
  442. package/dist/RefSubject/RefRecord.d.ts +339 -1
  443. package/dist/RefSubject/RefRecord.d.ts.map +1 -1
  444. package/dist/RefSubject/RefRecord.js +327 -0
  445. package/dist/RefSubject/RefResult.d.ts +155 -23
  446. package/dist/RefSubject/RefResult.d.ts.map +1 -1
  447. package/dist/RefSubject/RefResult.js +122 -1
  448. package/dist/RefSubject/RefString.d.ts +188 -1
  449. package/dist/RefSubject/RefString.d.ts.map +1 -1
  450. package/dist/RefSubject/RefString.js +177 -1
  451. package/dist/RefSubject/RefStruct.d.ts +156 -1
  452. package/dist/RefSubject/RefStruct.d.ts.map +1 -1
  453. package/dist/RefSubject/RefStruct.js +145 -1
  454. package/dist/RefSubject/RefSubject.d.ts +1166 -13
  455. package/dist/RefSubject/RefSubject.d.ts.map +1 -1
  456. package/dist/RefSubject/RefSubject.js +843 -51
  457. package/dist/RefSubject/RefTrie.d.ts +290 -4
  458. package/dist/RefSubject/RefTrie.d.ts.map +1 -1
  459. package/dist/RefSubject/RefTrie.js +278 -3
  460. package/dist/RefSubject/RefTuple.d.ts +117 -1
  461. package/dist/RefSubject/RefTuple.d.ts.map +1 -1
  462. package/dist/RefSubject/RefTuple.js +106 -1
  463. package/dist/RefSubject/index.d.ts +1 -0
  464. package/dist/RefSubject/index.d.ts.map +1 -1
  465. package/dist/RefSubject/index.js +1 -0
  466. package/dist/RefSubject.d.ts +2 -1
  467. package/dist/RefSubject.d.ts.map +1 -1
  468. package/dist/RefSubject.js +2 -1
  469. package/dist/RefTrie.d.ts +2 -0
  470. package/dist/RefTrie.d.ts.map +1 -0
  471. package/dist/RefTrie.js +1 -0
  472. package/dist/RefTuple.d.ts +2 -0
  473. package/dist/RefTuple.d.ts.map +1 -0
  474. package/dist/RefTuple.js +1 -0
  475. package/dist/Sink/Sink.d.ts +381 -10
  476. package/dist/Sink/Sink.d.ts.map +1 -1
  477. package/dist/Sink/Sink.js +49 -2
  478. package/dist/Sink/combinators.d.ts +731 -2
  479. package/dist/Sink/combinators.d.ts.map +1 -1
  480. package/dist/Sink/combinators.js +706 -4
  481. package/dist/Subject/Subject.d.ts +1013 -19
  482. package/dist/Subject/Subject.d.ts.map +1 -1
  483. package/dist/Subject/Subject.js +901 -36
  484. package/dist/Versioned/Versioned.d.ts +424 -7
  485. package/dist/Versioned/Versioned.d.ts.map +1 -1
  486. package/dist/Versioned/Versioned.js +238 -12
  487. package/dist/index.d.ts +22 -3
  488. package/dist/index.d.ts.map +1 -1
  489. package/dist/index.js +22 -3
  490. package/package.json +123 -14
  491. package/dist/Fx/constructors/fromYieldable.d.ts +0 -12
  492. package/dist/Fx/constructors/fromYieldable.d.ts.map +0 -1
  493. package/dist/Fx/constructors/fromYieldable.js +0 -12
  494. package/src/Fx/Fx.ts +0 -164
  495. package/src/Fx/TypeId.ts +0 -25
  496. package/src/Fx/combinators/additive.ts +0 -142
  497. package/src/Fx/combinators/catch.ts +0 -416
  498. package/src/Fx/combinators/causes.ts +0 -23
  499. package/src/Fx/combinators/changesWithEffect.ts +0 -66
  500. package/src/Fx/combinators/compact.ts +0 -15
  501. package/src/Fx/combinators/continueWith.ts +0 -78
  502. package/src/Fx/combinators/dropUntil.ts +0 -47
  503. package/src/Fx/combinators/ensuring.ts +0 -23
  504. package/src/Fx/combinators/exhaustLatestMap.ts +0 -74
  505. package/src/Fx/combinators/exhaustLatestMapEffect.ts +0 -25
  506. package/src/Fx/combinators/exhaustMap.ts +0 -36
  507. package/src/Fx/combinators/exhaustMapEffect.ts +0 -23
  508. package/src/Fx/combinators/exit.ts +0 -15
  509. package/src/Fx/combinators/filter.ts +0 -22
  510. package/src/Fx/combinators/filterEffect.ts +0 -31
  511. package/src/Fx/combinators/filterMap.ts +0 -23
  512. package/src/Fx/combinators/filterMapEffect.ts +0 -32
  513. package/src/Fx/combinators/filterMapLoop.ts +0 -35
  514. package/src/Fx/combinators/filterMapLoopCause.ts +0 -36
  515. package/src/Fx/combinators/filterMapLoopCauseEffect.ts +0 -46
  516. package/src/Fx/combinators/filterMapLoopEffect.ts +0 -36
  517. package/src/Fx/combinators/flatMap.ts +0 -51
  518. package/src/Fx/combinators/flatMapConcurrently.ts +0 -39
  519. package/src/Fx/combinators/flatMapConcurrentlyEffect.ts +0 -26
  520. package/src/Fx/combinators/flatMapEffect.ts +0 -42
  521. package/src/Fx/combinators/flip.ts +0 -14
  522. package/src/Fx/combinators/gen.ts +0 -24
  523. package/src/Fx/combinators/genScoped.ts +0 -24
  524. package/src/Fx/combinators/index.ts +0 -61
  525. package/src/Fx/combinators/keyed.ts +0 -369
  526. package/src/Fx/combinators/loop.ts +0 -27
  527. package/src/Fx/combinators/loopCause.ts +0 -34
  528. package/src/Fx/combinators/loopCauseEffect.ts +0 -36
  529. package/src/Fx/combinators/loopEffect.ts +0 -34
  530. package/src/Fx/combinators/map.ts +0 -22
  531. package/src/Fx/combinators/mapBoth.ts +0 -40
  532. package/src/Fx/combinators/mapEffect.ts +0 -32
  533. package/src/Fx/combinators/mapError.ts +0 -28
  534. package/src/Fx/combinators/mergeAll.ts +0 -22
  535. package/src/Fx/combinators/mergeOrdered.ts +0 -123
  536. package/src/Fx/combinators/onError.ts +0 -40
  537. package/src/Fx/combinators/onExit.ts +0 -82
  538. package/src/Fx/combinators/onInterrupt.ts +0 -87
  539. package/src/Fx/combinators/provide.ts +0 -124
  540. package/src/Fx/combinators/result.ts +0 -39
  541. package/src/Fx/combinators/scan.ts +0 -82
  542. package/src/Fx/combinators/skip.ts +0 -41
  543. package/src/Fx/combinators/skipRepeats.ts +0 -15
  544. package/src/Fx/combinators/skipRepeatsWith.ts +0 -40
  545. package/src/Fx/combinators/skipWhile.ts +0 -100
  546. package/src/Fx/combinators/slice.ts +0 -55
  547. package/src/Fx/combinators/switchMap.ts +0 -55
  548. package/src/Fx/combinators/switchMapEffect.ts +0 -25
  549. package/src/Fx/combinators/take.ts +0 -38
  550. package/src/Fx/combinators/takeUntil.ts +0 -88
  551. package/src/Fx/combinators/takeWhile.ts +0 -47
  552. package/src/Fx/combinators/tapEffect.ts +0 -39
  553. package/src/Fx/combinators/tuple.ts +0 -79
  554. package/src/Fx/combinators/unwrap.ts +0 -21
  555. package/src/Fx/combinators/unwrapScoped.ts +0 -26
  556. package/src/Fx/combinators/when.ts +0 -64
  557. package/src/Fx/combinators/withSpan.ts +0 -24
  558. package/src/Fx/combinators/zip.ts +0 -175
  559. package/src/Fx/constructors/at.ts +0 -23
  560. package/src/Fx/constructors/die.ts +0 -17
  561. package/src/Fx/constructors/empty.ts +0 -10
  562. package/src/Fx/constructors/fail.ts +0 -14
  563. package/src/Fx/constructors/failCause.ts +0 -14
  564. package/src/Fx/constructors/fn.ts +0 -245
  565. package/src/Fx/constructors/fromEffect.ts +0 -24
  566. package/src/Fx/constructors/fromFailures.ts +0 -19
  567. package/src/Fx/constructors/fromIterable.ts +0 -15
  568. package/src/Fx/constructors/fromSchedule.ts +0 -18
  569. package/src/Fx/constructors/fromYieldable.ts +0 -17
  570. package/src/Fx/constructors/index.ts +0 -15
  571. package/src/Fx/constructors/interrupt.ts +0 -13
  572. package/src/Fx/constructors/make.ts +0 -103
  573. package/src/Fx/constructors/periodic.ts +0 -15
  574. package/src/Fx/constructors/succeed.ts +0 -37
  575. package/src/Fx/constructors/suspend.ts +0 -6
  576. package/src/Fx/index.ts +0 -6
  577. package/src/Fx/internal/DeferredRef.ts +0 -87
  578. package/src/Fx/internal/UnionToTuple.ts +0 -12
  579. package/src/Fx/internal/diff.ts +0 -191
  580. package/src/Fx/internal/equivalence.ts +0 -12
  581. package/src/Fx/internal/multicast.ts +0 -51
  582. package/src/Fx/internal/ring-buffer.ts +0 -60
  583. package/src/Fx/internal/scope.ts +0 -58
  584. package/src/Fx/internal/yieldable.ts +0 -31
  585. package/src/Fx/run/collect.ts +0 -79
  586. package/src/Fx/run/first.ts +0 -20
  587. package/src/Fx/run/fork.ts +0 -40
  588. package/src/Fx/run/index.ts +0 -5
  589. package/src/Fx/run/observe.ts +0 -114
  590. package/src/Fx/run/runPromise.ts +0 -32
  591. package/src/Fx/stream.ts +0 -42
  592. package/src/Fx.additive-combinators.test.ts +0 -126
  593. package/src/Fx.catch-additive.test.ts +0 -206
  594. package/src/Fx.catch.test.ts +0 -60
  595. package/src/Fx.dropUntil.test.ts +0 -61
  596. package/src/Fx.fn.test.ts +0 -51
  597. package/src/Fx.lifecycle.test.ts +0 -79
  598. package/src/Fx.mapError-mapBoth.test.ts +0 -101
  599. package/src/Fx.provide-combinators.test.ts +0 -94
  600. package/src/Fx.result-changesWithEffect.test.ts +0 -112
  601. package/src/Fx.scan.test.ts +0 -73
  602. package/src/Fx.takeWhile-skipWhile.test.ts +0 -84
  603. package/src/Fx.test.ts +0 -71
  604. package/src/Fx.ts +0 -1
  605. package/src/Fx.zip-merge-additive.test.ts +0 -171
  606. package/src/Fx.zip.test.ts +0 -133
  607. package/src/Push/Push.ts +0 -1093
  608. package/src/Push/index.ts +0 -1
  609. package/src/Push.additive.test.ts +0 -256
  610. package/src/Push.test.ts +0 -26
  611. package/src/Push.ts +0 -1
  612. package/src/RefSubject/RefArray.ts +0 -516
  613. package/src/RefSubject/RefBigDecimal.test.ts +0 -56
  614. package/src/RefSubject/RefBigDecimal.ts +0 -295
  615. package/src/RefSubject/RefBigInt.test.ts +0 -56
  616. package/src/RefSubject/RefBigInt.ts +0 -189
  617. package/src/RefSubject/RefBoolean.test.ts +0 -57
  618. package/src/RefSubject/RefBoolean.ts +0 -185
  619. package/src/RefSubject/RefCause.test.ts +0 -53
  620. package/src/RefSubject/RefCause.ts +0 -146
  621. package/src/RefSubject/RefChunk.ts +0 -516
  622. package/src/RefSubject/RefDateTime.test.ts +0 -43
  623. package/src/RefSubject/RefDateTime.ts +0 -261
  624. package/src/RefSubject/RefDuration.test.ts +0 -49
  625. package/src/RefSubject/RefDuration.ts +0 -188
  626. package/src/RefSubject/RefGraph.ts +0 -649
  627. package/src/RefSubject/RefHashMap.ts +0 -474
  628. package/src/RefSubject/RefHashRing.ts +0 -262
  629. package/src/RefSubject/RefHashSet.ts +0 -308
  630. package/src/RefSubject/RefIterable.ts +0 -454
  631. package/src/RefSubject/RefOption.test.ts +0 -67
  632. package/src/RefSubject/RefOption.ts +0 -193
  633. package/src/RefSubject/RefRecord.ts +0 -621
  634. package/src/RefSubject/RefResult.test.ts +0 -63
  635. package/src/RefSubject/RefResult.ts +0 -209
  636. package/src/RefSubject/RefString.test.ts +0 -61
  637. package/src/RefSubject/RefString.ts +0 -256
  638. package/src/RefSubject/RefStruct.test.ts +0 -60
  639. package/src/RefSubject/RefStruct.ts +0 -253
  640. package/src/RefSubject/RefSubject.ts +0 -2642
  641. package/src/RefSubject/RefTrie.ts +0 -365
  642. package/src/RefSubject/RefTuple.test.ts +0 -60
  643. package/src/RefSubject/RefTuple.ts +0 -231
  644. package/src/RefSubject/index.ts +0 -21
  645. package/src/RefSubject.additive-parity.test.ts +0 -101
  646. package/src/RefSubject.test.ts +0 -65
  647. package/src/RefSubject.ts +0 -1
  648. package/src/Sink/Sink.ts +0 -159
  649. package/src/Sink/combinators.ts +0 -1115
  650. package/src/Sink/index.ts +0 -2
  651. package/src/Sink.combinators.test.ts +0 -88
  652. package/src/Sink.reduce-collect-head-last.test.ts +0 -107
  653. package/src/Sink.ts +0 -1
  654. package/src/Subject/Subject.ts +0 -440
  655. package/src/Subject/index.ts +0 -1
  656. package/src/Subject.test.ts +0 -47
  657. package/src/Subject.ts +0 -1
  658. package/src/Versioned/Versioned.ts +0 -595
  659. package/src/Versioned/index.ts +0 -1
  660. package/src/Versioned.filterMap.test.ts +0 -91
  661. package/src/Versioned.test.ts +0 -23
  662. package/src/Versioned.ts +0 -1
  663. package/src/index.ts +0 -7
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,6 +20,7 @@
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(
@@ -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.
@@ -85,15 +85,15 @@ Reactive stream type with concurrency, error handling, and context, integrated w
85
85
  - `mapError(f)` — Transform typed failures.
86
86
  - `mapBoth({ onSuccess, onFailure })` — Transform both success values and typed failures.
87
87
  - `flatMap(f)` — Map to inner Fx and merge (concurrent; like mergeMap).
88
- - `flatMapEffect(f)` — FlatMap with an Effect returning Fx.
89
- - `flatMapConcurrently(f, concurrency?)` — FlatMap with a concurrency limit.
90
- - `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.
91
91
  - `switchMap(f)` — Map to inner Fx and switch to latest (cancels previous).
92
- - `switchMapEffect(f)` — SwitchMap with Effect returning Fx.
92
+ - `switchMapEffect(f)` — Map to an Effect and switch to the latest execution.
93
93
  - `exhaustMap(f)` — Map to inner Fx, ignore new outer values while inner runs.
94
- - `exhaustMapEffect(f)` — ExhaustMap with Effect returning Fx.
94
+ - `exhaustMapEffect(f)` — Map to an Effect, ignoring new values while it runs.
95
95
  - `exhaustLatestMap(f)` — Like exhaustMap but cancel previous inner when new outer arrives.
96
- - `exhaustLatestMapEffect(f)` — ExhaustLatestMap with Effect returning Fx.
96
+ - `exhaustLatestMapEffect(f)` — Effect-based exhaustLatestMap.
97
97
  - `filter(f)` — Keep only values satisfying the predicate.
98
98
  - `filterEffect(f)` — Filter with an Effect predicate.
99
99
  - `filterMap(f)` — Filter and map to Option; compact.
@@ -101,8 +101,8 @@ Reactive stream type with concurrency, error handling, and context, integrated w
101
101
  - `compact` — Filter out `None`, unwrap `Some`.
102
102
  - `take(n)` — Take first n elements.
103
103
  - `takeEffect(effect)` — Take first n elements, where n is computed by an Effect.
104
- - `takeUntil(fx)` — Take until another Fx emits.
105
- - `takeUntilEffect(f)` — Take until an effectful predicate returns true.
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
106
  - `takeWhile(f)` — Take while predicate holds.
107
107
  - `takeWhileEffect(f)` — Take while effectful predicate holds.
108
108
  - `skip(n)` — Skip first n elements.
@@ -128,10 +128,11 @@ Reactive stream type with concurrency, error handling, and context, integrated w
128
128
  - `onExit(f)` — Run an effect on exit (success/failure/interrupt).
129
129
  - `onInterrupt(f)` — Run an effect on interrupt.
130
130
  - `ensuring(effect)` — Run effect when Fx ends (success, failure, or interrupt).
131
- - `provide(services)` — Provide context to the Fx.
131
+ - `provide(layer)` — Provide services to the Fx from a Layer.
132
132
  - `provideService(tag, service)` — Provide a single service to the Fx.
133
133
  - `provideServiceEffect(tag, effect)` — Provide a service produced by an Effect.
134
- - `when(condition, fx)` — Run Fx only when condition holds.
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.
135
136
  - `unwrap` — Unwrap Fx of Fx (flatten one level).
136
137
  - `unwrapScoped` — Unwrap with Scope for inner Fx.
137
138
  - `gen(f)` — Build Fx from a generator (yield Effects, return Fx).
@@ -146,15 +147,15 @@ Reactive stream type with concurrency, error handling, and context, integrated w
146
147
  - `filterMapLoopEffect(initial, f)` — filterMapLoop with Effect.
147
148
  - `filterMapLoopCause(initial, f)` — filterMapLoop with Cause.
148
149
  - `filterMapLoopCauseEffect(initial, f)` — filterMapLoop with Cause and Effect.
149
- - `keyed(keyFn, f)` — Keyed stream (e.g. by id) with inner Fx per key.
150
- - `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.
151
152
  - `exit` — Turn Fx of Exit into Fx that fails/succeeds accordingly.
152
153
  - `result` — Materialize successes/failures as `Result`.
153
154
  - `causes` — Expose failures as Cause emissions.
154
155
  - `continueWith(f)` — When Fx ends, continue with another Fx.
155
156
  - `flip` — Swap success and error types.
156
157
  - `tuple(...fxs)` — Combine Fx streams into tuple Fx.
157
- - `withSpan(name?, options?)` — Add tracing span around the Fx.
158
+ - `withSpan(name, options?)` — Add tracing spans around the Fx and sink callbacks.
158
159
 
159
160
  **Run**
160
161
 
@@ -211,6 +212,8 @@ Mutable reactive reference: observable state that can be read (as Effect), updat
211
212
  **Constructors**
212
213
 
213
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.
214
217
  - `fromEffect(effect)` — RefSubject driven by an Effect (e.g. initial value from async source).
215
218
  - `fromFx(fx)` — RefSubject that follows an Fx stream.
216
219
  - `fromStream(stream)` — RefSubject from an Effect Stream.
@@ -229,6 +232,17 @@ Mutable reactive reference: observable state that can be read (as Effect), updat
229
232
  - `proxy(ref)` — Create a proxy RefSubject that forwards to the given ref.
230
233
  - `isRefSubject(value)` — Type guard for RefSubject.
231
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
+
232
246
  **Derived**
233
247
 
234
248
  - `map(ref, f)` — Computed that applies f to the value.
@@ -246,7 +260,7 @@ Mutable reactive reference: observable state that can be read (as Effect), updat
246
260
 
247
261
  **Typed refs** (each has `make` and domain-specific helpers)
248
262
 
249
- - `RefArray` — Array ref; e.g. prepend, append, remove.
263
+ - `RefArray` — Array ref; e.g. prepend, append, insertAt, replaceAt, drop, and filterValues.
250
264
  - `RefBoolean` — Boolean ref; e.g. toggle, setTrue, setFalse.
251
265
  - `RefOption` — Option ref.
252
266
  - `RefResult` — Result ref.
@@ -279,15 +293,15 @@ Multicast point: both an Fx and a Sink; multiple subscribers share one run of th
279
293
 
280
294
  **Constructors**
281
295
 
282
- - `Subject.make(replay?)` — Create a subject; optional replay buffer size.
283
- - `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.
284
298
 
285
299
  **Combinators**
286
300
 
287
301
  - `Subject.share(fx, subject)` — Multicast Fx through a subject (one run, many subscribers).
288
302
  - `Subject.multicast(fx)` — Share Fx with a fresh subject.
289
303
  - `Subject.hold(fx)` — Fx that holds last value for late subscribers.
290
- - `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.
291
305
 
292
306
  **Service**
293
307
 
@@ -334,7 +348,7 @@ Consumer of values: two callbacks, one for success and one for failure.
334
348
  - `tapEffect(sink, f)` — Tap with Effect, pass value through.
335
349
  - `flip(sink)` — Swap success and error types.
336
350
  - `exit(sink)` — Sink for Exit (success/failure).
337
- - `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.
338
352
  - `skipInterrupt(sink)` — Ignore interrupt at the Sink.
339
353
 
340
354
  **Service**
package/dist/Fx/Fx.d.ts CHANGED
@@ -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
66
  * @category models
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
213
  * @category type-level
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
229
  * @category type-level
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
245
  * @category type-level
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 models
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;
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
+ */
70
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
383
  * @category type-level
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
398
  * @category type-level
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
413
  * @category type-level
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 constructors
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
@@ -1 +1 @@
1
- {"version":3,"file":"Fx.d.ts","sourceRoot":"","sources":["../../src/Fx/Fx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Fx.d.ts","sourceRoot":"","sources":["../../src/Fx/Fx.ts"],"names":[],"mappings":"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"}
package/dist/Fx/Fx.js CHANGED
@@ -10,6 +10,37 @@ const VARIANCE = {
10
10
  _E: identity,
11
11
  _R: identity,
12
12
  };
13
+ /**
14
+ * Defines an Effect service whose value is also a directly runnable `Fx`.
15
+ *
16
+ * @remarks
17
+ * ## Why
18
+ *
19
+ * Applications often need a producer selected by the Effect environment: a clock,
20
+ * event source, transport, or domain feed. `Service` keeps that dependency in `R`
21
+ * and provides the corresponding layer constructor without a parallel wrapper API.
22
+ *
23
+ * ## Ownership and lifetime
24
+ *
25
+ * Defining the class starts no work. `Class.make` acquires the producer when its layer
26
+ * is built, supplies the acquisition context to it, and binds its lifetime to the
27
+ * layer scope. Running the class reads the currently installed implementation.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { Effect, Layer } from "effect"
32
+ * import { Fx } from "@typed/fx"
33
+ *
34
+ * class Ticks extends Fx.Service<Ticks, number>()("app/Ticks") {}
35
+ *
36
+ * const TicksLive = Ticks.make(Fx.succeed(1))
37
+ * const values = Fx.collectAll(Ticks).pipe(Effect.provide(TicksLive))
38
+ * const program = Effect.map(values, (items) => items[0])
39
+ * ```
40
+ *
41
+ * @since 1.0.0
42
+ * @category constructors
43
+ */
13
44
  export function Service() {
14
45
  return (id) => {
15
46
  const service = Context.Service(id);
@@ -26,7 +57,7 @@ export function Service() {
26
57
  static pipe = function () {
27
58
  return pipeArguments(this, arguments);
28
59
  };
29
- static run = (sink) => Effect.flatMap(service.asEffect(), (fx) => fx.run(sink));
60
+ static run = (sink) => Effect.flatMap(service, (fx) => fx.run(sink));
30
61
  constructor() {
31
62
  return FxService;
32
63
  }