@fncts/io 0.0.10 → 0.0.13

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