at://Press
1import { defineMiddleware } from "astro:middleware";
2import { migratePdsDraftsToSqlite } from "./lib/drafts";
3import { PDS_URL } from "./lib/constants";
4
5let migrated = false;
6
7export const onRequest = defineMiddleware(async (_context, next) => {
8 if (!migrated) {
9 migrated = true;
10 try {
11 await migratePdsDraftsToSqlite();
12 } catch (err) {
13 console.error("[migration] Failed:", err);
14 }
15 }
16
17 const response = await next();
18 response.headers.set(
19 "Content-Security-Policy",
20 `default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' ${PDS_URL}; connect-src 'self'; frame-ancestors 'none'`
21 );
22 response.headers.set("X-Content-Type-Options", "nosniff");
23 response.headers.set("X-Frame-Options", "DENY");
24 response.headers.set("Referrer-Policy", "strict-origin-when-cross-origin");
25 return response;
26});