返回提交历史
Modified
src/services/configService.ts
+36
-1
Modified
src/services/configWatcherService.ts
+14
-1
XFEstudio/XFESpaceNinjaServer
chore: automatically remove deleted options from config.json (#2689)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2689 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
895e76b4
代码差异
2 个文件
+50
-2
@@ -4,7 +4,7 @@ import { repoDir } from "@/src/helpers/pathHelper";
4
4
import { args } from "@/src/helpers/commandLineArguments";
5
5
import { Inbox } from "@/src/models/inboxModel";
6
6
7
export interface IConfig {
7
export interface IConfig extends IConfigRemovedOptions {
8
8
mongodbUrl: string;
9
9
logger: {
10
10
files: boolean;
@@ -92,6 +92,41 @@ export interface IConfig {
92
92
};
93
93
}
94
94
95
export const configRemovedOptionsKeys = [
96
"infiniteCredits",
97
"infinitePlatinum",
98
"infiniteEndo",
99
"infiniteRegalAya",
100
"infiniteHelminthMaterials",
101
"claimingBlueprintRefundsIngredients",
102
"dontSubtractPurchaseCreditCost",
103
"dontSubtractPurchasePlatinumCost",
104
"dontSubtractPurchaseItemCost",
105
"dontSubtractPurchaseStandingCost",
106
"dontSubtractVoidTraces",
107
"dontSubtractConsumables",
108
"universalPolarityEverywhere",
109
"unlockDoubleCapacityPotatoesEverywhere",
110
"unlockExilusEverywhere",
111
"unlockArcanesEverywhere",
112
"noDailyStandingLimits",
113
"noDailyFocusLimit",
114
"noArgonCrystalDecay",
115
"noMasteryRankUpCooldown",
116
"noVendorPurchaseLimits",
117
"noDeathMarks",
118
"noKimCooldowns",
119
"syndicateMissionsRepeatable",
120
"instantFinishRivenChallenge",
121
"instantResourceExtractorDrones",
122
"noResourceExtractorDronesDamage",
123
"skipClanKeyCrafting"
124
] as const;
125
126
type IConfigRemovedOptions = {
127
[K in (typeof configRemovedOptionsKeys)[number]]?: boolean;
128
};
129
95
130
export const configPath = path.join(repoDir, args.configPath ?? "config.json");
96
131
97
132
export const config: IConfig = {
@@ -1,6 +1,12 @@
1
1
import chokidar from "chokidar";
2
2
import { logger } from "@/src/utils/logger";
3
import { config, configPath, loadConfig, syncConfigWithDatabase } from "@/src/services/configService";
3
import {
4
config,
5
configPath,
6
configRemovedOptionsKeys,
7
loadConfig,
8
syncConfigWithDatabase
9
} from "@/src/services/configService";
4
10
import { saveConfig, shouldReloadConfig } from "@/src/services/configWriterService";
5
11
import { getWebPorts, startWebServer, stopWebServer } from "@/src/services/webService";
6
12
import { sendWsBroadcast } from "@/src/services/wsService";
@@ -34,6 +40,13 @@ chokidar.watch(configPath).on("change", () => {
34
40
35
41
export const validateConfig = (): void => {
36
42
let modified = false;
43
for (const key of configRemovedOptionsKeys) {
44
if (config[key] !== undefined) {
45
logger.debug(`Spotted removed option ${key} with value ${config[key]} in config.json.`);
46
delete config[key];
47
modified = true;
48
}
49
}
37
50
if (config.administratorNames) {
38
51
if (!Array.isArray(config.administratorNames)) {
39
52
config.administratorNames = [config.administratorNames];