Make client config loading worker-safe

This commit is contained in:
scamiv
2026-03-24 14:12:20 +01:00
parent 496f1008bb
commit bdf17f3f87
2 changed files with 21 additions and 4 deletions
+10 -4
View File
@@ -39,12 +39,18 @@ export async function getServerConfigFromClient(): Promise<ServerConfig> {
return cachedSC;
}
const bootstrapGameEnv = window.BOOTSTRAP_CONFIG?.gameEnv;
if (!bootstrapGameEnv) {
throw new Error("Missing bootstrap server config");
const bootstrapGameEnv =
typeof window !== "undefined"
? window.BOOTSTRAP_CONFIG?.gameEnv
: undefined;
const bundledGameEnv =
typeof process !== "undefined" ? process.env?.GAME_ENV : undefined;
const gameEnv = bootstrapGameEnv ?? bundledGameEnv;
if (!gameEnv) {
throw new Error("Missing client server config");
}
cachedSC = getServerConfig(bootstrapGameEnv);
cachedSC = getServerConfig(gameEnv);
return cachedSC;
}
export function getServerConfigFromServer(): ServerConfig {
@@ -6,9 +6,12 @@ import {
} from "../../../src/core/configuration/ConfigLoader";
describe("ConfigLoader", () => {
const originalGameEnv = process.env.GAME_ENV;
beforeEach(() => {
vi.restoreAllMocks();
window.BOOTSTRAP_CONFIG = undefined;
process.env.GAME_ENV = originalGameEnv;
clearCachedServerConfig();
});
@@ -21,4 +24,12 @@ describe("ConfigLoader", () => {
expect(config.env()).toBe(GameEnv.Prod);
expect(fetchSpy).not.toHaveBeenCalled();
});
test("falls back to bundled env when bootstrap config is unavailable", async () => {
process.env.GAME_ENV = "prod";
const config = await getServerConfigFromClient();
expect(config.env()).toBe(GameEnv.Prod);
});
});