@typed/fx 0.0.3 → 0.0.4

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 (643) hide show
  1. package/.eslintcache +1 -1
  2. package/.tracing-plugin/plugin.cjs +30 -0
  3. package/.tracing-plugin/plugin.d.ts.map +1 -1
  4. package/.tracing-plugin/plugin.js.map +1 -1
  5. package/cjs/Atomic/Atomic.d.ts +2 -2
  6. package/cjs/Atomic/Atomic.d.ts.map +1 -1
  7. package/cjs/Atomic/Atomic.js +1 -1
  8. package/cjs/Atomic/Atomic.js.map +1 -1
  9. package/cjs/Effect/Effect.d.ts +199 -0
  10. package/cjs/Effect/Effect.d.ts.map +1 -0
  11. package/cjs/Effect/Effect.js +66 -0
  12. package/cjs/Effect/Effect.js.map +1 -0
  13. package/cjs/Env/Env.d.ts.map +1 -1
  14. package/cjs/Env/Env.js +2 -55
  15. package/cjs/Env/Env.js.map +1 -1
  16. package/cjs/Exit/hkt.d.ts +11 -1
  17. package/cjs/Exit/hkt.d.ts.map +1 -1
  18. package/cjs/Exit/hkt.js +9 -3
  19. package/cjs/Exit/hkt.js.map +1 -1
  20. package/cjs/Fiber/Fiber.d.ts +8 -8
  21. package/cjs/Fiber/Fiber.d.ts.map +1 -1
  22. package/cjs/Fiber/Fiber.js +2 -9
  23. package/cjs/Fiber/Fiber.js.map +1 -1
  24. package/cjs/Fiber/fromExit.d.ts +4 -0
  25. package/cjs/Fiber/fromExit.d.ts.map +1 -0
  26. package/cjs/Fiber/fromExit.js +16 -0
  27. package/cjs/Fiber/fromExit.js.map +1 -0
  28. package/cjs/Fiber/hkt.d.ts +40 -0
  29. package/cjs/Fiber/hkt.d.ts.map +1 -0
  30. package/cjs/Fiber/hkt.js +101 -0
  31. package/cjs/Fiber/hkt.js.map +1 -0
  32. package/cjs/Fiber/index.d.ts +1 -0
  33. package/cjs/Fiber/index.d.ts.map +1 -1
  34. package/cjs/Fiber/index.js +1 -0
  35. package/cjs/Fiber/index.js.map +1 -1
  36. package/cjs/FiberContext/FiberContext.d.ts +5 -7
  37. package/cjs/FiberContext/FiberContext.d.ts.map +1 -1
  38. package/cjs/FiberContext/FiberContext.js +3 -5
  39. package/cjs/FiberContext/FiberContext.js.map +1 -1
  40. package/cjs/FiberId/FiberId.d.ts +1 -1
  41. package/cjs/FiberId/FiberId.d.ts.map +1 -1
  42. package/cjs/FiberRef/FiberRef.d.ts +2 -18
  43. package/cjs/FiberRef/FiberRef.d.ts.map +1 -1
  44. package/cjs/FiberRef/FiberRef.js +1 -34
  45. package/cjs/FiberRef/FiberRef.js.map +1 -1
  46. package/cjs/FiberRef/builtins.d.ts +22 -0
  47. package/cjs/FiberRef/builtins.d.ts.map +1 -0
  48. package/cjs/FiberRef/builtins.js +94 -0
  49. package/cjs/FiberRef/builtins.js.map +1 -0
  50. package/cjs/FiberRef/index.d.ts.map +1 -1
  51. package/cjs/FiberRef/index.js +0 -1
  52. package/cjs/FiberRef/index.js.map +1 -1
  53. package/cjs/FiberRefs/FiberRefs.d.ts +3 -1
  54. package/cjs/FiberRefs/FiberRefs.d.ts.map +1 -1
  55. package/cjs/FiberRefs/FiberRefs.js +5 -18
  56. package/cjs/FiberRefs/FiberRefs.js.map +1 -1
  57. package/cjs/FiberRuntime/FiberRuntime.d.ts +14 -14
  58. package/cjs/FiberRuntime/FiberRuntime.d.ts.map +1 -1
  59. package/cjs/FiberRuntime/FiberRuntime.js +159 -152
  60. package/cjs/FiberRuntime/FiberRuntime.js.map +1 -1
  61. package/cjs/Fx/Fx.d.ts +13 -12
  62. package/cjs/Fx/Fx.d.ts.map +1 -1
  63. package/cjs/Fx/Fx.js +52 -37
  64. package/cjs/Fx/Fx.js.map +1 -1
  65. package/cjs/Fx/Instruction.d.ts +33 -35
  66. package/cjs/Fx/Instruction.d.ts.map +1 -1
  67. package/cjs/Fx/Instruction.js +44 -26
  68. package/cjs/Fx/Instruction.js.map +1 -1
  69. package/cjs/Fx/fromLayer.d.ts +5 -0
  70. package/cjs/Fx/fromLayer.d.ts.map +1 -0
  71. package/cjs/Fx/fromLayer.js +33 -0
  72. package/cjs/Fx/fromLayer.js.map +1 -0
  73. package/cjs/Fx/index.d.ts +1 -0
  74. package/cjs/Fx/index.d.ts.map +1 -1
  75. package/cjs/Fx/index.js +1 -0
  76. package/cjs/Fx/index.js.map +1 -1
  77. package/cjs/Fx/join.d.ts +8 -2
  78. package/cjs/Fx/join.d.ts.map +1 -1
  79. package/cjs/Fx/join.js +9 -10
  80. package/cjs/Fx/join.js.map +1 -1
  81. package/cjs/Fx/logging.d.ts.map +1 -1
  82. package/cjs/Fx/logging.js +5 -4
  83. package/cjs/Fx/logging.js.map +1 -1
  84. package/cjs/Fx/run.d.ts +7 -2
  85. package/cjs/Fx/run.d.ts.map +1 -1
  86. package/cjs/Fx/run.js +9 -4
  87. package/cjs/Fx/run.js.map +1 -1
  88. package/cjs/Fx/scheduler.js +1 -1
  89. package/cjs/Fx/scheduler.js.map +1 -1
  90. package/cjs/Fx/scoped.d.ts +5 -5
  91. package/cjs/Fx/scoped.d.ts.map +1 -1
  92. package/cjs/Fx/scoped.js +30 -20
  93. package/cjs/Fx/scoped.js.map +1 -1
  94. package/cjs/Layer/Layer.d.ts +1 -0
  95. package/cjs/Layer/Layer.d.ts.map +1 -1
  96. package/cjs/Layer/Layer.js +7 -1
  97. package/cjs/Layer/Layer.js.map +1 -1
  98. package/cjs/Logger/Console.d.ts.map +1 -1
  99. package/cjs/Logger/Console.js +45 -17
  100. package/cjs/Logger/Console.js.map +1 -1
  101. package/cjs/Logger/Logger.d.ts +2 -1
  102. package/cjs/Logger/Logger.d.ts.map +1 -1
  103. package/cjs/Logger/Logger.js +2 -2
  104. package/cjs/Logger/Logger.js.map +1 -1
  105. package/cjs/Node/Runtime.d.ts +9 -0
  106. package/cjs/Node/Runtime.d.ts.map +1 -0
  107. package/cjs/Node/Runtime.js +20 -0
  108. package/cjs/Node/Runtime.js.map +1 -0
  109. package/cjs/Node/gracefulShutdown.d.ts +5 -0
  110. package/cjs/Node/gracefulShutdown.d.ts.map +1 -0
  111. package/cjs/Node/gracefulShutdown.js +66 -0
  112. package/cjs/Node/gracefulShutdown.js.map +1 -0
  113. package/cjs/Node/index.d.ts +3 -0
  114. package/cjs/Node/index.d.ts.map +1 -0
  115. package/cjs/{Ref → Node}/index.js +2 -2
  116. package/cjs/Node/index.js.map +1 -0
  117. package/cjs/Platform/Platform.d.ts +4 -2
  118. package/cjs/Platform/Platform.d.ts.map +1 -1
  119. package/cjs/Platform/Platform.js +5 -3
  120. package/cjs/Platform/Platform.js.map +1 -1
  121. package/cjs/Runtime/Runtime.d.ts +4 -4
  122. package/cjs/Runtime/Runtime.d.ts.map +1 -1
  123. package/cjs/Runtime/Runtime.js +1 -1
  124. package/cjs/Runtime/Runtime.js.map +1 -1
  125. package/cjs/Scheduler/RootScheduler.d.ts.map +1 -1
  126. package/cjs/Scheduler/RootScheduler.js +9 -8
  127. package/cjs/Scheduler/RootScheduler.js.map +1 -1
  128. package/cjs/Scheduler/Scheduler.d.ts +3 -2
  129. package/cjs/Scheduler/Scheduler.d.ts.map +1 -1
  130. package/cjs/Scheduler/Scheduler.js.map +1 -1
  131. package/cjs/Scheduler/index.d.ts +2 -0
  132. package/cjs/Scheduler/index.d.ts.map +1 -1
  133. package/cjs/Scheduler/index.js +17 -0
  134. package/cjs/Scheduler/index.js.map +1 -1
  135. package/cjs/Scheduler/{scheduled.d.ts → runSchedule.d.ts} +2 -2
  136. package/cjs/Scheduler/runSchedule.d.ts.map +1 -0
  137. package/cjs/Scheduler/{scheduled.js → runSchedule.js} +5 -5
  138. package/cjs/Scheduler/runSchedule.js.map +1 -0
  139. package/cjs/Scope/LocalScope.d.ts.map +1 -1
  140. package/cjs/Scope/LocalScope.js +4 -10
  141. package/cjs/Scope/LocalScope.js.map +1 -1
  142. package/cjs/Scope/ReleaseMap.d.ts +3 -3
  143. package/cjs/Scope/ReleaseMap.d.ts.map +1 -1
  144. package/cjs/Scope/ReleaseMap.js +45 -8
  145. package/cjs/Scope/ReleaseMap.js.map +1 -1
  146. package/cjs/Semaphore/Semaphore.d.ts +2 -1
  147. package/cjs/Semaphore/Semaphore.d.ts.map +1 -1
  148. package/cjs/Semaphore/Semaphore.js +14 -23
  149. package/cjs/Semaphore/Semaphore.js.map +1 -1
  150. package/cjs/Service/Id.d.ts +12 -1
  151. package/cjs/Service/Id.d.ts.map +1 -1
  152. package/cjs/Service/Id.js +11 -1
  153. package/cjs/Service/Id.js.map +1 -1
  154. package/cjs/Service/fn.d.ts +47 -0
  155. package/cjs/Service/fn.d.ts.map +1 -0
  156. package/cjs/Service/fn.js +19 -0
  157. package/cjs/Service/fn.js.map +1 -0
  158. package/cjs/Service/index.d.ts +1 -0
  159. package/cjs/Service/index.d.ts.map +1 -1
  160. package/cjs/Service/index.js +1 -0
  161. package/cjs/Service/index.js.map +1 -1
  162. package/cjs/Service/tagged.d.ts +10 -2
  163. package/cjs/Service/tagged.d.ts.map +1 -1
  164. package/cjs/Sink/Sink.d.ts +5 -5
  165. package/cjs/Sink/Sink.d.ts.map +1 -1
  166. package/cjs/Sink/Sink.js +11 -7
  167. package/cjs/Sink/Sink.js.map +1 -1
  168. package/cjs/Stream/Stream.d.ts +39 -6
  169. package/cjs/Stream/Stream.d.ts.map +1 -1
  170. package/cjs/Stream/Stream.js.map +1 -1
  171. package/cjs/Stream/bimap.d.ts +15 -0
  172. package/cjs/Stream/bimap.d.ts.map +1 -0
  173. package/cjs/Stream/bimap.js +74 -0
  174. package/cjs/Stream/bimap.js.map +1 -0
  175. package/cjs/Stream/continueWith.d.ts +27 -0
  176. package/cjs/Stream/continueWith.d.ts.map +1 -0
  177. package/cjs/Stream/continueWith.js +66 -0
  178. package/cjs/Stream/continueWith.js.map +1 -0
  179. package/cjs/Stream/drain.d.ts +3 -2
  180. package/cjs/Stream/drain.d.ts.map +1 -1
  181. package/cjs/Stream/drain.js +6 -6
  182. package/cjs/Stream/drain.js.map +1 -1
  183. package/cjs/Stream/empty.d.ts +3 -0
  184. package/cjs/Stream/empty.d.ts.map +1 -0
  185. package/cjs/Stream/empty.js +31 -0
  186. package/cjs/Stream/empty.js.map +1 -0
  187. package/cjs/Stream/flatMap.d.ts +15 -0
  188. package/cjs/Stream/flatMap.d.ts.map +1 -0
  189. package/cjs/Stream/flatMap.js +102 -0
  190. package/cjs/Stream/flatMap.js.map +1 -0
  191. package/cjs/Stream/flatMapFx.d.ts +4 -0
  192. package/cjs/Stream/flatMapFx.d.ts.map +1 -0
  193. package/cjs/Stream/flatMapFx.js +11 -0
  194. package/cjs/Stream/flatMapFx.js.map +1 -0
  195. package/cjs/Stream/fromCallback.d.ts +21 -0
  196. package/cjs/Stream/fromCallback.d.ts.map +1 -0
  197. package/cjs/Stream/fromCallback.js +65 -0
  198. package/cjs/Stream/fromCallback.js.map +1 -0
  199. package/cjs/Stream/fromFx.d.ts +12 -1
  200. package/cjs/Stream/fromFx.d.ts.map +1 -1
  201. package/cjs/Stream/fromFx.js +18 -4
  202. package/cjs/Stream/fromFx.js.map +1 -1
  203. package/cjs/Stream/hkt.d.ts +15 -0
  204. package/cjs/Stream/hkt.d.ts.map +1 -0
  205. package/cjs/Stream/hkt.js +42 -0
  206. package/cjs/Stream/hkt.js.map +1 -0
  207. package/cjs/Stream/index.d.ts +11 -0
  208. package/cjs/Stream/index.d.ts.map +1 -1
  209. package/cjs/Stream/index.js +11 -0
  210. package/cjs/Stream/index.js.map +1 -1
  211. package/cjs/Stream/map.d.ts +14 -0
  212. package/cjs/Stream/map.d.ts.map +1 -0
  213. package/cjs/Stream/map.js +30 -0
  214. package/cjs/Stream/map.js.map +1 -0
  215. package/cjs/Stream/periodic.d.ts +4 -0
  216. package/cjs/Stream/periodic.d.ts.map +1 -0
  217. package/cjs/Stream/periodic.js +32 -0
  218. package/cjs/Stream/periodic.js.map +1 -0
  219. package/cjs/Stream/run.d.ts +6 -0
  220. package/cjs/Stream/run.d.ts.map +1 -0
  221. package/cjs/{Ref/Ref.js → Stream/run.js} +10 -30
  222. package/cjs/Stream/run.js.map +1 -0
  223. package/cjs/Stream/scheduled.d.ts +5 -0
  224. package/cjs/Stream/scheduled.d.ts.map +1 -0
  225. package/cjs/Stream/scheduled.js +34 -0
  226. package/cjs/Stream/scheduled.js.map +1 -0
  227. package/cjs/Stream/tap.d.ts +4 -0
  228. package/cjs/Stream/tap.d.ts.map +1 -0
  229. package/cjs/Stream/tap.js +9 -0
  230. package/cjs/Stream/tap.js.map +1 -0
  231. package/cjs/Supervisor/Supervisor.d.ts +507 -0
  232. package/cjs/Supervisor/Supervisor.d.ts.map +1 -1
  233. package/cjs/Supervisor/Supervisor.js +2 -1
  234. package/cjs/Supervisor/Supervisor.js.map +1 -1
  235. package/cjs/Supervisor/index.d.ts +1 -0
  236. package/cjs/Supervisor/index.d.ts.map +1 -1
  237. package/cjs/Supervisor/index.js +1 -0
  238. package/cjs/Supervisor/index.js.map +1 -1
  239. package/cjs/Supervisor/maxFailures.d.ts +18 -0
  240. package/cjs/Supervisor/maxFailures.d.ts.map +1 -0
  241. package/cjs/Supervisor/maxFailures.js +72 -0
  242. package/cjs/Supervisor/maxFailures.js.map +1 -0
  243. package/cjs/Supervisor/trackIn.d.ts +6 -0
  244. package/cjs/Supervisor/trackIn.d.ts.map +1 -0
  245. package/cjs/Supervisor/trackIn.js +16 -0
  246. package/cjs/Supervisor/trackIn.js.map +1 -0
  247. package/cjs/Trace/Trace.d.ts +1 -1
  248. package/cjs/Trace/Trace.d.ts.map +1 -1
  249. package/cjs/Trace/Trace.js +8 -35
  250. package/cjs/Trace/Trace.js.map +1 -1
  251. package/cjs/Tracing/plugin.d.ts.map +1 -1
  252. package/cjs/Tracing/plugin.js +30 -0
  253. package/cjs/Tracing/plugin.js.map +1 -1
  254. package/cjs/_internal/suite.d.ts +12 -0
  255. package/cjs/_internal/suite.d.ts.map +1 -0
  256. package/cjs/_internal/suite.js +13 -0
  257. package/cjs/_internal/suite.js.map +1 -0
  258. package/cjs/index.d.ts +3 -1
  259. package/cjs/index.d.ts.map +1 -1
  260. package/cjs/index.js +4 -2
  261. package/cjs/index.js.map +1 -1
  262. package/coverage/tmp/coverage-14409-1663382601663-0.json +1 -0
  263. package/coverage/tmp/coverage-14414-1663382601571-0.json +1 -0
  264. package/coverage/tmp/coverage-14432-1663382601494-0.json +1 -0
  265. package/esm/Atomic/Atomic.d.ts +2 -2
  266. package/esm/Atomic/Atomic.d.ts.map +1 -1
  267. package/esm/Atomic/Atomic.js +1 -1
  268. package/esm/Atomic/Atomic.js.map +1 -1
  269. package/esm/Effect/Effect.d.ts +199 -0
  270. package/esm/Effect/Effect.d.ts.map +1 -0
  271. package/esm/Effect/Effect.js +50 -0
  272. package/esm/Effect/Effect.js.map +1 -0
  273. package/esm/Env/Env.d.ts.map +1 -1
  274. package/esm/Env/Env.js +2 -32
  275. package/esm/Env/Env.js.map +1 -1
  276. package/esm/Exit/hkt.d.ts +11 -1
  277. package/esm/Exit/hkt.d.ts.map +1 -1
  278. package/esm/Exit/hkt.js +9 -3
  279. package/esm/Exit/hkt.js.map +1 -1
  280. package/esm/Fiber/Fiber.d.ts +8 -8
  281. package/esm/Fiber/Fiber.d.ts.map +1 -1
  282. package/esm/Fiber/Fiber.js +3 -10
  283. package/esm/Fiber/Fiber.js.map +1 -1
  284. package/esm/Fiber/fromExit.d.ts +4 -0
  285. package/esm/Fiber/fromExit.d.ts.map +1 -0
  286. package/esm/Fiber/fromExit.js +12 -0
  287. package/esm/Fiber/fromExit.js.map +1 -0
  288. package/esm/Fiber/hkt.d.ts +40 -0
  289. package/esm/Fiber/hkt.d.ts.map +1 -0
  290. package/esm/Fiber/hkt.js +75 -0
  291. package/esm/Fiber/hkt.js.map +1 -0
  292. package/esm/Fiber/index.d.ts +1 -0
  293. package/esm/Fiber/index.d.ts.map +1 -1
  294. package/esm/Fiber/index.js +1 -0
  295. package/esm/Fiber/index.js.map +1 -1
  296. package/esm/FiberContext/FiberContext.d.ts +5 -7
  297. package/esm/FiberContext/FiberContext.d.ts.map +1 -1
  298. package/esm/FiberContext/FiberContext.js +3 -5
  299. package/esm/FiberContext/FiberContext.js.map +1 -1
  300. package/esm/FiberId/FiberId.d.ts +1 -1
  301. package/esm/FiberId/FiberId.d.ts.map +1 -1
  302. package/esm/FiberRef/FiberRef.d.ts +2 -18
  303. package/esm/FiberRef/FiberRef.d.ts.map +1 -1
  304. package/esm/FiberRef/FiberRef.js +1 -34
  305. package/esm/FiberRef/FiberRef.js.map +1 -1
  306. package/esm/FiberRef/builtins.d.ts +22 -0
  307. package/esm/FiberRef/builtins.d.ts.map +1 -0
  308. package/esm/FiberRef/builtins.js +67 -0
  309. package/esm/FiberRef/builtins.js.map +1 -0
  310. package/esm/FiberRef/index.d.ts.map +1 -1
  311. package/esm/FiberRef/index.js +0 -1
  312. package/esm/FiberRef/index.js.map +1 -1
  313. package/esm/FiberRefs/FiberRefs.d.ts +3 -1
  314. package/esm/FiberRefs/FiberRefs.d.ts.map +1 -1
  315. package/esm/FiberRefs/FiberRefs.js +5 -18
  316. package/esm/FiberRefs/FiberRefs.js.map +1 -1
  317. package/esm/FiberRuntime/FiberRuntime.d.ts +14 -14
  318. package/esm/FiberRuntime/FiberRuntime.d.ts.map +1 -1
  319. package/esm/FiberRuntime/FiberRuntime.js +160 -153
  320. package/esm/FiberRuntime/FiberRuntime.js.map +1 -1
  321. package/esm/Fx/Fx.d.ts +13 -12
  322. package/esm/Fx/Fx.d.ts.map +1 -1
  323. package/esm/Fx/Fx.js +49 -35
  324. package/esm/Fx/Fx.js.map +1 -1
  325. package/esm/Fx/Instruction.d.ts +33 -35
  326. package/esm/Fx/Instruction.d.ts.map +1 -1
  327. package/esm/Fx/Instruction.js +42 -24
  328. package/esm/Fx/Instruction.js.map +1 -1
  329. package/esm/Fx/fromLayer.d.ts +5 -0
  330. package/esm/Fx/fromLayer.d.ts.map +1 -0
  331. package/esm/Fx/fromLayer.js +6 -0
  332. package/esm/Fx/fromLayer.js.map +1 -0
  333. package/esm/Fx/index.d.ts +1 -0
  334. package/esm/Fx/index.d.ts.map +1 -1
  335. package/esm/Fx/index.js +1 -0
  336. package/esm/Fx/index.js.map +1 -1
  337. package/esm/Fx/join.d.ts +8 -2
  338. package/esm/Fx/join.d.ts.map +1 -1
  339. package/esm/Fx/join.js +6 -10
  340. package/esm/Fx/join.js.map +1 -1
  341. package/esm/Fx/logging.d.ts.map +1 -1
  342. package/esm/Fx/logging.js +3 -2
  343. package/esm/Fx/logging.js.map +1 -1
  344. package/esm/Fx/run.d.ts +7 -2
  345. package/esm/Fx/run.d.ts.map +1 -1
  346. package/esm/Fx/run.js +5 -0
  347. package/esm/Fx/run.js.map +1 -1
  348. package/esm/Fx/scheduler.js +1 -1
  349. package/esm/Fx/scheduler.js.map +1 -1
  350. package/esm/Fx/scoped.d.ts +5 -5
  351. package/esm/Fx/scoped.d.ts.map +1 -1
  352. package/esm/Fx/scoped.js +7 -20
  353. package/esm/Fx/scoped.js.map +1 -1
  354. package/esm/Layer/Layer.d.ts +1 -0
  355. package/esm/Layer/Layer.d.ts.map +1 -1
  356. package/esm/Layer/Layer.js +5 -0
  357. package/esm/Layer/Layer.js.map +1 -1
  358. package/esm/Logger/Console.d.ts.map +1 -1
  359. package/esm/Logger/Console.js +22 -17
  360. package/esm/Logger/Console.js.map +1 -1
  361. package/esm/Logger/Logger.d.ts +2 -1
  362. package/esm/Logger/Logger.d.ts.map +1 -1
  363. package/esm/Logger/Logger.js +2 -2
  364. package/esm/Logger/Logger.js.map +1 -1
  365. package/esm/Node/Runtime.d.ts +9 -0
  366. package/esm/Node/Runtime.d.ts.map +1 -0
  367. package/esm/Node/Runtime.js +17 -0
  368. package/esm/Node/Runtime.js.map +1 -0
  369. package/esm/Node/gracefulShutdown.d.ts +5 -0
  370. package/esm/Node/gracefulShutdown.d.ts.map +1 -0
  371. package/esm/Node/gracefulShutdown.js +36 -0
  372. package/esm/Node/gracefulShutdown.js.map +1 -0
  373. package/esm/Node/index.d.ts +3 -0
  374. package/esm/Node/index.d.ts.map +1 -0
  375. package/esm/Node/index.js +3 -0
  376. package/esm/Node/index.js.map +1 -0
  377. package/esm/Platform/Platform.d.ts +4 -2
  378. package/esm/Platform/Platform.d.ts.map +1 -1
  379. package/esm/Platform/Platform.js +5 -3
  380. package/esm/Platform/Platform.js.map +1 -1
  381. package/esm/Runtime/Runtime.d.ts +4 -4
  382. package/esm/Runtime/Runtime.d.ts.map +1 -1
  383. package/esm/Runtime/Runtime.js +1 -1
  384. package/esm/Runtime/Runtime.js.map +1 -1
  385. package/esm/Scheduler/RootScheduler.d.ts.map +1 -1
  386. package/esm/Scheduler/RootScheduler.js +7 -6
  387. package/esm/Scheduler/RootScheduler.js.map +1 -1
  388. package/esm/Scheduler/Scheduler.d.ts +3 -2
  389. package/esm/Scheduler/Scheduler.d.ts.map +1 -1
  390. package/esm/Scheduler/Scheduler.js.map +1 -1
  391. package/esm/Scheduler/index.d.ts +2 -0
  392. package/esm/Scheduler/index.d.ts.map +1 -1
  393. package/esm/Scheduler/index.js +2 -1
  394. package/esm/Scheduler/index.js.map +1 -1
  395. package/esm/Scheduler/{scheduled.d.ts → runSchedule.d.ts} +2 -2
  396. package/esm/Scheduler/runSchedule.d.ts.map +1 -0
  397. package/esm/Scheduler/{scheduled.js → runSchedule.js} +3 -3
  398. package/esm/Scheduler/runSchedule.js.map +1 -0
  399. package/esm/Scope/LocalScope.d.ts.map +1 -1
  400. package/esm/Scope/LocalScope.js +5 -11
  401. package/esm/Scope/LocalScope.js.map +1 -1
  402. package/esm/Scope/ReleaseMap.d.ts +3 -3
  403. package/esm/Scope/ReleaseMap.d.ts.map +1 -1
  404. package/esm/Scope/ReleaseMap.js +23 -9
  405. package/esm/Scope/ReleaseMap.js.map +1 -1
  406. package/esm/Semaphore/Semaphore.d.ts +2 -1
  407. package/esm/Semaphore/Semaphore.d.ts.map +1 -1
  408. package/esm/Semaphore/Semaphore.js +16 -25
  409. package/esm/Semaphore/Semaphore.js.map +1 -1
  410. package/esm/Service/Id.d.ts +12 -1
  411. package/esm/Service/Id.d.ts.map +1 -1
  412. package/esm/Service/Id.js +12 -2
  413. package/esm/Service/Id.js.map +1 -1
  414. package/esm/Service/fn.d.ts +47 -0
  415. package/esm/Service/fn.d.ts.map +1 -0
  416. package/esm/Service/fn.js +15 -0
  417. package/esm/Service/fn.js.map +1 -0
  418. package/esm/Service/index.d.ts +1 -0
  419. package/esm/Service/index.d.ts.map +1 -1
  420. package/esm/Service/index.js +1 -0
  421. package/esm/Service/index.js.map +1 -1
  422. package/esm/Service/tagged.d.ts +10 -2
  423. package/esm/Service/tagged.d.ts.map +1 -1
  424. package/esm/Sink/Sink.d.ts +5 -5
  425. package/esm/Sink/Sink.d.ts.map +1 -1
  426. package/esm/Sink/Sink.js +12 -8
  427. package/esm/Sink/Sink.js.map +1 -1
  428. package/esm/Stream/Stream.d.ts +39 -6
  429. package/esm/Stream/Stream.d.ts.map +1 -1
  430. package/esm/Stream/Stream.js.map +1 -1
  431. package/esm/Stream/bimap.d.ts +15 -0
  432. package/esm/Stream/bimap.d.ts.map +1 -0
  433. package/esm/Stream/bimap.js +46 -0
  434. package/esm/Stream/bimap.js.map +1 -0
  435. package/esm/Stream/continueWith.d.ts +27 -0
  436. package/esm/Stream/continueWith.d.ts.map +1 -0
  437. package/esm/Stream/continueWith.js +36 -0
  438. package/esm/Stream/continueWith.js.map +1 -0
  439. package/esm/Stream/drain.d.ts +3 -2
  440. package/esm/Stream/drain.d.ts.map +1 -1
  441. package/esm/Stream/drain.js +6 -6
  442. package/esm/Stream/drain.js.map +1 -1
  443. package/esm/Stream/empty.d.ts +3 -0
  444. package/esm/Stream/empty.d.ts.map +1 -0
  445. package/esm/Stream/empty.js +5 -0
  446. package/esm/Stream/empty.js.map +1 -0
  447. package/esm/Stream/flatMap.d.ts +15 -0
  448. package/esm/Stream/flatMap.d.ts.map +1 -0
  449. package/esm/Stream/flatMap.js +74 -0
  450. package/esm/Stream/flatMap.js.map +1 -0
  451. package/esm/Stream/flatMapFx.d.ts +4 -0
  452. package/esm/Stream/flatMapFx.d.ts.map +1 -0
  453. package/esm/Stream/flatMapFx.js +7 -0
  454. package/esm/Stream/flatMapFx.js.map +1 -0
  455. package/esm/Stream/fromCallback.d.ts +21 -0
  456. package/esm/Stream/fromCallback.d.ts.map +1 -0
  457. package/esm/Stream/fromCallback.js +37 -0
  458. package/esm/Stream/fromCallback.js.map +1 -0
  459. package/esm/Stream/fromFx.d.ts +12 -1
  460. package/esm/Stream/fromFx.d.ts.map +1 -1
  461. package/esm/Stream/fromFx.js +16 -2
  462. package/esm/Stream/fromFx.js.map +1 -1
  463. package/esm/Stream/hkt.d.ts +15 -0
  464. package/esm/Stream/hkt.d.ts.map +1 -0
  465. package/esm/Stream/hkt.js +16 -0
  466. package/esm/Stream/hkt.js.map +1 -0
  467. package/esm/Stream/index.d.ts +11 -0
  468. package/esm/Stream/index.d.ts.map +1 -1
  469. package/esm/Stream/index.js +11 -0
  470. package/esm/Stream/index.js.map +1 -1
  471. package/esm/Stream/map.d.ts +14 -0
  472. package/esm/Stream/map.d.ts.map +1 -0
  473. package/esm/Stream/map.js +25 -0
  474. package/esm/Stream/map.js.map +1 -0
  475. package/esm/Stream/periodic.d.ts +4 -0
  476. package/esm/Stream/periodic.d.ts.map +1 -0
  477. package/esm/Stream/periodic.js +5 -0
  478. package/esm/Stream/periodic.js.map +1 -0
  479. package/esm/Stream/run.d.ts +6 -0
  480. package/esm/Stream/run.d.ts.map +1 -0
  481. package/esm/Stream/run.js +9 -0
  482. package/esm/Stream/run.js.map +1 -0
  483. package/esm/Stream/scheduled.d.ts +5 -0
  484. package/esm/Stream/scheduled.d.ts.map +1 -0
  485. package/esm/Stream/scheduled.js +7 -0
  486. package/esm/Stream/scheduled.js.map +1 -0
  487. package/esm/Stream/tap.d.ts +4 -0
  488. package/esm/Stream/tap.d.ts.map +1 -0
  489. package/esm/Stream/tap.js +5 -0
  490. package/esm/Stream/tap.js.map +1 -0
  491. package/esm/Supervisor/Supervisor.d.ts +507 -0
  492. package/esm/Supervisor/Supervisor.d.ts.map +1 -1
  493. package/esm/Supervisor/Supervisor.js +2 -1
  494. package/esm/Supervisor/Supervisor.js.map +1 -1
  495. package/esm/Supervisor/index.d.ts +1 -0
  496. package/esm/Supervisor/index.d.ts.map +1 -1
  497. package/esm/Supervisor/index.js +1 -0
  498. package/esm/Supervisor/index.js.map +1 -1
  499. package/esm/Supervisor/maxFailures.d.ts +18 -0
  500. package/esm/Supervisor/maxFailures.d.ts.map +1 -0
  501. package/esm/Supervisor/maxFailures.js +45 -0
  502. package/esm/Supervisor/maxFailures.js.map +1 -0
  503. package/esm/Supervisor/trackIn.d.ts +6 -0
  504. package/esm/Supervisor/trackIn.d.ts.map +1 -0
  505. package/esm/Supervisor/trackIn.js +12 -0
  506. package/esm/Supervisor/trackIn.js.map +1 -0
  507. package/esm/Trace/Trace.d.ts +1 -1
  508. package/esm/Trace/Trace.d.ts.map +1 -1
  509. package/esm/Trace/Trace.js +8 -35
  510. package/esm/Trace/Trace.js.map +1 -1
  511. package/esm/Tracing/plugin.d.ts.map +1 -1
  512. package/esm/Tracing/plugin.js +30 -0
  513. package/esm/Tracing/plugin.js.map +1 -1
  514. package/esm/_internal/suite.d.ts +12 -0
  515. package/esm/_internal/suite.d.ts.map +1 -0
  516. package/esm/_internal/suite.js +8 -0
  517. package/esm/_internal/suite.js.map +1 -0
  518. package/esm/index.d.ts +3 -1
  519. package/esm/index.d.ts.map +1 -1
  520. package/esm/index.js +6 -2
  521. package/esm/index.js.map +1 -1
  522. package/package.json +269 -38
  523. package/readme.md +1 -2
  524. package/src/Atomic/Atomic.test.ts +33 -0
  525. package/src/Atomic/Atomic.ts +3 -3
  526. package/src/Effect/Effect.ts +109 -0
  527. package/src/Env/Env.ts +3 -51
  528. package/src/Exit/hkt.ts +18 -3
  529. package/src/Fiber/Fiber.ts +17 -16
  530. package/src/Fiber/fromExit.ts +14 -0
  531. package/src/Fiber/hkt.ts +125 -0
  532. package/src/Fiber/index.ts +1 -0
  533. package/src/FiberContext/FiberContext.ts +17 -16
  534. package/src/FiberId/FiberId.ts +1 -1
  535. package/src/FiberRef/FiberRef.ts +3 -63
  536. package/src/FiberRef/builtins.ts +114 -0
  537. package/src/FiberRef/index.ts +0 -1
  538. package/src/FiberRefs/FiberRefs.ts +11 -26
  539. package/src/FiberRuntime/FiberRuntime.ts +263 -245
  540. package/src/Fx/Fx.test.ts +52 -31
  541. package/src/Fx/Fx.ts +58 -34
  542. package/src/Fx/Instruction.ts +103 -60
  543. package/src/Fx/fromLayer.ts +8 -0
  544. package/src/Fx/index.ts +1 -0
  545. package/src/Fx/join.ts +23 -10
  546. package/src/Fx/logging.ts +5 -2
  547. package/src/Fx/run.ts +7 -1
  548. package/src/Fx/scheduler.ts +1 -1
  549. package/src/Fx/scoped.ts +35 -46
  550. package/src/Layer/Layer.ts +11 -5
  551. package/src/Logger/Console.test.ts +9 -5
  552. package/src/Logger/Console.ts +32 -17
  553. package/src/Logger/Logger.ts +4 -2
  554. package/src/Node/Runtime.ts +26 -0
  555. package/src/Node/gracefulShutdown.ts +54 -0
  556. package/src/Node/index.ts +2 -0
  557. package/src/Platform/Platform.ts +11 -5
  558. package/src/Runtime/Runtime.ts +7 -5
  559. package/src/Scheduler/RootScheduler.ts +18 -10
  560. package/src/Scheduler/Scheduler.ts +12 -5
  561. package/src/Scheduler/index.ts +2 -0
  562. package/src/Scheduler/{scheduled.ts → runSchedule.ts} +1 -1
  563. package/src/Scope/Closeable.test.ts +5 -1
  564. package/src/Scope/LocalScope.ts +13 -12
  565. package/src/Scope/ReleaseMap.ts +27 -9
  566. package/src/Semaphore/Semaphore.ts +28 -29
  567. package/src/Service/Id.ts +34 -2
  568. package/src/Service/fn.ts +41 -0
  569. package/src/Service/index.ts +1 -0
  570. package/src/Sink/Sink.ts +35 -21
  571. package/src/Stream/Stream.ts +43 -7
  572. package/src/Stream/_internal.test.ts +12 -0
  573. package/src/Stream/bimap.ts +59 -0
  574. package/src/Stream/continueWith.test.ts +23 -0
  575. package/src/Stream/continueWith.ts +65 -0
  576. package/src/Stream/drain.ts +15 -29
  577. package/src/Stream/empty.ts +8 -0
  578. package/src/Stream/flatMap.test.ts +43 -0
  579. package/src/Stream/flatMap.ts +102 -0
  580. package/src/Stream/flatMapFx.ts +12 -0
  581. package/src/Stream/fromCallback.test.ts +35 -0
  582. package/src/Stream/fromCallback.ts +65 -0
  583. package/src/Stream/fromFx.test.ts +3 -4
  584. package/src/Stream/fromFx.ts +34 -16
  585. package/src/Stream/hkt.ts +36 -0
  586. package/src/Stream/index.ts +11 -0
  587. package/src/Stream/logging.test.ts +24 -0
  588. package/src/Stream/map.ts +35 -0
  589. package/src/Stream/periodic.ts +9 -0
  590. package/src/Stream/run.ts +14 -0
  591. package/src/Stream/scheduled.test.ts +34 -0
  592. package/src/Stream/scheduled.ts +21 -0
  593. package/src/Stream/tap.ts +21 -0
  594. package/src/Supervisor/Supervisor.ts +14 -0
  595. package/src/Supervisor/index.ts +1 -0
  596. package/src/Supervisor/maxFailures.ts +86 -0
  597. package/src/Supervisor/trackIn.ts +33 -0
  598. package/src/Trace/Trace.ts +11 -45
  599. package/src/Tracing/plugin.ts +44 -0
  600. package/src/_internal/suite.ts +24 -0
  601. package/src/index.ts +3 -1
  602. package/cjs/Ref/Ref.d.ts +0 -40
  603. package/cjs/Ref/Ref.d.ts.map +0 -1
  604. package/cjs/Ref/Ref.js.map +0 -1
  605. package/cjs/Ref/atomic.d.ts +0 -5
  606. package/cjs/Ref/atomic.d.ts.map +0 -1
  607. package/cjs/Ref/atomic.js +0 -20
  608. package/cjs/Ref/atomic.js.map +0 -1
  609. package/cjs/Ref/index.d.ts +0 -3
  610. package/cjs/Ref/index.d.ts.map +0 -1
  611. package/cjs/Ref/index.js.map +0 -1
  612. package/cjs/Scheduler/scheduled.d.ts.map +0 -1
  613. package/cjs/Scheduler/scheduled.js.map +0 -1
  614. package/cjs/internal.d.ts +0 -18
  615. package/cjs/internal.d.ts.map +0 -1
  616. package/cjs/internal.js +0 -3
  617. package/cjs/internal.js.map +0 -1
  618. package/coverage/tmp/coverage-74826-1660784295157-0.json +0 -1
  619. package/coverage/tmp/coverage-74830-1660784295115-0.json +0 -1
  620. package/coverage/tmp/coverage-74836-1660784295074-0.json +0 -1
  621. package/esm/Ref/Ref.d.ts +0 -40
  622. package/esm/Ref/Ref.d.ts.map +0 -1
  623. package/esm/Ref/Ref.js +0 -30
  624. package/esm/Ref/Ref.js.map +0 -1
  625. package/esm/Ref/atomic.d.ts +0 -5
  626. package/esm/Ref/atomic.d.ts.map +0 -1
  627. package/esm/Ref/atomic.js +0 -16
  628. package/esm/Ref/atomic.js.map +0 -1
  629. package/esm/Ref/index.d.ts +0 -3
  630. package/esm/Ref/index.d.ts.map +0 -1
  631. package/esm/Ref/index.js +0 -3
  632. package/esm/Ref/index.js.map +0 -1
  633. package/esm/Scheduler/scheduled.d.ts.map +0 -1
  634. package/esm/Scheduler/scheduled.js.map +0 -1
  635. package/esm/internal.d.ts +0 -18
  636. package/esm/internal.d.ts.map +0 -1
  637. package/esm/internal.js +0 -2
  638. package/esm/internal.js.map +0 -1
  639. package/src/Ref/Ref.test.ts +0 -34
  640. package/src/Ref/Ref.ts +0 -76
  641. package/src/Ref/atomic.ts +0 -33
  642. package/src/Ref/index.ts +0 -2
  643. package/src/internal.ts +0 -33
package/src/Fx/Fx.test.ts CHANGED
@@ -2,27 +2,32 @@ import { deepStrictEqual } from 'assert'
2
2
 
3
3
  import { pipe } from 'hkt-ts/function'
4
4
 
5
- import { Fx, IO, Of, access, flatMap, map, now } from './Fx.js'
5
+ import * as Fx from './Fx.js'
6
+ import { runMain, runMainFiber } from './run.js'
6
7
 
7
- import { CauseError } from '@/Cause/CauseError.js'
8
+ import { FiberId } from '@/FiberId/FiberId.js'
8
9
  import { FiberRuntime } from '@/FiberRuntime/FiberRuntime.js'
10
+ import { RootScheduler } from '@/Scheduler/RootScheduler.js'
11
+ import { Scheduler } from '@/Scheduler/Scheduler.js'
12
+ import { Delay } from '@/Time/index.js'
13
+ import { Exit, sleep } from '@/index.js'
9
14
 
10
15
  describe(new URL(import.meta.url).pathname, () => {
11
- describe(Fx.name, () => {
16
+ describe(Fx.Fx.name, () => {
12
17
  describe('Sync', () => {
13
18
  it('allows running sync effects', async () => {
14
19
  const value = Math.random()
15
- const test = now(value)
20
+ const test = Fx.now(value)
16
21
 
17
- deepStrictEqual(await runTest(test), value)
22
+ deepStrictEqual(await runMain(test), value)
18
23
  })
19
24
 
20
25
  it('allows using try/catch locally', async () => {
21
26
  const error = new Error('foo')
22
27
  const value = Math.random()
23
- const test = access(() =>
28
+ const test = Fx.access(() =>
24
29
  // eslint-disable-next-line require-yield
25
- Fx(function* () {
30
+ Fx.Fx(function* () {
26
31
  try {
27
32
  throw new Error('foo')
28
33
  } catch (e) {
@@ -33,17 +38,17 @@ describe(new URL(import.meta.url).pathname, () => {
33
38
  }),
34
39
  )
35
40
 
36
- deepStrictEqual(await runTest(test), value)
41
+ deepStrictEqual(await runMain(test), value)
37
42
  })
38
43
 
39
44
  it('allows using try/catch within nested Fx', async () => {
40
45
  const error = new Error('foo')
41
46
  const value = Math.random()
42
- const test = Fx(function* () {
47
+ const test = Fx.Fx(function* () {
43
48
  try {
44
- yield* access(() =>
49
+ yield* Fx.access(() =>
45
50
  // eslint-disable-next-line require-yield
46
- Fx(function* () {
51
+ Fx.Fx(function* () {
47
52
  throw new Error('foo')
48
53
  }),
49
54
  )
@@ -54,38 +59,64 @@ describe(new URL(import.meta.url).pathname, () => {
54
59
  }
55
60
  })
56
61
 
57
- deepStrictEqual(await runTest(test), value)
62
+ deepStrictEqual(await runMain(test), value)
58
63
  })
59
64
  })
60
65
  })
61
66
 
67
+ describe('Interruption', () => {
68
+ it('asynchronous work allows being interrupted', async () => {
69
+ const fiber = runMainFiber(Fx.never)
70
+
71
+ deepStrictEqual(await runMain(fiber.interruptAs(FiberId.None)), Exit.interrupt(FiberId.None))
72
+ })
73
+
74
+ it('allows marking regions as uninterruptable', async () => {
75
+ const value = Math.random()
76
+ const test = pipe(
77
+ sleep(Delay(100)),
78
+ Fx.flatMap(() => Fx.success(value)),
79
+ Fx.provideService(Scheduler, RootScheduler()),
80
+ Fx.uninterruptable,
81
+ )
82
+
83
+ const fiber = new FiberRuntime(test)
84
+ fiber.startSync()
85
+
86
+ deepStrictEqual(await runMain(fiber.interruptAs(FiberId.None)), Exit.success(value))
87
+ })
88
+ })
89
+
62
90
  it('runs Fib', async () => {
63
- const fib = (n: number): Of<number> => {
91
+ const fib = (n: number): Fx.Of<number> => {
64
92
  if (n < 2) {
65
- return now(n)
93
+ return Fx.now(n)
66
94
  }
67
95
 
68
96
  return pipe(
69
97
  fib(n - 1),
70
- flatMap((a) =>
98
+ Fx.flatMap((a) =>
71
99
  pipe(
72
100
  fib(n - 2),
73
- map((b) => a + b),
101
+ Fx.map((b) => a + b),
74
102
  ),
75
103
  ),
76
104
  )
77
105
  }
78
106
 
107
+ console.time('Fx: Fib25 Construction')
108
+ const program = fib(25)
109
+ console.timeEnd('Fx: Fib25 Construction')
79
110
  for (let i = 0; i < 10; i++) {
80
111
  console.time('Fib25')
81
- deepStrictEqual(await runTest(fib(25)), 75025)
112
+ await runMain(program)
82
113
  console.timeEnd('Fib25')
83
114
  }
84
115
  })
85
116
 
86
- it.skip('runs Fib w/ generators', async () => {
87
- const fib = (n: number): Of<number> =>
88
- Fx(function* () {
117
+ it('runs Fib w/ generators', async () => {
118
+ const fib = (n: number): Fx.Of<number> =>
119
+ Fx.Fx(function* () {
89
120
  if (n < 2) {
90
121
  return n
91
122
  }
@@ -94,17 +125,7 @@ describe(new URL(import.meta.url).pathname, () => {
94
125
  })
95
126
 
96
127
  console.time('Fib25')
97
- deepStrictEqual(await runTest(fib(25)), 75025)
128
+ deepStrictEqual(await runMain(fib(25)), 75025)
98
129
  console.timeEnd('Fib25')
99
130
  })
100
131
  })
101
-
102
- export function runTest<E, A>(io: IO<E, A>): Promise<A> {
103
- return new Promise((resolve, reject) => {
104
- const runtime = new FiberRuntime(io)
105
- runtime.addObserver((exit) =>
106
- exit.tag === 'Right' ? resolve(exit.right) : reject(new CauseError(exit.left)),
107
- )
108
- runtime.startSync()
109
- })
110
- }
package/src/Fx/Fx.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { HKT3, Lazy, Params, Variance, constant, flow, identity, pipe } from 'hkt-ts'
2
2
  import * as Either from 'hkt-ts/Either'
3
- import { Maybe } from 'hkt-ts/Maybe'
3
+ import * as Maybe from 'hkt-ts/Maybe'
4
4
  import { ReadonlyRecord } from 'hkt-ts/Record'
5
5
  import * as AB from 'hkt-ts/Typeclass/AssociativeBoth'
6
6
  import * as AE from 'hkt-ts/Typeclass/AssociativeEither'
@@ -16,7 +16,6 @@ import { Unary } from 'hkt-ts/Unary'
16
16
  import { NonNegativeInteger } from 'hkt-ts/number'
17
17
 
18
18
  import {
19
- Access,
20
19
  AddTrace,
21
20
  BothFx,
22
21
  DeleteFiberRef,
@@ -26,6 +25,7 @@ import {
26
25
  Fork,
27
26
  FromCause,
28
27
  FromLazy,
28
+ GetEnv,
29
29
  GetFiberContext,
30
30
  GetFiberRef,
31
31
  GetTrace,
@@ -48,7 +48,7 @@ import * as Cause from '@/Cause/index.js'
48
48
  import { timeToDate, timeToUnixTime } from '@/Clock/index.js'
49
49
  import { settable } from '@/Disposable/Disposable.js'
50
50
  import type { Env } from '@/Env/Env.js'
51
- import { Exit } from '@/Exit/index.js'
51
+ import * as Exit from '@/Exit/index.js'
52
52
  import type * as Fiber from '@/Fiber/Fiber.js'
53
53
  import type { FiberContext } from '@/FiberContext/FiberContext.js'
54
54
  import { FiberId } from '@/FiberId/FiberId.js'
@@ -91,11 +91,7 @@ export interface Of<A> extends IO<never, A> {}
91
91
 
92
92
  export interface RIO<R, A> extends Fx<R, never, A> {}
93
93
 
94
- export type AnyFx =
95
- | Fx<any, any, any>
96
- | Fx<never, never, any>
97
- | Fx<never, any, any>
98
- | Fx<any, never, any>
94
+ export type AnyFx = Fx<any, any, any>
99
95
 
100
96
  export const now = <A>(a: A, __trace?: string): Of<A> => Now.make(a, __trace)
101
97
  export const success = now
@@ -112,12 +108,12 @@ export const flatMap =
112
108
  <R, E>(fx: Fx<R, E, A>) =>
113
109
  FlatMap.make(fx, f, __trace)
114
110
 
111
+ export const getEnv = <R>(__trace?: string): RIO<R, Env<R>> => GetEnv.make<R>(__trace)
112
+
115
113
  export const access = <R = never, R2 = never, E = never, A = any>(
116
114
  f: (r: Env<R>) => Fx<R2, E, A>,
117
115
  __trace?: string,
118
- ): Fx<R | R2, E, A> => Access.make(f, __trace)
119
-
120
- export const getEnv = <R>(__trace?: string): RIO<R, Env<R>> => access(now, __trace)
116
+ ): Fx<R | R2, E, A> => pipe(getEnv<R>(), flatMap(f, __trace))
121
117
 
122
118
  export const provide =
123
119
  <R>(env: Env<R>, __trace?: string) =>
@@ -143,7 +139,7 @@ export const provideLayers =
143
139
  E | Layer.ErrorsOf<Layers[number]>,
144
140
  A
145
141
  > =>
146
- layers.reduceRight((fx, l) => pipe(fx, provideLayer(l)), fx) as any
142
+ layers.reduce((fx, l) => pipe(fx, provideLayer(l)), fx) as any
147
143
 
148
144
  export const ask = <S>(s: Service<S>, __trace?: string): RIO<S, S> =>
149
145
  access((e) => e.get(s), __trace)
@@ -157,7 +153,7 @@ export const asksEnv = <R, A>(f: (env: Env<R>) => A, __trace?: string): Fx<R, ne
157
153
  access((e) => now(f(e)), __trace)
158
154
 
159
155
  export const ensuring =
160
- <E, A, R2, E2, B>(ensure: (a: Exit<E, A>) => Fx<R2, E2, B>, __trace?: string) =>
156
+ <E, A, R2, E2, B>(ensure: (a: Exit.Exit<E, A>) => Fx<R2, E2, B>, __trace?: string) =>
161
157
  <R>(fx: Fx<R, E, A>): Fx<R | R2, E | E2, A> =>
162
158
  pipe(
163
159
  fx,
@@ -182,9 +178,12 @@ export const ensuring =
182
178
  export const fromCause = <E>(cause: Cause.Cause<E>, __trace?: string): IO<E, never> =>
183
179
  FromCause.make(cause, __trace)
184
180
 
185
- export const fromExit = <E, A>(exit: Exit<E, A>, __trace?: string): IO<E, A> =>
181
+ export const fromExit = <E, A>(exit: Exit.Exit<E, A>, __trace?: string): IO<E, A> =>
186
182
  (exit.tag === 'Left' ? fromCause(exit.left, __trace) : now(exit.right, __trace)) as IO<E, A>
187
183
 
184
+ export const fromEither = <E, A>(e: Either.Either<E, A>, __trace?: string): IO<E, A> =>
185
+ fromExit(Exit.fromEither(e), __trace)
186
+
188
187
  export const interrupted = (id: FiberId, __trace?: string) =>
189
188
  fromCause(Cause.interrupted(id), __trace)
190
189
 
@@ -194,14 +193,16 @@ export const map =
194
193
  MapFx.make(fx, f, __trace)
195
194
 
196
195
  export const tap =
197
- <A, B>(f: Unary<A, B>, __trace?: string) =>
198
- <R, E>(fx: Fx<R, E, A>): Fx<R, E, A> =>
199
- MapFx.make(
196
+ <A, R2, E2, B>(f: Unary<A, Fx<R2, E2, B>>, __trace?: string) =>
197
+ <R, E>(fx: Fx<R, E, A>): Fx<R | R2, E | E2, A> =>
198
+ FlatMap.make(
200
199
  fx,
201
- (a) => {
202
- f(a)
203
- return a
204
- },
200
+ (a) =>
201
+ pipe(
202
+ a,
203
+ f,
204
+ map(() => a),
205
+ ),
205
206
  __trace,
206
207
  )
207
208
 
@@ -244,15 +245,35 @@ export const orElse =
244
245
  <R, A>(fx: Fx<R, E, A>): Fx<R | R2, E2, A | B> =>
245
246
  Match.make(
246
247
  fx,
247
- (cause) =>
248
- cause.tag === 'Expected' ? onLeft(cause.error) : (fromCause(cause) as Fx<R2, E2, B>),
248
+ (cause) => pipe(findExpectedCause(cause), Either.match(onLeft, fromCause)),
249
249
  now,
250
250
  __trace,
251
251
  )
252
252
 
253
+ function findExpectedCause<E>(cause: Cause.Cause<E>): Either.Either<E, Cause.Cause<never>> {
254
+ if (cause.tag === 'Expected') {
255
+ return Either.Left(cause.error)
256
+ }
257
+ if (cause.tag === 'Sequential' || cause.tag === 'Parallel') {
258
+ return pipe(
259
+ cause.left,
260
+ findExpectedCause,
261
+ Either.flatMap(() => findExpectedCause(cause.right)),
262
+ )
263
+ }
264
+ if (cause.tag === 'Traced') {
265
+ return findExpectedCause(cause.cause)
266
+ }
267
+
268
+ return Either.Right(cause)
269
+ }
270
+
253
271
  export const mapLeft = <E, E2>(f: (e: E) => E2) => orElseCause(flow(Cause.map(f), fromCause))
254
272
 
255
- export const attempt = <R, E, A>(fx: Fx<R, E, A>, __trace?: string): Fx<R, never, Exit<E, A>> =>
273
+ export const attempt = <R, E, A>(
274
+ fx: Fx<R, E, A>,
275
+ __trace?: string,
276
+ ): Fx<R, never, Exit.Exit<E, A>> =>
256
277
  pipe(fx, matchCause(flow(Either.Left, now), flow(Either.Right, now), __trace))
257
278
 
258
279
  export const bimap =
@@ -349,7 +370,7 @@ export const either =
349
370
  EitherFx.make(first, second, __trace) as Fx<R | R2, E | E2, Either.Either<A, B>>
350
371
 
351
372
  export const forkInContext =
352
- (context: FiberContext, __trace?: string) =>
373
+ (context: FiberContext<FiberId.Live>, __trace?: string) =>
353
374
  <R, E, A>(fx: Fx<R, E, A>): Fx<R, never, Fiber.Live<E, A>> =>
354
375
  Fork.make(fx, context, __trace)
355
376
 
@@ -378,7 +399,7 @@ export const modifyFiberRef =
378
399
  export const deleteFiberRef = <R, E, A>(
379
400
  ref: FiberRef<R, E, A>,
380
401
  __trace?: string,
381
- ): Fx<R, E, Maybe<A>> => DeleteFiberRef.make(ref, __trace)
402
+ ): Fx<R, E, Maybe.Maybe<A>> => DeleteFiberRef.make(ref, __trace)
382
403
 
383
404
  export const fiberRefLocally =
384
405
  <R2, E2, B>(ref: FiberRef<R2, E2, B>, value: B) =>
@@ -406,20 +427,23 @@ export function Fx<G extends AnyGenerator>(
406
427
  return pipe(
407
428
  runFxGenerator(gen, gen.next()),
408
429
  // Allow running Gen.throw to attempt to use try/catch to handle any errors
409
- orElseCause(
410
- (cause) =>
411
- (Cause.shouldRethrow(cause)
430
+ orElseCause((cause) => {
431
+ const error = getCauseError(cause)
432
+
433
+ return (
434
+ Cause.shouldRethrow(cause)
412
435
  ? pipe(
413
- lazy(() => runFxGenerator(gen, gen.throw(getCauseError(cause)))),
436
+ lazy(() => runFxGenerator(gen, gen.throw(error))),
414
437
  orElseCause((inner) =>
415
438
  // Ensure the the most useful error is continued up the stack
416
- DeepEquals.equals(getCauseError(inner), getCauseError(cause))
439
+ DeepEquals.equals(getCauseError(inner), error)
417
440
  ? fromCause(cause)
418
441
  : fromCause(Cause.sequential(cause, inner)),
419
442
  ),
420
443
  )
421
- : fromCause(cause)) as Fx<ResourcesOf<YieldOf<G>>, ErrorsOf<YieldOf<G>>, ReturnOf<G>>,
422
- ),
444
+ : fromCause(cause)
445
+ ) as Fx<ResourcesOf<YieldOf<G>>, ErrorsOf<YieldOf<G>>, ReturnOf<G>>
446
+ }),
423
447
  )
424
448
  }, __trace) as Fx<ResourcesOf<YieldOf<G>>, ErrorsOf<YieldOf<G>>, ReturnOf<G>>
425
449
  }
@@ -451,7 +475,7 @@ export function async<R, E, A, R2 = never, E2 = never>(
451
475
  either,
452
476
  Either.match(
453
477
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
454
- (finalizer) => ensuring((_: Exit<E, A>) => finalizer)(wait(future)),
478
+ (finalizer) => ensuring((_: Exit.Exit<E, A>) => finalizer)(wait(future)),
455
479
  identity,
456
480
  ),
457
481
  )