Files
frontend/packages/common/config/src/initialize-config.ts
T

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();
}