chore: automatically remove deleted options from config.json (#2689)

Reviewed-on: OpenWF/SpaceNinjaServer#2689
Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com>
Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
Sainan 2025-08-24 15:30:31 -07:00 committed by Sainan
parent 71d0c140ae
commit 895e76b45e
2 changed files with 50 additions and 2 deletions

View File

@ -4,7 +4,7 @@ import { repoDir } from "@/src/helpers/pathHelper";
import { args } from "@/src/helpers/commandLineArguments";
import { Inbox } from "@/src/models/inboxModel";
export interface IConfig {
export interface IConfig extends IConfigRemovedOptions {
mongodbUrl: string;
logger: {
files: boolean;
@ -92,6 +92,41 @@ export interface IConfig {
};
}
export const configRemovedOptionsKeys = [
"infiniteCredits",
"infinitePlatinum",
"infiniteEndo",
"infiniteRegalAya",
"infiniteHelminthMaterials",
"claimingBlueprintRefundsIngredients",
"dontSubtractPurchaseCreditCost",
"dontSubtractPurchasePlatinumCost",
"dontSubtractPurchaseItemCost",
"dontSubtractPurchaseStandingCost",
"dontSubtractVoidTraces",
"dontSubtractConsumables",
"universalPolarityEverywhere",
"unlockDoubleCapacityPotatoesEverywhere",
"unlockExilusEverywhere",
"unlockArcanesEverywhere",
"noDailyStandingLimits",
"noDailyFocusLimit",
"noArgonCrystalDecay",
"noMasteryRankUpCooldown",
"noVendorPurchaseLimits",
"noDeathMarks",
"noKimCooldowns",
"syndicateMissionsRepeatable",
"instantFinishRivenChallenge",
"instantResourceExtractorDrones",
"noResourceExtractorDronesDamage",
"skipClanKeyCrafting"
] as const;
type IConfigRemovedOptions = {
[K in (typeof configRemovedOptionsKeys)[number]]?: boolean;
};
export const configPath = path.join(repoDir, args.configPath ?? "config.json");
export const config: IConfig = {

View File

@ -1,6 +1,12 @@
import chokidar from "chokidar";
import { logger } from "@/src/utils/logger";
import { config, configPath, loadConfig, syncConfigWithDatabase } from "@/src/services/configService";
import {
config,
configPath,
configRemovedOptionsKeys,
loadConfig,
syncConfigWithDatabase
} from "@/src/services/configService";
import { saveConfig, shouldReloadConfig } from "@/src/services/configWriterService";
import { getWebPorts, startWebServer, stopWebServer } from "@/src/services/webService";
import { sendWsBroadcast } from "@/src/services/wsService";
@ -34,6 +40,13 @@ chokidar.watch(configPath).on("change", () => {
export const validateConfig = (): void => {
let modified = false;
for (const key of configRemovedOptionsKeys) {
if (config[key] !== undefined) {
logger.debug(`Spotted removed option ${key} with value ${config[key]} in config.json.`);
delete config[key];
modified = true;
}
}
if (config.administratorNames) {
if (!Array.isArray(config.administratorNames)) {
config.administratorNames = [config.administratorNames];