@fncts/io 0.0.22 → 0.0.24

Sign up to get free protection for your applications and to get access to all the features.
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