Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
3.1 kB ยท 108 lines
TypeScript
at incident-api
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109import { withSentryConfig } from "@sentry/nextjs";import type { NextConfig } from "next";import createNextIntlPlugin from "next-intl/plugin";
import { defaultLocale, locales } from "./src/i18n/config";
const isDev = process.env.NODE_ENV === "development";
const cspHeader = ` default-src 'self'; script-src 'self' 'unsafe-inline'${isDev ? " 'unsafe-eval'" : ""}; style-src 'self' 'unsafe-inline'; img-src *; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors *; connect-src 'self' https://*.ingest.us.sentry.io; worker-src 'self' blob:; upgrade-insecure-requests; `;
const withNextIntl = createNextIntlPlugin({ requestConfig: "./src/i18n/request.ts", experimental: { srcPath: "./src", extract: { sourceLocale: defaultLocale, }, messages: { path: "./messages", format: "json", locales, }, },});
// ICON_SET=nucleo swaps the icon set at resolution time (see packages/icons)const useNucleoIcons = process.env.ICON_SET === "nucleo";
const nextConfig: NextConfig = { output: process.env.SELF_HOST === "true" ? "standalone" : undefined, experimental: { authInterrupts: true, // barrel-optimize only when unaliased โ the rewrite would bypass the nucleo alias optimizePackageImports: useNucleoIcons ? [] : ["@openstatus/icons"], }, turbopack: useNucleoIcons ? { resolveAlias: { "@openstatus/icons": "@openstatus/icons/nucleo" } } : undefined, webpack: (config) => { if (useNucleoIcons) { config.resolve.alias["@openstatus/icons$"] = "@openstatus/icons/nucleo"; } return config; }, images: { remotePatterns: [ new URL("https://openstatus.dev/**"), new URL("https://**.public.blob.vercel-storage.com/**"), ], }, logging: { fetches: { fullUrl: true, }, }, async headers() { return [ { source: "/(.*)", headers: [ { key: "Content-Security-Policy", value: cspHeader.replace(/\n/g, ""), }, ], }, ]; },};
// For detailed options, refer to the official documentation:// - Webpack plugin options: https://github.com/getsentry/sentry-webpack-plugin#options// - Next.js Sentry setup guide: https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/const sentryConfig = { // Prevent log output unless running in a CI environment (helps reduce noise in logs) silent: !process.env.CI, org: "openstatus", project: "openstatus", authToken: process.env.SENTRY_AUTH_TOKEN,
// Upload a larger set of source maps for improved stack trace accuracy (increases build time) widenClientFileUpload: true,
// If set to true, transpiles Sentry SDK to be compatible with IE11 (increases bundle size) transpileClientSDK: false,
// Tree-shake Sentry logger statements to reduce bundle size webpack: { treeshake: { removeDebugLogging: true, }, },};
export default withSentryConfig(withNextIntl(nextConfig), sentryConfig);