update README

This commit is contained in:
Georgiy Syralev
2025-11-26 21:43:57 +03:00
parent c4c2610480
commit 753696cc93
58 changed files with 8674 additions and 3752 deletions

View File

@@ -2,21 +2,23 @@
* Централизованная конфигурация API
*/
const PRODUCTION_API_ORIGIN = 'https://api.ospab.host';
const resolveDefaultApiUrl = () => {
if (typeof window === 'undefined') {
return import.meta.env.DEV ? 'http://localhost:5000' : '';
return import.meta.env.DEV ? 'http://localhost:5000' : PRODUCTION_API_ORIGIN;
}
if (import.meta.env.DEV) {
return 'http://localhost:5000';
}
return window.location.origin;
return PRODUCTION_API_ORIGIN;
};
const resolveDefaultSocketUrl = (apiUrl: string) => {
if (!apiUrl) {
return import.meta.env.DEV ? 'ws://localhost:5000/ws' : '';
return import.meta.env.DEV ? 'ws://localhost:5000/ws' : 'wss://api.ospab.host/ws';
}
try {
@@ -32,6 +34,44 @@ const resolveDefaultSocketUrl = (apiUrl: string) => {
}
};
export const API_URL = import.meta.env.VITE_API_URL || resolveDefaultApiUrl();
const normalizeSocketUrl = (value: string | undefined, fallbackApiUrl: string): string | undefined => {
if (value === undefined) return undefined;
export const SOCKET_URL = import.meta.env.VITE_SOCKET_URL || resolveDefaultSocketUrl(API_URL);
const trimmed = value.trim();
if (!trimmed) return undefined;
const lowered = trimmed.toLowerCase();
if (lowered === 'disabled' || lowered === 'none' || lowered === 'off') {
return '';
}
try {
const url = new URL(trimmed);
if (!url.pathname || url.pathname === '/') {
url.pathname = '/ws';
}
url.search = '';
url.hash = '';
return url.toString();
} catch (error) {
console.warn('[config/api] Некорректный VITE_SOCKET_URL, используем значение по умолчанию', error);
try {
const base = new URL(fallbackApiUrl);
base.protocol = base.protocol === 'https:' ? 'wss:' : 'ws:';
base.pathname = '/ws';
base.search = '';
base.hash = '';
return base.toString();
} catch {
return undefined;
}
}
};
const RAW_API_URL = import.meta.env.VITE_API_URL;
export const API_URL = RAW_API_URL || resolveDefaultApiUrl();
const RAW_SOCKET_URL = import.meta.env.VITE_SOCKET_URL;
const defaultSocketUrl = resolveDefaultSocketUrl(API_URL);
const normalizedSocketUrl = normalizeSocketUrl(RAW_SOCKET_URL, API_URL);
export const SOCKET_URL = normalizedSocketUrl !== undefined ? normalizedSocketUrl : defaultSocketUrl;