import json5 from 'json5'; /** * Create service config by current env * * @param env The current env */ let url = ''; export function createServiceConfig(env: Env.ImportMeta) { const { VITE_SERVICE_BASE_URL, VITE_OTHER_SERVICE_BASE_URL } = env; let other = {} as Record; try { other = json5.parse(VITE_OTHER_SERVICE_BASE_URL); } catch { // eslint-disable-next-line no-console console.error('VITE_OTHER_SERVICE_BASE_URL is not a valid json5 string'); } if(env.DEV){ url = 'http://192.168.0.230:8086'; }else{ // url = window.location.origin; url = '/api'; } const httpConfig: App.Service.SimpleServiceConfig = { baseURL: url, other }; const otherHttpKeys = Object.keys(httpConfig.other) as App.Service.OtherBaseURLKey[]; const otherConfig: App.Service.OtherServiceConfigItem[] = otherHttpKeys.map(key => { return { key, baseURL: httpConfig.other[key], proxyPattern: createProxyPattern(key) }; }); const config: App.Service.ServiceConfig = { baseURL: httpConfig.baseURL, proxyPattern: createProxyPattern(), other: otherConfig }; return config; } let aiUrl = ''; export function createAiServiceConfig(env: Env.ImportMeta) { const { VITE_SERVICE_BASE_URL, VITE_OTHER_SERVICE_BASE_URL } = env; let other = {} as Record; try { other = json5.parse(VITE_OTHER_SERVICE_BASE_URL); } catch { // eslint-disable-next-line no-console console.error('VITE_OTHER_SERVICE_BASE_URL is not a valid json5 string'); } if(env.DEV){ aiUrl = 'http://192.168.0.230:8085/proxy-ai'; }else{ // url = window.location.origin; aiUrl = '/api'; } const httpConfig: App.Service.SimpleServiceConfig = { baseURL: aiUrl, other }; const otherHttpKeys = Object.keys(httpConfig.other) as App.Service.OtherBaseURLKey[]; const otherConfig: App.Service.OtherServiceConfigItem[] = otherHttpKeys.map(key => { return { key, baseURL: httpConfig.other[key], proxyPattern: createProxyPattern(key) }; }); const config: App.Service.ServiceConfig = { baseURL: httpConfig.baseURL, proxyPattern: createProxyPattern(), other: otherConfig }; return config; } export function getBaseUrl() { return url; } /** * get backend service base url * * @param env - the current env * @param isProxy - if use proxy */ export function getServiceBaseURL(env: Env.ImportMeta, isProxy: boolean) { const { baseURL, other } = createServiceConfig(env); const otherBaseURL = {} as Record; other.forEach(item => { otherBaseURL[item.key] = isProxy ? item.proxyPattern : item.baseURL; }); return { baseURL: isProxy ? createProxyPattern() : baseURL, otherBaseURL }; } export function getServiceAiURL(env: Env.ImportMeta, isProxy: boolean) { const { baseURL, other } = createAiServiceConfig(env); const otherBaseURL = {} as Record; other.forEach(item => { otherBaseURL[item.key] = isProxy ? item.proxyPattern : item.baseURL; }); return { baseURL: isProxy ? createProxyPattern() : baseURL, otherBaseURL }; } /** * Get proxy pattern of backend service base url * * @param key If not set, will use the default key */ function createProxyPattern(key?: App.Service.OtherBaseURLKey) { if (!key) { return '/proxy-default'; } return `/proxy-${key}`; }