History

Refactor open service onto Effect-backed process spawning

- Add external opener support alongside browser/editor launches - Remove the `open` dependency and cover platform behavior in tests

Julius Marminge committed 7 months ago

Commit 2ade0371 parent 48fc85e7 files · +1125 −428Browse files

Showing the changes to apps/server/src/wsServer.ts (1 of 7 files). Show all

Unified · Split

apps/server/src/wsServer.ts+6−3
@@ -58,7 +58,7 @@ import { ProviderService } from "./provider/Services/ProviderService"; · 57 unmodified lines
5858 import { ProviderRegistry } from "./provider/Services/ProviderRegistry";
5959 import { CheckpointDiffQuery } from "./checkpointing/Services/CheckpointDiffQuery";
6060 import { clamp } from "effect/Number";
61−import { Open, resolveAvailableEditors } from "./open";
61+import { Open } from "./open";
6262 import { ServerConfig } from "./config";
6363 import { GitCore } from "./git/Services/GitCore.ts";
6464 import { tryHandleProjectFaviconRequest } from "./projectFaviconRoute";
@@ -250,7 +250,10 @@ export const createServer = Effect.fn(function* (): Effect.fn.Return< · 185 unmodified lines
250250 logWebSocketEvents,
251251 autoBootstrapProjectFromCwd,
252252 } = serverConfig;
253− const availableEditors = resolveAvailableEditors();
253+ const open = yield* Open;
254+ const availableEditors = yield* open.getAvailableEditors.pipe(
255+ Effect.mapError((cause) => new ServerLifecycleError({ operation: "availableEditors", cause })),
256+ );
254257
255258 const runtimeServices = yield* Effect.services<
256259 ServerRuntimeServices | ServerConfig | FileSystem.FileSystem | Path.Path
@@ -615,7 +618,7 @@ export const createServer = Effect.fn(function* (): Effect.fn.Return< · 358 unmodified lines
615618 const projectionReadModelQuery = yield* ProjectionSnapshotQuery;
616619 const checkpointDiffQuery = yield* CheckpointDiffQuery;
617620 const orchestrationReactor = yield* OrchestrationReactor;
618− const { openInEditor } = yield* Open;
621+ const { openInEditor } = open;
619622
620623 const subscriptionsScope = yield* Scope.make("sequential");
621624 yield* Effect.addFinalizer(() => Scope.close(subscriptionsScope, Exit.void));