disclosure-bureau/web/next.config.ts

38 lines
1.3 KiB
TypeScript

import type { NextConfig } from "next";
const nextConfig: NextConfig = {
experimental: {
serverActions: { bodySizeLimit: "10mb" },
},
outputFileTracingIncludes: {
"/api/**": [
"../wiki/**",
"../processing/**",
"../raw/*--subagent/**",
"../raw/_batch-rebuild/**",
],
"/d/**": ["../wiki/**", "../raw/*--subagent/**"],
"/admin/**": ["../raw/_batch-rebuild/**"],
},
// Built-in image optimization: Next.js fetches the source PNG from our
// /api/static route, then serves resized + cached + AVIF/WebP versions
// on demand. This keeps thumbnail-grid pages from hammering 200+ MB of PNGs.
images: {
remotePatterns: [
{ protocol: "https", hostname: "app.disclosure.top" },
{ protocol: "https", hostname: "disclosure.top" },
{ protocol: "http", hostname: "localhost" },
],
formats: ["image/avif", "image/webp"],
minimumCacheTTL: 60 * 60 * 24 * 30, // 30 days
},
async redirects() {
return [
{ source: "/d/:docId/v2", destination: "/d/:docId", permanent: true },
{ source: "/d/:docId/v2/:pageId", destination: "/d/:docId/:pageId", permanent: true },
{ source: "/d/:docId/full", destination: "/d/:docId", permanent: true },
];
},
};
export default nextConfig;