@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.
Files changed (173) 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/IO/api/all.d.ts +14 -15
  5. package/IO/definition.d.ts +17 -15
  6. package/_cjs/Channel/api/mapOutConcurrentIO.cjs +8 -2
  7. package/_cjs/Channel/api/mapOutConcurrentIO.cjs.map +1 -1
  8. package/_cjs/Channel/api/mergeAllWith.cjs +23 -14
  9. package/_cjs/Channel/api/mergeAllWith.cjs.map +1 -1
  10. package/_cjs/Channel/api/mergeWith.cjs +16 -4
  11. package/_cjs/Channel/api/mergeWith.cjs.map +1 -1
  12. package/_cjs/Channel/api.cjs +131 -36
  13. package/_cjs/Channel/api.cjs.map +1 -1
  14. package/_cjs/Channel/core-api.cjs +13 -3
  15. package/_cjs/Channel/core-api.cjs.map +1 -1
  16. package/_cjs/Channel/definition.cjs +18 -143
  17. package/_cjs/Channel/definition.cjs.map +1 -1
  18. package/_cjs/Channel/internal/ChannelExecutor.cjs +51 -49
  19. package/_cjs/Channel/internal/ChannelExecutor.cjs.map +1 -1
  20. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs +8 -2
  21. package/_cjs/Channel/internal/SingleProducerAsyncInput.cjs.map +1 -1
  22. package/_cjs/Console/live.cjs +1 -1
  23. package/_cjs/Console/live.cjs.map +1 -1
  24. package/_cjs/Fiber/FiberRuntime.cjs +23 -18
  25. package/_cjs/Fiber/FiberRuntime.cjs.map +1 -1
  26. package/_cjs/FiberRef/definition.cjs +3 -1
  27. package/_cjs/FiberRef/definition.cjs.map +1 -1
  28. package/_cjs/FiberRef/unsafe.cjs +6 -1
  29. package/_cjs/FiberRef/unsafe.cjs.map +1 -1
  30. package/_cjs/Future/api.cjs +12 -12
  31. package/_cjs/Future/api.cjs.map +1 -1
  32. package/_cjs/Future/definition.cjs +10 -3
  33. package/_cjs/Future/definition.cjs.map +1 -1
  34. package/_cjs/IO/api/all.cjs +4 -4
  35. package/_cjs/IO/api/all.cjs.map +1 -1
  36. package/_cjs/IO/api/asyncInterrupt.cjs +7 -4
  37. package/_cjs/IO/api/asyncInterrupt.cjs.map +1 -1
  38. package/_cjs/IO/api.cjs +38 -14
  39. package/_cjs/IO/api.cjs.map +1 -1
  40. package/_cjs/IO/definition.cjs.map +1 -1
  41. package/_cjs/IO/runtime.cjs +6 -3
  42. package/_cjs/IO/runtime.cjs.map +1 -1
  43. package/_cjs/Layer/api.cjs +4 -1
  44. package/_cjs/Layer/api.cjs.map +1 -1
  45. package/_cjs/Push/api.cjs +4 -1
  46. package/_cjs/Push/api.cjs.map +1 -1
  47. package/_cjs/Ref/Derived.cjs +35 -8
  48. package/_cjs/Ref/Derived.cjs.map +1 -1
  49. package/_cjs/Ref/DerivedAll.cjs +35 -8
  50. package/_cjs/Ref/DerivedAll.cjs.map +1 -1
  51. package/_cjs/RuntimeFlags/RuntimeFlags.cjs +3 -4
  52. package/_cjs/RuntimeFlags/RuntimeFlags.cjs.map +1 -1
  53. package/_cjs/STM/api/core-api.cjs +4 -1
  54. package/_cjs/STM/api/core-api.cjs.map +1 -1
  55. package/_cjs/STM/api.cjs +16 -4
  56. package/_cjs/STM/api.cjs.map +1 -1
  57. package/_cjs/Schedule/api.cjs +7 -1
  58. package/_cjs/Schedule/api.cjs.map +1 -1
  59. package/_cjs/ScopedRef/api.cjs +2 -2
  60. package/_cjs/ScopedRef/api.cjs.map +1 -1
  61. package/_cjs/Sink/api.cjs +7 -1
  62. package/_cjs/Sink/api.cjs.map +1 -1
  63. package/_cjs/Stream/api/zipAllWith.cjs +4 -1
  64. package/_cjs/Stream/api/zipAllWith.cjs.map +1 -1
  65. package/_cjs/Stream/api/zipWithChunks.cjs +4 -1
  66. package/_cjs/Stream/api/zipWithChunks.cjs.map +1 -1
  67. package/_cjs/Stream/api.cjs +36 -15
  68. package/_cjs/Stream/api.cjs.map +1 -1
  69. package/_cjs/SupervisorPatch.cjs +38 -15
  70. package/_cjs/SupervisorPatch.cjs.map +1 -1
  71. package/_cjs/TRef/definition.cjs +74 -20
  72. package/_cjs/TRef/definition.cjs.map +1 -1
  73. package/_mjs/Channel/api/mapOutConcurrentIO.mjs +8 -2
  74. package/_mjs/Channel/api/mapOutConcurrentIO.mjs.map +1 -1
  75. package/_mjs/Channel/api/mergeAllWith.mjs +23 -14
  76. package/_mjs/Channel/api/mergeAllWith.mjs.map +1 -1
  77. package/_mjs/Channel/api/mergeWith.mjs +16 -4
  78. package/_mjs/Channel/api/mergeWith.mjs.map +1 -1
  79. package/_mjs/Channel/api.mjs +132 -37
  80. package/_mjs/Channel/api.mjs.map +1 -1
  81. package/_mjs/Channel/core-api.mjs +14 -4
  82. package/_mjs/Channel/core-api.mjs.map +1 -1
  83. package/_mjs/Channel/definition.mjs +14 -135
  84. package/_mjs/Channel/definition.mjs.map +1 -1
  85. package/_mjs/Channel/internal/ChannelExecutor.mjs +52 -50
  86. package/_mjs/Channel/internal/ChannelExecutor.mjs.map +1 -1
  87. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs +8 -2
  88. package/_mjs/Channel/internal/SingleProducerAsyncInput.mjs.map +1 -1
  89. package/_mjs/Console/live.mjs +1 -1
  90. package/_mjs/Console/live.mjs.map +1 -1
  91. package/_mjs/Fiber/FiberRuntime.mjs +23 -18
  92. package/_mjs/Fiber/FiberRuntime.mjs.map +1 -1
  93. package/_mjs/FiberRef/definition.mjs +3 -1
  94. package/_mjs/FiberRef/definition.mjs.map +1 -1
  95. package/_mjs/FiberRef/unsafe.mjs +4 -0
  96. package/_mjs/FiberRef/unsafe.mjs.map +1 -1
  97. package/_mjs/Future/api.mjs +12 -12
  98. package/_mjs/Future/api.mjs.map +1 -1
  99. package/_mjs/Future/definition.mjs +7 -2
  100. package/_mjs/Future/definition.mjs.map +1 -1
  101. package/_mjs/IO/api/all.mjs +4 -4
  102. package/_mjs/IO/api/all.mjs.map +1 -1
  103. package/_mjs/IO/api/asyncInterrupt.mjs +7 -4
  104. package/_mjs/IO/api/asyncInterrupt.mjs.map +1 -1
  105. package/_mjs/IO/api.mjs +38 -14
  106. package/_mjs/IO/api.mjs.map +1 -1
  107. package/_mjs/IO/definition.mjs.map +1 -1
  108. package/_mjs/IO/runtime.mjs +6 -3
  109. package/_mjs/IO/runtime.mjs.map +1 -1
  110. package/_mjs/Layer/api.mjs +4 -1
  111. package/_mjs/Layer/api.mjs.map +1 -1
  112. package/_mjs/Push/api.mjs +4 -1
  113. package/_mjs/Push/api.mjs.map +1 -1
  114. package/_mjs/Ref/Derived.mjs +35 -8
  115. package/_mjs/Ref/Derived.mjs.map +1 -1
  116. package/_mjs/Ref/DerivedAll.mjs +35 -8
  117. package/_mjs/Ref/DerivedAll.mjs.map +1 -1
  118. package/_mjs/RuntimeFlags/RuntimeFlags.mjs +3 -4
  119. package/_mjs/RuntimeFlags/RuntimeFlags.mjs.map +1 -1
  120. package/_mjs/STM/api/core-api.mjs +4 -1
  121. package/_mjs/STM/api/core-api.mjs.map +1 -1
  122. package/_mjs/STM/api.mjs +16 -4
  123. package/_mjs/STM/api.mjs.map +1 -1
  124. package/_mjs/Schedule/api.mjs +7 -1
  125. package/_mjs/Schedule/api.mjs.map +1 -1
  126. package/_mjs/ScopedRef/api.mjs +2 -2
  127. package/_mjs/ScopedRef/api.mjs.map +1 -1
  128. package/_mjs/Sink/api.mjs +7 -1
  129. package/_mjs/Sink/api.mjs.map +1 -1
  130. package/_mjs/Stream/api/zipAllWith.mjs +4 -1
  131. package/_mjs/Stream/api/zipAllWith.mjs.map +1 -1
  132. package/_mjs/Stream/api/zipWithChunks.mjs +4 -1
  133. package/_mjs/Stream/api/zipWithChunks.mjs.map +1 -1
  134. package/_mjs/Stream/api.mjs +36 -15
  135. package/_mjs/Stream/api.mjs.map +1 -1
  136. package/_mjs/SupervisorPatch.mjs +38 -15
  137. package/_mjs/SupervisorPatch.mjs.map +1 -1
  138. package/_mjs/TRef/definition.mjs +74 -20
  139. package/_mjs/TRef/definition.mjs.map +1 -1
  140. package/_src/Channel/api/mapOutConcurrentIO.ts +5 -5
  141. package/_src/Channel/api/mergeAllWith.ts +9 -9
  142. package/_src/Channel/api/mergeWith.ts +16 -16
  143. package/_src/Channel/api.ts +128 -143
  144. package/_src/Channel/core-api.ts +17 -14
  145. package/_src/Channel/definition.ts +187 -236
  146. package/_src/Channel/internal/ChannelExecutor.ts +47 -45
  147. package/_src/Channel/internal/SingleProducerAsyncInput.ts +2 -2
  148. package/_src/Console/live.ts +1 -1
  149. package/_src/Fiber/FiberRuntime.ts +6 -3
  150. package/_src/FiberRef/definition.ts +4 -1
  151. package/_src/FiberRef/unsafe.ts +5 -0
  152. package/_src/Future/definition.ts +19 -3
  153. package/_src/IO/api/all.ts +14 -15
  154. package/_src/IO/api/asyncInterrupt.ts +4 -4
  155. package/_src/IO/api.ts +19 -15
  156. package/_src/IO/definition.ts +5 -3
  157. package/_src/IO/runtime.ts +6 -3
  158. package/_src/Layer/api.ts +4 -1
  159. package/_src/Push/api.ts +4 -4
  160. package/_src/Ref/Derived.ts +20 -18
  161. package/_src/Ref/DerivedAll.ts +21 -18
  162. package/_src/RuntimeFlags/RuntimeFlags.ts +1 -1
  163. package/_src/STM/api/core-api.ts +1 -1
  164. package/_src/STM/api.ts +4 -4
  165. package/_src/Schedule/api.ts +8 -8
  166. package/_src/ScopedRef/api.ts +4 -3
  167. package/_src/Sink/api.ts +8 -8
  168. package/_src/Stream/api/zipAllWith.ts +4 -4
  169. package/_src/Stream/api/zipWithChunks.ts +4 -4
  170. package/_src/Stream/api.ts +21 -19
  171. package/_src/SupervisorPatch.ts +1 -0
  172. package/_src/TRef/definition.ts +36 -33
  173. package/package.json +2 -2
@@ -35,8 +35,8 @@ export class Derived<EA, EB, A, B> extends RefInternal<never, never, EA, EB, A,
35
35
  new Derived<EC, ED, C, D>((f) =>
36
36
  f(
37
37
  value,
38
- (s) => getEither(s).match((e) => Either.left(eb(e)), bd),
39
- (c) => ca(c).flatMap((a) => setEither(a).match((e) => Either.left(ea(e)), Either.right)),
38
+ (s) => getEither(s).match({ Left: (e) => Either.left(eb(e)), Right: bd }),
39
+ (c) => ca(c).flatMap((a) => setEither(a).match({ Left: (e) => Either.left(ea(e)), Right: Either.right })),
40
40
  ),
41
41
  ),
42
42
  );
@@ -54,41 +54,43 @@ export class Derived<EA, EB, A, B> extends RefInternal<never, never, EA, EB, A,
54
54
  new DerivedAll<EC, ED, C, D>((f) =>
55
55
  f(
56
56
  value,
57
- (s) => getEither(s).match((e) => Either.left(eb(e)), bd),
57
+ (s) => getEither(s).match({ Left: (e) => Either.left(eb(e)), Right: bd }),
58
58
  (c) => (s) =>
59
59
  getEither(s)
60
- .match(
61
- (eb) => Either.left(ec(eb)),
62
- (b) => ca(c)(b),
63
- )
64
- .flatMap((a) => setEither(a).match((e) => Either.left(ea(e)), Either.right)),
60
+ .match({
61
+ Left: (eb) => Either.left(ec(eb)),
62
+ Right: (b) => ca(c)(b),
63
+ })
64
+ .flatMap((a) => setEither(a).match({ Left: (e) => Either.left(ea(e)), Right: Either.right })),
65
65
  ),
66
66
  ),
67
67
  );
68
68
  }
69
69
 
70
70
  get get(): FIO<EB, B> {
71
- return this.use((value, getEither) => value.get.flatMap((s) => getEither(s).match(IO.failNow, IO.succeedNow)));
71
+ return this.use((value, getEither) =>
72
+ value.get.flatMap((s) => getEither(s).match({ Left: IO.failNow, Right: IO.succeedNow })),
73
+ );
72
74
  }
73
75
 
74
76
  set(a: A): FIO<EA, void> {
75
- return this.use((value, _, setEither) => setEither(a).match(IO.failNow, (s) => value.set(s)));
77
+ return this.use((value, _, setEither) => setEither(a).match({ Left: IO.failNow, Right: (s) => value.set(s) }));
76
78
  }
77
79
 
78
80
  modify<C>(f: (b: B) => readonly [C, A], __tsplusTrace?: string | undefined): IO<never, EA | EB, C> {
79
81
  return this.use(
80
82
  (value, getEither, setEither) =>
81
83
  value.modify((s) =>
82
- getEither(s).match(
83
- (e) => tuple(Either.left(e), s),
84
- (a1) => {
84
+ getEither(s).match({
85
+ Left: (e) => tuple(Either.left(e), s),
86
+ Right: (a1) => {
85
87
  const [b, a2] = f(a1);
86
- return setEither(a2).match(
87
- (e) => tuple(Either.left(e), s),
88
- (s) => tuple(Either.right<EA | EB, C>(b), s),
89
- );
88
+ return setEither(a2).match({
89
+ Left: (e) => tuple(Either.left(e), s),
90
+ Right: (s) => tuple(Either.right<EA | EB, C>(b), s),
91
+ });
90
92
  },
91
- ),
93
+ }),
92
94
  ).absolve,
93
95
  );
94
96
  }
@@ -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.37",
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
  },