import { resolve } from 'node:path'; import { defineConfig } from 'vite'; import { svelte } from '@sveltejs/vite-plugin-svelte'; // The edge Connect service is scrabble.edge.v1.Gateway; the gateway serves it over // h2c on :8081 by default. In dev we proxy the RPC path so the browser (which can // not speak h2c directly) talks to the dev server on the same origin. In `mock` // mode the app runs entirely against an in-memory fake transport — no gateway, // no backend, no Postgres — which is what `pnpm start` launches. const RPC_PREFIX = '/scrabble.edge.v1.Gateway'; export default defineConfig(({ mode }) => ({ // Relative asset base so the one build serves under any path — the gateway maps the // Telegram Mini App to /telegram/ (the hash router is path-agnostic). base: './', define: { // App version shown on the About screen, injected at build time from `git describe` // via a Docker build-arg (Stage 17). Falls back to "dev" for a plain local/mock build, // so a missing build-arg never breaks the build. __APP_VERSION__: JSON.stringify(process.env.VITE_APP_VERSION || 'dev'), }, plugins: [svelte()], server: { port: 5173, proxy: mode === 'mock' ? undefined : { [RPC_PREFIX]: { target: process.env.GATEWAY_URL || 'http://localhost:8081', changeOrigin: true, }, }, }, build: { target: 'es2022', sourcemap: true, // Two entries (Stage 17): the game SPA (index.html, served at /app/ + /telegram/) and the // public landing page (landing.html, served at /). Assets are shared in dist/assets/, and // the relative base lets one build serve under any path. rollupOptions: { input: { main: resolve(import.meta.dirname, 'index.html'), landing: resolve(import.meta.dirname, 'landing.html'), }, }, }, }));