@fncts/io 0.0.22 → 0.0.24

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 (486) hide show
  1. package/Cached/definition.d.ts +6 -4
  2. package/Cached/internal.d.ts +4 -4
  3. package/Channel/api.d.ts +4 -4
  4. package/Channel/definition.d.ts +35 -14
  5. package/Channel/internal/ChannelExecutor.d.ts +1 -0
  6. package/Channel/internal/MergeDecision.d.ts +10 -6
  7. package/CountdownLatch.d.ts +1 -1
  8. package/Differ/definition.d.ts +2 -4
  9. package/Fiber/FiberRuntime.d.ts +9 -11
  10. package/Fiber/definition.d.ts +12 -6
  11. package/FiberRef/definition.d.ts +6 -2
  12. package/FiberRefs/api.d.ts +1 -1
  13. package/FiberRefs/definition.d.ts +1 -1
  14. package/Hub/definition.d.ts +29 -15
  15. package/IO/api/descriptor.d.ts +12 -0
  16. package/IO/api/interrupt.d.ts +19 -19
  17. package/IO/api/onTermination.d.ts +0 -1
  18. package/IO/api/sequenceT.d.ts +19 -3
  19. package/IO/api.d.ts +5 -0
  20. package/IO/definition.d.ts +40 -26
  21. package/IO.d.ts +1 -1
  22. package/Layer/definition.d.ts +17 -13
  23. package/Logger/definition.d.ts +10 -6
  24. package/MVar/api.d.ts +101 -0
  25. package/MVar/definition.d.ts +43 -0
  26. package/MVar.d.ts +2 -0
  27. package/Push/api.d.ts +7 -4
  28. package/Push/definition.d.ts +10 -3
  29. package/Push/internal.d.ts +1 -1
  30. package/Queue/api/dimapIO.d.ts +17 -13
  31. package/Queue/definition.d.ts +26 -18
  32. package/Ref/Derived.d.ts +3 -1
  33. package/Ref/Synchronized/constructors.d.ts +6 -1
  34. package/Ref/Synchronized/definition.d.ts +4 -2
  35. package/Ref/definition.d.ts +36 -25
  36. package/Ref.d.ts +0 -1
  37. package/RefSubject/definition.d.ts +17 -11
  38. package/Reloadable/definition.d.ts +5 -1
  39. package/STM/api/atomically.d.ts +9 -0
  40. package/STM/api.d.ts +12 -6
  41. package/STM/definition.d.ts +28 -15
  42. package/STM/internal/Entry.d.ts +2 -2
  43. package/STM/internal/TryCommit.d.ts +2 -2
  44. package/STM/internal/Versioned.d.ts +1 -1
  45. package/STM.d.ts +1 -0
  46. package/Schedule/definition.d.ts +7 -3
  47. package/Scope/definition.d.ts +1 -1
  48. package/ScopedRef/definition.d.ts +1 -1
  49. package/State/api.d.ts +1 -1
  50. package/State/definition.d.ts +5 -2
  51. package/State/internal.d.ts +6 -2
  52. package/Stream/definition.d.ts +26 -5
  53. package/Stream/internal/Handoff.d.ts +21 -15
  54. package/Stream/internal/SinkEndReason.d.ts +2 -2
  55. package/Subject/Atomic.d.ts +8 -4
  56. package/SupervisorPatch.d.ts +1 -1
  57. package/TExit/definition.d.ts +5 -5
  58. package/TRef/definition.d.ts +16 -14
  59. package/TRef.d.ts +0 -1
  60. package/_cjs/Cached/definition.cjs +4 -2
  61. package/_cjs/Cached/definition.cjs.map +1 -1
  62. package/_cjs/Cached/internal.cjs +7 -6
  63. package/_cjs/Cached/internal.cjs.map +1 -1
  64. package/_cjs/Channel/api/mapOutConcurrentIO.cjs +1 -1
  65. package/_cjs/Channel/api/mergeAllWith.cjs +1 -1
  66. package/_cjs/Channel/api.cjs +20 -20
  67. package/_cjs/Channel/api.cjs.map +1 -1
  68. package/_cjs/Channel/definition.cjs +13 -3
  69. package/_cjs/Channel/definition.cjs.map +1 -1
  70. package/_cjs/Channel/internal/ChannelExecutor.cjs +11 -6
  71. package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
  72. package/_cjs/Channel/internal/MergeDecision.cjs +7 -3
  73. package/_cjs/Channel/internal/MergeDecision.cjs.map +1 -1
  74. package/_cjs/CountdownLatch.cjs +4 -2
  75. package/_cjs/CountdownLatch.cjs.map +1 -1
  76. package/_cjs/Differ/definition.cjs +3 -1
  77. package/_cjs/Differ/definition.cjs.map +1 -1
  78. package/_cjs/Fiber/FiberRuntime.cjs +96 -89
  79. package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
  80. package/_cjs/Fiber/definition.cjs +8 -4
  81. package/_cjs/Fiber/definition.cjs.map +1 -1
  82. package/_cjs/FiberRef/definition.cjs +8 -4
  83. package/_cjs/FiberRef/definition.cjs.map +1 -1
  84. package/_cjs/Future/api.cjs +17 -6
  85. package/_cjs/Future/api.cjs.map +1 -1
  86. package/_cjs/Hub/api.cjs +5 -5
  87. package/_cjs/Hub/api.cjs.map +1 -1
  88. package/_cjs/Hub/definition.cjs +9 -7
  89. package/_cjs/Hub/definition.cjs.map +1 -1
  90. package/_cjs/Hub/internal.cjs +6 -6
  91. package/_cjs/Hub/internal.cjs.map +1 -1
  92. package/_cjs/IO/api/asyncIO.cjs +1 -1
  93. package/_cjs/IO/api/asyncIO.cjs.map +1 -1
  94. package/_cjs/IO/api/asyncInterrupt.cjs +2 -2
  95. package/_cjs/IO/api/asyncInterrupt.cjs.map +1 -1
  96. package/_cjs/IO/api/bracketExit.cjs +1 -1
  97. package/_cjs/IO/api/bracketExit.cjs.map +1 -1
  98. package/_cjs/IO/api/{onExit.cjs → descriptor.cjs} +20 -9
  99. package/_cjs/IO/api/descriptor.cjs.map +1 -0
  100. package/_cjs/IO/api/foreachConcurrent.cjs +2 -2
  101. package/_cjs/IO/api/foreachConcurrent.cjs.map +1 -1
  102. package/_cjs/IO/api/forkIn.cjs +1 -1
  103. package/_cjs/IO/api/forkIn.cjs.map +1 -1
  104. package/_cjs/IO/api/forkScoped.cjs +1 -1
  105. package/_cjs/IO/api/forkScoped.cjs.map +1 -1
  106. package/_cjs/IO/api/fulfill.cjs +1 -1
  107. package/_cjs/IO/api/fulfill.cjs.map +1 -1
  108. package/_cjs/IO/api/interrupt.cjs +52 -43
  109. package/_cjs/IO/api/interrupt.cjs.map +1 -1
  110. package/_cjs/IO/api/onTermination.cjs +7 -6
  111. package/_cjs/IO/api/onTermination.cjs.map +1 -1
  112. package/_cjs/IO/api/race.cjs +1 -1
  113. package/_cjs/IO/api/race.cjs.map +1 -1
  114. package/_cjs/IO/api/sequenceT.cjs +1 -1
  115. package/_cjs/IO/api/sequenceT.cjs.map +1 -1
  116. package/_cjs/IO/api/zipConcurrent.cjs +1 -1
  117. package/_cjs/IO/api/zipConcurrent.cjs.map +1 -1
  118. package/_cjs/IO/api.cjs +13 -5
  119. package/_cjs/IO/api.cjs.map +1 -1
  120. package/_cjs/IO/definition.cjs +26 -21
  121. package/_cjs/IO/definition.cjs.map +1 -1
  122. package/_cjs/IO.cjs +11 -11
  123. package/_cjs/Layer/MemoMap.cjs +30 -31
  124. package/_cjs/Layer/MemoMap.cjs.map +1 -1
  125. package/_cjs/Layer/api.cjs +1 -1
  126. package/_cjs/Layer/api.cjs.map +1 -1
  127. package/_cjs/Layer/definition.cjs +12 -10
  128. package/_cjs/Layer/definition.cjs.map +1 -1
  129. package/_cjs/Logger/definition.cjs +3 -1
  130. package/_cjs/Logger/definition.cjs.map +1 -1
  131. package/_cjs/MVar/api.cjs +170 -0
  132. package/_cjs/MVar/api.cjs.map +1 -0
  133. package/_cjs/MVar/definition.cjs +28 -0
  134. package/_cjs/MVar/definition.cjs.map +1 -0
  135. package/_cjs/MVar.cjs +28 -0
  136. package/_cjs/MVar.cjs.map +1 -0
  137. package/_cjs/Push/api.cjs +39 -36
  138. package/_cjs/Push/api.cjs.map +1 -1
  139. package/_cjs/Push/definition.cjs +9 -2
  140. package/_cjs/Push/definition.cjs.map +1 -1
  141. package/_cjs/Push/internal.cjs +4 -2
  142. package/_cjs/Push/internal.cjs.map +1 -1
  143. package/_cjs/Queue/api/dimapIO.cjs +10 -10
  144. package/_cjs/Queue/api/dimapIO.cjs.map +1 -1
  145. package/_cjs/Queue/api/filterInputIO.cjs +4 -4
  146. package/_cjs/Queue/api/filterInputIO.cjs.map +1 -1
  147. package/_cjs/Queue/api/filterOutputIO.cjs +7 -7
  148. package/_cjs/Queue/api/filterOutputIO.cjs.map +1 -1
  149. package/_cjs/Queue/definition.cjs +3 -1
  150. package/_cjs/Queue/definition.cjs.map +1 -1
  151. package/_cjs/Queue/internal.cjs +2 -2
  152. package/_cjs/Queue/internal.cjs.map +1 -1
  153. package/_cjs/Queue/strategy.cjs +2 -2
  154. package/_cjs/Queue/strategy.cjs.map +1 -1
  155. package/_cjs/Ref/Derived.cjs +8 -4
  156. package/_cjs/Ref/Derived.cjs.map +1 -1
  157. package/_cjs/Ref/Synchronized/constructors.cjs +16 -7
  158. package/_cjs/Ref/Synchronized/constructors.cjs.map +1 -1
  159. package/_cjs/Ref/Synchronized/definition.cjs +16 -12
  160. package/_cjs/Ref/Synchronized/definition.cjs.map +1 -1
  161. package/_cjs/Ref/definition.cjs +3 -2
  162. package/_cjs/Ref/definition.cjs.map +1 -1
  163. package/_cjs/Ref.cjs +0 -11
  164. package/_cjs/Ref.cjs.map +1 -1
  165. package/_cjs/RefSubject/Synchronized/api.cjs +1 -1
  166. package/_cjs/RefSubject/definition.cjs +9 -5
  167. package/_cjs/RefSubject/definition.cjs.map +1 -1
  168. package/_cjs/Reloadable/definition.cjs +4 -2
  169. package/_cjs/Reloadable/definition.cjs.map +1 -1
  170. package/_cjs/STM/api/atomically.cjs +55 -0
  171. package/_cjs/STM/api/atomically.cjs.map +1 -0
  172. package/_cjs/STM/api.cjs +65 -91
  173. package/_cjs/STM/api.cjs.map +1 -1
  174. package/_cjs/STM/definition.cjs +32 -19
  175. package/_cjs/STM/definition.cjs.map +1 -1
  176. package/_cjs/STM/driver.cjs +3 -3
  177. package/_cjs/STM/driver.cjs.map +1 -1
  178. package/_cjs/STM/internal/Entry.cjs +6 -3
  179. package/_cjs/STM/internal/Entry.cjs.map +1 -1
  180. package/_cjs/STM/internal/TryCommit.cjs +5 -2
  181. package/_cjs/STM/internal/TryCommit.cjs.map +1 -1
  182. package/_cjs/STM/internal/Versioned.cjs +3 -1
  183. package/_cjs/STM/internal/Versioned.cjs.map +1 -1
  184. package/_cjs/STM.cjs +11 -0
  185. package/_cjs/STM.cjs.map +1 -1
  186. package/_cjs/Schedule/definition.cjs +3 -1
  187. package/_cjs/Schedule/definition.cjs.map +1 -1
  188. package/_cjs/Scope/api.cjs +1 -2
  189. package/_cjs/Scope/api.cjs.map +1 -1
  190. package/_cjs/Scope/definition.cjs +5 -3
  191. package/_cjs/Scope/definition.cjs.map +1 -1
  192. package/_cjs/ScopedRef/api.cjs +2 -2
  193. package/_cjs/ScopedRef/api.cjs.map +1 -1
  194. package/_cjs/ScopedRef/definition.cjs +3 -1
  195. package/_cjs/ScopedRef/definition.cjs.map +1 -1
  196. package/_cjs/State/api.cjs +2 -2
  197. package/_cjs/State/api.cjs.map +1 -1
  198. package/_cjs/State/definition.cjs +4 -2
  199. package/_cjs/State/definition.cjs.map +1 -1
  200. package/_cjs/State/internal.cjs +7 -3
  201. package/_cjs/State/internal.cjs.map +1 -1
  202. package/_cjs/Stream/api.cjs +1 -1
  203. package/_cjs/Stream/definition.cjs +4 -2
  204. package/_cjs/Stream/definition.cjs.map +1 -1
  205. package/_cjs/Stream/internal/Handoff.cjs +37 -37
  206. package/_cjs/Stream/internal/Handoff.cjs.map +1 -1
  207. package/_cjs/Stream/internal/SinkEndReason.cjs +6 -3
  208. package/_cjs/Stream/internal/SinkEndReason.cjs.map +1 -1
  209. package/_cjs/Subject/Atomic.cjs +6 -4
  210. package/_cjs/Subject/Atomic.cjs.map +1 -1
  211. package/_cjs/SubscriptionRef.cjs +1 -1
  212. package/_cjs/SupervisorPatch.cjs +3 -1
  213. package/_cjs/SupervisorPatch.cjs.map +1 -1
  214. package/_cjs/TExit/definition.cjs +25 -24
  215. package/_cjs/TExit/definition.cjs.map +1 -1
  216. package/_cjs/TFuture/constructors.cjs +1 -1
  217. package/_cjs/TReentrantLock/api.cjs +10 -9
  218. package/_cjs/TReentrantLock/api.cjs.map +1 -1
  219. package/_cjs/TRef/constructors.cjs +1 -1
  220. package/_cjs/TRef/definition.cjs +21 -21
  221. package/_cjs/TRef/definition.cjs.map +1 -1
  222. package/_cjs/TRef.cjs +0 -11
  223. package/_cjs/TRef.cjs.map +1 -1
  224. package/_cjs/TSemaphore/api.cjs +2 -2
  225. package/_cjs/TSemaphore/api.cjs.map +1 -1
  226. package/_cjs/TSemaphore/constructors.cjs +1 -1
  227. package/_cjs/internal/IsFatal.cjs +3 -1
  228. package/_cjs/internal/IsFatal.cjs.map +1 -1
  229. package/_mjs/Cached/definition.mjs +4 -2
  230. package/_mjs/Cached/definition.mjs.map +1 -1
  231. package/_mjs/Cached/internal.mjs +3 -5
  232. package/_mjs/Cached/internal.mjs.map +1 -1
  233. package/_mjs/Channel/api/mapOutConcurrentIO.mjs +1 -1
  234. package/_mjs/Channel/api/mergeAllWith.mjs +1 -1
  235. package/_mjs/Channel/api.mjs +15 -14
  236. package/_mjs/Channel/api.mjs.map +1 -1
  237. package/_mjs/Channel/definition.mjs +9 -1
  238. package/_mjs/Channel/definition.mjs.map +1 -1
  239. package/_mjs/Channel/internal/ChannelExecutor.mjs +11 -6
  240. package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
  241. package/_mjs/Channel/internal/MergeDecision.mjs +4 -1
  242. package/_mjs/Channel/internal/MergeDecision.mjs.map +1 -1
  243. package/_mjs/CountdownLatch.mjs +3 -1
  244. package/_mjs/CountdownLatch.mjs.map +1 -1
  245. package/_mjs/Differ/definition.mjs +3 -1
  246. package/_mjs/Differ/definition.mjs.map +1 -1
  247. package/_mjs/Fiber/FiberRuntime.mjs +97 -90
  248. package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
  249. package/_mjs/Fiber/definition.mjs +5 -2
  250. package/_mjs/Fiber/definition.mjs.map +1 -1
  251. package/_mjs/FiberRef/definition.mjs +6 -3
  252. package/_mjs/FiberRef/definition.mjs.map +1 -1
  253. package/_mjs/Future/api.mjs +17 -6
  254. package/_mjs/Future/api.mjs.map +1 -1
  255. package/_mjs/Hub/api.mjs +6 -6
  256. package/_mjs/Hub/api.mjs.map +1 -1
  257. package/_mjs/Hub/definition.mjs +5 -4
  258. package/_mjs/Hub/definition.mjs.map +1 -1
  259. package/_mjs/Hub/internal.mjs +6 -6
  260. package/_mjs/Hub/internal.mjs.map +1 -1
  261. package/_mjs/IO/api/asyncIO.mjs +1 -1
  262. package/_mjs/IO/api/asyncIO.mjs.map +1 -1
  263. package/_mjs/IO/api/asyncInterrupt.mjs +2 -2
  264. package/_mjs/IO/api/asyncInterrupt.mjs.map +1 -1
  265. package/_mjs/IO/api/bracketExit.mjs +1 -1
  266. package/_mjs/IO/api/bracketExit.mjs.map +1 -1
  267. package/_mjs/IO/api/descriptor.mjs +20 -0
  268. package/_mjs/IO/api/descriptor.mjs.map +1 -0
  269. package/_mjs/IO/api/foreachConcurrent.mjs +2 -2
  270. package/_mjs/IO/api/foreachConcurrent.mjs.map +1 -1
  271. package/_mjs/IO/api/forkIn.mjs +1 -1
  272. package/_mjs/IO/api/forkIn.mjs.map +1 -1
  273. package/_mjs/IO/api/forkScoped.mjs +1 -1
  274. package/_mjs/IO/api/forkScoped.mjs.map +1 -1
  275. package/_mjs/IO/api/fulfill.mjs +1 -1
  276. package/_mjs/IO/api/fulfill.mjs.map +1 -1
  277. package/_mjs/IO/api/interrupt.mjs +46 -38
  278. package/_mjs/IO/api/interrupt.mjs.map +1 -1
  279. package/_mjs/IO/api/onTermination.mjs +7 -6
  280. package/_mjs/IO/api/onTermination.mjs.map +1 -1
  281. package/_mjs/IO/api/race.mjs +1 -1
  282. package/_mjs/IO/api/race.mjs.map +1 -1
  283. package/_mjs/IO/api/sequenceT.mjs +1 -1
  284. package/_mjs/IO/api/sequenceT.mjs.map +1 -1
  285. package/_mjs/IO/api/zipConcurrent.mjs +1 -1
  286. package/_mjs/IO/api/zipConcurrent.mjs.map +1 -1
  287. package/_mjs/IO/api.mjs +10 -3
  288. package/_mjs/IO/api.mjs.map +1 -1
  289. package/_mjs/IO/definition.mjs +23 -19
  290. package/_mjs/IO/definition.mjs.map +1 -1
  291. package/_mjs/IO.mjs +1 -1
  292. package/_mjs/IO.mjs.map +1 -1
  293. package/_mjs/Layer/MemoMap.mjs +28 -29
  294. package/_mjs/Layer/MemoMap.mjs.map +1 -1
  295. package/_mjs/Layer/api.mjs +2 -2
  296. package/_mjs/Layer/api.mjs.map +1 -1
  297. package/_mjs/Layer/definition.mjs +9 -8
  298. package/_mjs/Layer/definition.mjs.map +1 -1
  299. package/_mjs/Logger/definition.mjs +1 -0
  300. package/_mjs/Logger/definition.mjs.map +1 -1
  301. package/_mjs/MVar/api.mjs +150 -0
  302. package/_mjs/MVar/api.mjs.map +1 -0
  303. package/_mjs/MVar/definition.mjs +18 -0
  304. package/_mjs/MVar/definition.mjs.map +1 -0
  305. package/_mjs/MVar.mjs +4 -0
  306. package/_mjs/MVar.mjs.map +1 -0
  307. package/_mjs/Push/api.mjs +39 -36
  308. package/_mjs/Push/api.mjs.map +1 -1
  309. package/_mjs/Push/definition.mjs +5 -0
  310. package/_mjs/Push/definition.mjs.map +1 -1
  311. package/_mjs/Push/internal.mjs +4 -2
  312. package/_mjs/Push/internal.mjs.map +1 -1
  313. package/_mjs/Queue/api/dimapIO.mjs +11 -11
  314. package/_mjs/Queue/api/dimapIO.mjs.map +1 -1
  315. package/_mjs/Queue/api/filterInputIO.mjs +5 -5
  316. package/_mjs/Queue/api/filterInputIO.mjs.map +1 -1
  317. package/_mjs/Queue/api/filterOutputIO.mjs +8 -8
  318. package/_mjs/Queue/api/filterOutputIO.mjs.map +1 -1
  319. package/_mjs/Queue/definition.mjs +1 -0
  320. package/_mjs/Queue/definition.mjs.map +1 -1
  321. package/_mjs/Queue/internal.mjs +2 -2
  322. package/_mjs/Queue/internal.mjs.map +1 -1
  323. package/_mjs/Queue/strategy.mjs +2 -2
  324. package/_mjs/Queue/strategy.mjs.map +1 -1
  325. package/_mjs/Ref/Derived.mjs +6 -3
  326. package/_mjs/Ref/Derived.mjs.map +1 -1
  327. package/_mjs/Ref/Synchronized/constructors.mjs +15 -7
  328. package/_mjs/Ref/Synchronized/constructors.mjs.map +1 -1
  329. package/_mjs/Ref/Synchronized/definition.mjs +13 -10
  330. package/_mjs/Ref/Synchronized/definition.mjs.map +1 -1
  331. package/_mjs/Ref/definition.mjs +1 -1
  332. package/_mjs/Ref/definition.mjs.map +1 -1
  333. package/_mjs/Ref.mjs +0 -1
  334. package/_mjs/Ref.mjs.map +1 -1
  335. package/_mjs/RefSubject/Synchronized/api.mjs +1 -1
  336. package/_mjs/RefSubject/definition.mjs +10 -3
  337. package/_mjs/RefSubject/definition.mjs.map +1 -1
  338. package/_mjs/Reloadable/definition.mjs +2 -1
  339. package/_mjs/Reloadable/definition.mjs.map +1 -1
  340. package/_mjs/STM/api/atomically.mjs +47 -0
  341. package/_mjs/STM/api/atomically.mjs.map +1 -0
  342. package/_mjs/STM/api.mjs +61 -88
  343. package/_mjs/STM/api.mjs.map +1 -1
  344. package/_mjs/STM/definition.mjs +27 -17
  345. package/_mjs/STM/definition.mjs.map +1 -1
  346. package/_mjs/STM/driver.mjs +3 -3
  347. package/_mjs/STM/driver.mjs.map +1 -1
  348. package/_mjs/STM/internal/Entry.mjs +5 -2
  349. package/_mjs/STM/internal/Entry.mjs.map +1 -1
  350. package/_mjs/STM/internal/TryCommit.mjs +6 -2
  351. package/_mjs/STM/internal/TryCommit.mjs.map +1 -1
  352. package/_mjs/STM/internal/Versioned.mjs +3 -1
  353. package/_mjs/STM/internal/Versioned.mjs.map +1 -1
  354. package/_mjs/STM.mjs +1 -0
  355. package/_mjs/STM.mjs.map +1 -1
  356. package/_mjs/Schedule/definition.mjs +1 -0
  357. package/_mjs/Schedule/definition.mjs.map +1 -1
  358. package/_mjs/Scope/api.mjs +1 -2
  359. package/_mjs/Scope/api.mjs.map +1 -1
  360. package/_mjs/Scope/definition.mjs +4 -2
  361. package/_mjs/Scope/definition.mjs.map +1 -1
  362. package/_mjs/ScopedRef/api.mjs +2 -2
  363. package/_mjs/ScopedRef/api.mjs.map +1 -1
  364. package/_mjs/ScopedRef/definition.mjs +3 -1
  365. package/_mjs/ScopedRef/definition.mjs.map +1 -1
  366. package/_mjs/State/api.mjs +1 -1
  367. package/_mjs/State/api.mjs.map +1 -1
  368. package/_mjs/State/definition.mjs +4 -1
  369. package/_mjs/State/definition.mjs.map +1 -1
  370. package/_mjs/State/internal.mjs +5 -2
  371. package/_mjs/State/internal.mjs.map +1 -1
  372. package/_mjs/Stream/api.mjs +1 -1
  373. package/_mjs/Stream/definition.mjs +2 -1
  374. package/_mjs/Stream/definition.mjs.map +1 -1
  375. package/_mjs/Stream/internal/Handoff.mjs +40 -32
  376. package/_mjs/Stream/internal/Handoff.mjs.map +1 -1
  377. package/_mjs/Stream/internal/SinkEndReason.mjs +6 -2
  378. package/_mjs/Stream/internal/SinkEndReason.mjs.map +1 -1
  379. package/_mjs/Subject/Atomic.mjs +4 -2
  380. package/_mjs/Subject/Atomic.mjs.map +1 -1
  381. package/_mjs/SubscriptionRef.mjs +1 -1
  382. package/_mjs/SupervisorPatch.mjs +3 -1
  383. package/_mjs/SupervisorPatch.mjs.map +1 -1
  384. package/_mjs/TExit/definition.mjs +25 -24
  385. package/_mjs/TExit/definition.mjs.map +1 -1
  386. package/_mjs/TFuture/constructors.mjs +1 -1
  387. package/_mjs/TReentrantLock/api.mjs +10 -9
  388. package/_mjs/TReentrantLock/api.mjs.map +1 -1
  389. package/_mjs/TRef/constructors.mjs +1 -1
  390. package/_mjs/TRef/definition.mjs +19 -20
  391. package/_mjs/TRef/definition.mjs.map +1 -1
  392. package/_mjs/TRef.mjs +0 -1
  393. package/_mjs/TRef.mjs.map +1 -1
  394. package/_mjs/TSemaphore/api.mjs +2 -2
  395. package/_mjs/TSemaphore/api.mjs.map +1 -1
  396. package/_mjs/TSemaphore/constructors.mjs +1 -1
  397. package/_mjs/internal/IsFatal.mjs +3 -1
  398. package/_mjs/internal/IsFatal.mjs.map +1 -1
  399. package/_src/Cached/definition.ts +6 -4
  400. package/_src/Cached/internal.ts +4 -4
  401. package/_src/Channel/api.ts +14 -15
  402. package/_src/Channel/definition.ts +37 -14
  403. package/_src/Channel/internal/ChannelExecutor.ts +14 -3
  404. package/_src/Channel/internal/MergeDecision.ts +11 -6
  405. package/_src/CountdownLatch.ts +1 -1
  406. package/_src/Differ/definition.ts +2 -4
  407. package/_src/Fiber/FiberRuntime.ts +54 -50
  408. package/_src/Fiber/definition.ts +15 -8
  409. package/_src/FiberRef/definition.ts +9 -4
  410. package/_src/FiberRefs/api.ts +1 -1
  411. package/_src/FiberRefs/definition.ts +1 -1
  412. package/_src/Future/api.ts +14 -5
  413. package/_src/Hub/api.ts +9 -7
  414. package/_src/Hub/definition.ts +30 -15
  415. package/_src/IO/api/descriptor.ts +14 -0
  416. package/_src/IO/api/interrupt.ts +72 -55
  417. package/_src/IO/api/onTermination.ts +8 -7
  418. package/_src/IO/api/sequenceT.ts +4 -6
  419. package/_src/IO/api.ts +8 -1
  420. package/_src/IO/definition.ts +36 -27
  421. package/_src/IO.ts +1 -1
  422. package/_src/Layer/MemoMap.ts +1 -1
  423. package/_src/Layer/api.ts +2 -2
  424. package/_src/Layer/definition.ts +18 -13
  425. package/_src/Logger/definition.ts +9 -4
  426. package/_src/MVar/api.ts +185 -0
  427. package/_src/MVar/definition.ts +45 -0
  428. package/_src/MVar.ts +4 -0
  429. package/_src/Push/api.ts +7 -4
  430. package/_src/Push/definition.ts +12 -3
  431. package/_src/Push/internal.ts +2 -2
  432. package/_src/Queue/api/dimapIO.ts +24 -13
  433. package/_src/Queue/api/filterInputIO.ts +9 -7
  434. package/_src/Queue/api/filterOutputIO.ts +9 -7
  435. package/_src/Queue/definition.ts +27 -18
  436. package/_src/Ref/Derived.ts +4 -1
  437. package/_src/Ref/Synchronized/constructors.ts +9 -0
  438. package/_src/Ref/Synchronized/definition.ts +5 -2
  439. package/_src/Ref/definition.ts +36 -25
  440. package/_src/Ref.ts +0 -1
  441. package/_src/RefSubject/definition.ts +19 -12
  442. package/_src/Reloadable/definition.ts +6 -1
  443. package/_src/STM/api/atomically.ts +43 -0
  444. package/_src/STM/api.ts +20 -38
  445. package/_src/STM/definition.ts +33 -20
  446. package/_src/STM/driver.ts +3 -3
  447. package/_src/STM/internal/Entry.ts +2 -2
  448. package/_src/STM/internal/TryCommit.ts +4 -4
  449. package/_src/STM/internal/Versioned.ts +1 -1
  450. package/_src/STM.ts +1 -0
  451. package/_src/Schedule/definition.ts +8 -3
  452. package/_src/Scope/definition.ts +2 -2
  453. package/_src/ScopedRef/definition.ts +1 -1
  454. package/_src/State/api.ts +1 -1
  455. package/_src/State/definition.ts +6 -3
  456. package/_src/State/internal.ts +8 -3
  457. package/_src/Stream/definition.ts +17 -5
  458. package/_src/Stream/internal/Handoff.ts +31 -24
  459. package/_src/Stream/internal/SinkEndReason.ts +2 -2
  460. package/_src/Subject/Atomic.ts +8 -4
  461. package/_src/SupervisorPatch.ts +1 -1
  462. package/_src/TExit/definition.ts +11 -12
  463. package/_src/TRef/definition.ts +18 -14
  464. package/_src/TRef.ts +0 -1
  465. package/_src/global.ts +4 -0
  466. package/_src/internal/IsFatal.ts +1 -1
  467. package/global.d.ts +4 -0
  468. package/internal/IsFatal.d.ts +1 -1
  469. package/package.json +2 -2
  470. package/IO/api/onExit.d.ts +0 -7
  471. package/Ref/symbols.d.ts +0 -30
  472. package/TRef/symbols.d.ts +0 -20
  473. package/_cjs/IO/api/onExit.cjs.map +0 -1
  474. package/_cjs/Ref/symbols.cjs +0 -37
  475. package/_cjs/Ref/symbols.cjs.map +0 -1
  476. package/_cjs/TRef/symbols.cjs +0 -27
  477. package/_cjs/TRef/symbols.cjs.map +0 -1
  478. package/_mjs/IO/api/onExit.mjs +0 -11
  479. package/_mjs/IO/api/onExit.mjs.map +0 -1
  480. package/_mjs/Ref/symbols.mjs +0 -25
  481. package/_mjs/Ref/symbols.mjs.map +0 -1
  482. package/_mjs/TRef/symbols.mjs +0 -17
  483. package/_mjs/TRef/symbols.mjs.map +0 -1
  484. package/_src/IO/api/onExit.ts +0 -11
  485. package/_src/Ref/symbols.ts +0 -29
  486. package/_src/TRef/symbols.ts +0 -19
@@ -1,6 +1,6 @@
1
1
  import type { CachedInternal } from "@fncts/io/Cached/internal";
2
2
 
3
- import { CachedTypeId } from "@fncts/io/Cached/internal";
3
+ import { CachedTypeId , CachedVariance } from "@fncts/io/Cached/internal";
4
4
 
5
5
  /**
6
6
  * A Cached is a possibly resourceful value that is loaded into memory, and
@@ -10,9 +10,11 @@ import { CachedTypeId } from "@fncts/io/Cached/internal";
10
10
  * @tsplus companion fncts.io.CachedOps
11
11
  */
12
12
  export class Cached<Error, Resource> {
13
- readonly _E!: () => Error;
14
- readonly _A!: () => Resource;
15
- readonly _typeId: CachedTypeId = CachedTypeId;
13
+ readonly [CachedTypeId]: CachedTypeId = CachedTypeId;
14
+ declare [CachedVariance]: {
15
+ readonly _E: (_: never) => Error;
16
+ readonly _A: (_: never) => Resource;
17
+ };
16
18
  }
17
19
 
18
20
  /**
@@ -1,10 +1,10 @@
1
+ export const CachedVariance = Symbol.for("fncts.io.Cached.Variance");
2
+ export type CachedVariance = typeof CachedVariance;
3
+
1
4
  export const CachedTypeId = Symbol.for("fncts.io.Cached");
2
5
  export type CachedTypeId = typeof CachedTypeId;
3
6
 
4
- export abstract class CachedInternal<Error, Resource> {
5
- readonly _E!: () => Error;
6
- readonly _A!: () => Resource;
7
- readonly _typeId: CachedTypeId = CachedTypeId;
7
+ export abstract class CachedInternal<Error, Resource> extends Cached<Error, Resource> {
8
8
  abstract get: FIO<Error, Resource>;
9
9
  abstract refresh: FIO<Error, void>;
10
10
  }
@@ -83,21 +83,21 @@ export function acquireReleaseExitWith<Env, InErr, InElem, InDone, OutErr, OutEl
83
83
  /**
84
84
  * Construct a resource Channel with Acquire / Release
85
85
  *
86
- * @tsplus static fncts.io.ChannelOps acquireReleaseOut
86
+ * @tsplus static fncts.io.ChannelOps acquireReleaseOutWith
87
87
  */
88
- export function acquireReleaseOut<Env, OutErr, Acquired, Z>(
88
+ export function acquireReleaseOutWith<Env, OutErr, Acquired, Z>(
89
89
  acquire: IO<Env, OutErr, Acquired>,
90
90
  release: (a: Acquired) => URIO<Env, Z>,
91
91
  ): Channel<Env, unknown, unknown, unknown, OutErr, Acquired, void> {
92
- return Channel.acquireReleaseOutExit(acquire, (z, _) => release(z));
92
+ return Channel.acquireReleaseOutExitWith(acquire, (z, _) => release(z));
93
93
  }
94
94
 
95
95
  /**
96
96
  * Construct a resource Channel with Acquire / Release
97
97
  *
98
- * @tsplus static fncts.io.ChannelOps acquireReleaseOutExit
98
+ * @tsplus static fncts.io.ChannelOps acquireReleaseOutExitWith
99
99
  */
100
- export function acquireReleaseOutExit<R, R2, E, Z>(
100
+ export function acquireReleaseOutExitWith<R, R2, E, Z>(
101
101
  self: IO<R, E, Z>,
102
102
  release: (z: Z, e: Exit<unknown, unknown>) => URIO<R2, unknown>,
103
103
  ): Channel<R | R2, unknown, unknown, unknown, E, Z, void> {
@@ -752,17 +752,16 @@ export function interrupt(fiberId: FiberId): Channel<never, unknown, unknown, un
752
752
  export function scoped<R, E, A>(
753
753
  io: Lazy<IO<R, E, A>>,
754
754
  ): Channel<Exclude<R, Scope>, unknown, unknown, unknown, E, A, unknown> {
755
- return Channel.acquireReleaseOutExit(
756
- Scope.make.flatMap((scope) =>
757
- IO.uninterruptibleMask(({ restore }) =>
758
- restore(scope.extend(io)).matchCauseIO(
759
- (cause) => scope.close(Exit.failCause(cause)) > IO.failCauseNow(cause),
760
- (out) => IO.succeedNow(tuple(out, scope)),
755
+ return Channel.unwrap(
756
+ IO.uninterruptibleMask(({ restore }) =>
757
+ Scope.make.map((scope) =>
758
+ Channel.acquireReleaseOutExitWith(
759
+ restore(scope.extend(io)).tapErrorCause((cause) => scope.close(Exit.failCause(cause))),
760
+ (_, exit) => scope.close(exit),
761
761
  ),
762
762
  ),
763
763
  ),
764
- ([_, scope], exit) => scope.close(exit),
765
- ).mapOut(([a]) => a);
764
+ );
766
765
  }
767
766
 
768
767
  /**
@@ -1019,12 +1018,12 @@ export function pipeTo<OutErr, OutElem, OutDone, Env1, OutErr1, OutElem1, OutDon
1019
1018
 
1020
1019
  const ChannelFailureTypeId = Symbol.for("@principia/base/Channel/ChannelFailure");
1021
1020
  class ChannelFailure<E> {
1022
- readonly _typeId = ChannelFailureTypeId;
1021
+ readonly [ChannelFailureTypeId] = ChannelFailureTypeId;
1023
1022
  constructor(readonly error: E) {}
1024
1023
  }
1025
1024
 
1026
1025
  function isChannelFailure<E>(u: unknown): u is ChannelFailure<E> {
1027
- return hasTypeId(u, ChannelFailureTypeId);
1026
+ return isObject(u) && ChannelFailureTypeId in u;
1028
1027
  }
1029
1028
 
1030
1029
  /**
@@ -21,18 +21,27 @@ export const enum ChannelTag {
21
21
  Provide = "Provide",
22
22
  }
23
23
 
24
+ export const ChannelVariance = Symbol.for("fncts.io.Channel.Variance");
25
+ export type ChannelVariance = typeof ChannelVariance;
26
+
27
+ export const ChannelTypeId = Symbol.for("fncts.io.Channel");
28
+ export type ChannelTypeId = typeof ChannelTypeId;
29
+
24
30
  /**
25
31
  * @tsplus type fncts.io.Channel
26
32
  * @tsplus companion fncts.io.ChannelOps
27
33
  */
28
34
  export abstract class Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> {
29
- declare _Env: () => Env;
30
- declare _InErr: (_: InErr) => void;
31
- declare _InElem: (_: InElem) => void;
32
- declare _InDone: (_: InDone) => void;
33
- declare _OutErr: () => OutErr;
34
- declare _OutElem: () => OutElem;
35
- declare _OutDone: () => OutDone;
35
+ readonly [ChannelTypeId]: ChannelTypeId = ChannelTypeId;
36
+ declare [ChannelVariance]: {
37
+ _Env: () => Env;
38
+ _InErr: (_: InErr) => void;
39
+ _InElem: (_: InElem) => void;
40
+ _InDone: (_: InDone) => void;
41
+ _OutErr: () => OutErr;
42
+ _OutElem: () => OutElem;
43
+ _OutDone: () => OutDone;
44
+ };
36
45
  }
37
46
 
38
47
  /**
@@ -43,49 +52,63 @@ export function unifyChannel<X extends Channel<any, any, any, any, any, any, any
43
52
  ): Channel<
44
53
  [X] extends [
45
54
  {
46
- _Env: () => infer Env;
55
+ [ChannelVariance]: {
56
+ _Env: () => infer Env;
57
+ };
47
58
  },
48
59
  ]
49
60
  ? Env
50
61
  : never,
51
62
  [X] extends [
52
63
  {
53
- _InErr: (_: infer InErr) => void;
64
+ [ChannelVariance]: {
65
+ _InErr: (_: infer InErr) => void;
66
+ };
54
67
  },
55
68
  ]
56
69
  ? InErr
57
70
  : never,
58
71
  [X] extends [
59
72
  {
60
- _InElem: (_: infer InElem) => void;
73
+ [ChannelVariance]: {
74
+ _InElem: (_: infer InElem) => void;
75
+ };
61
76
  },
62
77
  ]
63
78
  ? InElem
64
79
  : never,
65
80
  [X] extends [
66
81
  {
67
- _InDone: (_: infer InDone) => void;
82
+ [ChannelVariance]: {
83
+ _InDone: (_: infer InDone) => void;
84
+ };
68
85
  },
69
86
  ]
70
87
  ? InDone
71
88
  : never,
72
89
  [X] extends [
73
90
  {
74
- _OutErr: () => infer OutErr;
91
+ [ChannelVariance]: {
92
+ _OutErr: () => infer OutErr;
93
+ };
75
94
  },
76
95
  ]
77
96
  ? OutErr
78
97
  : never,
79
98
  [X] extends [
80
99
  {
81
- _OutElem: () => infer OutElem;
100
+ [ChannelVariance]: {
101
+ _OutElem: () => infer OutElem;
102
+ };
82
103
  },
83
104
  ]
84
105
  ? OutElem
85
106
  : never,
86
107
  [X] extends [
87
108
  {
88
- _OutDone: () => infer OutDone;
109
+ [ChannelVariance]: {
110
+ _OutDone: () => infer OutDone;
111
+ };
89
112
  },
90
113
  ]
91
114
  ? OutDone
@@ -1049,17 +1049,28 @@ export class ChannelExecutor<Env, InErr, InElem, InDone, OutErr, OutElem, OutDon
1049
1049
  this.doneStack = this.doneStack.prepend(new ContinuationFinalizer(f));
1050
1050
  }
1051
1051
 
1052
+ private provide<Env, OutErr, OutDone>(
1053
+ io: IO<Env, OutErr, OutDone>,
1054
+ __tsplusTrace?: string,
1055
+ ): IO<Env, OutErr, OutDone> {
1056
+ if (this.providedEnv === null) {
1057
+ return io;
1058
+ } else {
1059
+ return io.provideEnvironment(this.providedEnv);
1060
+ }
1061
+ }
1062
+
1052
1063
  private runBracketOut(bracketOut: BracketOut<Env, unknown, unknown, unknown>): ChannelState<Env, unknown> | null {
1053
1064
  return new State.Effect(
1054
- IO.uninterruptibleMask(({ restore }) =>
1055
- restore(bracketOut.acquire).matchCauseIO(
1065
+ IO.uninterruptible(
1066
+ this.provide(bracketOut.acquire).matchCauseIO(
1056
1067
  (cause) =>
1057
1068
  IO.succeed(() => {
1058
1069
  this.currentChannel = Channel.failCause(cause);
1059
1070
  }),
1060
1071
  (out) =>
1061
1072
  IO.succeed(() => {
1062
- this.addFinalizer((e) => bracketOut.finalizer(out, e));
1073
+ this.addFinalizer((e) => this.provide(bracketOut.finalizer(out, e)));
1063
1074
  this.currentChannel = Channel.write(() => out);
1064
1075
  }),
1065
1076
  ),
@@ -3,6 +3,9 @@ export const enum MergeDecisionTag {
3
3
  Await = "Await",
4
4
  }
5
5
 
6
+ export const MergeDecisionVariance = Symbol.for("fncts.io.Channel.MergeDecision.Variance");
7
+ export type MergeDecisionVariance = typeof MergeDecisionVariance;
8
+
6
9
  export const MergeDecisionTypeId = Symbol.for("fncts.io.Channel.MergeDecision");
7
10
  export type MergeDecisionTypeId = typeof MergeDecisionTypeId;
8
11
 
@@ -11,12 +14,14 @@ export type MergeDecisionTypeId = typeof MergeDecisionTypeId;
11
14
  * @tsplus companion fncts.io.Channel.MergeDecisionOps
12
15
  */
13
16
  export abstract class MergeDecision<R, E0, Z0, E, Z> {
14
- readonly _typeId: MergeDecisionTypeId = MergeDecisionTypeId;
15
- readonly _R!: () => R;
16
- readonly _E0!: (_: E0) => void;
17
- readonly _Z0!: (_: Z0) => void;
18
- readonly _E!: () => E;
19
- readonly _Z!: () => Z;
17
+ readonly [MergeDecisionTypeId]: MergeDecisionTypeId = MergeDecisionTypeId;
18
+ declare [MergeDecisionVariance]: {
19
+ readonly _R: (_: never) => R;
20
+ readonly _E0: (_: E0) => void;
21
+ readonly _Z0: (_: Z0) => void;
22
+ readonly _E: (_: never) => E;
23
+ readonly _Z: (_: never) => Z;
24
+ };
20
25
  }
21
26
 
22
27
  /**
@@ -6,7 +6,7 @@ export type CountdownLatchTypeId = typeof CountdownLatchTypeId;
6
6
  * @tsplus companion fncts.io.CountdownLatchOps
7
7
  */
8
8
  export class CountdownLatch {
9
- readonly _typeId: CountdownLatchTypeId = CountdownLatchTypeId;
9
+ readonly [CountdownLatchTypeId]: CountdownLatchTypeId = CountdownLatchTypeId;
10
10
  constructor(private _count: Ref<number>, private _waiters: Future<never, void>) {}
11
11
 
12
12
  readonly await: UIO<void> = this._waiters.await;
@@ -5,10 +5,8 @@ export type DifferTypeId = typeof DifferTypeId;
5
5
  * @tsplus type fncts.io.Differ
6
6
  * @tsplus companion fncts.io.DifferOps
7
7
  */
8
- export abstract class Differ<Value, Patch> {
9
- readonly _typeId: DifferTypeId = DifferTypeId;
10
- declare _Value: Value;
11
- declare _Patch: Patch;
8
+ export abstract class Differ<in out Value, in out Patch> {
9
+ readonly [DifferTypeId]: DifferTypeId = DifferTypeId;
12
10
  abstract readonly empty: Patch;
13
11
  abstract combine(first: Patch, second: Patch): Patch;
14
12
  abstract diff(oldValue: Value, newValue: Value): Patch;
@@ -3,7 +3,7 @@ import type { OnFailure, OnSuccess, OnSuccessAndFailure, UIO } from "../IO/defin
3
3
  import type { RuntimeFlags } from "../RuntimeFlags.js";
4
4
 
5
5
  import { Trace } from "@fncts/base/data/Trace";
6
- import { FiberTypeId } from "@fncts/io/Fiber/definition";
6
+ import { FiberTypeId, FiberVariance } from "@fncts/io/Fiber/definition";
7
7
  import { StackTraceBuilder } from "@fncts/io/internal/StackTraceBuilder";
8
8
 
9
9
  import { Done, Suspended } from "../FiberStatus.js";
@@ -12,23 +12,18 @@ import { FiberStatusTag } from "../FiberStatus.js";
12
12
  import { LinkedQueue } from "../internal/MutableQueue.js";
13
13
  import { isIO } from "../IO/definition.js";
14
14
  import { WhileLoop } from "../IO/definition.js";
15
- import { IOTag } from "../IO/definition.js";
15
+ import { IOOpCode } from "../IO/definition.js";
16
16
  import { isIOError } from "../IO/definition.js";
17
17
  import { RuntimeFlag } from "../RuntimeFlag.js";
18
18
  import { FiberMessage, FiberMessageTag } from "./FiberMessage.js";
19
19
 
20
- const enum ContinuationTag {
21
- RevertFlags = "RevertFlags",
22
- UpdateTrace = "UpdateTrace",
23
- }
24
-
25
20
  export class RevertFlags {
26
- readonly _tag = ContinuationTag.RevertFlags;
21
+ readonly ioOpCode = IOOpCode.RevertFlags;
27
22
  constructor(readonly patch: RuntimeFlags.Patch, readonly trace?: string) {}
28
23
  }
29
24
 
30
25
  export class UpdateTrace {
31
- readonly _tag = ContinuationTag.UpdateTrace;
26
+ readonly ioOpCode = IOOpCode.UpdateTrace;
32
27
  constructor(readonly trace?: string) {}
33
28
  }
34
29
 
@@ -44,10 +39,13 @@ export type Continuation =
44
39
  * @tsplus type fncts.io.Fiber
45
40
  */
46
41
  export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
47
- readonly _E!: () => E;
48
- readonly _A!: () => A;
49
- readonly _typeId: FiberTypeId = FiberTypeId;
50
- readonly _tag = "RuntimeFiber";
42
+ readonly [FiberTypeId]: FiberTypeId = FiberTypeId;
43
+ declare [FiberVariance]: {
44
+ readonly _E: (_: never) => E;
45
+ readonly _A: (_: never) => A;
46
+ };
47
+ readonly _tag = "RuntimeFiber";
48
+
51
49
  constructor(readonly fiberId: FiberId.Runtime, fiberRefs0: FiberRefs, readonly runtimeFlags0: RuntimeFlags) {
52
50
  this._fiberRefs = fiberRefs0;
53
51
  this._runtimeFlags = runtimeFlags0;
@@ -269,7 +267,7 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
269
267
  }
270
268
  } catch (e) {
271
269
  if (isIO(e)) {
272
- if (IO.concrete(e)._tag === IOTag.YieldNow) {
270
+ if (IO.concrete(e).ioOpCode === IOOpCode.YieldNow) {
273
271
  if (this._runtimeFlags.cooperativeYielding) {
274
272
  this.tell(FiberMessage.YieldNow);
275
273
  this.tell(FiberMessage.Resume(IO.unit));
@@ -277,10 +275,10 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
277
275
  } else {
278
276
  effect = IO.unit;
279
277
  }
280
- } else if (IO.concrete(e)._tag === IOTag.Async) {
278
+ } else if (IO.concrete(e).ioOpCode === IOOpCode.Async) {
281
279
  effect = null!;
282
280
  } else {
283
- throw new Error(`Unhandled op ${IO.concrete(e)._tag}`);
281
+ throw new Error(`Unhandled op ${IO.concrete(e).ioOpCode}`);
284
282
  }
285
283
  } else {
286
284
  throw e;
@@ -317,18 +315,18 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
317
315
  cur = IO.concrete(IO.yieldNow.flatMap(() => oldCur, trace));
318
316
  }
319
317
  try {
320
- switch (cur._tag) {
321
- case IOTag.Sync: {
318
+ switch (cur.ioOpCode) {
319
+ case IOOpCode.Sync: {
322
320
  const value = cur.evaluate();
323
321
  const cont = this.getNextSuccessCont();
324
322
  if (cont) {
325
- switch (cont._tag) {
326
- case IOTag.OnSuccess:
327
- case IOTag.OnSuccessAndFailure: {
323
+ switch (cont.ioOpCode) {
324
+ case IOOpCode.OnSuccess:
325
+ case IOOpCode.OnSuccessAndFailure: {
328
326
  cur = IO.concrete(cont.successK(value));
329
327
  break;
330
328
  }
331
- case IOTag.WhileLoop: {
329
+ case IOOpCode.WhileLoop: {
332
330
  cont.process(value);
333
331
  if (cont.check()) {
334
332
  this.stack.push(cont);
@@ -338,7 +336,7 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
338
336
  }
339
337
  break;
340
338
  }
341
- case ContinuationTag.RevertFlags: {
339
+ case IOOpCode.RevertFlags: {
342
340
  this.patchRuntimeFlags(this._runtimeFlags, cont.patch);
343
341
  if (this._runtimeFlags.interruptible && this.isInterrupted()) {
344
342
  cur = IO.concrete(IO.failCauseNow(this.getInterruptedCause()));
@@ -347,7 +345,7 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
347
345
  }
348
346
  break;
349
347
  }
350
- case ContinuationTag.UpdateTrace: {
348
+ case IOOpCode.UpdateTrace: {
351
349
  if (cont.trace !== undefined) lastTrace = cont.trace;
352
350
  cur = IO.concrete(IO.unit);
353
351
  break;
@@ -358,20 +356,20 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
358
356
  }
359
357
  break;
360
358
  }
361
- case IOTag.OnSuccessAndFailure:
362
- case IOTag.OnFailure:
363
- case IOTag.OnSuccess: {
359
+ case IOOpCode.OnSuccessAndFailure:
360
+ case IOOpCode.OnFailure:
361
+ case IOOpCode.OnSuccess: {
364
362
  this.stack.push(cur);
365
363
  cur = IO.concrete(cur.first);
366
364
  break;
367
365
  }
368
- case IOTag.Async: {
366
+ case IOOpCode.Async: {
369
367
  this.asyncTrace = lastTrace;
370
368
  this.asyncBlockinOn = cur.blockingOn();
371
369
  this.initiateAsync(this._runtimeFlags, cur.registerCallback);
372
370
  throw cur;
373
371
  }
374
- case IOTag.UpdateRuntimeFlagsWithin: {
372
+ case IOOpCode.UpdateRuntimeFlagsWithin: {
375
373
  const updateFlags = cur.update;
376
374
  const oldRuntimeFlags = this._runtimeFlags;
377
375
  const newRuntimeFlags = updateFlags.patch(oldRuntimeFlags);
@@ -390,25 +388,25 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
390
388
  }
391
389
  break;
392
390
  }
393
- case IOTag.GenerateStackTrace: {
391
+ case IOOpCode.GenerateStackTrace: {
394
392
  cur = IO.concrete(IO.succeedNow(this.generateStackTrace()));
395
393
  break;
396
394
  }
397
- case IOTag.Stateful: {
395
+ case IOOpCode.Stateful: {
398
396
  cur = IO.concrete(cur.onState(this, new Running(this._runtimeFlags, lastTrace)));
399
397
  break;
400
398
  }
401
- case IOTag.SucceedNow: {
399
+ case IOOpCode.SucceedNow: {
402
400
  const oldCur = cur;
403
401
  const cont = this.getNextSuccessCont();
404
402
  if (cont) {
405
- switch (cont._tag) {
406
- case IOTag.OnSuccess:
407
- case IOTag.OnSuccessAndFailure: {
403
+ switch (cont.ioOpCode) {
404
+ case IOOpCode.OnSuccess:
405
+ case IOOpCode.OnSuccessAndFailure: {
408
406
  cur = IO.concrete(cont.successK(oldCur.value));
409
407
  break;
410
408
  }
411
- case IOTag.WhileLoop: {
409
+ case IOOpCode.WhileLoop: {
412
410
  cont.process(oldCur.value);
413
411
  if (cont.check()) {
414
412
  this.stack.push(cont);
@@ -418,14 +416,14 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
418
416
  }
419
417
  break;
420
418
  }
421
- case ContinuationTag.RevertFlags: {
419
+ case IOOpCode.RevertFlags: {
422
420
  this.patchRuntimeFlags(this._runtimeFlags, cont.patch);
423
421
  if (this._runtimeFlags.interruptible && this.isInterrupted()) {
424
422
  cur = IO.concrete(IO.failCauseNow(this.getInterruptedCause()));
425
423
  }
426
424
  break;
427
425
  }
428
- case ContinuationTag.UpdateTrace: {
426
+ case IOOpCode.UpdateTrace: {
429
427
  if (cont.trace !== undefined) lastTrace = cont.trace;
430
428
  cur = IO.concrete(IO.unit);
431
429
  break;
@@ -436,13 +434,13 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
436
434
  }
437
435
  break;
438
436
  }
439
- case IOTag.Fail: {
437
+ case IOOpCode.Fail: {
440
438
  const cause = cur.cause();
441
439
  const cont = this.getNextFailCont();
442
440
  if (cont) {
443
- switch (cont._tag) {
444
- case IOTag.OnFailure:
445
- case IOTag.OnSuccessAndFailure: {
441
+ switch (cont.ioOpCode) {
442
+ case IOOpCode.OnFailure:
443
+ case IOOpCode.OnSuccessAndFailure: {
446
444
  if (!(this._runtimeFlags.interruptible && this.isInterrupted())) {
447
445
  cur = IO.concrete(cont.failureK(cause));
448
446
  } else {
@@ -450,7 +448,7 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
450
448
  }
451
449
  break;
452
450
  }
453
- case ContinuationTag.RevertFlags: {
451
+ case IOOpCode.RevertFlags: {
454
452
  this.patchRuntimeFlags(this._runtimeFlags, cont.patch);
455
453
  if (this._runtimeFlags.interruptible && this.isInterrupted()) {
456
454
  const interruptedCause = this.getInterruptedCause();
@@ -462,7 +460,7 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
462
460
  }
463
461
  break;
464
462
  }
465
- case ContinuationTag.UpdateTrace: {
463
+ case IOOpCode.UpdateTrace: {
466
464
  if (cont.trace !== undefined) lastTrace = cont.trace;
467
465
  cur = IO.concrete(IO.unit);
468
466
  break;
@@ -473,12 +471,12 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
473
471
  }
474
472
  break;
475
473
  }
476
- case IOTag.UpdateRuntimeFlags: {
474
+ case IOOpCode.UpdateRuntimeFlags: {
477
475
  this.patchRuntimeFlags(this._runtimeFlags, cur.update);
478
476
  cur = IO.concrete(IO.unit);
479
477
  break;
480
478
  }
481
- case IOTag.WhileLoop: {
479
+ case IOOpCode.WhileLoop: {
482
480
  const iterate = cur;
483
481
  const check = iterate.check;
484
482
  const body = iterate.body;
@@ -490,14 +488,20 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
490
488
  }
491
489
  break;
492
490
  }
493
- case IOTag.YieldNow: {
491
+ case IOOpCode.YieldNow: {
494
492
  throw cur;
495
493
  }
494
+ case IOOpCode.Commit: {
495
+ cur = IO.concrete(cur.commit);
496
+ }
496
497
  }
497
498
  } catch (e) {
498
499
  if (isIOError(e)) {
499
500
  cur = IO.concrete(IO.failCauseNow(e.cause));
500
- } else if (isIO(e) && (IO.concrete(e)._tag === IOTag.Async || IO.concrete(e)._tag === IOTag.YieldNow)) {
501
+ } else if (
502
+ isIO(e) &&
503
+ (IO.concrete(e).ioOpCode === IOOpCode.Async || IO.concrete(e).ioOpCode === IOOpCode.YieldNow)
504
+ ) {
501
505
  throw e;
502
506
  } else if (isInterruptedException(e)) {
503
507
  cur = IO.concrete(IO.failCauseNow(Cause.both(Cause.halt(e), Cause.interrupt(FiberId.none))));
@@ -795,7 +799,7 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
795
799
  getNextSuccessCont() {
796
800
  while (this.stack.hasNext) {
797
801
  const frame = this.stack.pop()!;
798
- if (frame._tag !== IOTag.OnFailure) {
802
+ if (frame.ioOpCode !== IOOpCode.OnFailure) {
799
803
  return frame;
800
804
  }
801
805
  }
@@ -804,7 +808,7 @@ export class FiberRuntime<E, A> implements Fiber.Runtime<E, A> {
804
808
  getNextFailCont() {
805
809
  while (this.stack.hasNext) {
806
810
  const frame = this.stack.pop()!;
807
- if (frame._tag !== IOTag.OnSuccess && frame._tag !== IOTag.WhileLoop) {
811
+ if (frame.ioOpCode !== IOOpCode.OnSuccess && frame.ioOpCode !== IOOpCode.WhileLoop) {
808
812
  return frame;
809
813
  }
810
814
  }
@@ -3,9 +3,11 @@ import type { FiberRuntime } from "@fncts/io/Fiber/FiberRuntime";
3
3
  import type { FiberStatus } from "@fncts/io/FiberStatus";
4
4
  import type { UIO } from "@fncts/io/IO/definition";
5
5
 
6
- import { IterableWeakMap } from "@fncts/base/collection/weak/IterableWeakMap";
7
6
  import { IterableWeakSet } from "@fncts/base/collection/weak/IterableWeakSet";
8
7
 
8
+ export const FiberVariance = Symbol.for("fncts.io.Fiber.Variance");
9
+ export type FiberVariance = typeof FiberVariance;
10
+
9
11
  export const FiberTypeId = Symbol.for("fncts.io.Fiber");
10
12
  export type FiberTypeId = typeof FiberTypeId;
11
13
 
@@ -13,9 +15,11 @@ export type FiberTypeId = typeof FiberTypeId;
13
15
  * @tsplus type fncts.io.Fiber
14
16
  */
15
17
  export interface Fiber<E, A> {
16
- readonly _typeId: FiberTypeId;
17
- readonly _E: () => E;
18
- readonly _A: () => A;
18
+ readonly [FiberTypeId]: FiberTypeId;
19
+ readonly [FiberVariance]: {
20
+ readonly _E: (_: never) => E;
21
+ readonly _A: (_: never) => A;
22
+ };
19
23
  }
20
24
 
21
25
  /**
@@ -90,9 +94,12 @@ export interface RuntimeFiber<E, A> extends FiberCommon<E, A> {
90
94
  export class SyntheticFiber<E, A> implements FiberCommon<E, A> {
91
95
  readonly _tag = "SyntheticFiber";
92
96
 
93
- readonly _typeId: FiberTypeId = FiberTypeId;
94
- readonly _E!: () => E;
95
- readonly _A!: () => A;
97
+ readonly [FiberTypeId]: FiberTypeId = FiberTypeId;
98
+ declare [FiberVariance]: {
99
+ readonly _E: (_: never) => E;
100
+ readonly _A: (_: never) => A;
101
+ };
102
+
96
103
  readonly await;
97
104
 
98
105
  constructor(
@@ -118,7 +125,7 @@ export function concrete<E, A>(_fiber: Fiber<E, A>): asserts _fiber is ConcreteF
118
125
  }
119
126
 
120
127
  export function isFiber(u: unknown): u is Fiber<unknown, unknown> {
121
- return hasTypeId(u, FiberTypeId);
128
+ return isObject(u) && FiberTypeId in u;
122
129
  }
123
130
 
124
131
  /**
@@ -1,6 +1,9 @@
1
1
  import { AtomicNumber } from "@fncts/base/internal/AtomicNumber";
2
2
 
3
- export const FiberRefTypeId = Symbol.for("fncts.FiberRef");
3
+ export const FiberRefVariance = Symbol.for("fncts.io.FiberRef.Variance");
4
+ export type FiberRefVariance = typeof FiberRefVariance;
5
+
6
+ export const FiberRefTypeId = Symbol.for("fncts.io.FiberRef");
4
7
  export type FiberRefTypeId = typeof FiberRefTypeId;
5
8
 
6
9
  /**
@@ -8,8 +11,10 @@ export type FiberRefTypeId = typeof FiberRefTypeId;
8
11
  * @tsplus companion fncts.io.FiberRefOps
9
12
  */
10
13
  export abstract class FiberRef<Value> {
11
- readonly _typeId: FiberRefTypeId = FiberRefTypeId;
12
- readonly _A!: () => Value;
14
+ readonly [FiberRefTypeId]: FiberRefTypeId = FiberRefTypeId;
15
+ declare [FiberRefVariance]: {
16
+ readonly _Value: (_: Value) => Value;
17
+ };
13
18
  readonly _Patch!: unknown;
14
19
  }
15
20
 
@@ -50,7 +55,7 @@ export class FiberRefInternal<Value, Patch> extends FiberRef<Value> implements H
50
55
  }
51
56
 
52
57
  export function isFiberRef(u: unknown): u is FiberRef<unknown> {
53
- return hasTypeId(u, FiberRefTypeId);
58
+ return isObject(u) && FiberRefTypeId in u;
54
59
  }
55
60
 
56
61
  type Concrete<Value, Patch> = FiberRefInternal<Value, Patch>;