139 lines
3.4 KiB
TypeScript
139 lines
3.4 KiB
TypeScript
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<App.Service.OtherBaseURLKey, string>;
|
|
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<App.Service.OtherBaseURLKey, string>;
|
|
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<App.Service.OtherBaseURLKey, string>;
|
|
|
|
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<App.Service.OtherBaseURLKey, string>;
|
|
|
|
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}`;
|
|
}
|