import { Effect, Layer } from "effect"; import { ProviderSessionRuntimeRepositoryLive } from "../persistence/Layers/ProviderSessionRuntime.ts";import { ProviderUnsupportedError } from "../provider/Errors.ts";import { makeProviderServiceLive } from "../provider/Layers/ProviderService.ts";import { ProviderSessionDirectoryLive } from "../provider/Layers/ProviderSessionDirectory.ts";import { ProviderAdapterRegistry } from "../provider/Services/ProviderAdapterRegistry.ts";import { makePerfProviderAdapter } from "./PerfProviderAdapter.ts"; export const PerfProviderLayerLive = Layer.unwrap( Effect.gen(function* () { const providerSessionDirectoryLayer = ProviderSessionDirectoryLive.pipe( Layer.provide(ProviderSessionRuntimeRepositoryLive), ); const adapter = yield* makePerfProviderAdapter; const adapterRegistryLayer = Layer.succeed(ProviderAdapterRegistry, { getByProvider: (provider) => provider === adapter.provider ? Effect.succeed(adapter) : Effect.fail(new ProviderUnsupportedError({ provider })), listProviders: () => Effect.succeed([adapter.provider]), } as typeof ProviderAdapterRegistry.Service); return makeProviderServiceLive().pipe( Layer.provide(adapterRegistryLayer), Layer.provide(providerSessionDirectoryLayer), ); }),);
import { Effect, Layer } from "effect";
import { ProviderSessionRuntimeRepositoryLive } from "../persistence/Layers/ProviderSessionRuntime.ts";
import { ProviderUnsupportedError } from "../provider/Errors.ts";
import { makeProviderServiceLive } from "../provider/Layers/ProviderService.ts";
import { ProviderSessionDirectoryLive } from "../provider/Layers/ProviderSessionDirectory.ts";
import { ProviderAdapterRegistry } from "../provider/Services/ProviderAdapterRegistry.ts";
import { makePerfProviderAdapter } from "./PerfProviderAdapter.ts";
export const PerfProviderLayerLive = Layer.unwrap(
Effect.gen(function* () {
const providerSessionDirectoryLayer = ProviderSessionDirectoryLive.pipe(
Layer.provide(ProviderSessionRuntimeRepositoryLive),
);
const adapter = yield* makePerfProviderAdapter;
const adapterRegistryLayer = Layer.succeed(ProviderAdapterRegistry, {
getByProvider: (provider) =>
provider === adapter.provider
? Effect.succeed(adapter)
: Effect.fail(new ProviderUnsupportedError({ provider })),
listProviders: () => Effect.succeed([adapter.provider]),
} as typeof ProviderAdapterRegistry.Service);
return makeProviderServiceLive().pipe(
Layer.provide(adapterRegistryLayer),
Layer.provide(providerSessionDirectoryLayer),
);
}),
);