import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import tsconfigPaths from 'vite-tsconfig-paths' import { VitePWA } from 'vite-plugin-pwa'; import * as path from 'path' // ✅ Import path module // https://vitejs.dev/config/ export default defineConfig({ plugins: [ react(), tsconfigPaths(), VitePWA({ registerType: 'autoUpdate', // Automatically updates the service worker when a new version is available workbox: { skipWaiting: true, //makes the new worker call skip waiting clientsClaim: true, //makes it claim control of clients as soon as it activates globPatterns: ['**/*.{js,css,html,png,jpg,svg}'], // Cache all common asset types maximumFileSizeToCacheInBytes: 20 * 1024 * 1024, // 20 MiB cleanupOutdatedCaches: true, navigateFallback: "/indexV2.html", runtimeCaching: [ { urlPattern: ({ request }) => request.destination === 'document', handler: 'NetworkFirst', options: { cacheName: 'html-cache', }, }, { urlPattern: ({ request }) => ['style', 'script', 'worker'].includes(request.destination), handler: 'StaleWhileRevalidate', options: { cacheName: 'assets-cache', }, }, { //this forces all api calls to go through the network urlPattern: ({ url }) => url.pathname.startsWith('/v1/'), handler: 'NetworkOnly', options: { cacheName: 'api-cache', }, }, ] }, }), ], build: { outDir: './build', sourcemap: true, minify: false, target: 'esnext', rollupOptions: { input: { main: path.resolve(__dirname, 'indexV2.html') } } }, esbuild: { keepNames: true, // Prevent function name mangling }, })