@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.
- package/Channel/definition.d.ts +108 -104
- package/FiberRef/unsafe.d.ts +5 -0
- package/Future/definition.d.ts +24 -3
- 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/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/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/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/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/asyncInterrupt.ts +4 -4
- package/_src/IO/api.ts +19 -15
- 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
|
|