@cryptexlabs/codex-nodejs-common 0.10.14 → 0.10.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptexlabs/codex-nodejs-common",
3
- "version": "0.10.14",
3
+ "version": "0.10.16",
4
4
  "description": "Common code for Codex framework",
5
5
  "main": "lib/src/index.js",
6
6
  "repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
@@ -27,18 +27,20 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@cryptexlabs/authf-data-model": "^0.9.9",
30
+ "@cryptexlabs/merge-anything": "^6.0.3",
30
31
  "@types/express": "4.17.8",
31
32
  "@types/express-serve-static-core": "4.17.24",
32
33
  "@types/i18n": "0.12.0",
33
34
  "@types/joi": "14.3.4",
34
35
  "@types/jsonwebtoken": "8.5.5",
35
36
  "@types/node": "20.11.30",
37
+ "@types/watch": "^1.0.6",
36
38
  "class-transformer": "^0.5.1",
37
39
  "class-validator": "^0.14.1",
38
40
  "dotenv": "8.2.0",
39
41
  "express": "4.17.1",
40
42
  "fastq": "1.13.0",
41
- "glob": "7.2.0",
43
+ "glob": "^11.0.0",
42
44
  "i18n": "0.13.2",
43
45
  "install-peers-cli": "2.2.0",
44
46
  "joi": "17.3.0",
@@ -47,7 +49,8 @@
47
49
  "kafkajs": "2.2.0",
48
50
  "randomstring": "1.2.1",
49
51
  "reflect-metadata": "0.1.13",
50
- "uuid": "8.3.2"
52
+ "uuid": "8.3.2",
53
+ "watch": "^1.0.2"
51
54
  },
52
55
  "devDependencies": {
53
56
  "@nestjs/testing": "8.0.6",
@@ -9,14 +9,29 @@ import { ConsumerTypeEnum } from "./consumer-type.enum";
9
9
  import { JsonSerializableInterface } from "../message";
10
10
  import { TelemetryConfigInterface } from "./telemetry-config.interface";
11
11
  import { LOG_LEVEL } from "./logging-config.interface";
12
+ import { RedisConfigInterface } from "./redis-config.interface";
12
13
  export declare class DefaultConfig implements JsonSerializableInterface<any> {
13
14
  private readonly _clientId;
14
15
  private _appName;
16
+ private _serverConfig;
17
+ private _configUpdateQueue;
18
+ private _monitors;
19
+ private _pathsWatching;
15
20
  private readonly _basePath;
16
21
  private readonly _envName;
17
22
  private _packageVersion;
18
23
  private readonly _appPath;
24
+ private _configChangeLoaderEventHandler;
25
+ private _logger;
19
26
  constructor(basePath: string, appPath: string, _clientId: string, fallbackEnvironment?: string);
27
+ setConfigChangeLoaderEventHandler(eventHandler: () => Promise<void>): void;
28
+ private _onConfigUpdateQueueMessage;
29
+ getServerConfig<C = any>(): C;
30
+ private _loadServerConfig;
31
+ private _startConfigPatchWatch;
32
+ private _loadConfigPath;
33
+ private _loadConfigPatterns;
34
+ private get _hotReload();
20
35
  toJSON(): {
21
36
  fallbackLanguage: LanguageCode;
22
37
  fallbackCountry: CountryCode;
@@ -76,4 +91,5 @@ export declare class DefaultConfig implements JsonSerializableInterface<any> {
76
91
  getMetaType(type: CodexMetaTypeEnum): CodexMetaTypeEnum;
77
92
  get apiPrefixes(): string[];
78
93
  get prettyPrintLogs(): boolean;
94
+ get redis(): RedisConfigInterface;
79
95
  }
@@ -19,13 +19,111 @@ const common_1 = require("@nestjs/common");
19
19
  const elasticsearch_config_1 = require("./elasticsearch-config");
20
20
  const consumer_type_enum_1 = require("./consumer-type.enum");
21
21
  const logging_config_interface_1 = require("./logging-config.interface");
22
+ const path_1 = require("path");
23
+ const yaml = require("js-yaml");
24
+ const glob = require("glob");
25
+ const watch = require("watch");
26
+ const fastq = require("fastq");
27
+ const logger_1 = require("../logger");
28
+ const process = require("process");
29
+ const merge_anything_1 = require("@cryptexlabs/merge-anything");
22
30
  let DefaultConfig = class DefaultConfig {
23
31
  constructor(basePath, appPath, _clientId, fallbackEnvironment) {
24
32
  this._clientId = _clientId;
25
33
  this._basePath = basePath;
26
34
  this._appPath = appPath;
27
35
  this._envName = process.env.ENV_NAME || fallbackEnvironment || "";
36
+ this._logger = new logger_1.CustomLogger("info", this.logLevels);
28
37
  this.setup(basePath, appPath, this._envName);
38
+ this._configUpdateQueue = fastq((path, cb) => {
39
+ this._onConfigUpdateQueueMessage(path).then(() => {
40
+ cb(null);
41
+ });
42
+ }, 1);
43
+ this._monitors = [];
44
+ this._pathsWatching = [];
45
+ }
46
+ setConfigChangeLoaderEventHandler(eventHandler) {
47
+ this._configChangeLoaderEventHandler = eventHandler;
48
+ }
49
+ async _onConfigUpdateQueueMessage(path) {
50
+ this._serverConfig = this._loadServerConfig(false);
51
+ if (this._configChangeLoaderEventHandler) {
52
+ await this._configChangeLoaderEventHandler();
53
+ }
54
+ }
55
+ getServerConfig() {
56
+ if (!this._serverConfig) {
57
+ this._serverConfig = this._loadServerConfig(true);
58
+ }
59
+ return this._serverConfig;
60
+ }
61
+ _loadServerConfig(startWatchers) {
62
+ const serverConfigPath = process.env.SERVER_CONFIG_PATH || `${this._appPath}/config/server.yaml`;
63
+ let serverConfig = {};
64
+ if (fs.existsSync(serverConfigPath)) {
65
+ serverConfig = this._loadConfigPath(serverConfigPath);
66
+ if (startWatchers) {
67
+ this._startConfigPatchWatch(serverConfigPath);
68
+ }
69
+ }
70
+ if (process.env.SERVER_CONFIG_PATTERN) {
71
+ serverConfig = this._loadConfigPatterns(serverConfig, startWatchers);
72
+ }
73
+ this._logger.debug(`Server Config`, { serverConfig });
74
+ return serverConfig;
75
+ }
76
+ _startConfigPatchWatch(path) {
77
+ if (this._hotReload) {
78
+ this._logger.debug(`Starting watch for path ${path}`);
79
+ const parent = (0, path_1.dirname)(path);
80
+ if (!this._monitors.includes(parent)) {
81
+ this._monitors.push(parent);
82
+ this._logger.debug(`Creating monitor for directory ${parent}`);
83
+ watch.createMonitor((0, path_1.dirname)(path), {}, (monitor) => {
84
+ monitor.on("changed", (f, curr, prev) => {
85
+ if (typeof f === "string") {
86
+ if (this._pathsWatching.includes(f)) {
87
+ this._logger.debug(`Config changed for path ${f}. Queueing update`);
88
+ this._configUpdateQueue.push(f);
89
+ }
90
+ }
91
+ });
92
+ });
93
+ }
94
+ if (!this._pathsWatching.includes(path)) {
95
+ this._pathsWatching.push(path);
96
+ }
97
+ }
98
+ }
99
+ _loadConfigPath(serverConfigPath) {
100
+ const updatedServerConfig = yaml.load(fs.readFileSync(serverConfigPath).toString());
101
+ if (typeof updatedServerConfig !== "object") {
102
+ throw new Error(`Invalid config in file ${serverConfigPath} with env variable SERVER_CONFIG_PATH or default path: ${this._appPath}/config/server.yaml`);
103
+ }
104
+ return updatedServerConfig;
105
+ }
106
+ _loadConfigPatterns(serverConfig, startWatchers) {
107
+ const paths = glob.sync(process.env.SERVER_CONFIG_PATTERN);
108
+ this._logger.debug(`paths`, { paths });
109
+ let serverConfigUpdated = serverConfig;
110
+ for (const path of paths) {
111
+ if (!path.includes(".yaml")) {
112
+ throw new Error(`Invalid path ${path} found for pattern ${process.env.SERVER_CONFIG_PATTERN} with env variable SERVER_CONFIG_PATTERN`);
113
+ }
114
+ const c = yaml.load(fs.readFileSync(path).toString());
115
+ if (typeof c !== "object") {
116
+ throw new Error(`Invalid config in file ${path}`);
117
+ }
118
+ serverConfigUpdated = (0, merge_anything_1.merge)(c, serverConfigUpdated);
119
+ if (startWatchers) {
120
+ this._startConfigPatchWatch(path);
121
+ }
122
+ }
123
+ return serverConfigUpdated;
124
+ }
125
+ get _hotReload() {
126
+ return process.env.SERVER_CONFIG_HOT_RELOAD !== "false";
29
127
  }
30
128
  toJSON() {
31
129
  return {
@@ -203,6 +301,13 @@ let DefaultConfig = class DefaultConfig {
203
301
  get prettyPrintLogs() {
204
302
  return process.env.PRETTY_PRINT_LOGS !== "false";
205
303
  }
304
+ get redis() {
305
+ return {
306
+ enabled: process.env.REDIS_ENABLED === "true",
307
+ host: process.env.REDIS_HOST ? process.env.REDIS_HOST : "localhost",
308
+ port: parseInt(process.env.REDIS_PORT ? process.env.REDIS_PORT : "6379", 10),
309
+ };
310
+ }
206
311
  };
207
312
  exports.DefaultConfig = DefaultConfig;
208
313
  exports.DefaultConfig = DefaultConfig = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"default-config.js","sourceRoot":"","sources":["../../../src/config/default-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default-config.js","sourceRoot":"","sources":["../../../src/config/default-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { SwitchConfigInterface } from "./switch-config.interface";
2
+ import { HostConfigInterface } from "./host-config.interface";
3
+ export interface RedisConfigInterface extends HostConfigInterface, SwitchConfigInterface {
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=redis-config.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-config.interface.js","sourceRoot":"","sources":["../../../src/config/redis-config.interface.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptexlabs/codex-nodejs-common",
3
- "version": "0.10.14",
3
+ "version": "0.10.16",
4
4
  "description": "Common code for Codex framework",
5
5
  "main": "lib/src/index.js",
6
6
  "repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
@@ -27,18 +27,20 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@cryptexlabs/authf-data-model": "^0.9.9",
30
+ "@cryptexlabs/merge-anything": "^6.0.3",
30
31
  "@types/express": "4.17.8",
31
32
  "@types/express-serve-static-core": "4.17.24",
32
33
  "@types/i18n": "0.12.0",
33
34
  "@types/joi": "14.3.4",
34
35
  "@types/jsonwebtoken": "8.5.5",
35
36
  "@types/node": "20.11.30",
37
+ "@types/watch": "^1.0.6",
36
38
  "class-transformer": "^0.5.1",
37
39
  "class-validator": "^0.14.1",
38
40
  "dotenv": "8.2.0",
39
41
  "express": "4.17.1",
40
42
  "fastq": "1.13.0",
41
- "glob": "7.2.0",
43
+ "glob": "^11.0.0",
42
44
  "i18n": "0.13.2",
43
45
  "install-peers-cli": "2.2.0",
44
46
  "joi": "17.3.0",
@@ -47,7 +49,8 @@
47
49
  "kafkajs": "2.2.0",
48
50
  "randomstring": "1.2.1",
49
51
  "reflect-metadata": "0.1.13",
50
- "uuid": "8.3.2"
52
+ "uuid": "8.3.2",
53
+ "watch": "^1.0.2"
51
54
  },
52
55
  "devDependencies": {
53
56
  "@nestjs/testing": "8.0.6",
@@ -20,15 +20,32 @@ import { ConsumerTypeEnum } from "./consumer-type.enum";
20
20
  import { JsonSerializableInterface } from "../message";
21
21
  import { TelemetryConfigInterface } from "./telemetry-config.interface";
22
22
  import { LOG_LEVEL, DEFAULT_LOG_LEVELS } from "./logging-config.interface";
23
+ import { dirname } from "path";
24
+ import * as yaml from "js-yaml";
25
+ import * as glob from "glob";
26
+ import * as watch from "watch";
27
+ import * as fastq from "fastq";
28
+ import { CustomLogger } from "../logger";
29
+ import * as process from "process";
30
+ import { merge } from "@cryptexlabs/merge-anything";
31
+ import { EndpointConfigInterface } from "./endpoint-config.interface";
32
+ import { RedisConfigInterface } from "./redis-config.interface";
23
33
 
24
34
  @Injectable()
25
35
  export class DefaultConfig implements JsonSerializableInterface<any> {
26
36
  private _appName: string;
27
37
 
38
+ private _serverConfig;
39
+ private _configUpdateQueue;
40
+ private _monitors: string[];
41
+ private _pathsWatching: string[];
42
+
28
43
  private readonly _basePath: string;
29
44
  private readonly _envName: string;
30
45
  private _packageVersion: string;
31
46
  private readonly _appPath: string;
47
+ private _configChangeLoaderEventHandler: () => Promise<void>;
48
+ private _logger: CustomLogger;
32
49
 
33
50
  constructor(
34
51
  basePath: string,
@@ -39,7 +56,122 @@ export class DefaultConfig implements JsonSerializableInterface<any> {
39
56
  this._basePath = basePath;
40
57
  this._appPath = appPath;
41
58
  this._envName = process.env.ENV_NAME || fallbackEnvironment || "";
59
+ this._logger = new CustomLogger("info", this.logLevels);
42
60
  this.setup(basePath, appPath, this._envName);
61
+
62
+ this._configUpdateQueue = fastq((path, cb) => {
63
+ this._onConfigUpdateQueueMessage(path).then(() => {
64
+ cb(null);
65
+ });
66
+ }, 1);
67
+ this._monitors = [];
68
+ this._pathsWatching = [];
69
+ }
70
+
71
+ setConfigChangeLoaderEventHandler(eventHandler: () => Promise<void>): void {
72
+ this._configChangeLoaderEventHandler = eventHandler;
73
+ }
74
+
75
+ private async _onConfigUpdateQueueMessage(path) {
76
+ this._serverConfig = this._loadServerConfig(false);
77
+ if (this._configChangeLoaderEventHandler) {
78
+ await this._configChangeLoaderEventHandler();
79
+ }
80
+ }
81
+
82
+ public getServerConfig<C = any>(): C {
83
+ if (!this._serverConfig) {
84
+ this._serverConfig = this._loadServerConfig(true);
85
+ }
86
+ return this._serverConfig;
87
+ }
88
+
89
+ private _loadServerConfig(startWatchers: boolean): any {
90
+ const serverConfigPath =
91
+ process.env.SERVER_CONFIG_PATH || `${this._appPath}/config/server.yaml`;
92
+
93
+ let serverConfig = {} as any;
94
+
95
+ if (fs.existsSync(serverConfigPath)) {
96
+ serverConfig = this._loadConfigPath(serverConfigPath);
97
+ if (startWatchers) {
98
+ this._startConfigPatchWatch(serverConfigPath);
99
+ }
100
+ }
101
+
102
+ if (process.env.SERVER_CONFIG_PATTERN) {
103
+ serverConfig = this._loadConfigPatterns(serverConfig, startWatchers);
104
+ }
105
+
106
+ this._logger.debug(`Server Config`, { serverConfig } as any);
107
+
108
+ return serverConfig;
109
+ }
110
+
111
+ private _startConfigPatchWatch(path: string) {
112
+ if (this._hotReload) {
113
+ this._logger.debug(`Starting watch for path ${path}`);
114
+ const parent = dirname(path);
115
+ if (!this._monitors.includes(parent)) {
116
+ this._monitors.push(parent);
117
+ this._logger.debug(`Creating monitor for directory ${parent}`);
118
+ watch.createMonitor(dirname(path), {}, (monitor) => {
119
+ monitor.on("changed", (f, curr, prev) => {
120
+ if (typeof f === "string") {
121
+ if (this._pathsWatching.includes(f)) {
122
+ this._logger.debug(
123
+ `Config changed for path ${f}. Queueing update`
124
+ );
125
+ this._configUpdateQueue.push(f);
126
+ }
127
+ }
128
+ });
129
+ });
130
+ }
131
+ if (!this._pathsWatching.includes(path)) {
132
+ this._pathsWatching.push(path);
133
+ }
134
+ }
135
+ }
136
+
137
+ private _loadConfigPath(serverConfigPath: string): any {
138
+ const updatedServerConfig = yaml.load(
139
+ fs.readFileSync(serverConfigPath).toString()
140
+ );
141
+ if (typeof updatedServerConfig !== "object") {
142
+ throw new Error(
143
+ `Invalid config in file ${serverConfigPath} with env variable SERVER_CONFIG_PATH or default path: ${this._appPath}/config/server.yaml`
144
+ );
145
+ }
146
+ return updatedServerConfig as any;
147
+ }
148
+
149
+ private _loadConfigPatterns(serverConfig: any, startWatchers: boolean) {
150
+ const paths = glob.sync(process.env.SERVER_CONFIG_PATTERN);
151
+ this._logger.debug(`paths`, { paths } as any);
152
+ let serverConfigUpdated = serverConfig;
153
+ for (const path of paths) {
154
+ if (!path.includes(".yaml")) {
155
+ throw new Error(
156
+ `Invalid path ${path} found for pattern ${process.env.SERVER_CONFIG_PATTERN} with env variable SERVER_CONFIG_PATTERN`
157
+ );
158
+ }
159
+
160
+ const c = yaml.load(fs.readFileSync(path).toString()) as any;
161
+ if (typeof c !== "object") {
162
+ throw new Error(`Invalid config in file ${path}`);
163
+ }
164
+ serverConfigUpdated = merge(c, serverConfigUpdated);
165
+
166
+ if (startWatchers) {
167
+ this._startConfigPatchWatch(path);
168
+ }
169
+ }
170
+ return serverConfigUpdated;
171
+ }
172
+
173
+ private get _hotReload() {
174
+ return process.env.SERVER_CONFIG_HOT_RELOAD !== "false";
43
175
  }
44
176
 
45
177
  public toJSON() {
@@ -268,7 +400,10 @@ export class DefaultConfig implements JsonSerializableInterface<any> {
268
400
 
269
401
  public getMetaType(type: CodexMetaTypeEnum): CodexMetaTypeEnum {
270
402
  return (this.overrideOrganization
271
- ? type.replace(/^cryptexlabs\./, `${this.overrideOrganization}.`)
403
+ ? (type as string).replace(
404
+ /^cryptexlabs\./,
405
+ `${this.overrideOrganization}.`
406
+ )
272
407
  : type) as CodexMetaTypeEnum;
273
408
  }
274
409
 
@@ -281,4 +416,15 @@ export class DefaultConfig implements JsonSerializableInterface<any> {
281
416
  public get prettyPrintLogs(): boolean {
282
417
  return process.env.PRETTY_PRINT_LOGS !== "false";
283
418
  }
419
+
420
+ get redis(): RedisConfigInterface {
421
+ return {
422
+ enabled: process.env.REDIS_ENABLED === "true",
423
+ host: process.env.REDIS_HOST ? process.env.REDIS_HOST : "localhost",
424
+ port: parseInt(
425
+ process.env.REDIS_PORT ? process.env.REDIS_PORT : "6379",
426
+ 10
427
+ ),
428
+ };
429
+ }
284
430
  }
@@ -0,0 +1,6 @@
1
+ import { SwitchConfigInterface } from "./switch-config.interface";
2
+ import { HostConfigInterface } from "./host-config.interface";
3
+
4
+ export interface RedisConfigInterface
5
+ extends HostConfigInterface,
6
+ SwitchConfigInterface {}
@@ -19,6 +19,10 @@ jest.mock("fs", () => ({
19
19
  existsSync: jest.fn().mockImplementation((file) => file !== "/tmp/healthz"),
20
20
  }));
21
21
 
22
+ jest.mock("glob", () => ({
23
+ sync: jest.fn(),
24
+ }));
25
+
22
26
  describe("HealthzService", () => {
23
27
  let service: HealthzService;
24
28
  let config;