@fncts/io 0.0.10 → 0.0.13

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 (439) hide show
  1. package/Cached/api.d.ts +2 -3
  2. package/Channel/api/interruptWhen.d.ts +1 -1
  3. package/Channel/api/mapOutIOC.d.ts +1 -1
  4. package/Channel/api/mergeAll.d.ts +1 -1
  5. package/Channel/api/mergeAllUnboundedWith.d.ts +1 -1
  6. package/Channel/api/mergeAllWith.d.ts +1 -1
  7. package/Channel/api/mergeMap.d.ts +1 -1
  8. package/Channel/api/mergeWith.d.ts +1 -1
  9. package/Channel/api/runScoped.d.ts +1 -2
  10. package/Channel/api/toPull.d.ts +1 -2
  11. package/Channel/api/zipC.d.ts +3 -3
  12. package/Channel/api.d.ts +48 -49
  13. package/Channel/core-api.d.ts +10 -10
  14. package/Channel/definition.d.ts +12 -12
  15. package/Channel/internal/MergeDecision.d.ts +1 -1
  16. package/Channel/internal/SingleProducerAsyncInput.d.ts +1 -1
  17. package/Clock/api.d.ts +1 -1
  18. package/Fiber/FiberContext.d.ts +3 -3
  19. package/Fiber/api/awaitAll.d.ts +1 -1
  20. package/Fiber/api/evalOnIO.d.ts +1 -1
  21. package/Fiber/api/joinAll.d.ts +1 -1
  22. package/Fiber/definition.d.ts +1 -1
  23. package/FiberRef/api/locallyScoped.d.ts +1 -2
  24. package/FiberRef/api/locallyScopedWith.d.ts +1 -2
  25. package/FiberRef/constructors.d.ts +1 -2
  26. package/FiberRef/unsafe.d.ts +6 -0
  27. package/Future/api.d.ts +1 -1
  28. package/Future/constructors.d.ts +1 -1
  29. package/Hub/api.d.ts +6 -7
  30. package/Hub/definition.d.ts +6 -7
  31. package/Hub/internal.d.ts +0 -1
  32. package/IO/api/acquireRelease.d.ts +1 -2
  33. package/IO/api/acquireReleaseExit.d.ts +1 -2
  34. package/IO/api/acquireReleaseInterruptible.d.ts +1 -2
  35. package/IO/api/acquireReleaseInterruptibleExit.d.ts +1 -2
  36. package/IO/api/addFinalizer.d.ts +1 -2
  37. package/IO/api/addFinalizerExit.d.ts +1 -2
  38. package/IO/api/bracket.d.ts +1 -1
  39. package/IO/api/bracketExit.d.ts +1 -1
  40. package/IO/api/clockWith.d.ts +1 -1
  41. package/IO/api/concurrentFinalizers.d.ts +1 -2
  42. package/IO/api/consoleWith.d.ts +1 -1
  43. package/IO/api/core-scope.d.ts +1 -1
  44. package/IO/api/ensuringChildren.d.ts +1 -1
  45. package/IO/api/environment.d.ts +8 -10
  46. package/IO/api/forkScoped.d.ts +1 -2
  47. package/IO/api/interrupt.d.ts +3 -3
  48. package/IO/api/onExit.d.ts +1 -1
  49. package/IO/api/onTermination.d.ts +1 -1
  50. package/IO/api/provideSomeLayer.d.ts +1 -1
  51. package/IO/api/race.d.ts +1 -1
  52. package/IO/api/raceFirst.d.ts +1 -1
  53. package/IO/api/randomWith.d.ts +1 -1
  54. package/IO/api/repeat.d.ts +3 -3
  55. package/IO/api/retry.d.ts +3 -3
  56. package/IO/api/schedule.d.ts +2 -2
  57. package/IO/api/scope.d.ts +1 -2
  58. package/IO/api/scopeWith.d.ts +1 -2
  59. package/IO/api/scoped.d.ts +2 -3
  60. package/IO/api/sequenceT.d.ts +3 -3
  61. package/IO/api/stateful.d.ts +1 -2
  62. package/IO/api/withEarlyRelease.d.ts +1 -2
  63. package/IO/api/withFinalizer.d.ts +1 -2
  64. package/IO/api/withFinalizerExit.d.ts +1 -2
  65. package/IO/api/zipC.d.ts +2 -2
  66. package/IO/api.d.ts +50 -50
  67. package/IO/definition.d.ts +28 -24
  68. package/IO/runtime.d.ts +23 -10
  69. package/IOEnv/definition.d.ts +2 -3
  70. package/IOEnv/live.d.ts +1 -1
  71. package/IOSpec.d.ts +1 -2
  72. package/Layer/MemoMap.d.ts +2 -3
  73. package/Layer/api.d.ts +30 -32
  74. package/Layer/definition.d.ts +7 -8
  75. package/Queue/api/dimapIO.d.ts +3 -3
  76. package/Queue/api/filterInputIO.d.ts +4 -4
  77. package/Queue/api/filterOutputIO.d.ts +6 -6
  78. package/Queue/api/zipWithIO.d.ts +9 -9
  79. package/Queue/definition.d.ts +7 -7
  80. package/Queue/internal.d.ts +1 -1
  81. package/Random/api.d.ts +4 -4
  82. package/Random/live.d.ts +1 -1
  83. package/Ref/Atomic/Atomic.d.ts +3 -3
  84. package/Ref/Derived.d.ts +3 -3
  85. package/Ref/DerivedAll.d.ts +3 -3
  86. package/Ref/Synchronized/api.d.ts +15 -15
  87. package/Ref/Synchronized/definition.d.ts +2 -2
  88. package/Ref/api/get.d.ts +1 -1
  89. package/Ref/api/modify.d.ts +9 -9
  90. package/Ref/api/set.d.ts +1 -1
  91. package/Ref/definition.d.ts +13 -13
  92. package/STM/api/core-api.d.ts +4 -4
  93. package/STM/api/core-constructors.d.ts +7 -7
  94. package/STM/api.d.ts +27 -39
  95. package/STM/definition.d.ts +9 -8
  96. package/STM/driver.d.ts +1 -1
  97. package/STM/internal/Journal.d.ts +4 -3
  98. package/Schedule/Decision.d.ts +10 -4
  99. package/Schedule/Driver.d.ts +3 -3
  100. package/Schedule/api.d.ts +55 -43
  101. package/Schedule/definition.d.ts +1 -1
  102. package/Scope/Finalizer/definition.d.ts +2 -2
  103. package/Scope/ReleaseMap/api.d.ts +1 -1
  104. package/Scope/ReleaseMap/definition.d.ts +1 -1
  105. package/Scope/api.d.ts +3 -4
  106. package/ScopedRef/api.d.ts +1 -2
  107. package/ScopedRef/definition.d.ts +1 -2
  108. package/Sink/api.d.ts +255 -75
  109. package/State/api.d.ts +1 -2
  110. package/Stream/api/zipAllWith.d.ts +1 -1
  111. package/Stream/api/zipWith.d.ts +1 -1
  112. package/Stream/api/zipWithChunks.d.ts +1 -1
  113. package/Stream/api.d.ts +91 -93
  114. package/Stream/definition.d.ts +3 -3
  115. package/Stream/internal/Take.d.ts +1 -1
  116. package/Supervisor/constructors.d.ts +2 -2
  117. package/TFuture/api.d.ts +1 -1
  118. package/TFuture/definition.d.ts +1 -1
  119. package/TReentrantLock/api.d.ts +2 -3
  120. package/TRef/api.d.ts +11 -11
  121. package/TRef/constructors.d.ts +2 -2
  122. package/TSemaphore/api.d.ts +2 -2
  123. package/TSemaphore/definition.d.ts +1 -1
  124. package/_cjs/Cached/api.cjs.map +1 -1
  125. package/_cjs/Channel/api/mapOutIOC.cjs +1 -1
  126. package/_cjs/Channel/api/mapOutIOC.cjs.map +1 -1
  127. package/_cjs/Channel/api/mergeAllWith.cjs +3 -3
  128. package/_cjs/Channel/api/mergeAllWith.cjs.map +1 -1
  129. package/_cjs/Channel/api.cjs.map +1 -1
  130. package/_cjs/Channel/definition.cjs.map +1 -1
  131. package/_cjs/Clock/live.cjs.map +1 -1
  132. package/_cjs/Fiber/FiberContext.cjs +5 -7
  133. package/_cjs/Fiber/FiberContext.cjs.map +1 -1
  134. package/_cjs/FiberRef/unsafe.cjs +9 -1
  135. package/_cjs/FiberRef/unsafe.cjs.map +1 -1
  136. package/_cjs/Future/api.cjs.map +1 -1
  137. package/_cjs/Hub/api.cjs +1 -1
  138. package/_cjs/Hub/api.cjs.map +1 -1
  139. package/_cjs/Hub/internal.cjs +4 -12
  140. package/_cjs/Hub/internal.cjs.map +1 -1
  141. package/_cjs/IO/api/addFinalizerExit.cjs +4 -8
  142. package/_cjs/IO/api/addFinalizerExit.cjs.map +1 -1
  143. package/_cjs/IO/api/ensuringChildren.cjs +1 -1
  144. package/_cjs/IO/api/ensuringChildren.cjs.map +1 -1
  145. package/_cjs/IO/api/environment.cjs +2 -3
  146. package/_cjs/IO/api/environment.cjs.map +1 -1
  147. package/_cjs/IO/api/interrupt.cjs +1 -1
  148. package/_cjs/IO/api/interrupt.cjs.map +1 -1
  149. package/_cjs/IO/api/memoize.cjs +4 -8
  150. package/_cjs/IO/api/memoize.cjs.map +1 -1
  151. package/_cjs/IO/api/provideSomeLayer.cjs +1 -2
  152. package/_cjs/IO/api/provideSomeLayer.cjs.map +1 -1
  153. package/_cjs/IO/api/scope.cjs +1 -1
  154. package/_cjs/IO/api/scope.cjs.map +1 -1
  155. package/_cjs/IO/api/scoped.cjs.map +1 -1
  156. package/_cjs/IO/api/withChildren.cjs +1 -1
  157. package/_cjs/IO/api/withChildren.cjs.map +1 -1
  158. package/_cjs/IO/api.cjs +1 -1
  159. package/_cjs/IO/api.cjs.map +1 -1
  160. package/_cjs/IO/definition.cjs +5 -8
  161. package/_cjs/IO/definition.cjs.map +1 -1
  162. package/_cjs/IO/runtime.cjs +69 -21
  163. package/_cjs/IO/runtime.cjs.map +1 -1
  164. package/_cjs/Layer/MemoMap.cjs +22 -38
  165. package/_cjs/Layer/MemoMap.cjs.map +1 -1
  166. package/_cjs/Layer/api.cjs +6 -4
  167. package/_cjs/Layer/api.cjs.map +1 -1
  168. package/_cjs/Layer/definition.cjs.map +1 -1
  169. package/_cjs/Queue/internal.cjs +2 -2
  170. package/_cjs/Queue/internal.cjs.map +1 -1
  171. package/_cjs/Queue/strategy.cjs +1 -5
  172. package/_cjs/Queue/strategy.cjs.map +1 -1
  173. package/_cjs/Ref/Atomic/Atomic.cjs.map +1 -1
  174. package/_cjs/Ref/Derived.cjs.map +1 -1
  175. package/_cjs/Ref/DerivedAll.cjs.map +1 -1
  176. package/_cjs/Ref/Synchronized/constructors.cjs +7 -11
  177. package/_cjs/Ref/Synchronized/constructors.cjs.map +1 -1
  178. package/_cjs/STM/api/core-constructors.cjs.map +1 -1
  179. package/_cjs/STM/api.cjs +59 -78
  180. package/_cjs/STM/api.cjs.map +1 -1
  181. package/_cjs/STM/definition.cjs.map +1 -1
  182. package/_cjs/STM/driver.cjs +7 -5
  183. package/_cjs/STM/driver.cjs.map +1 -1
  184. package/_cjs/STM/internal/Journal.cjs +20 -22
  185. package/_cjs/STM/internal/Journal.cjs.map +1 -1
  186. package/_cjs/Schedule/Decision.cjs +17 -0
  187. package/_cjs/Schedule/Decision.cjs.map +1 -1
  188. package/_cjs/Schedule/api/driver.cjs +22 -21
  189. package/_cjs/Schedule/api/driver.cjs.map +1 -1
  190. package/_cjs/Schedule/api.cjs +91 -66
  191. package/_cjs/Schedule/api.cjs.map +1 -1
  192. package/_cjs/Scope/Finalizer/definition.cjs +4 -6
  193. package/_cjs/Scope/Finalizer/definition.cjs.map +1 -1
  194. package/_cjs/Scope/ReleaseMap/definition.cjs +2 -4
  195. package/_cjs/Scope/ReleaseMap/definition.cjs.map +1 -1
  196. package/_cjs/Scope/api.cjs +2 -12
  197. package/_cjs/Scope/api.cjs.map +1 -1
  198. package/_cjs/ScopedRef/api.cjs +14 -22
  199. package/_cjs/ScopedRef/api.cjs.map +1 -1
  200. package/_cjs/Sink/api.cjs +424 -131
  201. package/_cjs/Sink/api.cjs.map +1 -1
  202. package/_cjs/Stream/api.cjs +94 -94
  203. package/_cjs/Stream/api.cjs.map +1 -1
  204. package/_cjs/Supervisor/constructors.cjs +14 -8
  205. package/_cjs/Supervisor/constructors.cjs.map +1 -1
  206. package/_cjs/TFuture/definition.cjs +2 -4
  207. package/_cjs/TFuture/definition.cjs.map +1 -1
  208. package/_cjs/TSemaphore/api.cjs +7 -7
  209. package/_cjs/TSemaphore/api.cjs.map +1 -1
  210. package/_cjs/TSemaphore/definition.cjs +2 -4
  211. package/_cjs/TSemaphore/definition.cjs.map +1 -1
  212. package/_cjs/collection/immutable/Conc/dropUntilIO.cjs +38 -0
  213. package/_cjs/collection/immutable/Conc/dropUntilIO.cjs.map +1 -0
  214. package/_cjs/collection/immutable/Conc/dropWhileIO.cjs +38 -0
  215. package/_cjs/collection/immutable/Conc/dropWhileIO.cjs.map +1 -0
  216. package/_cjs/internal/Scheduler.cjs +64 -14
  217. package/_cjs/internal/Scheduler.cjs.map +1 -1
  218. package/_mjs/Cached/api.mjs.map +1 -1
  219. package/_mjs/Channel/api/mapOutIOC.mjs +1 -1
  220. package/_mjs/Channel/api/mapOutIOC.mjs.map +1 -1
  221. package/_mjs/Channel/api/mergeAllWith.mjs +3 -3
  222. package/_mjs/Channel/api/mergeAllWith.mjs.map +1 -1
  223. package/_mjs/Channel/api.mjs.map +1 -1
  224. package/_mjs/Channel/definition.mjs.map +1 -1
  225. package/_mjs/Clock/live.mjs.map +1 -1
  226. package/_mjs/Fiber/FiberContext.mjs +5 -6
  227. package/_mjs/Fiber/FiberContext.mjs.map +1 -1
  228. package/_mjs/FiberRef/unsafe.mjs +6 -0
  229. package/_mjs/FiberRef/unsafe.mjs.map +1 -1
  230. package/_mjs/Future/api.mjs.map +1 -1
  231. package/_mjs/Hub/api.mjs +1 -1
  232. package/_mjs/Hub/api.mjs.map +1 -1
  233. package/_mjs/Hub/internal.mjs +4 -12
  234. package/_mjs/Hub/internal.mjs.map +1 -1
  235. package/_mjs/IO/api/addFinalizerExit.mjs +4 -8
  236. package/_mjs/IO/api/addFinalizerExit.mjs.map +1 -1
  237. package/_mjs/IO/api/ensuringChildren.mjs +1 -1
  238. package/_mjs/IO/api/ensuringChildren.mjs.map +1 -1
  239. package/_mjs/IO/api/environment.mjs +2 -3
  240. package/_mjs/IO/api/environment.mjs.map +1 -1
  241. package/_mjs/IO/api/interrupt.mjs +1 -1
  242. package/_mjs/IO/api/interrupt.mjs.map +1 -1
  243. package/_mjs/IO/api/memoize.mjs +4 -8
  244. package/_mjs/IO/api/memoize.mjs.map +1 -1
  245. package/_mjs/IO/api/provideSomeLayer.mjs +1 -2
  246. package/_mjs/IO/api/provideSomeLayer.mjs.map +1 -1
  247. package/_mjs/IO/api/scope.mjs +1 -1
  248. package/_mjs/IO/api/scope.mjs.map +1 -1
  249. package/_mjs/IO/api/scoped.mjs.map +1 -1
  250. package/_mjs/IO/api/withChildren.mjs +1 -1
  251. package/_mjs/IO/api/withChildren.mjs.map +1 -1
  252. package/_mjs/IO/api.mjs +1 -1
  253. package/_mjs/IO/api.mjs.map +1 -1
  254. package/_mjs/IO/definition.mjs +3 -5
  255. package/_mjs/IO/definition.mjs.map +1 -1
  256. package/_mjs/IO/runtime.mjs +61 -18
  257. package/_mjs/IO/runtime.mjs.map +1 -1
  258. package/_mjs/Layer/MemoMap.mjs +22 -38
  259. package/_mjs/Layer/MemoMap.mjs.map +1 -1
  260. package/_mjs/Layer/api.mjs +5 -4
  261. package/_mjs/Layer/api.mjs.map +1 -1
  262. package/_mjs/Layer/definition.mjs.map +1 -1
  263. package/_mjs/Queue/internal.mjs +2 -2
  264. package/_mjs/Queue/internal.mjs.map +1 -1
  265. package/_mjs/Queue/strategy.mjs +1 -5
  266. package/_mjs/Queue/strategy.mjs.map +1 -1
  267. package/_mjs/Ref/Atomic/Atomic.mjs.map +1 -1
  268. package/_mjs/Ref/Derived.mjs.map +1 -1
  269. package/_mjs/Ref/DerivedAll.mjs.map +1 -1
  270. package/_mjs/Ref/Synchronized/constructors.mjs +7 -11
  271. package/_mjs/Ref/Synchronized/constructors.mjs.map +1 -1
  272. package/_mjs/STM/api/core-constructors.mjs.map +1 -1
  273. package/_mjs/STM/api.mjs +52 -72
  274. package/_mjs/STM/api.mjs.map +1 -1
  275. package/_mjs/STM/definition.mjs.map +1 -1
  276. package/_mjs/STM/driver.mjs +6 -5
  277. package/_mjs/STM/driver.mjs.map +1 -1
  278. package/_mjs/STM/internal/Journal.mjs +20 -21
  279. package/_mjs/STM/internal/Journal.mjs.map +1 -1
  280. package/_mjs/Schedule/Decision.mjs +9 -0
  281. package/_mjs/Schedule/Decision.mjs.map +1 -1
  282. package/_mjs/Schedule/api/driver.mjs +20 -20
  283. package/_mjs/Schedule/api/driver.mjs.map +1 -1
  284. package/_mjs/Schedule/api.mjs +84 -63
  285. package/_mjs/Schedule/api.mjs.map +1 -1
  286. package/_mjs/Scope/Finalizer/definition.mjs +4 -5
  287. package/_mjs/Scope/Finalizer/definition.mjs.map +1 -1
  288. package/_mjs/Scope/ReleaseMap/definition.mjs +2 -3
  289. package/_mjs/Scope/ReleaseMap/definition.mjs.map +1 -1
  290. package/_mjs/Scope/api.mjs +2 -12
  291. package/_mjs/Scope/api.mjs.map +1 -1
  292. package/_mjs/ScopedRef/api.mjs +14 -22
  293. package/_mjs/ScopedRef/api.mjs.map +1 -1
  294. package/_mjs/Sink/api.mjs +414 -129
  295. package/_mjs/Sink/api.mjs.map +1 -1
  296. package/_mjs/Stream/api.mjs +94 -94
  297. package/_mjs/Stream/api.mjs.map +1 -1
  298. package/_mjs/Supervisor/constructors.mjs +9 -6
  299. package/_mjs/Supervisor/constructors.mjs.map +1 -1
  300. package/_mjs/TFuture/definition.mjs +2 -3
  301. package/_mjs/TFuture/definition.mjs.map +1 -1
  302. package/_mjs/TSemaphore/api.mjs +4 -4
  303. package/_mjs/TSemaphore/api.mjs.map +1 -1
  304. package/_mjs/TSemaphore/definition.mjs +2 -3
  305. package/_mjs/TSemaphore/definition.mjs.map +1 -1
  306. package/_mjs/collection/immutable/Conc/dropUntilIO.mjs +26 -0
  307. package/_mjs/collection/immutable/Conc/dropUntilIO.mjs.map +1 -0
  308. package/_mjs/collection/immutable/Conc/dropWhileIO.mjs +26 -0
  309. package/_mjs/collection/immutable/Conc/dropWhileIO.mjs.map +1 -0
  310. package/_mjs/internal/Scheduler.mjs +62 -15
  311. package/_mjs/internal/Scheduler.mjs.map +1 -1
  312. package/_src/Cached/api.ts +3 -3
  313. package/_src/Channel/api/interruptWhen.ts +1 -1
  314. package/_src/Channel/api/mapOutIOC.ts +2 -2
  315. package/_src/Channel/api/mergeAll.ts +1 -1
  316. package/_src/Channel/api/mergeAllUnboundedWith.ts +1 -1
  317. package/_src/Channel/api/mergeAllWith.ts +3 -3
  318. package/_src/Channel/api/mergeMap.ts +1 -1
  319. package/_src/Channel/api/mergeWith.ts +9 -9
  320. package/_src/Channel/api/runScoped.ts +1 -1
  321. package/_src/Channel/api/toPull.ts +1 -1
  322. package/_src/Channel/api/zipC.ts +3 -3
  323. package/_src/Channel/api.ts +69 -69
  324. package/_src/Channel/core-api.ts +11 -11
  325. package/_src/Channel/definition.ts +12 -12
  326. package/_src/Channel/internal/MergeDecision.ts +1 -1
  327. package/_src/Clock/live.ts +1 -1
  328. package/_src/Fiber/FiberContext.ts +10 -8
  329. package/_src/Fiber/api/awaitAll.ts +1 -1
  330. package/_src/Fiber/api/evalOnIO.ts +1 -1
  331. package/_src/Fiber/api/joinAll.ts +1 -1
  332. package/_src/Fiber/definition.ts +1 -1
  333. package/_src/FiberRef/api/locallyScoped.ts +1 -1
  334. package/_src/FiberRef/api/locallyScopedWith.ts +1 -1
  335. package/_src/FiberRef/constructors.ts +2 -2
  336. package/_src/FiberRef/unsafe.ts +7 -0
  337. package/_src/Future/api.ts +3 -3
  338. package/_src/Future/constructors.ts +1 -1
  339. package/_src/Hub/api.ts +11 -11
  340. package/_src/Hub/definition.ts +6 -6
  341. package/_src/Hub/internal.ts +15 -15
  342. package/_src/IO/api/acquireRelease.ts +1 -1
  343. package/_src/IO/api/acquireReleaseExit.ts +1 -1
  344. package/_src/IO/api/acquireReleaseInterruptible.ts +1 -1
  345. package/_src/IO/api/acquireReleaseInterruptibleExit.ts +1 -1
  346. package/_src/IO/api/addFinalizer.ts +1 -1
  347. package/_src/IO/api/addFinalizerExit.ts +5 -7
  348. package/_src/IO/api/bracket.ts +1 -1
  349. package/_src/IO/api/bracketExit.ts +1 -1
  350. package/_src/IO/api/concurrentFinalizers.ts +1 -1
  351. package/_src/IO/api/core-scope.ts +1 -1
  352. package/_src/IO/api/ensuringChildren.ts +2 -2
  353. package/_src/IO/api/environment.ts +9 -11
  354. package/_src/IO/api/forkScoped.ts +1 -1
  355. package/_src/IO/api/interrupt.ts +3 -3
  356. package/_src/IO/api/memoize.ts +3 -3
  357. package/_src/IO/api/onExit.ts +1 -1
  358. package/_src/IO/api/onTermination.ts +1 -1
  359. package/_src/IO/api/provideSomeLayer.ts +1 -2
  360. package/_src/IO/api/race.ts +1 -1
  361. package/_src/IO/api/raceFirst.ts +1 -1
  362. package/_src/IO/api/repeat.ts +4 -4
  363. package/_src/IO/api/retry.ts +4 -4
  364. package/_src/IO/api/schedule.ts +3 -3
  365. package/_src/IO/api/scope.ts +1 -1
  366. package/_src/IO/api/scopeWith.ts +1 -1
  367. package/_src/IO/api/scoped.ts +2 -2
  368. package/_src/IO/api/sequenceT.ts +1 -1
  369. package/_src/IO/api/stateful.ts +1 -1
  370. package/_src/IO/api/withChildren.ts +1 -1
  371. package/_src/IO/api/withEarlyRelease.ts +1 -1
  372. package/_src/IO/api/withFinalizer.ts +1 -1
  373. package/_src/IO/api/withFinalizerExit.ts +1 -1
  374. package/_src/IO/api/zipC.ts +2 -2
  375. package/_src/IO/api.ts +48 -48
  376. package/_src/IO/definition.ts +29 -24
  377. package/_src/IO/runtime.ts +66 -12
  378. package/_src/IOEnv/definition.ts +1 -1
  379. package/_src/Layer/MemoMap.ts +19 -19
  380. package/_src/Layer/api.ts +38 -38
  381. package/_src/Layer/definition.ts +5 -5
  382. package/_src/Queue/api/dimapIO.ts +10 -10
  383. package/_src/Queue/api/filterInputIO.ts +4 -4
  384. package/_src/Queue/api/filterOutputIO.ts +6 -6
  385. package/_src/Queue/api/zipWithIO.ts +10 -10
  386. package/_src/Queue/definition.ts +7 -7
  387. package/_src/Queue/internal.ts +7 -7
  388. package/_src/Queue/strategy.ts +4 -4
  389. package/_src/Random/api.ts +1 -1
  390. package/_src/Ref/Atomic/Atomic.ts +3 -3
  391. package/_src/Ref/Derived.ts +3 -3
  392. package/_src/Ref/DerivedAll.ts +3 -3
  393. package/_src/Ref/Synchronized/api.ts +15 -15
  394. package/_src/Ref/Synchronized/constructors.ts +4 -4
  395. package/_src/Ref/Synchronized/definition.ts +2 -2
  396. package/_src/Ref/api/get.ts +2 -2
  397. package/_src/Ref/api/modify.ts +9 -9
  398. package/_src/Ref/api/set.ts +1 -1
  399. package/_src/Ref/definition.ts +13 -13
  400. package/_src/STM/api/core-api.ts +6 -6
  401. package/_src/STM/api/core-constructors.ts +7 -7
  402. package/_src/STM/api.ts +58 -89
  403. package/_src/STM/definition.ts +6 -6
  404. package/_src/STM/driver.ts +3 -3
  405. package/_src/STM/internal/Journal.ts +25 -16
  406. package/_src/Schedule/Decision.ts +10 -3
  407. package/_src/Schedule/Driver.ts +2 -2
  408. package/_src/Schedule/api/driver.ts +6 -6
  409. package/_src/Schedule/api.ts +97 -77
  410. package/_src/Schedule/definition.ts +1 -1
  411. package/_src/Scope/Finalizer/definition.ts +2 -2
  412. package/_src/Scope/ReleaseMap/api.ts +1 -1
  413. package/_src/Scope/ReleaseMap/definition.ts +1 -1
  414. package/_src/Scope/api.ts +11 -11
  415. package/_src/ScopedRef/api.ts +12 -17
  416. package/_src/ScopedRef/definition.ts +1 -1
  417. package/_src/Sink/api.ts +441 -86
  418. package/_src/State/api.ts +1 -1
  419. package/_src/Stream/api/zipAllWith.ts +2 -2
  420. package/_src/Stream/api/zipWith.ts +1 -1
  421. package/_src/Stream/api/zipWithChunks.ts +2 -2
  422. package/_src/Stream/api.ts +150 -149
  423. package/_src/Stream/definition.ts +3 -3
  424. package/_src/Stream/internal/Take.ts +1 -1
  425. package/_src/Supervisor/constructors.ts +7 -3
  426. package/_src/TFuture/api.ts +1 -1
  427. package/_src/TFuture/definition.ts +1 -1
  428. package/_src/TReentrantLock/api.ts +2 -2
  429. package/_src/TRef/api.ts +11 -11
  430. package/_src/TRef/constructors.ts +2 -2
  431. package/_src/TSemaphore/api.ts +2 -2
  432. package/_src/TSemaphore/definition.ts +1 -1
  433. package/_src/collection/immutable/Conc/dropUntilIO.ts +24 -0
  434. package/_src/collection/immutable/Conc/dropWhileIO.ts +26 -0
  435. package/_src/internal/Scheduler.ts +59 -15
  436. package/collection/immutable/Conc/dropUntilIO.d.ts +7 -0
  437. package/collection/immutable/Conc/dropWhileIO.d.ts +7 -0
  438. package/internal/Scheduler.d.ts +18 -1
  439. package/package.json +3 -3
package/_src/IO/api.ts CHANGED
@@ -110,7 +110,7 @@ export function apFirst_<R, E, A, R1, E1, B>(
110
110
  self: IO<R, E, A>,
111
111
  fb: IO<R1, E1, B>,
112
112
  __tsplusTrace?: string,
113
- ): IO<R1 & R, E1 | E, A> {
113
+ ): IO<R1 | R, E1 | E, A> {
114
114
  return self.flatMap((a) => fb.map(() => a));
115
115
  }
116
116
 
@@ -124,7 +124,7 @@ export function apSecond_<R, E, A, R1, E1, B>(
124
124
  self: IO<R, E, A>,
125
125
  fb: IO<R1, E1, B>,
126
126
  __tsplusTrace?: string,
127
- ): IO<R1 & R, E1 | E, B> {
127
+ ): IO<R1 | R, E1 | E, B> {
128
128
  return self.flatMap(() => fb);
129
129
  }
130
130
 
@@ -189,7 +189,7 @@ export function bitap_<R, E, A, R1, E1, R2, E2>(
189
189
  onFailure: (e: E) => IO<R1, E1, any>,
190
190
  onSuccess: (a: A) => IO<R2, E2, any>,
191
191
  __tsplusTrace?: string,
192
- ): IO<R & R1 & R2, E | E1 | E2, A> {
192
+ ): IO<R | R1 | R2, E | E1 | E2, A> {
193
193
  return self.matchCauseIO(
194
194
  (cause) =>
195
195
  cause.failureOrCause.match(
@@ -211,7 +211,7 @@ export function catch_<N extends keyof E, K extends E[N] & string, R, E, A, R1,
211
211
  k: K,
212
212
  f: (e: Extract<E, { [n in N]: K }>) => IO<R1, E1, A1>,
213
213
  __tsplusTrace?: string,
214
- ): IO<R & R1, Exclude<E, { [n in N]: K }> | E1, A | A1> {
214
+ ): IO<R | R1, Exclude<E, { [n in N]: K }> | E1, A | A1> {
215
215
  return ma.catchAll((e) => {
216
216
  if (tag in e && e[tag] === k) {
217
217
  return f(e as any);
@@ -229,7 +229,7 @@ export function catchAll_<R, E, A, R1, E1, A1>(
229
229
  ma: IO<R, E, A>,
230
230
  f: (e: E) => IO<R1, E1, A1>,
231
231
  __tsplusTrace?: string,
232
- ): IO<R & R1, E1, A | A1> {
232
+ ): IO<R | R1, E1, A | A1> {
233
233
  return ma.matchIO(f, IO.succeedNow);
234
234
  }
235
235
 
@@ -256,7 +256,7 @@ export function catchJust_<R, E, A, R1, E1, A1>(
256
256
  ma: IO<R, E, A>,
257
257
  f: (e: E) => Maybe<IO<R1, E1, A1>>,
258
258
  __tsplusTrace?: string,
259
- ): IO<R & R1, E | E1, A | A1> {
259
+ ): IO<R | R1, E | E1, A | A1> {
260
260
  return ma.matchCauseIO(
261
261
  (cause) => cause.failureOrCause.match((e) => f(e).getOrElse(IO.failCauseNow(cause)), IO.failCauseNow),
262
262
  IO.succeedNow,
@@ -271,7 +271,7 @@ export function catchJust_<R, E, A, R1, E1, A1>(
271
271
  export function catchJustCause_<R, E, A, R1, E1, A1>(
272
272
  ma: IO<R, E, A>,
273
273
  f: (_: Cause<E>) => Maybe<IO<R1, E1, A1>>,
274
- ): IO<R & R1, E | E1, A | A1> {
274
+ ): IO<R | R1, E | E1, A | A1> {
275
275
  return ma.matchCauseIO((cause) => f(cause).getOrElse(IO.failCauseNow(cause)), IO.succeedNow);
276
276
  }
277
277
 
@@ -289,7 +289,7 @@ export function catchJustDefect_<R, E, A, R1, E1, A1>(
289
289
  ma: IO<R, E, A>,
290
290
  f: (_: unknown) => Maybe<IO<R1, E1, A1>>,
291
291
  __tsplusTrace?: string,
292
- ): IO<R & R1, E | E1, A | A1> {
292
+ ): IO<R | R1, E | E1, A | A1> {
293
293
  return ma.unrefineWith(f, IO.failNow).catchAll(identity);
294
294
  }
295
295
 
@@ -303,7 +303,7 @@ export function catchTag_<K extends E["_tag"] & string, R, E extends { _tag: str
303
303
  k: K,
304
304
  f: (e: Extract<E, { _tag: K }>) => IO<R1, E1, A1>,
305
305
  __tsplusTrace?: string,
306
- ): IO<R & R1, Exclude<E, { _tag: K }> | E1, A | A1> {
306
+ ): IO<R | R1, Exclude<E, { _tag: K }> | E1, A | A1> {
307
307
  return ma.catch("_tag", k, f);
308
308
  }
309
309
 
@@ -332,14 +332,14 @@ export function flatMap_<R, E, A, R1, E1, B>(
332
332
  ma: IO<R, E, A>,
333
333
  f: (a: A) => IO<R1, E1, B>,
334
334
  __tsplusTrace?: string,
335
- ): IO<R & R1, E | E1, B> {
335
+ ): IO<R | R1, E | E1, B> {
336
336
  return new Chain(ma, f, __tsplusTrace);
337
337
  }
338
338
 
339
339
  /**
340
340
  * @tsplus fluent fncts.io.IO flatMapError
341
341
  */
342
- export function flatMapError_<R, R1, E, E1, A>(ma: IO<R, E, A>, f: (e: E) => IO<R1, never, E1>): IO<R & R1, E1, A> {
342
+ export function flatMapError_<R, R1, E, E1, A>(ma: IO<R, E, A>, f: (e: E) => IO<R1, never, E1>): IO<R | R1, E1, A> {
343
343
  return ma.swapWith((effect) => effect.flatMap(f));
344
344
  }
345
345
 
@@ -376,14 +376,14 @@ export function collectIO_<R, E, A, R1, E1, A1, E2>(
376
376
  f: Lazy<E2>,
377
377
  pf: (a: A) => Maybe<IO<R1, E1, A1>>,
378
378
  __tsplusTrace?: string,
379
- ): IO<R & R1, E | E1 | E2, A1> {
379
+ ): IO<R | R1, E | E1 | E2, A1> {
380
380
  return ma.flatMap((a) => pf(a).getOrElse(IO.fail(f)));
381
381
  }
382
382
 
383
383
  /**
384
384
  * @tsplus static fncts.io.IOOps condIO
385
385
  */
386
- export function condIO_<R, R1, E, A>(b: boolean, onTrue: URIO<R, A>, onFalse: URIO<R1, E>): IO<R & R1, E, A> {
386
+ export function condIO_<R, R1, E, A>(b: boolean, onTrue: URIO<R, A>, onFalse: URIO<R1, E>): IO<R | R1, E, A> {
387
387
  return b ? onTrue : onFalse.flatMap(IO.failNow);
388
388
  }
389
389
 
@@ -518,7 +518,7 @@ export function ensuring_<R, E, A, R1>(
518
518
  self: IO<R, E, A>,
519
519
  finalizer: IO<R1, never, any>,
520
520
  __tsplusTrace?: string,
521
- ): IO<R & R1, E, A> {
521
+ ): IO<R | R1, E, A> {
522
522
  return new Ensuring(self, finalizer, __tsplusTrace);
523
523
  }
524
524
 
@@ -580,7 +580,7 @@ export function failCause<E = never, A = never>(cause: Lazy<Cause<E>>, __tsplusT
580
580
  *
581
581
  * @tsplus static fncts.io.IOOps fiberId
582
582
  */
583
- export const fiberId: IO<unknown, never, FiberId> = IO.descriptorWith((d) => IO.succeedNow(d.id));
583
+ export const fiberId: IO<never, never, FiberId> = IO.descriptorWith((d) => IO.succeedNow(d.id));
584
584
 
585
585
  /**
586
586
  * Filters the collection using the specified effectual predicate.
@@ -659,19 +659,19 @@ export function filterOrElse_<R, E, A, B extends A, R1, E1, A1>(
659
659
  refinement: Refinement<A, B>,
660
660
  or: (a: Exclude<A, B>) => IO<R1, E1, A1>,
661
661
  __tsplusTrace?: string,
662
- ): IO<R & R1, E | E1, B | A1>;
662
+ ): IO<R | R1, E | E1, B | A1>;
663
663
  export function filterOrElse_<R, E, A, R1, E1, A1>(
664
664
  fa: IO<R, E, A>,
665
665
  predicate: Predicate<A>,
666
666
  or: (a: A) => IO<R1, E1, A1>,
667
667
  __tsplusTrace?: string,
668
- ): IO<R & R1, E | E1, A | A1>;
668
+ ): IO<R | R1, E | E1, A | A1>;
669
669
  export function filterOrElse_<R, E, A, R1, E1, A1>(
670
670
  fa: IO<R, E, A>,
671
671
  predicate: Predicate<A>,
672
672
  or: unknown,
673
673
  __tsplusTrace?: string,
674
- ): IO<R & R1, E | E1, A | A1> {
674
+ ): IO<R | R1, E | E1, A | A1> {
675
675
  return flatMap_(
676
676
  fa,
677
677
  (a): IO<R1, E1, A | A1> => (predicate(a) ? IO.succeedNow(a) : IO.defer((or as (a: A) => IO<R1, E1, A1>)(a))),
@@ -740,7 +740,7 @@ export function filterOrHalt_<R, E, A>(
740
740
  /**
741
741
  * @tsplus getter fncts.io.IO flatten
742
742
  */
743
- export function flatten<R, E, R1, E1, A>(self: IO<R, E, IO<R1, E1, A>>): IO<R & R1, E | E1, A> {
743
+ export function flatten<R, E, R1, E1, A>(self: IO<R, E, IO<R1, E1, A>>): IO<R | R1, E | E1, A> {
744
744
  return self.flatMap(identity);
745
745
  }
746
746
 
@@ -910,7 +910,7 @@ export function fork<R, E, A>(ma: IO<R, E, A>, __tsplusTrace?: string): URIO<R,
910
910
  *
911
911
  * @tsplus static fncts.io.IOOps fromEither
912
912
  */
913
- export function fromEither<E, A>(either: Lazy<Either<E, A>>, __tsplusTrace?: string): IO<unknown, E, A> {
913
+ export function fromEither<E, A>(either: Lazy<Either<E, A>>, __tsplusTrace?: string): IO<never, E, A> {
914
914
  return IO.succeed(either).flatMap((ea) => ea.match(IO.failNow, IO.succeedNow));
915
915
  }
916
916
 
@@ -919,7 +919,7 @@ export function fromEither<E, A>(either: Lazy<Either<E, A>>, __tsplusTrace?: str
919
919
  *
920
920
  * @tsplus static fncts.io.IOOps fromEitherNow
921
921
  */
922
- export function fromEitherNow<E, A>(either: Either<E, A>, __tsplusTrace?: string): IO<unknown, E, A> {
922
+ export function fromEitherNow<E, A>(either: Either<E, A>, __tsplusTrace?: string): IO<never, E, A> {
923
923
  return either.match(IO.failNow, IO.succeedNow);
924
924
  }
925
925
 
@@ -928,7 +928,7 @@ export function fromEitherNow<E, A>(either: Either<E, A>, __tsplusTrace?: string
928
928
  *
929
929
  * @tsplus static fncts.io.IOOps fromEval
930
930
  */
931
- export function fromEval<A>(computation: Eval<A>, __tsplusTrace?: string): IO<unknown, never, A> {
931
+ export function fromEval<A>(computation: Eval<A>, __tsplusTrace?: string): IO<never, never, A> {
932
932
  return IO.succeed(computation.run);
933
933
  }
934
934
 
@@ -1037,7 +1037,7 @@ export function getOrElse_<R, E, A, B>(ma: IO<R, E, Maybe<A>>, orElse: Lazy<B>):
1037
1037
  export function getOrElseIO_<R, E, A, R1, E1, B>(
1038
1038
  ma: IO<R, E, Maybe<A>>,
1039
1039
  orElse: Lazy<IO<R1, E1, B>>,
1040
- ): IO<R & R1, E | E1, A | B> {
1040
+ ): IO<R | R1, E | E1, A | B> {
1041
1041
  return (ma as IO<R, E, Maybe<A | B>>).flatMap((mab) => mab.map(IO.succeedNow).getOrElse(orElse));
1042
1042
  }
1043
1043
 
@@ -1088,7 +1088,7 @@ export function ifIO_<R, E, R1, E1, B, R2, E2, C>(
1088
1088
  self: IO<R, E, boolean>,
1089
1089
  onFalse: Lazy<IO<R1, E1, B>>,
1090
1090
  onTrue: Lazy<IO<R2, E2, C>>,
1091
- ): IO<R & R1 & R2, E | E1 | E2, B | C> {
1091
+ ): IO<R | R1 | R2, E | E1 | E2, B | C> {
1092
1092
  return self.flatMap((b) => (b ? onTrue() : onFalse()));
1093
1093
  }
1094
1094
 
@@ -1100,7 +1100,7 @@ export function if_<R, E, A, R1, E1, A1>(
1100
1100
  onTrue: Lazy<IO<R, E, A>>,
1101
1101
  onFalse: Lazy<IO<R1, E1, A1>>,
1102
1102
  __tsplusTrace?: string,
1103
- ): IO<R & R1, E | E1, A | A1> {
1103
+ ): IO<R | R1, E | E1, A | A1> {
1104
1104
  return IO.succeedNow(b).ifIO(onTrue, onFalse);
1105
1105
  }
1106
1106
 
@@ -1314,7 +1314,7 @@ export function matchCauseIO_<R, E, A, R1, E1, A1, R2, E2, A2>(
1314
1314
  onFailure: (cause: Cause<E>) => IO<R1, E1, A1>,
1315
1315
  onSuccess: (a: A) => IO<R2, E2, A2>,
1316
1316
  __tsplusTrace?: string,
1317
- ): IO<R & R1 & R2, E1 | E2, A1 | A2> {
1317
+ ): IO<R | R1 | R2, E1 | E2, A1 | A2> {
1318
1318
  return new Match(self, onFailure, onSuccess, __tsplusTrace);
1319
1319
  }
1320
1320
 
@@ -1326,7 +1326,7 @@ export function matchIO_<R, R1, R2, E, E1, E2, A, A1, A2>(
1326
1326
  onFailure: (e: E) => IO<R1, E1, A1>,
1327
1327
  onSuccess: (a: A) => IO<R2, E2, A2>,
1328
1328
  __tsplusTrace?: string,
1329
- ): IO<R & R1 & R2, E1 | E2, A1 | A2> {
1329
+ ): IO<R | R1 | R2, E1 | E2, A1 | A2> {
1330
1330
  return self.matchCauseIO((cause) => cause.failureOrCause.match(onFailure, IO.failCauseNow), onSuccess);
1331
1331
  }
1332
1332
 
@@ -1359,7 +1359,7 @@ export function matchTraceIO_<R, E, A, R1, E1, A1, R2, E2, A2>(
1359
1359
  onFailure: (e: E, trace: Trace) => IO<R1, E1, A1>,
1360
1360
  onSuccess: (a: A) => IO<R2, E2, A2>,
1361
1361
  __tsplusTrace?: string,
1362
- ): IO<R & R1 & R2, E1 | E2, A1 | A2> {
1362
+ ): IO<R | R1 | R2, E1 | E2, A1 | A2> {
1363
1363
  return ma.matchCauseIO(
1364
1364
  (cause) => cause.failureTraceOrCause.match(([e, trace]) => onFailure(e, trace), IO.failCauseNow),
1365
1365
  onSuccess,
@@ -1401,7 +1401,7 @@ export function mergeAll_<R, E, A, B>(
1401
1401
  * @tsplus static fncts.io.IOOps never
1402
1402
  */
1403
1403
  export const never: UIO<never> = defer(() =>
1404
- asyncInterrupt<unknown, never, never>(() => {
1404
+ asyncInterrupt<never, never, never>(() => {
1405
1405
  const interval = setInterval(() => {
1406
1406
  //
1407
1407
  }, 60000);
@@ -1437,7 +1437,7 @@ export function or_<R, E, R1, E1>(
1437
1437
  ma: IO<R, E, boolean>,
1438
1438
  mb: IO<R1, E1, boolean>,
1439
1439
  __tsplusTrace?: string,
1440
- ): IO<R & R1, E | E1, boolean> {
1440
+ ): IO<R | R1, E | E1, boolean> {
1441
1441
  return ma.flatMap((b) => (b ? IO.succeedNow(true) : mb));
1442
1442
  }
1443
1443
 
@@ -1448,7 +1448,7 @@ export function orElse_<R, E, A, R1, E1, A1>(
1448
1448
  ma: IO<R, E, A>,
1449
1449
  that: Lazy<IO<R1, E1, A1>>,
1450
1450
  __tsplusTrace?: string,
1451
- ): IO<R & R1, E1, A | A1> {
1451
+ ): IO<R | R1, E1, A | A1> {
1452
1452
  return tryOrElse_(ma, that, IO.succeedNow);
1453
1453
  }
1454
1454
 
@@ -1459,7 +1459,7 @@ export function orElseEither_<R, E, A, R1, E1, A1>(
1459
1459
  self: IO<R, E, A>,
1460
1460
  that: Lazy<IO<R1, E1, A1>>,
1461
1461
  __tsplusTrace?: string,
1462
- ): IO<R & R1, E1, Either<A, A1>> {
1462
+ ): IO<R | R1, E1, Either<A, A1>> {
1463
1463
  return self.tryOrElse(that().map(Either.right), (a) => IO.succeedNow(Either.left(a)));
1464
1464
  }
1465
1465
 
@@ -1477,7 +1477,7 @@ export function orElseMaybe_<R, E, A, R1, E1, A1>(
1477
1477
  ma: IO<R, Maybe<E>, A>,
1478
1478
  that: Lazy<IO<R1, Maybe<E1>, A1>>,
1479
1479
  __tsplusTrace?: string,
1480
- ): IO<R & R1, Maybe<E | E1>, A | A1> {
1480
+ ): IO<R | R1, Maybe<E | E1>, A | A1> {
1481
1481
  return ma.catchAll((me) => me.match(that, (e) => IO.fail(Just(e))));
1482
1482
  }
1483
1483
 
@@ -1591,7 +1591,7 @@ export function rejectIO_<R, E, A, R1, E1>(
1591
1591
  fa: IO<R, E, A>,
1592
1592
  pf: (a: A) => Maybe<IO<R1, E1, E1>>,
1593
1593
  __tsplusTrace?: string,
1594
- ): IO<R & R1, E | E1, A> {
1594
+ ): IO<R | R1, E | E1, A> {
1595
1595
  return fa.flatMap((a) =>
1596
1596
  pf(a).match(
1597
1597
  () => IO.succeedNow(a),
@@ -1627,7 +1627,7 @@ export function repeatUntilIO_<R, E, A, R1, E1>(
1627
1627
  ma: IO<R, E, A>,
1628
1628
  f: (a: A) => IO<R1, E1, boolean>,
1629
1629
  __tsplusTrace?: string,
1630
- ): IO<R & R1, E | E1, A> {
1630
+ ): IO<R | R1, E | E1, A> {
1631
1631
  return ma.flatMap((a) => f(a).flatMap((b) => (b ? IO.succeed(a) : ma.repeatUntilIO(f))));
1632
1632
  }
1633
1633
 
@@ -1649,7 +1649,7 @@ export function repeatWhileIO_<R, E, A, R1, E1>(
1649
1649
  ma: IO<R, E, A>,
1650
1650
  f: (a: A) => IO<R1, E1, boolean>,
1651
1651
  __tsplusTrace?: string,
1652
- ): IO<R & R1, E | E1, A> {
1652
+ ): IO<R | R1, E | E1, A> {
1653
1653
  return ma.flatMap((a) => f(a).flatMap((b) => (b ? ma.repeatWhileIO(f) : IO.succeed(a))));
1654
1654
  }
1655
1655
 
@@ -1707,7 +1707,7 @@ export function retryUntilIO_<R, E, A, R1, E1>(
1707
1707
  fa: IO<R, E, A>,
1708
1708
  f: (e: E) => IO<R1, E1, boolean>,
1709
1709
  __tsplusTrace?: string,
1710
- ): IO<R & R1, E | E1, A> {
1710
+ ): IO<R | R1, E | E1, A> {
1711
1711
  return fa.catchAll((e) => f(e).flatMap((b) => (b ? IO.failNow(e) : fa.retryUntilIO(f))));
1712
1712
  }
1713
1713
 
@@ -1729,7 +1729,7 @@ export function retryWhileIO_<R, E, A, R1, E1>(
1729
1729
  fa: IO<R, E, A>,
1730
1730
  f: (e: E) => IO<R1, E1, boolean>,
1731
1731
  __tsplusTrace?: string,
1732
- ): IO<R & R1, E | E1, A> {
1732
+ ): IO<R | R1, E | E1, A> {
1733
1733
  return fa.catchAll((e) => f(e).flatMap((b) => (b ? fa.retryWhileIO(f) : IO.fail(e))));
1734
1734
  }
1735
1735
 
@@ -1787,7 +1787,7 @@ export function sequenceIterableDiscard<R, E, A>(as: Iterable<IO<R, E, A>>, __ts
1787
1787
  *
1788
1788
  * @tsplus static fncts.io.IOOps succeedNow
1789
1789
  */
1790
- export function succeedNow<A>(value: A, __tsplusTrace?: string): IO<unknown, never, A> {
1790
+ export function succeedNow<A>(value: A, __tsplusTrace?: string): IO<never, never, A> {
1791
1791
  return new SucceedNow(value, __tsplusTrace);
1792
1792
  }
1793
1793
 
@@ -1826,7 +1826,7 @@ export function summarized_<R, E, A, R1, E1, B, C>(
1826
1826
  summary: IO<R1, E1, B>,
1827
1827
  f: (start: B, end: B) => C,
1828
1828
  __tsplusTrace?: string,
1829
- ): IO<R & R1, E | E1, readonly [C, A]> {
1829
+ ): IO<R | R1, E | E1, readonly [C, A]> {
1830
1830
  return gen(function* (_) {
1831
1831
  const start = yield* _(summary);
1832
1832
  const value = yield* _(ma);
@@ -1898,7 +1898,7 @@ export function tap_<R, E, A, R1, E1, B>(
1898
1898
  self: IO<R, E, A>,
1899
1899
  f: (a: A) => IO<R1, E1, B>,
1900
1900
  __tsplusTrace?: string,
1901
- ): IO<R1 & R, E1 | E, A> {
1901
+ ): IO<R1 | R, E1 | E, A> {
1902
1902
  return self.flatMap((a) => f(a).map(() => a));
1903
1903
  }
1904
1904
 
@@ -1912,7 +1912,7 @@ export function tapCause_<R2, A2, R, E, E2>(
1912
1912
  ma: IO<R2, E2, A2>,
1913
1913
  f: (e: Cause<E2>) => IO<R, E, any>,
1914
1914
  __tsplusTrace?: string,
1915
- ): IO<R2 & R, E | E2, A2> {
1915
+ ): IO<R2 | R, E | E2, A2> {
1916
1916
  return ma.matchCauseIO((c) => f(c).flatMap(() => IO.failCauseNow(c)), IO.succeedNow);
1917
1917
  }
1918
1918
 
@@ -1942,7 +1942,7 @@ export function tapErrorCause_<R, E, A, R1, E1>(
1942
1942
  self: IO<R, E, A>,
1943
1943
  f: (e: Cause<E>) => IO<R1, E1, any>,
1944
1944
  __tsplusTrace?: string,
1945
- ): IO<R & R1, E | E1, A> {
1945
+ ): IO<R | R1, E | E1, A> {
1946
1946
  return self.matchCauseIO((cause) => f(cause).apSecond(IO.failCauseNow(cause)), IO.succeedNow);
1947
1947
  }
1948
1948
 
@@ -1954,7 +1954,7 @@ export function tryOrElse_<R, E, A, R1, E1, A1, R2, E2, A2>(
1954
1954
  that: Lazy<IO<R1, E1, A1>>,
1955
1955
  onSuccess: (a: A) => IO<R2, E2, A2>,
1956
1956
  __tsplusTrace?: string,
1957
- ): IO<R & R1 & R2, E1 | E2, A1 | A2> {
1957
+ ): IO<R | R1 | R2, E1 | E2, A1 | A2> {
1958
1958
  return ma.matchCauseIO((cause) => cause.keepDefects.match(that, IO.failCauseNow), onSuccess);
1959
1959
  }
1960
1960
 
@@ -2031,7 +2031,7 @@ export function when_<R, E, A>(ma: IO<R, E, A>, b: Lazy<boolean>, __tsplusTrace?
2031
2031
  *
2032
2032
  * @tsplus fluent fncts.io.IO whenIO
2033
2033
  */
2034
- export function whenIO_<R, E, A, R1, E1>(ma: IO<R, E, A>, mb: IO<R1, E1, boolean>): IO<R1 & R, E | E1, void> {
2034
+ export function whenIO_<R, E, A, R1, E1>(ma: IO<R, E, A>, mb: IO<R1, E1, boolean>): IO<R1 | R, E | E1, void> {
2035
2035
  return mb.flatMap((b) => (b ? ma.asUnit : IO.unit));
2036
2036
  }
2037
2037
 
@@ -2047,7 +2047,7 @@ export const yieldNow: UIO<void> = new Yield();
2047
2047
  /**
2048
2048
  * @tsplus fluent fncts.io.IO zip
2049
2049
  */
2050
- export function zip_<R, E, A, R1, E1, B>(self: IO<R, E, A>, that: IO<R1, E1, B>): IO<R & R1, E | E1, readonly [A, B]> {
2050
+ export function zip_<R, E, A, R1, E1, B>(self: IO<R, E, A>, that: IO<R1, E1, B>): IO<R | R1, E | E1, readonly [A, B]> {
2051
2051
  return self.zipWith(that, tuple);
2052
2052
  }
2053
2053
 
@@ -2058,12 +2058,12 @@ export function zipWith_<R, E, A, R1, E1, B, C>(
2058
2058
  self: IO<R, E, A>,
2059
2059
  that: IO<R1, E1, B>,
2060
2060
  f: (a: A, b: B) => C,
2061
- ): IO<R & R1, E | E1, C> {
2061
+ ): IO<R | R1, E | E1, C> {
2062
2062
  return self.flatMap((a) => that.map((b) => f(a, b)));
2063
2063
  }
2064
2064
 
2065
2065
  export class GenIO<R, E, A> {
2066
- readonly _R!: (_R: R) => void;
2066
+ readonly _R!: () => R;
2067
2067
  readonly _E!: () => E;
2068
2068
  readonly _A!: () => A;
2069
2069
 
@@ -4,7 +4,14 @@ import type { FiberContext } from "@fncts/io/Fiber/FiberContext";
4
4
  export const IOTypeId = Symbol.for("fncts.io.IO");
5
5
  export type IOTypeId = typeof IOTypeId;
6
6
 
7
- export interface IOF extends IO<any, any, any> {}
7
+ export interface IOF extends HKT {
8
+ type: IO<this["R"], this["E"], this["A"]>;
9
+ variance: {
10
+ R: "-";
11
+ E: "+";
12
+ A: "+";
13
+ };
14
+ }
8
15
 
9
16
  /**
10
17
  * @tsplus type fncts.io.IO
@@ -12,11 +19,9 @@ export interface IOF extends IO<any, any, any> {}
12
19
  */
13
20
  export abstract class IO<R, E, A> {
14
21
  readonly _typeId: IOTypeId = IOTypeId;
15
- readonly [HKT.F]!: IOF;
16
- readonly [HKT.R]!: (_: R) => void;
17
- readonly [HKT.E]!: () => E;
18
- readonly [HKT.A]!: () => A;
19
- readonly [HKT.T]!: IO<HKT._R<this>, HKT._E<this>, HKT._A<this>>;
22
+ declare _R: () => R;
23
+ declare _E: () => E;
24
+ declare _A: () => A;
20
25
  }
21
26
 
22
27
  /**
@@ -42,11 +47,11 @@ export function unifyIO<X extends IO<any, any, any>>(
42
47
  return self;
43
48
  }
44
49
 
45
- export type UIO<A> = IO<unknown, never, A>;
50
+ export type UIO<A> = IO<never, never, A>;
46
51
 
47
52
  export type URIO<R, A> = IO<R, never, A>;
48
53
 
49
- export type FIO<E, A> = IO<unknown, E, A>;
54
+ export type FIO<E, A> = IO<never, E, A>;
50
55
 
51
56
  export const enum IOTag {
52
57
  SucceedNow = "SucceedNow",
@@ -86,7 +91,7 @@ export function isIO(u: unknown): u is IO<any, any, any> {
86
91
  /**
87
92
  * @internal
88
93
  */
89
- export class Chain<R, R1, E, E1, A, A1> extends IO<R & R1, E | E1, A1> {
94
+ export class Chain<R, R1, E, E1, A, A1> extends IO<R | R1, E | E1, A1> {
90
95
  readonly _tag = IOTag.Chain;
91
96
  constructor(readonly io: IO<R, E, A>, readonly f: (a: A) => IO<R1, E1, A1>, readonly trace?: string) {
92
97
  super();
@@ -96,7 +101,7 @@ export class Chain<R, R1, E, E1, A, A1> extends IO<R & R1, E | E1, A1> {
96
101
  /**
97
102
  * @internal
98
103
  */
99
- export class SucceedNow<A> extends IO<unknown, never, A> {
104
+ export class SucceedNow<A> extends IO<never, never, A> {
100
105
  readonly _tag = IOTag.SucceedNow;
101
106
  constructor(readonly value: A, readonly trace?: string) {
102
107
  super();
@@ -106,21 +111,21 @@ export class SucceedNow<A> extends IO<unknown, never, A> {
106
111
  /**
107
112
  * @internal
108
113
  */
109
- export class Succeed<A> extends IO<unknown, never, A> {
114
+ export class Succeed<A> extends IO<never, never, A> {
110
115
  readonly _tag = IOTag.Succeed;
111
116
  constructor(readonly effect: () => A, readonly trace?: string) {
112
117
  super();
113
118
  }
114
119
  }
115
120
 
116
- export class SucceedWith<A> extends IO<unknown, never, A> {
121
+ export class SucceedWith<A> extends IO<never, never, A> {
117
122
  readonly _tag = IOTag.SucceedWith;
118
123
  constructor(readonly effect: (runtimeConfig: RuntimeConfig, fiberId: FiberId) => A, readonly trace?: string) {
119
124
  super();
120
125
  }
121
126
  }
122
127
 
123
- export class Trace extends IO<unknown, never, Trace_> {
128
+ export class Trace extends IO<never, never, Trace_> {
124
129
  readonly _tag = IOTag.Trace;
125
130
  constructor(readonly trace?: string) {
126
131
  super();
@@ -130,7 +135,7 @@ export class Trace extends IO<unknown, never, Trace_> {
130
135
  /**
131
136
  * @internal
132
137
  */
133
- export class Async<R, E, A, R1> extends IO<R & R1, E, A> {
138
+ export class Async<R, E, A, R1> extends IO<R | R1, E, A> {
134
139
  readonly _tag = IOTag.Async;
135
140
  constructor(
136
141
  readonly register: (f: (_: IO<R, E, A>) => void) => Either<Canceler<R1>, IO<R, E, A>>,
@@ -144,7 +149,7 @@ export class Async<R, E, A, R1> extends IO<R & R1, E, A> {
144
149
  /**
145
150
  * @internal
146
151
  */
147
- export class Match<R, E, A, R1, E1, B, R2, E2, C> extends IO<R & R1 & R2, E1 | E2, B | C> {
152
+ export class Match<R, E, A, R1, E1, B, R2, E2, C> extends IO<R | R1 | R2, E1 | E2, B | C> {
148
153
  readonly _tag = IOTag.Match;
149
154
 
150
155
  constructor(
@@ -173,7 +178,7 @@ export class Fork<R, E, A> extends IO<R, never, FiberContext<E, A>> {
173
178
  /**
174
179
  * @internal
175
180
  */
176
- export class Fail<E> extends IO<unknown, E, never> {
181
+ export class Fail<E> extends IO<never, E, never> {
177
182
  readonly _tag = IOTag.Fail;
178
183
 
179
184
  constructor(readonly cause: Lazy<Cause<E>>, readonly trace?: string) {
@@ -184,7 +189,7 @@ export class Fail<E> extends IO<unknown, E, never> {
184
189
  /**
185
190
  * @internal
186
191
  */
187
- export class Yield extends IO<unknown, never, void> {
192
+ export class Yield extends IO<never, never, void> {
188
193
  readonly _tag = IOTag.Yield;
189
194
 
190
195
  constructor(readonly trace?: string) {
@@ -217,7 +222,7 @@ export class DeferWith<R, E, A> extends IO<R, E, A> {
217
222
  /**
218
223
  * @internal
219
224
  */
220
- export class Race<R, E, A, R1, E1, A1, R2, E2, A2, R3, E3, A3> extends IO<R & R1 & R2 & R3, E2 | E3, A2 | A3> {
225
+ export class Race<R, E, A, R1, E1, A1, R2, E2, A2, R3, E3, A3> extends IO<R | R1 | R2 | R3, E2 | E3, A2 | A3> {
221
226
  readonly _tag = "Race";
222
227
 
223
228
  constructor(
@@ -278,7 +283,7 @@ export class Supervise<R, E, A> extends IO<R, E, A> {
278
283
  /**
279
284
  * @internal
280
285
  */
281
- export class FiberRefModify<A, B> extends IO<unknown, never, B> {
286
+ export class FiberRefModify<A, B> extends IO<never, never, B> {
282
287
  readonly _tag = IOTag.FiberRefModify;
283
288
 
284
289
  constructor(readonly fiberRef: FiberRef<unknown>, readonly f: (a: A) => readonly [B, A], readonly trace?: string) {
@@ -298,7 +303,7 @@ export class FiberRefLocally<V, R, E, A> extends IO<R, E, A> {
298
303
  }
299
304
  }
300
305
 
301
- export class FiberRefDelete extends IO<unknown, never, void> {
306
+ export class FiberRefDelete extends IO<never, never, void> {
302
307
  readonly _tag = IOTag.FiberRefDelete;
303
308
  constructor(readonly fiberRef: FiberRef<unknown>, readonly trace?: string) {
304
309
  super();
@@ -312,7 +317,7 @@ export class FiberRefWith<A, P, R, E, B> extends IO<R, E, B> {
312
317
  }
313
318
  }
314
319
 
315
- export class FiberRefModifyAll<A> extends IO<unknown, never, A> {
320
+ export class FiberRefModifyAll<A> extends IO<never, never, A> {
316
321
  readonly _tag = IOTag.FiberRefModifyAll;
317
322
  constructor(
318
323
  readonly f: (fiberId: FiberId.Runtime, fiberRefs: FiberRefs) => readonly [A, FiberRefs],
@@ -352,14 +357,14 @@ export class GetRuntimeConfig<R, E, A> extends IO<R, E, A> {
352
357
  }
353
358
  }
354
359
 
355
- export class Ensuring<R, E, A, R1> extends IO<R & R1, E, A> {
360
+ export class Ensuring<R, E, A, R1> extends IO<R | R1, E, A> {
356
361
  readonly _tag = IOTag.Ensuring;
357
362
  constructor(readonly io: IO<R, E, A>, readonly finalizer: IO<R1, never, any>, readonly trace?: string) {
358
363
  super();
359
364
  }
360
365
  }
361
366
 
362
- export class Logged extends IO<unknown, never, void> {
367
+ export class Logged extends IO<never, never, void> {
363
368
  readonly _tag = IOTag.Logged;
364
369
  constructor(
365
370
  readonly message: () => string,
@@ -373,7 +378,7 @@ export class Logged extends IO<unknown, never, void> {
373
378
  }
374
379
  }
375
380
 
376
- export class SetRuntimeConfig extends IO<unknown, never, void> {
381
+ export class SetRuntimeConfig extends IO<never, never, void> {
377
382
  readonly _tag = IOTag.SetRuntimeConfig;
378
383
  constructor(readonly runtimeConfig: RuntimeConfig, readonly trace?: string) {
379
384
  super();