@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
package/_cjs/IO/api.cjs CHANGED
@@ -32,6 +32,7 @@ exports.deferTryCatch = deferTryCatch;
32
32
  exports.either = void 0;
33
33
  exports.errorAsCause = errorAsCause;
34
34
  exports.eventually = void 0;
35
+ exports.exitWith = exitWith;
35
36
  exports.extend = extend;
36
37
  exports.filter = exports.fiberIdWith = exports.fiberId = exports.failNow = exports.failCauseNow = exports.failCause = exports.fail = void 0;
37
38
  exports.filterMap = filterMap;
@@ -99,10 +100,12 @@ exports.orHaltKeep = orHaltKeep;
99
100
  exports.orHaltWith = void 0;
100
101
  exports.partition = partition;
101
102
  exports.refailCause = void 0;
103
+ exports.refailCauseNow = refailCauseNow;
102
104
  exports.refineOrHalt = refineOrHalt;
103
105
  exports.refineOrHaltWith = void 0;
104
106
  exports.reject = reject;
105
- exports.repeatN_ = exports.rejectIO = void 0;
107
+ exports.rejectIO = void 0;
108
+ exports.repeatN_ = repeatN_;
106
109
  exports.repeatUntil = repeatUntil;
107
110
  exports.repeatUntilIO = void 0;
108
111
  exports.repeatWhile = repeatWhile;
@@ -132,66 +135,62 @@ exports.updateFiberRefs = updateFiberRefs;
132
135
  exports.updateRuntimeFlags = updateRuntimeFlags;
133
136
  exports.via = void 0;
134
137
  exports.when = when;
135
- exports.yieldNow = exports.withFiberRuntime = exports.whenIO = void 0;
138
+ exports.yieldNow = exports.withFiberRuntime = exports.whileLoop = exports.whenIO = void 0;
136
139
  exports.zip = zip;
137
140
  exports.zipLeft = zipLeft;
138
141
  exports.zipWith = exports.zipRight = void 0;
139
- var tsplus_module_1 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/FiberId/constructors"));
140
- var tsplus_module_2 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Cause/api"));
141
- var tsplus_module_3 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Maybe/constructors"));
142
+ var tsplus_module_1 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Cause/api"));
143
+ var tsplus_module_2 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Maybe/constructors"));
144
+ var tsplus_module_3 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/FiberId/constructors"));
142
145
  var tsplus_module_4 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Either/destructors"));
143
- var tsplus_module_5 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/util/predicates"));
144
- var tsplus_module_6 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Maybe/api"));
146
+ var tsplus_module_5 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Maybe/api"));
147
+ var tsplus_module_6 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/util/predicates"));
145
148
  var tsplus_module_7 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/RuntimeFlags/RuntimeFlags"));
146
149
  var tsplus_module_8 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/io/InterruptStatus/constructors"));
147
150
  var tsplus_module_9 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Either/constructors"));
148
- var tsplus_module_10 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/Conc/api"));
149
- var tsplus_module_11 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/Iterable/api"));
150
- var tsplus_module_12 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/Conc/constructors"));
151
- var tsplus_module_13 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Maybe/definition"));
152
- var tsplus_module_14 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/control/Eval/run"));
153
- var tsplus_module_15 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Exit/api"));
154
- var tsplus_module_16 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Maybe/destructors"));
151
+ var tsplus_module_10 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Exit/constructors"));
152
+ var tsplus_module_11 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/Conc/api"));
153
+ var tsplus_module_12 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/Iterable/api"));
154
+ var tsplus_module_13 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/Conc/constructors"));
155
+ var tsplus_module_14 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Maybe/definition"));
156
+ var tsplus_module_15 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/control/Eval/run"));
157
+ var tsplus_module_16 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Exit/api"));
158
+ var tsplus_module_17 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Maybe/destructors"));
155
159
  var _exceptions = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/exceptions"));
156
- var tsplus_module_17 = _exceptions;
157
- var tsplus_module_18 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Trace/constructors"));
158
- var tsplus_module_19 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/Conc/api/empty"));
159
- var tsplus_module_20 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/List/api"));
160
- var tsplus_module_21 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/ImmutableArray/constructors"));
161
- var tsplus_module_22 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/ImmutableArray/api"));
162
- var tsplus_module_23 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Exit/constructors"));
160
+ var tsplus_module_18 = _exceptions;
161
+ var tsplus_module_19 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/data/Trace/constructors"));
162
+ var tsplus_module_20 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/Conc/api/empty"));
163
+ var tsplus_module_21 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/List/api"));
164
+ var tsplus_module_22 = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("@fncts/base/collection/immutable/ReadonlyArray/constructors"));
163
165
  var _function = /*#__PURE__*/require("@fncts/base/data/function");
164
166
  var _Showable = /*#__PURE__*/require("@fncts/base/data/Showable");
165
167
  var _definition2 = /*#__PURE__*/require("@fncts/io/IO/definition");
166
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
167
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
168
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
168
169
  const fileName_1 = "(@fncts/io) src/IO/api.ts";
169
- const async = exports.async = async_1;
170
- const zipRight = exports.zipRight = zipRight_1;
171
170
  const as = exports.as = as_1;
172
171
  const asJust = exports.asJust = asJust_1;
173
172
  const asUnit = exports.asUnit = asUnit_1;
174
- const catchTagWith = exports.catchTagWith = catchTagWith_1;
173
+ const async = exports.async = async_1;
175
174
  const catchAll = exports.catchAll = catchAll_1;
176
175
  const catchAllCause = exports.catchAllCause = catchAllCause_1;
177
- const flatMap = exports.flatMap = flatMap_1;
176
+ const catchTagWith = exports.catchTagWith = catchTagWith_1;
178
177
  const collectIO = exports.collectIO = collectIO_1;
179
178
  const defer = exports.defer = defer_1;
180
179
  const either = exports.either = either_1;
181
180
  const eventually = exports.eventually = eventually_1;
182
181
  const fail = exports.fail = fail_1;
183
- const failNow = exports.failNow = failNow_1;
184
- const refailCause = exports.refailCause = refailCause_1;
185
- const failCauseNow = exports.failCauseNow = failCauseNow_1;
186
182
  const failCause = exports.failCause = failCause_1;
183
+ const failCauseNow = exports.failCauseNow = failCauseNow_1;
184
+ const failNow = exports.failNow = failNow_1;
187
185
  const fiberIdWith = exports.fiberIdWith = fiberIdWith_1;
188
186
  const filter = exports.filter = filter_1;
189
187
  const filterMapWithIndex = exports.filterMapWithIndex = filterMapWithIndex_1;
190
188
  const filterOrElse = exports.filterOrElse = filterOrElse_1;
189
+ const flatMap = exports.flatMap = flatMap_1;
191
190
  const foldLeft = exports.foldLeft = foldLeft_1;
192
191
  const foreach = exports.foreach = foreach_1;
193
- const foreachWithIndexDiscard = exports.foreachWithIndexDiscard = foreachWithIndexDiscard_1;
194
192
  const foreachDiscard = exports.foreachDiscard = foreachDiscard_1;
193
+ const foreachWithIndexDiscard = exports.foreachWithIndexDiscard = foreachWithIndexDiscard_1;
195
194
  const forever = exports.forever = forever_1;
196
195
  const fromPromiseCatch = exports.fromPromiseCatch = fromPromiseCatch_1;
197
196
  const getOrFailWith = exports.getOrFailWith = getOrFailWith_1;
@@ -203,21 +202,21 @@ const loop = exports.loop = loop_1;
203
202
  const map = exports.map = map_1;
204
203
  const mapError = exports.mapError = mapError_1;
205
204
  const mapErrorCause = exports.mapErrorCause = mapErrorCause_1;
205
+ const match = exports.match = match_1;
206
206
  const matchCauseIO = exports.matchCauseIO = matchCauseIO_1;
207
207
  const matchIO = exports.matchIO = matchIO_1;
208
- const match = exports.match = match_1;
208
+ const refailCause = exports.refailCause = refailCause_1;
209
209
  const orElse = exports.orElse = orElse_1;
210
210
  const orHaltWith = exports.orHaltWith = orHaltWith_1;
211
211
  const refineOrHaltWith = exports.refineOrHaltWith = refineOrHaltWith_1;
212
212
  const rejectIO = exports.rejectIO = rejectIO_1;
213
- const repeatN_ = exports.repeatN_ = repeatN_1;
214
213
  const repeatUntilIO = exports.repeatUntilIO = repeatUntilIO_1;
215
214
  const repeatWhileIO = exports.repeatWhileIO = repeatWhileIO_1;
216
215
  const retryUntilIO = exports.retryUntilIO = retryUntilIO_1;
217
216
  const retryWhileIO = exports.retryWhileIO = retryWhileIO_1;
218
217
  const sandbox = exports.sandbox = sandbox_1;
219
- const succeedNow = exports.succeedNow = succeedNow_1;
220
218
  const succeed = exports.succeed = succeed_1;
219
+ const succeedNow = exports.succeedNow = succeedNow_1;
221
220
  const summarized = exports.summarized = summarized_1;
222
221
  const swap = exports.swap = swap_1;
223
222
  const swapWith = exports.swapWith = swapWith_1;
@@ -225,23 +224,13 @@ const tryCatch = exports.tryCatch = tryCatch_1;
225
224
  const tryOrElse = exports.tryOrElse = tryOrElse_1;
226
225
  const unrefineWith = exports.unrefineWith = unrefineWith_1;
227
226
  const unsandbox = exports.unsandbox = unsandbox_1;
227
+ const stackTrace = exports.stackTrace = stackTrace_1;
228
228
  const whenIO = exports.whenIO = whenIO_1;
229
+ const whileLoop = exports.whileLoop = whileLoop_1;
229
230
  const withFiberRuntime = exports.withFiberRuntime = withFiberRuntime_1;
230
- const stackTrace = exports.stackTrace = stackTrace_1;
231
+ const zipRight = exports.zipRight = zipRight_1;
231
232
  const zipWith = exports.zipWith = zipWith_1;
232
233
  const gen = exports.gen = gen_1;
233
- /**
234
- * Imports an asynchronous side-effect into a `IO`
235
- *
236
- * @tsplus static fncts.io.IOOps async
237
- */
238
- function async_1(register, blockingOn = tsplus_module_1.none, __tsplusTrace) {
239
- const io = new _definition2.IOPrimitive(3 /* IOTag.Async */);
240
- io.i0 = register;
241
- io.i1 = () => blockingOn;
242
- io.trace = __tsplusTrace;
243
- return io;
244
- }
245
234
  /**
246
235
  * Attempts to convert defects into a failure, throwing away all information
247
236
  * about the cause of the failure.
@@ -249,27 +238,7 @@ function async_1(register, blockingOn = tsplus_module_1.none, __tsplusTrace) {
249
238
  * @tsplus pipeable fncts.io.IO absorbWith
250
239
  */
251
240
  function absorbWith(f, __tsplusTrace) {
252
- return ma => matchIO_1(cause => failNow_1(tsplus_module_2.squashWith(f)(cause), __tsplusTrace), succeedNow_1, __tsplusTrace)(sandbox_1(ma, __tsplusTrace));
253
- }
254
- /**
255
- * @tsplus pipeable fncts.io.IO zipLeft
256
- * @tsplus pipeable-operator fncts.io.IO <
257
- */
258
- function zipLeft(fb, __tsplusTrace) {
259
- return self => {
260
- return flatMap_1(a => map_1(() => a, __tsplusTrace)(fb), __tsplusTrace)(self);
261
- };
262
- }
263
- /**
264
- * Combine two effectful actions, keeping only the result of the second
265
- *
266
- * @tsplus pipeable fncts.io.IO zipRight
267
- * @tsplus pipeable-operator fncts.io.IO >
268
- */
269
- function zipRight_1(fb, __tsplusTrace) {
270
- return self => {
271
- return flatMap_1(() => fb, __tsplusTrace)(self);
272
- };
241
+ return ma => matchIO_1(cause => failNow_1(tsplus_module_1.squashWith(f)(cause), __tsplusTrace), succeedNow_1, __tsplusTrace)(sandbox_1(ma, __tsplusTrace));
273
242
  }
274
243
  /**
275
244
  * @tsplus pipeable fncts.io.IO as
@@ -284,16 +253,16 @@ function as_1(b, __tsplusTrace) {
284
253
  *
285
254
  * @tsplus getter fncts.io.IO asJust
286
255
  */
287
- function asJust_1(ma, __tsplusTrace) {
288
- return map_1(tsplus_module_3.just, __tsplusTrace)(ma);
256
+ function asJust_1(self, __tsplusTrace) {
257
+ return map_1(tsplus_module_2.just, __tsplusTrace)(self);
289
258
  }
290
259
  /**
291
260
  * Maps the error value of this IO to an optional value.
292
261
  *
293
262
  * @tsplus getter fncts.io.IO asJustError
294
263
  */
295
- function asJustError(ma, __tsplusTrace) {
296
- return mapError_1(tsplus_module_3.just, __tsplusTrace)(ma);
264
+ function asJustError(self, __tsplusTrace) {
265
+ return mapError_1(tsplus_module_2.just, __tsplusTrace)(self);
297
266
  }
298
267
  /**
299
268
  * @tsplus getter fncts.io.IO asUnit
@@ -301,15 +270,27 @@ function asJustError(ma, __tsplusTrace) {
301
270
  function asUnit_1(self, __tsplusTrace) {
302
271
  return as_1(() => undefined, __tsplusTrace)(self);
303
272
  }
273
+ /**
274
+ * Imports an asynchronous side-effect into a `IO`
275
+ *
276
+ * @tsplus static fncts.io.IOOps async
277
+ */
278
+ function async_1(register, blockingOn = tsplus_module_3.none, __tsplusTrace) {
279
+ const io = new _definition2.IOPrimitive(3 /* IOTag.Async */);
280
+ io.i0 = register;
281
+ io.i1 = () => blockingOn;
282
+ io.trace = __tsplusTrace;
283
+ return io;
284
+ }
304
285
  /**
305
286
  * Returns an IO whose failure and success channels have been mapped by
306
287
  * the specified pair of functions, `f` and `g`.
307
288
  *
308
289
  * @tsplus pipeable fncts.io.IO bimap
309
290
  */
310
- function bimap(f, g, __tsplusTrace) {
291
+ function bimap(onFailure, onSuccess, __tsplusTrace) {
311
292
  return self => {
312
- return matchIO_1(e => failNow_1(f(e), __tsplusTrace), a => succeedNow_1(g(a), __tsplusTrace), __tsplusTrace)(self);
293
+ return matchIO_1(e => failNow_1(onFailure(e), __tsplusTrace), a => succeedNow_1(onSuccess(a), __tsplusTrace), __tsplusTrace)(self);
313
294
  };
314
295
  }
315
296
  /**
@@ -320,22 +301,7 @@ function bimap(f, g, __tsplusTrace) {
320
301
  */
321
302
  function bitap(onFailure, onSuccess, __tsplusTrace) {
322
303
  return self => {
323
- return matchCauseIO_1(cause => tsplus_module_4.match(e => flatMap_1(() => failCauseNow_1(cause, __tsplusTrace), __tsplusTrace)(onFailure(e)), () => failCauseNow_1(cause, __tsplusTrace))(tsplus_module_2.failureOrCause(cause)), a => zipRight_1(succeedNow_1(a, __tsplusTrace), __tsplusTrace)(onSuccess(a)), __tsplusTrace)(self);
324
- };
325
- }
326
- /**
327
- * Recovers from the specified error
328
- *
329
- * @tsplus pipeable fncts.io.IO catch
330
- */
331
- function catchTagWith_1(tag, k, f, __tsplusTrace) {
332
- return ma => {
333
- return catchAll_1(e => {
334
- if (tsplus_module_5.isObject(e) && tag in e && e[tag] === k) {
335
- return f(e);
336
- }
337
- return failNow_1(e, __tsplusTrace);
338
- }, __tsplusTrace)(ma);
304
+ return matchCauseIO_1(cause => tsplus_module_4.match(e => flatMap_1(() => failCauseNow_1(cause, __tsplusTrace), __tsplusTrace)(onFailure(e)), () => failCauseNow_1(cause, __tsplusTrace))(tsplus_module_1.failureOrCause(cause)), a => zipRight_1(succeedNow_1(a, __tsplusTrace), __tsplusTrace)(onSuccess(a)), __tsplusTrace)(self);
339
305
  };
340
306
  }
341
307
  /**
@@ -343,9 +309,9 @@ function catchTagWith_1(tag, k, f, __tsplusTrace) {
343
309
  *
344
310
  * @tsplus pipeable fncts.io.IO catchAll
345
311
  */
346
- function catchAll_1(f, __tsplusTrace) {
347
- return ma => {
348
- return matchIO_1(f, succeedNow_1, __tsplusTrace)(ma);
312
+ function catchAll_1(onFailure, __tsplusTrace) {
313
+ return self => {
314
+ return matchIO_1(onFailure, succeedNow_1, __tsplusTrace)(self);
349
315
  };
350
316
  }
351
317
  /**
@@ -354,17 +320,17 @@ function catchAll_1(f, __tsplusTrace) {
354
320
  *
355
321
  * @tsplus pipeable fncts.io.IO catchAllCause
356
322
  */
357
- function catchAllCause_1(f, __tsplusTrace) {
358
- return ma => matchCauseIO_1(f, succeedNow_1, __tsplusTrace)(ma);
323
+ function catchAllCause_1(onFailure, __tsplusTrace) {
324
+ return self => matchCauseIO_1(onFailure, succeedNow_1, __tsplusTrace)(self);
359
325
  }
360
326
  /**
361
327
  * Recovers from some or all of the error cases.
362
328
  *
363
329
  * @tsplus pipeable fncts.io.IO catchJust
364
330
  */
365
- function catchJust(f, __tsplusTrace) {
366
- return ma => {
367
- return matchCauseIO_1(cause => tsplus_module_4.match(e => tsplus_module_6.getOrElse(() => failCauseNow_1(cause, __tsplusTrace))(f(e)), failCauseNow_1)(tsplus_module_2.failureOrCause(cause)), succeedNow_1, __tsplusTrace)(ma);
331
+ function catchJust(onFailure, __tsplusTrace) {
332
+ return self => {
333
+ return matchCauseIO_1(cause => tsplus_module_4.match(e => tsplus_module_5.getOrElse(() => failCauseNow_1(cause, __tsplusTrace))(onFailure(e)), failCauseNow_1)(tsplus_module_1.failureOrCause(cause)), succeedNow_1, __tsplusTrace)(self);
368
334
  };
369
335
  }
370
336
  /**
@@ -372,9 +338,9 @@ function catchJust(f, __tsplusTrace) {
372
338
  *
373
339
  * @tsplus pipeable fncts.io.IO catchJustCause
374
340
  */
375
- function catchJustCause(f, __tsplusTrace) {
376
- return ma => {
377
- return matchCauseIO_1(cause => tsplus_module_6.getOrElse(() => failCauseNow_1(cause, __tsplusTrace))(f(cause)), succeedNow_1, __tsplusTrace)(ma);
341
+ function catchJustCause(onFailure, __tsplusTrace) {
342
+ return self => {
343
+ return matchCauseIO_1(cause => tsplus_module_5.getOrElse(() => failCauseNow_1(cause, __tsplusTrace))(onFailure(cause)), succeedNow_1, __tsplusTrace)(self);
378
344
  };
379
345
  }
380
346
  /**
@@ -387,9 +353,9 @@ function catchJustCause(f, __tsplusTrace) {
387
353
  *
388
354
  * @tsplus pipeable fncts.io.IO catchJustDefect
389
355
  */
390
- function catchJustDefect(f, __tsplusTrace) {
391
- return ma => {
392
- return catchAll_1(a => a, __tsplusTrace)(unrefineWith_1(f, failNow_1, __tsplusTrace)(ma));
356
+ function catchJustDefect(onFailure, __tsplusTrace) {
357
+ return self => {
358
+ return catchAll_1(a => a, __tsplusTrace)(unrefineWith_1(onFailure, failNow_1, __tsplusTrace)(self));
393
359
  };
394
360
  }
395
361
  /**
@@ -397,23 +363,38 @@ function catchJustDefect(f, __tsplusTrace) {
397
363
  *
398
364
  * @tsplus pipeable IO catchTag
399
365
  */
400
- function catchTag(k, f, __tsplusTrace) {
401
- return ma => {
402
- return catchTagWith_1("_tag", k, f, __tsplusTrace)(ma);
366
+ function catchTag(tag, onFailure, __tsplusTrace) {
367
+ return self => {
368
+ return catchTagWith_1("_tag", tag, onFailure, __tsplusTrace)(self);
369
+ };
370
+ }
371
+ /**
372
+ * Recovers from the specified error
373
+ *
374
+ * @tsplus pipeable fncts.io.IO catch
375
+ */
376
+ function catchTagWith_1(tagKey, tag, onFailure, __tsplusTrace) {
377
+ return self => {
378
+ return catchAll_1(e => {
379
+ if (tsplus_module_6.isObject(e) && tagKey in e && e[tagKey] === tag) {
380
+ return onFailure(e);
381
+ }
382
+ return failNow_1(e, __tsplusTrace);
383
+ }, __tsplusTrace)(self);
403
384
  };
404
385
  }
405
386
  /**
406
387
  * @tsplus getter fncts.io.IO cause
407
388
  */
408
- function cause(ma, __tsplusTrace) {
409
- return matchCauseIO_1(succeedNow_1, () => succeedNow_1(tsplus_module_2.empty(), __tsplusTrace), __tsplusTrace)(ma);
389
+ function cause(self, __tsplusTrace) {
390
+ return matchCauseIO_1(succeedNow_1, () => succeedNow_1(tsplus_module_1.empty(), __tsplusTrace), __tsplusTrace)(self);
410
391
  }
411
392
  /**
412
393
  * @tsplus pipeable fncts.io.IO causeAsError
413
394
  */
414
395
  function causeAsError(__tsplusTrace) {
415
- return ma => {
416
- return matchCauseIO_1(failNow_1, succeedNow_1, __tsplusTrace)(ma);
396
+ return self => {
397
+ return matchCauseIO_1(failNow_1, succeedNow_1, __tsplusTrace)(self);
417
398
  };
418
399
  }
419
400
  /**
@@ -425,46 +406,28 @@ function causeAsError(__tsplusTrace) {
425
406
  function checkInterruptible(f, __tsplusTrace) {
426
407
  return withFiberRuntime_1((_, status) => f(tsplus_module_8.fromBoolean(tsplus_module_7.interruption(status.runtimeFlags))), __tsplusTrace);
427
408
  }
428
- /**
429
- * Returns an IO that models the execution of this effect, followed by
430
- * the passing of its value to the specified continuation function `f`,
431
- * followed by the effect that it returns.
432
- *
433
- * @tsplus pipeable fncts.io.IO flatMap
434
- */
435
- function flatMap_1(f, __tsplusTrace) {
436
- return ma => {
437
- const io = new _definition2.IOPrimitive(5 /* IOTag.OnSuccess */);
438
- io.i0 = ma;
439
- io.i1 = f;
440
- io.trace = __tsplusTrace;
441
- return io;
442
- };
443
- }
444
- /**
445
- * @tsplus pipeable fncts.io.IO flatMapError
446
- */
447
- function flatMapError(f, __tsplusTrace) {
448
- return ma => {
449
- return swapWith_1(effect => flatMap_1(f, __tsplusTrace)(effect), __tsplusTrace)(ma);
450
- };
451
- }
452
409
  /**
453
410
  * @tsplus pipeable fncts.io.IO collect
454
411
  */
455
412
  function collect(f, pf, __tsplusTrace) {
456
- return ma => {
457
- return collectIO_1(f, a => tsplus_module_6.map(succeedNow_1)(pf(a)), __tsplusTrace)(ma);
413
+ return self => {
414
+ return collectIO_1(f, a => tsplus_module_5.map(succeedNow_1)(pf(a)), __tsplusTrace)(self);
458
415
  };
459
416
  }
460
417
  /**
461
418
  * @tsplus pipeable fncts.io.IO collectIO
462
419
  */
463
- function collectIO_1(f, pf, __tsplusTrace) {
464
- return ma => {
465
- return flatMap_1(a => tsplus_module_6.getOrElse(() => fail_1(f, __tsplusTrace))(pf(a)), __tsplusTrace)(ma);
420
+ function collectIO_1(onNothing, pf, __tsplusTrace) {
421
+ return self => {
422
+ return flatMap_1(a => tsplus_module_5.getOrElse(() => fail_1(onNothing, __tsplusTrace))(pf(a)), __tsplusTrace)(self);
466
423
  };
467
424
  }
425
+ /**
426
+ * @tsplus static fncts.io.IOOps if
427
+ */
428
+ function cond(b, onTrue, onFalse, __tsplusTrace) {
429
+ return ifIO_1(onTrue, onFalse, __tsplusTrace)(succeedNow_1(b, __tsplusTrace));
430
+ }
468
431
  /**
469
432
  * @tsplus static fncts.io.IOOps condIO
470
433
  */
@@ -480,7 +443,11 @@ function condIO(b, onTrue, onFalse, __tsplusTrace) {
480
443
  * @tsplus static fncts.io.IOOps defer
481
444
  */
482
445
  function defer_1(io, __tsplusTrace) {
483
- return flatMap_1(_function.identity, __tsplusTrace)(succeed_1(io, __tsplusTrace));
446
+ const out = new _definition2.IOPrimitive(5 /* IOTag.OnSuccess */);
447
+ out.i0 = unit_1;
448
+ out.i1 = io;
449
+ out.trace = __tsplusTrace;
450
+ return out;
484
451
  }
485
452
  /**
486
453
  * Returns a lazily constructed effect, whose construction may itself require effects.
@@ -493,7 +460,7 @@ function deferTry(io, __tsplusTrace) {
493
460
  try {
494
461
  return io();
495
462
  } catch (u) {
496
- throw new _exceptions.IOError(tsplus_module_2.fail(u));
463
+ throw new _exceptions.IOError(tsplus_module_1.fail(u));
497
464
  }
498
465
  }, __tsplusTrace);
499
466
  }
@@ -510,7 +477,7 @@ function deferTryCatch(io, onThrow, __tsplusTrace) {
510
477
  try {
511
478
  return io();
512
479
  } catch (u) {
513
- throw new _exceptions.IOError(tsplus_module_2.fail(onThrow(u)));
480
+ throw new _exceptions.IOError(tsplus_module_1.fail(onThrow(u)));
514
481
  }
515
482
  }, __tsplusTrace);
516
483
  }
@@ -519,51 +486,52 @@ function deferTryCatch(io, onThrow, __tsplusTrace) {
519
486
  *
520
487
  * @tsplus getter fncts.io.IO either
521
488
  */
522
- function either_1(ma, __tsplusTrace) {
523
- return match_1(tsplus_module_9.left, tsplus_module_9.right, __tsplusTrace)(ma);
489
+ function either_1(self, __tsplusTrace) {
490
+ return match_1(tsplus_module_9.left, tsplus_module_9.right, __tsplusTrace)(self);
524
491
  }
525
492
  /**
526
493
  * @tsplus pipeable fncts.io.IO errorAsCause
527
494
  */
528
495
  function errorAsCause(__tsplusTrace) {
529
- return ma => {
530
- return matchIO_1(failCauseNow_1, succeedNow_1, __tsplusTrace)(ma);
496
+ return self => {
497
+ return matchIO_1(failCauseNow_1, succeedNow_1, __tsplusTrace)(self);
531
498
  };
532
499
  }
533
500
  /**
534
501
  * @tsplus getter fncts.io.IO eventually
535
502
  */
536
- function eventually_1(ma, __tsplusTrace) {
537
- return orElse_1(() => eventually_1(ma, __tsplusTrace), __tsplusTrace)(ma);
503
+ function eventually_1(self, __tsplusTrace) {
504
+ return orElse_1(() => eventually_1(self, __tsplusTrace), __tsplusTrace)(self);
505
+ }
506
+ /**
507
+ * @tsplus pipeable fncts.io.IO exitWith
508
+ */
509
+ function exitWith(f, __tsplusTrace) {
510
+ return self => {
511
+ return matchCauseIO_1(cause => f(tsplus_module_10.failCause(cause, __tsplusTrace)), a => f(tsplus_module_10.succeed(a, __tsplusTrace)), __tsplusTrace)(self);
512
+ };
538
513
  }
539
514
  /**
540
515
  * @tsplus pipeable fncts.io.IO extend
541
516
  */
542
517
  function extend(f, __tsplusTrace) {
543
- return wa => {
544
- return matchIO_1(failNow_1, _ => succeed_1(() => f(wa), __tsplusTrace), __tsplusTrace)(wa);
518
+ return self => {
519
+ return matchIO_1(failNow_1, _ => succeed_1(() => f(self), __tsplusTrace), __tsplusTrace)(self);
545
520
  };
546
521
  }
547
522
  /**
548
523
  * @tsplus static fncts.io.IOOps fail
549
524
  */
550
525
  function fail_1(e, __tsplusTrace) {
551
- return failCause_1(() => tsplus_module_2.fail(e()), __tsplusTrace);
552
- }
553
- /**
554
- * @tsplus static fncts.io.IOOps failNow
555
- */
556
- function failNow_1(e, __tsplusTrace) {
557
- return failCause_1(() => tsplus_module_2.fail(e), __tsplusTrace);
526
+ return failCause_1(() => tsplus_module_1.fail(e()), __tsplusTrace);
558
527
  }
559
528
  /**
560
- * @tsplus static fncts.io.IOOps refailCause
529
+ * Returns an effect that models failure with the specified lazily-evaluated `Cause`.
530
+ *
531
+ * @tsplus static fncts.io.IOOps failCause
561
532
  */
562
- function refailCause_1(cause, __tsplusTrace) {
563
- const io = new _definition2.IOPrimitive(1 /* IOTag.Fail */);
564
- io.i0 = () => cause;
565
- io.trace = __tsplusTrace;
566
- return io;
533
+ function failCause_1(cause, __tsplusTrace) {
534
+ return flatMap_1(trace => refailCause_1(() => tsplus_module_1.traced(cause(), trace), __tsplusTrace), __tsplusTrace)(stackTrace_1(__tsplusTrace));
567
535
  }
568
536
  /**
569
537
  * Creates a `IO` that has failed with the specified `Cause`
@@ -577,24 +545,22 @@ function failCauseNow_1(cause, __tsplusTrace) {
577
545
  return io;
578
546
  }
579
547
  /**
580
- * Returns an effect that models failure with the specified lazily-evaluated `Cause`.
581
- *
582
- * @tsplus static fncts.io.IOOps failCause
548
+ * @tsplus static fncts.io.IOOps failNow
583
549
  */
584
- function failCause_1(cause, __tsplusTrace) {
585
- return flatMap_1(trace => refailCause_1(tsplus_module_2.traced(cause(), trace), __tsplusTrace), __tsplusTrace)(stackTrace_1(__tsplusTrace));
550
+ function failNow_1(e, __tsplusTrace) {
551
+ return failCause_1(() => tsplus_module_1.fail(e), __tsplusTrace);
586
552
  }
587
553
  /**
588
554
  * Returns the `FiberId` of the `Fiber` on which this `IO` is running
589
555
  *
590
556
  * @tsplus static fncts.io.IOOps fiberId
591
557
  */
592
- const fiberId = exports.fiberId = /*#__PURE__*/fiberIdWith_1(id => succeedNow_1(id, fileName_1 + ":503:87"));
558
+ const fiberId = exports.fiberId = /*#__PURE__*/fiberIdWith_1(id => succeedNow_1(id, fileName_1 + ":435:87"));
593
559
  /**
594
560
  * @tsplus static fncts.io.IOOps fiberIdWith
595
561
  */
596
562
  function fiberIdWith_1(f) {
597
- return withFiberRuntime_1(fiber => f(fiber.id), fileName_1 + ":509:29");
563
+ return withFiberRuntime_1(fiber => f(fiber.id), fileName_1 + ":441:29");
598
564
  }
599
565
  /**
600
566
  * Filters the collection using the specified effectual predicate.
@@ -602,7 +568,7 @@ function fiberIdWith_1(f) {
602
568
  * @tsplus static fncts.io.IOOps filter
603
569
  */
604
570
  function filter_1(as, f, __tsplusTrace) {
605
- return map_1(b => b.result(), __tsplusTrace)(tsplus_module_11.foldLeft(succeedNow_1(tsplus_module_10.builder(), __tsplusTrace), (eff, a) => zipWith_1(f(a), (builder, p) => {
571
+ return map_1(b => b.result(), __tsplusTrace)(tsplus_module_12.foldLeft(succeedNow_1(tsplus_module_11.builder(), __tsplusTrace), (eff, a) => zipWith_1(f(a), (builder, p) => {
606
572
  if (p) {
607
573
  builder.append(a);
608
574
  }
@@ -621,8 +587,8 @@ function filterMap(as, f, __tsplusTrace) {
621
587
  function filterMapWithIndex_1(as, f, __tsplusTrace) {
622
588
  return defer_1(() => {
623
589
  const bs = [];
624
- return as_1(() => tsplus_module_12.from(bs), __tsplusTrace)(foreachWithIndexDiscard_1(as, (i, a) => map_1(b => {
625
- if (tsplus_module_13.isJust(b)) {
590
+ return as_1(() => tsplus_module_13.from(bs), __tsplusTrace)(foreachWithIndexDiscard_1(as, (i, a) => map_1(b => {
591
+ if (tsplus_module_14.isJust(b)) {
626
592
  bs.push(b.value);
627
593
  }
628
594
  }, __tsplusTrace)(f(i, a)), __tsplusTrace));
@@ -647,18 +613,42 @@ function filterOrFail(predicate, failWith, __tsplusTrace) {
647
613
  return filterOrElse_1(predicate, a => failNow_1(failWith(a), __tsplusTrace), __tsplusTrace)(fa);
648
614
  };
649
615
  }
616
+ function filterOrHalt(predicate, haltWith, __tsplusTrace) {
617
+ return fa => {
618
+ return filterOrElse_1(predicate, a => haltNow_1(haltWith(a), __tsplusTrace), __tsplusTrace)(fa);
619
+ };
620
+ }
650
621
  /**
651
622
  * Returns an `IO` that yields the value of the first
652
623
  * `IO` to succeed.
653
624
  *
654
625
  * @tsplus static fncts.io.IOOps firstSuccess
655
626
  */
656
- function firstSuccess(mas, __tsplusTrace) {
657
- return mas.reduce((b, a) => orElse_1(() => a, __tsplusTrace)(b));
627
+ function firstSuccess(ios, __tsplusTrace) {
628
+ return ios.reduce((b, a) => orElse_1(() => a, __tsplusTrace)(b));
658
629
  }
659
- function filterOrHalt(predicate, haltWith, __tsplusTrace) {
660
- return fa => {
661
- return filterOrElse_1(predicate, a => haltNow_1(haltWith(a), __tsplusTrace), __tsplusTrace)(fa);
630
+ /**
631
+ * Returns an IO that models the execution of this effect, followed by
632
+ * the passing of its value to the specified continuation function `f`,
633
+ * followed by the effect that it returns.
634
+ *
635
+ * @tsplus pipeable fncts.io.IO flatMap
636
+ */
637
+ function flatMap_1(f, __tsplusTrace) {
638
+ return self => {
639
+ const io = new _definition2.IOPrimitive(5 /* IOTag.OnSuccess */);
640
+ io.i0 = self;
641
+ io.i1 = f;
642
+ io.trace = __tsplusTrace;
643
+ return io;
644
+ };
645
+ }
646
+ /**
647
+ * @tsplus pipeable fncts.io.IO flatMapError
648
+ */
649
+ function flatMapError(f, __tsplusTrace) {
650
+ return self => {
651
+ return swapWith_1(effect => flatMap_1(f, __tsplusTrace)(effect), __tsplusTrace)(self);
662
652
  };
663
653
  }
664
654
  /**
@@ -671,33 +661,32 @@ function flatten(self, __tsplusTrace) {
671
661
  * Folds an `Iterable<A>` using an effectful function f, working sequentially from left to right.
672
662
  *
673
663
  * @tsplus static fncts.io.IOOps foldLeft
664
+ * @tsplus fluent fncts.Iterable foldLeftIO
674
665
  */
675
666
  function foldLeft_1(as, b, f, __tsplusTrace) {
676
- return tsplus_module_11.foldLeft(succeedNow_1(b, __tsplusTrace), (acc, el) => flatMap_1(a => f(a, el), __tsplusTrace)(acc))(as);
667
+ return tsplus_module_12.foldLeft(succeedNow_1(b, __tsplusTrace), (acc, el) => flatMap_1(a => f(a, el), __tsplusTrace)(acc))(as);
677
668
  }
678
669
  /**
679
670
  * Combines an array of `IO`s using a `Monoid`
680
671
  *
681
672
  * @tsplus static fncts.io.IOOps foldMap
673
+ * @tsplus fluent fncts.Iterable foldMapIO
682
674
  */
683
- function foldMap(as, f, /** @tsplus auto */M) {
684
- return foldLeft_1(as, M.nat, (m, a) => map_1(a => M.combine(f(a))(m), fileName_1 + ":683:48")(a), fileName_1 + ":683:21");
685
- }
686
- function foldRightLoop(iterator, b, f, __tsplusTrace) {
687
- const next = iterator.next();
688
- return next.done ? b : f(next.value, foldRightLoop(iterator, b, f, __tsplusTrace));
675
+ function foldMap(ios, f, /** @tsplus auto */M) {
676
+ return foldLeft_1(ios, M.nat, (m, a) => map_1(a => M.combine(f(a))(m), fileName_1 + ":645:49")(a), fileName_1 + ":645:21");
689
677
  }
690
678
  /**
691
679
  * Performs a right-associative fold of an `Iterable<A>`
692
680
  *
693
681
  * @tsplus static fncts.io.IOOps foldRight
682
+ * @tsplus fluent fncts.Iterable foldRightIO
694
683
  */
695
684
  function foldRight(as, b, f, __tsplusTrace) {
696
685
  return foldRightLoop(as[Symbol.iterator](), b, f, __tsplusTrace);
697
686
  }
698
- function foreachWithIndexDiscardLoop(iterator, f, i = 0, __tsplusTrace) {
687
+ function foldRightLoop(iterator, b, f, __tsplusTrace) {
699
688
  const next = iterator.next();
700
- return next.done ? unit_1 : flatMap_1(() => foreachWithIndexDiscardLoop(iterator, f, i + 1, __tsplusTrace), __tsplusTrace)(f(i, next.value));
689
+ return next.done ? b : f(next.value, foldRightLoop(iterator, b, f, __tsplusTrace));
701
690
  }
702
691
  /**
703
692
  * Applies the function `f` to each element of the `Iterable<A>` and
@@ -707,16 +696,27 @@ function foreachWithIndexDiscardLoop(iterator, f, i = 0, __tsplusTrace) {
707
696
  * If you do not need the results, see `foreachUnit` for a more efficient implementation.
708
697
  *
709
698
  * @tsplus static fncts.io.IOOps foreach
699
+ * @tsplus fluent fncts.Iterable foreachIO
710
700
  */
711
701
  function foreach_1(as, f, __tsplusTrace) {
712
702
  return defer_1(() => {
713
703
  const acc = [];
714
- return as_1(() => tsplus_module_12.from(acc), __tsplusTrace)(foreachWithIndexDiscard_1(as, (_, a) => flatMap_1(b => {
704
+ return as_1(() => tsplus_module_13.from(acc), __tsplusTrace)(foreachWithIndexDiscard_1(as, (_, a) => flatMap_1(b => {
715
705
  acc.push(b);
716
706
  return unit_1;
717
707
  }, __tsplusTrace)(f(a)), __tsplusTrace));
718
708
  }, __tsplusTrace);
719
709
  }
710
+ /**
711
+ * Applies the function `f` to each element of the `Iterable<A>` and runs
712
+ * produced IOs sequentially.
713
+ *
714
+ * @tsplus static fncts.io.IOOps foreachDiscard
715
+ * @tsplus fluent fncts.Iterable foreachDiscardIO
716
+ */
717
+ function foreachDiscard_1(as, f, __tsplusTrace) {
718
+ return defer_1(() => foreachWithIndexDiscardLoop(as[Symbol.iterator](), (_, a) => f(a)), __tsplusTrace);
719
+ }
720
720
  /**
721
721
  * Applies the function `f` to each element of the `Iterable<A>` and
722
722
  * returns the results in a new `Conc<B>`.
@@ -725,11 +725,12 @@ function foreach_1(as, f, __tsplusTrace) {
725
725
  * If you do not need the results, see `foreachUnit` for a more efficient implementation.
726
726
  *
727
727
  * @tsplus static fncts.io.IOOps foreachWithIndex
728
+ * @tsplus fluent fncts.Iterable foreachWithIndexIO
728
729
  */
729
730
  function foreachWithIndex(as, f, __tsplusTrace) {
730
731
  return defer_1(() => {
731
732
  const acc = [];
732
- return as_1(() => tsplus_module_12.from(acc), __tsplusTrace)(foreachWithIndexDiscard_1(as, (i, a) => flatMap_1(b => {
733
+ return as_1(() => tsplus_module_13.from(acc), __tsplusTrace)(foreachWithIndexDiscard_1(as, (i, a) => flatMap_1(b => {
733
734
  acc.push(b);
734
735
  return unit_1;
735
736
  }, __tsplusTrace)(f(i, a)), __tsplusTrace));
@@ -737,18 +738,14 @@ function foreachWithIndex(as, f, __tsplusTrace) {
737
738
  }
738
739
  /**
739
740
  * @tsplus static fncts.io.IOOps foreachWithIndexDiscard
741
+ * @tsplus fluent fncts.Iterable foreachWithIndexDiscardIO
740
742
  */
741
743
  function foreachWithIndexDiscard_1(as, f, __tsplusTrace) {
742
744
  return defer_1(() => foreachWithIndexDiscardLoop(as[Symbol.iterator](), f), __tsplusTrace);
743
745
  }
744
- /**
745
- * Applies the function `f` to each element of the `Iterable<A>` and runs
746
- * produced IOs sequentially.
747
- *
748
- * @tsplus static fncts.io.IOOps foreachDiscard
749
- */
750
- function foreachDiscard_1(as, f, __tsplusTrace) {
751
- return defer_1(() => foreachWithIndexDiscardLoop(as[Symbol.iterator](), (_, a) => f(a)), __tsplusTrace);
746
+ function foreachWithIndexDiscardLoop(iterator, f, i = 0, __tsplusTrace) {
747
+ const next = iterator.next();
748
+ return next.done ? unit_1 : flatMap_1(() => foreachWithIndexDiscardLoop(iterator, f, i + 1, __tsplusTrace), __tsplusTrace)(f(i, next.value));
752
749
  }
753
750
  /**
754
751
  * Repeats this effect forever (until the first failure).
@@ -782,7 +779,7 @@ function fromEitherNow(either, __tsplusTrace) {
782
779
  * @tsplus getter fncts.Eval toIO
783
780
  */
784
781
  function fromEval(computation, __tsplusTrace) {
785
- return succeed_1(() => tsplus_module_14.run(computation), __tsplusTrace);
782
+ return succeed_1(() => tsplus_module_15.run(computation), __tsplusTrace);
786
783
  }
787
784
  /**
788
785
  * Creates a `IO` from an exit value
@@ -790,7 +787,7 @@ function fromEval(computation, __tsplusTrace) {
790
787
  * @tsplus static fncts.io.IOOps fromExit
791
788
  */
792
789
  function fromExit(exit, __tsplusTrace) {
793
- return defer_1(() => tsplus_module_15.match(failCauseNow_1, succeedNow_1)(exit()), __tsplusTrace);
790
+ return defer_1(() => tsplus_module_16.match(failCauseNow_1, succeedNow_1)(exit()), __tsplusTrace);
794
791
  }
795
792
  /**
796
793
  * Creates a `IO` from an exit value
@@ -799,7 +796,7 @@ function fromExit(exit, __tsplusTrace) {
799
796
  * @tsplus getter fncts.Exit toIO
800
797
  */
801
798
  function fromExitNow(exit, __tsplusTrace) {
802
- return tsplus_module_15.match(failCauseNow_1, succeedNow_1)(exit);
799
+ return tsplus_module_16.match(failCauseNow_1, succeedNow_1)(exit);
803
800
  }
804
801
  /**
805
802
  * Lifts a `Maybe` into an `IO` but preserves the error as a `Maybe` in the error channel, making it easier to compose
@@ -808,14 +805,23 @@ function fromExitNow(exit, __tsplusTrace) {
808
805
  * @tsplus static fncts.io.IOOps fromMaybe
809
806
  */
810
807
  function fromMaybe(maybe, __tsplusTrace) {
811
- return flatMap_1(m => tsplus_module_16.match(() => failNow_1(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), succeedNow_1)(m), __tsplusTrace)(succeed_1(maybe, __tsplusTrace));
808
+ return flatMap_1(m => tsplus_module_17.match(() => failNow_1(tsplus_module_2.nothing(__tsplusTrace), __tsplusTrace), succeedNow_1)(m), __tsplusTrace)(succeed_1(maybe, __tsplusTrace));
812
809
  }
813
810
  /**
814
811
  * @tsplus static fncts.io.IOOps fromMaybeNow
815
812
  * @tsplus getter fncts.Maybe toIO
816
813
  */
817
814
  function fromMaybeNow(maybe, __tsplusTrace) {
818
- return tsplus_module_16.match(() => failNow_1(new tsplus_module_17.NoSuchElementError("IO.fromMaybeNow"), __tsplusTrace), succeedNow_1)(maybe);
815
+ return tsplus_module_17.match(() => failNow_1(new tsplus_module_18.NoSuchElementError("IO.fromMaybeNow"), __tsplusTrace), succeedNow_1)(maybe);
816
+ }
817
+ /**
818
+ * Create an IO that when executed will construct `promise` and wait for its result,
819
+ * errors will produce failure as `unknown`
820
+ *
821
+ * @tsplus static fncts.io.IOOps fromPromise
822
+ */
823
+ function fromPromise(promise, __tsplusTrace) {
824
+ return fromPromiseCatch_1(promise, _function.identity, __tsplusTrace);
819
825
  }
820
826
  /**
821
827
  * Create an IO that when executed will construct `promise` and wait for its result,
@@ -828,15 +834,6 @@ function fromPromiseCatch_1(promise, onReject, __tsplusTrace) {
828
834
  promise().then(a => k(succeedNow_1(a, __tsplusTrace))).catch(e => k(failNow_1(onReject(e), __tsplusTrace)));
829
835
  });
830
836
  }
831
- /**
832
- * Create an IO that when executed will construct `promise` and wait for its result,
833
- * errors will produce failure as `unknown`
834
- *
835
- * @tsplus static fncts.io.IOOps fromPromise
836
- */
837
- function fromPromise(promise, __tsplusTrace) {
838
- return fromPromiseCatch_1(promise, _function.identity, __tsplusTrace);
839
- }
840
837
  /**
841
838
  * Like fromPromise but produces a defect in case of errors
842
839
  *
@@ -853,7 +850,13 @@ function fromPromiseHalt(promise, __tsplusTrace) {
853
850
  * @tsplus getter fncts.io.IO get
854
851
  */
855
852
  function get(ma, __tsplusTrace) {
856
- return matchCauseIO_1(cause => failCauseNow_1(tsplus_module_2.map(tsplus_module_3.just)(cause), __tsplusTrace), ma => tsplus_module_16.match(() => failNow_1(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), succeedNow_1)(ma), __tsplusTrace)(ma);
853
+ return matchCauseIO_1(cause => failCauseNow_1(tsplus_module_1.map(tsplus_module_2.just)(cause), __tsplusTrace), ma => tsplus_module_17.match(() => failNow_1(tsplus_module_2.nothing(__tsplusTrace), __tsplusTrace), succeedNow_1)(ma), __tsplusTrace)(ma);
854
+ }
855
+ /**
856
+ * @tsplus static fncts.io.IOOps getFiberRefs
857
+ */
858
+ function getFiberRefs(__tsplusTrace) {
859
+ return withFiberRuntime_1(fiberState => succeed_1(() => fiberState.getFiberRefs(), __tsplusTrace), __tsplusTrace);
857
860
  }
858
861
  /**
859
862
  * Extracts the optional value, or returns the given 'orElse'.
@@ -862,7 +865,7 @@ function get(ma, __tsplusTrace) {
862
865
  */
863
866
  function getOrElse(orElse, __tsplusTrace) {
864
867
  return ma => {
865
- return map_1(ma => tsplus_module_6.getOrElse(orElse)(ma), __tsplusTrace)(ma);
868
+ return map_1(ma => tsplus_module_5.getOrElse(orElse)(ma), __tsplusTrace)(ma);
866
869
  };
867
870
  }
868
871
  /**
@@ -872,17 +875,9 @@ function getOrElse(orElse, __tsplusTrace) {
872
875
  */
873
876
  function getOrElseIO(orElse, __tsplusTrace) {
874
877
  return ma => {
875
- return flatMap_1(mab => tsplus_module_6.getOrElse(orElse)(tsplus_module_6.map(succeedNow_1)(mab)), __tsplusTrace)(ma);
878
+ return flatMap_1(mab => tsplus_module_5.getOrElse(orElse)(tsplus_module_5.map(succeedNow_1)(mab)), __tsplusTrace)(ma);
876
879
  };
877
880
  }
878
- /**
879
- * Lifts a Maybe into an IO. If the option is `Nothing`, fail with `onNothing`.
880
- *
881
- * @tsplus static fncts.io.IOOps getOrFailWith
882
- */
883
- function getOrFailWith_1(maybe, onNothing, __tsplusTrace) {
884
- return defer_1(() => tsplus_module_16.match(() => fail_1(onNothing, __tsplusTrace), succeedNow_1)(maybe), __tsplusTrace);
885
- }
886
881
  /**
887
882
  * Lifts a Maybe into a IO, if the Maybe is `Nothing` it fails with Unit.
888
883
  *
@@ -892,10 +887,12 @@ function getOrFailUnit(option, __tsplusTrace) {
892
887
  return getOrFailWith_1(option, () => undefined, __tsplusTrace);
893
888
  }
894
889
  /**
895
- * @tsplus static fncts.io.IOOps getFiberRefs
890
+ * Lifts a Maybe into an IO. If the option is `Nothing`, fail with `onNothing`.
891
+ *
892
+ * @tsplus static fncts.io.IOOps getOrFailWith
896
893
  */
897
- function getFiberRefs(__tsplusTrace) {
898
- return withFiberRuntime_1(fiberState => succeed_1(() => fiberState.getFiberRefs(), __tsplusTrace), __tsplusTrace);
894
+ function getOrFailWith_1(maybe, onNothing, __tsplusTrace) {
895
+ return defer_1(() => tsplus_module_17.match(() => fail_1(onNothing, __tsplusTrace), succeedNow_1)(maybe), __tsplusTrace);
899
896
  }
900
897
  /**
901
898
  * Creates an `IO` that halts with the specified lazily-evaluated defect.
@@ -905,7 +902,7 @@ function getFiberRefs(__tsplusTrace) {
905
902
  * @tsplus static fncts.io.IOOps halt
906
903
  */
907
904
  function halt(e, __tsplusTrace) {
908
- return failCause_1(() => tsplus_module_2.halt(e(), tsplus_module_18.none), __tsplusTrace);
905
+ return failCause_1(() => tsplus_module_1.halt(e(), tsplus_module_19.none), __tsplusTrace);
909
906
  }
910
907
  /**
911
908
  * Creates an `IO` that halts with the specified defect
@@ -915,7 +912,7 @@ function halt(e, __tsplusTrace) {
915
912
  * @tsplus static fncts.io.IOOps haltNow
916
913
  */
917
914
  function haltNow_1(e, __tsplusTrace) {
918
- return failCauseNow_1(tsplus_module_2.halt(e, tsplus_module_18.none), __tsplusTrace);
915
+ return failCauseNow_1(tsplus_module_1.halt(e, tsplus_module_19.none), __tsplusTrace);
919
916
  }
920
917
  /**
921
918
  * @tsplus pipeable fncts.io.IO ifIO
@@ -926,32 +923,26 @@ function ifIO_1(onFalse, onTrue, __tsplusTrace) {
926
923
  };
927
924
  }
928
925
  /**
929
- * @tsplus static fncts.io.IOOps if
926
+ * @tsplus getter fncts.io.IO ignore
930
927
  */
931
- function cond(b, onTrue, onFalse, __tsplusTrace) {
932
- return ifIO_1(onTrue, onFalse, __tsplusTrace)(succeedNow_1(b, __tsplusTrace));
933
- }
934
- /**
935
- * @tsplus getter fncts.io.IO ignore
936
- */
937
- function ignore(fa, __tsplusTrace) {
938
- return match_1(() => undefined, () => undefined, __tsplusTrace)(fa);
928
+ function ignore(self, __tsplusTrace) {
929
+ return match_1(() => undefined, () => undefined, __tsplusTrace)(self);
939
930
  }
940
931
  /**
941
932
  * Folds a `IO` to a boolean describing whether or not it is a failure
942
933
  *
943
934
  * @tsplus getter fncts.io.IO isFailure
944
935
  */
945
- function isFailure(ma, __tsplusTrace) {
946
- return match_1(() => true, () => false, __tsplusTrace)(ma);
936
+ function isFailure(self, __tsplusTrace) {
937
+ return match_1(() => true, () => false, __tsplusTrace)(self);
947
938
  }
948
939
  /**
949
940
  * Folds a `IO` to a boolean describing whether or not it is a success
950
941
  *
951
942
  * @tsplus getter fncts.io.IO isSuccess
952
943
  */
953
- function isSuccess(ma, __tsplusTrace) {
954
- return match_1(() => false, () => true, __tsplusTrace)(ma);
944
+ function isSuccess(self, __tsplusTrace) {
945
+ return match_1(() => false, () => true, __tsplusTrace)(self);
955
946
  }
956
947
  /**
957
948
  * Iterates with the specified effectual function. The moral equivalent of:
@@ -971,6 +962,12 @@ function isSuccess(ma, __tsplusTrace) {
971
962
  function iterate_1(initial, cont, body, __tsplusTrace) {
972
963
  return cont(initial) ? flatMap_1(a => iterate_1(a, cont, body, __tsplusTrace), __tsplusTrace)(body(initial)) : succeedNow_1(initial, __tsplusTrace);
973
964
  }
965
+ /**
966
+ * @tsplus getter fncts.io.IO just
967
+ */
968
+ function just(self) {
969
+ return matchIO_1(e => fail_1(() => tsplus_module_2.just(e, fileName_1 + ":1034:24"), fileName_1 + ":1034:19"), a => tsplus_module_17.match(() => fail_1(() => tsplus_module_2.nothing(fileName_1 + ":1035:41"), fileName_1 + ":1035:33"), succeedNow_1)(a), fileName_1 + ":1033:22")(self);
970
+ }
974
971
  /**
975
972
  * Returns an IO with the value on the left part.
976
973
  *
@@ -979,27 +976,15 @@ function iterate_1(initial, cont, body, __tsplusTrace) {
979
976
  function left(a, __tsplusTrace) {
980
977
  return flatMap_1(a => succeedNow_1(tsplus_module_9.left(a, __tsplusTrace), __tsplusTrace), __tsplusTrace)(succeed_1(a, __tsplusTrace));
981
978
  }
982
- /**
983
- * @tsplus getter fncts.io.IO just
984
- */
985
- function just(self) {
986
- return matchIO_1(e => fail_1(() => tsplus_module_3.just(e, fileName_1 + ":1088:24"), fileName_1 + ":1088:19"), a => tsplus_module_16.match(() => fail_1(() => tsplus_module_3.nothing(fileName_1 + ":1089:41"), fileName_1 + ":1089:33"), succeedNow_1)(a), fileName_1 + ":1087:22")(self);
987
- }
988
979
  /**
989
980
  * @tsplus static fncts.io.IOOps log
990
981
  */
991
982
  function log_1(message, __tsplusTrace) {
992
983
  return withFiberRuntime_1(fiber => {
993
- fiber.log(message, tsplus_module_2.empty(), tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace);
984
+ fiber.log(message, tsplus_module_1.empty(), tsplus_module_2.nothing(__tsplusTrace), __tsplusTrace);
994
985
  return unit_1;
995
986
  }, __tsplusTrace);
996
987
  }
997
- /**
998
- * @tsplus static fncts.io.IOOps show
999
- */
1000
- function show(message, options, __tsplusTrace) {
1001
- return log_1(() => (0, _Showable.showWithOptions)(message, options), __tsplusTrace);
1002
- }
1003
988
  /**
1004
989
  * Loops with the specified effectual function, collecting the results into a
1005
990
  * list. The moral equivalent of:
@@ -1020,9 +1005,9 @@ function show(message, options, __tsplusTrace) {
1020
1005
  */
1021
1006
  function loop_1(initial, cont, inc, body, __tsplusTrace) {
1022
1007
  if (cont(initial)) {
1023
- return flatMap_1(a => map_1(as => tsplus_module_10.prepend(a)(as), __tsplusTrace)(loop_1(inc(initial), cont, inc, body, __tsplusTrace)), __tsplusTrace)(body(initial));
1008
+ return flatMap_1(a => map_1(as => tsplus_module_11.prepend(a)(as), __tsplusTrace)(loop_1(inc(initial), cont, inc, body, __tsplusTrace)), __tsplusTrace)(body(initial));
1024
1009
  } else {
1025
- return succeedNow_1(tsplus_module_19.empty(), __tsplusTrace);
1010
+ return succeedNow_1(tsplus_module_20.empty(), __tsplusTrace);
1026
1011
  }
1027
1012
  }
1028
1013
  /**
@@ -1053,8 +1038,8 @@ function loopUnit(initial, cont, inc, body, __tsplusTrace) {
1053
1038
  * @tsplus pipeable fncts.io.IO map
1054
1039
  */
1055
1040
  function map_1(f, __tsplusTrace) {
1056
- return fa => {
1057
- return flatMap_1(a => succeedNow_1(f(a), __tsplusTrace), __tsplusTrace)(fa);
1041
+ return self => {
1042
+ return flatMap_1(a => succeedNow_1(f(a), __tsplusTrace), __tsplusTrace)(self);
1058
1043
  };
1059
1044
  }
1060
1045
  /**
@@ -1067,16 +1052,10 @@ function map_1(f, __tsplusTrace) {
1067
1052
  * @tsplus pipeable fncts.io.IO mapError
1068
1053
  */
1069
1054
  function mapError_1(f, __tsplusTrace) {
1070
- return fea => {
1071
- return matchCauseIO_1(cause => failCauseNow_1(tsplus_module_2.map(f)(cause), __tsplusTrace), succeedNow_1, __tsplusTrace)(fea);
1055
+ return self => {
1056
+ return matchCauseIO_1(cause => failCauseNow_1(tsplus_module_1.map(f)(cause), __tsplusTrace), succeedNow_1, __tsplusTrace)(self);
1072
1057
  };
1073
1058
  }
1074
- /**
1075
- * @tsplus static fncts.io.IOOps mapTryCatch
1076
- */
1077
- function mapTryCatch(io, f, onThrow, __tsplusTrace) {
1078
- return flatMap_1(a => tryCatch_1(() => f(a), onThrow, __tsplusTrace), __tsplusTrace)(io);
1079
- }
1080
1059
  /**
1081
1060
  * Returns an IO with its full cause of failure mapped using
1082
1061
  * the specified function. This can be used to transform errors
@@ -1085,8 +1064,29 @@ function mapTryCatch(io, f, onThrow, __tsplusTrace) {
1085
1064
  * @tsplus pipeable fncts.io.IO mapErrorCause
1086
1065
  */
1087
1066
  function mapErrorCause_1(f, __tsplusTrace) {
1088
- return ma => {
1089
- return matchCauseIO_1(cause => failCauseNow_1(f(cause), __tsplusTrace), succeedNow_1, __tsplusTrace)(ma);
1067
+ return self => {
1068
+ return matchCauseIO_1(cause => failCauseNow_1(f(cause), __tsplusTrace), succeedNow_1, __tsplusTrace)(self);
1069
+ };
1070
+ }
1071
+ /**
1072
+ * @tsplus static fncts.io.IOOps mapTryCatch
1073
+ * @tsplus pipeable fncts.io.IO mapTryCatch
1074
+ */
1075
+ function mapTryCatch(f, onThrow, __tsplusTrace) {
1076
+ return self => {
1077
+ return flatMap_1(a => tryCatch_1(() => f(a), onThrow, __tsplusTrace), __tsplusTrace)(self);
1078
+ };
1079
+ }
1080
+ /**
1081
+ * Folds over the failure value or the success value to yield an IO that
1082
+ * does not fail, but succeeds with the value returned by the left or right
1083
+ * function passed to `match_`.
1084
+ *
1085
+ * @tsplus pipeable fncts.io.IO match
1086
+ */
1087
+ function match_1(onFailure, onSuccess, __tsplusTrace) {
1088
+ return self => {
1089
+ return matchIO_1(e => succeedNow_1(onFailure(e), __tsplusTrace), a => succeedNow_1(onSuccess(a), __tsplusTrace), __tsplusTrace)(self);
1090
1090
  };
1091
1091
  }
1092
1092
  /**
@@ -1119,19 +1119,7 @@ function matchCauseIO_1(onFailure, onSuccess, __tsplusTrace) {
1119
1119
  */
1120
1120
  function matchIO_1(onFailure, onSuccess, __tsplusTrace) {
1121
1121
  return self => {
1122
- return matchCauseIO_1(cause => tsplus_module_4.match(onFailure, failCauseNow_1)(tsplus_module_2.failureOrCause(cause)), onSuccess, __tsplusTrace)(self);
1123
- };
1124
- }
1125
- /**
1126
- * Folds over the failure value or the success value to yield an IO that
1127
- * does not fail, but succeeds with the value returned by the left or right
1128
- * function passed to `match_`.
1129
- *
1130
- * @tsplus pipeable fncts.io.IO match
1131
- */
1132
- function match_1(onFailure, onSuccess, __tsplusTrace) {
1133
- return self => {
1134
- return matchIO_1(e => succeedNow_1(onFailure(e), __tsplusTrace), a => succeedNow_1(onSuccess(a), __tsplusTrace), __tsplusTrace)(self);
1122
+ return matchCauseIO_1(cause => tsplus_module_4.match(onFailure, failCauseNow_1)(tsplus_module_1.failureOrCause(cause)), onSuccess, __tsplusTrace)(self);
1135
1123
  };
1136
1124
  }
1137
1125
  /**
@@ -1140,42 +1128,109 @@ function match_1(onFailure, onSuccess, __tsplusTrace) {
1140
1128
  * @tsplus pipeable fncts.io.IO matchTraceIO
1141
1129
  */
1142
1130
  function matchTraceIO(onFailure, onSuccess, __tsplusTrace) {
1143
- return ma => {
1144
- return matchCauseIO_1(cause => tsplus_module_4.match(([e, trace]) => onFailure(e, trace), failCauseNow_1)(tsplus_module_2.failureTraceOrCause(cause)), onSuccess, __tsplusTrace)(ma);
1131
+ return self => {
1132
+ return matchCauseIO_1(cause => tsplus_module_4.match(([e, trace]) => onFailure(e, trace), failCauseNow_1)(tsplus_module_1.failureTraceOrCause(cause)), onSuccess, __tsplusTrace)(self);
1145
1133
  };
1146
1134
  }
1147
1135
  /**
1148
1136
  * @tsplus getter fncts.io.IO maybe
1149
1137
  */
1150
- function maybe(io, __tsplusTrace) {
1151
- return match_1(() => tsplus_module_3.nothing(__tsplusTrace), tsplus_module_3.just, __tsplusTrace)(io);
1138
+ function maybe(self, __tsplusTrace) {
1139
+ return match_1(() => tsplus_module_2.nothing(__tsplusTrace), tsplus_module_2.just, __tsplusTrace)(self);
1152
1140
  }
1153
1141
  /**
1154
1142
  * @tsplus getter fncts.io.IO merge
1155
1143
  */
1156
- function merge(io, __tsplusTrace) {
1157
- return matchIO_1(succeedNow_1, succeedNow_1, __tsplusTrace)(io);
1144
+ function merge(self, __tsplusTrace) {
1145
+ return matchIO_1(succeedNow_1, succeedNow_1, __tsplusTrace)(self);
1158
1146
  }
1159
1147
  /**
1160
1148
  * Merges an `Iterable<IO>` to a single IO, working sequentially.
1161
1149
  *
1162
1150
  * @tsplus static fncts.io.IOOps mergeAll
1163
1151
  */
1164
- function mergeAll(fas, b, f, __tsplusTrace) {
1165
- return tsplus_module_11.foldLeft(succeed_1(() => b, __tsplusTrace), (b, a) => zipWith_1(a, f, __tsplusTrace)(b))(fas);
1152
+ function mergeAll(ios, b, f, __tsplusTrace) {
1153
+ return tsplus_module_12.foldLeft(succeed_1(() => b, __tsplusTrace), (b, a) => zipWith_1(a, f, __tsplusTrace)(b))(ios);
1154
+ }
1155
+ /**
1156
+ * @tsplus static fncts.io.IOOps refailCause
1157
+ */
1158
+ function refailCause_1(cause, __tsplusTrace) {
1159
+ const io = new _definition2.IOPrimitive(1 /* IOTag.Fail */);
1160
+ io.i0 = cause;
1161
+ io.trace = __tsplusTrace;
1162
+ return io;
1163
+ }
1164
+ /**
1165
+ * @tsplus static fncts.io.IOOps refailCauseNow
1166
+ */
1167
+ function refailCauseNow(cause, __tsplusTrace) {
1168
+ const io = new _definition2.IOPrimitive(1 /* IOTag.Fail */);
1169
+ io.i0 = () => cause;
1170
+ io.trace = __tsplusTrace;
1171
+ return io;
1172
+ }
1173
+ /**
1174
+ * @tsplus static fncts.io.IOOps show
1175
+ */
1176
+ function show(message, options, __tsplusTrace) {
1177
+ return log_1(() => (0, _Showable.showWithOptions)(message, options), __tsplusTrace);
1166
1178
  }
1167
1179
  /**
1168
1180
  * @tsplus static fncts.io.IOOps nothing
1169
1181
  */
1170
- const nothing_1 = /*#__PURE__*/succeedNow_1(/*#__PURE__*/tsplus_module_3.nothing(fileName_1 + ":1338:45"), fileName_1 + ":1338:37");
1182
+ const nothing_1 = /*#__PURE__*/succeedNow_1(/*#__PURE__*/tsplus_module_2.nothing(fileName_1 + ":1311:45"), fileName_1 + ":1311:37");
1171
1183
  const nothing = exports.nothing = nothing_1;
1184
+ /**
1185
+ * Returns an `IO` that submerges an `Either` into the `IO`.
1186
+ *
1187
+ * @tsplus getter fncts.io.IO absolve
1188
+ */
1189
+ function absolve(self, __tsplusTrace) {
1190
+ return flatMap_1(ea => tsplus_module_4.match(failNow_1, succeedNow_1)(ea), __tsplusTrace)(self);
1191
+ }
1192
+ /**
1193
+ * @tsplus static fncts.io.IOOps attempt
1194
+ */
1195
+ function attempt(effect, __tsplusTrace) {
1196
+ return defer_1(() => {
1197
+ try {
1198
+ return tsplus_module_10.succeed(effect(), __tsplusTrace);
1199
+ } catch (u) {
1200
+ return withFiberRuntime_1(fiberState => {
1201
+ if (!fiberState.isFatal(u)) {
1202
+ throw new _exceptions.IOError(tsplus_module_1.fail(u));
1203
+ } else {
1204
+ throw u;
1205
+ }
1206
+ }, __tsplusTrace);
1207
+ }
1208
+ }, __tsplusTrace);
1209
+ }
1210
+ /**
1211
+ * Exposes all parallel errors in a single call
1212
+ *
1213
+ * @tsplus pipeable fncts.io.IO concurrentErrors
1214
+ */
1215
+ function concurrentErrors(__tsplusTrace) {
1216
+ return self => {
1217
+ return matchCauseIO_1(cause => {
1218
+ const f = tsplus_module_1.failures(cause);
1219
+ if (tsplus_module_21.length(f) === 0) {
1220
+ return failCauseNow_1(cause, __tsplusTrace);
1221
+ } else {
1222
+ return failNow_1(f, __tsplusTrace);
1223
+ }
1224
+ }, succeedNow_1, __tsplusTrace)(self);
1225
+ };
1226
+ }
1172
1227
  /**
1173
1228
  * Converts an option on errors into an option on values.
1174
1229
  *
1175
1230
  * @tsplus getter fncts.io.IO optional
1176
1231
  */
1177
- function optional(ma, __tsplusTrace) {
1178
- return matchIO_1(me => tsplus_module_16.match(() => succeedNow_1(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), failNow_1)(me), a => succeedNow_1(tsplus_module_3.just(a, __tsplusTrace), __tsplusTrace), __tsplusTrace)(ma);
1232
+ function optional(self, __tsplusTrace) {
1233
+ return matchIO_1(me => tsplus_module_17.match(() => succeedNow_1(tsplus_module_2.nothing(__tsplusTrace), __tsplusTrace), failNow_1)(me), a => succeedNow_1(tsplus_module_2.just(a, __tsplusTrace), __tsplusTrace), __tsplusTrace)(self);
1179
1234
  }
1180
1235
  /**
1181
1236
  * Returns the logical disjunction of the `Boolean` value returned by this
@@ -1186,17 +1241,17 @@ function optional(ma, __tsplusTrace) {
1186
1241
  * @tsplus pipeable fncts.io.IO or
1187
1242
  * @tsplus pipeable-operator fncts.io.IO ||
1188
1243
  */
1189
- function or(mb, __tsplusTrace) {
1190
- return ma => {
1191
- return flatMap_1(b => b ? succeedNow_1(true, __tsplusTrace) : mb, __tsplusTrace)(ma);
1244
+ function or(or, __tsplusTrace) {
1245
+ return self => {
1246
+ return flatMap_1(b => b ? succeedNow_1(true, __tsplusTrace) : or, __tsplusTrace)(self);
1192
1247
  };
1193
1248
  }
1194
1249
  /**
1195
1250
  * @tsplus pipeable fncts.io.IO orElse
1196
1251
  */
1197
1252
  function orElse_1(that, __tsplusTrace) {
1198
- return ma => {
1199
- return tryOrElse_1(that, succeedNow_1, __tsplusTrace)(ma);
1253
+ return self => {
1254
+ return tryOrElse_1(that, succeedNow_1, __tsplusTrace)(self);
1200
1255
  };
1201
1256
  }
1202
1257
  /**
@@ -1211,61 +1266,44 @@ function orElseEither(that, __tsplusTrace) {
1211
1266
  * @tsplus pipeable fncts.io.IO orElseFail
1212
1267
  */
1213
1268
  function orElseFail(e, __tsplusTrace) {
1214
- return ma => {
1215
- return orElse_1(() => fail_1(e, __tsplusTrace), __tsplusTrace)(ma);
1269
+ return self => {
1270
+ return orElse_1(() => fail_1(e, __tsplusTrace), __tsplusTrace)(self);
1216
1271
  };
1217
1272
  }
1218
1273
  /**
1219
1274
  * @tsplus pipeable fncts.io.IO orElseMaybe
1220
1275
  */
1221
1276
  function orElseMaybe(that, __tsplusTrace) {
1222
- return ma => {
1223
- return catchAll_1(me => tsplus_module_16.match(that, e => fail_1(() => tsplus_module_3.just(e, __tsplusTrace), __tsplusTrace))(me), __tsplusTrace)(ma);
1277
+ return self => {
1278
+ return catchAll_1(me => tsplus_module_17.match(that, e => fail_1(() => tsplus_module_2.just(e, __tsplusTrace), __tsplusTrace))(me), __tsplusTrace)(self);
1224
1279
  };
1225
1280
  }
1226
1281
  /**
1227
1282
  * @tsplus pipeable fncts.io.IO orElseSucceed
1228
1283
  */
1229
1284
  function orElseSucceed(a, __tsplusTrace) {
1230
- return ma => {
1231
- return orElse_1(() => succeed_1(a, __tsplusTrace), __tsplusTrace)(ma);
1285
+ return self => {
1286
+ return orElse_1(() => succeed_1(a, __tsplusTrace), __tsplusTrace)(self);
1232
1287
  };
1233
1288
  }
1234
1289
  /**
1235
1290
  * @tsplus getter fncts.io.IO orHalt
1236
1291
  */
1237
- function orHalt(ma, __tsplusTrace) {
1238
- return orHaltWith_1(_function.identity, __tsplusTrace)(ma);
1292
+ function orHalt(self, __tsplusTrace) {
1293
+ return orHaltWith_1(_function.identity, __tsplusTrace)(self);
1239
1294
  }
1240
1295
  /**
1241
1296
  * @tsplus getter fncts.io.IO orHaltKeep
1242
1297
  */
1243
- function orHaltKeep(ma, __tsplusTrace) {
1244
- return matchCauseIO_1(cause => failCauseNow_1(tsplus_module_2.flatMap(tsplus_module_2.halt)(cause), __tsplusTrace), succeedNow_1, __tsplusTrace)(ma);
1298
+ function orHaltKeep(self, __tsplusTrace) {
1299
+ return matchCauseIO_1(cause => failCauseNow_1(tsplus_module_1.flatMap(tsplus_module_1.halt)(cause), __tsplusTrace), succeedNow_1, __tsplusTrace)(self);
1245
1300
  }
1246
1301
  /**
1247
1302
  * @tsplus pipeable fncts.io.IO orHaltWith
1248
1303
  */
1249
1304
  function orHaltWith_1(f, __tsplusTrace) {
1250
- return ma => {
1251
- return matchIO_1(e => haltNow_1(f(e), __tsplusTrace), succeedNow_1, __tsplusTrace)(ma);
1252
- };
1253
- }
1254
- /**
1255
- * Exposes all parallel errors in a single call
1256
- *
1257
- * @tsplus pipeable fncts.io.IO concurrentErrors
1258
- */
1259
- function concurrentErrors(__tsplusTrace) {
1260
- return io => {
1261
- return matchCauseIO_1(cause => {
1262
- const f = tsplus_module_2.failures(cause);
1263
- if (tsplus_module_20.length(f) === 0) {
1264
- return failCauseNow_1(cause, __tsplusTrace);
1265
- } else {
1266
- return failNow_1(f, __tsplusTrace);
1267
- }
1268
- }, succeedNow_1, __tsplusTrace)(io);
1305
+ return self => {
1306
+ return matchIO_1(e => haltNow_1(f(e), __tsplusTrace), succeedNow_1, __tsplusTrace)(self);
1269
1307
  };
1270
1308
  }
1271
1309
  /**
@@ -1275,7 +1313,7 @@ function concurrentErrors(__tsplusTrace) {
1275
1313
  * @tsplus static fncts.io.IOOps partition
1276
1314
  */
1277
1315
  function partition(as, f, __tsplusTrace) {
1278
- return map_1(c => tsplus_module_10.separate(c), __tsplusTrace)(foreach_1(as, a => either_1(f(a), __tsplusTrace), __tsplusTrace));
1316
+ return map_1(c => tsplus_module_11.separate(c), __tsplusTrace)(foreach_1(as, a => either_1(f(a), __tsplusTrace), __tsplusTrace));
1279
1317
  }
1280
1318
  /**
1281
1319
  * Keeps some of the errors, and terminates the fiber with the rest
@@ -1283,8 +1321,8 @@ function partition(as, f, __tsplusTrace) {
1283
1321
  * @tsplus pipeable fncts.io.IO refineOrHalt
1284
1322
  */
1285
1323
  function refineOrHalt(pf, __tsplusTrace) {
1286
- return fa => {
1287
- return refineOrHaltWith_1(pf, _function.identity, __tsplusTrace)(fa);
1324
+ return self => {
1325
+ return refineOrHaltWith_1(pf, _function.identity, __tsplusTrace)(self);
1288
1326
  };
1289
1327
  }
1290
1328
  /**
@@ -1294,8 +1332,8 @@ function refineOrHalt(pf, __tsplusTrace) {
1294
1332
  * @tsplus pipeable fncts.io.IO refineOrHaltWith
1295
1333
  */
1296
1334
  function refineOrHaltWith_1(pf, f, __tsplusTrace) {
1297
- return fa => {
1298
- return catchAll_1(e => tsplus_module_16.match(() => haltNow_1(f(e), __tsplusTrace), failNow_1)(pf(e)), __tsplusTrace)(fa);
1335
+ return self => {
1336
+ return catchAll_1(e => tsplus_module_17.match(() => haltNow_1(f(e), __tsplusTrace), failNow_1)(pf(e)), __tsplusTrace)(self);
1299
1337
  };
1300
1338
  }
1301
1339
  /**
@@ -1305,8 +1343,8 @@ function refineOrHaltWith_1(pf, f, __tsplusTrace) {
1305
1343
  * @tsplus pipeable fncts.io.IO reject
1306
1344
  */
1307
1345
  function reject(pf, __tsplusTrace) {
1308
- return fa => {
1309
- return rejectIO_1(a => tsplus_module_6.map(failNow_1)(pf(a)), __tsplusTrace)(fa);
1346
+ return self => {
1347
+ return rejectIO_1(a => tsplus_module_5.map(failNow_1)(pf(a)), __tsplusTrace)(self);
1310
1348
  };
1311
1349
  }
1312
1350
  /**
@@ -1317,8 +1355,8 @@ function reject(pf, __tsplusTrace) {
1317
1355
  * @tsplus pipeable fncts.io.IO rejectIO
1318
1356
  */
1319
1357
  function rejectIO_1(pf, __tsplusTrace) {
1320
- return fa => {
1321
- return flatMap_1(a => tsplus_module_16.match(() => succeedNow_1(a, __tsplusTrace), io => flatMap_1(failNow_1, __tsplusTrace)(io))(pf(a)), __tsplusTrace)(fa);
1358
+ return self => {
1359
+ return flatMap_1(a => tsplus_module_17.match(() => succeedNow_1(a, __tsplusTrace), io => flatMap_1(failNow_1, __tsplusTrace)(io))(pf(a)), __tsplusTrace)(self);
1322
1360
  };
1323
1361
  }
1324
1362
  /**
@@ -1326,9 +1364,18 @@ function rejectIO_1(pf, __tsplusTrace) {
1326
1364
  *
1327
1365
  * @tsplus pipeable fncts.io.IO repeatN
1328
1366
  */
1329
- function repeatN_1(n, __tsplusTrace) {
1330
- return ma => {
1331
- return flatMap_1(a => n <= 0 ? succeed_1(() => a, __tsplusTrace) : repeatN_1(n - 1, __tsplusTrace)(ma), __tsplusTrace)(ma);
1367
+ function repeatN_(n, __tsplusTrace) {
1368
+ return self => {
1369
+ return flatMap_1(a => {
1370
+ let i = n;
1371
+ let s = a;
1372
+ return as_1(() => s, __tsplusTrace)(whileLoop_1(() => i > 0, () => {
1373
+ i -= 1;
1374
+ return self;
1375
+ }, a => {
1376
+ s = a;
1377
+ }));
1378
+ }, __tsplusTrace)(self);
1332
1379
  };
1333
1380
  }
1334
1381
  /**
@@ -1337,8 +1384,8 @@ function repeatN_1(n, __tsplusTrace) {
1337
1384
  * @tsplus pipeable fncts.io.IO repeatUntil
1338
1385
  */
1339
1386
  function repeatUntil(f, __tsplusTrace) {
1340
- return ma => {
1341
- return repeatUntilIO_1(a => succeedNow_1(f(a), __tsplusTrace), __tsplusTrace)(ma);
1387
+ return self => {
1388
+ return repeatUntilIO_1(a => succeedNow_1(f(a), __tsplusTrace), __tsplusTrace)(self);
1342
1389
  };
1343
1390
  }
1344
1391
  /**
@@ -1347,8 +1394,8 @@ function repeatUntil(f, __tsplusTrace) {
1347
1394
  * @tsplus pipeable fncts.io.IO repeatUntilIO
1348
1395
  */
1349
1396
  function repeatUntilIO_1(f, __tsplusTrace) {
1350
- return ma => {
1351
- return flatMap_1(a => flatMap_1(b => b ? succeed_1(() => a, __tsplusTrace) : repeatUntilIO_1(f, __tsplusTrace)(ma), __tsplusTrace)(f(a)), __tsplusTrace)(ma);
1397
+ return self => {
1398
+ return flatMap_1(a => flatMap_1(b => b ? succeed_1(() => a, __tsplusTrace) : repeatUntilIO_1(f, __tsplusTrace)(self), __tsplusTrace)(f(a)), __tsplusTrace)(self);
1352
1399
  };
1353
1400
  }
1354
1401
  /**
@@ -1357,8 +1404,8 @@ function repeatUntilIO_1(f, __tsplusTrace) {
1357
1404
  * @tsplus pipeable fncts.io.IO repeatWhile
1358
1405
  */
1359
1406
  function repeatWhile(f, __tsplusTrace) {
1360
- return ma => {
1361
- return repeatWhileIO_1(a => succeedNow_1(f(a), __tsplusTrace), __tsplusTrace)(ma);
1407
+ return self => {
1408
+ return repeatWhileIO_1(a => succeedNow_1(f(a), __tsplusTrace), __tsplusTrace)(self);
1362
1409
  };
1363
1410
  }
1364
1411
  /**
@@ -1367,8 +1414,8 @@ function repeatWhile(f, __tsplusTrace) {
1367
1414
  * @tsplus pipeable fncts.io.IO repeatWhileIO
1368
1415
  */
1369
1416
  function repeatWhileIO_1(f, __tsplusTrace) {
1370
- return ma => {
1371
- return flatMap_1(a => flatMap_1(b => b ? repeatWhileIO_1(f, __tsplusTrace)(ma) : succeed_1(() => a, __tsplusTrace), __tsplusTrace)(f(a)), __tsplusTrace)(ma);
1417
+ return self => {
1418
+ return flatMap_1(a => flatMap_1(b => b ? repeatWhileIO_1(f, __tsplusTrace)(self) : succeed_1(() => a, __tsplusTrace), __tsplusTrace)(f(a)), __tsplusTrace)(self);
1372
1419
  };
1373
1420
  }
1374
1421
  /**
@@ -1376,15 +1423,15 @@ function repeatWhileIO_1(f, __tsplusTrace) {
1376
1423
  */
1377
1424
  function replicate(n, __tsplusTrace) {
1378
1425
  return self => {
1379
- return tsplus_module_22.map(() => self)(tsplus_module_21.range(0, n));
1426
+ return tsplus_module_22.range(0, n).map(() => self);
1380
1427
  };
1381
1428
  }
1382
1429
  /**
1383
1430
  * @tsplus pipeable fncts.io.IO require
1384
1431
  */
1385
1432
  function _require(error, __tsplusTrace) {
1386
- return ma => {
1387
- return flatMap_1(ma => tsplus_module_16.match(() => fail_1(error, __tsplusTrace), succeedNow_1)(ma), __tsplusTrace)(ma);
1433
+ return self => {
1434
+ return flatMap_1(ma => tsplus_module_17.match(() => fail_1(error, __tsplusTrace), succeedNow_1)(ma), __tsplusTrace)(self);
1388
1435
  };
1389
1436
  }
1390
1437
  /**
@@ -1393,16 +1440,16 @@ function _require(error, __tsplusTrace) {
1393
1440
  *
1394
1441
  * @tsplus getter fncts.io.IO result
1395
1442
  */
1396
- function result(ma, __tsplusTrace) {
1397
- return matchCauseIO_1(cause => succeedNow_1(tsplus_module_23.failCause(cause, __tsplusTrace), __tsplusTrace), a => succeedNow_1(tsplus_module_23.succeed(a, __tsplusTrace), __tsplusTrace), __tsplusTrace)(ma);
1443
+ function result(self, __tsplusTrace) {
1444
+ return matchCauseIO_1(cause => succeedNow_1(tsplus_module_10.failCause(cause, __tsplusTrace), __tsplusTrace), a => succeedNow_1(tsplus_module_10.succeed(a, __tsplusTrace), __tsplusTrace), __tsplusTrace)(self);
1398
1445
  }
1399
1446
  /**
1400
1447
  * Recover from the unchecked failure of the `IO`. (opposite of `orHalt`)
1401
1448
  *
1402
1449
  * @tsplus getter fncts.io.IO resurrect
1403
1450
  */
1404
- function resurrect(io, __tsplusTrace) {
1405
- return unrefineWith_1(tsplus_module_3.just, _function.identity, __tsplusTrace)(io);
1451
+ function resurrect(self, __tsplusTrace) {
1452
+ return unrefineWith_1(tsplus_module_2.just, _function.identity, __tsplusTrace)(self);
1406
1453
  }
1407
1454
  /**
1408
1455
  * Retries this effect until its error satisfies the specified predicate.
@@ -1410,8 +1457,8 @@ function resurrect(io, __tsplusTrace) {
1410
1457
  * @tsplus pipeable fncts.io.IO retryUntil
1411
1458
  */
1412
1459
  function retryUntil(f, __tsplusTrace) {
1413
- return fa => {
1414
- return retryUntilIO_1(e => succeedNow_1(f(e), __tsplusTrace), __tsplusTrace)(fa);
1460
+ return self => {
1461
+ return retryUntilIO_1(e => succeedNow_1(f(e), __tsplusTrace), __tsplusTrace)(self);
1415
1462
  };
1416
1463
  }
1417
1464
  /**
@@ -1420,8 +1467,8 @@ function retryUntil(f, __tsplusTrace) {
1420
1467
  * @tsplus pipeable fncts.io.IO retryUntilIO
1421
1468
  */
1422
1469
  function retryUntilIO_1(f, __tsplusTrace) {
1423
- return fa => {
1424
- return catchAll_1(e => flatMap_1(b => b ? failNow_1(e, __tsplusTrace) : retryUntilIO_1(f, __tsplusTrace)(fa), __tsplusTrace)(f(e)), __tsplusTrace)(fa);
1470
+ return self => {
1471
+ return catchAll_1(e => flatMap_1(b => b ? failNow_1(e, __tsplusTrace) : retryUntilIO_1(f, __tsplusTrace)(self), __tsplusTrace)(f(e)), __tsplusTrace)(self);
1425
1472
  };
1426
1473
  }
1427
1474
  /**
@@ -1430,8 +1477,8 @@ function retryUntilIO_1(f, __tsplusTrace) {
1430
1477
  * @tsplus pipeable fncts.io.IO retryWhile
1431
1478
  */
1432
1479
  function retryWhile(f, __tsplusTrace) {
1433
- return fa => {
1434
- return retryWhileIO_1(e => succeedNow_1(f(e), __tsplusTrace), __tsplusTrace)(fa);
1480
+ return self => {
1481
+ return retryWhileIO_1(e => succeedNow_1(f(e), __tsplusTrace), __tsplusTrace)(self);
1435
1482
  };
1436
1483
  }
1437
1484
  /**
@@ -1440,8 +1487,8 @@ function retryWhile(f, __tsplusTrace) {
1440
1487
  * @tsplus pipeable fncts.io.IO retryWhileIO
1441
1488
  */
1442
1489
  function retryWhileIO_1(f, __tsplusTrace) {
1443
- return fa => {
1444
- return catchAll_1(e => flatMap_1(b => b ? retryWhileIO_1(f, __tsplusTrace)(fa) : fail_1(() => e, __tsplusTrace), __tsplusTrace)(f(e)), __tsplusTrace)(fa);
1490
+ return self => {
1491
+ return catchAll_1(e => flatMap_1(b => b ? retryWhileIO_1(f, __tsplusTrace)(self) : fail_1(() => e, __tsplusTrace), __tsplusTrace)(f(e)), __tsplusTrace)(self);
1445
1492
  };
1446
1493
  }
1447
1494
  /**
@@ -1449,15 +1496,15 @@ function retryWhileIO_1(f, __tsplusTrace) {
1449
1496
  *
1450
1497
  * @tsplus getter fncts.io.IO sandbox
1451
1498
  */
1452
- function sandbox_1(fa, __tsplusTrace) {
1453
- return matchCauseIO_1(failNow_1, succeedNow_1, __tsplusTrace)(fa);
1499
+ function sandbox_1(self, __tsplusTrace) {
1500
+ return matchCauseIO_1(failNow_1, succeedNow_1, __tsplusTrace)(self);
1454
1501
  }
1455
1502
  /**
1456
1503
  * @tsplus pipeable fncts.io.IO sandboxWith
1457
1504
  */
1458
1505
  function sandboxWith(f, __tsplusTrace) {
1459
- return ma => {
1460
- return unsandbox_1(f(sandbox_1(ma, __tsplusTrace)), __tsplusTrace);
1506
+ return self => {
1507
+ return unsandbox_1(f(sandbox_1(self, __tsplusTrace)), __tsplusTrace);
1461
1508
  };
1462
1509
  }
1463
1510
  /**
@@ -1472,17 +1519,6 @@ function sequenceIterable(as, __tsplusTrace) {
1472
1519
  function sequenceIterableDiscard(as, __tsplusTrace) {
1473
1520
  return foreachDiscard_1(as, _function.identity, __tsplusTrace);
1474
1521
  }
1475
- /**
1476
- * Creates a `IO` that has succeeded with a pure value
1477
- *
1478
- * @tsplus static fncts.io.IOOps succeedNow
1479
- */
1480
- function succeedNow_1(value, __tsplusTrace) {
1481
- const io = new _definition2.IOPrimitive(0 /* IOTag.SucceedNow */);
1482
- io.i0 = value;
1483
- io.trace = __tsplusTrace;
1484
- return io;
1485
- }
1486
1522
  /**
1487
1523
  * Imports a total synchronous effect into a pure `IO` value.
1488
1524
  * The effect must not throw any exceptions. If you wonder if the effect
@@ -1497,6 +1533,17 @@ function succeed_1(effect, __tsplusTrace) {
1497
1533
  io.trace = __tsplusTrace;
1498
1534
  return io;
1499
1535
  }
1536
+ /**
1537
+ * Creates a `IO` that has succeeded with a pure value
1538
+ *
1539
+ * @tsplus static fncts.io.IOOps succeedNow
1540
+ */
1541
+ function succeedNow_1(value, __tsplusTrace) {
1542
+ const io = new _definition2.IOPrimitive(0 /* IOTag.SucceedNow */);
1543
+ io.i0 = value;
1544
+ io.trace = __tsplusTrace;
1545
+ return io;
1546
+ }
1500
1547
  /**
1501
1548
  * @tsplus pipeable fncts.io.IO summarized
1502
1549
  */
@@ -1515,8 +1562,8 @@ function summarized_1(summary, f, __tsplusTrace) {
1515
1562
  *
1516
1563
  * @tsplus getter fncts.io.IO swap
1517
1564
  */
1518
- function swap_1(pab, __tsplusTrace) {
1519
- return matchIO_1(succeedNow_1, failNow_1, __tsplusTrace)(pab);
1565
+ function swap_1(self, __tsplusTrace) {
1566
+ return matchIO_1(succeedNow_1, failNow_1, __tsplusTrace)(self);
1520
1567
  }
1521
1568
  /**
1522
1569
  * Swaps the error/value parameters, applies the function `f` and flips the parameters back
@@ -1524,61 +1571,7 @@ function swap_1(pab, __tsplusTrace) {
1524
1571
  * @tsplus pipeable fncts.io.IO swapWith
1525
1572
  */
1526
1573
  function swapWith_1(f, __tsplusTrace) {
1527
- return fa => swap_1(f(swap_1(fa, __tsplusTrace)), __tsplusTrace);
1528
- }
1529
- /**
1530
- * A more powerful variation of `timed` that allows specifying the clock.
1531
- *
1532
- * @tsplus pipeable fncts.io.IO timedWith
1533
- */
1534
- function timedWith(msTime, __tsplusTrace) {
1535
- return ma => summarized_1(msTime, (start, end) => end - start, __tsplusTrace)(ma);
1536
- }
1537
- /**
1538
- * @tsplus static fncts.io.IOOps attempt
1539
- */
1540
- function attempt(effect, __tsplusTrace) {
1541
- return defer_1(() => {
1542
- try {
1543
- return tsplus_module_23.succeed(effect(), __tsplusTrace);
1544
- } catch (u) {
1545
- return withFiberRuntime_1(fiberState => {
1546
- if (!fiberState.isFatal(u)) {
1547
- throw new _exceptions.IOError(tsplus_module_2.fail(u));
1548
- } else {
1549
- throw u;
1550
- }
1551
- }, __tsplusTrace);
1552
- }
1553
- }, __tsplusTrace);
1554
- }
1555
- /**
1556
- * Creates a `IO` that has succeeded with a pure value
1557
- *
1558
- * @tsplus static fncts.io.IOOps tryCatch
1559
- */
1560
- function tryCatch_1(effect, onThrow, __tsplusTrace) {
1561
- return defer_1(() => {
1562
- try {
1563
- return tsplus_module_23.succeed(effect(), __tsplusTrace);
1564
- } catch (u) {
1565
- return withFiberRuntime_1(fiberState => {
1566
- if (!fiberState.isFatal(u)) {
1567
- throw new _exceptions.IOError(tsplus_module_2.fail(onThrow(u)));
1568
- } else {
1569
- throw u;
1570
- }
1571
- }, __tsplusTrace);
1572
- }
1573
- }, __tsplusTrace);
1574
- }
1575
- /**
1576
- * Returns an `IO` that submerges an `Either` into the `IO`.
1577
- *
1578
- * @tsplus getter fncts.io.IO absolve
1579
- */
1580
- function absolve(ma, __tsplusTrace) {
1581
- return flatMap_1(ea => tsplus_module_4.match(failNow_1, succeedNow_1)(ea), __tsplusTrace)(ma);
1574
+ return self => swap_1(f(swap_1(self, __tsplusTrace)), __tsplusTrace);
1582
1575
  }
1583
1576
  /**
1584
1577
  * Composes computations in sequence, using the return value of one computation as input for the next
@@ -1600,8 +1593,8 @@ function tap(f, __tsplusTrace) {
1600
1593
  * @tsplus pipeable fncts.io.IO tapCause
1601
1594
  */
1602
1595
  function tapCause(f, __tsplusTrace) {
1603
- return ma => {
1604
- return matchCauseIO_1(c => flatMap_1(() => failCauseNow_1(c, __tsplusTrace), __tsplusTrace)(f(c)), succeedNow_1, __tsplusTrace)(ma);
1596
+ return self => {
1597
+ return matchCauseIO_1(c => flatMap_1(() => failCauseNow_1(c, __tsplusTrace), __tsplusTrace)(f(c)), succeedNow_1, __tsplusTrace)(self);
1605
1598
  };
1606
1599
  }
1607
1600
  /**
@@ -1610,7 +1603,7 @@ function tapCause(f, __tsplusTrace) {
1610
1603
  * @tsplus pipeable fncts.io.IO tapError
1611
1604
  */
1612
1605
  function tapError(f, __tsplusTrace) {
1613
- return self => matchCauseIO_1(cause => tsplus_module_4.match(e => flatMap_1(() => failCauseNow_1(cause, __tsplusTrace), __tsplusTrace)(f(e)), _ => failCauseNow_1(cause, __tsplusTrace))(tsplus_module_2.failureOrCause(cause)), succeedNow_1, __tsplusTrace)(self);
1606
+ return self => matchCauseIO_1(cause => tsplus_module_4.match(e => flatMap_1(() => failCauseNow_1(cause, __tsplusTrace), __tsplusTrace)(f(e)), _ => failCauseNow_1(cause, __tsplusTrace))(tsplus_module_1.failureOrCause(cause)), succeedNow_1, __tsplusTrace)(self);
1614
1607
  }
1615
1608
  /**
1616
1609
  * Returns an effect that effectually "peeks" at the cause of the failure of
@@ -1623,18 +1616,46 @@ function tapErrorCause(f, __tsplusTrace) {
1623
1616
  return matchCauseIO_1(cause => zipRight_1(failCauseNow_1(cause, __tsplusTrace), __tsplusTrace)(f(cause)), succeedNow_1, __tsplusTrace)(self);
1624
1617
  };
1625
1618
  }
1619
+ /**
1620
+ * A more powerful variation of `timed` that allows specifying the clock.
1621
+ *
1622
+ * @tsplus pipeable fncts.io.IO timedWith
1623
+ */
1624
+ function timedWith(msTime, __tsplusTrace) {
1625
+ return self => summarized_1(msTime, (start, end) => end - start, __tsplusTrace)(self);
1626
+ }
1627
+ /**
1628
+ * Creates a `IO` that has succeeded with a pure value
1629
+ *
1630
+ * @tsplus static fncts.io.IOOps tryCatch
1631
+ */
1632
+ function tryCatch_1(effect, onThrow, __tsplusTrace) {
1633
+ return defer_1(() => {
1634
+ try {
1635
+ return tsplus_module_10.succeed(effect(), __tsplusTrace);
1636
+ } catch (u) {
1637
+ return withFiberRuntime_1(fiberState => {
1638
+ if (!fiberState.isFatal(u)) {
1639
+ throw new _exceptions.IOError(tsplus_module_1.fail(onThrow(u)));
1640
+ } else {
1641
+ throw u;
1642
+ }
1643
+ }, __tsplusTrace);
1644
+ }
1645
+ }, __tsplusTrace);
1646
+ }
1626
1647
  /**
1627
1648
  * @tsplus pipeable fncts.io.IO tryOrElse
1628
1649
  */
1629
1650
  function tryOrElse_1(that, onSuccess, __tsplusTrace) {
1630
- return ma => {
1631
- return matchCauseIO_1(cause => tsplus_module_16.match(that, failCauseNow_1)(tsplus_module_2.keepDefects(cause)), onSuccess, __tsplusTrace)(ma);
1651
+ return self => {
1652
+ return matchCauseIO_1(cause => tsplus_module_17.match(that, failCauseNow_1)(tsplus_module_1.keepDefects(cause)), onSuccess, __tsplusTrace)(self);
1632
1653
  };
1633
1654
  }
1634
1655
  /**
1635
1656
  * @tsplus static fncts.io.IOOps unit
1636
1657
  */
1637
- const unit_1 = /*#__PURE__*/succeedNow_1(undefined, fileName_1 + ":1880:45");
1658
+ const unit_1 = /*#__PURE__*/succeedNow_1(undefined, fileName_1 + ":1866:45");
1638
1659
  const unit = exports.unit = unit_1;
1639
1660
  /**
1640
1661
  * Converts an option on errors into an option on values.
@@ -1642,7 +1663,7 @@ const unit = exports.unit = unit_1;
1642
1663
  * @tsplus getter fncts.io.IO unjust
1643
1664
  */
1644
1665
  function unjust(self, __tsplusTrace) {
1645
- return matchIO_1(e => tsplus_module_16.match(() => succeedNow_1(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), failNow_1)(e), a => succeedNow_1(tsplus_module_3.just(a, __tsplusTrace), __tsplusTrace), __tsplusTrace)(self);
1666
+ return matchIO_1(e => tsplus_module_17.match(() => succeedNow_1(tsplus_module_2.nothing(__tsplusTrace), __tsplusTrace), failNow_1)(e), a => succeedNow_1(tsplus_module_2.just(a, __tsplusTrace), __tsplusTrace), __tsplusTrace)(self);
1646
1667
  }
1647
1668
  /**
1648
1669
  * Takes some fiber failures and converts them into errors, using the
@@ -1651,8 +1672,8 @@ function unjust(self, __tsplusTrace) {
1651
1672
  * @tsplus pipeable fncts.io.IO unrefineWith
1652
1673
  */
1653
1674
  function unrefineWith_1(pf, f, __tsplusTrace) {
1654
- return fa => {
1655
- return catchAllCause_1(cause => tsplus_module_16.match(() => failCauseNow_1(tsplus_module_2.map(f)(cause), __tsplusTrace), failNow_1)(tsplus_module_2.find(c => tsplus_module_2.isHalt(c) ? pf(c.value) : tsplus_module_3.nothing(__tsplusTrace))(cause)), __tsplusTrace)(fa);
1675
+ return self => {
1676
+ return catchAllCause_1(cause => tsplus_module_17.match(() => failCauseNow_1(tsplus_module_1.map(f)(cause), __tsplusTrace), failNow_1)(tsplus_module_1.find(c => tsplus_module_1.isHalt(c) ? pf(c.value) : tsplus_module_2.nothing(__tsplusTrace))(cause)), __tsplusTrace)(self);
1656
1677
  };
1657
1678
  }
1658
1679
  /**
@@ -1660,8 +1681,8 @@ function unrefineWith_1(pf, f, __tsplusTrace) {
1660
1681
  *
1661
1682
  * @tsplus getter fncts.io.IO unsandbox
1662
1683
  */
1663
- function unsandbox_1(ma, __tsplusTrace) {
1664
- return mapErrorCause_1(cause => tsplus_module_2.flatten(cause), __tsplusTrace)(ma);
1684
+ function unsandbox_1(self, __tsplusTrace) {
1685
+ return mapErrorCause_1(cause => tsplus_module_1.flatten(cause), __tsplusTrace)(self);
1665
1686
  }
1666
1687
  /**
1667
1688
  * Updates the `FiberRef` values for the fiber running this effect using the
@@ -1679,12 +1700,27 @@ function updateFiberRefs(f, __tsplusTrace) {
1679
1700
  * @tsplus fluent fncts.io.IO __call
1680
1701
  */
1681
1702
  const via = exports.via = _function.pipe;
1703
+ /**
1704
+ * @tsplus static fncts.io.IOOps stackTrace
1705
+ */
1706
+ function stackTrace_1(__tsplusTrace) {
1707
+ return withFiberRuntime_1(state => succeedNow_1(state.generateStackTrace(), __tsplusTrace), __tsplusTrace);
1708
+ }
1709
+ /**
1710
+ * @tsplus static fncts.io.IOOps updateRuntimeFlags
1711
+ */
1712
+ function updateRuntimeFlags(patch, __tsplusTrace) {
1713
+ const io = new _definition2.IOPrimitive(6 /* IOTag.UpdateRuntimeFlags */);
1714
+ io.i0 = patch;
1715
+ io.trace = __tsplusTrace;
1716
+ return io;
1717
+ }
1682
1718
  /**
1683
1719
  * @tsplus pipeable fncts.io.IO when
1684
1720
  */
1685
1721
  function when(b, __tsplusTrace) {
1686
- return ma => {
1687
- return whenIO_1(succeed_1(b, __tsplusTrace), __tsplusTrace)(ma);
1722
+ return self => {
1723
+ return whenIO_1(succeed_1(b, __tsplusTrace), __tsplusTrace)(self);
1688
1724
  };
1689
1725
  }
1690
1726
  /**
@@ -1694,33 +1730,26 @@ function when(b, __tsplusTrace) {
1694
1730
  * @tsplus static fncts.io.IOOps whenIO
1695
1731
  */
1696
1732
  function whenIO_1(mb, __tsplusTrace) {
1697
- return ma => {
1698
- return flatMap_1(b => b ? asJust_1(ma, __tsplusTrace) : nothing_1, __tsplusTrace)(mb);
1733
+ return self => {
1734
+ return flatMap_1(b => b ? asJust_1(self, __tsplusTrace) : nothing_1, __tsplusTrace)(mb);
1699
1735
  };
1700
1736
  }
1701
1737
  /**
1702
- * @tsplus static fncts.io.IOOps withFiberRuntime
1738
+ * @tsplus static fncts.io.IOOps whileLoop
1703
1739
  */
1704
- function withFiberRuntime_1(onState, __tsplusTrace) {
1705
- const io = new _definition2.IOPrimitive(10 /* IOTag.Stateful */);
1706
- io.i0 = onState;
1707
- io.trace = __tsplusTrace;
1740
+ function whileLoop_1(check, body, process, __tsPlusTrace) {
1741
+ const io = new _definition2.IOPrimitive(9 /* IOTag.WhileLoop */);
1742
+ io.i0 = check;
1743
+ io.i1 = body;
1744
+ io.i2 = process;
1708
1745
  return io;
1709
1746
  }
1710
1747
  /**
1711
- * @tsplus static fncts.io.IOOps updateRuntimeFlags
1712
- */
1713
- function updateRuntimeFlags(patch, __tsplusTrace) {
1714
- const io = new _definition2.IOPrimitive(7 /* IOTag.UpdateRuntimeFlags */);
1715
- io.i0 = patch;
1716
- io.trace = __tsplusTrace;
1717
- return io;
1718
- }
1719
- /**
1720
- * @tsplus static fncts.io.IOOps stackTrace
1748
+ * @tsplus static fncts.io.IOOps withFiberRuntime
1721
1749
  */
1722
- function stackTrace_1(__tsplusTrace) {
1723
- const io = new _definition2.IOPrimitive(9 /* IOTag.GenerateStackTrace */);
1750
+ function withFiberRuntime_1(onState, __tsplusTrace) {
1751
+ const io = new _definition2.IOPrimitive(8 /* IOTag.Stateful */);
1752
+ io.i0 = onState;
1724
1753
  io.trace = __tsplusTrace;
1725
1754
  return io;
1726
1755
  }
@@ -1731,7 +1760,7 @@ function stackTrace_1(__tsplusTrace) {
1731
1760
  *
1732
1761
  * @tsplus static fncts.io.IOOps yieldNow
1733
1762
  */
1734
- const yieldNow_1 = /*#__PURE__*/new _definition2.IOPrimitive(12 /* IOTag.YieldNow */);
1763
+ const yieldNow_1 = /*#__PURE__*/new _definition2.IOPrimitive(10 /* IOTag.YieldNow */);
1735
1764
  const yieldNow = exports.yieldNow = yieldNow_1;
1736
1765
  /**
1737
1766
  * @tsplus pipeable fncts.io.IO zip
@@ -1741,6 +1770,26 @@ function zip(that, __tsplusTrace) {
1741
1770
  return zipWith_1(that, _function.tuple, __tsplusTrace)(self);
1742
1771
  };
1743
1772
  }
1773
+ /**
1774
+ * @tsplus pipeable fncts.io.IO zipLeft
1775
+ * @tsplus pipeable-operator fncts.io.IO <
1776
+ */
1777
+ function zipLeft(fb, __tsplusTrace) {
1778
+ return self => {
1779
+ return flatMap_1(a => map_1(() => a, __tsplusTrace)(fb), __tsplusTrace)(self);
1780
+ };
1781
+ }
1782
+ /**
1783
+ * Combine two effectful actions, keeping only the result of the second
1784
+ *
1785
+ * @tsplus pipeable fncts.io.IO zipRight
1786
+ * @tsplus pipeable-operator fncts.io.IO >
1787
+ */
1788
+ function zipRight_1(fb, __tsplusTrace) {
1789
+ return self => {
1790
+ return flatMap_1(() => fb, __tsplusTrace)(self);
1791
+ };
1792
+ }
1744
1793
  /**
1745
1794
  * @tsplus pipeable fncts.io.IO zipWith
1746
1795
  */
@@ -1749,6 +1798,13 @@ function zipWith_1(that, f, __tsplusTrace) {
1749
1798
  return flatMap_1(a => map_1(b => f(a, b), __tsplusTrace)(that), __tsplusTrace)(self);
1750
1799
  };
1751
1800
  }
1801
+ /**
1802
+ * @internal
1803
+ */
1804
+ const __adapter = _ => {
1805
+ return _;
1806
+ };
1807
+ exports.__adapter = __adapter;
1752
1808
  class GenIO {
1753
1809
  constructor(effect, _trace) {
1754
1810
  this.effect = effect;
@@ -1758,14 +1814,7 @@ class GenIO {
1758
1814
  return yield this;
1759
1815
  }
1760
1816
  }
1761
- /**
1762
- * @internal
1763
- */
1764
1817
  exports.GenIO = GenIO;
1765
- const __adapter = _ => {
1766
- return _;
1767
- };
1768
- exports.__adapter = __adapter;
1769
1818
  const adapter = (_, __tsplusTrace) => {
1770
1819
  return new GenIO(__adapter(_), __tsplusTrace);
1771
1820
  };