| 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 | */ |
| 6 | import * as Layer from "effect/Layer"; |
| 7 | import { DockerLive } from "../Docker/Docker.ts"; |
| 8 | import type * as RpcServer from "../Local/RpcServer.ts"; |
| 9 | import { CloudflareAuth } from "./Auth/AuthProvider.ts"; |
| 10 | import * as CloudflareEnvironment from "./CloudflareEnvironment.ts"; |
| 11 | import { LocalContainerProvider } from "./Containers/LocalContainerProvider.ts"; |
| 12 | import * as Credentials from "./Credentials.ts"; |
| 13 | import { ProviderLocal as D1ProviderLocal } from "./D1/Database.ts"; |
| 14 | import { localRuntimeServices } from "./LocalRuntime.ts"; |
| 15 | import { ProviderLocal } from "./Queues/Queue.ts"; |
| 16 | import { ConsumerProviderLocal } from "./Queues/Consumer.ts"; |
| 17 | import { SecretProviderLocal } from "./SecretsStore/Secret.ts"; |
| 18 | import { LocalWorkerProvider } from "./Workers/LocalWorkerProvider.ts"; |
| 19 | |
| 20 | const cloudflareServices = Layer.provide( |
| 21 | Layer.merge( |
| 22 | Credentials.fromAuthProvider(), |
| 23 | CloudflareEnvironment.fromProfile(), |
| 24 | ), |
| 25 | CloudflareAuth, |
| 26 | ); |
| 27 | |
| 28 | export 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; |