| 
                        123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 | 
                        - const { codeInspectorPlugin } = require('code-inspector-plugin')
 - const withPWA = require('next-pwa')({
 -   dest: 'public',
 -   register: true,
 -   skipWaiting: true,
 -   disable: process.env.NODE_ENV === 'development',
 -   fallbacks: {
 -     document: '/_offline.html',
 -   },
 -   runtimeCaching: [
 -     {
 -       urlPattern: /^https:\/\/fonts\.googleapis\.com\/.*/i,
 -       handler: 'CacheFirst',
 -       options: {
 -         cacheName: 'google-fonts',
 -         expiration: {
 -           maxEntries: 4,
 -           maxAgeSeconds: 365 * 24 * 60 * 60 // 1 year
 -         }
 -       }
 -     },
 -     {
 -       urlPattern: /^https:\/\/fonts\.gstatic\.com\/.*/i,
 -       handler: 'CacheFirst',
 -       options: {
 -         cacheName: 'google-fonts-webfonts',
 -         expiration: {
 -           maxEntries: 4,
 -           maxAgeSeconds: 365 * 24 * 60 * 60 // 1 year
 -         }
 -       }
 -     },
 -     {
 -       urlPattern: /\.(?:png|jpg|jpeg|svg|gif|webp|avif)$/i,
 -       handler: 'CacheFirst',
 -       options: {
 -         cacheName: 'images',
 -         expiration: {
 -           maxEntries: 64,
 -           maxAgeSeconds: 30 * 24 * 60 * 60 // 30 days
 -         }
 -       }
 -     },
 -     {
 -       urlPattern: /\.(?:js|css)$/i,
 -       handler: 'StaleWhileRevalidate',
 -       options: {
 -         cacheName: 'static-resources',
 -         expiration: {
 -           maxEntries: 32,
 -           maxAgeSeconds: 24 * 60 * 60 // 1 day
 -         }
 -       }
 -     },
 -     {
 -       urlPattern: /^\/api\/.*/i,
 -       handler: 'NetworkFirst',
 -       options: {
 -         cacheName: 'api-cache',
 -         networkTimeoutSeconds: 10,
 -         expiration: {
 -           maxEntries: 16,
 -           maxAgeSeconds: 60 * 60 // 1 hour
 -         }
 -       }
 -     }
 -   ]
 - })
 - const withMDX = require('@next/mdx')({
 -   extension: /\.mdx?$/,
 -   options: {
 -     // If you use remark-gfm, you'll need to use next.config.mjs
 -     // as the package is ESM only
 -     // https://github.com/remarkjs/remark-gfm#install
 -     remarkPlugins: [],
 -     rehypePlugins: [],
 -     // If you use `MDXProvider`, uncomment the following line.
 -     // providerImportSource: "@mdx-js/react",
 -   },
 - })
 - const withBundleAnalyzer = require('@next/bundle-analyzer')({
 -   enabled: process.env.ANALYZE === 'true',
 - })
 - 
 - // the default url to prevent parse url error when running jest
 - const hasSetWebPrefix = process.env.NEXT_PUBLIC_WEB_PREFIX
 - const port = process.env.PORT || 3000
 - const locImageURLs = !hasSetWebPrefix ? [new URL(`http://localhost:${port}/**`), new URL(`http://127.0.0.1:${port}/**`)] : []
 - const remoteImageURLs = [hasSetWebPrefix ? new URL(`${process.env.NEXT_PUBLIC_WEB_PREFIX}/**`) : '', ...locImageURLs].filter(item => !!item)
 - 
 - /** @type {import('next').NextConfig} */
 - const nextConfig = {
 -   basePath: process.env.NEXT_PUBLIC_BASE_PATH || '',
 -   transpilePackages: ['echarts', 'zrender'],
 -   turbopack: {
 -     rules: codeInspectorPlugin({
 -       bundler: 'turbopack'
 -     })
 -   },
 -   productionBrowserSourceMaps: false, // enable browser source map generation during the production build
 -   // Configure pageExtensions to include md and mdx
 -   pageExtensions: ['ts', 'tsx', 'js', 'jsx', 'md', 'mdx'],
 -   // https://nextjs.org/docs/messages/next-image-unconfigured-host
 -   images: {
 -     remotePatterns: remoteImageURLs.map(remoteImageURL => ({
 -       protocol: remoteImageURL.protocol.replace(':', ''),
 -       hostname: remoteImageURL.hostname,
 -       port: remoteImageURL.port,
 -       pathname: remoteImageURL.pathname,
 -       search: '',
 -     })),
 -   },
 -   experimental: {
 -     optimizePackageImports: [
 -       '@remixicon/react',
 -       '@heroicons/react'
 -     ],
 -   },
 -   // fix all before production. Now it slow the develop speed.
 -   eslint: {
 -     // Warning: This allows production builds to successfully complete even if
 -     // your project has ESLint errors.
 -     ignoreDuringBuilds: true,
 -     dirs: ['app', 'bin', 'config', 'context', 'hooks', 'i18n', 'models', 'service', 'test', 'types', 'utils'],
 -   },
 -   typescript: {
 -     // https://nextjs.org/docs/api-reference/next.config.js/ignoring-typescript-errors
 -     ignoreBuildErrors: true,
 -   },
 -   reactStrictMode: true,
 -   async redirects() {
 -     return [
 -       {
 -         source: '/',
 -         destination: '/apps',
 -         permanent: false,
 -       },
 -     ]
 -   },
 -   output: 'standalone',
 - }
 - 
 - module.exports = withPWA(withBundleAnalyzer(withMDX(nextConfig)))
 
 
  |