@fncts/io 0.0.32 → 0.0.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (275) hide show
  1. package/Fiber/FiberRuntime.d.ts +3 -3
  2. package/IO/api.d.ts +2 -1
  3. package/IO/definition.d.ts +34 -24
  4. package/IO/runtime.d.ts +7 -17
  5. package/STM/definition.d.ts +1 -1
  6. package/Stream/api.d.ts +89 -1
  7. package/_cjs/Channel/api/mapOutConcurrentIO.cjs +1 -1
  8. package/_cjs/Channel/api/mapOutConcurrentIO.cjs.map +1 -1
  9. package/_cjs/Channel/api/mergeAllWith.cjs +3 -3
  10. package/_cjs/Channel/api/mergeAllWith.cjs.map +1 -1
  11. package/_cjs/Channel/api/mergeWith.cjs +4 -4
  12. package/_cjs/Channel/api/mergeWith.cjs.map +1 -1
  13. package/_cjs/Channel/api/toPull.cjs +2 -2
  14. package/_cjs/Channel/api/toPull.cjs.map +1 -1
  15. package/_cjs/Channel/api.cjs +6 -6
  16. package/_cjs/Channel/api.cjs.map +1 -1
  17. package/_cjs/Channel/internal/ChannelExecutor.cjs +10 -10
  18. package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
  19. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs +3 -3
  20. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs.map +1 -1
  21. package/_cjs/Clock/live.cjs +1 -1
  22. package/_cjs/Clock/live.cjs.map +1 -1
  23. package/_cjs/Fiber/FiberRuntime.cjs +78 -47
  24. package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
  25. package/_cjs/Fiber/api/collectAll.cjs +1 -1
  26. package/_cjs/Fiber/api/collectAll.cjs.map +1 -1
  27. package/_cjs/Fiber/api/mapIO.cjs +1 -1
  28. package/_cjs/Fiber/api/mapIO.cjs.map +1 -1
  29. package/_cjs/Fiber/api/zipWith.cjs +1 -1
  30. package/_cjs/Fiber/api/zipWith.cjs.map +1 -1
  31. package/_cjs/Fiber/constructors.cjs +5 -5
  32. package/_cjs/Fiber/constructors.cjs.map +1 -1
  33. package/_cjs/FiberRef/unsafe.cjs +3 -2
  34. package/_cjs/FiberRef/unsafe.cjs.map +1 -1
  35. package/_cjs/Future/api.cjs +4 -4
  36. package/_cjs/Future/api.cjs.map +1 -1
  37. package/_cjs/Hub/internal.cjs +1 -1
  38. package/_cjs/Hub/internal.cjs.map +1 -1
  39. package/_cjs/IO/api/asyncIO.cjs +1 -1
  40. package/_cjs/IO/api/asyncIO.cjs.map +1 -1
  41. package/_cjs/IO/api/asyncInterrupt.cjs +2 -2
  42. package/_cjs/IO/api/asyncInterrupt.cjs.map +1 -1
  43. package/_cjs/IO/api/concurrency.cjs +3 -3
  44. package/_cjs/IO/api/concurrency.cjs.map +1 -1
  45. package/_cjs/IO/api/daemonChildren.cjs +1 -1
  46. package/_cjs/IO/api/daemonChildren.cjs.map +1 -1
  47. package/_cjs/IO/api/fork.cjs +2 -1
  48. package/_cjs/IO/api/fork.cjs.map +1 -1
  49. package/_cjs/IO/api/interrupt.cjs +2 -2
  50. package/_cjs/IO/api/interrupt.cjs.map +1 -1
  51. package/_cjs/IO/api/repeat.cjs +2 -2
  52. package/_cjs/IO/api/repeat.cjs.map +1 -1
  53. package/_cjs/IO/api/timeout.cjs +1 -1
  54. package/_cjs/IO/api/timeout.cjs.map +1 -1
  55. package/_cjs/IO/api/transplant.cjs +1 -1
  56. package/_cjs/IO/api/transplant.cjs.map +1 -1
  57. package/_cjs/IO/api/withEarlyRelease.cjs +1 -1
  58. package/_cjs/IO/api/withEarlyRelease.cjs.map +1 -1
  59. package/_cjs/IO/api.cjs +33 -32
  60. package/_cjs/IO/api.cjs.map +1 -1
  61. package/_cjs/IO/definition.cjs +17 -31
  62. package/_cjs/IO/definition.cjs.map +1 -1
  63. package/_cjs/IO/runtime.cjs +45 -38
  64. package/_cjs/IO/runtime.cjs.map +1 -1
  65. package/_cjs/Logger/api.cjs +3 -2
  66. package/_cjs/Logger/api.cjs.map +1 -1
  67. package/_cjs/MVar/api.cjs +11 -11
  68. package/_cjs/MVar/api.cjs.map +1 -1
  69. package/_cjs/Push/api.cjs +3 -3
  70. package/_cjs/Push/api.cjs.map +1 -1
  71. package/_cjs/Push/internal.cjs +1 -1
  72. package/_cjs/Push/internal.cjs.map +1 -1
  73. package/_cjs/Queue/api/filterInputIO.cjs +2 -2
  74. package/_cjs/Queue/api/filterInputIO.cjs.map +1 -1
  75. package/_cjs/Ref/Derived.cjs +4 -4
  76. package/_cjs/Ref/Derived.cjs.map +1 -1
  77. package/_cjs/Ref/DerivedAll.cjs +5 -5
  78. package/_cjs/Ref/DerivedAll.cjs.map +1 -1
  79. package/_cjs/Ref/Synchronized/api.cjs +3 -3
  80. package/_cjs/Ref/Synchronized/api.cjs.map +1 -1
  81. package/_cjs/Ref/api/collect.cjs +1 -1
  82. package/_cjs/Ref/api/collect.cjs.map +1 -1
  83. package/_cjs/Ref/api/dimap.cjs +3 -3
  84. package/_cjs/Ref/api/dimap.cjs.map +1 -1
  85. package/_cjs/Ref/api/filter.cjs +2 -2
  86. package/_cjs/Ref/api/filter.cjs.map +1 -1
  87. package/_cjs/Ref/api.cjs +2 -3
  88. package/_cjs/Ref/api.cjs.map +1 -1
  89. package/_cjs/RefSubject/Atomic.cjs +6 -6
  90. package/_cjs/RefSubject/Atomic.cjs.map +1 -1
  91. package/_cjs/STM/api.cjs +5 -5
  92. package/_cjs/STM/api.cjs.map +1 -1
  93. package/_cjs/STM/definition.cjs +1 -1
  94. package/_cjs/STM/definition.cjs.map +1 -1
  95. package/_cjs/STM/internal/CommitState.cjs +5 -4
  96. package/_cjs/STM/internal/CommitState.cjs.map +1 -1
  97. package/_cjs/STM/internal/Journal.cjs +8 -8
  98. package/_cjs/STM/internal/Journal.cjs.map +1 -1
  99. package/_cjs/Schedule/api/driver.cjs +3 -3
  100. package/_cjs/Schedule/api/driver.cjs.map +1 -1
  101. package/_cjs/Schedule/api.cjs +8 -8
  102. package/_cjs/Schedule/api.cjs.map +1 -1
  103. package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs +1 -1
  104. package/_cjs/Scope/ReleaseMap/api/releaseAll.cjs.map +1 -1
  105. package/_cjs/Scope/ReleaseMap/api.cjs +3 -3
  106. package/_cjs/Scope/ReleaseMap/api.cjs.map +1 -1
  107. package/_cjs/ScopedRef/api.cjs +1 -1
  108. package/_cjs/ScopedRef/api.cjs.map +1 -1
  109. package/_cjs/Semaphore.cjs +2 -2
  110. package/_cjs/Semaphore.cjs.map +1 -1
  111. package/_cjs/Sink/api.cjs +6 -6
  112. package/_cjs/Sink/api.cjs.map +1 -1
  113. package/_cjs/Stream/api/zipAllWith.cjs +8 -8
  114. package/_cjs/Stream/api/zipAllWith.cjs.map +1 -1
  115. package/_cjs/Stream/api/zipWithChunks.cjs +6 -6
  116. package/_cjs/Stream/api/zipWithChunks.cjs.map +1 -1
  117. package/_cjs/Stream/api.cjs +370 -130
  118. package/_cjs/Stream/api.cjs.map +1 -1
  119. package/_cjs/Stream/internal/Handoff.cjs +2 -2
  120. package/_cjs/Stream/internal/Handoff.cjs.map +1 -1
  121. package/_cjs/Stream/internal/Pull.cjs +2 -2
  122. package/_cjs/Stream/internal/Pull.cjs.map +1 -1
  123. package/_cjs/Stream/internal/Take.cjs +6 -6
  124. package/_cjs/Stream/internal/Take.cjs.map +1 -1
  125. package/_cjs/Stream/internal/util.cjs +3 -2
  126. package/_cjs/Stream/internal/util.cjs.map +1 -1
  127. package/_cjs/TFuture/api.cjs +3 -3
  128. package/_cjs/TFuture/api.cjs.map +1 -1
  129. package/_cjs/TFuture/constructors.cjs +1 -1
  130. package/_cjs/TFuture/constructors.cjs.map +1 -1
  131. package/_cjs/TRef/definition.cjs +9 -9
  132. package/_cjs/TRef/definition.cjs.map +1 -1
  133. package/_cjs/collection/immutable/Conc/findIO.cjs +3 -3
  134. package/_cjs/collection/immutable/Conc/findIO.cjs.map +1 -1
  135. package/_cjs/data/Exit/foreachIO.cjs +1 -1
  136. package/_cjs/data/Exit/foreachIO.cjs.map +1 -1
  137. package/_mjs/Channel/api/mapOutConcurrentIO.mjs +1 -1
  138. package/_mjs/Channel/api/mapOutConcurrentIO.mjs.map +1 -1
  139. package/_mjs/Channel/api/mergeAllWith.mjs +3 -3
  140. package/_mjs/Channel/api/mergeAllWith.mjs.map +1 -1
  141. package/_mjs/Channel/api/mergeWith.mjs +4 -4
  142. package/_mjs/Channel/api/mergeWith.mjs.map +1 -1
  143. package/_mjs/Channel/api/toPull.mjs +2 -2
  144. package/_mjs/Channel/api/toPull.mjs.map +1 -1
  145. package/_mjs/Channel/api.mjs +6 -6
  146. package/_mjs/Channel/api.mjs.map +1 -1
  147. package/_mjs/Channel/internal/ChannelExecutor.mjs +10 -10
  148. package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
  149. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs +3 -3
  150. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs.map +1 -1
  151. package/_mjs/Clock/live.mjs +1 -1
  152. package/_mjs/Clock/live.mjs.map +1 -1
  153. package/_mjs/Fiber/FiberRuntime.mjs +78 -47
  154. package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
  155. package/_mjs/Fiber/api/collectAll.mjs +1 -1
  156. package/_mjs/Fiber/api/collectAll.mjs.map +1 -1
  157. package/_mjs/Fiber/api/mapIO.mjs +1 -1
  158. package/_mjs/Fiber/api/mapIO.mjs.map +1 -1
  159. package/_mjs/Fiber/api/zipWith.mjs +1 -1
  160. package/_mjs/Fiber/api/zipWith.mjs.map +1 -1
  161. package/_mjs/Fiber/constructors.mjs +5 -5
  162. package/_mjs/Fiber/constructors.mjs.map +1 -1
  163. package/_mjs/FiberRef/unsafe.mjs +3 -2
  164. package/_mjs/FiberRef/unsafe.mjs.map +1 -1
  165. package/_mjs/Future/api.mjs +4 -4
  166. package/_mjs/Future/api.mjs.map +1 -1
  167. package/_mjs/Hub/internal.mjs +1 -1
  168. package/_mjs/Hub/internal.mjs.map +1 -1
  169. package/_mjs/IO/api/asyncIO.mjs +1 -1
  170. package/_mjs/IO/api/asyncIO.mjs.map +1 -1
  171. package/_mjs/IO/api/asyncInterrupt.mjs +2 -2
  172. package/_mjs/IO/api/asyncInterrupt.mjs.map +1 -1
  173. package/_mjs/IO/api/concurrency.mjs +3 -3
  174. package/_mjs/IO/api/concurrency.mjs.map +1 -1
  175. package/_mjs/IO/api/daemonChildren.mjs +1 -1
  176. package/_mjs/IO/api/daemonChildren.mjs.map +1 -1
  177. package/_mjs/IO/api/fork.mjs +2 -1
  178. package/_mjs/IO/api/fork.mjs.map +1 -1
  179. package/_mjs/IO/api/interrupt.mjs +2 -2
  180. package/_mjs/IO/api/interrupt.mjs.map +1 -1
  181. package/_mjs/IO/api/repeat.mjs +2 -2
  182. package/_mjs/IO/api/repeat.mjs.map +1 -1
  183. package/_mjs/IO/api/timeout.mjs +1 -1
  184. package/_mjs/IO/api/timeout.mjs.map +1 -1
  185. package/_mjs/IO/api/transplant.mjs +1 -1
  186. package/_mjs/IO/api/transplant.mjs.map +1 -1
  187. package/_mjs/IO/api/withEarlyRelease.mjs +1 -1
  188. package/_mjs/IO/api/withEarlyRelease.mjs.map +1 -1
  189. package/_mjs/IO/api.mjs +32 -30
  190. package/_mjs/IO/api.mjs.map +1 -1
  191. package/_mjs/IO/definition.mjs +16 -27
  192. package/_mjs/IO/definition.mjs.map +1 -1
  193. package/_mjs/IO/runtime.mjs +42 -33
  194. package/_mjs/IO/runtime.mjs.map +1 -1
  195. package/_mjs/Logger/api.mjs +3 -2
  196. package/_mjs/Logger/api.mjs.map +1 -1
  197. package/_mjs/MVar/api.mjs +11 -11
  198. package/_mjs/MVar/api.mjs.map +1 -1
  199. package/_mjs/Push/api.mjs +3 -3
  200. package/_mjs/Push/api.mjs.map +1 -1
  201. package/_mjs/Push/internal.mjs +1 -1
  202. package/_mjs/Push/internal.mjs.map +1 -1
  203. package/_mjs/Queue/api/filterInputIO.mjs +2 -2
  204. package/_mjs/Queue/api/filterInputIO.mjs.map +1 -1
  205. package/_mjs/Ref/Derived.mjs +4 -4
  206. package/_mjs/Ref/Derived.mjs.map +1 -1
  207. package/_mjs/Ref/DerivedAll.mjs +5 -5
  208. package/_mjs/Ref/DerivedAll.mjs.map +1 -1
  209. package/_mjs/Ref/Synchronized/api.mjs +3 -3
  210. package/_mjs/Ref/Synchronized/api.mjs.map +1 -1
  211. package/_mjs/Ref/api/collect.mjs +1 -1
  212. package/_mjs/Ref/api/collect.mjs.map +1 -1
  213. package/_mjs/Ref/api/dimap.mjs +3 -3
  214. package/_mjs/Ref/api/dimap.mjs.map +1 -1
  215. package/_mjs/Ref/api/filter.mjs +2 -2
  216. package/_mjs/Ref/api/filter.mjs.map +1 -1
  217. package/_mjs/Ref/api.mjs +2 -1
  218. package/_mjs/Ref/api.mjs.map +1 -1
  219. package/_mjs/RefSubject/Atomic.mjs +6 -6
  220. package/_mjs/RefSubject/Atomic.mjs.map +1 -1
  221. package/_mjs/STM/api.mjs +5 -5
  222. package/_mjs/STM/api.mjs.map +1 -1
  223. package/_mjs/STM/definition.mjs +1 -1
  224. package/_mjs/STM/definition.mjs.map +1 -1
  225. package/_mjs/STM/internal/CommitState.mjs +5 -4
  226. package/_mjs/STM/internal/CommitState.mjs.map +1 -1
  227. package/_mjs/STM/internal/Journal.mjs +8 -8
  228. package/_mjs/STM/internal/Journal.mjs.map +1 -1
  229. package/_mjs/Schedule/api/driver.mjs +3 -3
  230. package/_mjs/Schedule/api/driver.mjs.map +1 -1
  231. package/_mjs/Schedule/api.mjs +8 -8
  232. package/_mjs/Schedule/api.mjs.map +1 -1
  233. package/_mjs/Scope/ReleaseMap/api/releaseAll.mjs +1 -1
  234. package/_mjs/Scope/ReleaseMap/api/releaseAll.mjs.map +1 -1
  235. package/_mjs/Scope/ReleaseMap/api.mjs +3 -3
  236. package/_mjs/Scope/ReleaseMap/api.mjs.map +1 -1
  237. package/_mjs/ScopedRef/api.mjs +1 -1
  238. package/_mjs/ScopedRef/api.mjs.map +1 -1
  239. package/_mjs/Semaphore.mjs +2 -2
  240. package/_mjs/Semaphore.mjs.map +1 -1
  241. package/_mjs/Sink/api.mjs +6 -6
  242. package/_mjs/Sink/api.mjs.map +1 -1
  243. package/_mjs/Stream/api/zipAllWith.mjs +8 -8
  244. package/_mjs/Stream/api/zipAllWith.mjs.map +1 -1
  245. package/_mjs/Stream/api/zipWithChunks.mjs +6 -6
  246. package/_mjs/Stream/api/zipWithChunks.mjs.map +1 -1
  247. package/_mjs/Stream/api.mjs +281 -58
  248. package/_mjs/Stream/api.mjs.map +1 -1
  249. package/_mjs/Stream/internal/Handoff.mjs +2 -2
  250. package/_mjs/Stream/internal/Handoff.mjs.map +1 -1
  251. package/_mjs/Stream/internal/Pull.mjs +2 -2
  252. package/_mjs/Stream/internal/Pull.mjs.map +1 -1
  253. package/_mjs/Stream/internal/Take.mjs +6 -6
  254. package/_mjs/Stream/internal/Take.mjs.map +1 -1
  255. package/_mjs/Stream/internal/util.mjs +3 -2
  256. package/_mjs/Stream/internal/util.mjs.map +1 -1
  257. package/_mjs/TFuture/api.mjs +3 -3
  258. package/_mjs/TFuture/api.mjs.map +1 -1
  259. package/_mjs/TFuture/constructors.mjs +1 -1
  260. package/_mjs/TFuture/constructors.mjs.map +1 -1
  261. package/_mjs/TRef/definition.mjs +9 -9
  262. package/_mjs/TRef/definition.mjs.map +1 -1
  263. package/_mjs/collection/immutable/Conc/findIO.mjs +3 -3
  264. package/_mjs/collection/immutable/Conc/findIO.mjs.map +1 -1
  265. package/_mjs/data/Exit/foreachIO.mjs +1 -1
  266. package/_mjs/data/Exit/foreachIO.mjs.map +1 -1
  267. package/_src/Fiber/FiberRuntime.ts +39 -16
  268. package/_src/IO/api/asyncIO.ts +1 -1
  269. package/_src/IO/api.ts +4 -3
  270. package/_src/IO/definition.ts +35 -28
  271. package/_src/IO/runtime.ts +36 -35
  272. package/_src/RefSubject/Atomic.ts +4 -4
  273. package/_src/STM/definition.ts +1 -1
  274. package/_src/Stream/api.ts +258 -8
  275. package/package.json +2 -2
@@ -51,18 +51,21 @@ import * as tsplus_module_49 from "@fncts/io/Fiber/api/poll";
51
51
  import * as tsplus_module_50 from "@fncts/io/IO/api/environment";
52
52
  import * as tsplus_module_51 from "@fncts/io/collection/immutable/Conc/findIO";
53
53
  import * as tsplus_module_52 from "@fncts/base/data/Exit/definition";
54
- import * as tsplus_module_53 from "@fncts/io/Stream/internal/Pull";
55
- import * as tsplus_module_54 from "@fncts/io/Queue/api/takeBetween";
56
- import * as tsplus_module_55 from "@fncts/io/Channel/api/interruptWhen";
57
- import * as tsplus_module_56 from "@fncts/io/Channel/api/mapOutConcurrentIO";
58
- import * as tsplus_module_57 from "@fncts/io/Channel/api/mergeMap";
59
- import * as tsplus_module_58 from "@fncts/io/Channel/internal/MergeDecision";
60
- import * as tsplus_module_59 from "@fncts/io/Channel/api/mergeWith";
61
- import * as tsplus_module_60 from "@fncts/io/Layer/MemoMap";
62
- import * as tsplus_module_61 from "@fncts/io/Layer/api";
63
- import * as tsplus_module_62 from "@fncts/io/Channel/api/runDrain";
64
- import * as tsplus_module_63 from "@fncts/base/data/exceptions";
65
- import * as tsplus_module_64 from "@fncts/io/Channel/api/toPull";
54
+ import * as tsplus_module_53 from "@fncts/base/collection/immutable/Conc/definition";
55
+ import * as tsplus_module_54 from "@fncts/io/Stream/internal/Pull";
56
+ import * as tsplus_module_55 from "@fncts/io/Queue/api/takeBetween";
57
+ import * as tsplus_module_56 from "@fncts/io/Channel/api/interruptWhen";
58
+ import * as tsplus_module_57 from "@fncts/io/Channel/api/mapOutConcurrentIO";
59
+ import * as tsplus_module_58 from "@fncts/io/Channel/api/mergeMap";
60
+ import * as tsplus_module_59 from "@fncts/io/Channel/internal/MergeDecision";
61
+ import * as tsplus_module_60 from "@fncts/io/Channel/api/mergeWith";
62
+ import * as tsplus_module_61 from "@fncts/io/Layer/MemoMap";
63
+ import * as tsplus_module_62 from "@fncts/io/Layer/api";
64
+ import * as tsplus_module_63 from "@fncts/io/Channel/api/runDrain";
65
+ import * as tsplus_module_64 from "@fncts/base/data/Maybe/definition";
66
+ import * as tsplus_module_65 from "@fncts/base/data/exceptions";
67
+ import * as tsplus_module_66 from "@fncts/io/IO/api/interrupt";
68
+ import * as tsplus_module_67 from "@fncts/io/Channel/api/toPull";
66
69
  export const aggregateAsyncWithin = aggregateAsyncWithin_1;
67
70
  export const aggregateAsyncWithinEither = aggregateAsyncWithinEither_1;
68
71
  export const zipRight = zipRight_1;
@@ -76,11 +79,14 @@ export const flatMap = flatMap_1;
76
79
  export const chunks = chunks_1;
77
80
  export const concat = concat_1;
78
81
  export const crossWith = crossWith_1;
82
+ export const defer = defer_1;
79
83
  export const distributedWithDynamic = distributedWithDynamic_1;
84
+ export const drain = drain_1;
80
85
  export const drop = drop_1;
81
86
  export const dropWhile = dropWhile_1;
82
87
  export const ensuring = ensuring_1;
83
88
  export const environment = environment_1;
89
+ export const execute = execute_1;
84
90
  export const failNow = failNow_1;
85
91
  export const failCauseNow = failCauseNow_1;
86
92
  export const filterMap = filterMap_1;
@@ -106,6 +112,7 @@ export const mapChunks = mapChunks_1;
106
112
  export const mapConcatChunk = mapConcatChunk_1;
107
113
  export const mapError = mapError_1;
108
114
  export const mapIO = mapIO_1;
115
+ export const merge = merge_1;
109
116
  export const mergeMap = mergeMap_1;
110
117
  export const mergeEither = mergeEither_1;
111
118
  export const mergeWith = mergeWith_1;
@@ -125,6 +132,8 @@ export const runScoped = runScoped_1;
125
132
  export const scanIO = scanIO_1;
126
133
  export const scanReduceIO = scanReduceIO_1;
127
134
  export const succeedNow = succeedNow_1;
135
+ export const tap = tap_1;
136
+ export const tapError = tapError_1;
128
137
  export const throttleEnforceIO = throttleEnforceIO_1;
129
138
  export const toHub = toHub_1;
130
139
  export const toPull = toPull_1;
@@ -136,7 +145,7 @@ export const unfoldIO = unfoldIO_1;
136
145
  export const unfoldChunk = unfoldChunk_1;
137
146
  export const unwrap = unwrap_1;
138
147
  export const unwrapScoped = unwrapScoped_1;
139
- import { constVoid, identity, tuple } from "@fncts/base/data/function";
148
+ import { identity, tuple } from "@fncts/base/data/function";
140
149
  import { DEFAULT_CHUNK_SIZE, Stream } from "./definition.mjs";
141
150
  import { Handoff } from "./internal/Handoff.mjs";
142
151
  import { ScheduleEnd, UpstreamEnd } from "./internal/SinkEndReason.mjs";
@@ -174,7 +183,7 @@ export function aggregateAsync(sink, __tsplusTrace) {
174
183
  */
175
184
  function aggregateAsyncWithin_1(sink, schedule, __tsplusTrace) {
176
185
  return stream => {
177
- return filterMap_1(cb => tsplus_module_4.match(() => tsplus_module_3.nothing(), tsplus_module_3.just)(cb), __tsplusTrace)(aggregateAsyncWithinEither_1(sink, schedule, __tsplusTrace)(stream));
186
+ return filterMap_1(cb => tsplus_module_4.match(() => tsplus_module_3.nothing(__tsplusTrace), tsplus_module_3.just)(cb), __tsplusTrace)(aggregateAsyncWithinEither_1(sink, schedule, __tsplusTrace)(stream));
178
187
  };
179
188
  }
180
189
  /**
@@ -227,15 +236,15 @@ function aggregateAsyncWithinEither_1(sink, schedule, __tsplusTrace) {
227
236
  function handleSide(leftovers, b, c, __tsplusTrace) {
228
237
  return tsplus_module_10.unwrap(() => tsplus_module_1.zipRight(tsplus_module_1.map(reason => tsplus_module_21.matchSinkEndReason({
229
238
  ScheduleEnd: () => tsplus_module_10.unwrapScoped(() => tsplus_module_1.flatMap(consumed_ => tsplus_module_1.flatMap(sinkFiber => tsplus_module_1.map(scheduleFiber => {
230
- const toWrite = tsplus_module_20.match(() => tsplus_module_19.make(tsplus_module_18.right(b)), c => tsplus_module_19.make(tsplus_module_18.right(b), tsplus_module_18.left(c)))(c);
239
+ const toWrite = tsplus_module_20.match(() => tsplus_module_19.make(tsplus_module_18.right(b, __tsplusTrace)), c => tsplus_module_19.make(tsplus_module_18.right(b, __tsplusTrace), tsplus_module_18.left(c, __tsplusTrace)))(c);
231
240
  return consumed_ ? tsplus_module_11.zipRight(scheduledAggregator(sinkFiber, scheduleFiber))(tsplus_module_10.write(() => toWrite)) : scheduledAggregator(sinkFiber, scheduleFiber);
232
- }, __tsplusTrace)(tsplus_module_17.forkScoped(timeout(tsplus_module_3.just(b), __tsplusTrace), __tsplusTrace)), __tsplusTrace)(forkSink), __tsplusTrace)(tsplus_module_14.get(consumed, __tsplusTrace))),
233
- UpstreamEnd: () => tsplus_module_10.unwrap(() => tsplus_module_1.map(p => p ? tsplus_module_10.write(() => tsplus_module_19.make(tsplus_module_18.right(b))) : tsplus_module_10.unit, __tsplusTrace)(tsplus_module_14.get(consumed, __tsplusTrace)))
241
+ }, __tsplusTrace)(tsplus_module_17.forkScoped(timeout(tsplus_module_3.just(b, __tsplusTrace), __tsplusTrace), __tsplusTrace)), __tsplusTrace)(forkSink), __tsplusTrace)(tsplus_module_14.get(consumed, __tsplusTrace))),
242
+ UpstreamEnd: () => tsplus_module_10.unwrap(() => tsplus_module_1.map(p => p ? tsplus_module_10.write(() => tsplus_module_19.make(tsplus_module_18.right(b, __tsplusTrace))) : tsplus_module_10.unit, __tsplusTrace)(tsplus_module_14.get(consumed, __tsplusTrace)))
234
243
  })(reason), __tsplusTrace)(tsplus_module_14.get(sinkEndReason, __tsplusTrace)), __tsplusTrace)(tsplus_module_13.set(tsplus_module_12.flatten(leftovers), __tsplusTrace)(sinkLeftovers)));
235
244
  }
236
- return tsplus_module_10.unwrap(() => tsplus_module_26.raceWith(() => tsplus_module_22.join(scheduleFiber, __tsplusTrace), (sinkExit, scheduleFiber) => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.nothing(), __tsplusTrace), __tsplusTrace)(tsplus_module_1.fromExit(() => sinkExit, __tsplusTrace)), __tsplusTrace)(tsplus_module_23.interrupt(scheduleFiber)), (scheduleExit, sinkFiber) => tsplus_module_1.matchCauseIO(cause => tsplus_module_4.match(() => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.nothing(), __tsplusTrace), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_5.offer(tsplus_module_5.end(new ScheduleEnd()))(handoff), __tsplusTrace)), cause => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.nothing(), __tsplusTrace), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_5.offer(tsplus_module_5.halt(cause))(handoff), __tsplusTrace)))(tsplus_module_25.failureOrCause(cause)), c => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.just(c), __tsplusTrace), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_5.offer(tsplus_module_5.end(new ScheduleEnd()))(handoff), __tsplusTrace)), __tsplusTrace)(tsplus_module_1.fromExit(() => scheduleExit, __tsplusTrace)), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)));
245
+ return tsplus_module_10.unwrap(() => tsplus_module_26.raceWith(() => tsplus_module_22.join(scheduleFiber, __tsplusTrace), (sinkExit, scheduleFiber) => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), __tsplusTrace)(tsplus_module_1.fromExit(() => sinkExit, __tsplusTrace)), __tsplusTrace)(tsplus_module_23.interrupt(scheduleFiber)), (scheduleExit, sinkFiber) => tsplus_module_1.matchCauseIO(cause => tsplus_module_4.match(() => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_5.offer(tsplus_module_5.end(new ScheduleEnd()))(handoff), __tsplusTrace)), cause => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_5.offer(tsplus_module_5.halt(cause))(handoff), __tsplusTrace)))(tsplus_module_25.failureOrCause(cause)), c => tsplus_module_1.zipRight(tsplus_module_1.map(([leftovers, b]) => handleSide(leftovers, b, tsplus_module_3.just(c, __tsplusTrace), __tsplusTrace), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_5.offer(tsplus_module_5.end(new ScheduleEnd()))(handoff), __tsplusTrace)), __tsplusTrace)(tsplus_module_1.fromExit(() => scheduleExit, __tsplusTrace)), __tsplusTrace)(tsplus_module_22.join(sinkFiber, __tsplusTrace)));
237
246
  };
238
- return unwrapScoped_1(tsplus_module_1.flatMap(() => tsplus_module_1.flatMap(sinkFiber => tsplus_module_1.map(scheduleFiber => new Stream(scheduledAggregator(sinkFiber, scheduleFiber)), __tsplusTrace)(tsplus_module_17.forkScoped(timeout(tsplus_module_3.nothing(), __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_17.forkScoped(tsplus_module_16.runScoped(tsplus_module_10.doneCollect(tsplus_module_10.pipeToOrFail(sink.channel)(handoffConsumer))), __tsplusTrace)), __tsplusTrace)(tsplus_module_17.forkScoped(tsplus_module_16.runScoped(tsplus_module_10.pipeTo(handoffProducer)(stream.channel)), __tsplusTrace)), __tsplusTrace);
247
+ return unwrapScoped_1(tsplus_module_1.flatMap(() => tsplus_module_1.flatMap(sinkFiber => tsplus_module_1.map(scheduleFiber => new Stream(scheduledAggregator(sinkFiber, scheduleFiber)), __tsplusTrace)(tsplus_module_17.forkScoped(timeout(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_17.forkScoped(tsplus_module_16.runScoped(tsplus_module_10.doneCollect(tsplus_module_10.pipeToOrFail(sink.channel)(handoffConsumer))), __tsplusTrace)), __tsplusTrace)(tsplus_module_17.forkScoped(tsplus_module_16.runScoped(tsplus_module_10.pipeTo(handoffProducer)(stream.channel)), __tsplusTrace)), __tsplusTrace);
239
248
  }, __tsplusTrace)(fromIO_1(deps, __tsplusTrace));
240
249
  };
241
250
  }
@@ -282,7 +291,11 @@ function asyncInterrupt_1(register, outputBuffer = 16, __tsplusTrace) {
282
291
  return ensuring_1(canceler, __tsplusTrace)(new Stream(loop));
283
292
  }, stream => unwrap_1(tsplus_module_1.as(() => stream, __tsplusTrace)(tsplus_module_28.shutdown(output, __tsplusTrace)), __tsplusTrace))(eitherStream), __tsplusTrace)(tsplus_module_1.succeed(() => register((k, cb) => {
284
293
  const effect = tsplus_module_1.flatMap(a => tsplus_module_28.offer(a, __tsplusTrace)(output), __tsplusTrace)(tsplus_module_27.fromPull(k));
285
- return runtime.unsafeRunAsyncWith(effect, cb || constVoid, __tsplusTrace);
294
+ const fiber = runtime.makeFiber(effect, __tsplusTrace);
295
+ if (cb) {
296
+ fiber.addObserver(cb);
297
+ }
298
+ fiber.start(effect);
286
299
  }), __tsplusTrace)), __tsplusTrace)(tsplus_module_29.runtime(__tsplusTrace)), __tsplusTrace)(tsplus_module_31.acquireRelease(() => tsplus_module_30.makeBounded(outputBuffer, __tsplusTrace), queue => tsplus_module_28.shutdown(queue, __tsplusTrace), __tsplusTrace)), __tsplusTrace);
287
300
  }
288
301
  /**
@@ -294,7 +307,7 @@ function asyncInterrupt_1(register, outputBuffer = 16, __tsplusTrace) {
294
307
  * @tsplus static fncts.io.StreamOps asyncMaybe
295
308
  */
296
309
  function asyncMaybe_1(register, outputBuffer = 16, __tsplusTrace) {
297
- return asyncInterrupt_1(k => tsplus_module_20.match(() => tsplus_module_18.left(tsplus_module_1.unit), tsplus_module_18.right)(register(k)), outputBuffer, __tsplusTrace);
310
+ return asyncInterrupt_1(k => tsplus_module_20.match(() => tsplus_module_18.left(tsplus_module_1.unit, __tsplusTrace), tsplus_module_18.right)(register(k)), outputBuffer, __tsplusTrace);
298
311
  }
299
312
  /**
300
313
  * @tsplus static fncts.io.StreamOps async
@@ -302,7 +315,7 @@ function asyncMaybe_1(register, outputBuffer = 16, __tsplusTrace) {
302
315
  export function async(register, outputBuffer = 16, __tsplusTrace) {
303
316
  return asyncMaybe_1(cb => {
304
317
  register(cb);
305
- return tsplus_module_3.nothing();
318
+ return tsplus_module_3.nothing(__tsplusTrace);
306
319
  }, outputBuffer, __tsplusTrace);
307
320
  }
308
321
  /**
@@ -312,7 +325,14 @@ export function asyncIO(register, outputBuffer = 16, __tsplusTrace) {
312
325
  return new Stream(tsplus_module_10.unwrapScoped(() => tsplus_module_1.flatMap(output => tsplus_module_1.flatMap(runtime => tsplus_module_1.map(() => {
313
326
  const loop = tsplus_module_10.unwrap(() => tsplus_module_1.matchCauseIO(cause => tsplus_module_1.as(() => tsplus_module_4.match(maybeError => tsplus_module_20.match(() => tsplus_module_11.endNow(undefined), tsplus_module_10.failNow)(maybeError), tsplus_module_11.failCauseNow)(tsplus_module_25.failureOrCause(cause)), __tsplusTrace)(tsplus_module_28.shutdown(output, __tsplusTrace)), as => tsplus_module_1.succeed(() => tsplus_module_11.zipRight(loop)(tsplus_module_10.writeNow(as)), __tsplusTrace), __tsplusTrace)(tsplus_module_1.flatMap(take => tsplus_module_27.done(take), __tsplusTrace)(tsplus_module_28.take(output, __tsplusTrace))));
314
327
  return loop;
315
- }, __tsplusTrace)(register((k, cb) => runtime.unsafeRunAsyncWith(tsplus_module_1.flatMap(a => tsplus_module_28.offer(a, __tsplusTrace)(output), __tsplusTrace)(tsplus_module_27.fromPull(k)), cb || constVoid, __tsplusTrace))), __tsplusTrace)(tsplus_module_29.runtime(__tsplusTrace)), __tsplusTrace)(tsplus_module_31.acquireRelease(() => tsplus_module_30.makeBounded(outputBuffer, __tsplusTrace), _ => tsplus_module_28.shutdown(_, __tsplusTrace), __tsplusTrace))));
328
+ }, __tsplusTrace)(register((k, cb) => {
329
+ const io = tsplus_module_1.flatMap(a => tsplus_module_28.offer(a, __tsplusTrace)(output), __tsplusTrace)(tsplus_module_27.fromPull(k));
330
+ const fiber = runtime.makeFiber(io, __tsplusTrace);
331
+ if (cb) {
332
+ fiber.addObserver(cb);
333
+ }
334
+ fiber.start(io);
335
+ })), __tsplusTrace)(tsplus_module_29.runtime(__tsplusTrace)), __tsplusTrace)(tsplus_module_31.acquireRelease(() => tsplus_module_30.makeBounded(outputBuffer, __tsplusTrace), _ => tsplus_module_28.shutdown(_, __tsplusTrace), __tsplusTrace))));
316
336
  }
317
337
  /**
318
338
  * Returns a stream whose failure and success channels have been mapped by
@@ -518,7 +538,7 @@ export function chunksWith(f, __tsplusTrace) {
518
538
  }
519
539
  function changesWithWriter(f, last, __tsplusTrace) {
520
540
  return tsplus_module_10.readWithCause(chunk => {
521
- const [newLast, newChunk] = tsplus_module_12.foldLeft([last, tsplus_module_7.empty()], ([maybeLast, os], o1) => tsplus_module_20.match(() => [tsplus_module_3.just(o1), tsplus_module_12.append(o1)(os)], o => f(o, o1) ? [tsplus_module_3.just(o1), os] : [tsplus_module_3.just(o1), tsplus_module_12.append(o1)(os)])(maybeLast))(chunk);
541
+ const [newLast, newChunk] = tsplus_module_12.foldLeft([last, tsplus_module_7.empty()], ([maybeLast, os], o1) => tsplus_module_20.match(() => [tsplus_module_3.just(o1, __tsplusTrace), tsplus_module_12.append(o1)(os)], o => f(o, o1) ? [tsplus_module_3.just(o1, __tsplusTrace), os] : [tsplus_module_3.just(o1, __tsplusTrace), tsplus_module_12.append(o1)(os)])(maybeLast))(chunk);
522
542
  return tsplus_module_11.zipRight(changesWithWriter(f, newLast, __tsplusTrace))(tsplus_module_10.writeNow(newChunk));
523
543
  }, tsplus_module_11.failCauseNow, () => tsplus_module_10.unit);
524
544
  }
@@ -531,7 +551,7 @@ function changesWithWriter(f, last, __tsplusTrace) {
531
551
  */
532
552
  export function changesWith(f, __tsplusTrace) {
533
553
  return stream => {
534
- return new Stream(tsplus_module_10.pipeTo(changesWithWriter(f, tsplus_module_3.nothing(), __tsplusTrace))(stream.channel));
554
+ return new Stream(tsplus_module_10.pipeTo(changesWithWriter(f, tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace))(stream.channel));
535
555
  };
536
556
  }
537
557
  /**
@@ -567,7 +587,7 @@ function collectWhileIOLoop(iterator, pf, __tsplusTrace) {
567
587
  }
568
588
  }
569
589
  function combineProducer(handoff, latch, __tsplusTrace) {
570
- return tsplus_module_11.zipRight(tsplus_module_10.readWithCause(value => tsplus_module_11.zipRight(combineProducer(handoff, latch, __tsplusTrace))(tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_41.succeed(value))(handoff))), cause => tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_41.failCause(tsplus_module_25.map(tsplus_module_3.just)(cause)))(handoff)), () => tsplus_module_11.zipRight(combineProducer(handoff, latch, __tsplusTrace))(tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_41.fail(tsplus_module_3.nothing()))(handoff)))))(tsplus_module_10.fromIO(() => tsplus_module_5.take(latch)));
590
+ return tsplus_module_11.zipRight(tsplus_module_10.readWithCause(value => tsplus_module_11.zipRight(combineProducer(handoff, latch, __tsplusTrace))(tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_41.succeed(value, __tsplusTrace))(handoff))), cause => tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_41.failCause(tsplus_module_25.map(tsplus_module_3.just)(cause), __tsplusTrace))(handoff)), () => tsplus_module_11.zipRight(combineProducer(handoff, latch, __tsplusTrace))(tsplus_module_10.fromIO(() => tsplus_module_5.offer(tsplus_module_41.fail(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace))(handoff)))))(tsplus_module_10.fromIO(() => tsplus_module_5.take(latch)));
571
591
  }
572
592
  /**
573
593
  * Combines the elements from this stream and the specified stream by repeatedly applying the
@@ -705,7 +725,7 @@ export function debounce(duration, __tsplusTrace) {
705
725
  /**
706
726
  * @tsplus static fncts.io.StreamOps defer
707
727
  */
708
- export function defer(self) {
728
+ function defer_1(self) {
709
729
  return new Stream(tsplus_module_10.defer(() => self().channel));
710
730
  }
711
731
  function defaultIfEmptyWriter(fb, __tsplusTrace) {
@@ -750,17 +770,17 @@ function distributedWithDynamic_1(maximumLag, decide, done = () => tsplus_module
750
770
  return self => {
751
771
  const offer = queuesRef => a => tsplus_module_1.flatMap(shouldProcess => tsplus_module_1.flatMap(queues => tsplus_module_1.flatMap(ids => tsplus_module_12.isNonEmpty(ids) ? tsplus_module_15.update(map => tsplus_module_45.removeMany(ids)(map), __tsplusTrace)(queuesRef) : tsplus_module_1.unit, __tsplusTrace)(tsplus_module_1.foldLeft(queues, tsplus_module_7.empty(), (b, [id, queue]) => {
752
772
  if (shouldProcess(id)) {
753
- return tsplus_module_1.matchCauseIO(c => tsplus_module_25.interrupted(c) ? tsplus_module_1.succeedNow(tsplus_module_12.append(id)(b), __tsplusTrace) : tsplus_module_1.failCauseNow(c, __tsplusTrace), () => tsplus_module_1.succeedNow(b, __tsplusTrace), __tsplusTrace)(tsplus_module_28.offer(tsplus_module_41.succeed(a), __tsplusTrace)(queue));
773
+ return tsplus_module_1.matchCauseIO(c => tsplus_module_25.interrupted(c) ? tsplus_module_1.succeedNow(tsplus_module_12.append(id)(b), __tsplusTrace) : tsplus_module_1.failCauseNow(c, __tsplusTrace), () => tsplus_module_1.succeedNow(b, __tsplusTrace), __tsplusTrace)(tsplus_module_28.offer(tsplus_module_41.succeed(a, __tsplusTrace), __tsplusTrace)(queue));
754
774
  } else {
755
775
  return tsplus_module_1.succeedNow(b, __tsplusTrace);
756
776
  }
757
777
  }, __tsplusTrace)), __tsplusTrace)(tsplus_module_14.get(queuesRef, __tsplusTrace)), __tsplusTrace)(decide(a));
758
778
  return tsplus_module_1.flatMap(queuesRef => tsplus_module_1.map(add => add, __tsplusTrace)(tsplus_module_1.flatMap(queuesLock => tsplus_module_1.flatMap(newQueue => {
759
- const finalize = endTake => queuesLock.withPermit(tsplus_module_1.asUnit(tsplus_module_1.flatMap(() => tsplus_module_1.flatMap(queues => tsplus_module_1.flatMap(() => tsplus_module_1.map(() => void 0, __tsplusTrace)(done(endTake)), __tsplusTrace)(tsplus_module_1.foreach(queues, queue => tsplus_module_1.catchJustCause(c => tsplus_module_25.interrupted(c) ? tsplus_module_3.just(tsplus_module_1.unit) : tsplus_module_3.nothing(), __tsplusTrace)(tsplus_module_28.offer(endTake, __tsplusTrace)(queue)), __tsplusTrace)), __tsplusTrace)(tsplus_module_1.map(map => tsplus_module_45.values(map), __tsplusTrace)(tsplus_module_14.get(queuesRef, __tsplusTrace))), __tsplusTrace)(tsplus_module_13.set(tsplus_module_1.flatMap(queue => tsplus_module_1.flatMap(() => {
779
+ const finalize = endTake => queuesLock.withPermit(tsplus_module_1.asUnit(tsplus_module_1.flatMap(() => tsplus_module_1.flatMap(queues => tsplus_module_1.flatMap(() => tsplus_module_1.map(() => void 0, __tsplusTrace)(done(endTake)), __tsplusTrace)(tsplus_module_1.foreach(queues, queue => tsplus_module_1.catchJustCause(c => tsplus_module_25.interrupted(c) ? tsplus_module_3.just(tsplus_module_1.unit, __tsplusTrace) : tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace)(tsplus_module_28.offer(endTake, __tsplusTrace)(queue)), __tsplusTrace)), __tsplusTrace)(tsplus_module_1.map(map => tsplus_module_45.values(map), __tsplusTrace)(tsplus_module_14.get(queuesRef, __tsplusTrace))), __tsplusTrace)(tsplus_module_13.set(tsplus_module_1.flatMap(queue => tsplus_module_1.flatMap(() => {
760
780
  const id = Symbol();
761
781
  return tsplus_module_1.map(() => tuple(id, queue), __tsplusTrace)(tsplus_module_15.update(map => tsplus_module_45.set(id, queue)(map), __tsplusTrace)(queuesRef));
762
782
  }, __tsplusTrace)(tsplus_module_28.offer(endTake, __tsplusTrace)(queue)), __tsplusTrace)(tsplus_module_30.makeBounded(1, __tsplusTrace)), __tsplusTrace)(newQueue)), __tsplusTrace));
763
- return tsplus_module_1.map(() => queuesLock.withPermit(tsplus_module_1.flatten(tsplus_module_14.get(newQueue, __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_33.fork(tsplus_module_1.matchCauseIO(cause => finalize(tsplus_module_41.failCause(tsplus_module_25.map(tsplus_module_3.just)(cause))), () => finalize(tsplus_module_41.fail(tsplus_module_3.nothing())), __tsplusTrace)(runForeachScoped_1(offer(queuesRef), __tsplusTrace)(self)), __tsplusTrace));
783
+ return tsplus_module_1.map(() => queuesLock.withPermit(tsplus_module_1.flatten(tsplus_module_14.get(newQueue, __tsplusTrace), __tsplusTrace)), __tsplusTrace)(tsplus_module_33.fork(tsplus_module_1.matchCauseIO(cause => finalize(tsplus_module_41.failCause(tsplus_module_25.map(tsplus_module_3.just)(cause), __tsplusTrace)), () => finalize(tsplus_module_41.fail(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace)), __tsplusTrace)(runForeachScoped_1(offer(queuesRef), __tsplusTrace)(self)), __tsplusTrace));
764
784
  }, __tsplusTrace)(tsplus_module_6.make(() => tsplus_module_1.flatMap(queue => tsplus_module_1.flatMap(id => tsplus_module_1.map(() => tuple(id, queue), __tsplusTrace)(tsplus_module_15.update(map => tsplus_module_45.set(id, queue)(map), __tsplusTrace)(queuesRef)), __tsplusTrace)(tsplus_module_1.succeed(() => Symbol(), __tsplusTrace)), __tsplusTrace)(tsplus_module_30.makeBounded(maximumLag, __tsplusTrace)), __tsplusTrace)), __tsplusTrace)(tsplus_module_46.makeSemaphore(1, __tsplusTrace))), __tsplusTrace)(tsplus_module_31.acquireRelease(() => tsplus_module_6.make(() => tsplus_module_45.empty(), __tsplusTrace), ref => tsplus_module_1.flatMap(qs => tsplus_module_1.foreach(tsplus_module_45.values(qs), q => tsplus_module_28.shutdown(q, __tsplusTrace), __tsplusTrace), __tsplusTrace)(tsplus_module_14.get(ref, __tsplusTrace)), __tsplusTrace));
765
785
  };
766
786
  }
@@ -770,7 +790,7 @@ function distributedWithDynamic_1(maximumLag, decide, done = () => tsplus_module
770
790
  *
771
791
  * @tsplus getter fncts.io.Stream drain
772
792
  */
773
- export function drain(fa, __tsplusTrace) {
793
+ function drain_1(fa, __tsplusTrace) {
774
794
  return new Stream(tsplus_module_10.drain(fa.channel));
775
795
  }
776
796
  function dropLoop(r, __tsplusTrace) {
@@ -823,12 +843,12 @@ export function dropUntil(p, __tsplusTrace) {
823
843
  * @tsplus getter fncts.io.Stream either
824
844
  */
825
845
  export function either(stream, __tsplusTrace) {
826
- return catchAll_1(e => succeedNow_1(tsplus_module_18.left(e), __tsplusTrace), __tsplusTrace)(map_1(tsplus_module_18.right, __tsplusTrace)(stream));
846
+ return catchAll_1(e => succeedNow_1(tsplus_module_18.left(e, __tsplusTrace), __tsplusTrace), __tsplusTrace)(map_1(tsplus_module_18.right, __tsplusTrace)(stream));
827
847
  }
828
848
  /**
829
849
  * @tsplus static fncts.io.StreamOps empty
830
850
  */
831
- const empty_1 = /*#__PURE__*/fromChunkNow_1( /*#__PURE__*/tsplus_module_7.empty(), fileName_1 + ":1228:70");
851
+ const empty_1 = /*#__PURE__*/fromChunkNow_1( /*#__PURE__*/tsplus_module_7.empty(), fileName_1 + ":1234:70");
832
852
  export const empty = empty_1;
833
853
  function endWhenWriter(fiber, __tsplusTrace) {
834
854
  return tsplus_module_10.unwrap(() => tsplus_module_1.map(maybeExit => tsplus_module_20.match(() => tsplus_module_10.readWith(inp => tsplus_module_11.zipRight(endWhenWriter(fiber, __tsplusTrace))(tsplus_module_10.writeNow(inp)), tsplus_module_10.failNow, () => tsplus_module_10.unit), exit => tsplus_module_36.match(tsplus_module_11.failCauseNow, () => tsplus_module_10.unit)(exit))(maybeExit), __tsplusTrace)(tsplus_module_49.poll(fiber, __tsplusTrace)));
@@ -887,6 +907,14 @@ export function environmentWithIO(f, __tsplusTrace) {
887
907
  export function environmentWithStream(f, __tsplusTrace) {
888
908
  return flatMap_1(f, __tsplusTrace)(environment_1(__tsplusTrace));
889
909
  }
910
+ /**
911
+ * Creates a stream that executes the specified effect but emits no elements.
912
+ *
913
+ * @tsplus static fncts.io.StreamOps execute
914
+ */
915
+ function execute_1(io, __tsplusTrace) {
916
+ return drain_1(fromIO_1(io, __tsplusTrace), __tsplusTrace);
917
+ }
890
918
  /**
891
919
  * Halt a stream with the specified error
892
920
  *
@@ -1006,7 +1034,7 @@ function flattenExitOption_1(stream, __tsplusTrace) {
1006
1034
  const processChunk = (chunk, cont) => {
1007
1035
  const [toEmit, rest] = tsplus_module_12.splitWhere(_ => !tsplus_module_52.isSuccess(_))(chunk);
1008
1036
  const next = tsplus_module_20.match(() => cont, exit => tsplus_module_36.match(cause => tsplus_module_20.match(() => tsplus_module_11.endNow(undefined), tsplus_module_11.failCauseNow)(tsplus_module_25.flipCauseOption(cause)), () => tsplus_module_11.endNow(undefined))(exit))(tsplus_module_12.head(rest));
1009
- return tsplus_module_11.zipRight(next)(tsplus_module_10.writeNow(tsplus_module_12.filterMap(exit => tsplus_module_36.match(() => tsplus_module_3.nothing(), tsplus_module_3.just)(exit))(toEmit)));
1037
+ return tsplus_module_11.zipRight(next)(tsplus_module_10.writeNow(tsplus_module_12.filterMap(exit => tsplus_module_36.match(() => tsplus_module_3.nothing(__tsplusTrace), tsplus_module_3.just)(exit))(toEmit)));
1010
1038
  };
1011
1039
  const process = tsplus_module_10.readWithCause(chunk => processChunk(chunk, process), tsplus_module_11.failCauseNow, _ => tsplus_module_11.endNow(undefined));
1012
1040
  return new Stream(tsplus_module_10.pipeTo(process)(stream.channel));
@@ -1060,6 +1088,59 @@ function fromChunk_1(c, __tsplusTrace) {
1060
1088
  function scoped_1(stream, __tsplusTrace) {
1061
1089
  return new Stream(tsplus_module_10.scoped(() => tsplus_module_1.map(tsplus_module_19.single, __tsplusTrace)(stream())));
1062
1090
  }
1091
+ /**
1092
+ * Emits a sliding window of n elements.
1093
+ *
1094
+ * @tsplus pipeable fncts.io.Stream sliding
1095
+ */
1096
+ export function sliding(chunkSize, stepSize, __tsplusTrace) {
1097
+ return self => {
1098
+ return defer_1(() => {
1099
+ function slidingChunk(chunk, input) {
1100
+ const updatedChunk = tsplus_module_12.concat(input)(chunk);
1101
+ const length = updatedChunk.length;
1102
+ if (length >= chunkSize) {
1103
+ const array = new Array((length - chunkSize) / stepSize + 1);
1104
+ let arrayIndex = 0;
1105
+ let chunkIndex = 0;
1106
+ while (chunkIndex + chunkSize <= length) {
1107
+ array[arrayIndex] = tsplus_module_12.slice(chunkIndex, chunkIndex + chunkSize)(updatedChunk);
1108
+ arrayIndex += 1;
1109
+ chunkIndex += stepSize;
1110
+ }
1111
+ return [tsplus_module_12.drop(chunkIndex)(updatedChunk), tsplus_module_53.fromArray(array)];
1112
+ } else {
1113
+ return [updatedChunk, tsplus_module_7.empty()];
1114
+ }
1115
+ }
1116
+ function sliding(chunk, written) {
1117
+ return tsplus_module_10.readWithCause(input => {
1118
+ const [updatedChunk, out] = slidingChunk(chunk, input);
1119
+ if (tsplus_module_12.isEmpty(out)) {
1120
+ return sliding(updatedChunk, written);
1121
+ } else {
1122
+ return tsplus_module_11.zipRight(sliding(updatedChunk, true))(tsplus_module_10.writeNow(out));
1123
+ }
1124
+ }, err => {
1125
+ const index = written && chunkSize > stepSize ? chunkSize - stepSize : 0;
1126
+ if (index >= chunk.length) {
1127
+ return tsplus_module_11.failCauseNow(err);
1128
+ } else {
1129
+ return tsplus_module_11.zipRight(tsplus_module_11.failCauseNow(err))(tsplus_module_10.writeNow(tsplus_module_19.single(chunk)));
1130
+ }
1131
+ }, done => {
1132
+ const index = written && chunkSize > stepSize ? chunkSize - stepSize : 0;
1133
+ if (index >= chunk.length) {
1134
+ return tsplus_module_11.succeedNow(done);
1135
+ } else {
1136
+ return tsplus_module_11.zipRight(tsplus_module_11.succeedNow(done))(tsplus_module_10.writeNow(tsplus_module_19.single(chunk)));
1137
+ }
1138
+ });
1139
+ }
1140
+ return new Stream(tsplus_module_10.pipeTo(sliding(tsplus_module_7.empty(), false))(self.channel));
1141
+ });
1142
+ };
1143
+ }
1063
1144
  /**
1064
1145
  * Creates a stream from an effect producing a value of type `A`
1065
1146
  *
@@ -1120,7 +1201,7 @@ export function fromIterableSingle(iterable, __tsplusTrace) {
1120
1201
  return flatMap_1(iterator => repeatIOMaybe_1(tsplus_module_1.defer(() => {
1121
1202
  const value = iterator.next();
1122
1203
  if (value.done) {
1123
- return tsplus_module_1.failNow(tsplus_module_3.nothing(), __tsplusTrace);
1204
+ return tsplus_module_1.failNow(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace);
1124
1205
  } else {
1125
1206
  return tsplus_module_1.succeedNow(value.value, __tsplusTrace);
1126
1207
  }
@@ -1140,11 +1221,11 @@ function fromPull_1(scopedPull, __tsplusTrace) {
1140
1221
  function fromQueue_1(queue, maxChunkSize = DEFAULT_CHUNK_SIZE, __tsplusTrace) {
1141
1222
  return repeatIOChunkMaybe_1(tsplus_module_1.catchAllCause(c => tsplus_module_1.flatMap(down => {
1142
1223
  if (down && tsplus_module_25.interrupted(c)) {
1143
- return tsplus_module_53.end;
1224
+ return tsplus_module_54.end;
1144
1225
  } else {
1145
- return tsplus_module_53.failCause(c);
1226
+ return tsplus_module_54.failCause(c);
1146
1227
  }
1147
- }, __tsplusTrace)(tsplus_module_28.isShutdown(queue, __tsplusTrace)), __tsplusTrace)(tsplus_module_1.map(tsplus_module_19.from, __tsplusTrace)(tsplus_module_54.takeBetween(1, maxChunkSize, __tsplusTrace)(queue))), __tsplusTrace);
1228
+ }, __tsplusTrace)(tsplus_module_28.isShutdown(queue, __tsplusTrace)), __tsplusTrace)(tsplus_module_1.map(tsplus_module_19.from, __tsplusTrace)(tsplus_module_55.takeBetween(1, maxChunkSize, __tsplusTrace)(queue))), __tsplusTrace);
1148
1229
  }
1149
1230
  /**
1150
1231
  * @tsplus static fncts.io.StreamOps fromQueueWithShutdown
@@ -1286,7 +1367,7 @@ export function intersperse(stream, middle, __tsplusTrace) {
1286
1367
  */
1287
1368
  export function interruptWhen(io, __tsplusTrace) {
1288
1369
  return stream => {
1289
- return new Stream(tsplus_module_55.interruptWhen(io)(stream.channel));
1370
+ return new Stream(tsplus_module_56.interruptWhen(io)(stream.channel));
1290
1371
  };
1291
1372
  }
1292
1373
  /**
@@ -1294,7 +1375,7 @@ export function interruptWhen(io, __tsplusTrace) {
1294
1375
  */
1295
1376
  export function interruptWhenFuture(future, __tsplusTrace) {
1296
1377
  return fa => {
1297
- return new Stream(tsplus_module_55.interruptWhenFuture(future)(fa.channel));
1378
+ return new Stream(tsplus_module_56.interruptWhenFuture(future)(fa.channel));
1298
1379
  };
1299
1380
  }
1300
1381
  /**
@@ -1459,7 +1540,7 @@ function mapIOLoop(iterator, f, __tsplusTrace) {
1459
1540
  */
1460
1541
  export function mapIOConcurrently(n, f, __tsplusTrace) {
1461
1542
  return stream => {
1462
- return new Stream(tsplus_module_10.mapOut(tsplus_module_19.single)(tsplus_module_56.mapOutConcurrentIO(n, f)(tsplus_module_10.concatMap(tsplus_module_10.writeChunk)(stream.channel))));
1543
+ return new Stream(tsplus_module_10.mapOut(tsplus_module_19.single)(tsplus_module_57.mapOutConcurrentIO(n, f)(tsplus_module_10.concatMap(tsplus_module_10.writeChunk)(stream.channel))));
1463
1544
  };
1464
1545
  }
1465
1546
  /**
@@ -1467,7 +1548,75 @@ export function mapIOConcurrently(n, f, __tsplusTrace) {
1467
1548
  */
1468
1549
  export function mapIOConcurrentlyUnordered(n, f) {
1469
1550
  return self => {
1470
- return pipeThroughChannelOrFail_1(tsplus_module_57.mergeMap(inp => fromIO_1(f(inp), fileName_1 + ":2216:41").channel, n, 16)(tsplus_module_10.concatMap(chunk => tsplus_module_10.writeChunk(chunk))(tsplus_module_10.id())))(self);
1551
+ return pipeThroughChannelOrFail_1(tsplus_module_58.mergeMap(inp => fromIO_1(f(inp), fileName_1 + ":2290:41").channel, n, 16)(tsplus_module_10.concatMap(chunk => tsplus_module_10.writeChunk(chunk))(tsplus_module_10.id())))(self);
1552
+ };
1553
+ }
1554
+ /**
1555
+ * Merges this stream and the specified stream together.
1556
+ *
1557
+ * New produced stream will terminate when both specified stream terminate if
1558
+ * no termination strategy is specified.
1559
+ *
1560
+ * @tsplus pipeable fncts.io.Stream merge
1561
+ */
1562
+ function merge_1(that, strategy = "Both", __tsplusTrace) {
1563
+ return self => {
1564
+ return mergeWith_1(that, identity, identity, strategy, __tsplusTrace)(self);
1565
+ };
1566
+ }
1567
+ /**
1568
+ * Merges this stream and the specified stream together. New produced stream
1569
+ * will terminate when either stream terminates.
1570
+ *
1571
+ * @tsplus pipeable fncts.io.Stream mergeHaltEither
1572
+ */
1573
+ export function mergeHaltEither(that, __tsplusTrace) {
1574
+ return self => {
1575
+ return merge_1(that, "Either", __tsplusTrace)(self);
1576
+ };
1577
+ }
1578
+ /**
1579
+ * Merges this stream and the specified stream together. New produced stream
1580
+ * will terminate when this stream terminates.
1581
+ *
1582
+ * @tsplus pipeable fncts.io.Stream mergeHaltLeft
1583
+ */
1584
+ export function mergeHaltLeft(that, __tsplusTrace) {
1585
+ return self => {
1586
+ return merge_1(that, "Left", __tsplusTrace)(self);
1587
+ };
1588
+ }
1589
+ /**
1590
+ * Merges this stream and the specified stream together. New produced stream
1591
+ * will terminate when the specified stream terminates.
1592
+ *
1593
+ * @tsplus pipeable fncts.io.Stream mergeHaltRight
1594
+ */
1595
+ export function mergeHaltRight(that, __tsplusTrace) {
1596
+ return self => {
1597
+ return merge_1(that, "Right", __tsplusTrace)(self);
1598
+ };
1599
+ }
1600
+ /**
1601
+ * Merges this stream and the specified stream together, discarding the values
1602
+ * from the right stream.
1603
+ *
1604
+ * @tsplus pipeable fncts.io.Stream mergeLeft
1605
+ */
1606
+ export function mergeLeft(that, __tsplusTrace) {
1607
+ return self => {
1608
+ return merge_1(drain_1(that, __tsplusTrace))(self);
1609
+ };
1610
+ }
1611
+ /**
1612
+ * Merges this stream and the specified stream together, discarding the values
1613
+ * from the left stream.
1614
+ *
1615
+ * @tsplus pipeable fncts.io.Stream mergeRight
1616
+ */
1617
+ export function mergeRight(that, __tsplusTrace) {
1618
+ return self => {
1619
+ return merge_1(that)(drain_1(self, __tsplusTrace));
1471
1620
  };
1472
1621
  }
1473
1622
  /**
@@ -1480,7 +1629,7 @@ export function mapIOConcurrentlyUnordered(n, f) {
1480
1629
  */
1481
1630
  function mergeMap_1(f, n, bufferSize = 16, __tsplusTrace) {
1482
1631
  return ma => {
1483
- return new Stream(tsplus_module_57.mergeMap(a => f(a).channel, n, bufferSize)(tsplus_module_10.concatMap(tsplus_module_10.writeChunk)(ma.channel)));
1632
+ return new Stream(tsplus_module_58.mergeMap(a => f(a).channel, n, bufferSize)(tsplus_module_10.concatMap(tsplus_module_10.writeChunk)(ma.channel)));
1484
1633
  };
1485
1634
  }
1486
1635
  /**
@@ -1504,14 +1653,14 @@ function mergeEither_1(fb, __tsplusTrace) {
1504
1653
  };
1505
1654
  }
1506
1655
  function mergeWithHandler(terminate, __tsplusTrace) {
1507
- return exit => terminate || !tsplus_module_52.isSuccess(exit) ? tsplus_module_58.done(tsplus_module_1.fromExitNow(exit, __tsplusTrace)) : tsplus_module_58.wait(tsplus_module_1.fromExitNow);
1656
+ return exit => terminate || !tsplus_module_52.isSuccess(exit) ? tsplus_module_59.done(tsplus_module_1.fromExitNow(exit, __tsplusTrace)) : tsplus_module_59.wait(tsplus_module_1.fromExitNow);
1508
1657
  }
1509
1658
  /**
1510
1659
  * @tsplus pipeable fncts.io.Stream mergeWith
1511
1660
  */
1512
1661
  function mergeWith_1(sb, l, r, strategy = "Both", __tsplusTrace) {
1513
1662
  return sa => {
1514
- return new Stream(tsplus_module_59.mergeWith(map_1(r, __tsplusTrace)(sb).channel, mergeWithHandler(strategy === "Either" || strategy === "Left", __tsplusTrace), mergeWithHandler(strategy === "Either" || strategy === "Right", __tsplusTrace))(map_1(l, __tsplusTrace)(sa).channel));
1663
+ return new Stream(tsplus_module_60.mergeWith(map_1(r, __tsplusTrace)(sb).channel, mergeWithHandler(strategy === "Either" || strategy === "Left", __tsplusTrace), mergeWithHandler(strategy === "Either" || strategy === "Right", __tsplusTrace))(map_1(l, __tsplusTrace)(sa).channel));
1515
1664
  };
1516
1665
  }
1517
1666
  /**
@@ -1568,7 +1717,7 @@ export function orElseFail(e, __tsplusTrace) {
1568
1717
  * See also Stream#catchAll.
1569
1718
  */
1570
1719
  export function orElseOptional(stream, that, __tsplusTrace) {
1571
- return catchAll_1(maybeError => tsplus_module_20.match(() => that(), e => failNow_1(tsplus_module_3.just(e), __tsplusTrace))(maybeError), __tsplusTrace)(stream);
1720
+ return catchAll_1(maybeError => tsplus_module_20.match(() => that(), e => failNow_1(tsplus_module_3.just(e, __tsplusTrace), __tsplusTrace))(maybeError), __tsplusTrace)(stream);
1572
1721
  }
1573
1722
  /**
1574
1723
  * Succeeds with the specified value if this one fails with a typed error.
@@ -1612,7 +1761,7 @@ function provideEnvironment_1(r, __tsplusTrace) {
1612
1761
  */
1613
1762
  function provideLayer_1(layer, __tsplusTrace) {
1614
1763
  return self => {
1615
- return new Stream(tsplus_module_10.unwrapScoped(() => tsplus_module_1.map(r => tsplus_module_10.provideEnvironment(() => r)(self.channel), __tsplusTrace)(tsplus_module_60.build(layer, __tsplusTrace))));
1764
+ return new Stream(tsplus_module_10.unwrapScoped(() => tsplus_module_1.map(r => tsplus_module_10.provideEnvironment(() => r)(self.channel), __tsplusTrace)(tsplus_module_61.build(layer, __tsplusTrace))));
1616
1765
  };
1617
1766
  }
1618
1767
  /**
@@ -1621,7 +1770,7 @@ function provideLayer_1(layer, __tsplusTrace) {
1621
1770
  export function provideSomeLayer(layer, __tsplusTrace) {
1622
1771
  return self => {
1623
1772
  // @ts-expect-error
1624
- return provideLayer_1(tsplus_module_61.and(layer, __tsplusTrace)(tsplus_module_61.environment(__tsplusTrace)), __tsplusTrace)(self);
1773
+ return provideLayer_1(tsplus_module_62.and(layer, __tsplusTrace)(tsplus_module_62.environment(__tsplusTrace)), __tsplusTrace)(self);
1625
1774
  };
1626
1775
  }
1627
1776
  class Rechunker {
@@ -1726,7 +1875,7 @@ export function repeatIOChunk(fa, __tsplusTrace) {
1726
1875
  * @tsplus static fncts.io.StreamOps repeatIOChunkMaybe
1727
1876
  */
1728
1877
  function repeatIOChunkMaybe_1(fa, __tsplusTrace) {
1729
- return unfoldChunkIO_1(undefined, _ => tsplus_module_1.catchAll(maybeError => tsplus_module_20.match(() => tsplus_module_1.succeedNow(tsplus_module_3.nothing(), __tsplusTrace), tsplus_module_1.failNow)(maybeError), __tsplusTrace)(tsplus_module_1.map(chunk => tsplus_module_3.just(tuple(chunk, undefined)), __tsplusTrace)(fa)), __tsplusTrace);
1878
+ return unfoldChunkIO_1(undefined, _ => tsplus_module_1.catchAll(maybeError => tsplus_module_20.match(() => tsplus_module_1.succeedNow(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), tsplus_module_1.failNow)(maybeError), __tsplusTrace)(tsplus_module_1.map(chunk => tsplus_module_3.just(tuple(chunk, undefined), __tsplusTrace), __tsplusTrace)(fa)), __tsplusTrace);
1730
1879
  }
1731
1880
  /**
1732
1881
  * Runs the sink on the stream to produce either the sink's result or an error.
@@ -1735,7 +1884,7 @@ function repeatIOChunkMaybe_1(fa, __tsplusTrace) {
1735
1884
  */
1736
1885
  function run_1(sink, __tsplusTrace) {
1737
1886
  return stream => {
1738
- return tsplus_module_62.runDrain(tsplus_module_10.pipeToOrFail(sink.channel)(stream.channel));
1887
+ return tsplus_module_63.runDrain(tsplus_module_10.pipeToOrFail(sink.channel)(stream.channel));
1739
1888
  };
1740
1889
  }
1741
1890
  /**
@@ -1770,7 +1919,7 @@ function runForeachScoped_1(f, __tsplusTrace) {
1770
1919
  */
1771
1920
  export function runIntoElementsScoped_(queue, __tsplusTrace) {
1772
1921
  return stream => {
1773
- const writer = tsplus_module_10.readWith(inp => tsplus_module_11.zipRight(writer)(tsplus_module_12.foldLeft(tsplus_module_10.unit, (channel, a) => tsplus_module_11.zipRight(tsplus_module_10.writeNow(tsplus_module_41.succeed(a)))(channel))(inp)), err => tsplus_module_10.writeNow(tsplus_module_41.fail(tsplus_module_3.just(err))), () => tsplus_module_10.writeNow(tsplus_module_41.fail(tsplus_module_3.nothing())));
1922
+ const writer = tsplus_module_10.readWith(inp => tsplus_module_11.zipRight(writer)(tsplus_module_12.foldLeft(tsplus_module_10.unit, (channel, a) => tsplus_module_11.zipRight(tsplus_module_10.writeNow(tsplus_module_41.succeed(a, __tsplusTrace)))(channel))(inp)), err => tsplus_module_10.writeNow(tsplus_module_41.fail(tsplus_module_3.just(err, __tsplusTrace), __tsplusTrace)), () => tsplus_module_10.writeNow(tsplus_module_41.fail(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace)));
1774
1923
  return tsplus_module_1.asUnit(tsplus_module_16.runScoped(tsplus_module_10.drain(tsplus_module_10.mapOutIO(exit => tsplus_module_28.offer(exit, __tsplusTrace)(queue))(tsplus_module_10.pipeTo(writer)(stream.channel)))), __tsplusTrace);
1775
1924
  };
1776
1925
  }
@@ -1796,9 +1945,9 @@ function runIntoQueueElementsScoped_1(queue) {
1796
1945
  return self => {
1797
1946
  return tsplus_module_1.defer(() => {
1798
1947
  const queue0 = queue();
1799
- const writer = tsplus_module_10.readWithCause(inp => tsplus_module_11.zipRight(writer)(tsplus_module_10.fromIO(() => tsplus_module_28.offerAll(tsplus_module_12.map(a => tsplus_module_41.succeed(a))(inp), fileName_1 + ":2647:57")(queue0))), cause => tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_41.failCause(tsplus_module_25.map(e => tsplus_module_3.just(e))(cause)), fileName_1 + ":2648:47")(queue0)), () => tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_41.fail(tsplus_module_3.nothing()), fileName_1 + ":2649:42")(queue0)));
1800
- return tsplus_module_1.asUnit(tsplus_module_16.runScoped(tsplus_module_10.drain(tsplus_module_10.pipeTo(writer)(self.channel))), fileName_1 + ":2652:55");
1801
- }, fileName_1 + ":2644:20");
1948
+ const writer = tsplus_module_10.readWithCause(inp => tsplus_module_11.zipRight(writer)(tsplus_module_10.fromIO(() => tsplus_module_28.offerAll(tsplus_module_12.map(a => tsplus_module_41.succeed(a, fileName_1 + ":2799:85"))(inp), fileName_1 + ":2799:57")(queue0))), cause => tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_41.failCause(tsplus_module_25.map(e => tsplus_module_3.just(e, fileName_1 + ":2800:84"))(cause), fileName_1 + ":2800:62"), fileName_1 + ":2800:47")(queue0)), () => tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_41.fail(tsplus_module_3.nothing(fileName_1 + ":2801:60"), fileName_1 + ":2801:52"), fileName_1 + ":2801:42")(queue0)));
1949
+ return tsplus_module_1.asUnit(tsplus_module_16.runScoped(tsplus_module_10.drain(tsplus_module_10.pipeTo(writer)(self.channel))), fileName_1 + ":2804:55");
1950
+ }, fileName_1 + ":2796:20");
1802
1951
  };
1803
1952
  }
1804
1953
  /**
@@ -1863,7 +2012,34 @@ export function scanReduce(f, __tsplusTrace) {
1863
2012
  */
1864
2013
  function scanReduceIO_1(f, __tsplusTrace) {
1865
2014
  return fa => {
1866
- return mapAccumIO_1(tsplus_module_3.nothing(), (s, a) => tsplus_module_20.match(() => tsplus_module_1.succeedNow([a, tsplus_module_3.just(a)], __tsplusTrace), b => tsplus_module_1.map(b => [b, tsplus_module_3.just(b)], __tsplusTrace)(f(b, a)))(s), __tsplusTrace)(fa);
2015
+ return mapAccumIO_1(tsplus_module_3.nothing(__tsplusTrace), (s, a) => tsplus_module_20.match(() => tsplus_module_1.succeedNow([a, tsplus_module_3.just(a, __tsplusTrace)], __tsplusTrace), b => tsplus_module_1.map(b => [b, tsplus_module_3.just(b, __tsplusTrace)], __tsplusTrace)(f(b, a)))(s), __tsplusTrace)(fa);
2016
+ };
2017
+ }
2018
+ /**
2019
+ * @tsplus pipeable fncts.io.Stream split
2020
+ */
2021
+ export function split(predicate, __tsplusTrace) {
2022
+ return self => {
2023
+ function split(leftovers, input) {
2024
+ const [chunk, remaining] = tsplus_module_12.splitWhere(predicate)(tsplus_module_12.concat(input)(leftovers));
2025
+ if (tsplus_module_12.isEmpty(chunk) || tsplus_module_12.isEmpty(remaining)) {
2026
+ return loop(tsplus_module_12.concat(tsplus_module_12.drop(1)(remaining))(chunk));
2027
+ } else {
2028
+ return tsplus_module_11.zipRight(split(tsplus_module_7.empty(), tsplus_module_12.drop(1)(remaining)))(tsplus_module_10.writeNow(tsplus_module_19.single(chunk)));
2029
+ }
2030
+ }
2031
+ function loop(leftovers) {
2032
+ return tsplus_module_10.readWith(input => split(leftovers, input), tsplus_module_10.failNow, _ => {
2033
+ if (tsplus_module_12.isEmpty(leftovers)) {
2034
+ return tsplus_module_10.unit;
2035
+ } else if (tsplus_module_64.isNothing(tsplus_module_12.find(predicate)(leftovers))) {
2036
+ return tsplus_module_11.zipRight(tsplus_module_10.unit)(tsplus_module_10.writeNow(tsplus_module_19.single(leftovers)));
2037
+ } else {
2038
+ return tsplus_module_11.zipRight(tsplus_module_10.unit)(split(tsplus_module_7.empty(), leftovers));
2039
+ }
2040
+ });
2041
+ }
2042
+ return new Stream(tsplus_module_10.pipeTo(loop(tsplus_module_7.empty()))(self.channel));
1867
2043
  };
1868
2044
  }
1869
2045
  /**
@@ -1904,7 +2080,7 @@ export function take(n, __tsplusTrace) {
1904
2080
  return empty_1;
1905
2081
  }
1906
2082
  if (!Number.isInteger(n)) {
1907
- return halt_1(() => new tsplus_module_63.IllegalArgumentError(`${n} should be an integer`, "Stream.take"), __tsplusTrace);
2083
+ return halt_1(() => new tsplus_module_65.IllegalArgumentError(`${n} should be an integer`, "Stream.take"), __tsplusTrace);
1908
2084
  }
1909
2085
  return new Stream(tsplus_module_10.pipeTo(takeLoop(n, __tsplusTrace))(stream.channel));
1910
2086
  };
@@ -1950,11 +2126,58 @@ export function takeUntil(p, __tsplusTrace) {
1950
2126
  /**
1951
2127
  * @tsplus pipeable fncts.io.Stream tap
1952
2128
  */
1953
- export function tap(f, __tsplusTrace) {
2129
+ function tap_1(f, __tsplusTrace) {
1954
2130
  return ma => {
1955
2131
  return mapIO_1(a => tsplus_module_1.as(() => a, __tsplusTrace)(f(a)), __tsplusTrace)(ma);
1956
2132
  };
1957
2133
  }
2134
+ /**
2135
+ * Returns a stream that effectfully "peeks" at the failure and adds an effect
2136
+ * to consumption of every element of the stream
2137
+ *
2138
+ * @tsplus pipeable fncts.io.Stream tapBoth
2139
+ */
2140
+ export function tapBoth(f, g, __tsplusTrace) {
2141
+ return self => {
2142
+ return tap_1(g, __tsplusTrace)(tapError_1(f, __tsplusTrace)(self));
2143
+ };
2144
+ }
2145
+ /**
2146
+ * Returns a stream that effectfully "peeks" at the failure of the stream.
2147
+ *
2148
+ * @tsplus pipeable fncts.io.Stream tapError
2149
+ */
2150
+ function tapError_1(f, __tsplusTrace) {
2151
+ return self => {
2152
+ return catchAll_1(e => fromIO_1(f(e), __tsplusTrace), __tsplusTrace)(self);
2153
+ };
2154
+ }
2155
+ /**
2156
+ * Returns a stream that effectfully "peeks" at the cause of failure of the
2157
+ * stream.
2158
+ *
2159
+ * @tsplus pipeable fncts.io.Stream tapErrorCause
2160
+ */
2161
+ export function tapErrorCause(f, __tsplusTrace) {
2162
+ return self => {
2163
+ return catchAllCause_1(e => fromIO_1(tsplus_module_1.zipRight(tsplus_module_1.refailCause(e, __tsplusTrace), __tsplusTrace)(f(e)), __tsplusTrace), __tsplusTrace)(self);
2164
+ };
2165
+ }
2166
+ /**
2167
+ * Sends all elements emitted by this stream to the specified sink in addition
2168
+ * to emitting them.
2169
+ *
2170
+ * @tsplus pipeable fncts.io.Stream tapSink
2171
+ */
2172
+ export function tapSink(sink, __tsplusTrace) {
2173
+ return self => {
2174
+ return flatMap_1(([queue, future]) => {
2175
+ const right = flattenTake_1(fromQueue_1(queue, 1, __tsplusTrace), __tsplusTrace);
2176
+ const loop = tsplus_module_10.readWithCause(chunk => tsplus_module_11.zipRight(loop)(tsplus_module_11.zipRight(tsplus_module_10.writeNow(chunk))(tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_27.chunk(chunk), __tsplusTrace)(queue)))), cause => tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_27.failCause(cause), __tsplusTrace)(queue)), () => tsplus_module_10.fromIO(() => tsplus_module_28.offer(tsplus_module_27.end, __tsplusTrace)(queue)));
2177
+ return merge_1(execute_1(tsplus_module_66.ensuring(tsplus_module_37.succeed_(undefined, __tsplusTrace)(future), __tsplusTrace)(run_1(sink, __tsplusTrace)(right)), __tsplusTrace), "Both", __tsplusTrace)(new Stream(tsplus_module_10.ensuring(tsplus_module_1.zipRight(tsplus_module_37.wait(future, __tsplusTrace), __tsplusTrace)(tsplus_module_24.forkDaemon(tsplus_module_28.offer(tsplus_module_27.end, __tsplusTrace)(queue), __tsplusTrace)))(tsplus_module_10.pipeTo(loop)(self.channel))));
2178
+ }, __tsplusTrace)(fromIO_1(tsplus_module_1.zip(tsplus_module_38.make(__tsplusTrace), __tsplusTrace)(tsplus_module_30.makeBounded(1, __tsplusTrace)), __tsplusTrace));
2179
+ };
2180
+ }
1958
2181
  /**
1959
2182
  * Throttles the chunks of this stream according to the given bandwidth parameters using the token bucket
1960
2183
  * algorithm. Allows for burst in the processing of elements by allowing the token bucket to accumulate
@@ -2010,7 +2233,7 @@ function toHub_1(capacity, __tsplusTrace) {
2010
2233
  * @tsplus getter fncts.io.Stream toPull
2011
2234
  */
2012
2235
  function toPull_1(stream, __tsplusTrace) {
2013
- return tsplus_module_1.map(io => tsplus_module_1.flatMap(r => tsplus_module_4.match(() => tsplus_module_1.failNow(tsplus_module_3.nothing(), __tsplusTrace), tsplus_module_1.succeedNow)(r), __tsplusTrace)(tsplus_module_1.mapError(tsplus_module_3.just, __tsplusTrace)(io)), __tsplusTrace)(tsplus_module_64.toPull(stream.channel));
2236
+ return tsplus_module_1.map(io => tsplus_module_1.flatMap(r => tsplus_module_4.match(() => tsplus_module_1.failNow(tsplus_module_3.nothing(__tsplusTrace), __tsplusTrace), tsplus_module_1.succeedNow)(r), __tsplusTrace)(tsplus_module_1.mapError(tsplus_module_3.just, __tsplusTrace)(io)), __tsplusTrace)(tsplus_module_67.toPull(stream.channel));
2014
2237
  }
2015
2238
  /**
2016
2239
  * Converts the stream to a managed queue of chunks. After the managed queue is used,