2023-09-28 19:24:31 +03:00
|
|
|
/* eslint-disable max-lines */
|
2024-01-20 07:34:30 +03:00
|
|
|
const path = require("path");
|
|
|
|
|
2023-07-06 20:01:38 +03:00
|
|
|
const nextConfig = {
|
2023-12-15 16:09:57 +03:00
|
|
|
output: "standalone",
|
2024-01-20 07:34:30 +03:00
|
|
|
webpack: (config) => {
|
|
|
|
// Resolve the @ alias for Sass
|
|
|
|
config.resolve.alias["@"] = path.join(__dirname, ".");
|
|
|
|
|
|
|
|
// Important: return the modified config
|
|
|
|
return config;
|
|
|
|
},
|
|
|
|
sassOptions: {
|
|
|
|
includePaths: [path.join(__dirname, "styles")],
|
|
|
|
},
|
2023-12-15 16:09:57 +03:00
|
|
|
redirects: async () => {
|
|
|
|
return [
|
|
|
|
{
|
2024-02-07 03:05:07 +03:00
|
|
|
source: "/studio/library",
|
2023-12-15 16:09:57 +03:00
|
|
|
destination: "/library",
|
|
|
|
permanent: false,
|
|
|
|
},
|
|
|
|
];
|
|
|
|
},
|
2023-09-21 01:20:29 +03:00
|
|
|
images: {
|
2023-09-27 15:41:08 +03:00
|
|
|
domains: [
|
|
|
|
"www.quivr.app",
|
|
|
|
"quivr-cms.s3.eu-west-3.amazonaws.com",
|
|
|
|
"www.gravatar.com",
|
2023-10-18 18:36:29 +03:00
|
|
|
"media.licdn.com",
|
2023-11-23 00:14:53 +03:00
|
|
|
"*",
|
2023-09-27 15:41:08 +03:00
|
|
|
],
|
2023-09-21 01:20:29 +03:00
|
|
|
},
|
2023-07-06 20:01:38 +03:00
|
|
|
// eslint-disable-next-line prefer-arrow/prefer-arrow-functions
|
|
|
|
async headers() {
|
2023-10-05 18:37:25 +03:00
|
|
|
return [
|
|
|
|
{
|
|
|
|
source: "/(.*)",
|
|
|
|
headers: securityHeaders,
|
|
|
|
},
|
|
|
|
];
|
2023-07-06 20:01:38 +03:00
|
|
|
},
|
|
|
|
};
|
2023-07-07 11:40:57 +03:00
|
|
|
|
2023-10-03 17:16:02 +03:00
|
|
|
const ContentSecurityPolicy = {
|
|
|
|
"default-src": [
|
|
|
|
"'self'",
|
|
|
|
"https://fonts.googleapis.com",
|
|
|
|
process.env.NEXT_PUBLIC_SUPABASE_URL,
|
|
|
|
"https://api.june.so",
|
2023-12-28 16:54:10 +03:00
|
|
|
"https://us.posthog.com",
|
2024-01-14 06:43:02 +03:00
|
|
|
"https://preview.quivr.app",
|
2024-02-05 09:06:24 +03:00
|
|
|
"*.intercom.io",
|
|
|
|
"*.intercomcdn.com",
|
2024-01-14 06:43:02 +03:00
|
|
|
"https://*.vercel.app",
|
2023-10-09 18:02:15 +03:00
|
|
|
process.env.NEXT_PUBLIC_FRONTEND_URL,
|
2023-10-03 17:16:02 +03:00
|
|
|
],
|
|
|
|
"connect-src": [
|
|
|
|
"'self'",
|
|
|
|
process.env.NEXT_PUBLIC_SUPABASE_URL,
|
|
|
|
process.env.NEXT_PUBLIC_BACKEND_URL,
|
2023-10-20 16:36:55 +03:00
|
|
|
process.env.NEXT_PUBLIC_CMS_URL,
|
2024-02-05 09:06:24 +03:00
|
|
|
"*.intercom.io",
|
|
|
|
"*.intercomcdn.com",
|
2023-10-03 17:16:02 +03:00
|
|
|
"https://api.june.so",
|
|
|
|
"https://api.openai.com",
|
|
|
|
"https://cdn.growthbook.io",
|
|
|
|
"https://vitals.vercel-insights.com/v1/vitals",
|
2024-01-14 06:43:02 +03:00
|
|
|
"https://us.posthog.com",
|
2023-10-03 17:16:02 +03:00
|
|
|
],
|
2023-10-24 19:26:48 +03:00
|
|
|
"img-src": [
|
|
|
|
"'self'",
|
|
|
|
"https://www.gravatar.com",
|
2024-02-05 09:06:24 +03:00
|
|
|
"*.intercom.io",
|
|
|
|
"*.intercomcdn.com",
|
2023-10-24 19:26:48 +03:00
|
|
|
"https://quivr-cms.s3.eu-west-3.amazonaws.com",
|
|
|
|
"data:",
|
2023-11-23 00:14:53 +03:00
|
|
|
"*",
|
2023-10-24 19:26:48 +03:00
|
|
|
],
|
2023-10-03 17:16:02 +03:00
|
|
|
"media-src": [
|
|
|
|
"'self'",
|
|
|
|
"https://user-images.githubusercontent.com",
|
2023-10-09 18:02:15 +03:00
|
|
|
process.env.NEXT_PUBLIC_FRONTEND_URL,
|
2023-10-03 17:16:02 +03:00
|
|
|
"https://quivr-cms.s3.eu-west-3.amazonaws.com",
|
2024-01-14 06:43:02 +03:00
|
|
|
"https://preview.quivr.app",
|
|
|
|
"https://*.vercel.app",
|
2023-10-03 17:16:02 +03:00
|
|
|
],
|
|
|
|
"script-src": [
|
|
|
|
"'unsafe-inline'",
|
|
|
|
"'unsafe-eval'",
|
|
|
|
"https://va.vercel-scripts.com/",
|
2024-02-05 09:06:24 +03:00
|
|
|
"*.intercom.io",
|
|
|
|
"*.intercomcdn.com",
|
2023-10-09 18:02:15 +03:00
|
|
|
process.env.NEXT_PUBLIC_FRONTEND_URL,
|
2024-01-14 06:43:02 +03:00
|
|
|
"https://preview.quivr.app",
|
|
|
|
"https://*.vercel.app",
|
2023-10-03 17:16:02 +03:00
|
|
|
"https://www.google-analytics.com/",
|
2023-10-24 19:26:48 +03:00
|
|
|
"https://js.stripe.com",
|
2024-01-14 06:43:02 +03:00
|
|
|
"https://us.posthog.com",
|
2023-10-03 17:16:02 +03:00
|
|
|
],
|
2024-01-14 06:43:02 +03:00
|
|
|
"frame-src": ["https://js.stripe.com", "https://us.posthog.com"],
|
2023-10-03 17:16:02 +03:00
|
|
|
"frame-ancestors": ["'none'"],
|
2024-01-14 06:43:02 +03:00
|
|
|
"style-src": [
|
|
|
|
"'unsafe-inline'",
|
|
|
|
process.env.NEXT_PUBLIC_FRONTEND_URL,
|
|
|
|
"https://preview.quivr.app",
|
|
|
|
"https://*.vercel.app",
|
|
|
|
],
|
2023-10-03 17:16:02 +03:00
|
|
|
};
|
|
|
|
|
2023-10-05 18:37:25 +03:00
|
|
|
// Build CSP string
|
2023-10-03 17:16:02 +03:00
|
|
|
const cspString = Object.entries(ContentSecurityPolicy)
|
|
|
|
.map(([key, values]) => `${key} ${values.join(" ")};`)
|
|
|
|
.join(" ");
|
2023-07-06 20:01:38 +03:00
|
|
|
|
|
|
|
// Define headers
|
|
|
|
const securityHeaders = [
|
|
|
|
{
|
|
|
|
key: "Content-Security-Policy",
|
2023-10-03 17:16:02 +03:00
|
|
|
value: cspString,
|
2023-07-06 20:01:38 +03:00
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "Referrer-Policy",
|
|
|
|
value: "origin-when-cross-origin",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "X-Frame-Options",
|
|
|
|
value: "SAMEORIGIN",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "X-Content-Type-Options",
|
|
|
|
value: "nosniff",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "X-DNS-Prefetch-Control",
|
|
|
|
value: "on",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "Permissions-Policy",
|
|
|
|
value: "camera=(), microphone=(), geolocation=(), interest-cohort=()",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
key: "Strict-Transport-Security",
|
|
|
|
value: "max-age=31536000",
|
|
|
|
},
|
|
|
|
];
|
|
|
|
//AJouter le content security policy uniquement en pre-vew et en prod
|
2023-05-18 02:22:13 +03:00
|
|
|
|
2023-07-02 15:32:09 +03:00
|
|
|
// Check if the SENTRY_DSN environment variable is defined
|
|
|
|
if (process.env.SENTRY_DSN) {
|
|
|
|
// SENTRY_DSN exists, include Sentry configuration
|
|
|
|
const { withSentryConfig } = require("@sentry/nextjs");
|
|
|
|
|
|
|
|
module.exports = withSentryConfig(
|
2023-07-06 20:01:38 +03:00
|
|
|
nextConfig,
|
|
|
|
{
|
|
|
|
// For all available options, see:
|
|
|
|
// https://github.com/getsentry/sentry-webpack-plugin#options
|
2023-07-02 15:32:09 +03:00
|
|
|
|
2023-07-06 20:01:38 +03:00
|
|
|
// Suppresses source map uploading logs during build
|
|
|
|
silent: true,
|
2024-02-24 03:15:39 +03:00
|
|
|
org: "quivr-brain",
|
2023-07-06 20:01:38 +03:00
|
|
|
project: "javascript-nextjs",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
// For all available options, see:
|
|
|
|
// https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/
|
2023-07-02 15:32:09 +03:00
|
|
|
|
2023-07-06 20:01:38 +03:00
|
|
|
// Upload a larger set of source maps for prettier stack traces (increases build time)
|
|
|
|
widenClientFileUpload: true,
|
2023-07-02 15:32:09 +03:00
|
|
|
|
2023-07-06 20:01:38 +03:00
|
|
|
// Transpiles SDK to be compatible with IE11 (increases bundle size)
|
|
|
|
transpileClientSDK: true,
|
2023-07-02 15:32:09 +03:00
|
|
|
|
2023-07-06 20:01:38 +03:00
|
|
|
// Routes browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers (increases server load)
|
|
|
|
tunnelRoute: "/monitoring",
|
2023-07-02 15:32:09 +03:00
|
|
|
|
2023-07-06 20:01:38 +03:00
|
|
|
// Hides source maps from generated client bundles
|
|
|
|
hideSourceMaps: true,
|
2023-07-02 15:32:09 +03:00
|
|
|
|
2023-07-06 20:01:38 +03:00
|
|
|
// Automatically tree-shake Sentry logger statements to reduce bundle size
|
|
|
|
disableLogger: true,
|
2024-02-24 03:15:39 +03:00
|
|
|
|
|
|
|
// Enables automatic instrumentation of Vercel Cron Monitors.
|
|
|
|
// See the following for more information:
|
|
|
|
// https://docs.sentry.io/product/crons/
|
|
|
|
// https://vercel.com/docs/cron-jobs
|
|
|
|
automaticVercelMonitors: true,
|
2023-07-06 20:01:38 +03:00
|
|
|
}
|
2023-07-02 15:32:09 +03:00
|
|
|
);
|
|
|
|
} else {
|
|
|
|
// SENTRY_DSN does not exist, export nextConfig without Sentry
|
|
|
|
module.exports = nextConfig;
|
2023-07-06 20:01:38 +03:00
|
|
|
}
|