/** @type {import('next').NextConfig} */ const { buildSecurityHeaders, normalizeAssetPrefix } = require('../../config/nextSecurityHeaders') const CARPLACE_ASSET_PREFIX = '/carplace' // In local development the homepage app serves /carplace from port 3000 while // the Carplace dev server runs on port 3004. Emit absolute chunk/HMR URLs so // the browser asks the Carplace server for its own assets instead of the // homepage server. const defaultCarplaceAssetPrefix = process.env.NODE_ENV !== 'production' ? 'http://localhost:3004' : CARPLACE_ASSET_PREFIX const carplaceAssetPrefix = normalizeAssetPrefix( process.env.CARPLACE_ASSET_PREFIX ?? defaultCarplaceAssetPrefix, CARPLACE_ASSET_PREFIX, ) const securityHeaders = buildSecurityHeaders({ assetSources: [carplaceAssetPrefix] }) const nextConfig = { ...(carplaceAssetPrefix ? { assetPrefix: carplaceAssetPrefix } : {}), images: { remotePatterns: [{ protocol: 'https', hostname: 'res.cloudinary.com' }], }, transpilePackages: ['@rentaldrivego/types'], async headers() { return [{ source: '/:path*', headers: securityHeaders }] }, async rewrites() { const apiOrigin = (process.env.API_INTERNAL_URL ?? process.env.API_URL ?? 'http://api:4000').replace(/\/api\/v1\/?$/, '') return { beforeFiles: [ { source: '/carplace/api/:path*', destination: `${apiOrigin}/api/:path*` }, ], afterFiles: [ { source: '/carplace', destination: '/' }, { source: '/carplace/:path*', destination: '/:path*' }, ], fallback: [], } }, } module.exports = nextConfig