diff --git a/src/common/config.ts b/src/common/config.ts index 762a04b..d595780 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -3,13 +3,27 @@ import {Config} from "./types"; const fs = require("fs"); export class ConfigUtil { - configPath: string; + private readonly configPath: string; + private config: Config | null = null; constructor(configPath: string) { this.configPath = configPath; } getConfig(): Config { + if (this.config) { + return this.config; + } + + this.reloadConfig(); + } + + setConfig(config: Config) { + this.config = config; + fs.writeFileSync(this.configPath, JSON.stringify(config, null, 2), "utf-8"); + } + + reloadConfig() { let defaultConfig: Config = { httpPort: 3000, httpHosts: [], @@ -20,36 +34,35 @@ export class ConfigUtil { debug: false, log: false, reportSelfMessage: false - } + }; + if (!fs.existsSync(this.configPath)) { return defaultConfig } else { const data = fs.readFileSync(this.configPath, "utf-8"); let jsonData: Config = defaultConfig; try { - jsonData = JSON.parse(data) + jsonData = JSON.parse(data); } catch (e) {} + if (!jsonData.httpHosts) { - jsonData.httpHosts = [] + jsonData.httpHosts = []; } if (!jsonData.wsHosts) { - jsonData.wsHosts = [] + jsonData.wsHosts = []; } if (!jsonData.wsPort) { - jsonData.wsPort = 3001 + jsonData.wsPort = 3001; } if (!jsonData.httpPort) { - jsonData.httpPort = 3000 + jsonData.httpPort = 3000; } if (!jsonData.token) { - jsonData.token = "" + jsonData.token = ""; } + return jsonData; } } - - setConfig(config: Config) { - fs.writeFileSync(this.configPath, JSON.stringify(config, null, 2), "utf-8") - } }