mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 13:40:46 +00:00
26f5d40819
- Replace Webpack with Vite for faster client bundling and HMR. - Migrate tests from Jest to Vitest and update configuration. - Update Web Worker instantiation to standard ESM syntax. - Implement Env utility in `src/core` for safe, hybrid environment variable access (Vite vs Node). - Refactor configuration loaders to remove direct `process.env` dependencies in shared code. - Update TypeScript environment definitions and project scripts for the new toolchain. - Remove the [depracated usage of the husky](https://github.com/typicode/husky/releases/tag/v9.0.1). ## Description: migrate build system to Vite and test runner to Vitest & Remove depracated husky usage ## Please complete the following: - [X] I have added screenshots for all UI updates - [X] I process any text displayed to the user through translateText() and I've added it to the en.json file - [ ] I have added relevant tests to the test directory - [X] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced ## Please put your Discord username so you can be contacted if a bug or regression is found: wraith4081 --------- Co-authored-by: evanpelle <evanpelle@gmail.com>
66 lines
2.0 KiB
TypeScript
66 lines
2.0 KiB
TypeScript
import { UserSettings } from "../game/UserSettings";
|
|
import { GameConfig } from "../Schemas";
|
|
import { Config, GameEnv, ServerConfig } from "./Config";
|
|
import { DefaultConfig } from "./DefaultConfig";
|
|
import { DevConfig, DevServerConfig } from "./DevConfig";
|
|
import { Env } from "./Env";
|
|
import { preprodConfig } from "./PreprodConfig";
|
|
import { prodConfig } from "./ProdConfig";
|
|
|
|
export let cachedSC: ServerConfig | null = null;
|
|
|
|
export async function getConfig(
|
|
gameConfig: GameConfig,
|
|
userSettings: UserSettings | null,
|
|
isReplay: boolean = false,
|
|
): Promise<Config> {
|
|
const sc = await getServerConfigFromClient();
|
|
switch (sc.env()) {
|
|
case GameEnv.Dev:
|
|
return new DevConfig(sc, gameConfig, userSettings, isReplay);
|
|
case GameEnv.Preprod:
|
|
case GameEnv.Prod:
|
|
console.log("using prod config");
|
|
return new DefaultConfig(sc, gameConfig, userSettings, isReplay);
|
|
default:
|
|
throw Error(`unsupported server configuration: ${Env.GAME_ENV}`);
|
|
}
|
|
}
|
|
export async function getServerConfigFromClient(): Promise<ServerConfig> {
|
|
if (cachedSC) {
|
|
return cachedSC;
|
|
}
|
|
const response = await fetch("/api/env");
|
|
|
|
if (!response.ok) {
|
|
throw new Error(
|
|
`Failed to fetch server config: ${response.status} ${response.statusText}`,
|
|
);
|
|
}
|
|
const config = await response.json();
|
|
// Log the retrieved configuration
|
|
console.log("Server config loaded:", config);
|
|
|
|
cachedSC = getServerConfig(config.game_env);
|
|
return cachedSC;
|
|
}
|
|
export function getServerConfigFromServer(): ServerConfig {
|
|
const gameEnv = Env.GAME_ENV;
|
|
return getServerConfig(gameEnv);
|
|
}
|
|
export function getServerConfig(gameEnv: string) {
|
|
switch (gameEnv) {
|
|
case "dev":
|
|
console.log("using dev server config");
|
|
return new DevServerConfig();
|
|
case "staging":
|
|
console.log("using preprod server config");
|
|
return preprodConfig;
|
|
case "prod":
|
|
console.log("using prod server config");
|
|
return prodConfig;
|
|
default:
|
|
throw Error(`unsupported server configuration: ${gameEnv}`);
|
|
}
|
|
}
|