@fncts/io 0.0.37 → 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.
- package/Channel/definition.d.ts +108 -104
- package/FiberRef/unsafe.d.ts +5 -0
- package/Future/definition.d.ts +24 -3
- package/IO/api/all.d.ts +14 -15
- package/IO/definition.d.ts +17 -15
- package/_cjs/Channel/api/mapOutConcurrentIO.cjs +8 -2
- package/_cjs/Channel/api/mapOutConcurrentIO.cjs.map +1 -1
- package/_cjs/Channel/api/mergeAllWith.cjs +23 -14
- package/_cjs/Channel/api/mergeAllWith.cjs.map +1 -1
- package/_cjs/Channel/api/mergeWith.cjs +16 -4
- package/_cjs/Channel/api/mergeWith.cjs.map +1 -1
- package/_cjs/Channel/api.cjs +131 -36
- package/_cjs/Channel/api.cjs.map +1 -1
- package/_cjs/Channel/core-api.cjs +13 -3
- package/_cjs/Channel/core-api.cjs.map +1 -1
- package/_cjs/Channel/definition.cjs +18 -143
- package/_cjs/Channel/definition.cjs.map +1 -1
- package/_cjs/Channel/internal/ChannelExecutor.cjs +51 -49
- package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
- package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs +8 -2
- package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs.map +1 -1
- package/_cjs/Console/live.cjs +1 -1
- package/_cjs/Console/live.cjs.map +1 -1
- package/_cjs/Fiber/FiberRuntime.cjs +23 -18
- package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
- package/_cjs/FiberRef/definition.cjs +3 -1
- package/_cjs/FiberRef/definition.cjs.map +1 -1
- package/_cjs/FiberRef/unsafe.cjs +6 -1
- package/_cjs/FiberRef/unsafe.cjs.map +1 -1
- package/_cjs/Future/api.cjs +12 -12
- package/_cjs/Future/api.cjs.map +1 -1
- package/_cjs/Future/definition.cjs +10 -3
- package/_cjs/Future/definition.cjs.map +1 -1
- package/_cjs/IO/api/all.cjs +4 -4
- package/_cjs/IO/api/all.cjs.map +1 -1
- package/_cjs/IO/api/asyncInterrupt.cjs +7 -4
- package/_cjs/IO/api/asyncInterrupt.cjs.map +1 -1
- package/_cjs/IO/api.cjs +38 -14
- package/_cjs/IO/api.cjs.map +1 -1
- package/_cjs/IO/definition.cjs.map +1 -1
- package/_cjs/IO/runtime.cjs +6 -3
- package/_cjs/IO/runtime.cjs.map +1 -1
- package/_cjs/Layer/api.cjs +4 -1
- package/_cjs/Layer/api.cjs.map +1 -1
- package/_cjs/Push/api.cjs +4 -1
- package/_cjs/Push/api.cjs.map +1 -1
- package/_cjs/Ref/Derived.cjs +35 -8
- package/_cjs/Ref/Derived.cjs.map +1 -1
- package/_cjs/Ref/DerivedAll.cjs +35 -8
- package/_cjs/Ref/DerivedAll.cjs.map +1 -1
- package/_cjs/RuntimeFlags/RuntimeFlags.cjs +3 -4
- package/_cjs/RuntimeFlags/RuntimeFlags.cjs.map +1 -1
- package/_cjs/STM/api/core-api.cjs +4 -1
- package/_cjs/STM/api/core-api.cjs.map +1 -1
- package/_cjs/STM/api.cjs +16 -4
- package/_cjs/STM/api.cjs.map +1 -1
- package/_cjs/Schedule/api.cjs +7 -1
- package/_cjs/Schedule/api.cjs.map +1 -1
- package/_cjs/ScopedRef/api.cjs +2 -2
- package/_cjs/ScopedRef/api.cjs.map +1 -1
- package/_cjs/Sink/api.cjs +7 -1
- package/_cjs/Sink/api.cjs.map +1 -1
- package/_cjs/Stream/api/zipAllWith.cjs +4 -1
- package/_cjs/Stream/api/zipAllWith.cjs.map +1 -1
- package/_cjs/Stream/api/zipWithChunks.cjs +4 -1
- package/_cjs/Stream/api/zipWithChunks.cjs.map +1 -1
- package/_cjs/Stream/api.cjs +36 -15
- package/_cjs/Stream/api.cjs.map +1 -1
- package/_cjs/SupervisorPatch.cjs +38 -15
- package/_cjs/SupervisorPatch.cjs.map +1 -1
- package/_cjs/TRef/definition.cjs +74 -20
- package/_cjs/TRef/definition.cjs.map +1 -1
- package/_mjs/Channel/api/mapOutConcurrentIO.mjs +8 -2
- package/_mjs/Channel/api/mapOutConcurrentIO.mjs.map +1 -1
- package/_mjs/Channel/api/mergeAllWith.mjs +23 -14
- package/_mjs/Channel/api/mergeAllWith.mjs.map +1 -1
- package/_mjs/Channel/api/mergeWith.mjs +16 -4
- package/_mjs/Channel/api/mergeWith.mjs.map +1 -1
- package/_mjs/Channel/api.mjs +132 -37
- package/_mjs/Channel/api.mjs.map +1 -1
- package/_mjs/Channel/core-api.mjs +14 -4
- package/_mjs/Channel/core-api.mjs.map +1 -1
- package/_mjs/Channel/definition.mjs +14 -135
- package/_mjs/Channel/definition.mjs.map +1 -1
- package/_mjs/Channel/internal/ChannelExecutor.mjs +52 -50
- package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
- package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs +8 -2
- package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs.map +1 -1
- package/_mjs/Console/live.mjs +1 -1
- package/_mjs/Console/live.mjs.map +1 -1
- package/_mjs/Fiber/FiberRuntime.mjs +23 -18
- package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
- package/_mjs/FiberRef/definition.mjs +3 -1
- package/_mjs/FiberRef/definition.mjs.map +1 -1
- package/_mjs/FiberRef/unsafe.mjs +4 -0
- package/_mjs/FiberRef/unsafe.mjs.map +1 -1
- package/_mjs/Future/api.mjs +12 -12
- package/_mjs/Future/api.mjs.map +1 -1
- package/_mjs/Future/definition.mjs +7 -2
- package/_mjs/Future/definition.mjs.map +1 -1
- package/_mjs/IO/api/all.mjs +4 -4
- package/_mjs/IO/api/all.mjs.map +1 -1
- package/_mjs/IO/api/asyncInterrupt.mjs +7 -4
- package/_mjs/IO/api/asyncInterrupt.mjs.map +1 -1
- package/_mjs/IO/api.mjs +38 -14
- package/_mjs/IO/api.mjs.map +1 -1
- package/_mjs/IO/definition.mjs.map +1 -1
- package/_mjs/IO/runtime.mjs +6 -3
- package/_mjs/IO/runtime.mjs.map +1 -1
- package/_mjs/Layer/api.mjs +4 -1
- package/_mjs/Layer/api.mjs.map +1 -1
- package/_mjs/Push/api.mjs +4 -1
- package/_mjs/Push/api.mjs.map +1 -1
- package/_mjs/Ref/Derived.mjs +35 -8
- package/_mjs/Ref/Derived.mjs.map +1 -1
- package/_mjs/Ref/DerivedAll.mjs +35 -8
- package/_mjs/Ref/DerivedAll.mjs.map +1 -1
- package/_mjs/RuntimeFlags/RuntimeFlags.mjs +3 -4
- package/_mjs/RuntimeFlags/RuntimeFlags.mjs.map +1 -1
- package/_mjs/STM/api/core-api.mjs +4 -1
- package/_mjs/STM/api/core-api.mjs.map +1 -1
- package/_mjs/STM/api.mjs +16 -4
- package/_mjs/STM/api.mjs.map +1 -1
- package/_mjs/Schedule/api.mjs +7 -1
- package/_mjs/Schedule/api.mjs.map +1 -1
- package/_mjs/ScopedRef/api.mjs +2 -2
- package/_mjs/ScopedRef/api.mjs.map +1 -1
- package/_mjs/Sink/api.mjs +7 -1
- package/_mjs/Sink/api.mjs.map +1 -1
- package/_mjs/Stream/api/zipAllWith.mjs +4 -1
- package/_mjs/Stream/api/zipAllWith.mjs.map +1 -1
- package/_mjs/Stream/api/zipWithChunks.mjs +4 -1
- package/_mjs/Stream/api/zipWithChunks.mjs.map +1 -1
- package/_mjs/Stream/api.mjs +36 -15
- package/_mjs/Stream/api.mjs.map +1 -1
- package/_mjs/SupervisorPatch.mjs +38 -15
- package/_mjs/SupervisorPatch.mjs.map +1 -1
- package/_mjs/TRef/definition.mjs +74 -20
- package/_mjs/TRef/definition.mjs.map +1 -1
- package/_src/Channel/api/mapOutConcurrentIO.ts +5 -5
- package/_src/Channel/api/mergeAllWith.ts +9 -9
- package/_src/Channel/api/mergeWith.ts +16 -16
- package/_src/Channel/api.ts +128 -143
- package/_src/Channel/core-api.ts +17 -14
- package/_src/Channel/definition.ts +187 -236
- package/_src/Channel/internal/ChannelExecutor.ts +47 -45
- package/_src/Channel/internal/SingleProducerAsyncInput.ts +2 -2
- package/_src/Console/live.ts +1 -1
- package/_src/Fiber/FiberRuntime.ts +6 -3
- package/_src/FiberRef/definition.ts +4 -1
- package/_src/FiberRef/unsafe.ts +5 -0
- package/_src/Future/definition.ts +19 -3
- package/_src/IO/api/all.ts +14 -15
- package/_src/IO/api/asyncInterrupt.ts +4 -4
- package/_src/IO/api.ts +19 -15
- package/_src/IO/definition.ts +5 -3
- package/_src/IO/runtime.ts +6 -3
- package/_src/Layer/api.ts +4 -1
- package/_src/Push/api.ts +4 -4
- package/_src/Ref/Derived.ts +20 -18
- package/_src/Ref/DerivedAll.ts +21 -18
- package/_src/RuntimeFlags/RuntimeFlags.ts +1 -1
- package/_src/STM/api/core-api.ts +1 -1
- package/_src/STM/api.ts +4 -4
- package/_src/Schedule/api.ts +8 -8
- package/_src/ScopedRef/api.ts +4 -3
- package/_src/Sink/api.ts +8 -8
- package/_src/Stream/api/zipAllWith.ts +4 -4
- package/_src/Stream/api/zipWithChunks.ts +4 -4
- package/_src/Stream/api.ts +21 -19
- package/_src/SupervisorPatch.ts +1 -0
- package/_src/TRef/definition.ts +36 -33
- package/package.json +2 -2
package/_src/Channel/api.ts
CHANGED
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
BracketOut,
|
|
9
9
|
Bridge,
|
|
10
10
|
Channel,
|
|
11
|
+
ChannelPrimitive,
|
|
12
|
+
ChannelTag,
|
|
11
13
|
ConcatAll,
|
|
12
14
|
ContinuationK,
|
|
13
15
|
Defer,
|
|
@@ -101,7 +103,10 @@ export function acquireReleaseOutExitWith<R, R2, E, Z>(
|
|
|
101
103
|
self: IO<R, E, Z>,
|
|
102
104
|
release: (z: Z, e: Exit<unknown, unknown>) => URIO<R2, unknown>,
|
|
103
105
|
): Channel<R | R2, unknown, unknown, unknown, E, Z, void> {
|
|
104
|
-
|
|
106
|
+
const op = new ChannelPrimitive(ChannelTag.BracketOut);
|
|
107
|
+
op.i0 = self;
|
|
108
|
+
op.i1 = release;
|
|
109
|
+
return op as any;
|
|
105
110
|
}
|
|
106
111
|
|
|
107
112
|
/**
|
|
@@ -165,10 +170,10 @@ export function catchAll<Env1, InErr1, InElem1, InDone1, OutErr, OutErr1, OutEle
|
|
|
165
170
|
OutDone | OutDone1
|
|
166
171
|
> => {
|
|
167
172
|
return self.catchAllCause((cause) =>
|
|
168
|
-
cause.failureOrCause.match(
|
|
169
|
-
(l) => f(l),
|
|
170
|
-
(r) => Channel.failCauseNow(r),
|
|
171
|
-
),
|
|
173
|
+
cause.failureOrCause.match({
|
|
174
|
+
Left: (l) => f(l),
|
|
175
|
+
Right: (r) => Channel.failCauseNow(r),
|
|
176
|
+
}),
|
|
172
177
|
);
|
|
173
178
|
};
|
|
174
179
|
}
|
|
@@ -194,17 +199,16 @@ export function catchAllCause<Env1, InErr1, InElem1, InDone1, OutErr, OutErr1, O
|
|
|
194
199
|
OutElem | OutElem1,
|
|
195
200
|
OutDone | OutDone1
|
|
196
201
|
> => {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
>(self, new ContinuationK((_) => Channel.endNow(_), f));
|
|
202
|
+
const op = new ChannelPrimitive(ChannelTag.Fold);
|
|
203
|
+
const continuation = new ChannelPrimitive(ChannelTag.ContinuationK);
|
|
204
|
+
|
|
205
|
+
continuation.i0 = Channel.endNow;
|
|
206
|
+
continuation.i1 = f;
|
|
207
|
+
|
|
208
|
+
op.i0 = self;
|
|
209
|
+
op.i1 = continuation;
|
|
210
|
+
|
|
211
|
+
return op as any;
|
|
208
212
|
};
|
|
209
213
|
}
|
|
210
214
|
|
|
@@ -254,25 +258,14 @@ export function concatMapWith<OutElem, OutElem2, OutDone, OutDone2, OutDone3, En
|
|
|
254
258
|
return <Env, InErr, InElem, InDone, OutErr>(
|
|
255
259
|
channel: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>,
|
|
256
260
|
): Channel<Env | Env2, InErr & InErr2, InElem & InElem2, InDone & InDone2, OutErr | OutErr2, OutElem2, OutDone3> => {
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
OutDone,
|
|
266
|
-
OutDone2,
|
|
267
|
-
OutDone3
|
|
268
|
-
>(
|
|
269
|
-
g,
|
|
270
|
-
h,
|
|
271
|
-
() => UpstreamPullStrategy.PullAfterNext(Nothing()),
|
|
272
|
-
() => ChildExecutorDecision.Continue,
|
|
273
|
-
channel,
|
|
274
|
-
f,
|
|
275
|
-
);
|
|
261
|
+
const op = new ChannelPrimitive(ChannelTag.ConcatAll);
|
|
262
|
+
op.i0 = g;
|
|
263
|
+
op.i1 = h;
|
|
264
|
+
op.i2 = () => UpstreamPullStrategy.PullAfterNext(Nothing());
|
|
265
|
+
op.i3 = () => ChildExecutorDecision.Continue;
|
|
266
|
+
op.i4 = channel;
|
|
267
|
+
op.i5 = f;
|
|
268
|
+
return op as any;
|
|
276
269
|
};
|
|
277
270
|
}
|
|
278
271
|
|
|
@@ -306,18 +299,14 @@ export function concatMapWithCustom<
|
|
|
306
299
|
return <Env, InErr, InElem, InDone, OutErr>(
|
|
307
300
|
channel: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone2>,
|
|
308
301
|
): Channel<Env | Env2, InErr & InErr2, InElem & InElem2, InDone & InDone2, OutErr | OutErr2, OutElem2, OutDone3> => {
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
OutDone,
|
|
318
|
-
OutDone2,
|
|
319
|
-
OutDone3
|
|
320
|
-
>(g, h, onPull, onEmit, channel, f);
|
|
302
|
+
const op = new ChannelPrimitive(ChannelTag.ConcatAll);
|
|
303
|
+
op.i0 = g;
|
|
304
|
+
op.i1 = h;
|
|
305
|
+
op.i2 = onPull;
|
|
306
|
+
op.i3 = onEmit;
|
|
307
|
+
op.i4 = channel;
|
|
308
|
+
op.i5 = f;
|
|
309
|
+
return op as any;
|
|
321
310
|
};
|
|
322
311
|
}
|
|
323
312
|
|
|
@@ -341,25 +330,14 @@ export function concatAllWith<OutDone, OutDone2, OutDone3>(
|
|
|
341
330
|
OutDone2
|
|
342
331
|
>,
|
|
343
332
|
): Channel<Env | Env2, InErr & InErr2, InElem & InElem2, InDone & InDone2, OutErr | OutErr2, OutElem, OutDone3> => {
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
OutDone,
|
|
353
|
-
OutDone2,
|
|
354
|
-
OutDone3
|
|
355
|
-
>(
|
|
356
|
-
f,
|
|
357
|
-
g,
|
|
358
|
-
() => UpstreamPullStrategy.PullAfterNext(Nothing()),
|
|
359
|
-
() => ChildExecutorDecision.Continue,
|
|
360
|
-
channels,
|
|
361
|
-
identity,
|
|
362
|
-
);
|
|
333
|
+
const op = new ChannelPrimitive(ChannelTag.ConcatAll);
|
|
334
|
+
op.i0 = f;
|
|
335
|
+
op.i1 = g;
|
|
336
|
+
op.i2 = () => UpstreamPullStrategy.PullAfterNext(Nothing());
|
|
337
|
+
op.i3 = () => ChildExecutorDecision.Continue;
|
|
338
|
+
op.i4 = channels;
|
|
339
|
+
op.i5 = identity;
|
|
340
|
+
return op as any;
|
|
363
341
|
};
|
|
364
342
|
}
|
|
365
343
|
|
|
@@ -473,7 +451,9 @@ export function contramapInIO<Env1, InErr, InElem0, InElem>(f: (a: InElem0) => I
|
|
|
473
451
|
export function defer<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>(
|
|
474
452
|
effect: Lazy<Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>>,
|
|
475
453
|
): Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> {
|
|
476
|
-
|
|
454
|
+
const op = new ChannelPrimitive(ChannelTag.Defer);
|
|
455
|
+
op.i0 = effect;
|
|
456
|
+
return op as any;
|
|
477
457
|
}
|
|
478
458
|
|
|
479
459
|
function doneCollectReader<OutErr, OutElem, OutDone>(
|
|
@@ -562,7 +542,10 @@ export function ensuringWith<Env2, OutErr, OutDone>(finalizer: (e: Exit<OutErr,
|
|
|
562
542
|
return <Env, InErr, InElem, InDone, OutElem>(
|
|
563
543
|
channel: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
|
|
564
544
|
): Channel<Env | Env2, InErr, InElem, InDone, OutErr, OutElem, OutDone> => {
|
|
565
|
-
|
|
545
|
+
const op = new ChannelPrimitive(ChannelTag.Ensuring);
|
|
546
|
+
op.i0 = channel;
|
|
547
|
+
op.i1 = finalizer;
|
|
548
|
+
return op as any;
|
|
566
549
|
};
|
|
567
550
|
}
|
|
568
551
|
|
|
@@ -575,7 +558,10 @@ export function embedInput<InErr, InElem, InDone>(input: AsyncInputProducer<InEr
|
|
|
575
558
|
return <Env, OutErr, OutElem, OutDone>(
|
|
576
559
|
self: Channel<Env, unknown, unknown, unknown, OutErr, OutElem, OutDone>,
|
|
577
560
|
): Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone> => {
|
|
578
|
-
|
|
561
|
+
const op = new ChannelPrimitive(ChannelTag.Bridge);
|
|
562
|
+
op.i0 = input;
|
|
563
|
+
op.i1 = self;
|
|
564
|
+
return op as any;
|
|
579
565
|
};
|
|
580
566
|
}
|
|
581
567
|
|
|
@@ -585,7 +571,9 @@ export function embedInput<InErr, InElem, InDone>(input: AsyncInputProducer<InEr
|
|
|
585
571
|
* @tsplus static fncts.io.ChannelOps fail
|
|
586
572
|
*/
|
|
587
573
|
export function fail<E>(error: Lazy<E>): Channel<never, unknown, unknown, unknown, E, never, never> {
|
|
588
|
-
|
|
574
|
+
const op = new ChannelPrimitive(ChannelTag.Halt);
|
|
575
|
+
op.i0 = () => Cause.fail(error());
|
|
576
|
+
return op as any;
|
|
589
577
|
}
|
|
590
578
|
|
|
591
579
|
/**
|
|
@@ -594,7 +582,9 @@ export function fail<E>(error: Lazy<E>): Channel<never, unknown, unknown, unknow
|
|
|
594
582
|
* @tsplus static fncts.io.ChannelOps failNow
|
|
595
583
|
*/
|
|
596
584
|
export function failNow<E>(error: E): Channel<never, unknown, unknown, unknown, E, never, never> {
|
|
597
|
-
|
|
585
|
+
const op = new ChannelPrimitive(ChannelTag.Halt);
|
|
586
|
+
op.i0 = () => Cause.fail(error);
|
|
587
|
+
return op as any;
|
|
598
588
|
}
|
|
599
589
|
|
|
600
590
|
/**
|
|
@@ -643,7 +633,7 @@ export function flatten<
|
|
|
643
633
|
* @tsplus static fncts.io.ChannelOps fromEither
|
|
644
634
|
*/
|
|
645
635
|
export function fromEither<E, A>(either: Lazy<Either<E, A>>): Channel<never, unknown, unknown, unknown, E, never, A> {
|
|
646
|
-
return Channel.defer(either().match(Channel.failNow, Channel.succeedNow));
|
|
636
|
+
return Channel.defer(either().match({ Left: Channel.failNow, Right: Channel.succeedNow }));
|
|
647
637
|
}
|
|
648
638
|
|
|
649
639
|
/**
|
|
@@ -663,7 +653,11 @@ export function fromInput<Err, Elem, Done>(
|
|
|
663
653
|
* @tsplus static fncts.io.ChannelOps fromIO
|
|
664
654
|
*/
|
|
665
655
|
export function fromIO<R, E, A>(io: Lazy<IO<R, E, A>>): Channel<R, unknown, unknown, unknown, E, never, A> {
|
|
666
|
-
return Channel.defer(
|
|
656
|
+
return Channel.defer(() => {
|
|
657
|
+
const op = new ChannelPrimitive(ChannelTag.FromIO) as any;
|
|
658
|
+
op.i0 = io();
|
|
659
|
+
return op;
|
|
660
|
+
});
|
|
667
661
|
}
|
|
668
662
|
|
|
669
663
|
/**
|
|
@@ -680,10 +674,10 @@ export function fromQueue<Err, Elem, Done>(
|
|
|
680
674
|
queue: Queue.Dequeue<Either<Exit<Err, Done>, Elem>>,
|
|
681
675
|
): Channel<never, unknown, unknown, unknown, Err, Elem, Done> {
|
|
682
676
|
return Channel.fromIO(queue.take).flatMap((_) =>
|
|
683
|
-
_.match(
|
|
684
|
-
(_) => _.match(Channel.failCauseNow, Channel.endNow),
|
|
685
|
-
(elem) => Channel.writeNow(elem).zipRight(Channel.fromQueue(queue)),
|
|
686
|
-
),
|
|
677
|
+
_.match({
|
|
678
|
+
Left: (_) => _.match(Channel.failCauseNow, Channel.endNow),
|
|
679
|
+
Right: (elem) => Channel.writeNow(elem).zipRight(Channel.fromQueue(queue)),
|
|
680
|
+
}),
|
|
687
681
|
);
|
|
688
682
|
}
|
|
689
683
|
|
|
@@ -697,7 +691,12 @@ export function provideEnvironment<Env>(env: Lazy<Environment<Env>>) {
|
|
|
697
691
|
return <InErr, InElem, InDone, OutErr, OutElem, OutDone>(
|
|
698
692
|
self: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
|
|
699
693
|
): Channel<never, InErr, InElem, InDone, OutErr, OutElem, OutDone> => {
|
|
700
|
-
return Channel.defer(
|
|
694
|
+
return Channel.defer(() => {
|
|
695
|
+
const op = new ChannelPrimitive(ChannelTag.Provide);
|
|
696
|
+
op.i0 = env();
|
|
697
|
+
op.i1 = self;
|
|
698
|
+
return op as any;
|
|
699
|
+
});
|
|
701
700
|
};
|
|
702
701
|
}
|
|
703
702
|
|
|
@@ -718,7 +717,9 @@ export function contramapEnvironment<Env, Env0>(f: (env0: Environment<Env0>) =>
|
|
|
718
717
|
* @tsplus static fncts.io.ChannelOps haltNow
|
|
719
718
|
*/
|
|
720
719
|
export function haltNow(defect: unknown): Channel<never, unknown, unknown, unknown, never, never, never> {
|
|
721
|
-
|
|
720
|
+
const op = new ChannelPrimitive(ChannelTag.Halt);
|
|
721
|
+
op.i0 = () => Cause.halt(defect);
|
|
722
|
+
return op as any;
|
|
722
723
|
}
|
|
723
724
|
|
|
724
725
|
/**
|
|
@@ -727,7 +728,9 @@ export function haltNow(defect: unknown): Channel<never, unknown, unknown, unkno
|
|
|
727
728
|
* @tsplus static fncts.io.ChannelOps halt
|
|
728
729
|
*/
|
|
729
730
|
export function halt(defect: Lazy<unknown>): Channel<never, unknown, unknown, unknown, never, never, never> {
|
|
730
|
-
|
|
731
|
+
const op = new ChannelPrimitive(ChannelTag.Halt);
|
|
732
|
+
op.i0 = () => Cause.halt(defect());
|
|
733
|
+
return op as any;
|
|
731
734
|
}
|
|
732
735
|
|
|
733
736
|
/**
|
|
@@ -881,30 +884,16 @@ export function matchCauseChannel<
|
|
|
881
884
|
OutElem | OutElem1 | OutElem2,
|
|
882
885
|
OutDone2 | OutDone3
|
|
883
886
|
> => {
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
>(
|
|
895
|
-
channel,
|
|
896
|
-
new ContinuationK<
|
|
897
|
-
Env | Env1 | Env2,
|
|
898
|
-
InErr & InErr1 & InErr2,
|
|
899
|
-
InElem & InElem1 & InElem2,
|
|
900
|
-
InDone & InDone1 & InDone2,
|
|
901
|
-
OutErr,
|
|
902
|
-
OutErr2 | OutErr3,
|
|
903
|
-
OutElem | OutElem1 | OutElem2,
|
|
904
|
-
OutDone,
|
|
905
|
-
OutDone2 | OutDone3
|
|
906
|
-
>(onSuccess, onError),
|
|
907
|
-
);
|
|
887
|
+
const op = new ChannelPrimitive(ChannelTag.Fold);
|
|
888
|
+
op.i0 = channel;
|
|
889
|
+
|
|
890
|
+
const continuation = new ChannelPrimitive(ChannelTag.ContinuationK);
|
|
891
|
+
continuation.i0 = onSuccess;
|
|
892
|
+
continuation.i1 = onError;
|
|
893
|
+
|
|
894
|
+
op.i1 = continuation;
|
|
895
|
+
|
|
896
|
+
return op as any;
|
|
908
897
|
};
|
|
909
898
|
}
|
|
910
899
|
|
|
@@ -945,7 +934,10 @@ export function matchChannel<
|
|
|
945
934
|
OutElem | OutElem1 | OutElem2,
|
|
946
935
|
OutDone2 | OutDone3
|
|
947
936
|
> => {
|
|
948
|
-
return channel.matchCauseChannel(
|
|
937
|
+
return channel.matchCauseChannel(
|
|
938
|
+
(cause) => cause.failureOrCause.match({ Left: onError, Right: Channel.failCauseNow }),
|
|
939
|
+
onSuccess,
|
|
940
|
+
);
|
|
949
941
|
};
|
|
950
942
|
}
|
|
951
943
|
|
|
@@ -1009,10 +1001,10 @@ export function pipeTo<OutErr, OutElem, OutDone, Env1, OutErr1, OutElem1, OutDon
|
|
|
1009
1001
|
return <Env, InErr, InElem, InDone>(
|
|
1010
1002
|
left: Channel<Env, InErr, InElem, InDone, OutErr, OutElem, OutDone>,
|
|
1011
1003
|
): Channel<Env | Env1, InErr, InElem, InDone, OutErr1, OutElem1, OutDone1> => {
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1004
|
+
const op = new ChannelPrimitive(ChannelTag.PipeTo);
|
|
1005
|
+
op.i0 = () => left;
|
|
1006
|
+
op.i1 = () => right;
|
|
1007
|
+
return op as any;
|
|
1016
1008
|
};
|
|
1017
1009
|
}
|
|
1018
1010
|
|
|
@@ -1058,13 +1050,16 @@ export function read<In>(): Channel<never, unknown, In, unknown, Nothing, never,
|
|
|
1058
1050
|
* @tsplus static fncts.io.ChannelOps readOrFail
|
|
1059
1051
|
*/
|
|
1060
1052
|
export function readOrFail<In, E>(e: E): Channel<never, unknown, In, unknown, E, never, In> {
|
|
1061
|
-
|
|
1062
|
-
Channel.endNow
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
)
|
|
1067
|
-
|
|
1053
|
+
const op = new ChannelPrimitive(ChannelTag.Read);
|
|
1054
|
+
op.i0 = Channel.endNow;
|
|
1055
|
+
|
|
1056
|
+
const continuation = new ChannelPrimitive(ChannelTag.ContinuationK);
|
|
1057
|
+
continuation.i0 = () => Channel.failNow(e);
|
|
1058
|
+
continuation.i1 = () => Channel.failNow(e);
|
|
1059
|
+
|
|
1060
|
+
op.i1 = continuation;
|
|
1061
|
+
|
|
1062
|
+
return op as any;
|
|
1068
1063
|
}
|
|
1069
1064
|
|
|
1070
1065
|
/**
|
|
@@ -1101,30 +1096,16 @@ export function readWithCause<
|
|
|
1101
1096
|
OutElem | OutElem1 | OutElem2,
|
|
1102
1097
|
OutDone | OutDone1 | OutDone2
|
|
1103
1098
|
> {
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
>(
|
|
1115
|
-
inp,
|
|
1116
|
-
new ContinuationK<
|
|
1117
|
-
Env | Env1 | Env2,
|
|
1118
|
-
InErr,
|
|
1119
|
-
InElem,
|
|
1120
|
-
InDone,
|
|
1121
|
-
InErr,
|
|
1122
|
-
OutErr | OutErr1 | OutErr2,
|
|
1123
|
-
OutElem | OutElem1 | OutElem2,
|
|
1124
|
-
InDone,
|
|
1125
|
-
OutDone | OutDone1 | OutDone2
|
|
1126
|
-
>(done, halt),
|
|
1127
|
-
);
|
|
1099
|
+
const op = new ChannelPrimitive(ChannelTag.Read);
|
|
1100
|
+
op.i0 = inp;
|
|
1101
|
+
|
|
1102
|
+
const continuation = new ChannelPrimitive(ChannelTag.ContinuationK);
|
|
1103
|
+
continuation.i0 = done;
|
|
1104
|
+
continuation.i1 = halt;
|
|
1105
|
+
|
|
1106
|
+
op.i1 = continuation;
|
|
1107
|
+
|
|
1108
|
+
return op as any;
|
|
1128
1109
|
}
|
|
1129
1110
|
|
|
1130
1111
|
/**
|
|
@@ -1161,7 +1142,7 @@ export function readWith<
|
|
|
1161
1142
|
OutElem | OutElem1 | OutElem2,
|
|
1162
1143
|
OutDone | OutDone1 | OutDone2
|
|
1163
1144
|
> {
|
|
1164
|
-
return Channel.readWithCause(inp, (c) => c.failureOrCause.match(error, Channel.failCauseNow), done);
|
|
1145
|
+
return Channel.readWithCause(inp, (c) => c.failureOrCause.match({ Left: error, Right: Channel.failCauseNow }), done);
|
|
1165
1146
|
}
|
|
1166
1147
|
|
|
1167
1148
|
/**
|
|
@@ -1201,7 +1182,9 @@ export function toQueue<Err, Done, Elem>(
|
|
|
1201
1182
|
* @tsplus static fncts.io.ChannelOps write
|
|
1202
1183
|
*/
|
|
1203
1184
|
export function write<OutElem>(out: Lazy<OutElem>): Channel<never, unknown, unknown, unknown, never, OutElem, void> {
|
|
1204
|
-
|
|
1185
|
+
const op = new ChannelPrimitive(ChannelTag.Emit);
|
|
1186
|
+
op.i0 = out;
|
|
1187
|
+
return op as any;
|
|
1205
1188
|
}
|
|
1206
1189
|
|
|
1207
1190
|
/**
|
|
@@ -1233,7 +1216,9 @@ export function writeChunk<Out>(outs: Conc<Out>): Channel<never, unknown, unknow
|
|
|
1233
1216
|
* @tsplus static fncts.io.ChannelOps writeNow
|
|
1234
1217
|
*/
|
|
1235
1218
|
export function writeNow<OutElem>(out: OutElem): Channel<never, unknown, unknown, unknown, never, OutElem, void> {
|
|
1236
|
-
|
|
1219
|
+
const op = new ChannelPrimitive(ChannelTag.Emit);
|
|
1220
|
+
op.i0 = () => out;
|
|
1221
|
+
return op as any;
|
|
1237
1222
|
}
|
|
1238
1223
|
|
|
1239
1224
|
/**
|
package/_src/Channel/core-api.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { tuple } from "@fncts/base/data/function";
|
|
2
2
|
|
|
3
|
-
import { ContinuationK, Done, Fail, Fold } from "./definition.js";
|
|
3
|
+
import { ChannelPrimitive, ChannelTag, ContinuationK, Done, Fail, Fold } from "./definition.js";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Halt a channel with the specified cause
|
|
@@ -8,7 +8,9 @@ import { ContinuationK, Done, Fail, Fold } from "./definition.js";
|
|
|
8
8
|
* @tsplus static fncts.io.ChannelOps failCause
|
|
9
9
|
*/
|
|
10
10
|
export function failCause<E>(result: Lazy<Cause<E>>): Channel<never, unknown, unknown, unknown, E, never, never> {
|
|
11
|
-
|
|
11
|
+
const op = new ChannelPrimitive(ChannelTag.Halt);
|
|
12
|
+
op.i0 = result;
|
|
13
|
+
return op as any;
|
|
12
14
|
}
|
|
13
15
|
|
|
14
16
|
/**
|
|
@@ -26,7 +28,9 @@ export function failCauseNow<E>(result: Cause<E>): Channel<never, unknown, unkno
|
|
|
26
28
|
* @tsplus static fncts.io.ChannelOps end
|
|
27
29
|
*/
|
|
28
30
|
export function end<OutDone>(result: Lazy<OutDone>): Channel<never, unknown, unknown, unknown, never, never, OutDone> {
|
|
29
|
-
|
|
31
|
+
const op = new ChannelPrimitive(ChannelTag.Done);
|
|
32
|
+
op.i0 = result;
|
|
33
|
+
return op as any;
|
|
30
34
|
}
|
|
31
35
|
|
|
32
36
|
/**
|
|
@@ -93,17 +97,16 @@ export function flatMap<OutDone, Env1, InErr1, InElem1, InDone1, OutErr1, OutEle
|
|
|
93
97
|
OutElem | OutElem1,
|
|
94
98
|
OutDone2
|
|
95
99
|
> => {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
>(channel, new ContinuationK(f, Channel.failCauseNow));
|
|
100
|
+
const op = new ChannelPrimitive(ChannelTag.Fold);
|
|
101
|
+
|
|
102
|
+
const continuation = new ChannelPrimitive(ChannelTag.ContinuationK);
|
|
103
|
+
continuation.i0 = f;
|
|
104
|
+
continuation.i1 = Channel.failCauseNow;
|
|
105
|
+
|
|
106
|
+
op.i0 = channel;
|
|
107
|
+
op.i1 = continuation;
|
|
108
|
+
|
|
109
|
+
return op as any;
|
|
107
110
|
};
|
|
108
111
|
}
|
|
109
112
|
|