@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
@@ -34,8 +34,9 @@ export class DerivedAll<EA, EB, A, B> extends RefInternal<never, never, EA, EB,
34
34
  new DerivedAll((f) =>
35
35
  f(
36
36
  value,
37
- (s) => getEither(s).match((e) => Either.left(eb(e)), bd),
38
- (c) => (s) => ca(c).flatMap((a) => setEither(a)(s).match((e) => Either.left(ea(e)), Either.right)),
37
+ (s) => getEither(s).match({ Left: (e) => Either.left(eb(e)), Right: bd }),
38
+ (c) => (s) =>
39
+ ca(c).flatMap((a) => setEither(a)(s).match({ Left: (e) => Either.left(ea(e)), Right: Either.right })),
39
40
  ),
40
41
  ),
41
42
  );
@@ -53,28 +54,30 @@ export class DerivedAll<EA, EB, A, B> extends RefInternal<never, never, EA, EB,
53
54
  new DerivedAll((f) =>
54
55
  f(
55
56
  value,
56
- (s) => getEither(s).match((e) => Either.left(eb(e)), bd),
57
+ (s) => getEither(s).match({ Left: (e) => Either.left(eb(e)), Right: bd }),
57
58
  (c) => (s) =>
58
59
  getEither(s)
59
- .match((e) => Either.left(ec(e)), ca(c))
60
- .flatMap((a) => setEither(a)(s).match((e) => Either.left(ea(e)), Either.right)),
60
+ .match({ Left: (e) => Either.left(ec(e)), Right: ca(c) })
61
+ .flatMap((a) => setEither(a)(s).match({ Left: (e) => Either.left(ea(e)), Right: Either.right })),
61
62
  ),
62
63
  ),
63
64
  );
64
65
  }
65
66
 
66
67
  get get(): FIO<EB, B> {
67
- return this.use((value, getEither) => value.get.flatMap((s) => getEither(s).match(IO.failNow, IO.succeedNow)));
68
+ return this.use((value, getEither) =>
69
+ value.get.flatMap((s) => getEither(s).match({ Left: IO.failNow, Right: IO.succeedNow })),
70
+ );
68
71
  }
69
72
 
70
73
  set(a: A): FIO<EA, void> {
71
74
  return this.use(
72
75
  (value, _, setEither) =>
73
76
  value.modify((s) =>
74
- setEither(a)(s).match(
75
- (e) => [Either.left(e), s] as [Either<EA, void>, typeof s],
76
- (s) => [Either.right(undefined), s],
77
- ),
77
+ setEither(a)(s).match({
78
+ Left: (e) => [Either.left(e), s] as [Either<EA, void>, typeof s],
79
+ Right: (s) => [Either.right(undefined), s],
80
+ }),
78
81
  ).absolve,
79
82
  );
80
83
  }
@@ -83,16 +86,16 @@ export class DerivedAll<EA, EB, A, B> extends RefInternal<never, never, EA, EB,
83
86
  return this.use(
84
87
  (value, getEither, setEither) =>
85
88
  value.modify((s) =>
86
- getEither(s).match(
87
- (e) => tuple(Either.left(e), s),
88
- (a1) => {
89
+ getEither(s).match({
90
+ Left: (e) => tuple(Either.left(e), s),
91
+ Right: (a1) => {
89
92
  const [b, a2] = f(a1);
90
- return setEither(a2)(s).match(
91
- (e) => tuple(Either.left(e), s),
92
- (s) => tuple(Either.right<EA | EB, C>(b), s),
93
- );
93
+ return setEither(a2)(s).match({
94
+ Left: (e) => tuple(Either.left(e), s),
95
+ Right: (s) => tuple(Either.right<EA | EB, C>(b), s),
96
+ });
94
97
  },
95
- ),
98
+ }),
96
99
  ).absolve,
97
100
  );
98
101
  }
@@ -14,7 +14,7 @@ export type RuntimeFlags = number & {
14
14
  */
15
15
  export interface RuntimeFlagsOps {}
16
16
 
17
- export const RuntimeFlags: RuntimeFlagsOps = Newtype();
17
+ export const RuntimeFlags: RuntimeFlagsOps = {};
18
18
 
19
19
  export declare namespace RuntimeFlags {
20
20
  type Patch = RuntimeFlagsPatch;
@@ -65,6 +65,6 @@ export function matchSTM<E, A, R1, E1, B, R2, E2, C>(
65
65
  return self
66
66
  .map(Either.right)
67
67
  .catchAll((e) => g(e).map(Either.left))
68
- .flatMap((ca) => ca.match(STM.succeedNow, f));
68
+ .flatMap((ca) => ca.match({ Left: STM.succeedNow, Right: f }));
69
69
  };
70
70
  }
package/_src/STM/api.ts CHANGED
@@ -429,7 +429,7 @@ export function foreach<A, R, E, B>(
429
429
  * @tsplus static fncts.io.STMOps fromEither
430
430
  */
431
431
  export function fromEither<E, A>(e: Lazy<Either<E, A>>, __tsplusTrace?: string): STM<never, E, A> {
432
- return STM.defer(e().match(STM.failNow, STM.succeedNow));
432
+ return STM.defer(e().match({ Left: STM.failNow, Right: STM.succeedNow }));
433
433
  }
434
434
 
435
435
  /**
@@ -438,7 +438,7 @@ export function fromEither<E, A>(e: Lazy<Either<E, A>>, __tsplusTrace?: string):
438
438
  * @tsplus static fncts.io.STMOps fromEitherNow
439
439
  */
440
440
  export function fromEitherNow<E, A>(e: Either<E, A>, __tsplusTrace?: string): STM<never, E, A> {
441
- return e.match(STM.failNow, STM.succeedNow);
441
+ return e.match({ Left: STM.failNow, Right: STM.succeedNow });
442
442
  }
443
443
 
444
444
  /**
@@ -553,7 +553,7 @@ export function isSuccess<R, E, A>(stm: STM<R, E, A>, __tsplusTrace?: string) {
553
553
  export function left<R, E, B, C>(stm: STM<R, E, Either<B, C>>, __tsplusTrace?: string): STM<R, Maybe<E>, B> {
554
554
  return stm.matchSTM(
555
555
  (e) => STM.fail(Just(e)),
556
- (bc) => bc.match(STM.succeedNow, () => STM.failNow(Nothing())),
556
+ (bc) => bc.match({ Left: STM.succeedNow, Right: () => STM.failNow(Nothing()) }),
557
557
  );
558
558
  }
559
559
 
@@ -564,7 +564,7 @@ export function left<R, E, B, C>(stm: STM<R, E, Either<B, C>>, __tsplusTrace?: s
564
564
  */
565
565
  export function leftOrFail<C, E1>(orFail: (c: C) => E1, __tsplusTrace?: string) {
566
566
  return <R, E, B>(stm: STM<R, E, Either<B, C>>): STM<R, E | E1, B> => {
567
- return stm.flatMap((bc) => bc.match(STM.succeedNow, (c) => STM.fail(orFail(c))));
567
+ return stm.flatMap((bc) => bc.match({ Left: STM.succeedNow, Right: (c) => STM.fail(orFail(c)) }));
568
568
  };
569
569
  }
570
570
 
@@ -618,17 +618,17 @@ export function reconsiderIO<S, O, R1, O1>(
618
618
  decision.match(
619
619
  () =>
620
620
  f(state, out, decision).map((r) =>
621
- r.match(
622
- (out1) => [state, out1, Decision.Done],
623
- ([out1, _]) => [state, out1, Decision.Done],
624
- ),
621
+ r.match({
622
+ Left: (out1) => [state, out1, Decision.Done],
623
+ Right: ([out1, _]) => [state, out1, Decision.Done],
624
+ }),
625
625
  ),
626
626
  () =>
627
627
  f(state, out, decision).map((r) =>
628
- r.match(
629
- (out1) => [state, out1, Decision.Done],
630
- ([out1, interval]) => [state, out1, Decision.continueWith(interval)],
631
- ),
628
+ r.match({
629
+ Left: (out1) => [state, out1, Decision.Done],
630
+ Right: ([out1, interval]) => [state, out1, Decision.continueWith(interval)],
631
+ }),
632
632
  ),
633
633
  ),
634
634
  ),
@@ -25,13 +25,14 @@ class Synch<A> extends ScopedRef<A> {
25
25
  return this.ref.modifyIO(([oldScope, a]) =>
26
26
  IO.uninterruptibleMask((restore) =>
27
27
  Do((_) => {
28
+ _(oldScope.close(Exit.unit));
28
29
  const newScope = _(Scope.make);
29
- const exit = _(restore(acquire.provideSomeService(newScope, Scope.Tag)).result);
30
+ const exit = _(restore(newScope.extend(acquire)).result);
30
31
  return _(
31
32
  exit.match(
32
33
  (cause): UIO<readonly [FIO<E, void>, readonly [Scope.Closeable, A]]> =>
33
- newScope.close(Exit.unit).ignore.as([IO.failCauseNow(cause), [oldScope, a]] as const),
34
- (a) => oldScope.close(Exit.unit).ignore.as([IO.unit, [newScope, a]] as const),
34
+ newScope.close(Exit.unit).as([IO.refailCause(cause), [oldScope, a]] as const),
35
+ (a) => IO.succeedNow([IO.unit, [newScope, a]] as const),
35
36
  ),
36
37
  );
37
38
  }),
package/_src/Sink/api.ts CHANGED
@@ -567,20 +567,20 @@ function fromPushPull<R, E, In, L, Z>(
567
567
  (inp: Conc<In>) =>
568
568
  Channel.fromIO(push(Just(inp))).matchChannel(
569
569
  ([r, leftovers]) =>
570
- r.match(
571
- (e) => Channel.writeNow(leftovers) > Channel.failNow(e),
572
- (z) => Channel.writeNow(leftovers) > Channel.succeedNow(z),
573
- ),
570
+ r.match({
571
+ Left: (e) => Channel.writeNow(leftovers) > Channel.failNow(e),
572
+ Right: (z) => Channel.writeNow(leftovers) > Channel.succeedNow(z),
573
+ }),
574
574
  () => fromPushPull(push),
575
575
  ),
576
576
  Channel.failNow,
577
577
  () =>
578
578
  Channel.fromIO(push(Nothing())).matchChannel(
579
579
  ([r, leftovers]) =>
580
- r.match(
581
- (e) => Channel.writeNow(leftovers) > Channel.failNow(e),
582
- (z) => Channel.writeNow(leftovers) > Channel.succeedNow(z),
583
- ),
580
+ r.match({
581
+ Left: (e) => Channel.writeNow(leftovers) > Channel.failNow(e),
582
+ Right: (z) => Channel.writeNow(leftovers) > Channel.succeedNow(z),
583
+ }),
584
584
  () => Channel.fromIO(IO.halt(new Error("empty sink"))),
585
585
  ),
586
586
  );
@@ -132,8 +132,8 @@ function zipWithChunks<A, B, C>(
132
132
  __tsplusTrace?: string,
133
133
  ): readonly [Conc<C>, State<A, B>] {
134
134
  const [out, r] = zipChunks(leftChunk, rightChunk, f);
135
- return r.match(
136
- (leftChunk) => (leftChunk.isEmpty ? [out, new PullBoth()] : [out, new PullRight(leftChunk)]),
137
- (rightChunk) => (rightChunk.isEmpty ? [out, new PullBoth()] : [out, new PullLeft(rightChunk)]),
138
- );
135
+ return r.match({
136
+ Left: (leftChunk) => (leftChunk.isEmpty ? [out, new PullBoth()] : [out, new PullRight(leftChunk)]),
137
+ Right: (rightChunk) => (rightChunk.isEmpty ? [out, new PullBoth()] : [out, new PullLeft(rightChunk)]),
138
+ });
139
139
  }
@@ -73,10 +73,10 @@ function handleSuccess<A1, A2, A3>(
73
73
  __tsplusTrace?: string,
74
74
  ): readonly [Conc<A3>, State<A1, A2>] {
75
75
  const [out, remaining] = f(leftChunk, rightChunk);
76
- return remaining.match(
77
- (l) => (leftChunk.isEmpty ? [out, new PullBoth()] : [out, new PullRight(leftChunk)]),
78
- (r) => (rightChunk.isEmpty ? [out, new PullBoth()] : [out, new PullLeft(rightChunk)]),
79
- );
76
+ return remaining.match({
77
+ Left: (l) => (leftChunk.isEmpty ? [out, new PullBoth()] : [out, new PullRight(leftChunk)]),
78
+ Right: (r) => (rightChunk.isEmpty ? [out, new PullBoth()] : [out, new PullLeft(rightChunk)]),
79
+ });
80
80
  }
81
81
 
82
82
  /**
@@ -56,7 +56,9 @@ export function aggregateAsyncWithin<R1, E1, A1, B, R2, C>(
56
56
  __tsplusTrace?: string,
57
57
  ) {
58
58
  return <R, E, A extends A1>(stream: Stream<R, E, A>): Stream<R | R1 | R2, E | E1, B> => {
59
- return stream.aggregateAsyncWithinEither(sink, schedule).filterMap((cb) => cb.match(() => Nothing(), Maybe.just));
59
+ return stream
60
+ .aggregateAsyncWithinEither(sink, schedule)
61
+ .filterMap((cb) => cb.match({ Left: () => Nothing(), Right: Maybe.just }));
60
62
  };
61
63
  }
62
64
 
@@ -165,14 +167,14 @@ export function aggregateAsyncWithinEither<R1, E1, A1, B, R2, C>(
165
167
  (scheduleExit, sinkFiber) =>
166
168
  IO.fromExit(scheduleExit).matchCauseIO(
167
169
  (cause) =>
168
- cause.failureOrCause.match(
169
- () =>
170
+ cause.failureOrCause.match({
171
+ Left: () =>
170
172
  handoff.offer(HandoffSignal.End(new ScheduleEnd())).forkDaemon >
171
173
  sinkFiber.join.map(([leftovers, b]) => handleSide(leftovers, b, Nothing())),
172
- (cause) =>
174
+ Right: (cause) =>
173
175
  handoff.offer(HandoffSignal.Halt(cause)).forkDaemon >
174
176
  sinkFiber.join.map(([leftovers, b]) => handleSide(leftovers, b, Nothing())),
175
- ),
177
+ }),
176
178
  (c) =>
177
179
  handoff.offer(HandoffSignal.End(new ScheduleEnd())).forkDaemon >
178
180
  sinkFiber.join.map(([leftovers, b]) => handleSide(leftovers, b, Just(c))),
@@ -255,8 +257,8 @@ export function asyncInterrupt<R, E, A>(
255
257
  }),
256
258
  ),
257
259
  );
258
- return eitherStream.match(
259
- (canceler) => {
260
+ return eitherStream.match({
261
+ Left: (canceler) => {
260
262
  const loop: Channel<never, unknown, unknown, unknown, E, Conc<A>, void> = Channel.unwrap(
261
263
  output.take
262
264
  .flatMap((take) => take.done)
@@ -267,8 +269,8 @@ export function asyncInterrupt<R, E, A>(
267
269
  );
268
270
  return new Stream(loop).ensuring(canceler);
269
271
  },
270
- (stream) => Stream.unwrap(output.shutdown.as(stream)),
271
- );
272
+ Right: (stream) => Stream.unwrap(output.shutdown.as(stream)),
273
+ });
272
274
  }),
273
275
  );
274
276
  }
@@ -336,10 +338,10 @@ export function asyncIO<R, E, A, R1 = R, E1 = E>(
336
338
  .matchCauseIO(
337
339
  (cause) =>
338
340
  output.shutdown.as(
339
- cause.failureOrCause.match(
340
- (maybeError) => maybeError.match(() => Channel.endNow(undefined), Channel.failNow),
341
- Channel.failCauseNow,
342
- ),
341
+ cause.failureOrCause.match({
342
+ Left: (maybeError) => maybeError.match(() => Channel.endNow(undefined), Channel.failNow),
343
+ Right: Channel.failCauseNow,
344
+ }),
343
345
  ),
344
346
  (as) => IO.succeed(Channel.writeNow(as) > loop),
345
347
  ),
@@ -577,7 +579,7 @@ function bufferSignalConsumer<R, E, A>(
577
579
  */
578
580
  export function catchAll<R1, E, E1, A1>(f: (e: E) => Stream<R1, E1, A1>, __tsplusTrace?: string) {
579
581
  return <R, A>(stream: Stream<R, E, A>): Stream<R | R1, E1, A | A1> => {
580
- return stream.catchAllCause((cause) => cause.failureOrCause.match(f, Stream.failCauseNow));
582
+ return stream.catchAllCause((cause) => cause.failureOrCause.match({ Left: f, Right: Stream.failCauseNow }));
581
583
  };
582
584
  }
583
585
 
@@ -3208,7 +3210,7 @@ export function toPull<R, E, A>(
3208
3210
  __tsplusTrace?: string,
3209
3211
  ): IO<R | Scope, never, IO<R, Maybe<E>, Conc<A>>> {
3210
3212
  return stream.channel.toPull.map((io) =>
3211
- io.mapError(Maybe.just).flatMap((r) => r.match(() => IO.failNow(Nothing()), IO.succeedNow)),
3213
+ io.mapError(Maybe.just).flatMap((r) => r.match({ Left: () => IO.failNow(Nothing()), Right: IO.succeedNow })),
3212
3214
  );
3213
3215
  }
3214
3216
 
@@ -3430,22 +3432,22 @@ export function zipWithLatest<A, R1, E1, B, C>(fb: Stream<R1, E1, B>, f: (a: A,
3430
3432
  Stream.repeatIOMaybe(left)
3431
3433
  .mergeEither(Stream.repeatIOMaybe(right))
3432
3434
  .mapIO((ab) =>
3433
- ab.match(
3434
- (leftChunk) =>
3435
+ ab.match({
3436
+ Left: (leftChunk) =>
3435
3437
  latest.modify(([_, rightLatest]) =>
3436
3438
  tuple(
3437
3439
  leftChunk.map((a) => f(a, rightLatest)),
3438
3440
  tuple(leftChunk.unsafeGet(leftChunk.length - 1), rightLatest),
3439
3441
  ),
3440
3442
  ),
3441
- (rightChunk) =>
3443
+ Right: (rightChunk) =>
3442
3444
  latest.modify(([leftLatest, _]) =>
3443
3445
  tuple(
3444
3446
  rightChunk.map((b) => f(leftLatest, b)),
3445
3447
  tuple(leftLatest, rightChunk.unsafeGet(rightChunk.length - 1)),
3446
3448
  ),
3447
3449
  ),
3448
- ),
3450
+ }),
3449
3451
  )
3450
3452
  .flatMap(Stream.fromChunkNow),
3451
3453
  ),
@@ -82,6 +82,7 @@ export function diff(oldValue: Supervisor<any>, newValue: Supervisor<any>): Supe
82
82
  }
83
83
  }
84
84
 
85
+ /** @tsplus tailRec */
85
86
  function applyLoop(supervisor: Supervisor<any>, patches: List<SupervisorPatch>): Supervisor<any> {
86
87
  if (patches.isEmpty()) {
87
88
  return supervisor;
@@ -159,8 +159,8 @@ export class Derived<EA, EB, A, B> extends TRefInternal<EA, EB, A, B> {
159
159
  (getEither, setEither, value, atomic) =>
160
160
  new Derived((f) =>
161
161
  f(
162
- (s) => getEither(s).match((e) => Either.left(eb(e)), bd),
163
- (c) => ca(c).flatMap((a) => setEither(a).match((e) => Either.left(ea(e)), Either.right)),
162
+ (s) => getEither(s).match({ Left: (e) => Either.left(eb(e)), Right: bd }),
163
+ (c) => ca(c).flatMap((a) => setEither(a).match({ Left: (e) => Either.left(ea(e)), Right: Either.right })),
164
164
  value,
165
165
  atomic,
166
166
  ),
@@ -178,11 +178,11 @@ export class Derived<EA, EB, A, B> extends TRefInternal<EA, EB, A, B> {
178
178
  (getEither, setEither, value, atomic) =>
179
179
  new DerivedAll((f) =>
180
180
  f(
181
- (s) => getEither(s).match((e) => Either.left(eb(e)), bd),
181
+ (s) => getEither(s).match({ Left: (e) => Either.left(eb(e)), Right: bd }),
182
182
  (c) => (s) =>
183
183
  getEither(s)
184
- .match((e) => Either.left(ec(e)), ca(c))
185
- .flatMap((a) => setEither(a).match((e) => Either.left(ea(e)), Either.right)),
184
+ .match({ Left: (e) => Either.left(ec(e)), Right: ca(c) })
185
+ .flatMap((a) => setEither(a).match({ Left: (e) => Either.left(ea(e)), Right: Either.right })),
186
186
  value,
187
187
  atomic,
188
188
  ),
@@ -192,27 +192,29 @@ export class Derived<EA, EB, A, B> extends TRefInternal<EA, EB, A, B> {
192
192
 
193
193
  get get(): STM<never, EB, B> {
194
194
  return this.use((getEither, _setEither, value, _atomic) =>
195
- value.get.flatMap((s) => getEither(s).match(STM.failNow, STM.succeedNow)),
195
+ value.get.flatMap((s) => getEither(s).match({ Left: STM.failNow, Right: STM.succeedNow })),
196
196
  );
197
197
  }
198
198
 
199
199
  set(a: A, __tsplusTrace?: string | undefined): STM<never, EA, void> {
200
- return this.use((_getEither, setEither, value, _atomic) => setEither(a).match(STM.failNow, (s) => value.set(s)));
200
+ return this.use((_getEither, setEither, value, _atomic) =>
201
+ setEither(a).match({ Left: STM.failNow, Right: (s) => value.set(s) }),
202
+ );
201
203
  }
202
204
 
203
205
  modify<C>(f: (b: B) => readonly [C, A], __tsplusTrace?: string | undefined): STM<never, EA | EB, C> {
204
206
  return this.use((getEither, setEither, value, _atomic) =>
205
207
  value.modify((s) =>
206
- getEither(s).match(
207
- (e) => [Either.left<EA | EB, C>(e), s],
208
- (a1) => {
208
+ getEither(s).match({
209
+ Left: (e) => [Either.left<EA | EB, C>(e), s],
210
+ Right: (a1) => {
209
211
  const [b, a2] = f(a1);
210
- return setEither(a2).match(
211
- (e) => [Either.left(e), s],
212
- (s) => [Either.right(b), s],
213
- );
212
+ return setEither(a2).match({
213
+ Left: (e) => [Either.left(e), s],
214
+ Right: (s) => [Either.right(b), s],
215
+ });
214
216
  },
215
- ),
217
+ }),
216
218
  ),
217
219
  ).absolve;
218
220
  }
@@ -253,8 +255,9 @@ export class DerivedAll<EA, EB, A, B> extends TRefInternal<EA, EB, A, B> {
253
255
  (getEither, setEither, value, atomic) =>
254
256
  new DerivedAll((f) =>
255
257
  f(
256
- (s) => getEither(s).match((e) => Either.left(eb(e)), bd),
257
- (c) => (s) => ca(c).flatMap((a) => setEither(a)(s).match((e) => Either.left(ea(e)), Either.right)),
258
+ (s) => getEither(s).match({ Left: (e) => Either.left(eb(e)), Right: bd }),
259
+ (c) => (s) =>
260
+ ca(c).flatMap((a) => setEither(a)(s).match({ Left: (e) => Either.left(ea(e)), Right: Either.right })),
258
261
  value,
259
262
  atomic,
260
263
  ),
@@ -272,11 +275,11 @@ export class DerivedAll<EA, EB, A, B> extends TRefInternal<EA, EB, A, B> {
272
275
  (getEither, setEither, value, atomic) =>
273
276
  new DerivedAll((f) =>
274
277
  f(
275
- (s) => getEither(s).match((e) => Either.left(eb(e)), bd),
278
+ (s) => getEither(s).match({ Left: (e) => Either.left(eb(e)), Right: bd }),
276
279
  (c) => (s) =>
277
280
  getEither(s)
278
- .match((e) => Either.left(ec(e)), ca(c))
279
- .flatMap((a) => setEither(a)(s).match((e) => Either.left(ea(e)), Either.right)),
281
+ .match({ Left: (e) => Either.left(ec(e)), Right: ca(c) })
282
+ .flatMap((a) => setEither(a)(s).match({ Left: (e) => Either.left(ea(e)), Right: Either.right })),
280
283
  value,
281
284
  atomic,
282
285
  ),
@@ -286,17 +289,17 @@ export class DerivedAll<EA, EB, A, B> extends TRefInternal<EA, EB, A, B> {
286
289
 
287
290
  get get(): STM<never, EB, B> {
288
291
  return this.use((getEither, _setEither, value, _atomic) =>
289
- value.get.flatMap((s) => getEither(s).match(STM.failNow, STM.succeedNow)),
292
+ value.get.flatMap((s) => getEither(s).match({ Left: STM.failNow, Right: STM.succeedNow })),
290
293
  );
291
294
  }
292
295
 
293
296
  set(a: A, __tsplusTrace?: string | undefined): STM<never, EA, void> {
294
297
  return this.use((_getEither, setEither, value, _atomic) =>
295
298
  value.modify((s) =>
296
- setEither(a)(s).match(
297
- (e) => [Either.left(e), s] as [Either<EA, void>, typeof s],
298
- (s) => [Either.right(undefined), s],
299
- ),
299
+ setEither(a)(s).match({
300
+ Left: (e) => [Either.left(e), s] as [Either<EA, void>, typeof s],
301
+ Right: (s) => [Either.right(undefined), s],
302
+ }),
300
303
  ),
301
304
  ).absolve;
302
305
  }
@@ -304,16 +307,16 @@ export class DerivedAll<EA, EB, A, B> extends TRefInternal<EA, EB, A, B> {
304
307
  modify<C>(f: (b: B) => readonly [C, A], __tsplusTrace?: string | undefined): STM<never, EA | EB, C> {
305
308
  return this.use((getEither, setEither, value, atomic) =>
306
309
  value.modify((s) =>
307
- getEither(s).match(
308
- (e) => [Either.left<EA | EB, C>(e), s],
309
- (a1) => {
310
+ getEither(s).match({
311
+ Left: (e) => [Either.left<EA | EB, C>(e), s],
312
+ Right: (a1) => {
310
313
  const [b, a2] = f(a1);
311
- return setEither(a2)(s).match(
312
- (e) => [Either.left(e), s],
313
- (s) => [Either.right(b), s],
314
- );
314
+ return setEither(a2)(s).match({
315
+ Left: (e) => [Either.left(e), s],
316
+ Right: (s) => [Either.right(b), s],
317
+ });
315
318
  },
316
- ),
319
+ }),
317
320
  ),
318
321
  ).absolve;
319
322
  }
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@fncts/io",
3
- "version": "0.0.38",
3
+ "version": "0.0.39",
4
4
  "dependencies": {
5
- "@fncts/base": "0.0.31",
5
+ "@fncts/base": "0.0.32",
6
6
  "@fncts/transformers": "0.0.6",
7
7
  "@fncts/typelevel": "0.0.15"
8
8
  },