Skip to content
Source
Sign inSign up

alchemy.run.ts

28 lines1004 Bytes

1import { adopt } from "alchemy/AdoptPolicy";
2import * as Alchemy from "alchemy";
3import * as Axiom from "@alchemy.run/axiom";
4import * as Layer from "effect/Layer";
5import { Observability } from "./src/observability.ts";
6import * as Cloudflare from "@alchemy.run/cloudflare";
7import * as Effect from "effect/Effect";
8import * as Secrets from "alchemy/Secrets";
9import { WriterSecrets } from "./src/deploymentConfig.ts";
10import * as Worker from "./src/worker.ts";
11​
12export default Alchemy.Stack(
13 "T3TaskCache",
14 {
15 providers: Axiom.providers().pipe(Layer.provideMerge(Cloudflare.providers())),
16 state: Cloudflare.state(),
17 secrets: [Secrets.DotEnv(), Secrets.ProcessEnv(), WriterSecrets],
18 },
19 Effect.gen(function* () {
20 const worker = yield* Worker.Worker;
21 const observability = yield* Observability;
22 return {
23 url: worker.url,
24 workerName: worker.workerName,
25 dashboard: observability.dashboard.uid,
26 };
27 }).pipe(Effect.provide(Worker.layer), adopt(true)),
28);