/* eslint-disable operator-linebreak */ /* eslint-disable @typescript-eslint/no-var-requires */ const { withPlugins } = require('next-composed-plugins'); const withLess = require('next-with-less'); const withGraphQL = require('next-plugin-graphql'); const { COLORS_DEV, COLORS_PROD } = require('./constants/colors'); const envSchema = require('./config/schema/env'); const urls = require('./constants/urls'); const { devices } = require('./@packages/ui/screens'); const { publicRuntimeConfigSchema } = require('./config/schema/runtime-config'); const { serverRuntimeConfigSchema } = require('./config/schema/runtime-config'); const env = envSchema.parse(process.env); const faviconSubPath = env.USE_DEV_COLORS ? '/favicon/dev' : '/favicon/prod'; function buildFaviconRewrite(source) { return { source, destination: String.prototype.concat(env.BASE_PATH, faviconSubPath, source), }; } /** @type {import('next').NextConfig} */ const nextConfig = { basePath: env.BASE_PATH, output: 'standalone', swcMinify: true, reactStrictMode: true, eslint: { ignoreDuringBuilds: true, }, compiler: { styledComponents: true, }, images: { deviceSizes: devices, }, async rewrites() { return [ { source: urls.URL_CRM_GRAPHQL_PROXY, destination: env.URL_CRM_GRAPHQL_DIRECT, }, { source: urls.URL_GET_USER_PROXY, destination: env.URL_GET_USER_DIRECT, }, { source: urls.URL_CORE_FINGAP_PROXY, destination: env.URL_CORE_FINGAP_DIRECT, }, buildFaviconRewrite('/apple-touch-icon.png'), buildFaviconRewrite('/favicon-32x32.png'), buildFaviconRewrite('/favicon-16x16.png'), buildFaviconRewrite('/android-chrome-192x192.png'), buildFaviconRewrite('/android-chrome-512x512.png'), buildFaviconRewrite('/safari-pinned-tab.svg'), ]; }, publicRuntimeConfig: publicRuntimeConfigSchema.parse(env), serverRuntimeConfig: serverRuntimeConfigSchema.parse(env), }; const plugins = [withLess, withGraphQL]; const colorPrimary = env.USE_DEV_COLORS ? COLORS_DEV.COLOR_PRIMARY : COLORS_PROD.COLOR_PRIMARY; const config = { ...nextConfig, lessLoaderOptions: { lessOptions: { modifyVars: { 'primary-color': colorPrimary, }, }, }, }; module.exports = withPlugins(config, plugins);