@typed/fx 0.0.4 → 0.0.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 (368) hide show
  1. package/.eslintcache +1 -1
  2. package/cjs/Cause/Cause.d.ts +10 -0
  3. package/cjs/Cause/Cause.d.ts.map +1 -1
  4. package/cjs/Cause/Cause.js +37 -2
  5. package/cjs/Cause/Cause.js.map +1 -1
  6. package/cjs/Cause/Renderer.js +1 -1
  7. package/cjs/Cause/Renderer.js.map +1 -1
  8. package/cjs/Env/Env.js +1 -1
  9. package/cjs/Env/Env.js.map +1 -1
  10. package/cjs/Fiber/fromScope.d.ts +5 -0
  11. package/cjs/Fiber/fromScope.d.ts.map +1 -0
  12. package/cjs/Fiber/fromScope.js +17 -0
  13. package/cjs/Fiber/fromScope.js.map +1 -0
  14. package/cjs/FiberContext/FiberContext.js +1 -1
  15. package/cjs/FiberContext/FiberContext.js.map +1 -1
  16. package/cjs/FiberRef/builtins.d.ts.map +1 -1
  17. package/cjs/FiberRef/builtins.js +6 -6
  18. package/cjs/FiberRef/builtins.js.map +1 -1
  19. package/cjs/FiberRuntime/FiberRuntime.d.ts.map +1 -1
  20. package/cjs/FiberRuntime/FiberRuntime.js +22 -13
  21. package/cjs/FiberRuntime/FiberRuntime.js.map +1 -1
  22. package/cjs/Fx/Fx.d.ts +3 -2
  23. package/cjs/Fx/Fx.d.ts.map +1 -1
  24. package/cjs/Fx/Fx.js +24 -22
  25. package/cjs/Fx/Fx.js.map +1 -1
  26. package/cjs/Fx/join.d.ts +1 -1
  27. package/cjs/Fx/join.d.ts.map +1 -1
  28. package/cjs/Fx/join.js +1 -1
  29. package/cjs/Fx/join.js.map +1 -1
  30. package/cjs/Schedule/ScheduleState.d.ts +3 -0
  31. package/cjs/Schedule/ScheduleState.d.ts.map +1 -1
  32. package/cjs/Schedule/ScheduleState.js +3 -0
  33. package/cjs/Schedule/ScheduleState.js.map +1 -1
  34. package/cjs/Scheduler/RootScheduler.d.ts.map +1 -1
  35. package/cjs/Scheduler/RootScheduler.js +4 -5
  36. package/cjs/Scheduler/RootScheduler.js.map +1 -1
  37. package/cjs/Scheduler/Scheduler.d.ts +2 -2
  38. package/cjs/Scheduler/Scheduler.d.ts.map +1 -1
  39. package/cjs/Scheduler/Scheduler.js.map +1 -1
  40. package/cjs/Scheduler/callbackScheduler.d.ts.map +1 -1
  41. package/cjs/Scheduler/callbackScheduler.js +1 -0
  42. package/cjs/Scheduler/callbackScheduler.js.map +1 -1
  43. package/cjs/Scheduler/runSchedule.d.ts +1 -1
  44. package/cjs/Scheduler/runSchedule.d.ts.map +1 -1
  45. package/cjs/Scheduler/runSchedule.js +3 -2
  46. package/cjs/Scheduler/runSchedule.js.map +1 -1
  47. package/cjs/Scope/LocalScope.d.ts.map +1 -1
  48. package/cjs/Scope/LocalScope.js +8 -8
  49. package/cjs/Scope/LocalScope.js.map +1 -1
  50. package/cjs/Semaphore/Semaphore.d.ts +9 -9
  51. package/cjs/Semaphore/Semaphore.d.ts.map +1 -1
  52. package/cjs/Semaphore/Semaphore.js +34 -15
  53. package/cjs/Semaphore/Semaphore.js.map +1 -1
  54. package/cjs/Sink/Sink.d.ts +1 -0
  55. package/cjs/Sink/Sink.d.ts.map +1 -1
  56. package/cjs/Sink/Sink.js +11 -1
  57. package/cjs/Sink/Sink.js.map +1 -1
  58. package/cjs/Stream/Stream.d.ts +5 -10
  59. package/cjs/Stream/Stream.d.ts.map +1 -1
  60. package/cjs/Stream/Stream.js.map +1 -1
  61. package/cjs/Stream/acquirePermit.d.ts +15 -0
  62. package/cjs/Stream/acquirePermit.d.ts.map +1 -0
  63. package/cjs/Stream/acquirePermit.js +43 -0
  64. package/cjs/Stream/acquirePermit.js.map +1 -0
  65. package/cjs/Stream/bimap.d.ts +5 -4
  66. package/cjs/Stream/bimap.d.ts.map +1 -1
  67. package/cjs/Stream/bimap.js +11 -9
  68. package/cjs/Stream/bimap.js.map +1 -1
  69. package/cjs/Stream/continueWith.d.ts +4 -3
  70. package/cjs/Stream/continueWith.d.ts.map +1 -1
  71. package/cjs/Stream/continueWith.js +9 -6
  72. package/cjs/Stream/continueWith.js.map +1 -1
  73. package/cjs/Stream/drain.d.ts +2 -2
  74. package/cjs/Stream/drain.d.ts.map +1 -1
  75. package/cjs/Stream/drain.js +5 -5
  76. package/cjs/Stream/drain.js.map +1 -1
  77. package/cjs/Stream/empty.d.ts.map +1 -1
  78. package/cjs/Stream/empty.js +1 -2
  79. package/cjs/Stream/empty.js.map +1 -1
  80. package/cjs/Stream/flatMap.d.ts +7 -5
  81. package/cjs/Stream/flatMap.d.ts.map +1 -1
  82. package/cjs/Stream/flatMap.js +43 -17
  83. package/cjs/Stream/flatMap.js.map +1 -1
  84. package/cjs/Stream/flatMapConcurrently.d.ts +5 -0
  85. package/cjs/Stream/flatMapConcurrently.d.ts.map +1 -0
  86. package/cjs/Stream/flatMapConcurrently.js +20 -0
  87. package/cjs/Stream/flatMapConcurrently.js.map +1 -0
  88. package/cjs/Stream/flatMapFx.d.ts +5 -1
  89. package/cjs/Stream/flatMapFx.d.ts.map +1 -1
  90. package/cjs/Stream/flatMapFx.js +18 -3
  91. package/cjs/Stream/flatMapFx.js.map +1 -1
  92. package/cjs/Stream/fromCallback.d.ts +4 -3
  93. package/cjs/Stream/fromCallback.d.ts.map +1 -1
  94. package/cjs/Stream/fromCallback.js +26 -26
  95. package/cjs/Stream/fromCallback.js.map +1 -1
  96. package/cjs/Stream/fromFx.d.ts +14 -8
  97. package/cjs/Stream/fromFx.d.ts.map +1 -1
  98. package/cjs/Stream/fromFx.js +24 -15
  99. package/cjs/Stream/fromFx.js.map +1 -1
  100. package/cjs/Stream/hold.d.ts +27 -0
  101. package/cjs/Stream/hold.d.ts.map +1 -0
  102. package/cjs/Stream/hold.js +94 -0
  103. package/cjs/Stream/hold.js.map +1 -0
  104. package/cjs/Stream/index.d.ts +8 -0
  105. package/cjs/Stream/index.d.ts.map +1 -1
  106. package/cjs/Stream/index.js +8 -0
  107. package/cjs/Stream/index.js.map +1 -1
  108. package/cjs/Stream/lazy.d.ts +3 -0
  109. package/cjs/Stream/lazy.d.ts.map +1 -0
  110. package/cjs/Stream/lazy.js +9 -0
  111. package/cjs/Stream/lazy.js.map +1 -0
  112. package/cjs/Stream/map.d.ts +4 -3
  113. package/cjs/Stream/map.d.ts.map +1 -1
  114. package/cjs/Stream/map.js +11 -8
  115. package/cjs/Stream/map.js.map +1 -1
  116. package/cjs/Stream/merge.d.ts +18 -0
  117. package/cjs/Stream/merge.d.ts.map +1 -0
  118. package/cjs/Stream/merge.js +84 -0
  119. package/cjs/Stream/merge.js.map +1 -0
  120. package/cjs/Stream/multicast.d.ts +27 -0
  121. package/cjs/Stream/multicast.d.ts.map +1 -0
  122. package/cjs/Stream/multicast.js +83 -0
  123. package/cjs/Stream/multicast.js.map +1 -0
  124. package/cjs/Stream/orElse.d.ts +17 -0
  125. package/cjs/Stream/orElse.d.ts.map +1 -0
  126. package/cjs/Stream/orElse.js +118 -0
  127. package/cjs/Stream/orElse.js.map +1 -0
  128. package/cjs/Stream/periodic.d.ts +1 -1
  129. package/cjs/Stream/periodic.d.ts.map +1 -1
  130. package/cjs/Stream/periodic.js +1 -1
  131. package/cjs/Stream/periodic.js.map +1 -1
  132. package/cjs/Stream/scan.d.ts +17 -0
  133. package/cjs/Stream/scan.d.ts.map +1 -0
  134. package/cjs/Stream/scan.js +32 -0
  135. package/cjs/Stream/scan.js.map +1 -0
  136. package/cjs/Stream/scheduled.d.ts +12 -3
  137. package/cjs/Stream/scheduled.d.ts.map +1 -1
  138. package/cjs/Stream/scheduled.js +23 -5
  139. package/cjs/Stream/scheduled.js.map +1 -1
  140. package/cjs/Stream/setFiberRefLocally.d.ts +15 -0
  141. package/cjs/Stream/setFiberRefLocally.d.ts.map +1 -0
  142. package/cjs/Stream/setFiberRefLocally.js +51 -0
  143. package/cjs/Stream/setFiberRefLocally.js.map +1 -0
  144. package/cjs/Stream/switchMap.d.ts +18 -0
  145. package/cjs/Stream/switchMap.d.ts.map +1 -0
  146. package/cjs/Stream/switchMap.js +136 -0
  147. package/cjs/Stream/switchMap.js.map +1 -0
  148. package/cjs/Stream/tap.d.ts +2 -1
  149. package/cjs/Stream/tap.d.ts.map +1 -1
  150. package/cjs/Stream/tap.js +4 -2
  151. package/cjs/Stream/tap.js.map +1 -1
  152. package/cjs/Timeline/index.js.map +1 -1
  153. package/esm/Cause/Cause.d.ts +10 -0
  154. package/esm/Cause/Cause.d.ts.map +1 -1
  155. package/esm/Cause/Cause.js +27 -0
  156. package/esm/Cause/Cause.js.map +1 -1
  157. package/esm/Cause/Renderer.js +1 -1
  158. package/esm/Cause/Renderer.js.map +1 -1
  159. package/esm/Env/Env.js +1 -1
  160. package/esm/Env/Env.js.map +1 -1
  161. package/esm/Fiber/fromScope.d.ts +5 -0
  162. package/esm/Fiber/fromScope.d.ts.map +1 -0
  163. package/esm/Fiber/fromScope.js +13 -0
  164. package/esm/Fiber/fromScope.js.map +1 -0
  165. package/esm/FiberContext/FiberContext.js +1 -1
  166. package/esm/FiberContext/FiberContext.js.map +1 -1
  167. package/esm/FiberRef/builtins.d.ts.map +1 -1
  168. package/esm/FiberRef/builtins.js +6 -6
  169. package/esm/FiberRef/builtins.js.map +1 -1
  170. package/esm/FiberRuntime/FiberRuntime.d.ts.map +1 -1
  171. package/esm/FiberRuntime/FiberRuntime.js +22 -13
  172. package/esm/FiberRuntime/FiberRuntime.js.map +1 -1
  173. package/esm/Fx/Fx.d.ts +3 -2
  174. package/esm/Fx/Fx.d.ts.map +1 -1
  175. package/esm/Fx/Fx.js +21 -20
  176. package/esm/Fx/Fx.js.map +1 -1
  177. package/esm/Fx/join.d.ts +1 -1
  178. package/esm/Fx/join.d.ts.map +1 -1
  179. package/esm/Fx/join.js +1 -1
  180. package/esm/Fx/join.js.map +1 -1
  181. package/esm/Schedule/ScheduleState.d.ts +3 -0
  182. package/esm/Schedule/ScheduleState.d.ts.map +1 -1
  183. package/esm/Schedule/ScheduleState.js +3 -0
  184. package/esm/Schedule/ScheduleState.js.map +1 -1
  185. package/esm/Scheduler/RootScheduler.d.ts.map +1 -1
  186. package/esm/Scheduler/RootScheduler.js +4 -5
  187. package/esm/Scheduler/RootScheduler.js.map +1 -1
  188. package/esm/Scheduler/Scheduler.d.ts +2 -2
  189. package/esm/Scheduler/Scheduler.d.ts.map +1 -1
  190. package/esm/Scheduler/Scheduler.js.map +1 -1
  191. package/esm/Scheduler/callbackScheduler.d.ts.map +1 -1
  192. package/esm/Scheduler/callbackScheduler.js +1 -0
  193. package/esm/Scheduler/callbackScheduler.js.map +1 -1
  194. package/esm/Scheduler/runSchedule.d.ts +1 -1
  195. package/esm/Scheduler/runSchedule.d.ts.map +1 -1
  196. package/esm/Scheduler/runSchedule.js +4 -3
  197. package/esm/Scheduler/runSchedule.js.map +1 -1
  198. package/esm/Scope/LocalScope.d.ts.map +1 -1
  199. package/esm/Scope/LocalScope.js +8 -8
  200. package/esm/Scope/LocalScope.js.map +1 -1
  201. package/esm/Semaphore/Semaphore.d.ts +9 -9
  202. package/esm/Semaphore/Semaphore.d.ts.map +1 -1
  203. package/esm/Semaphore/Semaphore.js +11 -15
  204. package/esm/Semaphore/Semaphore.js.map +1 -1
  205. package/esm/Sink/Sink.d.ts +1 -0
  206. package/esm/Sink/Sink.d.ts.map +1 -1
  207. package/esm/Sink/Sink.js +10 -1
  208. package/esm/Sink/Sink.js.map +1 -1
  209. package/esm/Stream/Stream.d.ts +5 -10
  210. package/esm/Stream/Stream.d.ts.map +1 -1
  211. package/esm/Stream/Stream.js.map +1 -1
  212. package/esm/Stream/acquirePermit.d.ts +15 -0
  213. package/esm/Stream/acquirePermit.d.ts.map +1 -0
  214. package/esm/Stream/acquirePermit.js +15 -0
  215. package/esm/Stream/acquirePermit.js.map +1 -0
  216. package/esm/Stream/bimap.d.ts +5 -4
  217. package/esm/Stream/bimap.d.ts.map +1 -1
  218. package/esm/Stream/bimap.js +11 -9
  219. package/esm/Stream/bimap.js.map +1 -1
  220. package/esm/Stream/continueWith.d.ts +4 -3
  221. package/esm/Stream/continueWith.d.ts.map +1 -1
  222. package/esm/Stream/continueWith.js +9 -6
  223. package/esm/Stream/continueWith.js.map +1 -1
  224. package/esm/Stream/drain.d.ts +2 -2
  225. package/esm/Stream/drain.d.ts.map +1 -1
  226. package/esm/Stream/drain.js +6 -6
  227. package/esm/Stream/drain.js.map +1 -1
  228. package/esm/Stream/empty.d.ts.map +1 -1
  229. package/esm/Stream/empty.js +1 -2
  230. package/esm/Stream/empty.js.map +1 -1
  231. package/esm/Stream/flatMap.d.ts +7 -5
  232. package/esm/Stream/flatMap.d.ts.map +1 -1
  233. package/esm/Stream/flatMap.js +43 -18
  234. package/esm/Stream/flatMap.js.map +1 -1
  235. package/esm/Stream/flatMapConcurrently.d.ts +5 -0
  236. package/esm/Stream/flatMapConcurrently.d.ts.map +1 -0
  237. package/esm/Stream/flatMapConcurrently.js +15 -0
  238. package/esm/Stream/flatMapConcurrently.js.map +1 -0
  239. package/esm/Stream/flatMapFx.d.ts +5 -1
  240. package/esm/Stream/flatMapFx.d.ts.map +1 -1
  241. package/esm/Stream/flatMapFx.js +16 -4
  242. package/esm/Stream/flatMapFx.js.map +1 -1
  243. package/esm/Stream/fromCallback.d.ts +4 -3
  244. package/esm/Stream/fromCallback.d.ts.map +1 -1
  245. package/esm/Stream/fromCallback.js +26 -26
  246. package/esm/Stream/fromCallback.js.map +1 -1
  247. package/esm/Stream/fromFx.d.ts +14 -8
  248. package/esm/Stream/fromFx.d.ts.map +1 -1
  249. package/esm/Stream/fromFx.js +13 -13
  250. package/esm/Stream/fromFx.js.map +1 -1
  251. package/esm/Stream/hold.d.ts +27 -0
  252. package/esm/Stream/hold.d.ts.map +1 -0
  253. package/esm/Stream/hold.js +66 -0
  254. package/esm/Stream/hold.js.map +1 -0
  255. package/esm/Stream/index.d.ts +8 -0
  256. package/esm/Stream/index.d.ts.map +1 -1
  257. package/esm/Stream/index.js +8 -0
  258. package/esm/Stream/index.js.map +1 -1
  259. package/esm/Stream/lazy.d.ts +3 -0
  260. package/esm/Stream/lazy.d.ts.map +1 -0
  261. package/esm/Stream/lazy.js +5 -0
  262. package/esm/Stream/lazy.js.map +1 -0
  263. package/esm/Stream/map.d.ts +4 -3
  264. package/esm/Stream/map.d.ts.map +1 -1
  265. package/esm/Stream/map.js +11 -8
  266. package/esm/Stream/map.js.map +1 -1
  267. package/esm/Stream/merge.d.ts +18 -0
  268. package/esm/Stream/merge.d.ts.map +1 -0
  269. package/esm/Stream/merge.js +55 -0
  270. package/esm/Stream/merge.js.map +1 -0
  271. package/esm/Stream/multicast.d.ts +27 -0
  272. package/esm/Stream/multicast.d.ts.map +1 -0
  273. package/esm/Stream/multicast.js +55 -0
  274. package/esm/Stream/multicast.js.map +1 -0
  275. package/esm/Stream/orElse.d.ts +17 -0
  276. package/esm/Stream/orElse.d.ts.map +1 -0
  277. package/esm/Stream/orElse.js +90 -0
  278. package/esm/Stream/orElse.js.map +1 -0
  279. package/esm/Stream/periodic.d.ts +1 -1
  280. package/esm/Stream/periodic.d.ts.map +1 -1
  281. package/esm/Stream/periodic.js +1 -1
  282. package/esm/Stream/periodic.js.map +1 -1
  283. package/esm/Stream/scan.d.ts +17 -0
  284. package/esm/Stream/scan.d.ts.map +1 -0
  285. package/esm/Stream/scan.js +27 -0
  286. package/esm/Stream/scan.js.map +1 -0
  287. package/esm/Stream/scheduled.d.ts +12 -3
  288. package/esm/Stream/scheduled.d.ts.map +1 -1
  289. package/esm/Stream/scheduled.js +16 -4
  290. package/esm/Stream/scheduled.js.map +1 -1
  291. package/esm/Stream/setFiberRefLocally.d.ts +15 -0
  292. package/esm/Stream/setFiberRefLocally.d.ts.map +1 -0
  293. package/esm/Stream/setFiberRefLocally.js +23 -0
  294. package/esm/Stream/setFiberRefLocally.js.map +1 -0
  295. package/esm/Stream/switchMap.d.ts +18 -0
  296. package/esm/Stream/switchMap.d.ts.map +1 -0
  297. package/esm/Stream/switchMap.js +107 -0
  298. package/esm/Stream/switchMap.js.map +1 -0
  299. package/esm/Stream/tap.d.ts +2 -1
  300. package/esm/Stream/tap.d.ts.map +1 -1
  301. package/esm/Stream/tap.js +3 -2
  302. package/esm/Stream/tap.js.map +1 -1
  303. package/esm/Timeline/index.js.map +1 -1
  304. package/package.json +111 -21
  305. package/readme.md +1 -1
  306. package/src/Cause/Cause.ts +63 -0
  307. package/src/Cause/Renderer.ts +1 -1
  308. package/src/Env/Env.ts +1 -1
  309. package/src/Fiber/fromScope.ts +19 -0
  310. package/src/FiberContext/FiberContext.ts +1 -1
  311. package/src/FiberRef/builtins.ts +19 -10
  312. package/src/FiberRuntime/FiberRuntime.ts +32 -25
  313. package/src/Fx/Fx.test.ts +2 -2
  314. package/src/Fx/Fx.ts +10 -9
  315. package/src/Fx/join.ts +4 -4
  316. package/src/Schedule/ScheduleState.ts +3 -0
  317. package/src/Scheduler/RootScheduler.ts +7 -9
  318. package/src/Scheduler/Scheduler.ts +5 -6
  319. package/src/Scheduler/callbackScheduler.ts +1 -0
  320. package/src/Scheduler/runSchedule.ts +5 -2
  321. package/src/Scope/LocalScope.ts +8 -6
  322. package/src/Semaphore/Semaphore.ts +12 -19
  323. package/src/Sink/Sink.ts +11 -1
  324. package/src/Stream/Stream.ts +9 -11
  325. package/src/Stream/acquirePermit.ts +32 -0
  326. package/src/Stream/bimap.ts +16 -9
  327. package/src/Stream/continueWith.ts +11 -7
  328. package/src/Stream/drain.ts +8 -7
  329. package/src/Stream/empty.ts +1 -2
  330. package/src/Stream/flatMap.test.ts +8 -21
  331. package/src/Stream/flatMap.ts +58 -23
  332. package/src/Stream/flatMapConcurrently.test.ts +77 -0
  333. package/src/Stream/flatMapConcurrently.ts +30 -0
  334. package/src/Stream/flatMapFx.ts +37 -4
  335. package/src/Stream/fromCallback.test.ts +3 -16
  336. package/src/Stream/fromCallback.ts +48 -29
  337. package/src/Stream/fromFx.test.ts +3 -24
  338. package/src/Stream/fromFx.ts +47 -30
  339. package/src/Stream/hold.test.ts +52 -0
  340. package/src/Stream/hold.ts +117 -0
  341. package/src/Stream/index.ts +8 -0
  342. package/src/Stream/lazy.ts +5 -0
  343. package/src/Stream/logging.test.ts +8 -3
  344. package/src/Stream/map.ts +25 -11
  345. package/src/Stream/merge.test.ts +31 -0
  346. package/src/Stream/merge.ts +76 -0
  347. package/src/Stream/multicast.test.ts +32 -0
  348. package/src/Stream/multicast.ts +114 -0
  349. package/src/Stream/orElse.ts +123 -0
  350. package/src/Stream/periodic.ts +2 -2
  351. package/src/Stream/scan.test.ts +28 -0
  352. package/src/Stream/scan.ts +46 -0
  353. package/src/Stream/scheduled.test.ts +9 -1
  354. package/src/Stream/scheduled.ts +46 -12
  355. package/src/Stream/setFiberRefLocally.ts +44 -0
  356. package/src/Stream/switchMap.test.ts +43 -0
  357. package/src/Stream/switchMap.ts +159 -0
  358. package/src/Stream/tap.ts +6 -3
  359. package/src/Timeline/index.ts +1 -0
  360. package/cjs/Effect/Effect.d.ts +0 -199
  361. package/cjs/Effect/Effect.d.ts.map +0 -1
  362. package/cjs/Effect/Effect.js +0 -66
  363. package/cjs/Effect/Effect.js.map +0 -1
  364. package/esm/Effect/Effect.d.ts +0 -199
  365. package/esm/Effect/Effect.d.ts.map +0 -1
  366. package/esm/Effect/Effect.js +0 -50
  367. package/esm/Effect/Effect.js.map +0 -1
  368. package/src/Effect/Effect.ts +0 -109
@@ -0,0 +1,107 @@
1
+ import { flow, pipe } from 'hkt-ts';
2
+ import { isRight } from 'hkt-ts/Either';
3
+ import { isJust } from 'hkt-ts/Maybe';
4
+ import { MapStream } from './map.js';
5
+ import { Disposable, settable } from "../Disposable/Disposable.js";
6
+ import * as FiberRefs from "../FiberRefs/index.js";
7
+ import * as Fx from "../Fx/index.js";
8
+ import { access, lazy, unit } from "../Fx/index.js";
9
+ import { Lock } from "../Semaphore/Semaphore.js";
10
+ import * as Sink from "../Sink/Sink.js";
11
+ import { None, and } from "../Supervisor/Supervisor.js";
12
+ export function switchMap(f, __trace) {
13
+ return (stream) => SwitchMapStream.make(stream, f, __trace);
14
+ }
15
+ export function switchLatest(stream, __trace) {
16
+ return switchMap((a) => a, __trace)(stream);
17
+ }
18
+ export class SwitchMapStream {
19
+ stream;
20
+ f;
21
+ __trace;
22
+ constructor(stream, f, __trace) {
23
+ this.stream = stream;
24
+ this.f = f;
25
+ this.__trace = __trace;
26
+ }
27
+ fork(sink, scheduler, context) {
28
+ const { stream, f } = this;
29
+ return access((env) => stream.fork(new SwitchMapSink(sink, scheduler, context, f, env, this.__trace), scheduler, context), "access" + " node_modules/@typed/fx/src/Stream/switchMap.ts:46:18");
30
+ }
31
+ static make(stream, f, __trace) {
32
+ if (stream instanceof MapStream) {
33
+ return SwitchMapStream.make(stream.stream, flow(stream.f, f), __trace);
34
+ }
35
+ return new SwitchMapStream(stream, f, __trace);
36
+ }
37
+ }
38
+ class SwitchMapSink {
39
+ sink;
40
+ scheduler;
41
+ context;
42
+ f;
43
+ env;
44
+ __trace;
45
+ _ended = false;
46
+ _fibers = [];
47
+ _lock = new Lock();
48
+ _supervisor = None.extend({
49
+ onEnd: () => (fiber, exit) => {
50
+ const parentContext = fiber.context.parent;
51
+ // Merge FiberRefs upon successful completion
52
+ if (isRight(exit) && isJust(parentContext)) {
53
+ FiberRefs.join(parentContext.value.fiberRefs, fiber.context.fiberRefs);
54
+ }
55
+ },
56
+ });
57
+ constructor(sink, scheduler, context, f, env, __trace) {
58
+ this.sink = sink;
59
+ this.scheduler = scheduler;
60
+ this.context = context;
61
+ this.f = f;
62
+ this.env = env;
63
+ this.__trace = __trace;
64
+ }
65
+ event = (a) => Fx.lazy(() => {
66
+ const forked = this.context.fork({
67
+ supervisor: and(this._supervisor)(this.context.supervisor),
68
+ });
69
+ const cleanup = Fx.zipAll(this._fibers.map((f) => f.interruptAs(forked.id)));
70
+ const disposable = settable();
71
+ const sink = this.innerSink(disposable);
72
+ return pipe(cleanup, // eslint-disable-next-line @typescript-eslint/no-unused-vars
73
+ Fx.flatMap(() => this.f(a).fork(Sink.addTrace(sink, this.__trace), this.scheduler, forked)), Fx.tapLazy((fiber) => {
74
+ this._fibers.push(fiber);
75
+ disposable.add(Disposable(() => {
76
+ this._fibers.splice(this._fibers.indexOf(fiber), 1);
77
+ }));
78
+ }), Fx.flatMap((fiber) => pipe(fiber, Fx.join, Fx.tapLazy(() => disposable.dispose()))), (x) => x, Fx.provide(this.env));
79
+ }, "Fx.lazy" + " node_modules/@typed/fx/src/Stream/switchMap.ts:94:12");
80
+ error = (cause) => {
81
+ return lazy(() => {
82
+ this._ended = true;
83
+ return this.sink.error(cause);
84
+ }, "lazy" + " node_modules/@typed/fx/src/Stream/switchMap.ts:128:16");
85
+ };
86
+ end = lazy(() => {
87
+ this._ended = true;
88
+ return this.endIfCompleted();
89
+ }, "lazy" + " node_modules/@typed/fx/src/Stream/switchMap.ts:135:13");
90
+ endIfCompleted() {
91
+ if (this._ended && this._fibers.length === 0) {
92
+ return this.sink.end;
93
+ }
94
+ return unit;
95
+ }
96
+ innerSink(disposable) {
97
+ return {
98
+ event: this.sink.event,
99
+ error: this.error,
100
+ end: lazy(() => {
101
+ disposable.dispose();
102
+ return this.endIfCompleted();
103
+ }, "lazy" + " node_modules/@typed/fx/src/Stream/switchMap.ts:153:16"),
104
+ };
105
+ }
106
+ }
107
+ //# sourceMappingURL=switchMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switchMap.js","sourceRoot":"","sources":["../../src/Stream/switchMap.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Stream } from './Stream.js';
2
2
  import { Fx } from "../Fx/Fx.js";
3
- export declare const tap: <A, R2, E2, B>(f: (a: A) => Fx<R2, E2, B>) => <R, E>(stream: Stream<R, E, A>) => Stream<R2 | R, E2 | E, A>;
3
+ export declare const tap: <A, R2, E2, B>(f: (a: A) => Fx<R2, E2, B>, __trace?: string) => <R, E>(stream: Stream<R, E, A>) => Stream<R2 | R, E2 | E, A>;
4
+ export declare const tapLazy: <A, B>(f: (a: A) => B, __trace?: string) => <R, E>(stream: Stream<R, E, A>) => Stream<R, E, A>;
4
5
  //# sourceMappingURL=tap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap.d.ts","sourceRoot":"","sources":["../../src/Stream/tap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EAAE,EAAE,EAAO,oBAAkB;AAEpC,eAAO,MAAM,GAAG,4GAaX,CAAA"}
1
+ {"version":3,"file":"tap.d.ts","sourceRoot":"","sources":["../../src/Stream/tap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,OAAO,EAAE,EAAE,EAAiB,oBAAkB;AAE9C,eAAO,MAAM,GAAG,uDACuC,MAAM,iEAYxD,CAAA;AAEL,eAAO,MAAM,OAAO,mCAAoC,MAAM,uDAChB,CAAA"}
package/esm/Stream/tap.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { pipe } from 'hkt-ts/function';
2
2
  import { flatMapFx } from './flatMapFx.js';
3
- import { map } from "../Fx/Fx.js";
4
- export const tap = (f) => (stream) => pipe(stream, flatMapFx((a) => pipe(f(a), map(() => a)), 'Stream.tap'));
3
+ import { fromLazy, map } from "../Fx/Fx.js";
4
+ export const tap = (f, __trace) => (stream) => pipe(stream, flatMapFx((a) => pipe(f(a), map(() => a)), __trace));
5
+ export const tapLazy = (f, __trace) => tap((a) => fromLazy(() => f(a)), __trace);
5
6
  //# sourceMappingURL=tap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap.js","sourceRoot":"","sources":["../../src/Stream/tap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAM,GAAG,EAAE,oBAAkB;AAEpC,MAAM,CAAC,MAAM,GAAG,GACd,CAAe,CAA0B,EAAE,EAAE,CAC7C,CAAO,MAAuB,EAA6B,EAAE,CAC3D,IAAI,CACF,MAAM,EACN,SAAS,CACP,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,CACF,CAAC,CAAC,CAAC,CAAC,EACJ,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CACb,EACH,YAAY,CACb,CACF,CAAA"}
1
+ {"version":3,"file":"tap.js","sourceRoot":"","sources":["../../src/Stream/tap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAM,QAAQ,EAAE,GAAG,EAAE,oBAAkB;AAE9C,MAAM,CAAC,MAAM,GAAG,GACd,CAAe,CAA0B,EAAE,OAAgB,EAAE,EAAE,CAC/D,CAAO,MAAuB,EAA6B,EAAE,CAC3D,IAAI,CACF,MAAM,EACN,SAAS,CACP,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,CACF,CAAC,CAAC,CAAC,CAAC,EACJ,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CACb,EACH,OAAO,CACR,CACF,CAAA;AAEL,MAAM,CAAC,MAAM,OAAO,GAAG,CAAO,CAAc,EAAE,OAAgB,EAAE,EAAE,CAChE,GAAG,CAAC,CAAC,CAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Timeline/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Timeline/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typed/fx",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "High-performance Asynchronous Effects",
5
5
  "type": "module",
6
6
  "main": "esm/index.js",
@@ -256,26 +256,6 @@
256
256
  "types": "./esm/Duration/Duration.d.ts"
257
257
  }
258
258
  },
259
- "./Effect": {
260
- "require": {
261
- "default": "./cjs/Effect/index.js",
262
- "types": "./cjs/Effect/index.js"
263
- },
264
- "import": {
265
- "default": "./esm/Effect/index.js",
266
- "types": "./esm/Effect/index.js"
267
- }
268
- },
269
- "./Effect/Effect": {
270
- "require": {
271
- "default": "./cjs/Effect/Effect.js",
272
- "types": "./cjs/Effect/Effect.d.ts"
273
- },
274
- "import": {
275
- "default": "./esm/Effect/Effect.js",
276
- "types": "./esm/Effect/Effect.d.ts"
277
- }
278
- },
279
259
  "./Env": {
280
260
  "require": {
281
261
  "default": "./cjs/Env/index.js",
@@ -356,6 +336,16 @@
356
336
  "types": "./esm/Fiber/fromExit.d.ts"
357
337
  }
358
338
  },
339
+ "./Fiber/fromScope": {
340
+ "require": {
341
+ "default": "./cjs/Fiber/fromScope.js",
342
+ "types": "./cjs/Fiber/fromScope.d.ts"
343
+ },
344
+ "import": {
345
+ "default": "./esm/Fiber/fromScope.js",
346
+ "types": "./esm/Fiber/fromScope.d.ts"
347
+ }
348
+ },
359
349
  "./Fiber/hkt": {
360
350
  "require": {
361
351
  "default": "./cjs/Fiber/hkt.js",
@@ -1176,6 +1166,16 @@
1176
1166
  "types": "./esm/Stream/Stream.d.ts"
1177
1167
  }
1178
1168
  },
1169
+ "./Stream/acquirePermit": {
1170
+ "require": {
1171
+ "default": "./cjs/Stream/acquirePermit.js",
1172
+ "types": "./cjs/Stream/acquirePermit.d.ts"
1173
+ },
1174
+ "import": {
1175
+ "default": "./esm/Stream/acquirePermit.js",
1176
+ "types": "./esm/Stream/acquirePermit.d.ts"
1177
+ }
1178
+ },
1179
1179
  "./Stream/bimap": {
1180
1180
  "require": {
1181
1181
  "default": "./cjs/Stream/bimap.js",
@@ -1226,6 +1226,16 @@
1226
1226
  "types": "./esm/Stream/flatMap.d.ts"
1227
1227
  }
1228
1228
  },
1229
+ "./Stream/flatMapConcurrently": {
1230
+ "require": {
1231
+ "default": "./cjs/Stream/flatMapConcurrently.js",
1232
+ "types": "./cjs/Stream/flatMapConcurrently.d.ts"
1233
+ },
1234
+ "import": {
1235
+ "default": "./esm/Stream/flatMapConcurrently.js",
1236
+ "types": "./esm/Stream/flatMapConcurrently.d.ts"
1237
+ }
1238
+ },
1229
1239
  "./Stream/flatMapFx": {
1230
1240
  "require": {
1231
1241
  "default": "./cjs/Stream/flatMapFx.js",
@@ -1266,6 +1276,26 @@
1266
1276
  "types": "./esm/Stream/hkt.d.ts"
1267
1277
  }
1268
1278
  },
1279
+ "./Stream/hold": {
1280
+ "require": {
1281
+ "default": "./cjs/Stream/hold.js",
1282
+ "types": "./cjs/Stream/hold.d.ts"
1283
+ },
1284
+ "import": {
1285
+ "default": "./esm/Stream/hold.js",
1286
+ "types": "./esm/Stream/hold.d.ts"
1287
+ }
1288
+ },
1289
+ "./Stream/lazy": {
1290
+ "require": {
1291
+ "default": "./cjs/Stream/lazy.js",
1292
+ "types": "./cjs/Stream/lazy.d.ts"
1293
+ },
1294
+ "import": {
1295
+ "default": "./esm/Stream/lazy.js",
1296
+ "types": "./esm/Stream/lazy.d.ts"
1297
+ }
1298
+ },
1269
1299
  "./Stream/map": {
1270
1300
  "require": {
1271
1301
  "default": "./cjs/Stream/map.js",
@@ -1276,6 +1306,36 @@
1276
1306
  "types": "./esm/Stream/map.d.ts"
1277
1307
  }
1278
1308
  },
1309
+ "./Stream/merge": {
1310
+ "require": {
1311
+ "default": "./cjs/Stream/merge.js",
1312
+ "types": "./cjs/Stream/merge.d.ts"
1313
+ },
1314
+ "import": {
1315
+ "default": "./esm/Stream/merge.js",
1316
+ "types": "./esm/Stream/merge.d.ts"
1317
+ }
1318
+ },
1319
+ "./Stream/multicast": {
1320
+ "require": {
1321
+ "default": "./cjs/Stream/multicast.js",
1322
+ "types": "./cjs/Stream/multicast.d.ts"
1323
+ },
1324
+ "import": {
1325
+ "default": "./esm/Stream/multicast.js",
1326
+ "types": "./esm/Stream/multicast.d.ts"
1327
+ }
1328
+ },
1329
+ "./Stream/orElse": {
1330
+ "require": {
1331
+ "default": "./cjs/Stream/orElse.js",
1332
+ "types": "./cjs/Stream/orElse.d.ts"
1333
+ },
1334
+ "import": {
1335
+ "default": "./esm/Stream/orElse.js",
1336
+ "types": "./esm/Stream/orElse.d.ts"
1337
+ }
1338
+ },
1279
1339
  "./Stream/periodic": {
1280
1340
  "require": {
1281
1341
  "default": "./cjs/Stream/periodic.js",
@@ -1296,6 +1356,16 @@
1296
1356
  "types": "./esm/Stream/run.d.ts"
1297
1357
  }
1298
1358
  },
1359
+ "./Stream/scan": {
1360
+ "require": {
1361
+ "default": "./cjs/Stream/scan.js",
1362
+ "types": "./cjs/Stream/scan.d.ts"
1363
+ },
1364
+ "import": {
1365
+ "default": "./esm/Stream/scan.js",
1366
+ "types": "./esm/Stream/scan.d.ts"
1367
+ }
1368
+ },
1299
1369
  "./Stream/scheduled": {
1300
1370
  "require": {
1301
1371
  "default": "./cjs/Stream/scheduled.js",
@@ -1306,6 +1376,26 @@
1306
1376
  "types": "./esm/Stream/scheduled.d.ts"
1307
1377
  }
1308
1378
  },
1379
+ "./Stream/setFiberRefLocally": {
1380
+ "require": {
1381
+ "default": "./cjs/Stream/setFiberRefLocally.js",
1382
+ "types": "./cjs/Stream/setFiberRefLocally.d.ts"
1383
+ },
1384
+ "import": {
1385
+ "default": "./esm/Stream/setFiberRefLocally.js",
1386
+ "types": "./esm/Stream/setFiberRefLocally.d.ts"
1387
+ }
1388
+ },
1389
+ "./Stream/switchMap": {
1390
+ "require": {
1391
+ "default": "./cjs/Stream/switchMap.js",
1392
+ "types": "./cjs/Stream/switchMap.d.ts"
1393
+ },
1394
+ "import": {
1395
+ "default": "./esm/Stream/switchMap.js",
1396
+ "types": "./esm/Stream/switchMap.d.ts"
1397
+ }
1398
+ },
1309
1399
  "./Stream/tap": {
1310
1400
  "require": {
1311
1401
  "default": "./cjs/Stream/tap.js",
package/readme.md CHANGED
@@ -23,7 +23,7 @@ bundle size, parse time, memory constraints, etc. are of great concern. There wi
23
23
  these metrics, ergonomics, and feature-set. We'll attempt to tread these lines as best we can, but Fx is highly feature-rich
24
24
  as it is, and can be used to build many many more abstractions that are not yet available as 3rd party plugins.
25
25
 
26
- The full library, and its dependencies, are about 20kb minified + gzipped.
26
+ The full library, and its dependencies, are about 30kb minified + gzipped.
27
27
  However, it is provided as ES modules and is highly tree-shakeable. Take only what you need.
28
28
 
29
29
  ## Come Back Soon
@@ -85,6 +85,16 @@ export const traced =
85
85
  <E>(cause: Cause<E>): Cause<E> =>
86
86
  new Traced(cause, trace)
87
87
 
88
+ export const isEmpty = <E>(cause: Cause<E>): cause is Empty => cause.tag === Empty.tag
89
+ export const isInterrupted = <E>(cause: Cause<E>): cause is Interrupted =>
90
+ cause.tag === 'Interrupted'
91
+ export const isUnexpected = <E>(cause: Cause<E>): cause is Unexpected => cause.tag === 'Unexpected'
92
+ export const isExpected = <E>(cause: Cause<E>): cause is Expected<E> => cause.tag === 'Expected'
93
+ export const isSequential = <E>(cause: Cause<E>): cause is Sequential<E, E> =>
94
+ cause.tag === 'Sequential'
95
+ export const isParallel = <E>(cause: Cause<E>): cause is Parallel<E, E> => cause.tag === 'Parallel'
96
+ export const isTraced = <E>(cause: Cause<E>): cause is Traced<E> => cause.tag === 'Traced'
97
+
88
98
  export const makeParallelAssociative = <E>(): Associative.Associative<Cause<E>> => ({
89
99
  concat: (left, right) =>
90
100
  left.tag === Empty.tag ? right : right.tag === Empty.tag ? left : new Parallel(left, right),
@@ -423,3 +433,56 @@ export const makeDebug = <E>(renderer: Renderer<E> = defaultRenderer): D.Debug<C
423
433
  D.Debug((cause) => prettyPrint(cause, renderer))
424
434
 
425
435
  export const Debug = makeDebug()
436
+
437
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
438
+ export const findExpected = find(<E>(_e: E): _e is E => true)
439
+
440
+ export function findType<T extends Cause<any>['tag']>(tag: T) {
441
+ return <E>(cause: Cause<E>): Maybe.Maybe<Cause<E>> => {
442
+ if (cause.tag === tag) {
443
+ return Maybe.Just(cause)
444
+ }
445
+
446
+ if (cause.tag === 'Sequential') {
447
+ return pipe(
448
+ findType(tag)(cause.left),
449
+ Maybe.match(
450
+ () => findType(tag)(cause.right),
451
+ (a) =>
452
+ pipe(
453
+ findType(tag)(cause.right),
454
+ Maybe.match(
455
+ () => Maybe.Just(a),
456
+ (b) => Maybe.Just(sequential(a, b)),
457
+ ),
458
+ ),
459
+ ),
460
+ )
461
+ }
462
+
463
+ if (cause.tag === 'Parallel') {
464
+ return pipe(
465
+ findType(tag)(cause.left),
466
+ Maybe.match(
467
+ () => findType(tag)(cause.right),
468
+ (a) =>
469
+ pipe(
470
+ findType(tag)(cause.right),
471
+ Maybe.match(
472
+ () => Maybe.Just(a),
473
+ (b) => Maybe.Just(parallel(a, b)),
474
+ ),
475
+ ),
476
+ ),
477
+ )
478
+ }
479
+
480
+ if (cause.tag === 'Traced') {
481
+ return findType(tag)(cause.cause)
482
+ }
483
+
484
+ return Maybe.Nothing
485
+ }
486
+ }
487
+
488
+ export const findInterrupted = findType('Interrupted')
@@ -67,7 +67,7 @@ export function renderInterrupted<E>(
67
67
  ): Sequential {
68
68
  return Sequential([
69
69
  Failure([
70
- `Interrupted by Fiber ${FiberIdDebug.debug(cause.fiberId)}.`,
70
+ `Interrupted by ${FiberIdDebug.debug(cause.fiberId)}.`,
71
71
  '',
72
72
  ...renderTrace(trace, renderer),
73
73
  ]),
package/src/Env/Env.ts CHANGED
@@ -9,6 +9,6 @@ export interface Env<R> {
9
9
 
10
10
  export function Env<R>(fiberRefs: FiberRefs.FiberRefs): Env<R> {
11
11
  return {
12
- get: getServiceFromFiberRefs(fiberRefs),
12
+ get: getServiceFromFiberRefs(fiberRefs.fork()),
13
13
  }
14
14
  }
@@ -0,0 +1,19 @@
1
+ import { pipe } from 'hkt-ts'
2
+
3
+ import { Synthetic } from './Fiber.js'
4
+
5
+ import { FiberId } from '@/FiberId/FiberId.js'
6
+ import { Closeable, closeOrWait, wait } from '@/Scope/Closeable.js'
7
+ import { Exit, FiberRefs, Fx } from '@/index.js'
8
+
9
+ export function fromScope(id: FiberId, fiberRefs: FiberRefs.FiberRefs, scope: Closeable) {
10
+ return Synthetic({
11
+ id,
12
+ exit: wait(scope),
13
+ inheritFiberRefs: pipe(
14
+ Fx.getFiberRefs,
15
+ Fx.flatMap((refs) => Fx.fromLazy(() => FiberRefs.join(refs, fiberRefs))),
16
+ ),
17
+ interruptAs: (id) => closeOrWait(scope)(Exit.interrupt(id)),
18
+ })
19
+ }
@@ -61,7 +61,7 @@ export function fork<Id extends FiberId.FiberId = FiberId.Live, Id2 extends Fibe
61
61
  platform: overrides?.platform ?? context.platform.fork(),
62
62
  fiberRefs: overrides?.fiberRefs ?? context.fiberRefs.fork(),
63
63
  scope: overrides?.scope ?? context.scope.fork(),
64
- supervisor: overrides?.supervisor ?? None,
64
+ supervisor: overrides?.supervisor ?? context.supervisor,
65
65
  logger: overrides?.logger ?? context.logger,
66
66
  parent: overrides?.parent ?? Just(context),
67
67
  })
@@ -20,7 +20,7 @@ export const CurrentEnv = make(
20
20
  pipe(
21
21
  Fx.getFiberContext,
22
22
  // Always use a snapshot of the FiberRefs to avoid mutability problems.
23
- Fx.map((c): Env<any> => ({ get: getServiceFromFiberRefs(c.fiberRefs) })),
23
+ Fx.map((c): Env<any> => ({ get: getServiceFromFiberRefs(c.fiberRefs.fork()) })),
24
24
  ),
25
25
  {
26
26
  fork: constant(Nothing), // Always create a new Env for each Fiber.
@@ -55,17 +55,26 @@ export const Layers = FiberRef.make(
55
55
  },
56
56
  )
57
57
 
58
- export const Services = FiberRef.make(Fx.now(ImmutableMap<Service<any>, any>()), {
59
- join: identity, // Always keep the parent Fiber's services
60
- })
58
+ export const Services = FiberRef.make(
59
+ Fx.fromLazy(() => ImmutableMap<Service<any>, any>()),
60
+ {
61
+ join: identity, // Always keep the parent Fiber's services
62
+ },
63
+ )
61
64
 
62
- export const CurrentLogSpans = FiberRef.make(Fx.now(ImmutableMap<string, LogSpan>()), {
63
- join: identity,
64
- })
65
+ export const CurrentLogSpans = FiberRef.make(
66
+ Fx.fromLazy(() => ImmutableMap<string, LogSpan>()),
67
+ {
68
+ join: identity,
69
+ },
70
+ )
65
71
 
66
- export const CurrentLogAnnotations = FiberRef.make(Fx.now(ImmutableMap<string, LogAnnotation>()), {
67
- join: identity,
68
- })
72
+ export const CurrentLogAnnotations = FiberRef.make(
73
+ Fx.fromLazy(() => ImmutableMap<string, LogAnnotation>()),
74
+ {
75
+ join: identity,
76
+ },
77
+ )
69
78
 
70
79
  export function getServiceFromFiberRefs(fiberRefs: FiberRefs.FiberRefs) {
71
80
  return <S>(id: Service<S>): Fx.Of<S> => {
@@ -119,6 +119,11 @@ export class FiberRuntime<F extends Fx.AnyFx>
119
119
  readonly addObserver = (
120
120
  observer: (exit: Exit.Exit<Fx.ErrorsOf<F>, Fx.OutputOf<F>>) => void,
121
121
  ): Disposable => {
122
+ if (this._status.tag === 'Done') {
123
+ const exit = this._status.exit
124
+ return this.setTimer(() => observer(exit))
125
+ }
126
+
122
127
  this._observers.push(observer)
123
128
 
124
129
  return Disposable(() => {
@@ -137,10 +142,7 @@ export class FiberRuntime<F extends Fx.AnyFx>
137
142
  this._disposable.dispose()
138
143
  this._disposable = settable()
139
144
  this._current = Maybe.Just(Fx.interrupted(id).instr)
140
-
141
- if (this._status.tag === 'Suspended') {
142
- this.setTimer(() => this.loop())
143
- }
145
+ this.loop()
144
146
  } else {
145
147
  // Record the interrupting FiberId for if/when the interrupt status becomes true again.
146
148
  this._interruptedBy.add(id)
@@ -207,6 +209,7 @@ export class FiberRuntime<F extends Fx.AnyFx>
207
209
 
208
210
  protected addCustomTrace(trace?: string) {
209
211
  if (trace) {
212
+ this.pushPopFiberRef(Builtin.CurrentTrace, this.getRuntimeTrace())
210
213
  this.pushPopFiberRef(Builtin.CurrentTrace, Trace.Trace.custom(trace))
211
214
  }
212
215
  }
@@ -225,14 +228,8 @@ export class FiberRuntime<F extends Fx.AnyFx>
225
228
  this.withFiberRef(Builtin.CurrentConcurrencyLevel, (semaphore) => {
226
229
  const withConcurrency = acquireFiber(semaphore.value)
227
230
 
228
- const f = new FiberRuntime(
229
- withConcurrency(instr.first),
230
- this.context.fork({ fiberRefs: this.context.fiberRefs }),
231
- )
232
- const s = new FiberRuntime(
233
- withConcurrency(instr.second),
234
- this.context.fork({ fiberRefs: this.context.fiberRefs }),
235
- )
231
+ const f = new FiberRuntime(withConcurrency(instr.first), this.context.fork())
232
+ const s = new FiberRuntime(withConcurrency(instr.second), this.context.fork())
236
233
 
237
234
  const [future, onExit] = bothFuture(f, s)
238
235
 
@@ -247,7 +244,14 @@ export class FiberRuntime<F extends Fx.AnyFx>
247
244
 
248
245
  return pipe(
249
246
  wait(future),
250
- Fx.ensuring(() => Fx.fromLazy(() => inner.dispose())),
247
+ Fx.ensuring(() =>
248
+ Fx.fromLazy(() => {
249
+ FiberRefs.join(this.context.fiberRefs, f.context.fiberRefs)
250
+ FiberRefs.join(this.context.fiberRefs, s.context.fiberRefs)
251
+
252
+ inner.dispose()
253
+ }),
254
+ ),
251
255
  )
252
256
  })
253
257
  }
@@ -267,14 +271,8 @@ export class FiberRuntime<F extends Fx.AnyFx>
267
271
  protected processEither(instr: Extract<AnyInstruction, { readonly tag: 'Either' }>) {
268
272
  this.withFiberRef(Builtin.CurrentConcurrencyLevel, (semaphore) => {
269
273
  const withConcurrency = acquireFiber(semaphore.value)
270
- const f = new FiberRuntime(
271
- withConcurrency(instr.first),
272
- this.context.fork({ fiberRefs: this.context.fiberRefs }),
273
- )
274
- const s = new FiberRuntime(
275
- withConcurrency(instr.second),
276
- this.context.fork({ fiberRefs: this.context.fiberRefs }),
277
- )
274
+ const f = new FiberRuntime(withConcurrency(instr.first), this.context.fork())
275
+ const s = new FiberRuntime(withConcurrency(instr.second), this.context.fork())
278
276
 
279
277
  const inner = settable()
280
278
  const future = Pending<never, any, any>()
@@ -283,10 +281,19 @@ export class FiberRuntime<F extends Fx.AnyFx>
283
281
  pipe(
284
282
  Fx.fromExit(exit),
285
283
  Fx.ensuring(() =>
286
- index === 0 ? s.interruptAs(f.context.id) : f.interruptAs(s.context.id),
284
+ index === 0
285
+ ? pipe(
286
+ s.interruptAs(f.context.id),
287
+ Fx.tapLazy(() => FiberRefs.join(this.context.fiberRefs, f.context.fiberRefs)),
288
+ )
289
+ : pipe(
290
+ f.interruptAs(s.context.id),
291
+ Fx.tapLazy(() => FiberRefs.join(this.context.fiberRefs, s.context.fiberRefs)),
292
+ ),
287
293
  ),
288
294
  ),
289
295
  )
296
+
290
297
  inner.dispose()
291
298
  }
292
299
 
@@ -335,9 +342,9 @@ export class FiberRuntime<F extends Fx.AnyFx>
335
342
  }
336
343
 
337
344
  protected processFromCause(instr: Extract<AnyInstruction, { readonly tag: 'FromCause' }>) {
338
- if (instr.cause.tag === 'Interrupted' && this._children.length > 0) {
339
- const fiberId = instr.cause.fiberId
340
- const interrupts = this._children.map((c) => c.interruptAs(fiberId))
345
+ const interruptedCause = Cause.findInterrupted(instr.cause)
346
+ if (Maybe.isJust(interruptedCause) && this._children.length > 0) {
347
+ const interrupts = this._children.map((c) => c.interruptAs(this.id))
341
348
  this._children = []
342
349
 
343
350
  // Cancel all Child Fibers and then continue with the Cause