@fncts/io 0.0.38 → 0.0.39

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 (163) hide show
  1. package/Channel/definition.d.ts +108 -104
  2. package/FiberRef/unsafe.d.ts +5 -0
  3. package/Future/definition.d.ts +24 -3
  4. package/_cjs/Channel/api/mapOutConcurrentIO.cjs +8 -2
  5. package/_cjs/Channel/api/mapOutConcurrentIO.cjs.map +1 -1
  6. package/_cjs/Channel/api/mergeAllWith.cjs +23 -14
  7. package/_cjs/Channel/api/mergeAllWith.cjs.map +1 -1
  8. package/_cjs/Channel/api/mergeWith.cjs +16 -4
  9. package/_cjs/Channel/api/mergeWith.cjs.map +1 -1
  10. package/_cjs/Channel/api.cjs +131 -36
  11. package/_cjs/Channel/api.cjs.map +1 -1
  12. package/_cjs/Channel/core-api.cjs +13 -3
  13. package/_cjs/Channel/core-api.cjs.map +1 -1
  14. package/_cjs/Channel/definition.cjs +18 -143
  15. package/_cjs/Channel/definition.cjs.map +1 -1
  16. package/_cjs/Channel/internal/ChannelExecutor.cjs +51 -49
  17. package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
  18. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs +8 -2
  19. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs.map +1 -1
  20. package/_cjs/Console/live.cjs +1 -1
  21. package/_cjs/Console/live.cjs.map +1 -1
  22. package/_cjs/Fiber/FiberRuntime.cjs +23 -18
  23. package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
  24. package/_cjs/FiberRef/definition.cjs +3 -1
  25. package/_cjs/FiberRef/definition.cjs.map +1 -1
  26. package/_cjs/FiberRef/unsafe.cjs +6 -1
  27. package/_cjs/FiberRef/unsafe.cjs.map +1 -1
  28. package/_cjs/Future/api.cjs +12 -12
  29. package/_cjs/Future/api.cjs.map +1 -1
  30. package/_cjs/Future/definition.cjs +10 -3
  31. package/_cjs/Future/definition.cjs.map +1 -1
  32. package/_cjs/IO/api/asyncInterrupt.cjs +7 -4
  33. package/_cjs/IO/api/asyncInterrupt.cjs.map +1 -1
  34. package/_cjs/IO/api.cjs +38 -14
  35. package/_cjs/IO/api.cjs.map +1 -1
  36. package/_cjs/IO/runtime.cjs +6 -3
  37. package/_cjs/IO/runtime.cjs.map +1 -1
  38. package/_cjs/Layer/api.cjs +4 -1
  39. package/_cjs/Layer/api.cjs.map +1 -1
  40. package/_cjs/Push/api.cjs +4 -1
  41. package/_cjs/Push/api.cjs.map +1 -1
  42. package/_cjs/Ref/Derived.cjs +35 -8
  43. package/_cjs/Ref/Derived.cjs.map +1 -1
  44. package/_cjs/Ref/DerivedAll.cjs +35 -8
  45. package/_cjs/Ref/DerivedAll.cjs.map +1 -1
  46. package/_cjs/RuntimeFlags/RuntimeFlags.cjs +3 -4
  47. package/_cjs/RuntimeFlags/RuntimeFlags.cjs.map +1 -1
  48. package/_cjs/STM/api/core-api.cjs +4 -1
  49. package/_cjs/STM/api/core-api.cjs.map +1 -1
  50. package/_cjs/STM/api.cjs +16 -4
  51. package/_cjs/STM/api.cjs.map +1 -1
  52. package/_cjs/Schedule/api.cjs +7 -1
  53. package/_cjs/Schedule/api.cjs.map +1 -1
  54. package/_cjs/ScopedRef/api.cjs +2 -2
  55. package/_cjs/ScopedRef/api.cjs.map +1 -1
  56. package/_cjs/Sink/api.cjs +7 -1
  57. package/_cjs/Sink/api.cjs.map +1 -1
  58. package/_cjs/Stream/api/zipAllWith.cjs +4 -1
  59. package/_cjs/Stream/api/zipAllWith.cjs.map +1 -1
  60. package/_cjs/Stream/api/zipWithChunks.cjs +4 -1
  61. package/_cjs/Stream/api/zipWithChunks.cjs.map +1 -1
  62. package/_cjs/Stream/api.cjs +36 -15
  63. package/_cjs/Stream/api.cjs.map +1 -1
  64. package/_cjs/SupervisorPatch.cjs +38 -15
  65. package/_cjs/SupervisorPatch.cjs.map +1 -1
  66. package/_cjs/TRef/definition.cjs +74 -20
  67. package/_cjs/TRef/definition.cjs.map +1 -1
  68. package/_mjs/Channel/api/mapOutConcurrentIO.mjs +8 -2
  69. package/_mjs/Channel/api/mapOutConcurrentIO.mjs.map +1 -1
  70. package/_mjs/Channel/api/mergeAllWith.mjs +23 -14
  71. package/_mjs/Channel/api/mergeAllWith.mjs.map +1 -1
  72. package/_mjs/Channel/api/mergeWith.mjs +16 -4
  73. package/_mjs/Channel/api/mergeWith.mjs.map +1 -1
  74. package/_mjs/Channel/api.mjs +132 -37
  75. package/_mjs/Channel/api.mjs.map +1 -1
  76. package/_mjs/Channel/core-api.mjs +14 -4
  77. package/_mjs/Channel/core-api.mjs.map +1 -1
  78. package/_mjs/Channel/definition.mjs +14 -135
  79. package/_mjs/Channel/definition.mjs.map +1 -1
  80. package/_mjs/Channel/internal/ChannelExecutor.mjs +52 -50
  81. package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
  82. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs +8 -2
  83. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs.map +1 -1
  84. package/_mjs/Console/live.mjs +1 -1
  85. package/_mjs/Console/live.mjs.map +1 -1
  86. package/_mjs/Fiber/FiberRuntime.mjs +23 -18
  87. package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
  88. package/_mjs/FiberRef/definition.mjs +3 -1
  89. package/_mjs/FiberRef/definition.mjs.map +1 -1
  90. package/_mjs/FiberRef/unsafe.mjs +4 -0
  91. package/_mjs/FiberRef/unsafe.mjs.map +1 -1
  92. package/_mjs/Future/api.mjs +12 -12
  93. package/_mjs/Future/api.mjs.map +1 -1
  94. package/_mjs/Future/definition.mjs +7 -2
  95. package/_mjs/Future/definition.mjs.map +1 -1
  96. package/_mjs/IO/api/asyncInterrupt.mjs +7 -4
  97. package/_mjs/IO/api/asyncInterrupt.mjs.map +1 -1
  98. package/_mjs/IO/api.mjs +38 -14
  99. package/_mjs/IO/api.mjs.map +1 -1
  100. package/_mjs/IO/runtime.mjs +6 -3
  101. package/_mjs/IO/runtime.mjs.map +1 -1
  102. package/_mjs/Layer/api.mjs +4 -1
  103. package/_mjs/Layer/api.mjs.map +1 -1
  104. package/_mjs/Push/api.mjs +4 -1
  105. package/_mjs/Push/api.mjs.map +1 -1
  106. package/_mjs/Ref/Derived.mjs +35 -8
  107. package/_mjs/Ref/Derived.mjs.map +1 -1
  108. package/_mjs/Ref/DerivedAll.mjs +35 -8
  109. package/_mjs/Ref/DerivedAll.mjs.map +1 -1
  110. package/_mjs/RuntimeFlags/RuntimeFlags.mjs +3 -4
  111. package/_mjs/RuntimeFlags/RuntimeFlags.mjs.map +1 -1
  112. package/_mjs/STM/api/core-api.mjs +4 -1
  113. package/_mjs/STM/api/core-api.mjs.map +1 -1
  114. package/_mjs/STM/api.mjs +16 -4
  115. package/_mjs/STM/api.mjs.map +1 -1
  116. package/_mjs/Schedule/api.mjs +7 -1
  117. package/_mjs/Schedule/api.mjs.map +1 -1
  118. package/_mjs/ScopedRef/api.mjs +2 -2
  119. package/_mjs/ScopedRef/api.mjs.map +1 -1
  120. package/_mjs/Sink/api.mjs +7 -1
  121. package/_mjs/Sink/api.mjs.map +1 -1
  122. package/_mjs/Stream/api/zipAllWith.mjs +4 -1
  123. package/_mjs/Stream/api/zipAllWith.mjs.map +1 -1
  124. package/_mjs/Stream/api/zipWithChunks.mjs +4 -1
  125. package/_mjs/Stream/api/zipWithChunks.mjs.map +1 -1
  126. package/_mjs/Stream/api.mjs +36 -15
  127. package/_mjs/Stream/api.mjs.map +1 -1
  128. package/_mjs/SupervisorPatch.mjs +38 -15
  129. package/_mjs/SupervisorPatch.mjs.map +1 -1
  130. package/_mjs/TRef/definition.mjs +74 -20
  131. package/_mjs/TRef/definition.mjs.map +1 -1
  132. package/_src/Channel/api/mapOutConcurrentIO.ts +5 -5
  133. package/_src/Channel/api/mergeAllWith.ts +9 -9
  134. package/_src/Channel/api/mergeWith.ts +16 -16
  135. package/_src/Channel/api.ts +128 -143
  136. package/_src/Channel/core-api.ts +17 -14
  137. package/_src/Channel/definition.ts +187 -236
  138. package/_src/Channel/internal/ChannelExecutor.ts +47 -45
  139. package/_src/Channel/internal/SingleProducerAsyncInput.ts +2 -2
  140. package/_src/Console/live.ts +1 -1
  141. package/_src/Fiber/FiberRuntime.ts +6 -3
  142. package/_src/FiberRef/definition.ts +4 -1
  143. package/_src/FiberRef/unsafe.ts +5 -0
  144. package/_src/Future/definition.ts +19 -3
  145. package/_src/IO/api/asyncInterrupt.ts +4 -4
  146. package/_src/IO/api.ts +19 -15
  147. package/_src/IO/runtime.ts +6 -3
  148. package/_src/Layer/api.ts +4 -1
  149. package/_src/Push/api.ts +4 -4
  150. package/_src/Ref/Derived.ts +20 -18
  151. package/_src/Ref/DerivedAll.ts +21 -18
  152. package/_src/RuntimeFlags/RuntimeFlags.ts +1 -1
  153. package/_src/STM/api/core-api.ts +1 -1
  154. package/_src/STM/api.ts +4 -4
  155. package/_src/Schedule/api.ts +8 -8
  156. package/_src/ScopedRef/api.ts +4 -3
  157. package/_src/Sink/api.ts +8 -8
  158. package/_src/Stream/api/zipAllWith.ts +4 -4
  159. package/_src/Stream/api/zipWithChunks.ts +4 -4
  160. package/_src/Stream/api.ts +21 -19
  161. package/_src/SupervisorPatch.ts +1 -0
  162. package/_src/TRef/definition.ts +36 -33
  163. package/package.json +2 -2
@@ -4,21 +4,21 @@ import type { UpstreamPullRequest } from "./UpstreamPullRequest.js";
4
4
  import type { UpstreamPullStrategy } from "./UpstreamPullStrategy.js";
5
5
 
6
6
  export const enum ChannelTag {
7
- PipeTo = "PipeTo",
8
- ContinuationK = "ContinuationK",
9
- ContinuationFinalizer = "ContinuationFinalizer",
10
- Fold = "Fold",
11
- Bridge = "Bridge",
12
- Read = "Read",
13
- Done = "Done",
14
- Halt = "Halt",
15
- FromIO = "FromIO",
16
- Emit = "Emit",
17
- Defer = "Defer",
18
- Ensuring = "Ensuring",
19
- ConcatAll = "ConcatAll",
20
- BracketOut = "BracketOut",
21
- Provide = "Provide",
7
+ PipeTo,
8
+ ContinuationK,
9
+ ContinuationFinalizer,
10
+ Fold,
11
+ Bridge,
12
+ Read,
13
+ Done,
14
+ Halt,
15
+ FromIO,
16
+ Emit,
17
+ Defer,
18
+ Ensuring,
19
+ ConcatAll,
20
+ BracketOut,
21
+ Provide,
22
22
  }
23
23
 
24
24
  export const ChannelVariance = Symbol.for("fncts.io.Channel.Variance");
@@ -117,6 +117,31 @@ export function unifyChannel<X extends Channel<any, any, any, any, any, any, any
117
117
  return _;
118
118
  }
119
119
 
120
+ export type ChannelOp<Tag extends string | number, Body = {}> = Channel<
121
+ any,
122
+ unknown,
123
+ unknown,
124
+ unknown,
125
+ never,
126
+ never,
127
+ never
128
+ > &
129
+ Body & {
130
+ readonly _tag: Tag;
131
+ };
132
+
133
+ export class ChannelPrimitive {
134
+ public i0: any = undefined;
135
+ public i1: any = undefined;
136
+ public i2: any = undefined;
137
+ public i3: any = undefined;
138
+ public i4: any = undefined;
139
+ public i5: any = undefined;
140
+ public trace: string | undefined = undefined;
141
+ [ChannelTypeId] = ChannelTypeId;
142
+ constructor(readonly _tag: Primitive["_tag"] | ContinuationPrimitive["_tag"]) {}
143
+ }
144
+
120
145
  export abstract class Continuation<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutDone, OutDone2> {
121
146
  readonly _Env!: () => Env;
122
147
  readonly _InErr!: (_: InErr) => void;
@@ -129,259 +154,185 @@ export abstract class Continuation<Env, InErr, InElem, InDone, OutErr, OutErr2,
129
154
  readonly _OutDone2!: () => OutDone2;
130
155
  }
131
156
 
132
- export class ContinuationK<
133
- Env,
134
- InErr,
135
- InElem,
136
- InDone,
137
- OutErr,
138
- OutErr2,
139
- OutElem,
140
- OutDone,
141
- OutDone2,
142
- > extends Continuation<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutDone, OutDone2> {
143
- readonly _tag = ChannelTag.ContinuationK;
144
- constructor(
145
- readonly onSuccess: (_: OutDone) => Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone2>,
146
- readonly onHalt: (_: Cause<OutErr>) => Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone2>,
147
- ) {
148
- super();
149
- }
150
-
151
- onExit(exit: Exit<OutErr, OutDone>): Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone2> {
152
- return exit.match(this.onHalt, this.onSuccess);
153
- }
154
- }
155
-
156
- export class ContinuationFinalizer<Env, OutErr, OutDone> extends Continuation<
157
- Env,
157
+ export type ChannelContinuationOp<Tag extends string | number, Body = {}> = Continuation<
158
+ never,
158
159
  unknown,
159
160
  unknown,
160
161
  unknown,
161
- OutErr,
162
+ any,
162
163
  never,
163
164
  never,
164
- OutDone,
165
+ any,
165
166
  never
166
- > {
167
- readonly _tag = ChannelTag.ContinuationFinalizer;
168
- constructor(readonly finalizer: (_: Exit<OutErr, OutDone>) => URIO<Env, any>) {
169
- super();
170
- }
171
- }
167
+ > &
168
+ Body & {
169
+ readonly _tag: Tag;
170
+ };
171
+
172
+ export interface ContinuationK
173
+ extends ChannelContinuationOp<
174
+ ChannelTag.ContinuationK,
175
+ {
176
+ readonly i0: (_: any) => Primitive;
177
+ readonly i1: (_: Cause<any>) => Primitive;
178
+ }
179
+ > {}
180
+
181
+ export interface ContinuationFinalizer
182
+ extends ChannelContinuationOp<
183
+ ChannelTag.ContinuationFinalizer,
184
+ {
185
+ readonly i0: (_: Exit<any, any>) => URIO<any, any>;
186
+ }
187
+ > {}
188
+
189
+ export type ContinuationPrimitive = ContinuationK | ContinuationFinalizer;
172
190
 
173
191
  /**
174
192
  * @optimize remove
175
193
  */
176
194
  export function concreteContinuation<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutDone, OutDone2>(
177
195
  _: Continuation<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutDone, OutDone2>,
178
- ): asserts _ is
179
- | ContinuationK<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutDone, OutDone2>
180
- | ContinuationFinalizer<Env, OutErr, OutDone> {
196
+ ): asserts _ is ContinuationK | ContinuationFinalizer {
181
197
  //
182
198
  }
183
199
 
184
- export class PipeTo<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutElem2, OutDone, OutDone2> extends Channel<
185
- Env,
186
- InErr,
187
- InElem,
188
- InDone,
189
- OutErr2,
190
- OutElem2,
191
- OutDone2
192
- > {
193
- readonly _tag = ChannelTag.PipeTo;
194
- constructor(
195
- readonly left: () => Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
196
- readonly right: () => Channel<Env, OutErr, OutElem, OutDone, OutErr2, OutElem2, OutDone2>,
197
- ) {
198
- super();
199
- }
200
- }
200
+ export interface PipeTo
201
+ extends ChannelOp<
202
+ ChannelTag.PipeTo,
203
+ {
204
+ readonly i0: () => Primitive;
205
+ readonly i1: () => Primitive;
206
+ }
207
+ > {}
201
208
 
202
- export class Fold<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutDone, OutDone2> extends Channel<
203
- Env,
204
- InErr,
205
- InElem,
206
- InDone,
207
- OutErr2,
208
- OutElem,
209
- OutDone2
210
- > {
211
- readonly _tag = ChannelTag.Fold;
212
- constructor(
213
- readonly value: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
214
- readonly k: ContinuationK<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutDone, OutDone2>,
215
- ) {
216
- super();
217
- }
218
- }
209
+ export interface Fold
210
+ extends ChannelOp<
211
+ ChannelTag.Fold,
212
+ {
213
+ readonly i0: Primitive;
214
+ readonly i1: ContinuationK;
215
+ }
216
+ > {}
219
217
 
220
- export class Read<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutDone, OutDone2> extends Channel<
221
- Env,
222
- InErr,
223
- InElem,
224
- InDone,
225
- OutErr2,
226
- OutElem,
227
- OutDone2
228
- > {
229
- readonly _tag = ChannelTag.Read;
230
- constructor(
231
- readonly more: (_: InElem) => Channel<Env, InErr, InElem, InDone, OutErr2, OutElem, OutDone2>,
232
- readonly done: ContinuationK<Env, InErr, InElem, InDone, OutErr, OutErr2, OutElem, OutDone, OutDone2>,
233
- ) {
234
- super();
235
- }
236
- }
218
+ export interface Read
219
+ extends ChannelOp<
220
+ ChannelTag.Read,
221
+ {
222
+ readonly i0: (_: any) => Primitive;
223
+ readonly i1: ContinuationK;
224
+ }
225
+ > {}
237
226
 
238
- export class Done<OutDone> extends Channel<never, unknown, unknown, unknown, never, never, OutDone> {
239
- readonly _tag = ChannelTag.Done;
240
- constructor(readonly terminal: () => OutDone) {
241
- super();
242
- }
243
- }
227
+ export interface Done
228
+ extends ChannelOp<
229
+ ChannelTag.Done,
230
+ {
231
+ readonly i0: () => any;
232
+ }
233
+ > {}
244
234
 
245
- export class Fail<OutErr> extends Channel<never, unknown, unknown, unknown, OutErr, never, never> {
246
- readonly _tag = ChannelTag.Halt;
247
- constructor(readonly cause: () => Cause<OutErr>) {
248
- super();
249
- }
250
- }
235
+ export interface Fail
236
+ extends ChannelOp<
237
+ ChannelTag.Halt,
238
+ {
239
+ readonly i0: () => Cause<any>;
240
+ }
241
+ > {}
251
242
 
252
- export class FromIO<Env, OutErr, OutDone> extends Channel<Env, unknown, unknown, unknown, OutErr, never, OutDone> {
253
- readonly _tag = ChannelTag.FromIO;
254
- constructor(readonly io: IO<Env, OutErr, OutDone>) {
255
- super();
256
- }
257
- }
243
+ export interface FromIO
244
+ extends ChannelOp<
245
+ ChannelTag.FromIO,
246
+ {
247
+ readonly i0: IO<any, any, any>;
248
+ }
249
+ > {}
258
250
 
259
- export class Defer<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> extends Channel<
260
- Env,
261
- InErr,
262
- InElem,
263
- InDone,
264
- OutErr,
265
- OutElem,
266
- OutDone
267
- > {
268
- readonly _tag = ChannelTag.Defer;
269
- constructor(readonly effect: () => Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>) {
270
- super();
271
- }
272
- }
251
+ export interface Defer
252
+ extends ChannelOp<
253
+ ChannelTag.Defer,
254
+ {
255
+ readonly i0: () => Primitive;
256
+ }
257
+ > {}
273
258
 
274
- export class Ensuring<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> extends Channel<
275
- Env,
276
- InErr,
277
- InElem,
278
- InDone,
279
- OutErr,
280
- OutElem,
281
- OutDone
282
- > {
283
- readonly _tag = ChannelTag.Ensuring;
284
- constructor(
285
- readonly channel: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
286
- readonly finalizer: (_: Exit<OutErr, OutDone>) => IO<Env, never, any>,
287
- ) {
288
- super();
289
- }
290
- }
259
+ export interface Ensuring
260
+ extends ChannelOp<
261
+ ChannelTag.Ensuring,
262
+ {
263
+ readonly i0: Primitive;
264
+ readonly i1: (_: Exit<any, any>) => URIO<any, any>;
265
+ }
266
+ > {}
291
267
 
292
- export class ConcatAll<
293
- Env,
294
- InErr,
295
- InElem,
296
- InDone,
297
- OutErr,
298
- OutElem,
299
- OutElem2,
300
- OutDone,
301
- OutDone2,
302
- OutDone3,
303
- > extends Channel<Env, InErr, InElem, InDone, OutErr, OutElem2, OutDone3> {
304
- readonly _tag = ChannelTag.ConcatAll;
305
- constructor(
306
- readonly combineInners: (_: OutDone, __: OutDone) => OutDone,
307
- readonly combineAll: (_: OutDone, __: OutDone2) => OutDone3,
308
- readonly onPull: (_: UpstreamPullRequest<OutElem>) => UpstreamPullStrategy<OutElem2>,
309
- readonly onEmit: (_: OutElem2) => ChildExecutorDecision,
310
- readonly value: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>,
311
- readonly k: (_: OutElem) => Channel<Env, InErr, InElem, InDone, OutErr, OutElem2, OutDone>,
312
- ) {
313
- super();
314
- }
315
- }
268
+ export interface ConcatAll
269
+ extends ChannelOp<
270
+ ChannelTag.ConcatAll,
271
+ {
272
+ readonly i0: (_: any, __: any) => any;
273
+ readonly i1: (_: any, __: any) => any;
274
+ readonly i2: (_: UpstreamPullRequest<any>) => UpstreamPullStrategy<any>;
275
+ readonly i3: (_: any) => ChildExecutorDecision;
276
+ readonly i4: Primitive;
277
+ readonly i5: (_: any) => Primitive;
278
+ }
279
+ > {}
316
280
 
317
- export class BracketOut<R, E, Z, OutDone> extends Channel<R, unknown, unknown, unknown, E, Z, OutDone> {
318
- readonly _tag = ChannelTag.BracketOut;
319
- constructor(readonly acquire: IO<R, E, Z>, readonly finalizer: (_: Z, exit: Exit<any, any>) => URIO<R, any>) {
320
- super();
321
- }
322
- }
281
+ export interface BracketOut
282
+ extends ChannelOp<
283
+ ChannelTag.BracketOut,
284
+ {
285
+ readonly i0: IO<any, any, any>;
286
+ readonly i1: (_: any, __: Exit<any, any>) => URIO<any, any>;
287
+ }
288
+ > {}
323
289
 
324
- export class Provide<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> extends Channel<
325
- never,
326
- InErr,
327
- InElem,
328
- InDone,
329
- OutErr,
330
- OutElem,
331
- OutDone
332
- > {
333
- readonly _tag = ChannelTag.Provide;
334
- constructor(
335
- readonly environment: Environment<Env>,
336
- readonly inner: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
337
- ) {
338
- super();
339
- }
340
- }
290
+ export interface Provide
291
+ extends ChannelOp<
292
+ ChannelTag.Provide,
293
+ {
294
+ readonly i0: Environment<any>;
295
+ readonly i1: Primitive;
296
+ }
297
+ > {}
341
298
 
342
- export class Emit<OutElem, OutDone> extends Channel<never, unknown, unknown, unknown, never, OutElem, OutDone> {
343
- readonly _tag = ChannelTag.Emit;
344
- constructor(readonly out: () => OutElem) {
345
- super();
346
- }
347
- }
299
+ export interface Emit
300
+ extends ChannelOp<
301
+ ChannelTag.Emit,
302
+ {
303
+ readonly i0: () => any;
304
+ }
305
+ > {}
348
306
 
349
- export class Bridge<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> extends Channel<
350
- Env,
351
- InErr,
352
- InElem,
353
- InDone,
354
- OutErr,
355
- OutElem,
356
- OutDone
357
- > {
358
- readonly _tag = ChannelTag.Bridge;
359
- constructor(
360
- readonly input: AsyncInputProducer<InErr, InElem, InDone>,
361
- readonly channel: Channel<Env, unknown, unknown, unknown, OutErr, OutElem, OutDone>,
362
- ) {
363
- super();
364
- }
365
- }
307
+ export interface Bridge
308
+ extends ChannelOp<
309
+ ChannelTag.Bridge,
310
+ {
311
+ readonly i0: AsyncInputProducer<any, any, any>;
312
+ readonly i1: Primitive;
313
+ }
314
+ > {}
315
+
316
+ export type Primitive =
317
+ | PipeTo
318
+ | Read
319
+ | Done
320
+ | Fail
321
+ | FromIO
322
+ | Emit
323
+ | ConcatAll
324
+ | Bridge
325
+ | Fold
326
+ | Provide
327
+ | BracketOut
328
+ | Ensuring
329
+ | Defer;
366
330
 
367
331
  /**
368
332
  * @tsplus macro remove
369
333
  */
370
334
  export function concrete<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
371
335
  _: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
372
- ): asserts _ is
373
- | PipeTo<Env, InErr, InElem, InDone, OutErr, any, OutElem, any, OutDone, any>
374
- | Read<Env, InErr, InElem, InDone, OutErr, any, OutElem, OutDone, any>
375
- | Done<OutDone>
376
- | Fail<OutErr>
377
- | FromIO<Env, OutErr, OutDone>
378
- | Emit<OutElem, OutDone>
379
- | ConcatAll<Env, InErr, InElem, InDone, OutErr, any, OutElem, any, OutDone, any>
380
- | Bridge<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
381
- | Fold<Env, InErr, InElem, InDone, OutErr, any, OutElem, OutDone, any>
382
- | Provide<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
383
- | BracketOut<Env, OutErr, OutElem, OutDone>
384
- | Ensuring<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>
385
- | Defer<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> {
336
+ ): asserts _ is Primitive {
386
337
  //
387
338
  }