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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (640) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -21
  3. package/dist/Fx/Fx.d.ts +371 -19
  4. package/dist/Fx/Fx.d.ts.map +1 -1
  5. package/dist/Fx/Fx.js +37 -6
  6. package/dist/Fx/TypeId.d.ts +52 -6
  7. package/dist/Fx/TypeId.d.ts.map +1 -1
  8. package/dist/Fx/TypeId.js +41 -4
  9. package/dist/Fx/combinators/additive.d.ts +245 -0
  10. package/dist/Fx/combinators/additive.d.ts.map +1 -0
  11. package/dist/Fx/combinators/additive.js +243 -0
  12. package/dist/Fx/combinators/catch.d.ts +246 -12
  13. package/dist/Fx/combinators/catch.d.ts.map +1 -1
  14. package/dist/Fx/combinators/catch.js +236 -12
  15. package/dist/Fx/combinators/causes.d.ts +25 -2
  16. package/dist/Fx/combinators/causes.d.ts.map +1 -1
  17. package/dist/Fx/combinators/causes.js +25 -2
  18. package/dist/Fx/combinators/changesWithEffect.d.ts +40 -0
  19. package/dist/Fx/combinators/changesWithEffect.d.ts.map +1 -0
  20. package/dist/Fx/combinators/changesWithEffect.js +48 -0
  21. package/dist/Fx/combinators/compact.d.ts +18 -1
  22. package/dist/Fx/combinators/compact.d.ts.map +1 -1
  23. package/dist/Fx/combinators/compact.js +18 -1
  24. package/dist/Fx/combinators/concatMap.d.ts +86 -0
  25. package/dist/Fx/combinators/concatMap.d.ts.map +1 -0
  26. package/dist/Fx/combinators/concatMap.js +86 -0
  27. package/dist/Fx/combinators/continueWith.d.ts +113 -5
  28. package/dist/Fx/combinators/continueWith.d.ts.map +1 -1
  29. package/dist/Fx/combinators/continueWith.js +113 -5
  30. package/dist/Fx/combinators/debounce.d.ts +34 -0
  31. package/dist/Fx/combinators/debounce.d.ts.map +1 -0
  32. package/dist/Fx/combinators/debounce.js +35 -0
  33. package/dist/Fx/combinators/delay.d.ts +36 -0
  34. package/dist/Fx/combinators/delay.d.ts.map +1 -0
  35. package/dist/Fx/combinators/delay.js +33 -0
  36. package/dist/Fx/combinators/dropUntil.d.ts +71 -0
  37. package/dist/Fx/combinators/dropUntil.d.ts.map +1 -0
  38. package/dist/Fx/combinators/dropUntil.js +65 -0
  39. package/dist/Fx/combinators/during.d.ts +38 -0
  40. package/dist/Fx/combinators/during.d.ts.map +1 -0
  41. package/dist/Fx/combinators/during.js +85 -0
  42. package/dist/Fx/combinators/ensuring.d.ts +34 -4
  43. package/dist/Fx/combinators/ensuring.d.ts.map +1 -1
  44. package/dist/Fx/combinators/ensuring.js +34 -4
  45. package/dist/Fx/combinators/exhaustLatestMap.d.ts +41 -5
  46. package/dist/Fx/combinators/exhaustLatestMap.d.ts.map +1 -1
  47. package/dist/Fx/combinators/exhaustLatestMap.js +41 -5
  48. package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts +40 -4
  49. package/dist/Fx/combinators/exhaustLatestMapEffect.d.ts.map +1 -1
  50. package/dist/Fx/combinators/exhaustLatestMapEffect.js +40 -4
  51. package/dist/Fx/combinators/exhaustMap.d.ts +38 -1
  52. package/dist/Fx/combinators/exhaustMap.d.ts.map +1 -1
  53. package/dist/Fx/combinators/exhaustMap.js +38 -1
  54. package/dist/Fx/combinators/exhaustMapEffect.d.ts +33 -1
  55. package/dist/Fx/combinators/exhaustMapEffect.d.ts.map +1 -1
  56. package/dist/Fx/combinators/exhaustMapEffect.js +33 -1
  57. package/dist/Fx/combinators/exit.d.ts +23 -2
  58. package/dist/Fx/combinators/exit.d.ts.map +1 -1
  59. package/dist/Fx/combinators/exit.js +23 -2
  60. package/dist/Fx/combinators/filter.d.ts +17 -1
  61. package/dist/Fx/combinators/filter.d.ts.map +1 -1
  62. package/dist/Fx/combinators/filter.js +17 -1
  63. package/dist/Fx/combinators/filterEffect.d.ts +22 -1
  64. package/dist/Fx/combinators/filterEffect.d.ts.map +1 -1
  65. package/dist/Fx/combinators/filterEffect.js +22 -1
  66. package/dist/Fx/combinators/filterMap.d.ts +20 -1
  67. package/dist/Fx/combinators/filterMap.d.ts.map +1 -1
  68. package/dist/Fx/combinators/filterMap.js +20 -1
  69. package/dist/Fx/combinators/filterMapEffect.d.ts +21 -1
  70. package/dist/Fx/combinators/filterMapEffect.d.ts.map +1 -1
  71. package/dist/Fx/combinators/filterMapEffect.js +21 -1
  72. package/dist/Fx/combinators/filterMapLoop.d.ts +20 -1
  73. package/dist/Fx/combinators/filterMapLoop.d.ts.map +1 -1
  74. package/dist/Fx/combinators/filterMapLoop.js +20 -1
  75. package/dist/Fx/combinators/filterMapLoopCause.d.ts +21 -1
  76. package/dist/Fx/combinators/filterMapLoopCause.d.ts.map +1 -1
  77. package/dist/Fx/combinators/filterMapLoopCause.js +21 -1
  78. package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts +21 -1
  79. package/dist/Fx/combinators/filterMapLoopCauseEffect.d.ts.map +1 -1
  80. package/dist/Fx/combinators/filterMapLoopCauseEffect.js +21 -1
  81. package/dist/Fx/combinators/filterMapLoopEffect.d.ts +21 -1
  82. package/dist/Fx/combinators/filterMapLoopEffect.d.ts.map +1 -1
  83. package/dist/Fx/combinators/filterMapLoopEffect.js +21 -1
  84. package/dist/Fx/combinators/flatMap.d.ts +50 -5
  85. package/dist/Fx/combinators/flatMap.d.ts.map +1 -1
  86. package/dist/Fx/combinators/flatMap.js +36 -3
  87. package/dist/Fx/combinators/flatMapConcurrently.d.ts +51 -4
  88. package/dist/Fx/combinators/flatMapConcurrently.d.ts.map +1 -1
  89. package/dist/Fx/combinators/flatMapConcurrently.js +51 -4
  90. package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts +48 -4
  91. package/dist/Fx/combinators/flatMapConcurrentlyEffect.d.ts.map +1 -1
  92. package/dist/Fx/combinators/flatMapConcurrentlyEffect.js +40 -2
  93. package/dist/Fx/combinators/flatMapEffect.d.ts +46 -4
  94. package/dist/Fx/combinators/flatMapEffect.d.ts.map +1 -1
  95. package/dist/Fx/combinators/flatMapEffect.js +32 -2
  96. package/dist/Fx/combinators/flip.d.ts +34 -2
  97. package/dist/Fx/combinators/flip.d.ts.map +1 -1
  98. package/dist/Fx/combinators/flip.js +34 -2
  99. package/dist/Fx/combinators/gen.d.ts +29 -10
  100. package/dist/Fx/combinators/gen.d.ts.map +1 -1
  101. package/dist/Fx/combinators/gen.js +28 -4
  102. package/dist/Fx/combinators/genScoped.d.ts +33 -10
  103. package/dist/Fx/combinators/genScoped.d.ts.map +1 -1
  104. package/dist/Fx/combinators/genScoped.js +31 -3
  105. package/dist/Fx/combinators/grouped.d.ts +89 -0
  106. package/dist/Fx/combinators/grouped.d.ts.map +1 -0
  107. package/dist/Fx/combinators/grouped.js +146 -0
  108. package/dist/Fx/combinators/index.d.ts +45 -0
  109. package/dist/Fx/combinators/index.d.ts.map +1 -1
  110. package/dist/Fx/combinators/index.js +45 -0
  111. package/dist/Fx/combinators/keyed.d.ts +124 -10
  112. package/dist/Fx/combinators/keyed.d.ts.map +1 -1
  113. package/dist/Fx/combinators/keyed.js +69 -11
  114. package/dist/Fx/combinators/loop.d.ts +17 -1
  115. package/dist/Fx/combinators/loop.d.ts.map +1 -1
  116. package/dist/Fx/combinators/loop.js +17 -1
  117. package/dist/Fx/combinators/loopCause.d.ts +18 -1
  118. package/dist/Fx/combinators/loopCause.d.ts.map +1 -1
  119. package/dist/Fx/combinators/loopCause.js +18 -1
  120. package/dist/Fx/combinators/loopCauseEffect.d.ts +19 -1
  121. package/dist/Fx/combinators/loopCauseEffect.d.ts.map +1 -1
  122. package/dist/Fx/combinators/loopCauseEffect.js +19 -1
  123. package/dist/Fx/combinators/loopEffect.d.ts +24 -1
  124. package/dist/Fx/combinators/loopEffect.d.ts.map +1 -1
  125. package/dist/Fx/combinators/loopEffect.js +24 -1
  126. package/dist/Fx/combinators/map.d.ts +46 -1
  127. package/dist/Fx/combinators/map.d.ts.map +1 -1
  128. package/dist/Fx/combinators/map.js +43 -1
  129. package/dist/Fx/combinators/mapBoth.d.ts +40 -0
  130. package/dist/Fx/combinators/mapBoth.d.ts.map +1 -0
  131. package/dist/Fx/combinators/mapBoth.js +33 -0
  132. package/dist/Fx/combinators/mapEffect.d.ts +25 -1
  133. package/dist/Fx/combinators/mapEffect.d.ts.map +1 -1
  134. package/dist/Fx/combinators/mapEffect.js +25 -1
  135. package/dist/Fx/combinators/mapError.d.ts +33 -0
  136. package/dist/Fx/combinators/mapError.d.ts.map +1 -0
  137. package/dist/Fx/combinators/mapError.js +32 -0
  138. package/dist/Fx/combinators/mergeAll.d.ts +35 -1
  139. package/dist/Fx/combinators/mergeAll.d.ts.map +1 -1
  140. package/dist/Fx/combinators/mergeAll.js +35 -1
  141. package/dist/Fx/combinators/mergeOrdered.d.ts +36 -4
  142. package/dist/Fx/combinators/mergeOrdered.d.ts.map +1 -1
  143. package/dist/Fx/combinators/mergeOrdered.js +68 -14
  144. package/dist/Fx/combinators/onError.d.ts +34 -4
  145. package/dist/Fx/combinators/onError.d.ts.map +1 -1
  146. package/dist/Fx/combinators/onError.js +34 -4
  147. package/dist/Fx/combinators/onExit.d.ts +29 -3
  148. package/dist/Fx/combinators/onExit.d.ts.map +1 -1
  149. package/dist/Fx/combinators/onExit.js +29 -3
  150. package/dist/Fx/combinators/onInterrupt.d.ts +49 -4
  151. package/dist/Fx/combinators/onInterrupt.d.ts.map +1 -1
  152. package/dist/Fx/combinators/onInterrupt.js +49 -4
  153. package/dist/Fx/combinators/pairwise.d.ts +28 -0
  154. package/dist/Fx/combinators/pairwise.d.ts.map +1 -0
  155. package/dist/Fx/combinators/pairwise.js +31 -0
  156. package/dist/Fx/combinators/provide.d.ts +162 -8
  157. package/dist/Fx/combinators/provide.d.ts.map +1 -1
  158. package/dist/Fx/combinators/provide.js +154 -6
  159. package/dist/Fx/combinators/race.d.ts +92 -0
  160. package/dist/Fx/combinators/race.d.ts.map +1 -0
  161. package/dist/Fx/combinators/race.js +149 -0
  162. package/dist/Fx/combinators/repeat.d.ts +41 -0
  163. package/dist/Fx/combinators/repeat.d.ts.map +1 -0
  164. package/dist/Fx/combinators/repeat.js +57 -0
  165. package/dist/Fx/combinators/result.d.ts +45 -0
  166. package/dist/Fx/combinators/result.d.ts.map +1 -0
  167. package/dist/Fx/combinators/result.js +46 -0
  168. package/dist/Fx/combinators/retry.d.ts +53 -0
  169. package/dist/Fx/combinators/retry.d.ts.map +1 -0
  170. package/dist/Fx/combinators/retry.js +71 -0
  171. package/dist/Fx/combinators/sample.d.ts +31 -0
  172. package/dist/Fx/combinators/sample.d.ts.map +1 -0
  173. package/dist/Fx/combinators/sample.js +42 -0
  174. package/dist/Fx/combinators/scan.d.ts +72 -0
  175. package/dist/Fx/combinators/scan.d.ts.map +1 -0
  176. package/dist/Fx/combinators/scan.js +77 -0
  177. package/dist/Fx/combinators/since.d.ts +30 -0
  178. package/dist/Fx/combinators/since.d.ts.map +1 -0
  179. package/dist/Fx/combinators/since.js +39 -0
  180. package/dist/Fx/combinators/skip.d.ts +45 -1
  181. package/dist/Fx/combinators/skip.d.ts.map +1 -1
  182. package/dist/Fx/combinators/skip.js +43 -1
  183. package/dist/Fx/combinators/skipRepeats.d.ts +17 -1
  184. package/dist/Fx/combinators/skipRepeats.d.ts.map +1 -1
  185. package/dist/Fx/combinators/skipRepeats.js +17 -1
  186. package/dist/Fx/combinators/skipRepeatsWith.d.ts +18 -1
  187. package/dist/Fx/combinators/skipRepeatsWith.d.ts.map +1 -1
  188. package/dist/Fx/combinators/skipRepeatsWith.js +18 -1
  189. package/dist/Fx/combinators/skipWhile.d.ts +117 -0
  190. package/dist/Fx/combinators/skipWhile.d.ts.map +1 -0
  191. package/dist/Fx/combinators/skipWhile.js +134 -0
  192. package/dist/Fx/combinators/slice.d.ts +97 -2
  193. package/dist/Fx/combinators/slice.d.ts.map +1 -1
  194. package/dist/Fx/combinators/slice.js +45 -1
  195. package/dist/Fx/combinators/switchMap.d.ts +39 -1
  196. package/dist/Fx/combinators/switchMap.d.ts.map +1 -1
  197. package/dist/Fx/combinators/switchMap.js +43 -5
  198. package/dist/Fx/combinators/switchMapEffect.d.ts +38 -1
  199. package/dist/Fx/combinators/switchMapEffect.d.ts.map +1 -1
  200. package/dist/Fx/combinators/switchMapEffect.js +38 -1
  201. package/dist/Fx/combinators/take.d.ts +46 -1
  202. package/dist/Fx/combinators/take.d.ts.map +1 -1
  203. package/dist/Fx/combinators/take.js +44 -1
  204. package/dist/Fx/combinators/takeUntil.d.ts +62 -2
  205. package/dist/Fx/combinators/takeUntil.d.ts.map +1 -1
  206. package/dist/Fx/combinators/takeUntil.js +62 -2
  207. package/dist/Fx/combinators/takeWhile.d.ts +60 -0
  208. package/dist/Fx/combinators/takeWhile.d.ts.map +1 -0
  209. package/dist/Fx/combinators/takeWhile.js +54 -0
  210. package/dist/Fx/combinators/tapEffect.d.ts +17 -1
  211. package/dist/Fx/combinators/tapEffect.d.ts.map +1 -1
  212. package/dist/Fx/combinators/tapEffect.js +17 -1
  213. package/dist/Fx/combinators/throttle.d.ts +79 -0
  214. package/dist/Fx/combinators/throttle.d.ts.map +1 -0
  215. package/dist/Fx/combinators/throttle.js +99 -0
  216. package/dist/Fx/combinators/timeout.d.ts +76 -0
  217. package/dist/Fx/combinators/timeout.d.ts.map +1 -0
  218. package/dist/Fx/combinators/timeout.js +110 -0
  219. package/dist/Fx/combinators/tuple.d.ts +32 -2
  220. package/dist/Fx/combinators/tuple.d.ts.map +1 -1
  221. package/dist/Fx/combinators/tuple.js +36 -5
  222. package/dist/Fx/combinators/until.d.ts +27 -0
  223. package/dist/Fx/combinators/until.d.ts.map +1 -0
  224. package/dist/Fx/combinators/until.js +56 -0
  225. package/dist/Fx/combinators/unwrap.d.ts +31 -2
  226. package/dist/Fx/combinators/unwrap.d.ts.map +1 -1
  227. package/dist/Fx/combinators/unwrap.js +30 -1
  228. package/dist/Fx/combinators/unwrapScoped.d.ts +34 -1
  229. package/dist/Fx/combinators/unwrapScoped.d.ts.map +1 -1
  230. package/dist/Fx/combinators/unwrapScoped.js +34 -1
  231. package/dist/Fx/combinators/when.d.ts +37 -2
  232. package/dist/Fx/combinators/when.d.ts.map +1 -1
  233. package/dist/Fx/combinators/when.js +38 -3
  234. package/dist/Fx/combinators/withLatestFrom.d.ts +58 -0
  235. package/dist/Fx/combinators/withLatestFrom.d.ts.map +1 -0
  236. package/dist/Fx/combinators/withLatestFrom.js +68 -0
  237. package/dist/Fx/combinators/withSpan.d.ts +35 -1
  238. package/dist/Fx/combinators/withSpan.d.ts.map +1 -1
  239. package/dist/Fx/combinators/withSpan.js +34 -3
  240. package/dist/Fx/combinators/zip.d.ts +135 -0
  241. package/dist/Fx/combinators/zip.d.ts.map +1 -0
  242. package/dist/Fx/combinators/zip.js +160 -0
  243. package/dist/Fx/constructors/at.d.ts +23 -3
  244. package/dist/Fx/constructors/at.d.ts.map +1 -1
  245. package/dist/Fx/constructors/at.js +21 -1
  246. package/dist/Fx/constructors/die.d.ts +22 -1
  247. package/dist/Fx/constructors/die.d.ts.map +1 -1
  248. package/dist/Fx/constructors/die.js +22 -1
  249. package/dist/Fx/constructors/empty.d.ts +19 -1
  250. package/dist/Fx/constructors/empty.d.ts.map +1 -1
  251. package/dist/Fx/constructors/empty.js +19 -1
  252. package/dist/Fx/constructors/fail.d.ts +22 -1
  253. package/dist/Fx/constructors/fail.d.ts.map +1 -1
  254. package/dist/Fx/constructors/fail.js +22 -1
  255. package/dist/Fx/constructors/failCause.d.ts +23 -1
  256. package/dist/Fx/constructors/failCause.d.ts.map +1 -1
  257. package/dist/Fx/constructors/failCause.js +23 -1
  258. package/dist/Fx/constructors/fn.d.ts +116 -16
  259. package/dist/Fx/constructors/fn.d.ts.map +1 -1
  260. package/dist/Fx/constructors/fn.js +36 -0
  261. package/dist/Fx/constructors/fromEffect.d.ts +45 -3
  262. package/dist/Fx/constructors/fromEffect.d.ts.map +1 -1
  263. package/dist/Fx/constructors/fromEffect.js +45 -3
  264. package/dist/Fx/constructors/fromFailures.d.ts +25 -1
  265. package/dist/Fx/constructors/fromFailures.d.ts.map +1 -1
  266. package/dist/Fx/constructors/fromFailures.js +25 -1
  267. package/dist/Fx/constructors/fromIterable.d.ts +23 -1
  268. package/dist/Fx/constructors/fromIterable.d.ts.map +1 -1
  269. package/dist/Fx/constructors/fromIterable.js +23 -1
  270. package/dist/Fx/constructors/fromSchedule.d.ts +26 -1
  271. package/dist/Fx/constructors/fromSchedule.d.ts.map +1 -1
  272. package/dist/Fx/constructors/fromSchedule.js +28 -3
  273. package/dist/Fx/constructors/index.d.ts +2 -1
  274. package/dist/Fx/constructors/index.d.ts.map +1 -1
  275. package/dist/Fx/constructors/index.js +2 -1
  276. package/dist/Fx/constructors/interrupt.d.ts +22 -2
  277. package/dist/Fx/constructors/interrupt.d.ts.map +1 -1
  278. package/dist/Fx/constructors/interrupt.js +22 -2
  279. package/dist/Fx/constructors/make.d.ts +151 -4
  280. package/dist/Fx/constructors/make.d.ts.map +1 -1
  281. package/dist/Fx/constructors/make.js +60 -7
  282. package/dist/Fx/constructors/periodic.d.ts +31 -2
  283. package/dist/Fx/constructors/periodic.d.ts.map +1 -1
  284. package/dist/Fx/constructors/periodic.js +30 -1
  285. package/dist/Fx/constructors/succeed.d.ts +79 -7
  286. package/dist/Fx/constructors/succeed.d.ts.map +1 -1
  287. package/dist/Fx/constructors/succeed.js +79 -7
  288. package/dist/Fx/constructors/suspend.d.ts +28 -0
  289. package/dist/Fx/constructors/suspend.d.ts.map +1 -1
  290. package/dist/Fx/constructors/suspend.js +28 -0
  291. package/dist/Fx/constructors/sync.d.ts +32 -0
  292. package/dist/Fx/constructors/sync.d.ts.map +1 -0
  293. package/dist/Fx/constructors/sync.js +32 -0
  294. package/dist/Fx/internal/DeferredRef.d.ts +259 -7
  295. package/dist/Fx/internal/DeferredRef.d.ts.map +1 -1
  296. package/dist/Fx/internal/DeferredRef.js +260 -9
  297. package/dist/Fx/internal/UnionToTuple.d.ts +22 -0
  298. package/dist/Fx/internal/UnionToTuple.d.ts.map +1 -1
  299. package/dist/Fx/internal/diff.d.ts +586 -0
  300. package/dist/Fx/internal/diff.d.ts.map +1 -1
  301. package/dist/Fx/internal/diff.js +120 -9
  302. package/dist/Fx/internal/effectableEvaluateKey.d.ts +30 -0
  303. package/dist/Fx/internal/effectableEvaluateKey.d.ts.map +1 -0
  304. package/dist/Fx/internal/effectableEvaluateKey.js +29 -0
  305. package/dist/Fx/internal/effectableWithOverride.d.ts +55 -0
  306. package/dist/Fx/internal/effectableWithOverride.d.ts.map +1 -0
  307. package/dist/Fx/internal/effectableWithOverride.js +46 -0
  308. package/dist/Fx/internal/equivalence.d.ts +29 -0
  309. package/dist/Fx/internal/equivalence.d.ts.map +1 -1
  310. package/dist/Fx/internal/equivalence.js +29 -0
  311. package/dist/Fx/internal/multicast.d.ts +145 -2
  312. package/dist/Fx/internal/multicast.d.ts.map +1 -1
  313. package/dist/Fx/internal/multicast.js +146 -4
  314. package/dist/Fx/internal/ring-buffer.d.ts +149 -0
  315. package/dist/Fx/internal/ring-buffer.d.ts.map +1 -1
  316. package/dist/Fx/internal/ring-buffer.js +155 -0
  317. package/dist/Fx/internal/scope.d.ts +184 -0
  318. package/dist/Fx/internal/scope.d.ts.map +1 -1
  319. package/dist/Fx/internal/scope.js +150 -0
  320. package/dist/Fx/internal/yieldable.d.ts +117 -2
  321. package/dist/Fx/internal/yieldable.d.ts.map +1 -1
  322. package/dist/Fx/internal/yieldable.js +86 -3
  323. package/dist/Fx/run/collect.d.ts +93 -4
  324. package/dist/Fx/run/collect.d.ts.map +1 -1
  325. package/dist/Fx/run/collect.js +94 -5
  326. package/dist/Fx/run/first.d.ts +23 -1
  327. package/dist/Fx/run/first.d.ts.map +1 -1
  328. package/dist/Fx/run/first.js +23 -1
  329. package/dist/Fx/run/fork.d.ts +52 -2
  330. package/dist/Fx/run/fork.d.ts.map +1 -1
  331. package/dist/Fx/run/fork.js +52 -2
  332. package/dist/Fx/run/observe.d.ts +112 -4
  333. package/dist/Fx/run/observe.d.ts.map +1 -1
  334. package/dist/Fx/run/observe.js +137 -16
  335. package/dist/Fx/run/runPromise.d.ts +45 -2
  336. package/dist/Fx/run/runPromise.d.ts.map +1 -1
  337. package/dist/Fx/run/runPromise.js +45 -2
  338. package/dist/Fx/stream.d.ts +92 -0
  339. package/dist/Fx/stream.d.ts.map +1 -1
  340. package/dist/Fx/stream.js +60 -1
  341. package/dist/Push/Push.d.ts +1286 -98
  342. package/dist/Push/Push.d.ts.map +1 -1
  343. package/dist/Push/Push.js +1074 -88
  344. package/dist/RefArray.d.ts +2 -0
  345. package/dist/RefArray.d.ts.map +1 -0
  346. package/dist/RefArray.js +1 -0
  347. package/dist/RefBigDecimal.d.ts +2 -0
  348. package/dist/RefBigDecimal.d.ts.map +1 -0
  349. package/dist/RefBigDecimal.js +1 -0
  350. package/dist/RefBigInt.d.ts +2 -0
  351. package/dist/RefBigInt.d.ts.map +1 -0
  352. package/dist/RefBigInt.js +1 -0
  353. package/dist/RefBoolean.d.ts +2 -0
  354. package/dist/RefBoolean.d.ts.map +1 -0
  355. package/dist/RefBoolean.js +1 -0
  356. package/dist/RefCause.d.ts +2 -0
  357. package/dist/RefCause.d.ts.map +1 -0
  358. package/dist/RefCause.js +1 -0
  359. package/dist/RefChunk.d.ts +2 -0
  360. package/dist/RefChunk.d.ts.map +1 -0
  361. package/dist/RefChunk.js +1 -0
  362. package/dist/RefDateTime.d.ts +2 -0
  363. package/dist/RefDateTime.d.ts.map +1 -0
  364. package/dist/RefDateTime.js +1 -0
  365. package/dist/RefDuration.d.ts +2 -0
  366. package/dist/RefDuration.d.ts.map +1 -0
  367. package/dist/RefDuration.js +1 -0
  368. package/dist/RefGraph.d.ts +2 -0
  369. package/dist/RefGraph.d.ts.map +1 -0
  370. package/dist/RefGraph.js +1 -0
  371. package/dist/RefHashMap.d.ts +2 -0
  372. package/dist/RefHashMap.d.ts.map +1 -0
  373. package/dist/RefHashMap.js +1 -0
  374. package/dist/RefHashRing.d.ts +2 -0
  375. package/dist/RefHashRing.d.ts.map +1 -0
  376. package/dist/RefHashRing.js +1 -0
  377. package/dist/RefHashSet.d.ts +2 -0
  378. package/dist/RefHashSet.d.ts.map +1 -0
  379. package/dist/RefHashSet.js +1 -0
  380. package/dist/RefIterable.d.ts +2 -0
  381. package/dist/RefIterable.d.ts.map +1 -0
  382. package/dist/RefIterable.js +1 -0
  383. package/dist/RefOption.d.ts +2 -0
  384. package/dist/RefOption.d.ts.map +1 -0
  385. package/dist/RefOption.js +1 -0
  386. package/dist/RefRecord.d.ts +2 -0
  387. package/dist/RefRecord.d.ts.map +1 -0
  388. package/dist/RefRecord.js +1 -0
  389. package/dist/RefResult.d.ts +2 -0
  390. package/dist/RefResult.d.ts.map +1 -0
  391. package/dist/RefResult.js +1 -0
  392. package/dist/RefString.d.ts +2 -0
  393. package/dist/RefString.d.ts.map +1 -0
  394. package/dist/RefString.js +1 -0
  395. package/dist/RefStruct.d.ts +2 -0
  396. package/dist/RefStruct.d.ts.map +1 -0
  397. package/dist/RefStruct.js +1 -0
  398. package/dist/RefSubject/Hydration.d.ts +504 -0
  399. package/dist/RefSubject/Hydration.d.ts.map +1 -0
  400. package/dist/RefSubject/Hydration.js +300 -0
  401. package/dist/RefSubject/RefArray.d.ts +382 -35
  402. package/dist/RefSubject/RefArray.d.ts.map +1 -1
  403. package/dist/RefSubject/RefArray.js +374 -40
  404. package/dist/RefSubject/RefBigDecimal.d.ts +241 -21
  405. package/dist/RefSubject/RefBigDecimal.d.ts.map +1 -1
  406. package/dist/RefSubject/RefBigDecimal.js +229 -20
  407. package/dist/RefSubject/RefBigInt.d.ts +181 -16
  408. package/dist/RefSubject/RefBigInt.d.ts.map +1 -1
  409. package/dist/RefSubject/RefBigInt.js +169 -15
  410. package/dist/RefSubject/RefBoolean.d.ts +181 -16
  411. package/dist/RefSubject/RefBoolean.d.ts.map +1 -1
  412. package/dist/RefSubject/RefBoolean.js +169 -15
  413. package/dist/RefSubject/RefCause.d.ts +133 -12
  414. package/dist/RefSubject/RefCause.d.ts.map +1 -1
  415. package/dist/RefSubject/RefCause.js +121 -11
  416. package/dist/RefSubject/RefChunk.d.ts +481 -76
  417. package/dist/RefSubject/RefChunk.d.ts.map +1 -1
  418. package/dist/RefSubject/RefChunk.js +471 -75
  419. package/dist/RefSubject/RefDateTime.d.ts +137 -16
  420. package/dist/RefSubject/RefDateTime.d.ts.map +1 -1
  421. package/dist/RefSubject/RefDateTime.js +122 -12
  422. package/dist/RefSubject/RefDuration.d.ts +169 -15
  423. package/dist/RefSubject/RefDuration.d.ts.map +1 -1
  424. package/dist/RefSubject/RefDuration.js +157 -14
  425. package/dist/RefSubject/RefGraph.d.ts +349 -35
  426. package/dist/RefSubject/RefGraph.d.ts.map +1 -1
  427. package/dist/RefSubject/RefGraph.js +334 -32
  428. package/dist/RefSubject/RefHashMap.d.ts +323 -28
  429. package/dist/RefSubject/RefHashMap.d.ts.map +1 -1
  430. package/dist/RefSubject/RefHashMap.js +317 -29
  431. package/dist/RefSubject/RefHashRing.d.ts +159 -15
  432. package/dist/RefSubject/RefHashRing.d.ts.map +1 -1
  433. package/dist/RefSubject/RefHashRing.js +145 -12
  434. package/dist/RefSubject/RefHashSet.d.ts +251 -22
  435. package/dist/RefSubject/RefHashSet.d.ts.map +1 -1
  436. package/dist/RefSubject/RefHashSet.js +238 -20
  437. package/dist/RefSubject/RefIterable.d.ts +358 -32
  438. package/dist/RefSubject/RefIterable.d.ts.map +1 -1
  439. package/dist/RefSubject/RefIterable.js +350 -30
  440. package/dist/RefSubject/RefOption.d.ts +157 -14
  441. package/dist/RefSubject/RefOption.d.ts.map +1 -1
  442. package/dist/RefSubject/RefOption.js +145 -13
  443. package/dist/RefSubject/RefRecord.d.ts +402 -64
  444. package/dist/RefSubject/RefRecord.d.ts.map +1 -1
  445. package/dist/RefSubject/RefRecord.js +364 -39
  446. package/dist/RefSubject/RefResult.d.ts +167 -35
  447. package/dist/RefSubject/RefResult.d.ts.map +1 -1
  448. package/dist/RefSubject/RefResult.js +133 -12
  449. package/dist/RefSubject/RefString.d.ts +205 -18
  450. package/dist/RefSubject/RefString.d.ts.map +1 -1
  451. package/dist/RefSubject/RefString.js +193 -17
  452. package/dist/RefSubject/RefStruct.d.ts +169 -14
  453. package/dist/RefSubject/RefStruct.d.ts.map +1 -1
  454. package/dist/RefSubject/RefStruct.js +157 -13
  455. package/dist/RefSubject/RefSubject.d.ts +1242 -43
  456. package/dist/RefSubject/RefSubject.d.ts.map +1 -1
  457. package/dist/RefSubject/RefSubject.js +1012 -86
  458. package/dist/RefSubject/RefTrie.d.ts +323 -37
  459. package/dist/RefSubject/RefTrie.d.ts.map +1 -1
  460. package/dist/RefSubject/RefTrie.js +311 -31
  461. package/dist/RefSubject/RefTuple.d.ts +127 -11
  462. package/dist/RefSubject/RefTuple.d.ts.map +1 -1
  463. package/dist/RefSubject/RefTuple.js +114 -9
  464. package/dist/RefSubject/index.d.ts +1 -0
  465. package/dist/RefSubject/index.d.ts.map +1 -1
  466. package/dist/RefSubject/index.js +1 -0
  467. package/dist/RefSubject.d.ts +2 -1
  468. package/dist/RefSubject.d.ts.map +1 -1
  469. package/dist/RefSubject.js +2 -1
  470. package/dist/RefTrie.d.ts +2 -0
  471. package/dist/RefTrie.d.ts.map +1 -0
  472. package/dist/RefTrie.js +1 -0
  473. package/dist/RefTuple.d.ts +2 -0
  474. package/dist/RefTuple.d.ts.map +1 -0
  475. package/dist/RefTuple.js +1 -0
  476. package/dist/Sink/Sink.d.ts +396 -23
  477. package/dist/Sink/Sink.d.ts.map +1 -1
  478. package/dist/Sink/Sink.js +55 -7
  479. package/dist/Sink/combinators.d.ts +789 -3
  480. package/dist/Sink/combinators.d.ts.map +1 -1
  481. package/dist/Sink/combinators.js +812 -7
  482. package/dist/Subject/Subject.d.ts +1022 -27
  483. package/dist/Subject/Subject.d.ts.map +1 -1
  484. package/dist/Subject/Subject.js +909 -43
  485. package/dist/Versioned/Versioned.d.ts +475 -25
  486. package/dist/Versioned/Versioned.d.ts.map +1 -1
  487. package/dist/Versioned/Versioned.js +298 -46
  488. package/dist/index.d.ts +22 -3
  489. package/dist/index.d.ts.map +1 -1
  490. package/dist/index.js +22 -3
  491. package/package.json +125 -11
  492. package/dist/Fx/constructors/fromYieldable.d.ts +0 -12
  493. package/dist/Fx/constructors/fromYieldable.d.ts.map +0 -1
  494. package/dist/Fx/constructors/fromYieldable.js +0 -12
  495. package/src/Fx/Fx.ts +0 -164
  496. package/src/Fx/TypeId.ts +0 -25
  497. package/src/Fx/combinators/catch.ts +0 -165
  498. package/src/Fx/combinators/causes.ts +0 -23
  499. package/src/Fx/combinators/compact.ts +0 -15
  500. package/src/Fx/combinators/continueWith.ts +0 -78
  501. package/src/Fx/combinators/ensuring.ts +0 -23
  502. package/src/Fx/combinators/exhaustLatestMap.ts +0 -74
  503. package/src/Fx/combinators/exhaustLatestMapEffect.ts +0 -25
  504. package/src/Fx/combinators/exhaustMap.ts +0 -36
  505. package/src/Fx/combinators/exhaustMapEffect.ts +0 -23
  506. package/src/Fx/combinators/exit.ts +0 -15
  507. package/src/Fx/combinators/filter.ts +0 -22
  508. package/src/Fx/combinators/filterEffect.ts +0 -31
  509. package/src/Fx/combinators/filterMap.ts +0 -23
  510. package/src/Fx/combinators/filterMapEffect.ts +0 -32
  511. package/src/Fx/combinators/filterMapLoop.ts +0 -35
  512. package/src/Fx/combinators/filterMapLoopCause.ts +0 -36
  513. package/src/Fx/combinators/filterMapLoopCauseEffect.ts +0 -46
  514. package/src/Fx/combinators/filterMapLoopEffect.ts +0 -36
  515. package/src/Fx/combinators/flatMap.ts +0 -51
  516. package/src/Fx/combinators/flatMapConcurrently.ts +0 -36
  517. package/src/Fx/combinators/flatMapConcurrentlyEffect.ts +0 -26
  518. package/src/Fx/combinators/flatMapEffect.ts +0 -42
  519. package/src/Fx/combinators/flip.ts +0 -14
  520. package/src/Fx/combinators/gen.ts +0 -24
  521. package/src/Fx/combinators/genScoped.ts +0 -24
  522. package/src/Fx/combinators/index.ts +0 -51
  523. package/src/Fx/combinators/keyed.ts +0 -369
  524. package/src/Fx/combinators/loop.ts +0 -27
  525. package/src/Fx/combinators/loopCause.ts +0 -34
  526. package/src/Fx/combinators/loopCauseEffect.ts +0 -36
  527. package/src/Fx/combinators/loopEffect.ts +0 -34
  528. package/src/Fx/combinators/map.ts +0 -22
  529. package/src/Fx/combinators/mapEffect.ts +0 -32
  530. package/src/Fx/combinators/mergeAll.ts +0 -22
  531. package/src/Fx/combinators/mergeOrdered.ts +0 -123
  532. package/src/Fx/combinators/onError.ts +0 -40
  533. package/src/Fx/combinators/onExit.ts +0 -82
  534. package/src/Fx/combinators/onInterrupt.ts +0 -87
  535. package/src/Fx/combinators/provide.ts +0 -62
  536. package/src/Fx/combinators/skip.ts +0 -20
  537. package/src/Fx/combinators/skipRepeats.ts +0 -15
  538. package/src/Fx/combinators/skipRepeatsWith.ts +0 -40
  539. package/src/Fx/combinators/slice.ts +0 -32
  540. package/src/Fx/combinators/switchMap.ts +0 -55
  541. package/src/Fx/combinators/switchMapEffect.ts +0 -25
  542. package/src/Fx/combinators/take.ts +0 -17
  543. package/src/Fx/combinators/takeUntil.ts +0 -50
  544. package/src/Fx/combinators/tapEffect.ts +0 -39
  545. package/src/Fx/combinators/tuple.ts +0 -79
  546. package/src/Fx/combinators/unwrap.ts +0 -21
  547. package/src/Fx/combinators/unwrapScoped.ts +0 -26
  548. package/src/Fx/combinators/when.ts +0 -64
  549. package/src/Fx/combinators/withSpan.ts +0 -24
  550. package/src/Fx/constructors/at.ts +0 -23
  551. package/src/Fx/constructors/die.ts +0 -17
  552. package/src/Fx/constructors/empty.ts +0 -10
  553. package/src/Fx/constructors/fail.ts +0 -14
  554. package/src/Fx/constructors/failCause.ts +0 -14
  555. package/src/Fx/constructors/fn.ts +0 -245
  556. package/src/Fx/constructors/fromEffect.ts +0 -24
  557. package/src/Fx/constructors/fromFailures.ts +0 -19
  558. package/src/Fx/constructors/fromIterable.ts +0 -15
  559. package/src/Fx/constructors/fromSchedule.ts +0 -18
  560. package/src/Fx/constructors/fromYieldable.ts +0 -17
  561. package/src/Fx/constructors/index.ts +0 -15
  562. package/src/Fx/constructors/interrupt.ts +0 -13
  563. package/src/Fx/constructors/make.ts +0 -103
  564. package/src/Fx/constructors/periodic.ts +0 -15
  565. package/src/Fx/constructors/succeed.ts +0 -37
  566. package/src/Fx/constructors/suspend.ts +0 -6
  567. package/src/Fx/index.ts +0 -6
  568. package/src/Fx/internal/DeferredRef.ts +0 -87
  569. package/src/Fx/internal/UnionToTuple.ts +0 -12
  570. package/src/Fx/internal/diff.ts +0 -191
  571. package/src/Fx/internal/equivalence.ts +0 -12
  572. package/src/Fx/internal/multicast.ts +0 -51
  573. package/src/Fx/internal/ring-buffer.ts +0 -60
  574. package/src/Fx/internal/scope.ts +0 -58
  575. package/src/Fx/internal/yieldable.ts +0 -31
  576. package/src/Fx/run/collect.ts +0 -79
  577. package/src/Fx/run/first.ts +0 -20
  578. package/src/Fx/run/fork.ts +0 -40
  579. package/src/Fx/run/index.ts +0 -5
  580. package/src/Fx/run/observe.ts +0 -114
  581. package/src/Fx/run/runPromise.ts +0 -32
  582. package/src/Fx/stream.ts +0 -42
  583. package/src/Fx.catch.test.ts +0 -61
  584. package/src/Fx.fn.test.ts +0 -51
  585. package/src/Fx.lifecycle.test.ts +0 -80
  586. package/src/Fx.test.ts +0 -71
  587. package/src/Fx.ts +0 -1
  588. package/src/Push/Push.ts +0 -903
  589. package/src/Push/index.ts +0 -1
  590. package/src/Push.test.ts +0 -26
  591. package/src/Push.ts +0 -1
  592. package/src/RefSubject/RefArray.ts +0 -512
  593. package/src/RefSubject/RefBigDecimal.test.ts +0 -56
  594. package/src/RefSubject/RefBigDecimal.ts +0 -295
  595. package/src/RefSubject/RefBigInt.test.ts +0 -56
  596. package/src/RefSubject/RefBigInt.ts +0 -189
  597. package/src/RefSubject/RefBoolean.test.ts +0 -57
  598. package/src/RefSubject/RefBoolean.ts +0 -185
  599. package/src/RefSubject/RefCause.test.ts +0 -53
  600. package/src/RefSubject/RefCause.ts +0 -146
  601. package/src/RefSubject/RefChunk.ts +0 -510
  602. package/src/RefSubject/RefDateTime.test.ts +0 -43
  603. package/src/RefSubject/RefDateTime.ts +0 -264
  604. package/src/RefSubject/RefDuration.test.ts +0 -49
  605. package/src/RefSubject/RefDuration.ts +0 -188
  606. package/src/RefSubject/RefGraph.ts +0 -650
  607. package/src/RefSubject/RefHashMap.ts +0 -465
  608. package/src/RefSubject/RefHashRing.ts +0 -262
  609. package/src/RefSubject/RefHashSet.ts +0 -308
  610. package/src/RefSubject/RefIterable.ts +0 -445
  611. package/src/RefSubject/RefOption.test.ts +0 -67
  612. package/src/RefSubject/RefOption.ts +0 -193
  613. package/src/RefSubject/RefRecord.ts +0 -612
  614. package/src/RefSubject/RefResult.test.ts +0 -63
  615. package/src/RefSubject/RefResult.ts +0 -209
  616. package/src/RefSubject/RefString.test.ts +0 -61
  617. package/src/RefSubject/RefString.ts +0 -256
  618. package/src/RefSubject/RefStruct.test.ts +0 -60
  619. package/src/RefSubject/RefStruct.ts +0 -253
  620. package/src/RefSubject/RefSubject.ts +0 -2545
  621. package/src/RefSubject/RefTrie.ts +0 -356
  622. package/src/RefSubject/RefTuple.test.ts +0 -60
  623. package/src/RefSubject/RefTuple.ts +0 -231
  624. package/src/RefSubject/index.ts +0 -21
  625. package/src/RefSubject.test.ts +0 -65
  626. package/src/RefSubject.ts +0 -1
  627. package/src/Sink/Sink.ts +0 -159
  628. package/src/Sink/combinators.ts +0 -993
  629. package/src/Sink/index.ts +0 -2
  630. package/src/Sink.ts +0 -1
  631. package/src/Subject/Subject.ts +0 -441
  632. package/src/Subject/index.ts +0 -1
  633. package/src/Subject.test.ts +0 -47
  634. package/src/Subject.ts +0 -1
  635. package/src/Versioned/Versioned.ts +0 -521
  636. package/src/Versioned/index.ts +0 -1
  637. package/src/Versioned.test.ts +0 -23
  638. package/src/Versioned.ts +0 -1
  639. package/src/index.ts +0 -7
  640. package/tsconfig.json +0 -6
@@ -1,31 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import { identity } from "effect/Function";
3
- import { pipeArguments } from "effect/Pipeable";
4
- import type { Sink } from "../../Sink/Sink.js";
5
- import type * as Fx from "../Fx.js";
6
- import { FxTypeId } from "../TypeId.js";
7
-
8
- const VARIANCE = {
9
- _A: identity,
10
- _E: identity,
11
- _R: identity,
12
- };
13
-
14
- export abstract class YieldableFx<A, E, R, B, E2, R2>
15
- extends Effect.YieldableClass<B, E2, R2>
16
- implements Fx.Fx<A, E, R>
17
- {
18
- readonly [FxTypeId] = VARIANCE;
19
- abstract run<RSink>(sink: Sink<A, E, RSink>): Effect.Effect<unknown, never, R | RSink>;
20
- abstract toEffect(): Effect.Effect<B, E2, R2>;
21
-
22
- pipe() {
23
- return pipeArguments(this, arguments);
24
- }
25
-
26
- // Memoize the effect
27
- protected _effect: Effect.Effect<B, E2, R2> | null = null;
28
- asEffect(): Effect.Effect<B, E2, R2> {
29
- return (this._effect ??= this.toEffect());
30
- }
31
- }
@@ -1,79 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import type * as Fiber from "effect/Fiber";
3
- import { dual } from "effect/Function";
4
- import { take } from "../combinators/take.js";
5
- import type { Fx } from "../Fx.js";
6
- import { observe } from "./observe.js";
7
-
8
- /**
9
- * Collects all values emitted by an `Fx` into an array.
10
- *
11
- * @param fx - The `Fx` to collect values from.
12
- * @returns An `Effect` that produces an array of all values when the `Fx` completes.
13
- * @since 1.0.0
14
- * @category runners
15
- */
16
- export const collectAll = <A, E = never, R = never>(
17
- fx: Fx<A, E, R>,
18
- ): Effect.Effect<ReadonlyArray<A>, E, R> =>
19
- Effect.suspend(() => {
20
- const values: Array<A> = [];
21
-
22
- return fx.pipe(
23
- observe((value) => Effect.sync(() => values.push(value))),
24
- (_) => Effect.map(_.asEffect(), () => values),
25
- );
26
- });
27
-
28
- /**
29
- * Forks the collection of all values from an `Fx`.
30
- *
31
- * @param fx - The `Fx` to collect values from.
32
- * @returns An `Effect` that produces a `Fiber` which computes the array of values.
33
- * @since 1.0.0
34
- * @category runners
35
- */
36
- export const collectAllFork = <A, E = never, R = never>(
37
- fx: Fx<A, E, R>,
38
- ): Effect.Effect<Fiber.Fiber<ReadonlyArray<A>, E>, never, R> =>
39
- Effect.forkChild(collectAll(fx), {
40
- startImmediately: true,
41
- uninterruptible: false,
42
- });
43
-
44
- /**
45
- * Collects the first `n` values emitted by an `Fx` into an array.
46
- *
47
- * @param fx - The `Fx` to collect values from.
48
- * @param upTo - The maximum number of values to collect.
49
- * @returns An `Effect` that produces an array of up to `n` values.
50
- * @since 1.0.0
51
- * @category runners
52
- */
53
- export const collectUpTo: {
54
- (upTo: number): <A, E, R>(fx: Fx<A, E, R>) => Effect.Effect<ReadonlyArray<A>, E, R>;
55
-
56
- <A, E, R>(fx: Fx<A, E, R>, upTo: number): Effect.Effect<ReadonlyArray<A>, E, R>;
57
- } = dual(
58
- 2,
59
- <A, E, R>(fx: Fx<A, E, R>, upTo: number): Effect.Effect<ReadonlyArray<A>, E, R> =>
60
- fx.pipe(take(upTo), collectAll),
61
- );
62
-
63
- /**
64
- * Forks the collection of up to `n` values from an `Fx`.
65
- *
66
- * @param fx - The `Fx` to collect values from.
67
- * @param upTo - The maximum number of values to collect.
68
- * @returns An `Effect` that produces a `Fiber` which computes the array of values.
69
- * @since 1.0.0
70
- * @category runners
71
- */
72
- export const collectUpToFork = <A, E = never, R = never>(
73
- fx: Fx<A, E, R>,
74
- upTo: number,
75
- ): Effect.Effect<Fiber.Fiber<ReadonlyArray<A>, E>, never, R> =>
76
- Effect.forkChild(collectUpTo(fx, upTo), {
77
- startImmediately: true,
78
- uninterruptible: false,
79
- });
@@ -1,20 +0,0 @@
1
- import { head } from "effect/Array";
2
- import type { Effect } from "effect/Effect";
3
- import { map } from "effect/Effect";
4
- import { pipe } from "effect/Function";
5
- import type { Option } from "effect/Option";
6
- import type { Fx } from "../Fx.js";
7
- import { collectUpTo } from "./collect.js";
8
-
9
- /**
10
- * Returns the first value emitted by the `Fx` wrapped in an `Option`.
11
- * If the `Fx` is empty, returns `None`.
12
- *
13
- * @param fx - The `Fx` stream.
14
- * @returns An `Effect` that produces `Some(firstValue)` or `None`.
15
- * @since 1.0.0
16
- * @category runners
17
- */
18
- export function first<A, E, R>(fx: Fx<A, E, R>): Effect<Option<A>, E, R> {
19
- return pipe(fx, collectUpTo(1), map(head));
20
- }
@@ -1,40 +0,0 @@
1
- import type { Effect, RunOptions } from "effect/Effect";
2
- import { forkChild as effectFork, runFork as effectRunFork } from "effect/Effect";
3
- import type { Fiber } from "effect/Fiber";
4
- import type { Fx } from "../Fx.js";
5
- import { drain } from "./observe.js";
6
-
7
- /**
8
- * Forks the execution of an `Fx` into a background fiber.
9
- * The stream will run until it completes or the fiber is interrupted.
10
- *
11
- * @param fx - The `Fx` stream to fork.
12
- * @param options - Configuration for the forked fiber.
13
- * @returns An `Effect` that produces a `Fiber`.
14
- * @since 1.0.0
15
- * @category runners
16
- */
17
- export const fork = <A, E, R>(
18
- fx: Fx<A, E, R>,
19
- options?: {
20
- readonly startImmediately?: boolean;
21
- readonly uninterruptible?: boolean;
22
- },
23
- ): Effect<Fiber<unknown, E>, never, R> =>
24
- effectFork(drain(fx), {
25
- startImmediately: options?.startImmediately ?? true,
26
- uninterruptible: options?.uninterruptible ?? false,
27
- });
28
-
29
- /**
30
- * Runs an `Fx` in a new fiber, using the standard `Effect.runFork`.
31
- * This is useful for integrating with the top-level Effect runtime.
32
- *
33
- * @param fx - The `Fx` stream to run.
34
- * @param options - `RunOptions` for the execution.
35
- * @returns The created `Fiber`.
36
- * @since 1.0.0
37
- * @category runners
38
- */
39
- export const runFork = <A, E>(fx: Fx<A, E>, options?: RunOptions): Fiber<void, E> =>
40
- effectRunFork(drain(fx), options);
@@ -1,5 +0,0 @@
1
- export * from "./collect.js";
2
- export * from "./first.js";
3
- export * from "./fork.js";
4
- export * from "./observe.js";
5
- export * from "./runPromise.js";
@@ -1,114 +0,0 @@
1
- import type { Cause } from "effect/Cause";
2
- import type { Effect } from "effect/Effect";
3
- import {
4
- callback,
5
- catchCause,
6
- failCause,
7
- forkChild,
8
- isEffect,
9
- matchCauseEffect,
10
- runForkWith,
11
- servicesWith,
12
- sync,
13
- void as void_,
14
- } from "effect/Effect";
15
- import { interrupt } from "effect/Fiber";
16
- import { dual } from "effect/Function";
17
- import type { Layer } from "effect/Layer";
18
- import { effectDiscard } from "effect/Layer";
19
- import type { Scope } from "effect/Scope";
20
- import { make } from "../../Sink/Sink.js";
21
- import type { Fx } from "../Fx.js";
22
-
23
- /**
24
- * Observes the values of an `Fx` stream using a callback function.
25
- * The callback can return `void` or an `Effect` which will be executed for each value.
26
- *
27
- * @param fx - The `Fx` stream to observe.
28
- * @param f - The function to call for each emitted value.
29
- * @returns An `Effect` that completes when the stream ends.
30
- * @since 1.0.0
31
- * @category runners
32
- */
33
- export const observe: {
34
- <A, E2 = never, R2 = never>(
35
- f: (value: A) => void | Effect<unknown, E2, R2>,
36
- ): <E, R>(fx: Fx<A, E, R>) => Effect<unknown, E | E2, R | R2>;
37
-
38
- <A, E, R, E2 = never, R2 = never>(
39
- fx: Fx<A, E, R>,
40
- f: (value: A) => void | Effect<unknown, E2, R2>,
41
- ): Effect<unknown, E | E2, R | R2>;
42
- } = dual(
43
- 2,
44
- <A, E, R, E2 = never, R2 = never>(
45
- fx: Fx<A, E, R>,
46
- f: (value: A) => void | Effect<unknown, E2, R2>,
47
- ): Effect<unknown, E | E2, R | R2> =>
48
- servicesWith((services) =>
49
- callback<void, E | E2, R | R2>((resume) => {
50
- const onFailure = (cause: Cause<E | E2>) => sync(() => resume(failCause(cause)));
51
- const onSuccess = (value: A) => {
52
- const result = f(value);
53
- return isEffect(result) ? catchCause(result, onFailure) : void_;
54
- };
55
- const onDone = () => sync(() => resume(void_));
56
-
57
- return fx.run(make(onFailure, onSuccess)).pipe(
58
- matchCauseEffect(make(onFailure, onDone)),
59
- runForkWith(services),
60
- interrupt, // Interrupt fiber when callback is interrupted
61
- );
62
- }),
63
- ),
64
- );
65
-
66
- /**
67
- * Runs an `Fx` stream to completion, discarding all values.
68
- * Useful when the side effects of the stream are all that matter.
69
- *
70
- * @param fx - The `Fx` stream to drain.
71
- * @returns An `Effect` that completes when the stream ends.
72
- * @since 1.0.0
73
- * @category runners
74
- */
75
- export const drain = <A, E, R>(fx: Fx<A, E, R>): Effect<void, E, R> => observe(fx, () => void_);
76
-
77
- /**
78
- * Runs an `Fx` stream as a Layer.
79
- * The stream is forked in the background when the layer is acquired.
80
- *
81
- * @param fx - The `Fx` stream to run.
82
- * @returns A `Layer` that manages the background execution of the stream.
83
- * @since 1.0.0
84
- * @category runners
85
- */
86
- export const drainLayer = <A, E, R>(fx: Fx<A, E, R>): Layer<never, E, Exclude<R, Scope>> =>
87
- effectDiscard(forkChild(drain(fx)));
88
-
89
- /**
90
- * Observes the values of an `Fx` stream using a callback function and returns a `Layer`.
91
- * The callback can return `void` or an `Effect` which will be executed for each value.
92
- *
93
- * @param fx - The `Fx` stream to observe.
94
- * @param f - The function to call for each emitted value.
95
- * @returns A `Layer` that manages the background execution of the stream.
96
- * @since 1.0.0
97
- * @category runners
98
- */
99
- export const observeLayer: {
100
- <A, E2 = never, R2 = never>(
101
- f: (value: A) => void | Effect<unknown, E2, R2>,
102
- ): <E, R>(fx: Fx<A, E, R>) => Layer<never, E | E2, Exclude<R | R2, Scope>>;
103
-
104
- <A, E, R, E2 = never, R2 = never>(
105
- fx: Fx<A, E, R>,
106
- f: (value: A) => void | Effect<unknown, E2, R2>,
107
- ): Layer<never, E | E2, Exclude<R | R2, Scope>>;
108
- } = dual(
109
- 2,
110
- <A, E, R, E2 = never, R2 = never>(
111
- fx: Fx<A, E, R>,
112
- f: (value: A) => void | Effect<unknown, E2, R2>,
113
- ): Layer<never, E | E2, Exclude<R | R2, Scope>> => effectDiscard(observe(fx, f)),
114
- );
@@ -1,32 +0,0 @@
1
- import type { RunOptions } from "effect/Effect";
2
- import * as Effect from "effect/Effect";
3
- import type * as Exit from "effect/Exit";
4
- import type { Fx } from "../Fx.js";
5
- import { drain } from "./observe.js";
6
-
7
- /**
8
- * Runs an `Fx` stream to completion and returns a Promise of the Exit.
9
- *
10
- * @param fx - The `Fx` stream to run.
11
- * @param options - `RunOptions` for execution.
12
- * @returns A Promise resolving to the `Exit` of the execution.
13
- * @since 1.0.0
14
- * @category runners
15
- */
16
- export const runPromiseExit = <A, E>(
17
- fx: Fx<A, E>,
18
- options?: RunOptions,
19
- ): Promise<Exit.Exit<void, E>> => Effect.runPromiseExit(drain(fx), options);
20
-
21
- /**
22
- * Runs an `Fx` stream to completion and returns a Promise.
23
- * Rejects if the stream fails.
24
- *
25
- * @param fx - The `Fx` stream to run.
26
- * @param options - `RunOptions` for execution.
27
- * @returns A Promise that resolves when the stream completes.
28
- * @since 1.0.0
29
- * @category runners
30
- */
31
- export const runPromise = <A, E>(fx: Fx<A, E>, options?: RunOptions): Promise<unknown> =>
32
- Effect.runPromise(drain(fx), options);
package/src/Fx/stream.ts DELETED
@@ -1,42 +0,0 @@
1
- import type * as Effect from "effect/Effect";
2
- import { pipe } from "effect/Function";
3
- import * as Queue from "effect/Queue";
4
- import * as Stream from "effect/Stream";
5
- import * as Sink from "../Sink/Sink.js";
6
- import { make } from "./constructors/make.js";
7
- import type * as Fx from "./Fx.js";
8
-
9
- export type ToStreamOptions = Parameters<typeof Stream.callback<unknown, unknown, unknown>>[1];
10
-
11
- export const toStream = <A, E, R>(
12
- fx: Fx.Fx<A, E, R>,
13
- options?: ToStreamOptions,
14
- ): Stream.Stream<A, E, R> =>
15
- Stream.callback<A, E, R>(
16
- (queue) =>
17
- fx.run(
18
- Sink.make(
19
- (cause) => Queue.failCause(queue, cause),
20
- (value) => Queue.offer(queue, value),
21
- ),
22
- ),
23
- options,
24
- );
25
-
26
- export type FromStreamOptions = Parameters<
27
- typeof Stream.mapEffect<unknown, unknown, unknown, unknown>
28
- >[1];
29
-
30
- export const fromStream = <A, E, R>(
31
- stream: Stream.Stream<A, E, R>,
32
- options?: FromStreamOptions,
33
- ): Fx.Fx<A, E, R> =>
34
- make<A, E, R>(
35
- <RSink = never>(sink: Sink.Sink<A, E, RSink>): Effect.Effect<unknown, never, R | RSink> =>
36
- pipe(
37
- stream,
38
- Stream.mapEffect(sink.onSuccess, options),
39
- Stream.catchCause((cause) => Stream.fromEffect(sink.onFailure(cause))),
40
- Stream.runDrain,
41
- ),
42
- );
@@ -1,61 +0,0 @@
1
- import assert from "node:assert";
2
- import { describe, it } from "vitest";
3
- import { Cause, Data, Effect, Exit } from "effect";
4
- import { Fx } from "./index.js";
5
-
6
- describe("Fx", () => {
7
- describe("catch / catchCause / catchTag", () => {
8
- class ErrorA extends Data.TaggedError("A") {}
9
- class ErrorB extends Data.TaggedError("B") {}
10
-
11
- it("catch recovers from typed failures", () =>
12
- Effect.gen(function* () {
13
- const fx = Fx.fail("boom").pipe(Fx.catch((e) => Fx.succeed(`recovered:${e}`)));
14
-
15
- const result = yield* Fx.collectAll(fx);
16
- assert.deepStrictEqual(result, ["recovered:boom"]);
17
- }).pipe(Effect.scoped, Effect.runPromise));
18
-
19
- it("catch does not recover from defects", () =>
20
- Effect.gen(function* () {
21
- const fx = Fx.die("boom").pipe(Fx.catch(() => Fx.succeed("nope")));
22
-
23
- const exit = yield* Effect.exit(Fx.collectAll(fx));
24
- assert(Exit.isFailure(exit));
25
- assert(Cause.hasDies(exit.cause));
26
- }).pipe(Effect.scoped, Effect.runPromise));
27
-
28
- it("catchCause recovers from defects", () =>
29
- Effect.gen(function* () {
30
- const fx = Fx.die("boom").pipe(Fx.catchCause(() => Fx.succeed("ok")));
31
-
32
- const result = yield* Fx.collectAll(fx);
33
- assert.deepStrictEqual(result, ["ok"]);
34
- }).pipe(Effect.scoped, Effect.runPromise));
35
-
36
- it("catchTag recovers from tagged failures", () =>
37
- Effect.gen(function* () {
38
- const fx = Fx.fail(new ErrorA()).pipe(Fx.catchTag("A", () => Fx.succeed(1)));
39
-
40
- const result = yield* Fx.collectAll(fx);
41
- assert.deepStrictEqual(result, [1]);
42
- }).pipe(Effect.scoped, Effect.runPromise));
43
-
44
- it("catchTag does not catch other tags", () =>
45
- Effect.gen(function* () {
46
- const fx = Fx.fail(new ErrorB()).pipe(
47
- // @ts-expect-error - invalid tag
48
- Fx.catchTag("A", () => Fx.succeed(1)),
49
- );
50
-
51
- const exit = yield* Effect.exit(Fx.collectAll(fx));
52
- assert(Exit.isFailure(exit));
53
- assert.strictEqual(exit.cause.reasons.length, 1);
54
-
55
- const failure = exit.cause.reasons[0];
56
- assert(failure._tag === "Fail");
57
- // @ts-expect-error - unexpected tag
58
- assert.strictEqual(failure.error._tag, "B");
59
- }).pipe(Effect.scoped, Effect.runPromise));
60
- });
61
- });
package/src/Fx.fn.test.ts DELETED
@@ -1,51 +0,0 @@
1
- import { assert, describe, it } from "vitest";
2
- import { Effect } from "effect";
3
- import { Fx } from "./index.js";
4
-
5
- describe("Fx", () => {
6
- describe("fn", () => {
7
- it("generator returns an Fx", () =>
8
- Effect.gen(function* () {
9
- const makeFx = Fx.fn(function* (n: number) {
10
- const next = yield* Effect.succeed(n + 1);
11
- return Fx.succeed(next);
12
- });
13
-
14
- const result = yield* Fx.collectAll(makeFx(1));
15
- assert.deepStrictEqual(result, [2]);
16
- }).pipe(Effect.scoped, Effect.runPromise));
17
-
18
- it("non-generator returns an Fx", () =>
19
- Effect.gen(function* () {
20
- const makeFx = Fx.fn((n: number) => Fx.succeed(n));
21
-
22
- const result = yield* Fx.collectAll(makeFx(3));
23
- assert.deepStrictEqual(result, [3]);
24
- }).pipe(Effect.scoped, Effect.runPromise));
25
-
26
- it("named variant supports generator bodies", () =>
27
- Effect.gen(function* () {
28
- // oxlint-disable-next-line require-yield
29
- const makeFx = Fx.fn("Fx.fn (named)")(function* (input: string) {
30
- return Fx.succeed(input);
31
- });
32
-
33
- const result = yield* Fx.collectAll(makeFx("ok"));
34
- assert.deepStrictEqual(result, ["ok"]);
35
- }).pipe(Effect.scoped, Effect.runPromise));
36
-
37
- it("pipeables compose over the returned Fx", () =>
38
- Effect.gen(function* () {
39
- const makeFx = Fx.fn(
40
- function* (n: number) {
41
- const next = yield* Effect.succeed(n + 1);
42
- return Fx.succeed(next);
43
- },
44
- Fx.map((n) => n * 2),
45
- );
46
-
47
- const result = yield* Fx.collectAll(makeFx(1));
48
- assert.deepStrictEqual(result, [4]);
49
- }).pipe(Effect.scoped, Effect.runPromise));
50
- });
51
- });
@@ -1,80 +0,0 @@
1
- import assert from "node:assert";
2
- import { describe, it } from "vitest";
3
- import * as Effect from "effect/Effect";
4
- import * as Exit from "effect/Exit";
5
- import * as Fiber from "effect/Fiber";
6
- import * as Ref from "effect/Ref";
7
- import { Fx } from "./index.js";
8
-
9
- describe("Fx", () => {
10
- describe("lifecycle hooks", () => {
11
- it("onExit runs on success", () =>
12
- Effect.gen(function* () {
13
- const tag = yield* Ref.make("unset");
14
-
15
- const fx = Fx.fromIterable([1]).pipe(
16
- Fx.onExit((exit) => Ref.set(tag, Exit.isSuccess(exit) ? "success" : "failure")),
17
- );
18
-
19
- const result = yield* Fx.collectAll(fx);
20
- assert.deepStrictEqual(result, [1]);
21
- assert.strictEqual(yield* Ref.get(tag), "success");
22
- }).pipe(Effect.scoped, Effect.runPromise));
23
-
24
- it("onExit runs on failure", () =>
25
- Effect.gen(function* () {
26
- const tag = yield* Ref.make("unset");
27
-
28
- const fx = Fx.fail("boom").pipe(
29
- Fx.onExit((exit) => Ref.set(tag, Exit.isFailure(exit) ? "failure" : "success")),
30
- );
31
-
32
- const exit = yield* Effect.exit(Fx.collectAll(fx));
33
- assert(Exit.isFailure(exit));
34
- assert.strictEqual(yield* Ref.get(tag), "failure");
35
- }).pipe(Effect.scoped, Effect.runPromise));
36
-
37
- it("onInterrupt runs when interrupted", () =>
38
- Effect.gen(function* () {
39
- const interrupted = yield* Ref.make(false);
40
-
41
- const fiber = yield* Fx.never.pipe(
42
- Fx.onInterrupt(() => Ref.set(interrupted, true)),
43
- Fx.collectAllFork,
44
- );
45
-
46
- yield* Fiber.interrupt(fiber);
47
- assert.strictEqual(yield* Ref.get(interrupted), true);
48
- }).pipe(Effect.scoped, Effect.runPromise));
49
-
50
- it("onError runs only on failure", () =>
51
- Effect.gen(function* () {
52
- const count = yield* Ref.make(0);
53
-
54
- yield* Fx.fromIterable([1]).pipe(
55
- Fx.onError(() => Ref.update(count, (n) => n + 1)),
56
- Fx.collectAll,
57
- );
58
- assert.strictEqual(yield* Ref.get(count), 0);
59
-
60
- const exit = yield* Effect.exit(
61
- Fx.fail("boom").pipe(
62
- Fx.onError(() => Ref.update(count, (n) => n + 1)),
63
- Fx.collectAll,
64
- ),
65
- );
66
- assert(Exit.isFailure(exit));
67
- assert.strictEqual(yield* Ref.get(count), 1);
68
- }).pipe(Effect.scoped, Effect.runPromise));
69
-
70
- it("ensuring runs when interrupted", () =>
71
- Effect.gen(function* () {
72
- const ensured = yield* Ref.make(false);
73
-
74
- const fiber = yield* Fx.never.pipe(Fx.ensuring(Ref.set(ensured, true)), Fx.collectAllFork);
75
-
76
- yield* Fiber.interrupt(fiber);
77
- assert.strictEqual(yield* Ref.get(ensured), true);
78
- }).pipe(Effect.scoped, Effect.runPromise));
79
- });
80
- });
package/src/Fx.test.ts DELETED
@@ -1,71 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import * as Effect from "effect/Effect";
3
- import { Fx, Sink } from "./index.js";
4
-
5
- describe("Fx", () => {
6
- it("fromIterable", () =>
7
- Effect.gen(function* () {
8
- const fx = Fx.fromIterable([1, 2, 3]);
9
- expect(yield* Fx.collectAll(fx)).toEqual([1, 2, 3]);
10
- }).pipe(Effect.scoped, Effect.runPromise));
11
-
12
- it("filter", () =>
13
- Effect.gen(function* () {
14
- const fx = Fx.fromIterable([1, 2, 3, 4]);
15
- const filtered = Fx.filter(fx, (n) => n % 2 === 0);
16
- expect(yield* Fx.collectAll(filtered)).toEqual([2, 4]);
17
- }).pipe(Effect.scoped, Effect.runPromise));
18
-
19
- it("map", () =>
20
- Effect.gen(function* () {
21
- const fx = Fx.fromIterable([1, 2, 3]);
22
- const mapped = Fx.map(fx, (n) => n * 2);
23
- expect(yield* Fx.collectAll(mapped)).toEqual([2, 4, 6]);
24
- }).pipe(Effect.scoped, Effect.runPromise));
25
-
26
- it("switchMap", () =>
27
- Effect.gen(function* () {
28
- const fx = Fx.fromIterable([1, 2, 3]);
29
- const switched = Fx.switchMap(fx, (n) => Fx.fromIterable([n, n * 2]));
30
- expect(yield* Fx.collectAll(switched)).toEqual([3, 6]);
31
- }).pipe(Effect.scoped, Effect.runPromise));
32
-
33
- it("mergeAll", () =>
34
- Effect.gen(function* () {
35
- const fx1 = Fx.fromIterable([1, 2]);
36
- const fx2 = Fx.fromIterable([3, 4]);
37
- const merged = Fx.mergeAll(fx1, fx2);
38
- const result = yield* Fx.collectAll(merged);
39
- expect(result).toEqual([1, 2, 3, 4]);
40
- }).pipe(Effect.scoped, Effect.runPromise));
41
-
42
- describe("Service", () => {
43
- it("should allow defining an Fx as a Service", () =>
44
- Effect.gen(function* () {
45
- class MyFx extends Fx.Service<MyFx, number>()("MyFx") {}
46
-
47
- const layer = MyFx.make(Fx.succeed(42));
48
-
49
- const result = yield* Fx.collectAll(MyFx).pipe(Effect.provide(layer));
50
- expect(result).toEqual([42]);
51
- }).pipe(Effect.scoped, Effect.runPromise));
52
- });
53
- });
54
-
55
- describe("Sink", () => {
56
- describe("Service", () => {
57
- it("should allow defining a Sink as a Service", () =>
58
- Effect.gen(function* () {
59
- class MySink extends Sink.Service<MySink, number>()("MySink") {}
60
-
61
- let value = 0;
62
- const layer = MySink.make(Effect.failCause, (n) => Effect.sync(() => (value += n)));
63
-
64
- yield* MySink.onSuccess(1).pipe(Effect.provide(layer));
65
- expect(value).toEqual(1);
66
-
67
- yield* MySink.onSuccess(2).pipe(Effect.provide(layer));
68
- expect(value).toEqual(3);
69
- }).pipe(Effect.scoped, Effect.runPromise));
70
- });
71
- });
package/src/Fx.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./Fx/index.js";