t3-code-android-nightly/.repos/alchemy-effect/website/alchemy.run.ts
Julius Marminge e3c85ead63
chore(refs): sync Effect and Alchemy references to rc.115 and beta.78 (#12327)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-17 23:21:25 -07:00

119 lines
3.4 KiB
TypeScript

import * as Alchemy from "alchemy";
import * as Cloudflare from "alchemy/Cloudflare";
import * as GitHub from "alchemy/GitHub";
import * as Output from "alchemy/Output";
import * as RemovalPolicy from "alchemy/RemovalPolicy";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
export type WorkerEnv = Cloudflare.InferEnv<typeof Website>;
const Website = Cloudflare.Website.StaticSite(
"Website",
Effect.gen(function* () {
const stack = yield* Alchemy.Stack;
const previewParent = stack.stage.startsWith("pr-")
? yield* Cloudflare.Worker.ref("Website", { stage: "preview-base" })
: undefined;
const name =
stack.stage === "preview-base"
? "alchemy-website-preview"
: stack.stage === "main"
? "alchemy-website-main"
: stack.stage === "prod"
? "alchemy-website-prod"
: undefined;
return {
name,
command: "bun run build",
main: "./src/worker.ts",
outdir: "dist",
preview: previewParent
? {
of: previewParent,
name: stack.stage,
message: process.env.PULL_REQUEST
? `PR #${process.env.PULL_REQUEST}`
: undefined,
}
: undefined,
workersDev: stack.stage === "prod" ? false : undefined,
domain:
stack.stage === "prod"
? {
name: "alchemy.run",
redirects: ["v2.alchemy.run"],
previews: true,
}
: stack.stage === "main"
? { name: "main.alchemy.run" }
: undefined,
memo: {
include: [
"src/**",
"astro.config.mjs",
"package.json",
"plugins/**",
"public/**",
"scripts/**",
"../bun.lock",
],
},
compatibility: {
date: "2026-04-02",
flags: ["nodejs_compat"],
},
assets: {
runWorkerFirst: true,
},
} satisfies Cloudflare.Website.StaticSiteProps<{}>;
}),
).pipe(
RemovalPolicy.retain(
Alchemy.Stack.pipe(Effect.map(({ stage }) => !stage.startsWith("pr-"))),
),
);
export default Alchemy.Stack(
"AlchemyEffectWebsite",
{
providers: Layer.mergeAll(Cloudflare.providers(), GitHub.providers()),
state: Cloudflare.state(),
},
Effect.gen(function* () {
const { stage } = yield* Alchemy.Stack;
const website = yield* Website;
if (stage.startsWith("pr-")) {
yield* GitHub.Comment("preview-comment", {
owner: "alchemy-run",
repository: "alchemy",
issueNumber: Number(process.env.PULL_REQUEST),
body: Output.interpolate`
## Website Preview Deployed
**URL:** ${website.url}
Built from commit ${
// `BUILD_SHA` is set by .github/workflows/deploy.yml to the
// PR head SHA (or `github.sha` for push deploys). The
// ambient `GITHUB_SHA` would point at the synthetic merge
// commit on `pull_request` events, which is not what
// anyone wants to see in the comment.
process.env.BUILD_SHA
? `[\`${process.env.BUILD_SHA.slice(0, 7)}\`](https://github.com/alchemy-run/alchemy/commit/${process.env.BUILD_SHA})`
: "unknown"
}.
---
_This comment updates automatically with each push._
`,
});
}
return {
url: website.url,
};
}),
);