1import * as ProviderRegistry from "../ProviderRegistry.ts";
2import type { ServerProvider } from "@t3tools/contracts";
3import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";
5import * as Stream from "effect/Stream";
6import { makeManualOnlyProviderMaintenanceCapabilities } from "@t3tools/provider-core/server/maintenanceResolver";
7
8const makeProviderRegistryMock = (
9 providers: ReadonlyArray<ServerProvider> = [],
10): ProviderRegistry.ProviderRegistry["Service"] => ({
11 getProviders: Effect.succeed(providers),
12 refresh: () => Effect.succeed(providers),
13 refreshInstance: () => Effect.succeed(providers),
14 refreshWorkspaceSnapshot: () => Effect.succeed(providers),
15 getProviderMaintenanceCapabilitiesForInstance: (_instanceId, provider) =>
16 Effect.succeed(makeManualOnlyProviderMaintenanceCapabilities({ provider, packageName: null })),
17 setProviderMaintenanceActionState: () => Effect.succeed(providers),
18 streamChanges: Stream.empty,
19});
20
21export const layer = (providers: ReadonlyArray<ServerProvider> = []) =>
22 Layer.succeed(ProviderRegistry.ProviderRegistry, makeProviderRegistryMock(providers));