@fncts/io 0.0.48 → 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 (675) 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/ChannelExecutor.cjs +4 -5
  69. package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
  70. package/_cjs/Channel/internal/ChannelState.cjs +1 -2
  71. package/_cjs/Channel/internal/ChannelState.cjs.map +1 -1
  72. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs +1 -2
  73. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs.map +1 -1
  74. package/_cjs/Clock/api.cjs +1 -2
  75. package/_cjs/Clock/api.cjs.map +1 -1
  76. package/_cjs/Clock/definition.cjs +1 -2
  77. package/_cjs/Clock/definition.cjs.map +1 -1
  78. package/_cjs/Clock/live.cjs +1 -2
  79. package/_cjs/Clock/live.cjs.map +1 -1
  80. package/_cjs/Console/api.cjs +1 -2
  81. package/_cjs/Console/api.cjs.map +1 -1
  82. package/_cjs/Console/definition.cjs +2 -2
  83. package/_cjs/Console/definition.cjs.map +1 -1
  84. package/_cjs/Console/live.cjs +1 -2
  85. package/_cjs/Console/live.cjs.map +1 -1
  86. package/_cjs/CountdownLatch.cjs +3 -3
  87. package/_cjs/CountdownLatch.cjs.map +1 -1
  88. package/_cjs/Differ/api.cjs +1 -2
  89. package/_cjs/Differ/api.cjs.map +1 -1
  90. package/_cjs/Fiber/FiberMessage.cjs +3 -24
  91. package/_cjs/Fiber/FiberMessage.cjs.map +1 -1
  92. package/_cjs/Fiber/FiberRuntime.cjs +879 -636
  93. package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
  94. package/_cjs/Fiber/api/awaitAll.cjs +1 -2
  95. package/_cjs/Fiber/api/awaitAll.cjs.map +1 -1
  96. package/_cjs/Fiber/api/collectAll.cjs +2 -3
  97. package/_cjs/Fiber/api/collectAll.cjs.map +1 -1
  98. package/_cjs/Fiber/api/fromIO.cjs +1 -2
  99. package/_cjs/Fiber/api/fromIO.cjs.map +1 -1
  100. package/_cjs/Fiber/api/interrupt.cjs +2 -3
  101. package/_cjs/Fiber/api/interrupt.cjs.map +1 -1
  102. package/_cjs/Fiber/api/interruptAll.cjs +2 -3
  103. package/_cjs/Fiber/api/interruptAll.cjs.map +1 -1
  104. package/_cjs/Fiber/api/interruptAs.cjs +5 -10
  105. package/_cjs/Fiber/api/interruptAs.cjs.map +1 -1
  106. package/_cjs/Fiber/api/interruptFork.cjs +2 -3
  107. package/_cjs/Fiber/api/interruptFork.cjs.map +1 -1
  108. package/_cjs/Fiber/api/join.cjs +1 -2
  109. package/_cjs/Fiber/api/join.cjs.map +1 -1
  110. package/_cjs/Fiber/api/joinAll.cjs +1 -2
  111. package/_cjs/Fiber/api/joinAll.cjs.map +1 -1
  112. package/_cjs/Fiber/api/mapFiber.cjs +1 -2
  113. package/_cjs/Fiber/api/mapFiber.cjs.map +1 -1
  114. package/_cjs/Fiber/api/mapIO.cjs +2 -3
  115. package/_cjs/Fiber/api/mapIO.cjs.map +1 -1
  116. package/_cjs/Fiber/api/zipWith.cjs +2 -3
  117. package/_cjs/Fiber/api/zipWith.cjs.map +1 -1
  118. package/_cjs/Fiber/constructors.cjs +2 -3
  119. package/_cjs/Fiber/constructors.cjs.map +1 -1
  120. package/_cjs/Fiber/definition.cjs +6 -4
  121. package/_cjs/Fiber/definition.cjs.map +1 -1
  122. package/_cjs/FiberRef/api/locallyScoped.cjs +1 -2
  123. package/_cjs/FiberRef/api/locallyScoped.cjs.map +1 -1
  124. package/_cjs/FiberRef/api/locallyScopedWith.cjs +1 -2
  125. package/_cjs/FiberRef/api/locallyScopedWith.cjs.map +1 -1
  126. package/_cjs/FiberRef/constructors.cjs +1 -2
  127. package/_cjs/FiberRef/constructors.cjs.map +1 -1
  128. package/_cjs/FiberRef/definition.cjs +1 -2
  129. package/_cjs/FiberRef/definition.cjs.map +1 -1
  130. package/_cjs/FiberRef/operations.cjs +1 -2
  131. package/_cjs/FiberRef/operations.cjs.map +1 -1
  132. package/_cjs/FiberRef/unsafe.cjs +1 -2
  133. package/_cjs/FiberRef/unsafe.cjs.map +1 -1
  134. package/_cjs/FiberRefs/Patch.cjs +1 -2
  135. package/_cjs/FiberRefs/Patch.cjs.map +1 -1
  136. package/_cjs/FiberRefs/api.cjs +1 -2
  137. package/_cjs/FiberRefs/api.cjs.map +1 -1
  138. package/_cjs/FiberRefs/definition.cjs +1 -2
  139. package/_cjs/FiberRefs/definition.cjs.map +1 -1
  140. package/_cjs/FiberScope/definition.cjs +29 -6
  141. package/_cjs/FiberScope/definition.cjs.map +1 -1
  142. package/_cjs/FiberSet.cjs +16 -15
  143. package/_cjs/FiberSet.cjs.map +1 -1
  144. package/_cjs/FiberStatus/definition.cjs +1 -2
  145. package/_cjs/FiberStatus/definition.cjs.map +1 -1
  146. package/_cjs/Future/State.cjs +108 -0
  147. package/_cjs/Future/State.cjs.map +1 -0
  148. package/_cjs/Future/api.cjs +71 -64
  149. package/_cjs/Future/api.cjs.map +1 -1
  150. package/_cjs/Future/constructors.cjs +3 -4
  151. package/_cjs/Future/constructors.cjs.map +1 -1
  152. package/_cjs/Future/definition.cjs +1 -15
  153. package/_cjs/Future/definition.cjs.map +1 -1
  154. package/_cjs/Future.cjs +11 -0
  155. package/_cjs/Future.cjs.map +1 -1
  156. package/_cjs/Hub/api.cjs +56 -57
  157. package/_cjs/Hub/api.cjs.map +1 -1
  158. package/_cjs/Hub/internal.cjs +1 -2
  159. package/_cjs/Hub/internal.cjs.map +1 -1
  160. package/_cjs/IO/api/acquireRelease.cjs +1 -2
  161. package/_cjs/IO/api/acquireRelease.cjs.map +1 -1
  162. package/_cjs/IO/api/acquireReleaseExit.cjs +1 -2
  163. package/_cjs/IO/api/acquireReleaseExit.cjs.map +1 -1
  164. package/_cjs/IO/api/acquireReleaseInterruptible.cjs +1 -2
  165. package/_cjs/IO/api/acquireReleaseInterruptible.cjs.map +1 -1
  166. package/_cjs/IO/api/acquireReleaseInterruptibleExit.cjs +1 -2
  167. package/_cjs/IO/api/acquireReleaseInterruptibleExit.cjs.map +1 -1
  168. package/_cjs/IO/api/addFinalizer.cjs +1 -2
  169. package/_cjs/IO/api/addFinalizer.cjs.map +1 -1
  170. package/_cjs/IO/api/addFinalizerExit.cjs +1 -2
  171. package/_cjs/IO/api/addFinalizerExit.cjs.map +1 -1
  172. package/_cjs/IO/api/all.cjs +1 -2
  173. package/_cjs/IO/api/all.cjs.map +1 -1
  174. package/_cjs/IO/api/array.cjs +51 -0
  175. package/_cjs/IO/api/array.cjs.map +1 -0
  176. package/_cjs/IO/api/asyncIO.cjs +1 -2
  177. package/_cjs/IO/api/asyncIO.cjs.map +1 -1
  178. package/_cjs/IO/api/asyncInterrupt.cjs +1 -2
  179. package/_cjs/IO/api/asyncInterrupt.cjs.map +1 -1
  180. package/_cjs/IO/api/awaitAllChildren.cjs +17 -0
  181. package/_cjs/IO/api/awaitAllChildren.cjs.map +1 -0
  182. package/_cjs/IO/api/blocking.cjs +1 -2
  183. package/_cjs/IO/api/blocking.cjs.map +1 -1
  184. package/_cjs/IO/api/bracket.cjs +1 -2
  185. package/_cjs/IO/api/bracket.cjs.map +1 -1
  186. package/_cjs/IO/api/bracketExit.cjs +1 -2
  187. package/_cjs/IO/api/bracketExit.cjs.map +1 -1
  188. package/_cjs/IO/api/cachedInvalidate.cjs +47 -0
  189. package/_cjs/IO/api/cachedInvalidate.cjs.map +1 -0
  190. package/_cjs/IO/api/clockWith.cjs +1 -2
  191. package/_cjs/IO/api/clockWith.cjs.map +1 -1
  192. package/_cjs/IO/api/concurrency.cjs +1 -2
  193. package/_cjs/IO/api/concurrency.cjs.map +1 -1
  194. package/_cjs/IO/api/concurrentFinalizers.cjs +1 -2
  195. package/_cjs/IO/api/concurrentFinalizers.cjs.map +1 -1
  196. package/_cjs/IO/api/consoleWith.cjs +1 -2
  197. package/_cjs/IO/api/consoleWith.cjs.map +1 -1
  198. package/_cjs/IO/api/daemonChildren.cjs +1 -2
  199. package/_cjs/IO/api/daemonChildren.cjs.map +1 -1
  200. package/_cjs/IO/api/delay.cjs +1 -2
  201. package/_cjs/IO/api/delay.cjs.map +1 -1
  202. package/_cjs/IO/api/descriptor.cjs +1 -2
  203. package/_cjs/IO/api/descriptor.cjs.map +1 -1
  204. package/_cjs/IO/api/diffFiberRefs.cjs +1 -2
  205. package/_cjs/IO/api/diffFiberRefs.cjs.map +1 -1
  206. package/_cjs/IO/api/disconnect.cjs +2 -3
  207. package/_cjs/IO/api/disconnect.cjs.map +1 -1
  208. package/_cjs/IO/api/ensuringChildren.cjs +1 -2
  209. package/_cjs/IO/api/ensuringChildren.cjs.map +1 -1
  210. package/_cjs/IO/api/environment.cjs +1 -2
  211. package/_cjs/IO/api/environment.cjs.map +1 -1
  212. package/_cjs/IO/api/foreachConcurrent.cjs +36 -30
  213. package/_cjs/IO/api/foreachConcurrent.cjs.map +1 -1
  214. package/_cjs/IO/api/foreachExec.cjs +1 -2
  215. package/_cjs/IO/api/foreachExec.cjs.map +1 -1
  216. package/_cjs/IO/api/fork.cjs +2 -3
  217. package/_cjs/IO/api/fork.cjs.map +1 -1
  218. package/_cjs/IO/api/forkAll.cjs +1 -2
  219. package/_cjs/IO/api/forkAll.cjs.map +1 -1
  220. package/_cjs/IO/api/forkDaemon.cjs +5 -6
  221. package/_cjs/IO/api/forkDaemon.cjs.map +1 -1
  222. package/_cjs/IO/api/forkIn.cjs +1 -2
  223. package/_cjs/IO/api/forkIn.cjs.map +1 -1
  224. package/_cjs/IO/api/forkScoped.cjs +1 -2
  225. package/_cjs/IO/api/forkScoped.cjs.map +1 -1
  226. package/_cjs/IO/api/fulfill.cjs +1 -2
  227. package/_cjs/IO/api/fulfill.cjs.map +1 -1
  228. package/_cjs/IO/api/interrupt.cjs +4 -5
  229. package/_cjs/IO/api/interrupt.cjs.map +1 -1
  230. package/_cjs/IO/api/memoize.cjs +1 -2
  231. package/_cjs/IO/api/memoize.cjs.map +1 -1
  232. package/_cjs/IO/api/onTermination.cjs +2 -3
  233. package/_cjs/IO/api/onTermination.cjs.map +1 -1
  234. package/_cjs/IO/api/once.cjs +1 -2
  235. package/_cjs/IO/api/once.cjs.map +1 -1
  236. package/_cjs/IO/api/patchFiberRefs.cjs +1 -2
  237. package/_cjs/IO/api/patchFiberRefs.cjs.map +1 -1
  238. package/_cjs/IO/api/provideLayer.cjs +1 -2
  239. package/_cjs/IO/api/provideLayer.cjs.map +1 -1
  240. package/_cjs/IO/api/provideScope.cjs +1 -2
  241. package/_cjs/IO/api/provideScope.cjs.map +1 -1
  242. package/_cjs/IO/api/provideSomeLayer.cjs +1 -2
  243. package/_cjs/IO/api/provideSomeLayer.cjs.map +1 -1
  244. package/_cjs/IO/api/provideSomeRuntime.cjs +1 -2
  245. package/_cjs/IO/api/provideSomeRuntime.cjs.map +1 -1
  246. package/_cjs/IO/api/race.cjs +2 -3
  247. package/_cjs/IO/api/race.cjs.map +1 -1
  248. package/_cjs/IO/api/raceFirst.cjs +1 -2
  249. package/_cjs/IO/api/raceFirst.cjs.map +1 -1
  250. package/_cjs/IO/api/raceWith.cjs +1 -2
  251. package/_cjs/IO/api/raceWith.cjs.map +1 -1
  252. package/_cjs/IO/api/randomWith.cjs +1 -2
  253. package/_cjs/IO/api/randomWith.cjs.map +1 -1
  254. package/_cjs/IO/api/repeat.cjs +1 -2
  255. package/_cjs/IO/api/repeat.cjs.map +1 -1
  256. package/_cjs/IO/api/retry.cjs +1 -2
  257. package/_cjs/IO/api/retry.cjs.map +1 -1
  258. package/_cjs/IO/api/schedule.cjs +1 -2
  259. package/_cjs/IO/api/schedule.cjs.map +1 -1
  260. package/_cjs/IO/api/scope.cjs +1 -2
  261. package/_cjs/IO/api/scope.cjs.map +1 -1
  262. package/_cjs/IO/api/scopeWith.cjs +1 -2
  263. package/_cjs/IO/api/scopeWith.cjs.map +1 -1
  264. package/_cjs/IO/api/scoped.cjs +1 -2
  265. package/_cjs/IO/api/scoped.cjs.map +1 -1
  266. package/_cjs/IO/api/sleep.cjs +1 -2
  267. package/_cjs/IO/api/sleep.cjs.map +1 -1
  268. package/_cjs/IO/api/stateful.cjs +1 -2
  269. package/_cjs/IO/api/stateful.cjs.map +1 -1
  270. package/_cjs/IO/api/supervised.cjs +1 -2
  271. package/_cjs/IO/api/supervised.cjs.map +1 -1
  272. package/_cjs/IO/api/timeout.cjs +9 -11
  273. package/_cjs/IO/api/timeout.cjs.map +1 -1
  274. package/_cjs/IO/api/transplant.cjs +22 -7
  275. package/_cjs/IO/api/transplant.cjs.map +1 -1
  276. package/_cjs/IO/api/whenFiberRef.cjs +1 -2
  277. package/_cjs/IO/api/whenFiberRef.cjs.map +1 -1
  278. package/_cjs/IO/api/whenRef.cjs +1 -2
  279. package/_cjs/IO/api/whenRef.cjs.map +1 -1
  280. package/_cjs/IO/api/withChildren.cjs +1 -2
  281. package/_cjs/IO/api/withChildren.cjs.map +1 -1
  282. package/_cjs/IO/api/withEarlyRelease.cjs +1 -2
  283. package/_cjs/IO/api/withEarlyRelease.cjs.map +1 -1
  284. package/_cjs/IO/api/withFinalizer.cjs +1 -2
  285. package/_cjs/IO/api/withFinalizer.cjs.map +1 -1
  286. package/_cjs/IO/api/withFinalizerExit.cjs +1 -2
  287. package/_cjs/IO/api/withFinalizerExit.cjs.map +1 -1
  288. package/_cjs/IO/api/zipConcurrent.cjs +5 -6
  289. package/_cjs/IO/api/zipConcurrent.cjs.map +1 -1
  290. package/_cjs/IO/api.cjs +522 -473
  291. package/_cjs/IO/api.cjs.map +1 -1
  292. package/_cjs/IO/definition.cjs +2 -3
  293. package/_cjs/IO/definition.cjs.map +1 -1
  294. package/_cjs/IO/runtime.cjs +9 -10
  295. package/_cjs/IO/runtime.cjs.map +1 -1
  296. package/_cjs/IO.cjs +33 -11
  297. package/_cjs/IO.cjs.map +1 -1
  298. package/_cjs/IOEnv/definition.cjs +1 -2
  299. package/_cjs/IOEnv/definition.cjs.map +1 -1
  300. package/_cjs/IOEnv/live.cjs +1 -2
  301. package/_cjs/IOEnv/live.cjs.map +1 -1
  302. package/_cjs/IOEnv/services.cjs +1 -2
  303. package/_cjs/IOEnv/services.cjs.map +1 -1
  304. package/_cjs/Layer/MemoMap.cjs +1 -2
  305. package/_cjs/Layer/MemoMap.cjs.map +1 -1
  306. package/_cjs/Layer/api.cjs +1 -2
  307. package/_cjs/Layer/api.cjs.map +1 -1
  308. package/_cjs/Logger/api.cjs +1 -2
  309. package/_cjs/Logger/api.cjs.map +1 -1
  310. package/_cjs/Logger/constructors.cjs +1 -2
  311. package/_cjs/Logger/constructors.cjs.map +1 -1
  312. package/_cjs/MVar/api.cjs +1 -2
  313. package/_cjs/MVar/api.cjs.map +1 -1
  314. package/_cjs/Push/api.cjs +2 -3
  315. package/_cjs/Push/api.cjs.map +1 -1
  316. package/_cjs/Push/internal.cjs +1 -2
  317. package/_cjs/Push/internal.cjs.map +1 -1
  318. package/_cjs/Queue/api/dimapIO.cjs +1 -2
  319. package/_cjs/Queue/api/dimapIO.cjs.map +1 -1
  320. package/_cjs/Queue/api/filterInputIO.cjs +1 -2
  321. package/_cjs/Queue/api/filterInputIO.cjs.map +1 -1
  322. package/_cjs/Queue/api/filterOutputIO.cjs +1 -2
  323. package/_cjs/Queue/api/filterOutputIO.cjs.map +1 -1
  324. package/_cjs/Queue/api/poll.cjs +1 -2
  325. package/_cjs/Queue/api/poll.cjs.map +1 -1
  326. package/_cjs/Queue/api/takeBetween.cjs +1 -2
  327. package/_cjs/Queue/api/takeBetween.cjs.map +1 -1
  328. package/_cjs/Queue/api/takeN.cjs +1 -2
  329. package/_cjs/Queue/api/takeN.cjs.map +1 -1
  330. package/_cjs/Queue/api/zipWithIO.cjs +1 -2
  331. package/_cjs/Queue/api/zipWithIO.cjs.map +1 -1
  332. package/_cjs/Queue/constructors.cjs +1 -2
  333. package/_cjs/Queue/constructors.cjs.map +1 -1
  334. package/_cjs/Queue/internal.cjs +1 -2
  335. package/_cjs/Queue/internal.cjs.map +1 -1
  336. package/_cjs/Queue/strategy.cjs +1 -2
  337. package/_cjs/Queue/strategy.cjs.map +1 -1
  338. package/_cjs/Random/api.cjs +1 -2
  339. package/_cjs/Random/api.cjs.map +1 -1
  340. package/_cjs/Random/definition.cjs +2 -2
  341. package/_cjs/Random/definition.cjs.map +1 -1
  342. package/_cjs/Random/live.cjs +1 -2
  343. package/_cjs/Random/live.cjs.map +1 -1
  344. package/_cjs/Ref/Atomic.cjs +1 -2
  345. package/_cjs/Ref/Atomic.cjs.map +1 -1
  346. package/_cjs/Ref/Derived.cjs +1 -2
  347. package/_cjs/Ref/Derived.cjs.map +1 -1
  348. package/_cjs/Ref/DerivedAll.cjs +1 -2
  349. package/_cjs/Ref/DerivedAll.cjs.map +1 -1
  350. package/_cjs/Ref/Synchronized/api.cjs +2 -3
  351. package/_cjs/Ref/Synchronized/api.cjs.map +1 -1
  352. package/_cjs/Ref/Synchronized/constructors.cjs +2 -3
  353. package/_cjs/Ref/Synchronized/constructors.cjs.map +1 -1
  354. package/_cjs/Ref/Synchronized/definition.cjs +2 -3
  355. package/_cjs/Ref/Synchronized/definition.cjs.map +1 -1
  356. package/_cjs/Ref/api/collect.cjs +1 -2
  357. package/_cjs/Ref/api/collect.cjs.map +1 -1
  358. package/_cjs/Ref/api/dimap.cjs +1 -2
  359. package/_cjs/Ref/api/dimap.cjs.map +1 -1
  360. package/_cjs/Ref/api/filter.cjs +1 -2
  361. package/_cjs/Ref/api/filter.cjs.map +1 -1
  362. package/_cjs/Ref/api/modify.cjs +1 -2
  363. package/_cjs/Ref/api/modify.cjs.map +1 -1
  364. package/_cjs/Ref/api.cjs +1 -2
  365. package/_cjs/Ref/api.cjs.map +1 -1
  366. package/_cjs/Ref/constructors.cjs +1 -2
  367. package/_cjs/Ref/constructors.cjs.map +1 -1
  368. package/_cjs/RefSubject/Atomic.cjs +1 -2
  369. package/_cjs/RefSubject/Atomic.cjs.map +1 -1
  370. package/_cjs/RefSubject/Synchronized/api.cjs +1 -2
  371. package/_cjs/RefSubject/Synchronized/api.cjs.map +1 -1
  372. package/_cjs/RefSubject/Synchronized/definition.cjs +1 -2
  373. package/_cjs/RefSubject/Synchronized/definition.cjs.map +1 -1
  374. package/_cjs/RefSubject/api.cjs +1 -2
  375. package/_cjs/RefSubject/api.cjs.map +1 -1
  376. package/_cjs/Reloadable/api.cjs +1 -2
  377. package/_cjs/Reloadable/api.cjs.map +1 -1
  378. package/_cjs/Reloadable/constructors.cjs +1 -2
  379. package/_cjs/Reloadable/constructors.cjs.map +1 -1
  380. package/_cjs/Reloadable/definition.cjs +1 -2
  381. package/_cjs/Reloadable/definition.cjs.map +1 -1
  382. package/_cjs/RuntimeFlags/Patch.cjs +1 -2
  383. package/_cjs/RuntimeFlags/Patch.cjs.map +1 -1
  384. package/_cjs/RuntimeFlags/RuntimeFlags.cjs +1 -2
  385. package/_cjs/RuntimeFlags/RuntimeFlags.cjs.map +1 -1
  386. package/_cjs/STM/api/atomically.cjs +1 -2
  387. package/_cjs/STM/api/atomically.cjs.map +1 -1
  388. package/_cjs/STM/api/core-api.cjs +1 -2
  389. package/_cjs/STM/api/core-api.cjs.map +1 -1
  390. package/_cjs/STM/api.cjs +1 -2
  391. package/_cjs/STM/api.cjs.map +1 -1
  392. package/_cjs/STM/definition.cjs +2 -3
  393. package/_cjs/STM/definition.cjs.map +1 -1
  394. package/_cjs/STM/driver.cjs +1 -2
  395. package/_cjs/STM/driver.cjs.map +1 -1
  396. package/_cjs/STM/internal/CommitState.cjs +1 -2
  397. package/_cjs/STM/internal/CommitState.cjs.map +1 -1
  398. package/_cjs/STM/internal/Journal.cjs +1 -2
  399. package/_cjs/STM/internal/Journal.cjs.map +1 -1
  400. package/_cjs/Schedule/Decision.cjs +1 -2
  401. package/_cjs/Schedule/Decision.cjs.map +1 -1
  402. package/_cjs/Schedule/api/driver.cjs +1 -2
  403. package/_cjs/Schedule/api/driver.cjs.map +1 -1
  404. package/_cjs/Schedule/api.cjs +1 -2
  405. package/_cjs/Schedule/api.cjs.map +1 -1
  406. package/_cjs/Scope/Finalizer/definition.cjs +1 -2
  407. package/_cjs/Scope/Finalizer/definition.cjs.map +1 -1
  408. package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs +1 -2
  409. package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs.map +1 -1
  410. package/_cjs/Scope/ReleaseMap/api.cjs +1 -2
  411. package/_cjs/Scope/ReleaseMap/api.cjs.map +1 -1
  412. package/_cjs/Scope/ReleaseMap/constructors.cjs +1 -2
  413. package/_cjs/Scope/ReleaseMap/constructors.cjs.map +1 -1
  414. package/_cjs/Scope/ReleaseMap/definition.cjs +1 -2
  415. package/_cjs/Scope/ReleaseMap/definition.cjs.map +1 -1
  416. package/_cjs/Scope/api.cjs +1 -2
  417. package/_cjs/Scope/api.cjs.map +1 -1
  418. package/_cjs/Scope/definition.cjs +1 -2
  419. package/_cjs/Scope/definition.cjs.map +1 -1
  420. package/_cjs/ScopedRef/api.cjs +2 -3
  421. package/_cjs/ScopedRef/api.cjs.map +1 -1
  422. package/_cjs/Semaphore/Reservation.cjs +24 -0
  423. package/_cjs/Semaphore/Reservation.cjs.map +1 -0
  424. package/_cjs/Semaphore/constructors.cjs +25 -0
  425. package/_cjs/Semaphore/constructors.cjs.map +1 -0
  426. package/_cjs/Semaphore/definition.cjs +149 -0
  427. package/_cjs/Semaphore/definition.cjs.map +1 -0
  428. package/_cjs/Semaphore.cjs +31 -138
  429. package/_cjs/Semaphore.cjs.map +1 -1
  430. package/_cjs/Sink/api.cjs +1 -2
  431. package/_cjs/Sink/api.cjs.map +1 -1
  432. package/_cjs/State/api.cjs +1 -2
  433. package/_cjs/State/api.cjs.map +1 -1
  434. package/_cjs/Stream/api/zipAllWith.cjs +1 -2
  435. package/_cjs/Stream/api/zipAllWith.cjs.map +1 -1
  436. package/_cjs/Stream/api/zipWith.cjs +1 -2
  437. package/_cjs/Stream/api/zipWith.cjs.map +1 -1
  438. package/_cjs/Stream/api/zipWithChunks.cjs +1 -2
  439. package/_cjs/Stream/api/zipWithChunks.cjs.map +1 -1
  440. package/_cjs/Stream/api.cjs +702 -703
  441. package/_cjs/Stream/api.cjs.map +1 -1
  442. package/_cjs/Stream/internal/Handoff.cjs +1 -2
  443. package/_cjs/Stream/internal/Handoff.cjs.map +1 -1
  444. package/_cjs/Stream/internal/Pull.cjs +1 -2
  445. package/_cjs/Stream/internal/Pull.cjs.map +1 -1
  446. package/_cjs/Stream/internal/Take.cjs +1 -2
  447. package/_cjs/Stream/internal/Take.cjs.map +1 -1
  448. package/_cjs/Stream/internal/util.cjs +1 -2
  449. package/_cjs/Stream/internal/util.cjs.map +1 -1
  450. package/_cjs/Subject/Atomic.cjs +1 -2
  451. package/_cjs/Subject/Atomic.cjs.map +1 -1
  452. package/_cjs/Subject/api.cjs +1 -2
  453. package/_cjs/Subject/api.cjs.map +1 -1
  454. package/_cjs/SubscriptionRef.cjs +2 -3
  455. package/_cjs/SubscriptionRef.cjs.map +1 -1
  456. package/_cjs/Supervisor/api.cjs +1 -2
  457. package/_cjs/Supervisor/api.cjs.map +1 -1
  458. package/_cjs/Supervisor/constructors.cjs +1 -2
  459. package/_cjs/Supervisor/constructors.cjs.map +1 -1
  460. package/_cjs/Supervisor/definition.cjs +1 -2
  461. package/_cjs/Supervisor/definition.cjs.map +1 -1
  462. package/_cjs/SupervisorPatch.cjs +1 -2
  463. package/_cjs/SupervisorPatch.cjs.map +1 -1
  464. package/_cjs/TExit/definition.cjs +1 -2
  465. package/_cjs/TExit/definition.cjs.map +1 -1
  466. package/_cjs/TFuture/api.cjs +1 -2
  467. package/_cjs/TFuture/api.cjs.map +1 -1
  468. package/_cjs/TFuture/constructors.cjs +1 -2
  469. package/_cjs/TFuture/constructors.cjs.map +1 -1
  470. package/_cjs/TFuture/definition.cjs +1 -2
  471. package/_cjs/TFuture/definition.cjs.map +1 -1
  472. package/_cjs/TReentrantLock/api.cjs +1 -2
  473. package/_cjs/TReentrantLock/api.cjs.map +1 -1
  474. package/_cjs/TReentrantLock/definition.cjs +1 -2
  475. package/_cjs/TReentrantLock/definition.cjs.map +1 -1
  476. package/_cjs/TRef/api.cjs +1 -2
  477. package/_cjs/TRef/api.cjs.map +1 -1
  478. package/_cjs/TRef/constructors.cjs +1 -2
  479. package/_cjs/TRef/constructors.cjs.map +1 -1
  480. package/_cjs/TRef/definition.cjs +1 -2
  481. package/_cjs/TRef/definition.cjs.map +1 -1
  482. package/_cjs/TSemaphore/api.cjs +1 -2
  483. package/_cjs/TSemaphore/api.cjs.map +1 -1
  484. package/_cjs/TSemaphore/constructors.cjs +1 -2
  485. package/_cjs/TSemaphore/constructors.cjs.map +1 -1
  486. package/_cjs/TSemaphore/definition.cjs +1 -2
  487. package/_cjs/TSemaphore/definition.cjs.map +1 -1
  488. package/_cjs/collection/immutable/Conc/dropUntilIO.cjs +1 -2
  489. package/_cjs/collection/immutable/Conc/dropUntilIO.cjs.map +1 -1
  490. package/_cjs/collection/immutable/Conc/dropWhileIO.cjs +1 -2
  491. package/_cjs/collection/immutable/Conc/dropWhileIO.cjs.map +1 -1
  492. package/_cjs/collection/immutable/Conc/filterIO.cjs +1 -2
  493. package/_cjs/collection/immutable/Conc/filterIO.cjs.map +1 -1
  494. package/_cjs/collection/immutable/Conc/findIO.cjs +1 -2
  495. package/_cjs/collection/immutable/Conc/findIO.cjs.map +1 -1
  496. package/_cjs/collection/immutable/Conc/mapIO.cjs +1 -2
  497. package/_cjs/collection/immutable/Conc/mapIO.cjs.map +1 -1
  498. package/_cjs/collection/immutable/Conc/takeWhileIO.cjs +1 -2
  499. package/_cjs/collection/immutable/Conc/takeWhileIO.cjs.map +1 -1
  500. package/_cjs/data/Exit/foreachIO.cjs +1 -2
  501. package/_cjs/data/Exit/foreachIO.cjs.map +1 -1
  502. package/_cjs/internal/HashedPair.cjs +1 -2
  503. package/_cjs/internal/HashedPair.cjs.map +1 -1
  504. package/_cjs/internal/Hub.cjs +1 -2
  505. package/_cjs/internal/Hub.cjs.map +1 -1
  506. package/_cjs/internal/MutableQueue.cjs +1 -2
  507. package/_cjs/internal/MutableQueue.cjs.map +1 -1
  508. package/_cjs/internal/Scheduler.cjs +1 -2
  509. package/_cjs/internal/Scheduler.cjs.map +1 -1
  510. package/_cjs/internal/StackTraceBuilder.cjs +1 -2
  511. package/_cjs/internal/StackTraceBuilder.cjs.map +1 -1
  512. package/_mjs/Cached/api.mjs.map +1 -1
  513. package/_mjs/Channel/api/mapOutConcurrentIO.mjs +1 -1
  514. package/_mjs/Channel/api/mergeAllWith.mjs +1 -1
  515. package/_mjs/Channel/api/runScoped.mjs +2 -2
  516. package/_mjs/Channel/api/runScoped.mjs.map +1 -1
  517. package/_mjs/Channel/api/toPull.mjs +1 -1
  518. package/_mjs/Channel/api/toPull.mjs.map +1 -1
  519. package/_mjs/Channel/api.mjs +205 -205
  520. package/_mjs/Channel/api.mjs.map +1 -1
  521. package/_mjs/Channel/core-api.mjs +43 -42
  522. package/_mjs/Channel/core-api.mjs.map +1 -1
  523. package/_mjs/Channel/internal/ChannelExecutor.mjs +3 -3
  524. package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
  525. package/_mjs/Console/definition.mjs +1 -0
  526. package/_mjs/Console/definition.mjs.map +1 -1
  527. package/_mjs/CountdownLatch.mjs +2 -1
  528. package/_mjs/CountdownLatch.mjs.map +1 -1
  529. package/_mjs/Fiber/FiberMessage.mjs +2 -20
  530. package/_mjs/Fiber/FiberMessage.mjs.map +1 -1
  531. package/_mjs/Fiber/FiberRuntime.mjs +877 -633
  532. package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
  533. package/_mjs/Fiber/api/collectAll.mjs +1 -1
  534. package/_mjs/Fiber/api/collectAll.mjs.map +1 -1
  535. package/_mjs/Fiber/api/interrupt.mjs +1 -1
  536. package/_mjs/Fiber/api/interrupt.mjs.map +1 -1
  537. package/_mjs/Fiber/api/interruptAll.mjs +1 -1
  538. package/_mjs/Fiber/api/interruptAll.mjs.map +1 -1
  539. package/_mjs/Fiber/api/interruptAs.mjs +4 -7
  540. package/_mjs/Fiber/api/interruptAs.mjs.map +1 -1
  541. package/_mjs/Fiber/api/interruptFork.mjs +1 -1
  542. package/_mjs/Fiber/api/interruptFork.mjs.map +1 -1
  543. package/_mjs/Fiber/api/mapIO.mjs +1 -1
  544. package/_mjs/Fiber/api/mapIO.mjs.map +1 -1
  545. package/_mjs/Fiber/api/zipWith.mjs +1 -1
  546. package/_mjs/Fiber/api/zipWith.mjs.map +1 -1
  547. package/_mjs/Fiber/constructors.mjs +1 -1
  548. package/_mjs/Fiber/constructors.mjs.map +1 -1
  549. package/_mjs/Fiber/definition.mjs +5 -2
  550. package/_mjs/Fiber/definition.mjs.map +1 -1
  551. package/_mjs/FiberScope/definition.mjs +28 -4
  552. package/_mjs/FiberScope/definition.mjs.map +1 -1
  553. package/_mjs/FiberSet.mjs +14 -12
  554. package/_mjs/FiberSet.mjs.map +1 -1
  555. package/_mjs/Future/State.mjs +96 -0
  556. package/_mjs/Future/State.mjs.map +1 -0
  557. package/_mjs/Future/api.mjs +67 -61
  558. package/_mjs/Future/api.mjs.map +1 -1
  559. package/_mjs/Future/constructors.mjs +3 -3
  560. package/_mjs/Future/constructors.mjs.map +1 -1
  561. package/_mjs/Future/definition.mjs +0 -12
  562. package/_mjs/Future/definition.mjs.map +1 -1
  563. package/_mjs/Future.mjs +1 -0
  564. package/_mjs/Future.mjs.map +1 -1
  565. package/_mjs/Hub/api.mjs +55 -55
  566. package/_mjs/Hub/api.mjs.map +1 -1
  567. package/_mjs/IO/api/array.mjs +42 -0
  568. package/_mjs/IO/api/array.mjs.map +1 -0
  569. package/_mjs/IO/api/asyncInterrupt.mjs.map +1 -1
  570. package/_mjs/IO/api/awaitAllChildren.mjs +10 -0
  571. package/_mjs/IO/api/awaitAllChildren.mjs.map +1 -0
  572. package/_mjs/IO/api/cachedInvalidate.mjs +39 -0
  573. package/_mjs/IO/api/cachedInvalidate.mjs.map +1 -0
  574. package/_mjs/IO/api/disconnect.mjs +1 -1
  575. package/_mjs/IO/api/disconnect.mjs.map +1 -1
  576. package/_mjs/IO/api/foreachConcurrent.mjs +35 -28
  577. package/_mjs/IO/api/foreachConcurrent.mjs.map +1 -1
  578. package/_mjs/IO/api/fork.mjs +1 -1
  579. package/_mjs/IO/api/fork.mjs.map +1 -1
  580. package/_mjs/IO/api/forkDaemon.mjs +4 -4
  581. package/_mjs/IO/api/forkDaemon.mjs.map +1 -1
  582. package/_mjs/IO/api/interrupt.mjs +3 -3
  583. package/_mjs/IO/api/onTermination.mjs +1 -1
  584. package/_mjs/IO/api/onTermination.mjs.map +1 -1
  585. package/_mjs/IO/api/race.mjs +1 -1
  586. package/_mjs/IO/api/race.mjs.map +1 -1
  587. package/_mjs/IO/api/timeout.mjs +8 -9
  588. package/_mjs/IO/api/timeout.mjs.map +1 -1
  589. package/_mjs/IO/api/transplant.mjs +19 -5
  590. package/_mjs/IO/api/transplant.mjs.map +1 -1
  591. package/_mjs/IO/api/zipConcurrent.mjs +4 -4
  592. package/_mjs/IO/api/zipConcurrent.mjs.map +1 -1
  593. package/_mjs/IO/api.mjs +515 -468
  594. package/_mjs/IO/api.mjs.map +1 -1
  595. package/_mjs/IO/definition.mjs +1 -1
  596. package/_mjs/IO/definition.mjs.map +1 -1
  597. package/_mjs/IO/runtime.mjs +8 -8
  598. package/_mjs/IO/runtime.mjs.map +1 -1
  599. package/_mjs/IO.mjs +3 -1
  600. package/_mjs/IO.mjs.map +1 -1
  601. package/_mjs/IOEnv/definition.mjs.map +1 -1
  602. package/_mjs/Push/api.mjs +1 -1
  603. package/_mjs/Random/definition.mjs +1 -0
  604. package/_mjs/Random/definition.mjs.map +1 -1
  605. package/_mjs/Ref/Synchronized/api.mjs +1 -1
  606. package/_mjs/Ref/Synchronized/api.mjs.map +1 -1
  607. package/_mjs/Ref/Synchronized/constructors.mjs +1 -1
  608. package/_mjs/Ref/Synchronized/definition.mjs +1 -1
  609. package/_mjs/Ref/Synchronized/definition.mjs.map +1 -1
  610. package/_mjs/STM/definition.mjs +1 -1
  611. package/_mjs/ScopedRef/api.mjs +1 -1
  612. package/_mjs/ScopedRef/api.mjs.map +1 -1
  613. package/_mjs/Semaphore/Reservation.mjs +16 -0
  614. package/_mjs/Semaphore/Reservation.mjs.map +1 -0
  615. package/_mjs/Semaphore/constructors.mjs +17 -0
  616. package/_mjs/Semaphore/constructors.mjs.map +1 -0
  617. package/_mjs/Semaphore/definition.mjs +141 -0
  618. package/_mjs/Semaphore/definition.mjs.map +1 -0
  619. package/_mjs/Semaphore.mjs +4 -133
  620. package/_mjs/Semaphore.mjs.map +1 -1
  621. package/_mjs/Stream/api.mjs +701 -701
  622. package/_mjs/Stream/api.mjs.map +1 -1
  623. package/_mjs/SubscriptionRef.mjs +1 -1
  624. package/_src/Cached/api.ts +3 -3
  625. package/_src/Channel/api/toPull.ts +1 -1
  626. package/_src/Channel/api.ts +273 -272
  627. package/_src/Channel/core-api.ts +57 -55
  628. package/_src/Channel/internal/ChannelExecutor.ts +3 -3
  629. package/_src/Console/definition.ts +1 -0
  630. package/_src/CountdownLatch.ts +2 -0
  631. package/_src/Fiber/FiberMessage.ts +3 -28
  632. package/_src/Fiber/FiberRuntime.ts +988 -616
  633. package/_src/Fiber/api/interruptAs.ts +4 -3
  634. package/_src/Fiber/constructors.ts +1 -1
  635. package/_src/Fiber/definition.ts +4 -0
  636. package/_src/FiberScope/definition.ts +40 -2
  637. package/_src/FiberSet.ts +6 -2
  638. package/_src/Future/State.ts +128 -0
  639. package/_src/Future/api.ts +62 -51
  640. package/_src/Future/constructors.ts +4 -2
  641. package/_src/Future/definition.ts +2 -17
  642. package/_src/Future.ts +4 -3
  643. package/_src/Hub/api.ts +61 -61
  644. package/_src/IO/api/addFinalizerExit.ts +4 -4
  645. package/_src/IO/api/array.ts +49 -0
  646. package/_src/IO/api/asyncInterrupt.ts +1 -1
  647. package/_src/IO/api/awaitAllChildren.ts +6 -0
  648. package/_src/IO/api/cachedInvalidate.ts +42 -0
  649. package/_src/IO/api/foreachConcurrent.ts +39 -23
  650. package/_src/IO/api/fork.ts +1 -1
  651. package/_src/IO/api/forkDaemon.ts +2 -2
  652. package/_src/IO/api/memoize.ts +3 -3
  653. package/_src/IO/api/onTermination.ts +2 -2
  654. package/_src/IO/api/transplant.ts +26 -3
  655. package/_src/IO/api/zipConcurrent.ts +2 -2
  656. package/_src/IO/api.ts +547 -525
  657. package/_src/IO/definition.ts +4 -28
  658. package/_src/IO/runtime.ts +0 -1
  659. package/_src/IO.ts +65 -63
  660. package/_src/IOEnv/definition.ts +1 -4
  661. package/_src/Random/definition.ts +1 -0
  662. package/_src/Ref/Synchronized/api.ts +2 -2
  663. package/_src/Ref/Synchronized/definition.ts +1 -1
  664. package/_src/Semaphore/Reservation.ts +15 -0
  665. package/_src/Semaphore/constructors.ts +14 -0
  666. package/_src/Semaphore/definition.ts +180 -0
  667. package/_src/Semaphore.ts +5 -159
  668. package/_src/Stream/api.ts +679 -679
  669. package/package.json +4 -4
  670. package/IO/api/sequenceT.d.ts +0 -26
  671. package/_cjs/IO/api/sequenceT.cjs +0 -18
  672. package/_cjs/IO/api/sequenceT.cjs.map +0 -1
  673. package/_mjs/IO/api/sequenceT.mjs +0 -10
  674. package/_mjs/IO/api/sequenceT.mjs.map +0 -1
  675. package/_src/IO/api/sequenceT.ts +0 -16
@@ -5,9 +5,9 @@ export function addFinalizerExit<R>(
5
5
  finalizer: (exit: Exit<any, any>) => URIO<R, any>,
6
6
  __tsplusTrace?: string,
7
7
  ): IO<R | Scope, never, void> {
8
- return Do((_) => {
9
- const environment = _(IO.environment<R>());
10
- const scope = _(IO.scope);
11
- _(scope.addFinalizerExit(Finalizer.get((exit) => finalizer(exit).provideEnvironment(environment))));
8
+ return Do((Δ) => {
9
+ const environment = Δ(IO.environment<R>());
10
+ const scope = Δ(IO.scope);
11
+ Δ(scope.addFinalizerExit(Finalizer.get((exit) => finalizer(exit).provideEnvironment(environment))));
12
12
  });
13
13
  }
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @tsplus fluent fncts.ReadonlyArray mapIOWithIndexDiscard
3
+ */
4
+ export function foreachArrayWithIndexDiscard<A, R, E>(
5
+ array: ReadonlyArray<A>,
6
+ f: (i: number, a: A) => IO<R, E, unknown>,
7
+ ): IO<R, E, void> {
8
+ return IO.defer(() => {
9
+ let out: IO<R, E, unknown> = IO.unit;
10
+ for (let i = 0; i < array.length; i++) {
11
+ out = out > f(i, array[i]);
12
+ }
13
+ return out;
14
+ });
15
+ }
16
+
17
+ /**
18
+ * @tsplus fluent fncts.ReadonlyArray mapIODiscard
19
+ */
20
+ export function foreachArrayDiscard<A, R, E>(array: ReadonlyArray<A>, f: (a: A) => IO<R, E, unknown>): IO<R, E, void> {
21
+ return array.mapIOWithIndexDiscard((_, a) => f(a));
22
+ }
23
+
24
+ /**
25
+ * @tsplus fluent fncts.ReadonlyArray mapIOWithIndex
26
+ */
27
+ export function foreachArrayWithIndex<A, R, E, B>(
28
+ array: ReadonlyArray<A>,
29
+ f: (i: number, a: A) => IO<R, E, B>,
30
+ ): IO<R, E, Conc<B>> {
31
+ return IO.defer(() => {
32
+ const acc: Array<B> = Array(array.length);
33
+ return array
34
+ .mapIOWithIndexDiscard((i, a) =>
35
+ f(i, a).flatMap((b) => {
36
+ acc[i] = b;
37
+ return IO.unit;
38
+ }),
39
+ )
40
+ .as(Conc.fromArray(acc));
41
+ });
42
+ }
43
+
44
+ /**
45
+ * @tsplus fluent fncts.ReadonlyArray mapIO
46
+ */
47
+ export function foreachArray<A, R, E, B>(array: ReadonlyArray<A>, f: (a: A) => IO<R, E, B>): IO<R, E, Conc<B>> {
48
+ return array.mapIOWithIndex((_, a) => f(a));
49
+ }
@@ -22,7 +22,7 @@ export function asyncInterrupt<R, E, A>(
22
22
  __tsplusTrace?: string,
23
23
  ): IO<R, E, A> {
24
24
  return IO.defer(() => {
25
- let cancelerRef: URIO<R, any> = IO.unit!;
25
+ let cancelerRef: URIO<R, any> = IO.unit;
26
26
  return IO.async<R, E, A>((k) => {
27
27
  const result = register(k);
28
28
  result.match(
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @tsplus getter fncts.io.IO awaitAllChildren
3
+ */
4
+ export function awaitAllChildren<R, E, A>(self: IO<R, E, A>): IO<R, E, A> {
5
+ return self.ensuringChildren(Fiber.awaitAll);
6
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @tsplus pipeable fncts.io.IO cached
3
+ */
4
+ export function cached(timeToLive: Lazy<Duration>, __tsplusTrace?: string) {
5
+ return <R, E, A>(self: IO<R, E, A>): IO<R, never, FIO<E, A>> => {
6
+ return self.cachedInvalidate(timeToLive).map(([get]) => get);
7
+ };
8
+ }
9
+ /**
10
+ * @tsplus pipeable fncts.io.IO cachedInvalidate
11
+ */
12
+ export function cachedInvalidate(timeToLive: Lazy<Duration>, __tsplusTrace?: string) {
13
+ return <R, E, A>(self: IO<R, E, A>): IO<R, never, readonly [FIO<E, A>, UIO<void>]> => {
14
+ return IO.environmentWith((r) => {
15
+ const ttl = timeToLive().milliseconds;
16
+ const cache = Ref.Synchronized.unsafeMake<Maybe<readonly [number, Future<E, A>]>>(Nothing());
17
+
18
+ function compute(start: number): IO<R, never, Maybe<readonly [number, Future<E, A>]>> {
19
+ return Do((Δ) => {
20
+ const f = Δ(Future.make<E, A>());
21
+ Δ(self.fulfill(f));
22
+ return Just([start + ttl, f] as const);
23
+ });
24
+ }
25
+
26
+ const get: IO<R, E, A> = IO.uninterruptibleMask((restore) =>
27
+ Clock.currentTime.flatMap((time) =>
28
+ cache
29
+ .updateJustAndGetIO((m) =>
30
+ m.match(
31
+ () => Just(restore(compute(time))),
32
+ ([end]) => (end - time <= 0 ? Just(restore(compute(time))) : Nothing()),
33
+ ),
34
+ )
35
+ .flatMap((a) => a.getOrThrow[1].await),
36
+ ),
37
+ );
38
+
39
+ return [get.provideEnvironment(r), cache.set(Nothing())];
40
+ });
41
+ };
42
+ }
@@ -1,5 +1,8 @@
1
+ import type { FiberRuntime } from "@fncts/io/Fiber";
2
+
1
3
  import { identity } from "@fncts/base/data/function";
2
4
  import { AtomicNumber } from "@fncts/base/internal/AtomicNumber";
5
+ import { IOPrimitive, IOTag } from "@fncts/io/IO";
3
6
 
4
7
  /**
5
8
  * Applies the function `f` to each element of the `Iterable<A>` and runs
@@ -62,40 +65,53 @@ function foreachConcurrentUnboundedDiscard<R, E, A>(
62
65
  if (size === 0) {
63
66
  return IO.unit;
64
67
  }
68
+ if (size === 1) {
69
+ return f(arr[0]).asUnit;
70
+ }
65
71
  return IO.uninterruptibleMask((restore) => {
66
72
  const future = Future.unsafeMake<void, void>(FiberId.none);
67
73
  const ref = new AtomicNumber(0);
68
74
  return IO.transplant((graft) =>
69
- IO.concurrentFinalizersMask((restoreFinalizers) =>
70
- IO.foreach(
71
- as,
72
- (a) =>
73
- graft(
74
- restore(restoreFinalizers(IO.defer(f(a)))).matchCauseIO(
75
- (cause) => future.fail(undefined).zipRight(IO.failCauseNow(cause)),
76
- () => {
77
- if (ref.incrementAndGet() === size) {
78
- future.unsafeDone(IO.unit);
79
- }
80
- return IO.unit;
81
- },
82
- ),
83
- ).forkDaemon,
84
- ),
75
+ IO.foreach(
76
+ as,
77
+ (a) =>
78
+ graft.graftOnExitWith(restore(f(a)), (exit) =>
79
+ exit.match(
80
+ () => {
81
+ future.unsafeDone(IO.failNow(undefined));
82
+ },
83
+ () => {
84
+ if (ref.incrementAndGet() === size) {
85
+ future.unsafeDone(IO.unit);
86
+ }
87
+ },
88
+ ),
89
+ ).forkDaemon,
85
90
  ),
86
91
  ).flatMap((fibers) =>
87
92
  restore(future.await).matchCauseIO(
88
- (cause) =>
93
+ (cause0) =>
89
94
  foreachConcurrentUnbounded(fibers, (f) => f.interrupt).flatMap((exits) =>
90
- Exit.collectAllConcurrent(exits).match(
91
- () => IO.failCauseNow(cause.stripFailures),
95
+ exits.collectAllConcurrent.match(
96
+ () => IO.failCauseNow(cause0.stripFailures),
92
97
  (exit) =>
93
- exit.isFailure()
94
- ? IO.failCauseNow(Cause.parallel(cause.stripFailures, exit.cause))
95
- : IO.failCauseNow(cause.stripFailures),
98
+ exit.match(
99
+ (cause) => IO.failCauseNow(Cause.parallel(cause0.stripFailures, cause)),
100
+ () => IO.failCauseNow(cause0.stripFailures),
101
+ ),
96
102
  ),
97
103
  ),
98
- () => IO.foreachDiscard(fibers, (fiber) => fiber.inheritRefs),
104
+ () => {
105
+ const it = fibers[Symbol.iterator]();
106
+ let result: IteratorResult<FiberRuntime<E, any>> = it.next();
107
+ return IO.whileLoop(
108
+ () => !result.done,
109
+ () => (result.value as FiberRuntime<E, any>).inheritAll,
110
+ () => {
111
+ result = it.next();
112
+ },
113
+ );
114
+ },
99
115
  ),
100
116
  );
101
117
  });
@@ -51,7 +51,7 @@ export function unsafeFork<R, E, A, E1, B>(
51
51
  trace?: string,
52
52
  ): FiberRuntime<E, A> {
53
53
  const fiber = unsafeMakeChildFiber(effect, parentFiber, parentRuntimeFlags, overrideScope, trace);
54
- fiber.resume(effect);
54
+ fiber.startConcurrently(effect);
55
55
  return fiber;
56
56
  }
57
57
 
@@ -7,6 +7,6 @@ import type { FiberRuntime } from "@fncts/io/Fiber/FiberRuntime";
7
7
  *
8
8
  * @tsplus getter fncts.io.IO forkDaemon
9
9
  */
10
- export function forkDaemon<R, E, A>(ma: IO<R, E, A>, __tsplusTrace?: string): URIO<R, FiberRuntime<E, A>> {
11
- return ma.fork.daemonChildren;
10
+ export function forkDaemon<R, E, A>(self: IO<R, E, A>, __tsplusTrace?: string): URIO<R, FiberRuntime<E, A>> {
11
+ return self.forkWithScopeOverride(FiberScope.global);
12
12
  }
@@ -4,9 +4,9 @@ import type { FiberRefsPatch } from "@fncts/io/FiberRefs";
4
4
  * @tsplus getter fncts.io.IO memoize
5
5
  */
6
6
  export function memoize<R, E, A>(self: IO<R, E, A>, __tsplusTrace?: string): UIO<IO<R, E, A>> {
7
- return Do((_) => {
8
- const future = _(Future.make<E, readonly [FiberRefsPatch, A]>());
9
- const complete = _(self.diffFiberRefs.fulfill(future).once);
7
+ return Do((Δ) => {
8
+ const future = Δ(Future.make<E, readonly [FiberRefsPatch, A]>());
9
+ const complete = Δ(self.diffFiberRefs.fulfill(future).once);
10
10
  return complete > future.await.flatMap(([patch, a]) => IO.patchFiberRefs(patch).as(a));
11
11
  });
12
12
  }
@@ -2,8 +2,8 @@
2
2
  * @tsplus pipeable fncts.io.IO onTermination
3
3
  */
4
4
  export function onTermination<R1>(cleanup: (cause: Cause<never>) => URIO<R1, any>, __tsplusTrace?: string) {
5
- return <R, E, A>(self: Lazy<IO<R, E, A>>): IO<R | R1, E, A> => {
6
- return IO.defer(self).onExit((exit) =>
5
+ return <R, E, A>(self: IO<R, E, A>): IO<R | R1, E, A> => {
6
+ return self.onExit((exit) =>
7
7
  exit.match(
8
8
  (cause) => {
9
9
  if (cause.isFailure) return IO.unit;
@@ -1,5 +1,3 @@
1
- export type Grafter = <R, E, A>(effect: IO<R, E, A>) => IO<R, E, A>;
2
-
3
1
  /**
4
2
  * Transplants specified effects so that when those effects fork other
5
3
  * effects, the forked effects will be governed by the scope of the
@@ -14,6 +12,31 @@ export function transplant<R, E, A>(f: (_: Grafter) => IO<R, E, A>, __tsplusTrac
14
12
  return IO.withFiberRuntime((fiberState) => {
15
13
  const scopeOverride = fiberState.getFiberRef(FiberRef.forkScopeOverride);
16
14
  const scope = scopeOverride.getOrElse(fiberState.scope);
17
- return f(FiberRef.forkScopeOverride.locally(Just(scope)));
15
+ return f(new Grafter(scope));
18
16
  });
19
17
  }
18
+
19
+ export class Grafter {
20
+ constructor(private readonly scope: FiberScope) {}
21
+
22
+ graft = <R, E, A>(io: IO<R, E, A>, __tsplusTrace?: string): IO<R, E, A> =>
23
+ FiberRef.forkScopeOverride.locally(Just(this.scope))(io);
24
+
25
+ graftOnExit = <R, E, A>(io: IO<R, E, A>, __tsplusTrace?: string): IO<R, E, A> =>
26
+ this.graftOnExitWith(io, () => IO.unit);
27
+
28
+ graftOnExitWith = <R, E, A>(
29
+ io: IO<R, E, A>,
30
+ ensuring: (exit: Exit<E, A>) => void,
31
+ __tsplusTrace?: string,
32
+ ): IO<R, E, A> =>
33
+ IO.uninterruptibleMask((restore) =>
34
+ restore(io).exitWith((exit) =>
35
+ IO.withFiberRuntime((fiber) => {
36
+ fiber.transferChildren(this.scope);
37
+ ensuring(exit);
38
+ return exit;
39
+ }),
40
+ ),
41
+ );
42
+ }
@@ -47,11 +47,11 @@ export function zipWithConcurrent<A, R1, E1, B, C>(that: IO<R1, E1, B>, f: (a: A
47
47
  function fork<R, E, A, C>(
48
48
  io: Lazy<IO<R, E, A>>,
49
49
  restore: InterruptibilityRestorer,
50
- graft: Grafter,
50
+ grafter: Grafter,
51
51
  future: Future<void, void>,
52
52
  ref: AtomicBoolean,
53
53
  ): IO<R, never, Fiber<E, A>> {
54
- return graft(restore(io())).matchCauseIO(
54
+ return grafter.graft(restore(io())).matchCauseIO(
55
55
  (cause) => future.fail(undefined) > IO.refailCause(cause),
56
56
  (a) => {
57
57
  if (ref.getAndSet(true)) {