From b6e8db924983cb22094016dec49570f583282c1f Mon Sep 17 00:00:00 2001 From: Pavel Gnedov Date: Sun, 1 May 2022 22:03:44 +0700 Subject: [PATCH] Config loader fixed --- .gitignore | 3 +- configs/main-config.jsonc.dist | 39 +++++++++++++++++++ libs/event-emitter/src/configs/main-config.ts | 14 +++++-- libs/event-emitter/src/utils/random.ts | 2 +- package.json | 1 + yarn.lock | 10 ++++- 6 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 configs/main-config.jsonc.dist diff --git a/.gitignore b/.gitignore index 22f55ad..42a9d9d 100644 --- a/.gitignore +++ b/.gitignore @@ -32,4 +32,5 @@ lerna-debug.log* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json -!.vscode/extensions.json \ No newline at end of file +!.vscode/extensions.json +configs/main-config.jsonc diff --git a/configs/main-config.jsonc.dist b/configs/main-config.jsonc.dist new file mode 100644 index 0000000..09d4d89 --- /dev/null +++ b/configs/main-config.jsonc.dist @@ -0,0 +1,39 @@ +{ + "mailListener": { + "issueNumberParser": "\\b(?<=#)\\d+\\b", + "imapSimpleConfig": { + "imap": { + "user": "", + "password": "", + "host": "", + "port": 143, + // tls: true, + "autotls": "always", + "authTimeout": 5000 + } + }, + "updateInterval": 180000, // 3 min + "boxName": "INBOX" + }, + "rssListener": { + "subscriptions": [ + { + "url": "", + "issueNumberParser": "\\b(?<=#)\\d+\\b" + } + ], + "updateInterval": 600000 // 10 min + }, + "issueChangesQueue": { + "updateInterval": 5000, // 5 sec + "itemsLimit": 3 + }, + "redmineUrlPrefix": "", + "webhooks": [ + { + "url": "", + "apiKeyName": "", + "apiKeyValue": "" + } + ] +} \ No newline at end of file diff --git a/libs/event-emitter/src/configs/main-config.ts b/libs/event-emitter/src/configs/main-config.ts index 7f75afa..7102eba 100644 --- a/libs/event-emitter/src/configs/main-config.ts +++ b/libs/event-emitter/src/configs/main-config.ts @@ -1,10 +1,18 @@ import { readFileSync } from 'fs'; import { join } from 'path'; import { parse } from 'jsonc-parser'; -import { MainConfigModel } from "../models/main-config-model"; +import { MainConfigModel } from '../models/main-config-model'; export default (): MainConfigModel => { - const rawData = readFileSync(join(__dirname, '..', '..', 'configs', 'main-config.jsonc'), {encoding: "utf-8"}); + const userDefinedConfigPath = + process.env['REDMINE_ISSUE_EVENT_EMITTER_CONFIG_PATH']; + const defaultConfigPath = 'configs'; + const configPath = userDefinedConfigPath || defaultConfigPath; + + const rawData = readFileSync(join(configPath, 'main-config.jsonc'), { + encoding: 'utf-8', + }); + const data: MainConfigModel = parse(rawData); return data; -}; \ No newline at end of file +}; diff --git a/libs/event-emitter/src/utils/random.ts b/libs/event-emitter/src/utils/random.ts index 838cf0f..df496f6 100644 --- a/libs/event-emitter/src/utils/random.ts +++ b/libs/event-emitter/src/utils/random.ts @@ -2,4 +2,4 @@ export function random(min: number, max: number): number { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min)) + min; -} \ No newline at end of file +} diff --git a/package.json b/package.json index a2c4ff0..5239888 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@nestjs/config": "^2.0.0", "@nestjs/core": "^8.0.0", "@nestjs/platform-express": "^8.0.0", + "@nestjs/platform-socket.io": "^8.4.4", "@nestjs/serve-static": "^2.2.2", "@nestjs/websockets": "^8.4.4", "imap-simple": "^5.1.0", diff --git a/yarn.lock b/yarn.lock index a84f0d7..e2ffdcc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -659,6 +659,14 @@ multer "1.4.4" tslib "2.3.1" +"@nestjs/platform-socket.io@^8.4.4": + version "8.4.4" + resolved "https://registry.yarnpkg.com/@nestjs/platform-socket.io/-/platform-socket.io-8.4.4.tgz#6fe10205387271b80027dd48cf9a986c1c397635" + integrity sha512-+/OE5W8J8K7oqNKBYAKa2e4c6OjKOsYN8XL0tBRk67yhB5/gtO93MV7IomAAVkOXPGi8u3sClxXxbSN3o5jywA== + dependencies: + socket.io "4.4.1" + tslib "2.3.1" + "@nestjs/schematics@^8.0.0", "@nestjs/schematics@^8.0.3": version "8.0.9" resolved "https://registry.yarnpkg.com/@nestjs/schematics/-/schematics-8.0.9.tgz#796e06c14ba43930abb12cde0e0144b16925a6a3" @@ -4454,7 +4462,7 @@ socket.io-parser@~4.0.4: component-emitter "~1.3.0" debug "~4.3.1" -socket.io@^4.4.1: +socket.io@4.4.1, socket.io@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.4.1.tgz#cd6de29e277a161d176832bb24f64ee045c56ab8" integrity sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==