76 lines
1.9 KiB
TypeScript
76 lines
1.9 KiB
TypeScript
import json5 from 'json5';
|
|
|
|
/**
|
|
* Create service config by current env
|
|
*
|
|
* @param env The current env
|
|
*/
|
|
export function createServiceConfig(env: Env.ImportMeta) {
|
|
const { VITE_SERVICE_BASE_URL, VITE_OTHER_SERVICE_BASE_URL, VITE_APP_BASE_API, VITE_APP_WEBSOCKET } = env;
|
|
|
|
let other = {} as Record<App.Service.OtherBaseURLKey, string>;
|
|
try {
|
|
if (VITE_OTHER_SERVICE_BASE_URL) {
|
|
other = json5.parse(VITE_OTHER_SERVICE_BASE_URL);
|
|
}
|
|
} catch (error) {
|
|
// eslint-disable-next-line no-console
|
|
console.error('VITE_OTHER_SERVICE_BASE_URL is not a valid json5 string');
|
|
}
|
|
|
|
const httpConfig: App.Service.SimpleServiceConfig = {
|
|
baseURL: VITE_SERVICE_BASE_URL,
|
|
other
|
|
};
|
|
|
|
const otherHttpKeys = Object.keys(httpConfig.other) as App.Service.OtherBaseURLKey[];
|
|
|
|
const otherConfig: App.Service.OtherServiceConfigItem[] = otherHttpKeys.map(key => {
|
|
return {
|
|
key,
|
|
ws: false,
|
|
baseURL: httpConfig.other[key],
|
|
proxyPattern: createProxyPattern(key)
|
|
};
|
|
});
|
|
|
|
const config: App.Service.ServiceConfig = {
|
|
baseURL: httpConfig.baseURL,
|
|
ws: VITE_APP_WEBSOCKET === 'Y',
|
|
proxyPattern: VITE_APP_BASE_API,
|
|
other: otherConfig
|
|
};
|
|
|
|
return config;
|
|
}
|
|
|
|
/**
|
|
* 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, proxyPattern } = createServiceConfig(env);
|
|
|
|
const otherBaseURL = {} as Record<App.Service.OtherBaseURLKey, string>;
|
|
|
|
other.forEach(item => {
|
|
otherBaseURL[item.key] = isProxy ? item.proxyPattern : item.baseURL;
|
|
});
|
|
|
|
return {
|
|
baseURL: isProxy ? proxyPattern : (baseURL || '') + proxyPattern,
|
|
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) {
|
|
return `/proxy-${key}`;
|
|
}
|