import type { NextConfig } from 'next'; const securityHeaders = [ { key: 'X-Frame-Options', value: 'DENY', }, { key: 'X-Content-Type-Options', value: 'nosniff', }, { key: 'X-XSS-Protection', value: '1; mode=block', }, { key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin', }, { key: 'Permissions-Policy', value: 'camera=(), microphone=(), geolocation=()', }, { key: 'Strict-Transport-Security', value: 'max-age=31536000; includeSubDomains', }, { key: 'Content-Security-Policy', value: [ "default-src 'self'", "script-src 'self' 'unsafe-eval' 'unsafe-inline'", "style-src 'self' 'unsafe-inline'", "img-src 'self' data: blob:", "font-src 'self' data:", "connect-src 'self' https://*.documents.azure.com", "frame-ancestors 'none'", "base-uri 'self'", "form-action 'self'", ].join('; '), }, ]; const nextConfig: NextConfig = { ...(process.env.VERCEL ? {} : { output: 'standalone' }), serverExternalPackages: ['@bytelyst/config'], webpack: (config, { isServer }) => { if (!isServer) { // Prevent Node.js modules from being bundled in client code config.resolve = config.resolve ?? {}; config.resolve.fallback = { ...config.resolve.fallback, fs: false, path: false, 'fs/promises': false, crypto: false, }; } return config; }, async headers() { return [ { source: '/(.*)', headers: securityHeaders, }, ]; }, }; export default nextConfig;