@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,7 +1,8 @@
1
1
  import type { Atomic as Atomic_ } from "./Atomic.js";
2
2
  import type * as Synchro from "./Synchronized/definition.js";
3
3
 
4
- import { _A, _B, _EA, _EB, _RA, _RB } from "./symbols.js";
4
+ export const RefVariance = Symbol.for("fncts.io.Ref.Variance");
5
+ export type RefVariance = typeof RefVariance;
5
6
 
6
7
  export const RefTypeId = Symbol.for("fncts.io.Ref");
7
8
  export type RefTypeId = typeof RefTypeId;
@@ -11,12 +12,14 @@ export type RefTypeId = typeof RefTypeId;
11
12
  */
12
13
  export interface PRef<RA, RB, EA, EB, A, B> {
13
14
  readonly [RefTypeId]: RefTypeId;
14
- readonly [_RA]: () => RA;
15
- readonly [_RB]: () => RB;
16
- readonly [_EA]: () => EA;
17
- readonly [_EB]: () => EB;
18
- readonly [_A]: (_: A) => void;
19
- readonly [_B]: () => B;
15
+ readonly [RefVariance]: {
16
+ readonly _RA: (_: never) => RA;
17
+ readonly _RB: (_: never) => RB;
18
+ readonly _EA: (_: never) => EA;
19
+ readonly _EB: (_: never) => EB;
20
+ readonly _A: (_: A) => void;
21
+ readonly _B: (_: never) => B;
22
+ };
20
23
  }
21
24
 
22
25
  export type Ref<A> = PRef<never, never, never, never, A, A>;
@@ -43,26 +46,32 @@ export interface RefOps {}
43
46
  export const Ref: RefOps = {};
44
47
 
45
48
  export interface ReadableRef<RB, EB, B> {
46
- readonly [_RB]: () => RB;
47
- readonly [_EB]: () => EB;
48
- readonly [_B]: () => B;
49
+ readonly [RefVariance]: {
50
+ readonly _RB: (_: never) => RB;
51
+ readonly _EB: (_: never) => EB;
52
+ readonly _B: (_: never) => B;
53
+ };
49
54
  readonly get: IO<RB, EB, B>;
50
55
  }
51
56
 
52
57
  export interface WritableRef<RA, EA, A> {
53
- readonly [_RA]: () => RA;
54
- readonly [_EA]: () => EA;
55
- readonly [_A]: (_: A) => void;
58
+ readonly [RefVariance]: {
59
+ readonly _RA: (_: never) => RA;
60
+ readonly _EA: (_: never) => EA;
61
+ readonly _A: (_: A) => void;
62
+ };
56
63
  set(a: A, __tsplusTrace?: string): IO<RA, EA, void>;
57
64
  }
58
65
 
59
66
  export interface ModifiableRef<RA, RB, EA, EB, A, B> {
60
- readonly [_RA]: () => RA;
61
- readonly [_RB]: () => RB;
62
- readonly [_EA]: () => EA;
63
- readonly [_EB]: () => EB;
64
- readonly [_A]: (_: A) => void;
65
- readonly [_B]: () => B;
67
+ readonly [RefVariance]: {
68
+ readonly _RA: (_: never) => RA;
69
+ readonly _RB: (_: never) => RB;
70
+ readonly _EA: (_: never) => EA;
71
+ readonly _EB: (_: never) => EB;
72
+ readonly _A: (_: A) => void;
73
+ readonly _B: (_: never) => B;
74
+ };
66
75
  modify<C>(f: (b: B) => readonly [C, A], __tsplusTrace?: string): IO<RA | RB, EA | EB, C>;
67
76
  }
68
77
 
@@ -74,12 +83,14 @@ export abstract class RefInternal<RA, RB, EA, EB, A, B>
74
83
  ModifiableRef<RA, RB, EA, EB, A, B>
75
84
  {
76
85
  readonly [RefTypeId]: RefTypeId = RefTypeId;
77
- declare [_RA]: () => RA;
78
- declare [_RB]: () => RB;
79
- declare [_EA]: () => EA;
80
- declare [_EB]: () => EB;
81
- declare [_A]: (_: A) => void;
82
- declare [_B]: () => B;
86
+ declare [RefVariance]: {
87
+ readonly _RA: (_: never) => RA;
88
+ readonly _RB: (_: never) => RB;
89
+ readonly _EA: (_: never) => EA;
90
+ readonly _EB: (_: never) => EB;
91
+ readonly _A: (_: A) => void;
92
+ readonly _B: (_: never) => B;
93
+ };
83
94
 
84
95
  /**
85
96
  * Folds over the error and value types of the `Ref`. This is a highly
package/_src/Ref.ts CHANGED
@@ -5,7 +5,6 @@ export * from "./Ref/constructors.js";
5
5
  export * from "./Ref/definition.js";
6
6
  export * from "./Ref/Derived.js";
7
7
  export * from "./Ref/DerivedAll.js";
8
- export * from "./Ref/symbols.js";
9
8
  export * from "./Ref/Synchronized.js";
10
9
  // codegen:end
11
10
 
@@ -3,12 +3,14 @@ import type { Push } from "../Push.js";
3
3
  import type { ModifiableRef, ReadableRef, WritableRef } from "../Ref.js";
4
4
  import type { SynchronizedRefSubject } from "@fncts/io/RefSubject/Synchronized/definition";
5
5
 
6
+ import { PushTypeId } from "../Push.js";
7
+ import { PushVariance } from "../Push.js";
8
+ import { RefVariance } from "../Ref.js";
9
+
6
10
  /**
7
11
  * @tsplus type fncts.io.Push.RefSubject
8
12
  */
9
- export interface RefSubject<out R, in out E, in A, out B> extends Push<R, E, B>, Emitter<R, E, A> {
10
- readonly _A: (_: A) => B;
11
- }
13
+ export interface RefSubject<out R, in out E, in A, out B> extends Push<R, E, B>, Emitter<R, E, A> {}
12
14
 
13
15
  /**
14
16
  * @tsplus type fncts.io.Push.RefSubjectOps
@@ -29,15 +31,20 @@ export abstract class RefSubjectInternal<R, E, A, B>
29
31
  Push<R, E, B>,
30
32
  Emitter<R, E, A>
31
33
  {
32
- declare [Ref._RA]: () => R;
33
- declare [Ref._RB]: () => R;
34
- declare [Ref._EA]: () => never;
35
- declare [Ref._EB]: () => never;
36
- declare [Ref._A]: (_: A) => void;
37
- declare [Ref._B]: () => B;
38
- declare _R: (_: never) => R;
39
- declare _E: (_: never) => E;
40
- declare _A: (_: A) => B;
34
+ readonly [PushTypeId]: PushTypeId = PushTypeId;
35
+ declare [RefVariance]: {
36
+ readonly _RA: (_: never) => R;
37
+ readonly _RB: (_: never) => R;
38
+ readonly _EA: (_: never) => never;
39
+ readonly _EB: (_: never) => never;
40
+ readonly _A: (_: A) => void;
41
+ readonly _B: (_: never) => B;
42
+ };
43
+ declare [PushVariance]: {
44
+ readonly _R: (_: never) => R;
45
+ readonly _E: (_: never) => E;
46
+ readonly _A: (_: A) => B;
47
+ };
41
48
 
42
49
  abstract get get(): IO<R, never, B>;
43
50
 
@@ -1,11 +1,16 @@
1
1
  import { IterableWeakMap } from "@fncts/base/collection/weak/IterableWeakMap";
2
2
 
3
+ export const ReloadableVariance = Symbol.for("fncts.io.Reloadable");
4
+ export type ReloadableVariance = typeof ReloadableVariance;
5
+
3
6
  /**
4
7
  * @tsplus type fncts.io.Reloadable
5
8
  * @tsplus companion fncts.io.ReloadableOps
6
9
  */
7
10
  export class Reloadable<Service> {
8
- declare _Service: (_: never) => Service;
11
+ declare [ReloadableVariance]: {
12
+ readonly _Service: (_: never) => Service;
13
+ };
9
14
  constructor(readonly scopedRef: ScopedRef<Service>, readonly reload: IO<never, unknown, void>) {}
10
15
 
11
16
  get get(): UIO<Service> {
@@ -0,0 +1,43 @@
1
+ import { AtomicReference } from "@fncts/base/internal/AtomicReference";
2
+ import { CommitState } from "@fncts/io/STM/internal/CommitState";
3
+ import { tryCommitAsync, tryCommitSync } from "@fncts/io/STM/internal/Journal";
4
+ import { TryCommitTag } from "@fncts/io/STM/internal/TryCommit";
5
+ import { TxnId } from "@fncts/io/TxnId";
6
+
7
+ /**
8
+ * @tsplus static fncts.io.STMOps atomically
9
+ * @tsplus getter fncts.io.STM commit
10
+ */
11
+ export function atomically<R, E, A>(stm: STM<R, E, A>, __tsplusTrace?: string): IO<R, E, A> {
12
+ return IO.environmentWithIO((r: Environment<R>) =>
13
+ FiberRef.currentScheduler.getWith((scheduler) =>
14
+ IO.fiberId.flatMap((fiberId) => {
15
+ const result = tryCommitSync(fiberId, stm, r, scheduler);
16
+ switch (result._tag) {
17
+ case TryCommitTag.Done: {
18
+ return IO.fromExitNow(result.exit);
19
+ }
20
+ case TryCommitTag.Suspend: {
21
+ const id = TxnId.make();
22
+ const state = new AtomicReference<CommitState<E, A>>(CommitState.Running);
23
+ const async = IO.async(tryCommitAsync(result.journal, fiberId, stm, id, state, r, scheduler));
24
+ return IO.uninterruptibleMask(({ restore }) =>
25
+ restore(async).catchAllCause((cause) => {
26
+ state.compareAndSet(CommitState.Running, CommitState.Interrupted);
27
+ const newState = state.get;
28
+ switch (newState._tag) {
29
+ case "Done": {
30
+ return IO.fromExitNow(newState.exit);
31
+ }
32
+ default: {
33
+ return IO.failCauseNow(cause);
34
+ }
35
+ }
36
+ }),
37
+ );
38
+ }
39
+ }
40
+ }),
41
+ ),
42
+ );
43
+ }
package/_src/STM/api.ts CHANGED
@@ -85,44 +85,6 @@ export function environmentWithSTM<R0, R, E, A>(f: (r: Environment<R0>) => STM<R
85
85
  return STM.environment<R0>().flatMap(f);
86
86
  }
87
87
 
88
- /**
89
- * @tsplus static fncts.io.STMOps atomically
90
- * @tsplus getter fncts.io.STM commit
91
- */
92
- export function atomically<R, E, A>(stm: STM<R, E, A>, __tsplusTrace?: string): IO<R, E, A> {
93
- return IO.environmentWithIO((r: Environment<R>) =>
94
- FiberRef.currentScheduler.getWith((scheduler) =>
95
- IO.fiberId.flatMap((fiberId) => {
96
- const result = tryCommitSync(fiberId, stm, r, scheduler);
97
- switch (result._tag) {
98
- case TryCommitTag.Done: {
99
- return IO.fromExitNow(result.exit);
100
- }
101
- case TryCommitTag.Suspend: {
102
- const id = TxnId.make();
103
- const state = new AtomicReference<CommitState<E, A>>(CommitState.Running);
104
- const async = IO.async(tryCommitAsync(result.journal, fiberId, stm, id, state, r, scheduler));
105
- return IO.uninterruptibleMask(({ restore }) =>
106
- restore(async).catchAllCause((cause) => {
107
- state.compareAndSet(CommitState.Running, CommitState.Interrupted);
108
- const newState = state.get;
109
- switch (newState._tag) {
110
- case "Done": {
111
- return IO.fromExitNow(newState.exit);
112
- }
113
- default: {
114
- return IO.failCauseNow(cause);
115
- }
116
- }
117
- }),
118
- );
119
- }
120
- }
121
- }),
122
- ),
123
- );
124
- }
125
-
126
88
  /**
127
89
  * Returns an `STM` effect whose failure and success channels have been mapped by
128
90
  * the specified pair of functions, `f` and `g`.
@@ -736,3 +698,23 @@ export function zipWith<A, R1, E1, B, C>(that: STM<R1, E1, B>, f: (a: A, b: B) =
736
698
  return self.flatMap((a) => that.map((b) => f(a, b)));
737
699
  };
738
700
  }
701
+
702
+ /**
703
+ * @tsplus pipeable fncts.io.STM zipLeft
704
+ * @tsplus opipeable-operator fncts.io.STM <
705
+ */
706
+ export function zipLeft<R1, E1, B>(that: STM<R1, E1, B>, __tsplusTrace?: string) {
707
+ return <R, E, A>(self: STM<R, E, A>): STM<R | R1, E | E1, A> => {
708
+ return self.flatMap((a) => that.as(a));
709
+ };
710
+ }
711
+
712
+ /**
713
+ * @tsplus pipeable fncts.io.STM zipRight
714
+ * @tsplus pipeable-operator fncts.io.STM >
715
+ */
716
+ export function zipRight<R1, E1, B>(that: STM<R1, E1, B>, __tsplusTrace?: string) {
717
+ return <R, E, A>(self: STM<R, E, A>): STM<R | R1, E | E1, B> => {
718
+ return self.flatMap(() => that);
719
+ };
720
+ }
@@ -1,7 +1,7 @@
1
1
  import type { Journal } from "./internal/Journal.js";
2
2
  import type { _A, _E, _R } from "@fncts/base/types";
3
3
 
4
- import { hasTypeId } from "@fncts/base/util/predicates";
4
+ import { IOOpCode, IOTypeId, IOVariance } from "@fncts/io/IO/definition";
5
5
 
6
6
  export const enum STMTag {
7
7
  Effect = "Effect",
@@ -13,6 +13,9 @@ export const enum STMTag {
13
13
  ContramapEnvironment = "ContramapEnvironment",
14
14
  }
15
15
 
16
+ export const STMVariance = Symbol.for("fncts.io.STM.Variance");
17
+ export type STMVariance = typeof STMVariance;
18
+
16
19
  export const STMTypeId = Symbol.for("fncts.io.STM");
17
20
  export type STMTypeId = typeof STMTypeId;
18
21
 
@@ -21,10 +24,20 @@ export type STMTypeId = typeof STMTypeId;
21
24
  * @tsplus companion fncts.io.STMOps
22
25
  */
23
26
  export abstract class STM<R, E, A> {
24
- readonly _typeId: STMTypeId = STMTypeId;
25
- readonly _R!: () => R;
26
- readonly _E!: () => E;
27
- readonly _A!: () => A;
27
+ readonly [IOTypeId]: IOTypeId = IOTypeId;
28
+ readonly ioOpCode = IOOpCode.Commit;
29
+ readonly trace?: string;
30
+ readonly [STMTypeId]: STMTypeId = STMTypeId;
31
+ declare [IOVariance]: {
32
+ _R: () => R;
33
+ _E: () => E;
34
+ _A: () => A;
35
+ };
36
+ declare [STMVariance]: {
37
+ _R: () => R;
38
+ _E: () => E;
39
+ _A: () => A;
40
+ };
28
41
  }
29
42
 
30
43
  /**
@@ -40,14 +53,14 @@ export function unifySTM<X extends STM<any, any, any>>(self: X): STM<_R<X>, _E<X
40
53
  export interface USTM<A> extends STM<never, never, A> {}
41
54
 
42
55
  export class Effect<R, E, A> extends STM<R, E, A> {
43
- readonly _tag = STMTag.Effect;
56
+ readonly stmOpCode = STMTag.Effect;
44
57
  constructor(readonly f: (journal: Journal, fiberId: FiberId, r: Environment<R>) => A) {
45
58
  super();
46
59
  }
47
60
  }
48
61
 
49
62
  export class OnFailure<R, E, A, E1> extends STM<R, E1, A> {
50
- readonly _tag = STMTag.OnFailure;
63
+ readonly stmOpCode = STMTag.OnFailure;
51
64
  constructor(readonly stm: STM<R, E, A>, readonly onFailure: (e: E) => STM<R, E1, A>) {
52
65
  super();
53
66
  }
@@ -57,7 +70,7 @@ export class OnFailure<R, E, A, E1> extends STM<R, E1, A> {
57
70
  }
58
71
 
59
72
  export class OnRetry<R, E, A> extends STM<R, E, A> {
60
- readonly _tag = STMTag.OnRetry;
73
+ readonly stmOpCode = STMTag.OnRetry;
61
74
  constructor(readonly stm: STM<R, E, A>, readonly onRetry: STM<R, E, A>) {
62
75
  super();
63
76
  }
@@ -67,28 +80,28 @@ export class OnRetry<R, E, A> extends STM<R, E, A> {
67
80
  }
68
81
 
69
82
  export class OnSuccess<R, E, A, B> extends STM<R, E, B> {
70
- readonly _tag = STMTag.OnSuccess;
83
+ readonly stmOpCode = STMTag.OnSuccess;
71
84
  constructor(readonly stm: STM<R, E, A>, readonly apply: (a: A) => STM<R, E, B>) {
72
85
  super();
73
86
  }
74
87
  }
75
88
 
76
89
  export class Succeed<A> extends STM<never, never, A> {
77
- readonly _tag = STMTag.Succeed;
90
+ readonly stmOpCode = STMTag.Succeed;
78
91
  constructor(readonly a: () => A) {
79
92
  super();
80
93
  }
81
94
  }
82
95
 
83
96
  export class SucceedNow<A> extends STM<never, never, A> {
84
- readonly _tag = STMTag.SucceedNow;
97
+ readonly stmOpCode = STMTag.SucceedNow;
85
98
  constructor(readonly a: A) {
86
99
  super();
87
100
  }
88
101
  }
89
102
 
90
103
  export class ContramapEnvironment<R, E, A, R0> extends STM<R0, E, A> {
91
- readonly _tag = STMTag.ContramapEnvironment;
104
+ readonly stmOpCode = STMTag.ContramapEnvironment;
92
105
  constructor(readonly stm: STM<R, E, A>, readonly f: (_: Environment<R0>) => Environment<R>) {
93
106
  super();
94
107
  }
@@ -111,45 +124,45 @@ export const FailExceptionTypeId = Symbol.for("fncta.control.STM.FailException")
111
124
  export type FailExceptionTypeId = typeof FailExceptionTypeId;
112
125
 
113
126
  export class FailException<E> {
114
- readonly _typeId: FailExceptionTypeId = FailExceptionTypeId;
127
+ readonly [FailExceptionTypeId]: FailExceptionTypeId = FailExceptionTypeId;
115
128
  constructor(readonly e: E) {}
116
129
  }
117
130
 
118
131
  export function isFailException(u: unknown): u is FailException<unknown> {
119
- return hasTypeId(u, FailExceptionTypeId);
132
+ return isObject(u) && FailExceptionTypeId in u;
120
133
  }
121
134
 
122
135
  export const HaltExceptionTypeId = Symbol.for("fncts.io.STM.HaltException");
123
136
  export type HaltExceptionTypeId = typeof HaltExceptionTypeId;
124
137
 
125
138
  export class HaltException<E> {
126
- readonly _typeId: HaltExceptionTypeId = HaltExceptionTypeId;
139
+ readonly [HaltExceptionTypeId]: HaltExceptionTypeId = HaltExceptionTypeId;
127
140
  constructor(readonly e: E) {}
128
141
  }
129
142
 
130
143
  export function isHaltException(u: unknown): u is HaltException<unknown> {
131
- return hasTypeId(u, HaltExceptionTypeId);
144
+ return isObject(u) && HaltExceptionTypeId in u;
132
145
  }
133
146
 
134
147
  export const InterruptExceptionTypeId = Symbol.for("fncts.io.STM.InterruptException");
135
148
  export type InterruptExceptionTypeId = typeof InterruptExceptionTypeId;
136
149
 
137
150
  export class InterruptException {
138
- readonly _typeId: InterruptExceptionTypeId = InterruptExceptionTypeId;
151
+ readonly [InterruptExceptionTypeId]: InterruptExceptionTypeId = InterruptExceptionTypeId;
139
152
  constructor(readonly fiberId: FiberId) {}
140
153
  }
141
154
 
142
155
  export function isInterruptException(u: unknown): u is InterruptException {
143
- return hasTypeId(u, InterruptExceptionTypeId);
156
+ return isObject(u) && InterruptExceptionTypeId in u;
144
157
  }
145
158
 
146
159
  export const RetryExceptionTypeId = Symbol.for("fncts.io.STM.RetryException");
147
160
  export type RetryExceptionTypeId = typeof RetryExceptionTypeId;
148
161
 
149
162
  export class RetryException {
150
- readonly _typeId: RetryExceptionTypeId = RetryExceptionTypeId;
163
+ readonly [RetryExceptionTypeId]: RetryExceptionTypeId = RetryExceptionTypeId;
151
164
  }
152
165
 
153
166
  export function isRetryException(u: unknown): u is RetryException {
154
- return hasTypeId(u, RetryExceptionTypeId);
167
+ return isObject(u) && RetryExceptionTypeId in u;
155
168
  }
@@ -25,12 +25,12 @@ export class STMDriver<R, E, A> {
25
25
  let result: Erased | undefined = undefined;
26
26
  while (this.contStack.hasNext && !result) {
27
27
  const cont = this.contStack.pop()!;
28
- if (cont._tag === STMTag.OnFailure) {
28
+ if (cont.stmOpCode === STMTag.OnFailure) {
29
29
  if (!isRetry) {
30
30
  result = cont.onFailure(error);
31
31
  }
32
32
  }
33
- if (cont._tag === STMTag.OnRetry) {
33
+ if (cont.stmOpCode === STMTag.OnRetry) {
34
34
  if (isRetry) {
35
35
  result = cont.onRetry;
36
36
  }
@@ -46,7 +46,7 @@ export class STMDriver<R, E, A> {
46
46
  while (!exit && curr) {
47
47
  const k = curr;
48
48
  concrete(k);
49
- switch (k._tag) {
49
+ switch (k.stmOpCode) {
50
50
  case STMTag.Succeed: {
51
51
  const a = k.a();
52
52
  if (!this.contStack.hasNext) {
@@ -10,7 +10,7 @@ export type EntryTypeId = typeof EntryTypeId;
10
10
  * @tsplus companion fncts.io.EntryOps
11
11
  */
12
12
  export class Entry {
13
- readonly _typeId: EntryTypeId = EntryTypeId;
13
+ readonly [EntryTypeId]: EntryTypeId = EntryTypeId;
14
14
  constructor(readonly use: <X>(f: <S>(entry: ConcreteEntry<S>) => X) => X) {}
15
15
  }
16
16
 
@@ -27,7 +27,7 @@ export const ConcreteEntryTypeId = Symbol.for("fncts.io.ConcreteEntry");
27
27
  export type ConcreteEntryTypeId = typeof ConcreteEntryTypeId;
28
28
 
29
29
  export class ConcreteEntry<S> {
30
- readonly _typeId: ConcreteEntryTypeId = ConcreteEntryTypeId;
30
+ readonly [ConcreteEntryTypeId]: ConcreteEntryTypeId = ConcreteEntryTypeId;
31
31
  constructor(
32
32
  readonly tref: Atomic<S>,
33
33
  readonly expected: Versioned<S>,
@@ -11,13 +11,13 @@ export const enum TryCommitTag {
11
11
  }
12
12
 
13
13
  export class Done<E, A> {
14
- readonly _typeId: TryCommitTypeId = TryCommitTypeId;
15
- readonly _tag = TryCommitTag.Done;
14
+ readonly [TryCommitTypeId]: TryCommitTypeId = TryCommitTypeId;
15
+ readonly _tag = TryCommitTag.Done;
16
16
  constructor(readonly exit: Exit<E, A>) {}
17
17
  }
18
18
 
19
19
  export class Suspend {
20
- readonly _typeId: TryCommitTypeId = TryCommitTypeId;
21
- readonly _tag = TryCommitTag.Suspend;
20
+ readonly [TryCommitTypeId]: TryCommitTypeId = TryCommitTypeId;
21
+ readonly _tag = TryCommitTag.Suspend;
22
22
  constructor(readonly journal: Journal) {}
23
23
  }
@@ -2,6 +2,6 @@ export const VersionedTypeId = Symbol.for("fncts.io.Versioned");
2
2
  export type VersionedTypeId = typeof VersionedTypeId;
3
3
 
4
4
  export class Versioned<A> {
5
- readonly _typeId: VersionedTypeId = VersionedTypeId;
5
+ readonly [VersionedTypeId]: VersionedTypeId = VersionedTypeId;
6
6
  constructor(readonly value: A) {}
7
7
  }
package/_src/STM.ts CHANGED
@@ -4,6 +4,7 @@ export * from "./STM/definition.js";
4
4
  export * from "./STM/driver.js";
5
5
  // codegen:end
6
6
  // codegen:start { preset: barrel, include: STM/api/*.ts }
7
+ export * from "./STM/api/atomically.js";
7
8
  export * from "./STM/api/core-api.js";
8
9
  export * from "./STM/api/core-constructors.js";
9
10
  // codegen:end
@@ -1,6 +1,9 @@
1
1
  import type { Decision } from "./Decision.js";
2
2
  import type { Driver as Driver_ } from "./Driver.js";
3
3
 
4
+ export const ScheduleVariance = Symbol.for("fncts.io.Schedule.Variance");
5
+ export type ScheduleVariance = typeof ScheduleVariance;
6
+
4
7
  /**
5
8
  * A `Schedule<Env, In, Out>` defines a recurring schedule, which consumes
6
9
  * values of type `In`, and which returns values of type `Out`.
@@ -32,9 +35,11 @@ import type { Driver as Driver_ } from "./Driver.js";
32
35
  * @tsplus companion fncts.io.ScheduleOps
33
36
  */
34
37
  export abstract class Schedule<Env, In, Out> {
35
- readonly _Env!: () => Env;
36
- readonly _In!: (_: In) => void;
37
- readonly _Out!: () => Out;
38
+ declare [ScheduleVariance]: {
39
+ readonly _Env: (_: never) => Env;
40
+ readonly _In: (_: In) => void;
41
+ readonly _Out: (_: never) => Out;
42
+ };
38
43
  readonly _State!: unknown;
39
44
  abstract readonly initial: this["_State"];
40
45
  abstract step(
@@ -1,4 +1,4 @@
1
- export const ScopeTypeId = Symbol.for("fncts.base.control.Scope");
1
+ export const ScopeTypeId = Symbol.for("fncts.io.Scope");
2
2
  export type ScopeTypeId = typeof ScopeTypeId;
3
3
 
4
4
  /**
@@ -6,7 +6,7 @@ export type ScopeTypeId = typeof ScopeTypeId;
6
6
  * @tsplus companion fncts.io.ScopeOps
7
7
  */
8
8
  export abstract class Scope {
9
- readonly _typeId: ScopeTypeId = ScopeTypeId;
9
+ readonly [ScopeTypeId]: ScopeTypeId = ScopeTypeId;
10
10
  abstract addFinalizerExit(finalizer: Finalizer): UIO<void>;
11
11
  abstract fork: UIO<Scope.Closeable>;
12
12
  }
@@ -6,7 +6,7 @@ export type ScopedRefTypeId = typeof ScopedRefTypeId;
6
6
  * @tsplus companion fncts.io.ScopedRefOps
7
7
  */
8
8
  export abstract class ScopedRef<A> {
9
- readonly _typeId: ScopedRefTypeId = ScopedRefTypeId;
9
+ readonly [ScopedRefTypeId]: ScopedRefTypeId = ScopedRefTypeId;
10
10
  abstract set<R, E>(acquire: IO<R | Scope, E, A>, __tsplusTrace?: string): IO<Exclude<R, Scope>, E, void>;
11
11
  abstract get: UIO<A>;
12
12
  }
package/_src/State/api.ts CHANGED
@@ -6,7 +6,7 @@ import { StateInternal } from "./internal.js";
6
6
  /**
7
7
  * @tsplus getter fncts.io.State get
8
8
  */
9
- export function get_<S>(self: State<S>, __tsplusTrace?: string): UIO<S> {
9
+ export function get<S>(self: State<S>, __tsplusTrace?: string): UIO<S> {
10
10
  concrete(self);
11
11
  return self.get;
12
12
  }
@@ -1,5 +1,6 @@
1
- import type { StateInternal } from "./internal.js";
1
+ import type { StateInternal} from "./internal.js";
2
2
 
3
+ import { StateVariance } from "./internal.js";
3
4
  import { StateTypeId } from "./internal.js";
4
5
 
5
6
  /**
@@ -7,8 +8,10 @@ import { StateTypeId } from "./internal.js";
7
8
  * @tsplus companion fncts.io.StateOps
8
9
  */
9
10
  export abstract class State<S> {
10
- readonly _A!: () => S;
11
- readonly _typeId: StateTypeId = StateTypeId;
11
+ readonly [StateTypeId]: StateTypeId = StateTypeId;
12
+ declare [StateVariance]: {
13
+ readonly _S: (_: S) => S;
14
+ };
12
15
  }
13
16
 
14
17
  /**
@@ -1,9 +1,14 @@
1
- export const StateTypeId = Symbol.for("fncts.base.control.State");
1
+ export const StateVariance = Symbol.for("fncts.io.State.Variance");
2
+ export type StateVariance = typeof StateVariance;
3
+
4
+ export const StateTypeId = Symbol.for("fncts.io.State");
2
5
  export type StateTypeId = typeof StateTypeId;
3
6
 
4
7
  export abstract class StateInternal<S> {
5
- declare _A: () => S;
6
- readonly _typeId: StateTypeId = StateTypeId;
8
+ readonly [StateTypeId]: StateTypeId = StateTypeId;
9
+ declare [StateVariance]: {
10
+ readonly _S: (_: S) => S;
11
+ };
7
12
  abstract get: UIO<S>;
8
13
  abstract set(s: S, __tsplusTrace?: string): UIO<void>;
9
14
  abstract update(f: (s: S) => S, __tsplusTrace?: string): UIO<void>;
@@ -1,5 +1,9 @@
1
1
  import type { _A, _E, _R } from "@fncts/base/types";
2
- export const StreamTypeId = Symbol.for("@principia/base/IO/Stream");
2
+
3
+ export const StreamVariance = Symbol.for("fncts.io.Stream.Variance");
4
+ export type StreamVariance = typeof StreamVariance;
5
+
6
+ export const StreamTypeId = Symbol.for("fncts.io.Steam");
3
7
  export type StreamTypeId = typeof StreamTypeId;
4
8
 
5
9
  /**
@@ -24,16 +28,24 @@ export type StreamTypeId = typeof StreamTypeId;
24
28
  */
25
29
  export class Stream<R, E, A> {
26
30
  readonly [StreamTypeId]: StreamTypeId = StreamTypeId;
27
- declare _R: () => R;
28
- declare _E: () => E;
29
- declare _A: () => A;
31
+ declare [StreamVariance]: {
32
+ readonly _R: (_: never) => R;
33
+ readonly _E: (_: never) => E;
34
+ readonly _A: (_: never) => A;
35
+ };
30
36
  constructor(readonly channel: Channel<R, unknown, unknown, unknown, E, Conc<A>, unknown>) {}
31
37
  }
32
38
 
33
39
  /**
34
40
  * @tsplus unify fncts.io.Stream
35
41
  */
36
- export function unifyStream<X extends Stream<any, any, any>>(_: X): Stream<_R<X>, _E<X>, _A<X>> {
42
+ export function unifyStream<X extends Stream<any, any, any>>(
43
+ _: X,
44
+ ): Stream<
45
+ [X] extends [{ [StreamVariance]: { _R: (_: never) => infer R } }] ? R : never,
46
+ [X] extends [{ [StreamVariance]: { _E: (_: never) => infer E } }] ? E : never,
47
+ [X] extends [{ [StreamVariance]: { _A: (_: never) => infer A } }] ? A : never
48
+ > {
37
49
  return _;
38
50
  }
39
51