refactor: getConfig 로직 수정

This commit is contained in:
2025-05-23 23:41:30 +09:00
parent 8467b0a4e3
commit a27e9f1cdd
6 changed files with 37 additions and 65 deletions
@@ -10,13 +10,9 @@ import { PromptProvider, StoreProvider } from "@/shared/providers";
import { AlertDialog } from "@/shared/ui/alert-dialog";
import { PromptDialog } from "@/shared/ui/prompt-dialog";
import { ConfirmDialog } from "@/shared/ui/confirm-dialog";
import { initializeNextClientConfig } from "@common/config";
const AppProvider = ({ children }: Readonly<{ children: React.ReactNode }>) => {
const queryClient = new QueryClient();
initializeNextClientConfig();
return (
<QueryClientProvider client={queryClient}>
<StoreProvider>
+1
View File
@@ -10,6 +10,7 @@
],
"scripts": {
"build": "turbo run build --filter=!wr",
"build:common": "turbo run build --filter=@common/*",
"dev": "turbo run dev",
"dev:cs": "turbo run dev --filter=cs",
"dev:wr": "turbo run dev --filter=wr",
-1
View File
@@ -1,2 +1 @@
export * from "./initialize-config";
export * from "./initializer";
+36 -20
View File
@@ -13,23 +13,14 @@ const defaultConfig: EnvConfig = {
PORT: "3000",
PROXY_HOST: "",
SERVER_API_URL: "",
SITE_ID: "CS",
SITE_ID: "",
CLAIM_NAME: "Authorization",
ACCESS_TOKEN: "access-token",
REFRESH_TOKEN: "refresh-token",
AUTH_USER_ID: "token-id",
};
let isInitialized = false;
let envConfig: EnvConfig = { ...defaultConfig };
export function initializeConfig(values: Partial<EnvConfig>): void {
console.log("initializeConfig >>>> values: ", values);
if (isInitialized) {
console.warn("Configuration already initialized. Skipping.");
return;
}
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;
@@ -37,19 +28,44 @@ export function initializeConfig(values: Partial<EnvConfig>): void {
return acc;
}, {} as Partial<EnvConfig>);
if (filteredValues.PORT && !filteredValues.PROXY_HOST) {
filteredValues.PROXY_HOST = `http://localhost:${filteredValues.PORT}`;
if (!filteredValues.PROXY_HOST) {
filteredValues.PROXY_HOST = `http://localhost:${filteredValues.PORT || defaultConfig.PORT}`;
}
envConfig = { ...defaultConfig, ...filteredValues };
isInitialized = true;
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 {
if (!isInitialized) {
console.warn(
"Attempted to access config before initialization. Returning default values."
);
if (typeof import.meta?.env !== "undefined") {
return getViteConfig();
}
return envConfig;
return getNextConfig();
}
-39
View File
@@ -1,39 +0,0 @@
import { initializeConfig, type EnvConfig } from "./initialize-config";
export function initializeNextClientConfig(): void {
if (typeof window === "undefined") {
console.warn("initializeNextClientConfig called on the server. Skipping.");
return;
}
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,
};
initializeConfig(env);
}
export function initializeViteClientConfig(): void {
if (typeof window === "undefined") {
console.warn("initializeViteClientConfig called on the server. Skipping.");
return;
}
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,
};
initializeConfig(env);
}
-1
View File
@@ -51,7 +51,6 @@ class Client {
public static getInstance(config: ClientConfig): Client {
if (!Client.instance) {
console.log("getInstance >>>> config: ", config);
Client.instance = new Client(config);
}
return Client.instance;