@fncts/io 0.0.38 → 0.0.39

Sign up to get free protection for your applications and to get access to all the features.
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
  }