69 lines
2.0 KiB
TypeScript
69 lines
2.0 KiB
TypeScript
export interface EnvConfig {
|
|
PORT?: string;
|
|
PROXY_HOST?: string;
|
|
SERVER_API_URL?: string;
|
|
SITE_ID?: string;
|
|
CLAIM_NAME?: string;
|
|
ACCESS_TOKEN?: string;
|
|
REFRESH_TOKEN?: string;
|
|
AUTH_USER_ID?: string;
|
|
}
|
|
|
|
const defaultConfig: EnvConfig = {
|
|
PORT: "3000",
|
|
PROXY_HOST: "",
|
|
SERVER_API_URL: "",
|
|
SITE_ID: "",
|
|
CLAIM_NAME: "Authorization",
|
|
ACCESS_TOKEN: "access-token",
|
|
REFRESH_TOKEN: "refresh-token",
|
|
AUTH_USER_ID: "token-id",
|
|
};
|
|
|
|
export function generateEnvConfig(values: Partial<EnvConfig>): EnvConfig {
|
|
const filteredValues = Object.entries(values).reduce((acc, [key, value]) => {
|
|
if (value !== undefined && value !== null) {
|
|
acc[key as keyof EnvConfig] = value;
|
|
}
|
|
return acc;
|
|
}, {} as Partial<EnvConfig>);
|
|
|
|
if (!filteredValues.PROXY_HOST) {
|
|
filteredValues.PROXY_HOST = `http://localhost:${filteredValues.PORT || defaultConfig.PORT}`;
|
|
}
|
|
|
|
return { ...defaultConfig, ...filteredValues };
|
|
}
|
|
|
|
export function getNextConfig(): EnvConfig {
|
|
const env: Partial<EnvConfig> = {
|
|
PORT: process.env.NEXT_PUBLIC_PORT,
|
|
PROXY_HOST: process.env.NEXT_PUBLIC_PROXY_HOST,
|
|
SERVER_API_URL: process.env.NEXT_PUBLIC_SERVER_API_URL,
|
|
SITE_ID: process.env.NEXT_PUBLIC_SITE_ID,
|
|
CLAIM_NAME: process.env.NEXT_PUBLIC_CLAIM_NAME,
|
|
ACCESS_TOKEN: process.env.NEXT_PUBLIC_ACCESS_TOKEN,
|
|
REFRESH_TOKEN: process.env.NEXT_PUBLIC_REFRESH_TOKEN,
|
|
AUTH_USER_ID: process.env.NEXT_PUBLIC_AUTH_USER_ID,
|
|
};
|
|
return generateEnvConfig(env);
|
|
}
|
|
|
|
export function getViteConfig(): EnvConfig {
|
|
const env: Partial<EnvConfig> = {
|
|
PORT: import.meta.env.VITE_PORT,
|
|
PROXY_HOST: import.meta.env.VITE_PROXY_HOST,
|
|
SERVER_API_URL: import.meta.env.VITE_SERVER_API_URL,
|
|
SITE_ID: import.meta.env.VITE_SITE_ID,
|
|
CLAIM_NAME: import.meta.env.VITE_CLAIM_NAME,
|
|
ACCESS_TOKEN: import.meta.env.VITE_ACCESS_TOKEN,
|
|
REFRESH_TOKEN: import.meta.env.VITE_REFRESH_TOKEN,
|
|
AUTH_USER_ID: import.meta.env.VITE_AUTH_USER_ID,
|
|
};
|
|
return generateEnvConfig(env);
|
|
}
|
|
|
|
export function getConfig(): EnvConfig {
|
|
return getNextConfig();
|
|
}
|