| 1 | // @ts-check |
| 2 | import { defineConfig } from "astro/config"; |
| 3 | |
| 4 | // On-demand SSR by default; individual pages opt into prerendering |
| 5 | // (`about.astro`). Loaded natively by the integration — the config file is |
| 6 | // authoritative (the toolchain injects its adapter without overriding |
| 7 | // `output`; before the user-config principle landed the integration pinned |
| 8 | // `output: "server"` itself, which is why this file didn't exist). |
| 9 | // |
| 10 | // The extra settings are user-observable and asserted by the live test: |
| 11 | // - `redirects` — the adapter emits `/old-about /about/ 301` into |
| 12 | // `_redirects`; alchemy's asset upload must honor it so the asset layer |
| 13 | // answers with a real 3xx. |
| 14 | // - `security.checkOrigin: false` — the test POSTs the feedback form via a |
| 15 | // direct fetch (no Origin header); Astro's default CSRF check would 403. |
| 16 | // - `build.inlineStylesheets: "never"` — forces the stylesheet imported by |
| 17 | // `about.astro` to emit as a hashed `/_astro/*.css` asset so the test can |
| 18 | // pin the `_headers`-driven immutable Cache-Control on hashed assets. |
| 19 | export default defineConfig({ |
| 20 | output: "server", |
| 21 | redirects: { "/old-about": "/about/" }, |
| 22 | security: { checkOrigin: false }, |
| 23 | build: { inlineStylesheets: "never" }, |
| 24 | }); |