3ae03ec515
- `livekit-client` подключён как ленивый чанк: SDK грузится только при входе в комнату, стартовый бандл не вырос; - `src/lib/livekit.ts` — единственное место знания о SDK: подключение, дорожки микрофона/камеры/экрана, снимки участников (речь, флаги, качество связи), выбор устройств на лету, разбор exp токена; - `src/stores/voiceConnection.ts` — сессия голоса: статусы idle/connecting/connected/reconnecting/error, продление токена за минуту до истечения с переподключением и повторным применением флагов, серверный мьют и глушение, громкость участников, перемещение, подсказка «говорите с выключенным микрофоном» не чаще раза в 5 с; - UI: состав голосовой комнаты в сайдбаре (речь, флаги, качество), панель комнаты с плитками и модерацией, меню участника (личная громкость, мьют, перемещение), drag&drop между голосовыми комнатами, кнопки панели пользователя управляют реальной сессией, при выключенном голосе — понятная подсказка; - 368 тестов Vitest (было 330), check/lint/test/build зелёные.
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { fileURLToPath } from 'node:url';
|
|
import { defineConfig } from 'vite';
|
|
import react from '@vitejs/plugin-react';
|
|
import tailwindcss from '@tailwindcss/vite';
|
|
|
|
export default defineConfig({
|
|
plugins: [react(), tailwindcss()],
|
|
resolve: {
|
|
alias: {
|
|
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
|
},
|
|
},
|
|
build: {
|
|
outDir: 'dist',
|
|
emptyOutDir: true,
|
|
sourcemap: false,
|
|
target: 'es2022',
|
|
// SDK LiveKit (~520 КБ) подгружается отдельным чанком только при входе в
|
|
// голосовую комнату, поэтому порог предупреждения поднят осознанно.
|
|
chunkSizeWarningLimit: 600,
|
|
},
|
|
server: {
|
|
port: 5173,
|
|
proxy: {
|
|
'/api': 'http://127.0.0.1:8080',
|
|
'/healthz': 'http://127.0.0.1:8080',
|
|
'/readyz': 'http://127.0.0.1:8080',
|
|
// Файлы аватаров/иконок отдаёт тот же инстанс.
|
|
'/files': 'http://127.0.0.1:8080',
|
|
// Шлюз Фазы 1: WebSocket на том же origin.
|
|
'/gateway': { target: 'ws://127.0.0.1:8080', ws: true },
|
|
},
|
|
},
|
|
test: {
|
|
environment: 'jsdom',
|
|
globals: true,
|
|
setupFiles: ['./tests/setup.ts'],
|
|
include: ['tests/**/*.test.{ts,tsx}'],
|
|
css: false,
|
|
},
|
|
});
|