1import * as Alchemy from "alchemy";
2import * as Cloudflare from "alchemy/Cloudflare";
3import * as Effect from "effect/Effect";
4
5export default Alchemy.Stack(
6 "CloudflareWebsiteWakuExample",
7 {
8 providers: Cloudflare.providers(),
9 state: Cloudflare.state(),
10 },
11 Effect.gen(function* () {
12 const site = yield* Cloudflare.Website.Waku("WakuSite", {
13 // Only hash the files that affect the build, so unchanged sources
14 // skip the Waku build (and the deploy) entirely.
15 memo: {
16 include: ["src/**", "public/**", "package.json", "waku.config.ts"],
17 },
18 // Waku's server runtime needs AsyncLocalStorage.
19 compatibility: {
20 flags: ["nodejs_als"],
21 },
22 env: {
23 GREETING: "Hello from Waku on Cloudflare!",
24 },
25 });
26
27 return {
28 url: site.url,
29 };
30 }),
31);