const withLess = require('next-with-less'); const withBundleAnalyzer = require('@next/bundle-analyzer')({ enabled: process.env.ANALYZE === 'true', }); const runtimeCaching = require('next-pwa/cache'); const withPWA = require('next-pwa')({ dest: 'public', runtimeCaching: [ ...runtimeCaching, { urlPattern: /\.(?:ts|m3u8)$/i, handler: 'NetworkOnly', }, { urlPattern: /^\/admin\/.*$/, handler: 'NetworkOnly', }, { urlPattern: /^\/api\/.*$/, handler: 'NetworkOnly', }, ], register: true, skipWaiting: true, disableDevLogs: true, publicExcludes: ['!img/platformlogos/**/*', '!styles/admin/**/*'], buildExcludes: [/chunks\/pages\/admin.*/, '!**/admin/**/*'], sourcemap: process.env.NODE_ENV === 'development', disable: process.env.NODE_ENV === 'development', }); module.exports = withPWA( withBundleAnalyzer( withLess({ productionBrowserSourceMaps: process.env.SOURCE_MAPS === 'true', trailingSlash: true, reactStrictMode: true, images: { unoptimized: true, }, swcMinify: true, webpack(config) { config.module.rules.push({ test: /\.svg$/i, issuer: /\.[jt]sx?$/, use: ['@svgr/webpack'], }); return config; }, async rewrites() { return [ { source: '/api/:path*', destination: 'http://localhost:8080/api/:path*', // Proxy to Backend to work around CORS. }, { source: '/hls/:path*', destination: 'http://localhost:8080/hls/:path*', // Proxy to Backend to work around CORS. }, { source: '/img/:path*', destination: 'http://localhost:8080/img/:path*', // Proxy to Backend to work around CORS. }, { source: '/logo', destination: 'http://localhost:8080/logo', // Proxy to Backend to work around CORS. }, { source: '/thumbnail.jpg', destination: 'http://localhost:8080/thumbnail.jpg', // Proxy to Backend to work around CORS. }, { source: '/customjavascript', destination: 'http://localhost:8080/customjavascript', // Proxy to Backend to work around CORS. }, ]; }, pageExtensions: ['tsx'], }), ), );