import { readFileSync } from 'node:fs'; import { fileURLToPath, URL } from 'node:url'; import { defineConfig } from 'vite'; import solid from 'vite-plugin-solid'; const SERVER_HOST = '127.0.0.1'; const SERVER_PORT = 12520; const metadataPath = fileURLToPath(new URL('./public/oauth-client-metadata.json', import.meta.url)); const metadata = JSON.parse(readFileSync(metadataPath, 'utf8')) as { client_id: string; redirect_uris: string[]; scope: string; }; export default defineConfig(({ command }) => { if (command === 'build') { process.env.VITE_OAUTH_CLIENT_ID = metadata.client_id; process.env.VITE_OAUTH_REDIRECT_URI = metadata.redirect_uris[0]; } else { const redirectPathname = new URL(metadata.redirect_uris[0]).pathname; const redirectUri = `http://${SERVER_HOST}:${SERVER_PORT}${redirectPathname}`; process.env.VITE_OAUTH_CLIENT_ID = `http://localhost?redirect_uri=${encodeURIComponent(redirectUri)}` + `&scope=${encodeURIComponent(metadata.scope)}`; process.env.VITE_OAUTH_REDIRECT_URI = redirectUri; } process.env.VITE_OAUTH_SCOPE = metadata.scope; return { server: { host: SERVER_HOST, port: SERVER_PORT, }, preview: { host: SERVER_HOST, port: SERVER_PORT, }, plugins: [solid()], build: { sourcemap: true, }, }; });