MCPcopy
hub / github.com/Effect-TS/effect / Zip

Class Zip

packages/effect/src/internal/supervisor.ts:77–128  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

75
76/** @internal */
77export class Zip<out T0, out T1> implements Supervisor.Supervisor<readonly [T0, T1]> {
78 readonly _tag = "Zip"
79 readonly [SupervisorTypeId] = supervisorVariance
80
81 constructor(
82 readonly left: Supervisor.Supervisor<T0>,
83 readonly right: Supervisor.Supervisor<T1>
84 ) {
85 }
86
87 get value(): Effect.Effect<[T0, T1]> {
88 return core.zip(this.left.value, this.right.value)
89 }
90
91 onStart<A, E, R>(
92 context: Context.Context<R>,
93 effect: Effect.Effect<A, E, R>,
94 parent: Option.Option<Fiber.RuntimeFiber<any, any>>,
95 fiber: Fiber.RuntimeFiber<A, E>
96 ): void {
97 this.left.onStart(context, effect, parent, fiber)
98 this.right.onStart(context, effect, parent, fiber)
99 }
100
101 onEnd<A, E>(value: Exit.Exit<A, E>, fiber: Fiber.RuntimeFiber<A, E>): void {
102 this.left.onEnd(value, fiber)
103 this.right.onEnd(value, fiber)
104 }
105
106 onEffect<A, E>(fiber: Fiber.RuntimeFiber<A, E>, effect: Effect.Effect<any, any, any>): void {
107 this.left.onEffect(fiber, effect)
108 this.right.onEffect(fiber, effect)
109 }
110
111 onSuspend<A, E>(fiber: Fiber.RuntimeFiber<A, E>): void {
112 this.left.onSuspend(fiber)
113 this.right.onSuspend(fiber)
114 }
115
116 onResume<A, E>(fiber: Fiber.RuntimeFiber<A, E>): void {
117 this.left.onResume(fiber)
118 this.right.onResume(fiber)
119 }
120
121 map<B>(f: (a: [T0, T1]) => B): Supervisor.Supervisor<B> {
122 return new ProxySupervisor(this, pipe(this.value, core.map(f)))
123 }
124
125 zip<A>(right: Supervisor.Supervisor<A>): Supervisor.Supervisor<[[T0, T1], A]> {
126 return new Zip(this, right)
127 }
128}
129
130/** @internal */
131export const isZip = (self: unknown): self is Zip<any, any> =>

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected