learning_ai_common_plat/dashboards/admin-web/next.config.ts
saravanakumardb1 5195f9c052 fix(platform): production readiness — admin-web client bundling, config sub-path exports, stale tests
- dashboards/admin-web: split product-constants.ts for client-safe imports
- dashboards/admin-web: serverExternalPackages + webpack fallbacks for @bytelyst/config
- dashboards/admin-web: instrumentation.ts uses @bytelyst/config/keyvault sub-path
- packages/config: add ./keyvault and ./product-identity sub-path exports
- packages/feedback-client: fix stale test expectation (TODO-1 → actual error message)
- packages/sync: fix reprocessFailed test (flush already pushes items)
2026-03-12 16:49:15 -07:00

72 lines
1.6 KiB
TypeScript

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;