1/**
2 * The Cloudflare provider group served by the dev sidecar (see
3 * `Local/Sidecar.ts`): the workerd-backed local providers, built per
4 * session the first time a stack asks for one of their types.
5 */
6import * as Layer from "effect/Layer";
7import { DockerLive } from "../Docker/Docker.ts";
8import type * as RpcServer from "../Local/RpcServer.ts";
9import { CloudflareAuth } from "./Auth/AuthProvider.ts";
10import * as CloudflareEnvironment from "./CloudflareEnvironment.ts";
11import { LocalContainerProvider } from "./Containers/LocalContainerProvider.ts";
12import * as Credentials from "./Credentials.ts";
13import { ProviderLocal as D1ProviderLocal } from "./D1/Database.ts";
14import { localRuntimeServices } from "./LocalRuntime.ts";
15import { ProviderLocal } from "./Queues/Queue.ts";
16import { ConsumerProviderLocal } from "./Queues/Consumer.ts";
17import { SecretProviderLocal } from "./SecretsStore/Secret.ts";
18import { LocalWorkerProvider } from "./Workers/LocalWorkerProvider.ts";
19
20const cloudflareServices = Layer.provide(
21 Layer.merge(
22 Credentials.fromAuthProvider(),
23 CloudflareEnvironment.fromProfile(),
24 ),
25 CloudflareAuth,
26);
27
28export default Layer.mergeAll(
29 LocalWorkerProvider(),
30 LocalContainerProvider(),
31 ProviderLocal(),
32 ConsumerProviderLocal(),
33 D1ProviderLocal(),
34 SecretProviderLocal(),
35).pipe(
36 Layer.provide(localRuntimeServices()),
37 Layer.provide(cloudflareServices),
38 Layer.provide(DockerLive),
39) satisfies RpcServer.ProviderLayer;