const fs = require('fs'); const path = require('path'); const envSchema = require('./config/schema/env'); const urls = require('./constants/urls'); const { devices } = require('./config/ui'); const { publicRuntimeConfigSchema } = require('./config/schema/runtime-config'); const { serverRuntimeConfigSchema } = require('./config/schema/runtime-config'); const { withSentryConfig } = require('@sentry/nextjs'); const env = envSchema.parse(process.env); const favicons = fs.readdirSync('./public/favicon/prod'); const faviconSubPath = env.USE_DEV_COLORS ? '/favicon/dev' : '/favicon/prod'; function buildFaviconRewrite(source) { return { destination: String.prototype.concat(env.BASE_PATH, faviconSubPath, source), source, }; } module.exports = withSentryConfig( { basePath: env.BASE_PATH, compiler: { styledComponents: true, }, eslint: { ignoreDuringBuilds: true, }, experimental: { outputFileTracingRoot: path.join(__dirname, '../../'), proxyTimeout: 1000 * 90, }, images: { deviceSizes: devices, }, output: 'standalone', publicRuntimeConfig: publicRuntimeConfigSchema.parse(env), reactStrictMode: true, async redirects() { return [ { source: '/admin', destination: '/admin/cache', permanent: true, }, ]; }, async rewrites() { return [ { destination: env.URL_CRM_GRAPHQL_PROXY + '/:path*', source: urls.URL_CRM_GRAPHQL_PROXY + '/:path*', }, { destination: env.URL_CRM_DOWNLOADKP_BASE + '/:path*', source: urls.URL_CRM_DOWNLOADKP_PROXY + '/:path*', }, { destination: env.URL_GET_USER_DIRECT, source: urls.URL_GET_USER_PROXY, }, { destination: env.URL_CORE_FINGAP_DIRECT, source: urls.URL_CORE_FINGAP_PROXY, }, // { // destination: env.URL_1C_TRANSTAX_DIRECT, // source: urls.URL_1C_TRANSTAX_PROXY, // }, { destination: env.URL_ELT_KASKO_DIRECT, source: urls.URL_ELT_KASKO_PROXY, }, { destination: env.URL_ELT_OSAGO_DIRECT, source: urls.URL_ELT_OSAGO_PROXY, }, { destination: env.URL_CACHE_GET_QUERIES_DIRECT, source: urls.URL_CACHE_GET_QUERIES_PROXY, }, { destination: env.URL_CACHE_DELETE_QUERY_DIRECT + '/:path*', source: urls.URL_CACHE_DELETE_QUERY_PROXY + '/:path*', }, { destination: env.URL_CACHE_RESET_QUERIES_DIRECT, source: urls.URL_CACHE_RESET_QUERIES_PROXY, }, { destination: env.URL_CACHE_GET_QUERY_DIRECT, source: urls.URL_CACHE_GET_QUERY_PROXY, }, ...favicons.map((fileName) => buildFaviconRewrite(`/${fileName}`)), ]; }, sentry: { disableClientWebpackPlugin: true, disableServerWebpackPlugin: true, hideSourceMaps: true, tunnelRoute: '/track-error', }, serverRuntimeConfig: serverRuntimeConfigSchema.parse(env), swcMinify: true, transpilePackages: [ 'ui', 'tools', 'antd', '@ant-design/icons', 'rc-pagination', 'rc-picker', '@ant-design', '@rc-component', 'rc-table', ], }, { authToken: env.SENTRY_AUTH_TOKEN, org: 'sentry', project: 'calculator-client', silent: true, url: 'https://errors.evoleasing.ru/', }, { automaticVercelMonitors: true, disableClientWebpackPlugin: true, disableLogger: true, disableServerWebpackPlugin: true, hideSourceMaps: true, transpileClientSDK: false, tunnelRoute: '/track-error', } );