Files
sign/apps/marketing/next.config.js

100 lines
2.7 KiB
JavaScript
Raw Normal View History

2023-06-09 18:21:18 +10:00
/* eslint-disable @typescript-eslint/no-var-requires */
2023-11-24 16:17:54 +11:00
const fs = require('fs');
2023-06-09 18:21:18 +10:00
const path = require('path');
const { withContentlayer } = require('next-contentlayer');
const { withAxiom } = require('next-axiom');
2023-06-09 18:21:18 +10:00
2023-10-18 23:19:29 +11:00
const ENV_FILES = ['.env', '.env.local', `.env.${process.env.NODE_ENV || 'development'}`];
ENV_FILES.forEach((file) => {
require('dotenv').config({
path: path.join(__dirname, `../../${file}`),
});
2023-06-09 18:21:18 +10:00
});
2023-11-24 16:17:54 +11:00
// !: This is a temp hack to get caveat working without placing it back in the public directory.
// !: By inlining this at build time we should be able to sign faster.
const FONT_CAVEAT_BYTES = fs.readFileSync(
path.join(__dirname, '../../packages/assets/fonts/caveat.ttf'),
);
2023-06-09 18:21:18 +10:00
/** @type {import('next').NextConfig} */
const config = {
experimental: {
outputFileTracingRoot: path.join(__dirname, '../../'),
serverComponentsExternalPackages: ['@node-rs/bcrypt', '@documenso/pdf-sign', 'playwright'],
serverActions: {
2023-12-02 09:38:24 +11:00
bodySizeLimit: '50mb',
},
},
2023-06-09 18:21:18 +10:00
reactStrictMode: true,
2023-11-24 16:17:54 +11:00
transpilePackages: [
'@documenso/assets',
'@documenso/lib',
'@documenso/tailwind-config',
'@documenso/trpc',
'@documenso/ui',
],
2023-09-20 13:48:30 +10:00
env: {
NEXT_PUBLIC_PROJECT: 'marketing',
2023-11-24 16:17:54 +11:00
FONT_CAVEAT_URI: `data:font/ttf;base64,${FONT_CAVEAT_BYTES.toString('base64')}`,
2023-09-20 13:48:30 +10:00
},
modularizeImports: {
'lucide-react': {
transform: 'lucide-react/dist/esm/icons/{{ kebabCase member }}',
},
},
webpack: (config, { isServer }) => {
// fixes: Module not found: Cant resolve ../build/Release/canvas.node
if (isServer) {
config.resolve.alias.canvas = false;
}
return config;
},
2023-09-18 20:13:46 -05:00
async headers() {
return [
{
source: '/:path*',
headers: [
{
key: 'x-dns-prefetch-control',
value: 'on',
},
{
key: 'strict-transport-security',
value: 'max-age=31536000; includeSubDomains; preload',
},
{
key: 'x-frame-options',
value: 'SAMEORIGIN',
},
{
key: 'x-content-type-options',
value: 'nosniff',
},
{
key: 'referrer-policy',
value: 'strict-origin-when-cross-origin',
},
{
key: 'permissions-policy',
value:
'accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()',
},
],
},
];
},
2023-09-28 12:56:53 +10:00
async rewrites() {
return [
{
source: '/ingest/:path*',
destination: 'https://eu.posthog.com/:path*',
},
];
},
2023-06-09 18:21:18 +10:00
};
module.exports = withAxiom(withContentlayer(config));