import { defineConfig, loadEnv } from 'vite' import react from '@vitejs/plugin-react' import path from 'path' import dynamicImport from 'vite-plugin-dynamic-import' import { VitePWA } from 'vite-plugin-pwa' import { fetchTenantNames } from './src/services/tenants' export default defineConfig(async ({ mode }) => { const env = loadEnv(mode, process.cwd(), '') const apiUrl = env.VITE_API_URL const baseDomains = ['sozsoft.com', 'dev.sozsoft.com'] const tenantNames = (await fetchTenantNames(apiUrl)).map((n) => n.trim().toLowerCase()) const tenantHosts = tenantNames.map((t) => `${t}.sozsoft.com`) const allowedHosts = Array.from(new Set(['localhost', ...baseDomains, ...tenantHosts])) console.log('[vite] allowedHosts:', allowedHosts) return { plugins: [ react({ babel: { plugins: ['babel-plugin-macros', '@babel/plugin-syntax-dynamic-import'], }, }), dynamicImport(), VitePWA({ registerType: 'autoUpdate', devOptions: { enabled: true }, workbox: { maximumFileSizeToCacheInBytes: 10 * 1024 * 1024, }, manifest: { name: 'Platform', theme_color: '#FF99C8', background_color: '#f0e7db', display: 'standalone', icons: [ { src: '/img/logo/logo-400.png', sizes: '400x400', type: 'image/png', purpose: 'any', }, ], }, }), ], server: { open: true, port: 3000, }, assetsInclude: ['**/*.md'], resolve: { alias: { '@': path.join(__dirname, 'src'), inferno: 'inferno/dist/index.esm.js', 'devextreme/ui': 'devextreme/esm/ui', }, }, build: { outDir: 'dist', sourcemap: false, }, preview: { host: '0.0.0.0', port: 80, open: false, allowedHosts, }, define: { 'process.env': {}, }, } })