36 lines · 1.5 KB · TypeScript
RawDownload
import { Deferred, Effect } from "effect"; export interface ServerReadiness {  readonly awaitServerReady: Effect.Effect<void>;  readonly markHttpListening: Effect.Effect<void>;  readonly markPushBusReady: Effect.Effect<void>;  readonly markKeybindingsReady: Effect.Effect<void>;  readonly markTerminalSubscriptionsReady: Effect.Effect<void>;  readonly markOrchestrationSubscriptionsReady: Effect.Effect<void>;} export const makeServerReadiness = Effect.gen(function* () {  const httpListening = yield* Deferred.make<void>();  const pushBusReady = yield* Deferred.make<void>();  const keybindingsReady = yield* Deferred.make<void>();  const terminalSubscriptionsReady = yield* Deferred.make<void>();  const orchestrationSubscriptionsReady = yield* Deferred.make<void>();   const complete = (deferred: Deferred.Deferred<void>) =>    Deferred.succeed(deferred, undefined).pipe(Effect.orDie);   return {    awaitServerReady: Effect.all([      Deferred.await(httpListening),      Deferred.await(pushBusReady),      Deferred.await(keybindingsReady),      Deferred.await(terminalSubscriptionsReady),      Deferred.await(orchestrationSubscriptionsReady),    ]).pipe(Effect.asVoid),    markHttpListening: complete(httpListening),    markPushBusReady: complete(pushBusReady),    markKeybindingsReady: complete(keybindingsReady),    markTerminalSubscriptionsReady: complete(terminalSubscriptionsReady),    markOrchestrationSubscriptionsReady: complete(orchestrationSubscriptionsReady),  } satisfies ServerReadiness;});

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t