@fncts/io 0.0.47 → 0.0.49

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 (685) hide show
  1. package/Cached/api.d.ts +1 -1
  2. package/Channel/api.d.ts +80 -80
  3. package/Channel/core-api.d.ts +26 -26
  4. package/Console/definition.d.ts +1 -0
  5. package/CountdownLatch.d.ts +1 -0
  6. package/Fiber/FiberMessage.d.ts +6 -28
  7. package/Fiber/FiberRuntime.d.ts +108 -77
  8. package/Fiber/api/interruptAs.d.ts +2 -2
  9. package/Fiber/definition.d.ts +2 -0
  10. package/FiberScope/definition.d.ts +3 -0
  11. package/FiberSet.d.ts +2 -1
  12. package/Future/State.d.ts +59 -0
  13. package/Future/api.d.ts +8 -3
  14. package/Future/constructors.d.ts +1 -1
  15. package/Future/definition.d.ts +1 -17
  16. package/Future.d.ts +1 -0
  17. package/Hub/api.d.ts +15 -15
  18. package/IO/api/array.d.ts +22 -0
  19. package/IO/api/awaitAllChildren.d.ts +6 -0
  20. package/IO/api/cachedInvalidate.d.ts +15 -0
  21. package/IO/api/forkDaemon.d.ts +1 -1
  22. package/IO/api/onTermination.d.ts +1 -2
  23. package/IO/api/transplant.d.ts +11 -1
  24. package/IO/api.d.ts +247 -225
  25. package/IO/definition.d.ts +12 -25
  26. package/IO.d.ts +3 -1
  27. package/Random/definition.d.ts +1 -0
  28. package/Ref/Synchronized/api.d.ts +1 -1
  29. package/Semaphore/Reservation.d.ts +15 -0
  30. package/Semaphore/constructors.d.ts +13 -0
  31. package/Semaphore/definition.d.ts +29 -0
  32. package/Semaphore.d.ts +3 -40
  33. package/Stream/api.d.ts +164 -164
  34. package/_cjs/Cached/api.cjs +1 -2
  35. package/_cjs/Cached/api.cjs.map +1 -1
  36. package/_cjs/Cached/internal.cjs +1 -2
  37. package/_cjs/Cached/internal.cjs.map +1 -1
  38. package/_cjs/Channel/api/interruptWhen.cjs +1 -2
  39. package/_cjs/Channel/api/interruptWhen.cjs.map +1 -1
  40. package/_cjs/Channel/api/mapOutConcurrentIO.cjs +2 -3
  41. package/_cjs/Channel/api/mapOutConcurrentIO.cjs.map +1 -1
  42. package/_cjs/Channel/api/mergeAll.cjs +1 -2
  43. package/_cjs/Channel/api/mergeAll.cjs.map +1 -1
  44. package/_cjs/Channel/api/mergeAllUnboundedWith.cjs +1 -2
  45. package/_cjs/Channel/api/mergeAllUnboundedWith.cjs.map +1 -1
  46. package/_cjs/Channel/api/mergeAllWith.cjs +2 -3
  47. package/_cjs/Channel/api/mergeAllWith.cjs.map +1 -1
  48. package/_cjs/Channel/api/mergeMap.cjs +1 -2
  49. package/_cjs/Channel/api/mergeMap.cjs.map +1 -1
  50. package/_cjs/Channel/api/mergeWith.cjs +1 -2
  51. package/_cjs/Channel/api/mergeWith.cjs.map +1 -1
  52. package/_cjs/Channel/api/run.cjs +1 -2
  53. package/_cjs/Channel/api/run.cjs.map +1 -1
  54. package/_cjs/Channel/api/runCollect.cjs +1 -2
  55. package/_cjs/Channel/api/runCollect.cjs.map +1 -1
  56. package/_cjs/Channel/api/runDrain.cjs +1 -2
  57. package/_cjs/Channel/api/runDrain.cjs.map +1 -1
  58. package/_cjs/Channel/api/runScoped.cjs +3 -4
  59. package/_cjs/Channel/api/runScoped.cjs.map +1 -1
  60. package/_cjs/Channel/api/toPull.cjs +2 -3
  61. package/_cjs/Channel/api/toPull.cjs.map +1 -1
  62. package/_cjs/Channel/api/zipConcurrent.cjs +1 -2
  63. package/_cjs/Channel/api/zipConcurrent.cjs.map +1 -1
  64. package/_cjs/Channel/api.cjs +206 -207
  65. package/_cjs/Channel/api.cjs.map +1 -1
  66. package/_cjs/Channel/core-api.cjs +43 -42
  67. package/_cjs/Channel/core-api.cjs.map +1 -1
  68. package/_cjs/Channel/internal/AsyncInputConsumer.cjs +0 -4
  69. package/_cjs/Channel/internal/AsyncInputProducer.cjs +0 -4
  70. package/_cjs/Channel/internal/ChannelExecutor.cjs +4 -5
  71. package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
  72. package/_cjs/Channel/internal/ChannelState.cjs +1 -2
  73. package/_cjs/Channel/internal/ChannelState.cjs.map +1 -1
  74. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs +1 -2
  75. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs.map +1 -1
  76. package/_cjs/Clock/api.cjs +1 -2
  77. package/_cjs/Clock/api.cjs.map +1 -1
  78. package/_cjs/Clock/definition.cjs +1 -2
  79. package/_cjs/Clock/definition.cjs.map +1 -1
  80. package/_cjs/Clock/live.cjs +1 -2
  81. package/_cjs/Clock/live.cjs.map +1 -1
  82. package/_cjs/Console/api.cjs +1 -2
  83. package/_cjs/Console/api.cjs.map +1 -1
  84. package/_cjs/Console/definition.cjs +2 -2
  85. package/_cjs/Console/definition.cjs.map +1 -1
  86. package/_cjs/Console/live.cjs +1 -2
  87. package/_cjs/Console/live.cjs.map +1 -1
  88. package/_cjs/CountdownLatch.cjs +3 -3
  89. package/_cjs/CountdownLatch.cjs.map +1 -1
  90. package/_cjs/Differ/api.cjs +1 -2
  91. package/_cjs/Differ/api.cjs.map +1 -1
  92. package/_cjs/Fiber/FiberMessage.cjs +3 -24
  93. package/_cjs/Fiber/FiberMessage.cjs.map +1 -1
  94. package/_cjs/Fiber/FiberRuntime.cjs +879 -636
  95. package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
  96. package/_cjs/Fiber/api/awaitAll.cjs +1 -2
  97. package/_cjs/Fiber/api/awaitAll.cjs.map +1 -1
  98. package/_cjs/Fiber/api/collectAll.cjs +2 -3
  99. package/_cjs/Fiber/api/collectAll.cjs.map +1 -1
  100. package/_cjs/Fiber/api/fromIO.cjs +1 -2
  101. package/_cjs/Fiber/api/fromIO.cjs.map +1 -1
  102. package/_cjs/Fiber/api/interrupt.cjs +2 -3
  103. package/_cjs/Fiber/api/interrupt.cjs.map +1 -1
  104. package/_cjs/Fiber/api/interruptAll.cjs +2 -3
  105. package/_cjs/Fiber/api/interruptAll.cjs.map +1 -1
  106. package/_cjs/Fiber/api/interruptAs.cjs +5 -10
  107. package/_cjs/Fiber/api/interruptAs.cjs.map +1 -1
  108. package/_cjs/Fiber/api/interruptFork.cjs +2 -3
  109. package/_cjs/Fiber/api/interruptFork.cjs.map +1 -1
  110. package/_cjs/Fiber/api/join.cjs +1 -2
  111. package/_cjs/Fiber/api/join.cjs.map +1 -1
  112. package/_cjs/Fiber/api/joinAll.cjs +1 -2
  113. package/_cjs/Fiber/api/joinAll.cjs.map +1 -1
  114. package/_cjs/Fiber/api/mapFiber.cjs +1 -2
  115. package/_cjs/Fiber/api/mapFiber.cjs.map +1 -1
  116. package/_cjs/Fiber/api/mapIO.cjs +2 -3
  117. package/_cjs/Fiber/api/mapIO.cjs.map +1 -1
  118. package/_cjs/Fiber/api/zipWith.cjs +2 -3
  119. package/_cjs/Fiber/api/zipWith.cjs.map +1 -1
  120. package/_cjs/Fiber/constructors.cjs +2 -3
  121. package/_cjs/Fiber/constructors.cjs.map +1 -1
  122. package/_cjs/Fiber/definition.cjs +6 -4
  123. package/_cjs/Fiber/definition.cjs.map +1 -1
  124. package/_cjs/FiberRef/api/locallyScoped.cjs +1 -2
  125. package/_cjs/FiberRef/api/locallyScoped.cjs.map +1 -1
  126. package/_cjs/FiberRef/api/locallyScopedWith.cjs +1 -2
  127. package/_cjs/FiberRef/api/locallyScopedWith.cjs.map +1 -1
  128. package/_cjs/FiberRef/constructors.cjs +1 -2
  129. package/_cjs/FiberRef/constructors.cjs.map +1 -1
  130. package/_cjs/FiberRef/definition.cjs +1 -2
  131. package/_cjs/FiberRef/definition.cjs.map +1 -1
  132. package/_cjs/FiberRef/operations.cjs +1 -2
  133. package/_cjs/FiberRef/operations.cjs.map +1 -1
  134. package/_cjs/FiberRef/unsafe.cjs +1 -2
  135. package/_cjs/FiberRef/unsafe.cjs.map +1 -1
  136. package/_cjs/FiberRefs/Patch.cjs +1 -2
  137. package/_cjs/FiberRefs/Patch.cjs.map +1 -1
  138. package/_cjs/FiberRefs/api.cjs +1 -2
  139. package/_cjs/FiberRefs/api.cjs.map +1 -1
  140. package/_cjs/FiberRefs/definition.cjs +1 -2
  141. package/_cjs/FiberRefs/definition.cjs.map +1 -1
  142. package/_cjs/FiberScope/definition.cjs +29 -6
  143. package/_cjs/FiberScope/definition.cjs.map +1 -1
  144. package/_cjs/FiberSet.cjs +16 -15
  145. package/_cjs/FiberSet.cjs.map +1 -1
  146. package/_cjs/FiberStatus/definition.cjs +1 -2
  147. package/_cjs/FiberStatus/definition.cjs.map +1 -1
  148. package/_cjs/Future/State.cjs +108 -0
  149. package/_cjs/Future/State.cjs.map +1 -0
  150. package/_cjs/Future/api.cjs +71 -64
  151. package/_cjs/Future/api.cjs.map +1 -1
  152. package/_cjs/Future/constructors.cjs +3 -4
  153. package/_cjs/Future/constructors.cjs.map +1 -1
  154. package/_cjs/Future/definition.cjs +1 -15
  155. package/_cjs/Future/definition.cjs.map +1 -1
  156. package/_cjs/Future.cjs +11 -0
  157. package/_cjs/Future.cjs.map +1 -1
  158. package/_cjs/Hub/api.cjs +56 -57
  159. package/_cjs/Hub/api.cjs.map +1 -1
  160. package/_cjs/Hub/internal.cjs +1 -2
  161. package/_cjs/Hub/internal.cjs.map +1 -1
  162. package/_cjs/IO/api/acquireRelease.cjs +1 -2
  163. package/_cjs/IO/api/acquireRelease.cjs.map +1 -1
  164. package/_cjs/IO/api/acquireReleaseExit.cjs +1 -2
  165. package/_cjs/IO/api/acquireReleaseExit.cjs.map +1 -1
  166. package/_cjs/IO/api/acquireReleaseInterruptible.cjs +1 -2
  167. package/_cjs/IO/api/acquireReleaseInterruptible.cjs.map +1 -1
  168. package/_cjs/IO/api/acquireReleaseInterruptibleExit.cjs +1 -2
  169. package/_cjs/IO/api/acquireReleaseInterruptibleExit.cjs.map +1 -1
  170. package/_cjs/IO/api/addFinalizer.cjs +1 -2
  171. package/_cjs/IO/api/addFinalizer.cjs.map +1 -1
  172. package/_cjs/IO/api/addFinalizerExit.cjs +1 -2
  173. package/_cjs/IO/api/addFinalizerExit.cjs.map +1 -1
  174. package/_cjs/IO/api/all.cjs +1 -2
  175. package/_cjs/IO/api/all.cjs.map +1 -1
  176. package/_cjs/IO/api/array.cjs +51 -0
  177. package/_cjs/IO/api/array.cjs.map +1 -0
  178. package/_cjs/IO/api/asyncIO.cjs +1 -2
  179. package/_cjs/IO/api/asyncIO.cjs.map +1 -1
  180. package/_cjs/IO/api/asyncInterrupt.cjs +1 -2
  181. package/_cjs/IO/api/asyncInterrupt.cjs.map +1 -1
  182. package/_cjs/IO/api/awaitAllChildren.cjs +17 -0
  183. package/_cjs/IO/api/awaitAllChildren.cjs.map +1 -0
  184. package/_cjs/IO/api/blocking.cjs +1 -2
  185. package/_cjs/IO/api/blocking.cjs.map +1 -1
  186. package/_cjs/IO/api/bracket.cjs +1 -2
  187. package/_cjs/IO/api/bracket.cjs.map +1 -1
  188. package/_cjs/IO/api/bracketExit.cjs +1 -2
  189. package/_cjs/IO/api/bracketExit.cjs.map +1 -1
  190. package/_cjs/IO/api/cachedInvalidate.cjs +47 -0
  191. package/_cjs/IO/api/cachedInvalidate.cjs.map +1 -0
  192. package/_cjs/IO/api/clockWith.cjs +1 -2
  193. package/_cjs/IO/api/clockWith.cjs.map +1 -1
  194. package/_cjs/IO/api/concurrency.cjs +1 -2
  195. package/_cjs/IO/api/concurrency.cjs.map +1 -1
  196. package/_cjs/IO/api/concurrentFinalizers.cjs +1 -2
  197. package/_cjs/IO/api/concurrentFinalizers.cjs.map +1 -1
  198. package/_cjs/IO/api/consoleWith.cjs +1 -2
  199. package/_cjs/IO/api/consoleWith.cjs.map +1 -1
  200. package/_cjs/IO/api/daemonChildren.cjs +1 -2
  201. package/_cjs/IO/api/daemonChildren.cjs.map +1 -1
  202. package/_cjs/IO/api/delay.cjs +1 -2
  203. package/_cjs/IO/api/delay.cjs.map +1 -1
  204. package/_cjs/IO/api/descriptor.cjs +1 -2
  205. package/_cjs/IO/api/descriptor.cjs.map +1 -1
  206. package/_cjs/IO/api/diffFiberRefs.cjs +1 -2
  207. package/_cjs/IO/api/diffFiberRefs.cjs.map +1 -1
  208. package/_cjs/IO/api/disconnect.cjs +2 -3
  209. package/_cjs/IO/api/disconnect.cjs.map +1 -1
  210. package/_cjs/IO/api/ensuringChildren.cjs +1 -2
  211. package/_cjs/IO/api/ensuringChildren.cjs.map +1 -1
  212. package/_cjs/IO/api/environment.cjs +1 -2
  213. package/_cjs/IO/api/environment.cjs.map +1 -1
  214. package/_cjs/IO/api/foreachConcurrent.cjs +36 -30
  215. package/_cjs/IO/api/foreachConcurrent.cjs.map +1 -1
  216. package/_cjs/IO/api/foreachExec.cjs +1 -2
  217. package/_cjs/IO/api/foreachExec.cjs.map +1 -1
  218. package/_cjs/IO/api/fork.cjs +2 -3
  219. package/_cjs/IO/api/fork.cjs.map +1 -1
  220. package/_cjs/IO/api/forkAll.cjs +1 -2
  221. package/_cjs/IO/api/forkAll.cjs.map +1 -1
  222. package/_cjs/IO/api/forkDaemon.cjs +5 -6
  223. package/_cjs/IO/api/forkDaemon.cjs.map +1 -1
  224. package/_cjs/IO/api/forkIn.cjs +1 -2
  225. package/_cjs/IO/api/forkIn.cjs.map +1 -1
  226. package/_cjs/IO/api/forkScoped.cjs +1 -2
  227. package/_cjs/IO/api/forkScoped.cjs.map +1 -1
  228. package/_cjs/IO/api/fulfill.cjs +1 -2
  229. package/_cjs/IO/api/fulfill.cjs.map +1 -1
  230. package/_cjs/IO/api/interrupt.cjs +4 -5
  231. package/_cjs/IO/api/interrupt.cjs.map +1 -1
  232. package/_cjs/IO/api/memoize.cjs +1 -2
  233. package/_cjs/IO/api/memoize.cjs.map +1 -1
  234. package/_cjs/IO/api/onTermination.cjs +2 -3
  235. package/_cjs/IO/api/onTermination.cjs.map +1 -1
  236. package/_cjs/IO/api/once.cjs +1 -2
  237. package/_cjs/IO/api/once.cjs.map +1 -1
  238. package/_cjs/IO/api/patchFiberRefs.cjs +1 -2
  239. package/_cjs/IO/api/patchFiberRefs.cjs.map +1 -1
  240. package/_cjs/IO/api/provideLayer.cjs +1 -2
  241. package/_cjs/IO/api/provideLayer.cjs.map +1 -1
  242. package/_cjs/IO/api/provideScope.cjs +1 -2
  243. package/_cjs/IO/api/provideScope.cjs.map +1 -1
  244. package/_cjs/IO/api/provideSomeLayer.cjs +1 -2
  245. package/_cjs/IO/api/provideSomeLayer.cjs.map +1 -1
  246. package/_cjs/IO/api/provideSomeRuntime.cjs +1 -2
  247. package/_cjs/IO/api/provideSomeRuntime.cjs.map +1 -1
  248. package/_cjs/IO/api/race.cjs +2 -3
  249. package/_cjs/IO/api/race.cjs.map +1 -1
  250. package/_cjs/IO/api/raceFirst.cjs +1 -2
  251. package/_cjs/IO/api/raceFirst.cjs.map +1 -1
  252. package/_cjs/IO/api/raceWith.cjs +1 -2
  253. package/_cjs/IO/api/raceWith.cjs.map +1 -1
  254. package/_cjs/IO/api/randomWith.cjs +1 -2
  255. package/_cjs/IO/api/randomWith.cjs.map +1 -1
  256. package/_cjs/IO/api/repeat.cjs +1 -2
  257. package/_cjs/IO/api/repeat.cjs.map +1 -1
  258. package/_cjs/IO/api/retry.cjs +1 -2
  259. package/_cjs/IO/api/retry.cjs.map +1 -1
  260. package/_cjs/IO/api/schedule.cjs +1 -2
  261. package/_cjs/IO/api/schedule.cjs.map +1 -1
  262. package/_cjs/IO/api/scope.cjs +1 -2
  263. package/_cjs/IO/api/scope.cjs.map +1 -1
  264. package/_cjs/IO/api/scopeWith.cjs +1 -2
  265. package/_cjs/IO/api/scopeWith.cjs.map +1 -1
  266. package/_cjs/IO/api/scoped.cjs +1 -2
  267. package/_cjs/IO/api/scoped.cjs.map +1 -1
  268. package/_cjs/IO/api/sleep.cjs +1 -2
  269. package/_cjs/IO/api/sleep.cjs.map +1 -1
  270. package/_cjs/IO/api/stateful.cjs +1 -2
  271. package/_cjs/IO/api/stateful.cjs.map +1 -1
  272. package/_cjs/IO/api/supervised.cjs +1 -2
  273. package/_cjs/IO/api/supervised.cjs.map +1 -1
  274. package/_cjs/IO/api/timeout.cjs +9 -11
  275. package/_cjs/IO/api/timeout.cjs.map +1 -1
  276. package/_cjs/IO/api/transplant.cjs +22 -7
  277. package/_cjs/IO/api/transplant.cjs.map +1 -1
  278. package/_cjs/IO/api/whenFiberRef.cjs +1 -2
  279. package/_cjs/IO/api/whenFiberRef.cjs.map +1 -1
  280. package/_cjs/IO/api/whenRef.cjs +1 -2
  281. package/_cjs/IO/api/whenRef.cjs.map +1 -1
  282. package/_cjs/IO/api/withChildren.cjs +1 -2
  283. package/_cjs/IO/api/withChildren.cjs.map +1 -1
  284. package/_cjs/IO/api/withEarlyRelease.cjs +1 -2
  285. package/_cjs/IO/api/withEarlyRelease.cjs.map +1 -1
  286. package/_cjs/IO/api/withFinalizer.cjs +1 -2
  287. package/_cjs/IO/api/withFinalizer.cjs.map +1 -1
  288. package/_cjs/IO/api/withFinalizerExit.cjs +1 -2
  289. package/_cjs/IO/api/withFinalizerExit.cjs.map +1 -1
  290. package/_cjs/IO/api/zipConcurrent.cjs +5 -6
  291. package/_cjs/IO/api/zipConcurrent.cjs.map +1 -1
  292. package/_cjs/IO/api.cjs +522 -473
  293. package/_cjs/IO/api.cjs.map +1 -1
  294. package/_cjs/IO/definition.cjs +2 -3
  295. package/_cjs/IO/definition.cjs.map +1 -1
  296. package/_cjs/IO/runtime.cjs +9 -10
  297. package/_cjs/IO/runtime.cjs.map +1 -1
  298. package/_cjs/IO.cjs +33 -11
  299. package/_cjs/IO.cjs.map +1 -1
  300. package/_cjs/IOEnv/definition.cjs +1 -2
  301. package/_cjs/IOEnv/definition.cjs.map +1 -1
  302. package/_cjs/IOEnv/live.cjs +1 -2
  303. package/_cjs/IOEnv/live.cjs.map +1 -1
  304. package/_cjs/IOEnv/services.cjs +1 -2
  305. package/_cjs/IOEnv/services.cjs.map +1 -1
  306. package/_cjs/Layer/MemoMap.cjs +1 -2
  307. package/_cjs/Layer/MemoMap.cjs.map +1 -1
  308. package/_cjs/Layer/api.cjs +1 -2
  309. package/_cjs/Layer/api.cjs.map +1 -1
  310. package/_cjs/Logger/api.cjs +1 -2
  311. package/_cjs/Logger/api.cjs.map +1 -1
  312. package/_cjs/Logger/constructors.cjs +1 -2
  313. package/_cjs/Logger/constructors.cjs.map +1 -1
  314. package/_cjs/MVar/api.cjs +1 -2
  315. package/_cjs/MVar/api.cjs.map +1 -1
  316. package/_cjs/Push/api.cjs +2 -3
  317. package/_cjs/Push/api.cjs.map +1 -1
  318. package/_cjs/Push/internal.cjs +1 -2
  319. package/_cjs/Push/internal.cjs.map +1 -1
  320. package/_cjs/Queue/api/dimapIO.cjs +1 -2
  321. package/_cjs/Queue/api/dimapIO.cjs.map +1 -1
  322. package/_cjs/Queue/api/filterInputIO.cjs +1 -2
  323. package/_cjs/Queue/api/filterInputIO.cjs.map +1 -1
  324. package/_cjs/Queue/api/filterOutputIO.cjs +1 -2
  325. package/_cjs/Queue/api/filterOutputIO.cjs.map +1 -1
  326. package/_cjs/Queue/api/poll.cjs +1 -2
  327. package/_cjs/Queue/api/poll.cjs.map +1 -1
  328. package/_cjs/Queue/api/takeBetween.cjs +1 -2
  329. package/_cjs/Queue/api/takeBetween.cjs.map +1 -1
  330. package/_cjs/Queue/api/takeN.cjs +1 -2
  331. package/_cjs/Queue/api/takeN.cjs.map +1 -1
  332. package/_cjs/Queue/api/zipWithIO.cjs +1 -2
  333. package/_cjs/Queue/api/zipWithIO.cjs.map +1 -1
  334. package/_cjs/Queue/constructors.cjs +1 -2
  335. package/_cjs/Queue/constructors.cjs.map +1 -1
  336. package/_cjs/Queue/internal.cjs +1 -2
  337. package/_cjs/Queue/internal.cjs.map +1 -1
  338. package/_cjs/Queue/strategy.cjs +1 -2
  339. package/_cjs/Queue/strategy.cjs.map +1 -1
  340. package/_cjs/Random/api.cjs +1 -2
  341. package/_cjs/Random/api.cjs.map +1 -1
  342. package/_cjs/Random/definition.cjs +2 -2
  343. package/_cjs/Random/definition.cjs.map +1 -1
  344. package/_cjs/Random/live.cjs +1 -2
  345. package/_cjs/Random/live.cjs.map +1 -1
  346. package/_cjs/Ref/Atomic.cjs +1 -2
  347. package/_cjs/Ref/Atomic.cjs.map +1 -1
  348. package/_cjs/Ref/Derived.cjs +1 -2
  349. package/_cjs/Ref/Derived.cjs.map +1 -1
  350. package/_cjs/Ref/DerivedAll.cjs +1 -2
  351. package/_cjs/Ref/DerivedAll.cjs.map +1 -1
  352. package/_cjs/Ref/Synchronized/api.cjs +2 -3
  353. package/_cjs/Ref/Synchronized/api.cjs.map +1 -1
  354. package/_cjs/Ref/Synchronized/constructors.cjs +2 -3
  355. package/_cjs/Ref/Synchronized/constructors.cjs.map +1 -1
  356. package/_cjs/Ref/Synchronized/definition.cjs +2 -3
  357. package/_cjs/Ref/Synchronized/definition.cjs.map +1 -1
  358. package/_cjs/Ref/api/collect.cjs +1 -2
  359. package/_cjs/Ref/api/collect.cjs.map +1 -1
  360. package/_cjs/Ref/api/dimap.cjs +1 -2
  361. package/_cjs/Ref/api/dimap.cjs.map +1 -1
  362. package/_cjs/Ref/api/filter.cjs +1 -2
  363. package/_cjs/Ref/api/filter.cjs.map +1 -1
  364. package/_cjs/Ref/api/modify.cjs +1 -2
  365. package/_cjs/Ref/api/modify.cjs.map +1 -1
  366. package/_cjs/Ref/api.cjs +1 -2
  367. package/_cjs/Ref/api.cjs.map +1 -1
  368. package/_cjs/Ref/constructors.cjs +1 -2
  369. package/_cjs/Ref/constructors.cjs.map +1 -1
  370. package/_cjs/RefSubject/Atomic.cjs +1 -2
  371. package/_cjs/RefSubject/Atomic.cjs.map +1 -1
  372. package/_cjs/RefSubject/Synchronized/api.cjs +1 -2
  373. package/_cjs/RefSubject/Synchronized/api.cjs.map +1 -1
  374. package/_cjs/RefSubject/Synchronized/definition.cjs +1 -2
  375. package/_cjs/RefSubject/Synchronized/definition.cjs.map +1 -1
  376. package/_cjs/RefSubject/api.cjs +1 -2
  377. package/_cjs/RefSubject/api.cjs.map +1 -1
  378. package/_cjs/Reloadable/api.cjs +1 -2
  379. package/_cjs/Reloadable/api.cjs.map +1 -1
  380. package/_cjs/Reloadable/constructors.cjs +1 -2
  381. package/_cjs/Reloadable/constructors.cjs.map +1 -1
  382. package/_cjs/Reloadable/definition.cjs +1 -2
  383. package/_cjs/Reloadable/definition.cjs.map +1 -1
  384. package/_cjs/RuntimeFlag.cjs +0 -4
  385. package/_cjs/RuntimeFlags/Patch.cjs +1 -2
  386. package/_cjs/RuntimeFlags/Patch.cjs.map +1 -1
  387. package/_cjs/RuntimeFlags/RuntimeFlags.cjs +1 -2
  388. package/_cjs/RuntimeFlags/RuntimeFlags.cjs.map +1 -1
  389. package/_cjs/STM/api/atomically.cjs +1 -2
  390. package/_cjs/STM/api/atomically.cjs.map +1 -1
  391. package/_cjs/STM/api/core-api.cjs +1 -2
  392. package/_cjs/STM/api/core-api.cjs.map +1 -1
  393. package/_cjs/STM/api.cjs +1 -2
  394. package/_cjs/STM/api.cjs.map +1 -1
  395. package/_cjs/STM/definition.cjs +2 -3
  396. package/_cjs/STM/definition.cjs.map +1 -1
  397. package/_cjs/STM/driver.cjs +1 -2
  398. package/_cjs/STM/driver.cjs.map +1 -1
  399. package/_cjs/STM/internal/CommitState.cjs +1 -2
  400. package/_cjs/STM/internal/CommitState.cjs.map +1 -1
  401. package/_cjs/STM/internal/Journal.cjs +1 -2
  402. package/_cjs/STM/internal/Journal.cjs.map +1 -1
  403. package/_cjs/Schedule/Decision.cjs +1 -2
  404. package/_cjs/Schedule/Decision.cjs.map +1 -1
  405. package/_cjs/Schedule/api/driver.cjs +1 -2
  406. package/_cjs/Schedule/api/driver.cjs.map +1 -1
  407. package/_cjs/Schedule/api.cjs +1 -2
  408. package/_cjs/Schedule/api.cjs.map +1 -1
  409. package/_cjs/Scope/Finalizer/definition.cjs +1 -2
  410. package/_cjs/Scope/Finalizer/definition.cjs.map +1 -1
  411. package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs +1 -2
  412. package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs.map +1 -1
  413. package/_cjs/Scope/ReleaseMap/api.cjs +1 -2
  414. package/_cjs/Scope/ReleaseMap/api.cjs.map +1 -1
  415. package/_cjs/Scope/ReleaseMap/constructors.cjs +1 -2
  416. package/_cjs/Scope/ReleaseMap/constructors.cjs.map +1 -1
  417. package/_cjs/Scope/ReleaseMap/definition.cjs +1 -2
  418. package/_cjs/Scope/ReleaseMap/definition.cjs.map +1 -1
  419. package/_cjs/Scope/api.cjs +1 -2
  420. package/_cjs/Scope/api.cjs.map +1 -1
  421. package/_cjs/Scope/definition.cjs +1 -2
  422. package/_cjs/Scope/definition.cjs.map +1 -1
  423. package/_cjs/ScopedRef/api.cjs +2 -3
  424. package/_cjs/ScopedRef/api.cjs.map +1 -1
  425. package/_cjs/Semaphore/Reservation.cjs +24 -0
  426. package/_cjs/Semaphore/Reservation.cjs.map +1 -0
  427. package/_cjs/Semaphore/constructors.cjs +25 -0
  428. package/_cjs/Semaphore/constructors.cjs.map +1 -0
  429. package/_cjs/Semaphore/definition.cjs +149 -0
  430. package/_cjs/Semaphore/definition.cjs.map +1 -0
  431. package/_cjs/Semaphore.cjs +31 -138
  432. package/_cjs/Semaphore.cjs.map +1 -1
  433. package/_cjs/Sink/api.cjs +1 -2
  434. package/_cjs/Sink/api.cjs.map +1 -1
  435. package/_cjs/State/api.cjs +1 -2
  436. package/_cjs/State/api.cjs.map +1 -1
  437. package/_cjs/Stream/api/zipAllWith.cjs +1 -2
  438. package/_cjs/Stream/api/zipAllWith.cjs.map +1 -1
  439. package/_cjs/Stream/api/zipWith.cjs +1 -2
  440. package/_cjs/Stream/api/zipWith.cjs.map +1 -1
  441. package/_cjs/Stream/api/zipWithChunks.cjs +1 -2
  442. package/_cjs/Stream/api/zipWithChunks.cjs.map +1 -1
  443. package/_cjs/Stream/api.cjs +702 -703
  444. package/_cjs/Stream/api.cjs.map +1 -1
  445. package/_cjs/Stream/internal/Handoff.cjs +1 -2
  446. package/_cjs/Stream/internal/Handoff.cjs.map +1 -1
  447. package/_cjs/Stream/internal/Pull.cjs +1 -2
  448. package/_cjs/Stream/internal/Pull.cjs.map +1 -1
  449. package/_cjs/Stream/internal/Take.cjs +1 -2
  450. package/_cjs/Stream/internal/Take.cjs.map +1 -1
  451. package/_cjs/Stream/internal/util.cjs +1 -2
  452. package/_cjs/Stream/internal/util.cjs.map +1 -1
  453. package/_cjs/Subject/Atomic.cjs +1 -2
  454. package/_cjs/Subject/Atomic.cjs.map +1 -1
  455. package/_cjs/Subject/api.cjs +1 -2
  456. package/_cjs/Subject/api.cjs.map +1 -1
  457. package/_cjs/SubscriptionRef.cjs +2 -3
  458. package/_cjs/SubscriptionRef.cjs.map +1 -1
  459. package/_cjs/Supervisor/api.cjs +1 -2
  460. package/_cjs/Supervisor/api.cjs.map +1 -1
  461. package/_cjs/Supervisor/constructors.cjs +1 -2
  462. package/_cjs/Supervisor/constructors.cjs.map +1 -1
  463. package/_cjs/Supervisor/definition.cjs +1 -2
  464. package/_cjs/Supervisor/definition.cjs.map +1 -1
  465. package/_cjs/SupervisorPatch.cjs +1 -2
  466. package/_cjs/SupervisorPatch.cjs.map +1 -1
  467. package/_cjs/TExit/definition.cjs +1 -2
  468. package/_cjs/TExit/definition.cjs.map +1 -1
  469. package/_cjs/TFuture/api.cjs +1 -2
  470. package/_cjs/TFuture/api.cjs.map +1 -1
  471. package/_cjs/TFuture/constructors.cjs +1 -2
  472. package/_cjs/TFuture/constructors.cjs.map +1 -1
  473. package/_cjs/TFuture/definition.cjs +1 -2
  474. package/_cjs/TFuture/definition.cjs.map +1 -1
  475. package/_cjs/TReentrantLock/api.cjs +1 -2
  476. package/_cjs/TReentrantLock/api.cjs.map +1 -1
  477. package/_cjs/TReentrantLock/definition.cjs +1 -2
  478. package/_cjs/TReentrantLock/definition.cjs.map +1 -1
  479. package/_cjs/TRef/api.cjs +1 -2
  480. package/_cjs/TRef/api.cjs.map +1 -1
  481. package/_cjs/TRef/constructors.cjs +1 -2
  482. package/_cjs/TRef/constructors.cjs.map +1 -1
  483. package/_cjs/TRef/definition.cjs +1 -2
  484. package/_cjs/TRef/definition.cjs.map +1 -1
  485. package/_cjs/TSemaphore/api.cjs +1 -2
  486. package/_cjs/TSemaphore/api.cjs.map +1 -1
  487. package/_cjs/TSemaphore/constructors.cjs +1 -2
  488. package/_cjs/TSemaphore/constructors.cjs.map +1 -1
  489. package/_cjs/TSemaphore/definition.cjs +1 -2
  490. package/_cjs/TSemaphore/definition.cjs.map +1 -1
  491. package/_cjs/collection/immutable/Conc/dropUntilIO.cjs +1 -2
  492. package/_cjs/collection/immutable/Conc/dropUntilIO.cjs.map +1 -1
  493. package/_cjs/collection/immutable/Conc/dropWhileIO.cjs +1 -2
  494. package/_cjs/collection/immutable/Conc/dropWhileIO.cjs.map +1 -1
  495. package/_cjs/collection/immutable/Conc/filterIO.cjs +1 -2
  496. package/_cjs/collection/immutable/Conc/filterIO.cjs.map +1 -1
  497. package/_cjs/collection/immutable/Conc/findIO.cjs +1 -2
  498. package/_cjs/collection/immutable/Conc/findIO.cjs.map +1 -1
  499. package/_cjs/collection/immutable/Conc/mapIO.cjs +1 -2
  500. package/_cjs/collection/immutable/Conc/mapIO.cjs.map +1 -1
  501. package/_cjs/collection/immutable/Conc/takeWhileIO.cjs +1 -2
  502. package/_cjs/collection/immutable/Conc/takeWhileIO.cjs.map +1 -1
  503. package/_cjs/data/Exit/foreachIO.cjs +1 -2
  504. package/_cjs/data/Exit/foreachIO.cjs.map +1 -1
  505. package/_cjs/global.cjs +0 -4
  506. package/_cjs/index.cjs +0 -4
  507. package/_cjs/internal/HashedPair.cjs +1 -2
  508. package/_cjs/internal/HashedPair.cjs.map +1 -1
  509. package/_cjs/internal/Hub.cjs +1 -2
  510. package/_cjs/internal/Hub.cjs.map +1 -1
  511. package/_cjs/internal/MutableQueue.cjs +1 -2
  512. package/_cjs/internal/MutableQueue.cjs.map +1 -1
  513. package/_cjs/internal/Scheduler.cjs +1 -2
  514. package/_cjs/internal/Scheduler.cjs.map +1 -1
  515. package/_cjs/internal/StackTraceBuilder.cjs +1 -2
  516. package/_cjs/internal/StackTraceBuilder.cjs.map +1 -1
  517. package/_mjs/Cached/api.mjs.map +1 -1
  518. package/_mjs/Channel/api/mapOutConcurrentIO.mjs +1 -1
  519. package/_mjs/Channel/api/mergeAllWith.mjs +1 -1
  520. package/_mjs/Channel/api/runScoped.mjs +2 -2
  521. package/_mjs/Channel/api/runScoped.mjs.map +1 -1
  522. package/_mjs/Channel/api/toPull.mjs +1 -1
  523. package/_mjs/Channel/api/toPull.mjs.map +1 -1
  524. package/_mjs/Channel/api.mjs +205 -205
  525. package/_mjs/Channel/api.mjs.map +1 -1
  526. package/_mjs/Channel/core-api.mjs +43 -42
  527. package/_mjs/Channel/core-api.mjs.map +1 -1
  528. package/_mjs/Channel/internal/AsyncInputConsumer.mjs +1 -1
  529. package/_mjs/Channel/internal/AsyncInputProducer.mjs +1 -1
  530. package/_mjs/Channel/internal/ChannelExecutor.mjs +3 -3
  531. package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
  532. package/_mjs/Console/definition.mjs +1 -0
  533. package/_mjs/Console/definition.mjs.map +1 -1
  534. package/_mjs/CountdownLatch.mjs +2 -1
  535. package/_mjs/CountdownLatch.mjs.map +1 -1
  536. package/_mjs/Fiber/FiberMessage.mjs +2 -20
  537. package/_mjs/Fiber/FiberMessage.mjs.map +1 -1
  538. package/_mjs/Fiber/FiberRuntime.mjs +877 -633
  539. package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
  540. package/_mjs/Fiber/api/collectAll.mjs +1 -1
  541. package/_mjs/Fiber/api/collectAll.mjs.map +1 -1
  542. package/_mjs/Fiber/api/interrupt.mjs +1 -1
  543. package/_mjs/Fiber/api/interrupt.mjs.map +1 -1
  544. package/_mjs/Fiber/api/interruptAll.mjs +1 -1
  545. package/_mjs/Fiber/api/interruptAll.mjs.map +1 -1
  546. package/_mjs/Fiber/api/interruptAs.mjs +4 -7
  547. package/_mjs/Fiber/api/interruptAs.mjs.map +1 -1
  548. package/_mjs/Fiber/api/interruptFork.mjs +1 -1
  549. package/_mjs/Fiber/api/interruptFork.mjs.map +1 -1
  550. package/_mjs/Fiber/api/mapIO.mjs +1 -1
  551. package/_mjs/Fiber/api/mapIO.mjs.map +1 -1
  552. package/_mjs/Fiber/api/zipWith.mjs +1 -1
  553. package/_mjs/Fiber/api/zipWith.mjs.map +1 -1
  554. package/_mjs/Fiber/constructors.mjs +1 -1
  555. package/_mjs/Fiber/constructors.mjs.map +1 -1
  556. package/_mjs/Fiber/definition.mjs +5 -2
  557. package/_mjs/Fiber/definition.mjs.map +1 -1
  558. package/_mjs/FiberScope/definition.mjs +28 -4
  559. package/_mjs/FiberScope/definition.mjs.map +1 -1
  560. package/_mjs/FiberSet.mjs +14 -12
  561. package/_mjs/FiberSet.mjs.map +1 -1
  562. package/_mjs/Future/State.mjs +96 -0
  563. package/_mjs/Future/State.mjs.map +1 -0
  564. package/_mjs/Future/api.mjs +67 -61
  565. package/_mjs/Future/api.mjs.map +1 -1
  566. package/_mjs/Future/constructors.mjs +3 -3
  567. package/_mjs/Future/constructors.mjs.map +1 -1
  568. package/_mjs/Future/definition.mjs +0 -12
  569. package/_mjs/Future/definition.mjs.map +1 -1
  570. package/_mjs/Future.mjs +1 -0
  571. package/_mjs/Future.mjs.map +1 -1
  572. package/_mjs/Hub/api.mjs +55 -55
  573. package/_mjs/Hub/api.mjs.map +1 -1
  574. package/_mjs/IO/api/array.mjs +42 -0
  575. package/_mjs/IO/api/array.mjs.map +1 -0
  576. package/_mjs/IO/api/asyncInterrupt.mjs.map +1 -1
  577. package/_mjs/IO/api/awaitAllChildren.mjs +10 -0
  578. package/_mjs/IO/api/awaitAllChildren.mjs.map +1 -0
  579. package/_mjs/IO/api/cachedInvalidate.mjs +39 -0
  580. package/_mjs/IO/api/cachedInvalidate.mjs.map +1 -0
  581. package/_mjs/IO/api/disconnect.mjs +1 -1
  582. package/_mjs/IO/api/disconnect.mjs.map +1 -1
  583. package/_mjs/IO/api/foreachConcurrent.mjs +35 -28
  584. package/_mjs/IO/api/foreachConcurrent.mjs.map +1 -1
  585. package/_mjs/IO/api/fork.mjs +1 -1
  586. package/_mjs/IO/api/fork.mjs.map +1 -1
  587. package/_mjs/IO/api/forkDaemon.mjs +4 -4
  588. package/_mjs/IO/api/forkDaemon.mjs.map +1 -1
  589. package/_mjs/IO/api/interrupt.mjs +3 -3
  590. package/_mjs/IO/api/onTermination.mjs +1 -1
  591. package/_mjs/IO/api/onTermination.mjs.map +1 -1
  592. package/_mjs/IO/api/race.mjs +1 -1
  593. package/_mjs/IO/api/race.mjs.map +1 -1
  594. package/_mjs/IO/api/timeout.mjs +8 -9
  595. package/_mjs/IO/api/timeout.mjs.map +1 -1
  596. package/_mjs/IO/api/transplant.mjs +19 -5
  597. package/_mjs/IO/api/transplant.mjs.map +1 -1
  598. package/_mjs/IO/api/zipConcurrent.mjs +4 -4
  599. package/_mjs/IO/api/zipConcurrent.mjs.map +1 -1
  600. package/_mjs/IO/api.mjs +515 -468
  601. package/_mjs/IO/api.mjs.map +1 -1
  602. package/_mjs/IO/definition.mjs +1 -1
  603. package/_mjs/IO/definition.mjs.map +1 -1
  604. package/_mjs/IO/runtime.mjs +8 -8
  605. package/_mjs/IO/runtime.mjs.map +1 -1
  606. package/_mjs/IO.mjs +3 -1
  607. package/_mjs/IO.mjs.map +1 -1
  608. package/_mjs/IOEnv/definition.mjs.map +1 -1
  609. package/_mjs/Push/api.mjs +1 -1
  610. package/_mjs/Random/definition.mjs +1 -0
  611. package/_mjs/Random/definition.mjs.map +1 -1
  612. package/_mjs/Ref/Synchronized/api.mjs +1 -1
  613. package/_mjs/Ref/Synchronized/api.mjs.map +1 -1
  614. package/_mjs/Ref/Synchronized/constructors.mjs +1 -1
  615. package/_mjs/Ref/Synchronized/definition.mjs +1 -1
  616. package/_mjs/Ref/Synchronized/definition.mjs.map +1 -1
  617. package/_mjs/RuntimeFlag.mjs +1 -1
  618. package/_mjs/STM/definition.mjs +1 -1
  619. package/_mjs/ScopedRef/api.mjs +1 -1
  620. package/_mjs/ScopedRef/api.mjs.map +1 -1
  621. package/_mjs/Semaphore/Reservation.mjs +16 -0
  622. package/_mjs/Semaphore/Reservation.mjs.map +1 -0
  623. package/_mjs/Semaphore/constructors.mjs +17 -0
  624. package/_mjs/Semaphore/constructors.mjs.map +1 -0
  625. package/_mjs/Semaphore/definition.mjs +141 -0
  626. package/_mjs/Semaphore/definition.mjs.map +1 -0
  627. package/_mjs/Semaphore.mjs +4 -133
  628. package/_mjs/Semaphore.mjs.map +1 -1
  629. package/_mjs/Stream/api.mjs +701 -701
  630. package/_mjs/Stream/api.mjs.map +1 -1
  631. package/_mjs/SubscriptionRef.mjs +1 -1
  632. package/_mjs/global.mjs +1 -1
  633. package/_mjs/index.mjs +1 -1
  634. package/_src/Cached/api.ts +3 -3
  635. package/_src/Channel/api/toPull.ts +1 -1
  636. package/_src/Channel/api.ts +273 -272
  637. package/_src/Channel/core-api.ts +57 -55
  638. package/_src/Channel/internal/ChannelExecutor.ts +3 -3
  639. package/_src/Console/definition.ts +1 -0
  640. package/_src/CountdownLatch.ts +2 -0
  641. package/_src/Fiber/FiberMessage.ts +3 -28
  642. package/_src/Fiber/FiberRuntime.ts +988 -616
  643. package/_src/Fiber/api/interruptAs.ts +4 -3
  644. package/_src/Fiber/constructors.ts +1 -1
  645. package/_src/Fiber/definition.ts +4 -0
  646. package/_src/FiberScope/definition.ts +40 -2
  647. package/_src/FiberSet.ts +6 -2
  648. package/_src/Future/State.ts +128 -0
  649. package/_src/Future/api.ts +62 -51
  650. package/_src/Future/constructors.ts +4 -2
  651. package/_src/Future/definition.ts +2 -17
  652. package/_src/Future.ts +4 -3
  653. package/_src/Hub/api.ts +61 -61
  654. package/_src/IO/api/addFinalizerExit.ts +4 -4
  655. package/_src/IO/api/array.ts +49 -0
  656. package/_src/IO/api/asyncInterrupt.ts +1 -1
  657. package/_src/IO/api/awaitAllChildren.ts +6 -0
  658. package/_src/IO/api/cachedInvalidate.ts +42 -0
  659. package/_src/IO/api/foreachConcurrent.ts +39 -23
  660. package/_src/IO/api/fork.ts +1 -1
  661. package/_src/IO/api/forkDaemon.ts +2 -2
  662. package/_src/IO/api/memoize.ts +3 -3
  663. package/_src/IO/api/onTermination.ts +2 -2
  664. package/_src/IO/api/transplant.ts +26 -3
  665. package/_src/IO/api/zipConcurrent.ts +2 -2
  666. package/_src/IO/api.ts +547 -525
  667. package/_src/IO/definition.ts +4 -28
  668. package/_src/IO/runtime.ts +0 -1
  669. package/_src/IO.ts +65 -63
  670. package/_src/IOEnv/definition.ts +1 -4
  671. package/_src/Random/definition.ts +1 -0
  672. package/_src/Ref/Synchronized/api.ts +2 -2
  673. package/_src/Ref/Synchronized/definition.ts +1 -1
  674. package/_src/Semaphore/Reservation.ts +15 -0
  675. package/_src/Semaphore/constructors.ts +14 -0
  676. package/_src/Semaphore/definition.ts +180 -0
  677. package/_src/Semaphore.ts +5 -159
  678. package/_src/Stream/api.ts +679 -679
  679. package/package.json +4 -4
  680. package/IO/api/sequenceT.d.ts +0 -26
  681. package/_cjs/IO/api/sequenceT.cjs +0 -18
  682. package/_cjs/IO/api/sequenceT.cjs.map +0 -1
  683. package/_mjs/IO/api/sequenceT.mjs +0 -10
  684. package/_mjs/IO/api/sequenceT.mjs.map +0 -1
  685. package/_src/IO/api/sequenceT.ts +0 -16
@@ -37,6 +37,7 @@ export declare namespace IO {
37
37
  export type EnvironmentOf<T> = [T] extends [{ [IOVariance]: { _R: () => infer R } }] ? R : never;
38
38
  export type ErrorOf<T> = [T] extends [{ [IOVariance]: { _E: () => infer E } }] ? E : never;
39
39
  export type ValueOf<T> = [T] extends [{ [IOVariance]: { _A: () => infer A } }] ? A : never;
40
+ export type Concrete = Primitive;
40
41
  }
41
42
 
42
43
  declare module "@fncts/base/data/Either/definition" {
@@ -90,15 +91,12 @@ export const enum IOTag {
90
91
  Async,
91
92
  OnSuccessAndFailure,
92
93
  OnSuccess,
93
- OnFailure,
94
94
  UpdateRuntimeFlags,
95
95
  UpdateRuntimeFlagsWithin,
96
- GenerateStackTrace,
97
96
  Stateful,
98
97
  WhileLoop,
99
98
  YieldNow,
100
99
  Commit,
101
- RevertFlags,
102
100
  UpdateTrace,
103
101
  External,
104
102
  }
@@ -130,7 +128,7 @@ export interface Sync<A = any>
130
128
  }
131
129
  > {}
132
130
 
133
- export interface Async<R = any, E = any, A = any>
131
+ export interface Async
134
132
  extends IOOp<
135
133
  IOTag.Async,
136
134
  {
@@ -151,16 +149,6 @@ export interface OnSuccessAndFailure
151
149
  }
152
150
  > {}
153
151
 
154
- export interface OnFailure
155
- extends IOOp<
156
- IOTag.OnFailure,
157
- {
158
- readonly i0: Primitive;
159
- readonly i1: (cause: Cause<unknown>) => Primitive;
160
- readonly trace: string | undefined;
161
- }
162
- > {}
163
-
164
152
  export interface OnSuccess
165
153
  extends IOOp<
166
154
  IOTag.OnSuccess,
@@ -171,7 +159,7 @@ export interface OnSuccess
171
159
  }
172
160
  > {}
173
161
 
174
- export interface SucceedNow
162
+ export interface Succeed
175
163
  extends IOOp<
176
164
  IOTag.SucceedNow,
177
165
  {
@@ -199,14 +187,6 @@ export interface UpdateRuntimeFlagsWithin
199
187
  }
200
188
  > {}
201
189
 
202
- export interface GenerateStackTrace
203
- extends IOOp<
204
- IOTag.GenerateStackTrace,
205
- {
206
- readonly trace: string | undefined;
207
- }
208
- > {}
209
-
210
190
  export interface Stateful
211
191
  extends IOOp<
212
192
  IOTag.Stateful,
@@ -246,14 +226,12 @@ export interface Fail
246
226
 
247
227
  export type Primitive =
248
228
  | OnSuccessAndFailure
249
- | OnFailure
250
229
  | OnSuccess
251
230
  | UpdateRuntimeFlagsWithin
252
231
  | Sync
253
232
  | Async
254
- | SucceedNow
233
+ | Succeed
255
234
  | UpdateRuntimeFlags
256
- | GenerateStackTrace
257
235
  | Stateful
258
236
  | WhileLoop
259
237
  | YieldNow
@@ -276,8 +254,6 @@ export function concrete(io: IO<any, any, any>): Primitive {
276
254
  return io as Primitive;
277
255
  }
278
256
 
279
- export type EvaluationStep = OnSuccessAndFailure | OnFailure | OnSuccess;
280
-
281
257
  export type Canceler<R> = URIO<R, void>;
282
258
 
283
259
  export abstract class External<R, E, A> extends IOPrimitive implements IO<R, E, A> {
@@ -1,4 +1,3 @@
1
- import { IOError } from "@fncts/base/data/exceptions";
2
1
  import { FiberRuntime } from "@fncts/io/Fiber";
3
2
  import { FiberRefs } from "@fncts/io/FiberRefs";
4
3
  import { RuntimeFlag } from "@fncts/io/RuntimeFlag";
package/_src/IO.ts CHANGED
@@ -5,67 +5,69 @@ export * from "./IO/runtime.js";
5
5
  // codegen:end
6
6
 
7
7
  // codegen:start { preset: barrel, include: IO/api/*.ts }
8
- export * from "./IO/api/acquireRelease.js";
9
- export * from "./IO/api/acquireReleaseExit.js";
10
- export * from "./IO/api/acquireReleaseInterruptible.js";
11
- export * from "./IO/api/acquireReleaseInterruptibleExit.js";
12
- export * from "./IO/api/addFinalizer.js";
13
- export * from "./IO/api/addFinalizerExit.js";
14
- export * from "./IO/api/all.js";
15
- export * from "./IO/api/asyncInterrupt.js";
16
- export * from "./IO/api/asyncIO.js";
17
- export * from "./IO/api/blocking.js";
18
- export * from "./IO/api/bracket.js";
19
- export * from "./IO/api/bracketExit.js";
20
- export * from "./IO/api/clockWith.js";
21
- export * from "./IO/api/concurrency.js";
22
- export * from "./IO/api/concurrentFinalizers.js";
23
- export * from "./IO/api/consoleWith.js";
24
- export * from "./IO/api/daemonChildren.js";
25
- export * from "./IO/api/delay.js";
26
- export * from "./IO/api/descriptor.js";
27
- export * from "./IO/api/diffFiberRefs.js";
28
- export * from "./IO/api/disconnect.js";
29
- export * from "./IO/api/ensuringChildren.js";
30
- export * from "./IO/api/environment.js";
31
- export * from "./IO/api/foreachConcurrent.js";
32
- export * from "./IO/api/foreachExec.js";
33
- export * from "./IO/api/fork.js";
34
- export * from "./IO/api/forkAll.js";
35
- export * from "./IO/api/forkDaemon.js";
36
- export * from "./IO/api/forkIn.js";
37
- export * from "./IO/api/forkScoped.js";
38
- export * from "./IO/api/fulfill.js";
39
- export * from "./IO/api/interrupt.js";
40
- export * from "./IO/api/memoize.js";
41
- export * from "./IO/api/once.js";
42
- export * from "./IO/api/onTermination.js";
43
- export * from "./IO/api/patchFiberRefs.js";
44
- export * from "./IO/api/provideLayer.js";
45
- export * from "./IO/api/provideScope.js";
46
- export * from "./IO/api/provideSomeLayer.js";
47
- export * from "./IO/api/provideSomeRuntime.js";
48
- export * from "./IO/api/race.js";
49
- export * from "./IO/api/raceFirst.js";
50
- export * from "./IO/api/raceWith.js";
51
- export * from "./IO/api/randomWith.js";
52
- export * from "./IO/api/repeat.js";
53
- export * from "./IO/api/retry.js";
54
- export * from "./IO/api/schedule.js";
55
- export * from "./IO/api/scope.js";
56
- export * from "./IO/api/scoped.js";
57
- export * from "./IO/api/scopeWith.js";
58
- export * from "./IO/api/sequenceT.js";
59
- export * from "./IO/api/sleep.js";
60
- export * from "./IO/api/stateful.js";
61
- export * from "./IO/api/supervised.js";
62
- export * from "./IO/api/timeout.js";
63
- export * from "./IO/api/transplant.js";
64
- export * from "./IO/api/whenFiberRef.js";
65
- export * from "./IO/api/whenRef.js";
66
- export * from "./IO/api/withChildren.js";
67
- export * from "./IO/api/withEarlyRelease.js";
68
- export * from "./IO/api/withFinalizer.js";
69
- export * from "./IO/api/withFinalizerExit.js";
70
- export * from "./IO/api/zipConcurrent.js";
8
+ export * from "./IO/api/acquireRelease.js"
9
+ export * from "./IO/api/acquireReleaseExit.js"
10
+ export * from "./IO/api/acquireReleaseInterruptible.js"
11
+ export * from "./IO/api/acquireReleaseInterruptibleExit.js"
12
+ export * from "./IO/api/addFinalizer.js"
13
+ export * from "./IO/api/addFinalizerExit.js"
14
+ export * from "./IO/api/all.js"
15
+ export * from "./IO/api/array.js"
16
+ export * from "./IO/api/asyncInterrupt.js"
17
+ export * from "./IO/api/asyncIO.js"
18
+ export * from "./IO/api/awaitAllChildren.js"
19
+ export * from "./IO/api/blocking.js"
20
+ export * from "./IO/api/bracket.js"
21
+ export * from "./IO/api/bracketExit.js"
22
+ export * from "./IO/api/cachedInvalidate.js"
23
+ export * from "./IO/api/clockWith.js"
24
+ export * from "./IO/api/concurrency.js"
25
+ export * from "./IO/api/concurrentFinalizers.js"
26
+ export * from "./IO/api/consoleWith.js"
27
+ export * from "./IO/api/daemonChildren.js"
28
+ export * from "./IO/api/delay.js"
29
+ export * from "./IO/api/descriptor.js"
30
+ export * from "./IO/api/diffFiberRefs.js"
31
+ export * from "./IO/api/disconnect.js"
32
+ export * from "./IO/api/ensuringChildren.js"
33
+ export * from "./IO/api/environment.js"
34
+ export * from "./IO/api/foreachConcurrent.js"
35
+ export * from "./IO/api/foreachExec.js"
36
+ export * from "./IO/api/fork.js"
37
+ export * from "./IO/api/forkAll.js"
38
+ export * from "./IO/api/forkDaemon.js"
39
+ export * from "./IO/api/forkIn.js"
40
+ export * from "./IO/api/forkScoped.js"
41
+ export * from "./IO/api/fulfill.js"
42
+ export * from "./IO/api/interrupt.js"
43
+ export * from "./IO/api/memoize.js"
44
+ export * from "./IO/api/once.js"
45
+ export * from "./IO/api/onTermination.js"
46
+ export * from "./IO/api/patchFiberRefs.js"
47
+ export * from "./IO/api/provideLayer.js"
48
+ export * from "./IO/api/provideScope.js"
49
+ export * from "./IO/api/provideSomeLayer.js"
50
+ export * from "./IO/api/provideSomeRuntime.js"
51
+ export * from "./IO/api/race.js"
52
+ export * from "./IO/api/raceFirst.js"
53
+ export * from "./IO/api/raceWith.js"
54
+ export * from "./IO/api/randomWith.js"
55
+ export * from "./IO/api/repeat.js"
56
+ export * from "./IO/api/retry.js"
57
+ export * from "./IO/api/schedule.js"
58
+ export * from "./IO/api/scope.js"
59
+ export * from "./IO/api/scoped.js"
60
+ export * from "./IO/api/scopeWith.js"
61
+ export * from "./IO/api/sleep.js"
62
+ export * from "./IO/api/stateful.js"
63
+ export * from "./IO/api/supervised.js"
64
+ export * from "./IO/api/timeout.js"
65
+ export * from "./IO/api/transplant.js"
66
+ export * from "./IO/api/whenFiberRef.js"
67
+ export * from "./IO/api/whenRef.js"
68
+ export * from "./IO/api/withChildren.js"
69
+ export * from "./IO/api/withEarlyRelease.js"
70
+ export * from "./IO/api/withFinalizer.js"
71
+ export * from "./IO/api/withFinalizerExit.js"
72
+ export * from "./IO/api/zipConcurrent.js"
71
73
  // codegen:end
@@ -12,7 +12,4 @@ export const IOEnv: IOEnvOps = {};
12
12
  /**
13
13
  * @tsplus static fncts.io.IOEnvOps environment
14
14
  */
15
- export const environment = Environment()
16
- .add(Clock.Live, Clock.Tag)
17
- .add(Random.Live, Random.Tag)
18
- .add(Console.Live, Console.Tag);
15
+ export const environment = Environment().add(Clock.Live).add(Random.Live).add(Console.Live);
@@ -2,6 +2,7 @@ import type { ArrayInt } from "@fncts/base/util/rand";
2
2
 
3
3
  /**
4
4
  * @tsplus static fncts.io.RandomOps Tag
5
+ * @tsplus implicit
5
6
  */
6
7
  export const RandomTag = Tag<Random>("fncts.io.Random");
7
8
 
@@ -201,8 +201,8 @@ export function modifyJustIO<A, R1, E1, B>(
201
201
  * @tsplus pipeable fncts.io.Ref.Synchronized updateAndGetIO
202
202
  */
203
203
  export function updateAndGetIO<A, R1, E1>(f: (a: A) => IO<R1, E1, A>, __tsplusTrace?: string) {
204
- return <RA, RB, EA, EB>(ref: PRef.Synchronized<RA, RB, EA, EB, A, A>): IO<RA | RB | R1, E1 | EA | EB, void> => {
205
- return ref.modifyIO((a) => f(a).map((r) => [r, r])).asUnit;
204
+ return <RA, RB, EA, EB>(ref: PRef.Synchronized<RA, RB, EA, EB, A, A>): IO<RA | RB | R1, E1 | EA | EB, A> => {
205
+ return ref.modifyIO((a) => f(a).map((r) => [r, r]));
206
206
  };
207
207
  }
208
208
 
@@ -53,7 +53,7 @@ export class PSynchronizedInternal<RA, RB, EA, EB, A, B> extends RefInternal<RA,
53
53
  f: (b: B) => IO<R1, E1, readonly [C, A]>,
54
54
  __tsplusTrace?: string,
55
55
  ): IO<RA | RB | R1, EA | EB | E1, C> {
56
- return this.withPermit(this.unsafeGet.flatMap(f).flatMap(([b, a]) => this.unsafeSet(a).as(b)));
56
+ return this.withPermit(this.unsafeGet.flatMap(f).flatMap(([c, a]) => this.unsafeSet(a).as(c)));
57
57
  }
58
58
 
59
59
  matchAllIO<RC, RD, EC, ED, C, D>(
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @tsplus type fncts.io.Semaphore.Reservation
3
+ * @tsplus companion fncts.io.Semaphore.ReservationOps
4
+ */
5
+ export class Reservation {
6
+ constructor(
7
+ readonly acquire: UIO<void>,
8
+ readonly release: UIO<void>,
9
+ ) {}
10
+ }
11
+
12
+ /**
13
+ * @tsplus static fncts.io.Semaphore.ReservationOps zero
14
+ */
15
+ export const zero = new Reservation(IO.unit, IO.unit);
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @tsplus static fncts.io.SemaphoreOps unsafeMake
3
+ */
4
+ export function unsafeMakeSemaphore(permits: number): Semaphore {
5
+ return new Semaphore(permits);
6
+ }
7
+
8
+ /**
9
+ * @tsplus static fncts.io.SemaphoreOps make
10
+ * @tsplus static fncts.io.SemaphoreOps __call
11
+ */
12
+ export function makeSemaphore(permits: number, __tsplusTrace?: string): UIO<Semaphore> {
13
+ return IO(Semaphore.unsafeMake(permits));
14
+ }
@@ -0,0 +1,180 @@
1
+ import { EitherTag } from "@fncts/base/data/Either";
2
+ import { IllegalArgumentError } from "@fncts/base/data/exceptions";
3
+ import { Reservation } from "@fncts/io/Semaphore/Reservation";
4
+
5
+ /**
6
+ * @tsplus type fncts.io.Semaphore
7
+ * @tsplus companion fncts.io.SemaphoreOps
8
+ */
9
+ export class Semaphore {
10
+ constructor(readonly permits: number) {}
11
+
12
+ ref = Ref.unsafeMake<Either<ImmutableQueue<[Future<never, void>, number]>, number>>(Either.right(this.permits));
13
+
14
+ available(__tsplusTrace?: string): UIO<number> {
15
+ return this.ref.get.map((_) =>
16
+ _.match(
17
+ () => 0,
18
+ (permits) => permits,
19
+ ),
20
+ );
21
+ }
22
+
23
+ tryReserve(n: number, __tsplusTrace?: string): UIO<Maybe<Reservation>> {
24
+ if (n < 0) {
25
+ return IO.halt(new IllegalArgumentError(`Unexpected negative ${n} permits requested`, "Semaphore.tryReserve"));
26
+ } else if (n === 0) {
27
+ return IO.succeedNow(Just(Reservation.zero));
28
+ } else {
29
+ return this.ref.modify((state) =>
30
+ state.match(
31
+ () => [Nothing(), state],
32
+ (permits) => {
33
+ if (permits >= n) {
34
+ return [Just(new Reservation(IO.unit, this.releaseN(n))), Either.right(permits - n)];
35
+ } else {
36
+ return [Nothing(), state];
37
+ }
38
+ },
39
+ ),
40
+ );
41
+ }
42
+ }
43
+
44
+ reserve(n: number, __tsplusTrace?: string): UIO<Reservation> {
45
+ if (n < 0) {
46
+ return IO.halt(new IllegalArgumentError(`Unexpected negative ${n} permits requested`, "Semaphore.reserve"));
47
+ } else if (n === 0) {
48
+ return IO.succeedNow(Reservation.zero);
49
+ } else {
50
+ return Future.make<never, void>().flatMap((future) =>
51
+ this.ref.modify((state) =>
52
+ state.match(
53
+ (queue) => [
54
+ new Reservation(future.await, this.restore(future, n)),
55
+ Either.left(queue.enqueue([future, n])),
56
+ ],
57
+ (permits) => {
58
+ if (permits >= n) {
59
+ return [new Reservation(IO.unit, this.releaseN(n)), Either.right(permits - n)];
60
+ } else {
61
+ return [
62
+ new Reservation(future.await, this.restore(future, n)),
63
+ Either.left(ImmutableQueue.single([future, n - permits])),
64
+ ];
65
+ }
66
+ },
67
+ ),
68
+ ),
69
+ );
70
+ }
71
+ }
72
+
73
+ restore(future: Future<never, void>, n: number, __tsplusTrace?: string): UIO<void> {
74
+ return this.ref.modify((state) =>
75
+ state.match(
76
+ (queue) =>
77
+ queue
78
+ .find(([waiter]) => waiter === future)
79
+ .match(
80
+ () => [this.releaseN(n), Either.left(queue)],
81
+ ([_, permits]) => [
82
+ this.releaseN(n - permits),
83
+ Either.left(queue.filter(([waiter]) => waiter !== future)),
84
+ ],
85
+ ),
86
+ (permits) => [IO.unit, Either.right(permits + n)],
87
+ ),
88
+ ).flatten;
89
+ }
90
+
91
+ releaseN(n: number, __tsplusTrace?: string): UIO<void> {
92
+ const self = this;
93
+
94
+ /**
95
+ * @tsplus tailRec
96
+ */
97
+ function loop(
98
+ n: number,
99
+ state: Either<ImmutableQueue<[Future<never, any>, number]>, number>,
100
+ acc: UIO<void>,
101
+ ): [UIO<void>, Either<ImmutableQueue<[Future<never, any>, number]>, number>] {
102
+ state.concrete();
103
+ switch (state._tag) {
104
+ case EitherTag.Right: {
105
+ return [acc, Either.right(state.right + n)];
106
+ }
107
+ case EitherTag.Left: {
108
+ const waiter = state.left.dequeue;
109
+
110
+ Maybe.concrete(waiter);
111
+
112
+ switch (waiter._tag) {
113
+ case MaybeTag.Nothing: {
114
+ return [acc, Either.right(self.permits)];
115
+ }
116
+ case MaybeTag.Just: {
117
+ const [[future, permits], queue] = waiter.value;
118
+ if (n > permits) {
119
+ return loop(n - permits, Either.left(queue), acc.zipLeft(future.succeed(undefined)));
120
+ } else if (n === permits) {
121
+ return [acc.zipRight(future.succeed().asUnit), Either.left(queue)];
122
+ } else {
123
+ return [acc, Either.left(queue.prepend([future, permits - n]))];
124
+ }
125
+ }
126
+ }
127
+ }
128
+ }
129
+ }
130
+
131
+ return this.ref.modify((state) => loop(n, state, IO.unit)).flatten;
132
+ }
133
+
134
+ tryWithPermits(permits: number) {
135
+ return <R, E, A>(io: IO<R, E, A>, __tsPlusTrace?: string): IO<R, E, Maybe<A>> => {
136
+ return this.tryReserve(permits).bracket(
137
+ (r) =>
138
+ r.match(
139
+ () => IO.nothing,
140
+ () => io.asJust,
141
+ ),
142
+ (r) =>
143
+ r.match(
144
+ () => Exit.unit,
145
+ (reservation) => reservation.release,
146
+ ),
147
+ );
148
+ };
149
+ }
150
+
151
+ tryWithPermit<R, E, A>(io: IO<R, E, A>): IO<R, E, Maybe<A>> {
152
+ return this.tryWithPermits(1)(io);
153
+ }
154
+
155
+ withPermits(permits: number) {
156
+ return <R, E, A>(io: IO<R, E, A>): IO<R, E, A> => {
157
+ return IO.bracket(
158
+ this.reserve(permits),
159
+ (reservation) => reservation.acquire > io,
160
+ (reservation) => reservation.release,
161
+ );
162
+ };
163
+ }
164
+
165
+ withPermit<R, E, A>(io: IO<R, E, A>): IO<R, E, A> {
166
+ return this.withPermits(1)(io);
167
+ }
168
+
169
+ withPermitsScoped(permits: number) {
170
+ return <R, E, A>(io: IO<R, E, A>): IO<Scope | R, E, A> => {
171
+ return IO.acquireRelease(this.reserve(permits), (reservation) => reservation.release).flatMap(
172
+ (reservation) => reservation.acquire > io,
173
+ );
174
+ };
175
+ }
176
+
177
+ withPermitScoped<R, E, A>(io: IO<R, E, A>): IO<Scope | R, E, A> {
178
+ return this.withPermitsScoped(1)(io);
179
+ }
180
+ }
package/_src/Semaphore.ts CHANGED
@@ -1,159 +1,5 @@
1
- import { EitherTag } from "@fncts/base/data/Either";
2
- import { IllegalArgumentError } from "@fncts/base/data/exceptions";
3
-
4
- /**
5
- * @tsplus type fncts.io.Semaphore
6
- * @tsplus companion fncts.io.SemaphoreOps
7
- */
8
- export class Semaphore {
9
- constructor(readonly permits: number) {}
10
-
11
- ref = Ref.unsafeMake<Either<ImmutableQueue<[Future<never, void>, number]>, number>>(Either.right(this.permits));
12
-
13
- available(__tsplusTrace?: string): UIO<number> {
14
- return this.ref.get.map((_) =>
15
- _.match(
16
- () => 0,
17
- (permits) => permits,
18
- ),
19
- );
20
- }
21
-
22
- reserve(n: number, __tsplusTrace?: string): UIO<Reservation> {
23
- if (n < 0) {
24
- return IO.halt(new IllegalArgumentError(`Unexpected negative ${n} permits requested`, "Semaphore.reserve"));
25
- } else if (n === 0) {
26
- return IO.succeedNow(new Reservation(IO.unit, IO.unit));
27
- } else {
28
- return Future.make<never, void>().flatMap((future) =>
29
- this.ref.modify((state) =>
30
- state.match(
31
- (queue) => [
32
- new Reservation(future.await, this.restore(future, n)),
33
- Either.left(queue.enqueue([future, n])),
34
- ],
35
- (permits) => {
36
- if (permits >= n) {
37
- return [new Reservation(IO.unit, this.releaseN(n)), Either.right(permits - n)];
38
- } else {
39
- return [
40
- new Reservation(future.await, this.restore(future, n)),
41
- Either.left(ImmutableQueue.single([future, n - permits])),
42
- ];
43
- }
44
- },
45
- ),
46
- ),
47
- );
48
- }
49
- }
50
-
51
- restore(future: Future<never, void>, n: number, __tsplusTrace?: string): UIO<void> {
52
- return this.ref.modify((state) =>
53
- state.match(
54
- (queue) =>
55
- queue
56
- .find(([waiter]) => waiter === future)
57
- .match(
58
- () => [this.releaseN(n), Either.left(queue)],
59
- ([_, permits]) => [
60
- this.releaseN(n - permits),
61
- Either.left(queue.filter(([waiter]) => waiter !== future)),
62
- ],
63
- ),
64
- (permits) => [IO.unit, Either.right(permits + n)],
65
- ),
66
- ).flatten;
67
- }
68
-
69
- releaseN(n: number, __tsplusTrace?: string): UIO<void> {
70
- const self = this;
71
-
72
- /**
73
- * @tsplus tailRec
74
- */
75
- function loop(
76
- n: number,
77
- state: Either<ImmutableQueue<[Future<never, any>, number]>, number>,
78
- acc: UIO<void>,
79
- ): [UIO<void>, Either<ImmutableQueue<[Future<never, any>, number]>, number>] {
80
- state.concrete();
81
- switch (state._tag) {
82
- case EitherTag.Right: {
83
- return [acc, Either.right(state.right + n)];
84
- }
85
- case EitherTag.Left: {
86
- const waiter = state.left.dequeue;
87
-
88
- Maybe.concrete(waiter);
89
-
90
- switch (waiter._tag) {
91
- case MaybeTag.Nothing: {
92
- return [acc, Either.right(self.permits)];
93
- }
94
- case MaybeTag.Just: {
95
- const [[future, permits], queue] = waiter.value;
96
- if (n > permits) {
97
- return loop(n - permits, Either.left(queue), acc.zipLeft(future.succeed(undefined)));
98
- } else if (n === permits) {
99
- return [acc.zipRight(future.succeed().asUnit), Either.left(queue)];
100
- } else {
101
- return [acc, Either.left(queue.prepend([future, permits - n]))];
102
- }
103
- }
104
- }
105
- }
106
- }
107
- }
108
-
109
- return this.ref.modify((state) => loop(n, state, IO.unit)).flatten;
110
- }
111
-
112
- withPermits(permits: number) {
113
- return <R, E, A>(io: IO<R, E, A>): IO<R, E, A> => {
114
- return IO.bracket(
115
- this.reserve(permits),
116
- (reservation) => reservation.acquire > io,
117
- (reservation) => reservation.release,
118
- );
119
- };
120
- }
121
-
122
- withPermit<R, E, A>(io: IO<R, E, A>): IO<R, E, A> {
123
- return this.withPermits(1)(io);
124
- }
125
-
126
- withPermitsScoped(permits: number) {
127
- return <R, E, A>(io: IO<R, E, A>): IO<Scope | R, E, A> => {
128
- return IO.acquireRelease(this.reserve(permits), (reservation) => reservation.release).flatMap(
129
- (reservation) => reservation.acquire > io,
130
- );
131
- };
132
- }
133
-
134
- withPermitScoped<R, E, A>(io: IO<R, E, A>): IO<Scope | R, E, A> {
135
- return this.withPermitsScoped(1)(io);
136
- }
137
- }
138
-
139
- export class Reservation {
140
- constructor(
141
- readonly acquire: UIO<void>,
142
- readonly release: UIO<void>,
143
- ) {}
144
- }
145
-
146
- /**
147
- * @tsplus static fncts.io.SemaphoreOps unsafeMake
148
- */
149
- export function unsafeMakeSemaphore(permits: number): Semaphore {
150
- return new Semaphore(permits);
151
- }
152
-
153
- /**
154
- * @tsplus static fncts.io.SemaphoreOps make
155
- * @tsplus static fncts.io.SemaphoreOps __call
156
- */
157
- export function makeSemaphore(permits: number, __tsplusTrace?: string): UIO<Semaphore> {
158
- return IO(Semaphore.unsafeMake(permits));
159
- }
1
+ // codegen:start { preset: barrel, include: ./Semaphore/*.ts }
2
+ export * from "./Semaphore/constructors.js"
3
+ export * from "./Semaphore/definition.js"
4
+ export * from "./Semaphore/Reservation.js"
5
+ // codegen:end