@mayhem93/nexxus-core-lib 0.0.1 → 0.0.3

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.
Files changed (87) hide show
  1. package/dist-cjs/common/BuiltinSchemas.js +24 -5
  2. package/dist-cjs/common/BuiltinSchemas.js.map +1 -1
  3. package/dist-cjs/common/FilterQuery.js +5 -18
  4. package/dist-cjs/common/FilterQuery.js.map +1 -1
  5. package/dist-cjs/common/InferModel.js +3 -0
  6. package/dist-cjs/common/InferModel.js.map +1 -0
  7. package/dist-cjs/common/JsonPatch.js +42 -225
  8. package/dist-cjs/common/JsonPatch.js.map +1 -1
  9. package/dist-cjs/common/SchemaValidator.js +100 -29
  10. package/dist-cjs/common/SchemaValidator.js.map +1 -1
  11. package/dist-cjs/index.js +4 -0
  12. package/dist-cjs/index.js.map +1 -1
  13. package/dist-cjs/lib/BaseService.js +6 -6
  14. package/dist-cjs/lib/BaseService.js.map +1 -1
  15. package/dist-cjs/lib/ConfigManager.js +56 -25
  16. package/dist-cjs/lib/ConfigManager.js.map +1 -1
  17. package/dist-cjs/lib/ConfigProvider.js +14 -1
  18. package/dist-cjs/lib/ConfigProvider.js.map +1 -1
  19. package/dist-cjs/lib/Exceptions.js +22 -4
  20. package/dist-cjs/lib/Exceptions.js.map +1 -1
  21. package/dist-cjs/lib/Logger.js +138 -65
  22. package/dist-cjs/lib/Logger.js.map +1 -1
  23. package/dist-cjs/lib/ServiceResolver.js +57 -0
  24. package/dist-cjs/lib/ServiceResolver.js.map +1 -0
  25. package/dist-cjs/models/AppModel.js +17 -3
  26. package/dist-cjs/models/AppModel.js.map +1 -1
  27. package/dist-cjs/models/Application.js +51 -12
  28. package/dist-cjs/models/Application.js.map +1 -1
  29. package/dist-cjs/models/BaseModel.js.map +1 -1
  30. package/dist-cjs/models/BuiltinModel.js +8 -0
  31. package/dist-cjs/models/BuiltinModel.js.map +1 -0
  32. package/dist-cjs/models/User.js +12 -3
  33. package/dist-cjs/models/User.js.map +1 -1
  34. package/dist-esm/common/BuiltinSchemas.js +23 -4
  35. package/dist-esm/common/BuiltinSchemas.js.map +1 -1
  36. package/dist-esm/common/FilterQuery.js +6 -19
  37. package/dist-esm/common/FilterQuery.js.map +1 -1
  38. package/dist-esm/common/InferModel.js +2 -0
  39. package/dist-esm/common/InferModel.js.map +1 -0
  40. package/dist-esm/common/JsonPatch.js +44 -227
  41. package/dist-esm/common/JsonPatch.js.map +1 -1
  42. package/dist-esm/common/SchemaValidator.js +100 -29
  43. package/dist-esm/common/SchemaValidator.js.map +1 -1
  44. package/dist-esm/index.js +4 -0
  45. package/dist-esm/index.js.map +1 -1
  46. package/dist-esm/lib/BaseService.js +8 -8
  47. package/dist-esm/lib/BaseService.js.map +1 -1
  48. package/dist-esm/lib/ConfigManager.js +56 -25
  49. package/dist-esm/lib/ConfigManager.js.map +1 -1
  50. package/dist-esm/lib/ConfigProvider.js +14 -1
  51. package/dist-esm/lib/ConfigProvider.js.map +1 -1
  52. package/dist-esm/lib/Exceptions.js +20 -3
  53. package/dist-esm/lib/Exceptions.js.map +1 -1
  54. package/dist-esm/lib/Logger.js +139 -66
  55. package/dist-esm/lib/Logger.js.map +1 -1
  56. package/dist-esm/lib/ServiceResolver.js +52 -0
  57. package/dist-esm/lib/ServiceResolver.js.map +1 -0
  58. package/dist-esm/models/AppModel.js +17 -3
  59. package/dist-esm/models/AppModel.js.map +1 -1
  60. package/dist-esm/models/Application.js +52 -13
  61. package/dist-esm/models/Application.js.map +1 -1
  62. package/dist-esm/models/BaseModel.js.map +1 -1
  63. package/dist-esm/models/BuiltinModel.js +4 -0
  64. package/dist-esm/models/BuiltinModel.js.map +1 -0
  65. package/dist-esm/models/User.js +11 -2
  66. package/dist-esm/models/User.js.map +1 -1
  67. package/dist-types/common/BuiltinSchemas.d.ts +59 -5
  68. package/dist-types/common/FilterQuery.d.ts +3 -11
  69. package/dist-types/common/InferModel.d.ts +29 -0
  70. package/dist-types/common/JsonPatch.d.ts +4 -45
  71. package/dist-types/common/ModelTypes.d.ts +1 -0
  72. package/dist-types/common/QueuePayloads.d.ts +48 -26
  73. package/dist-types/common/SchemaValidator.d.ts +42 -2
  74. package/dist-types/index.d.ts +4 -0
  75. package/dist-types/lib/BaseService.d.ts +51 -1
  76. package/dist-types/lib/ConfigManager.d.ts +50 -13
  77. package/dist-types/lib/ConfigProvider.d.ts +6 -0
  78. package/dist-types/lib/Exceptions.d.ts +15 -2
  79. package/dist-types/lib/Logger.d.ts +84 -14
  80. package/dist-types/lib/ServiceResolver.d.ts +23 -0
  81. package/dist-types/models/AppModel.d.ts +31 -5
  82. package/dist-types/models/Application.d.ts +36 -8
  83. package/dist-types/models/BaseModel.d.ts +14 -12
  84. package/dist-types/models/BuiltinModel.d.ts +3 -0
  85. package/dist-types/models/User.d.ts +15 -13
  86. package/package.json +4 -4
  87. package/src/schemas/winston-logger.schema.json +51 -6
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaValidator.js","sourceRoot":"","sources":["../../src/common/SchemaValidator.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,qBAAqB;IACzB,MAAM,CAAC,mBAAmB,CAAC,cAAmC,EAAE,gBAAwC;QAC7G,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAEzC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,KAAK,CAAC;YACf,CAAC;YAED,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACtB,KAAK,QAAQ;oBACX,IAAI,OAAO,UAAU,KAAK,QAAQ;wBAAE,OAAO,KAAK,CAAC;oBACjD,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,OAAO,UAAU,KAAK,QAAQ;wBAAE,OAAO,KAAK,CAAC;oBACjD,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,OAAO,UAAU,KAAK,SAAS;wBACjC,OAAO,KAAK,CAAC;oBACf,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;wBAAE,OAAO,KAAK,CAAC;oBAC9E,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;wBAAE,OAAO,KAAK,CAAC;oBAC7C,MAAM;gBACR;oBACE,OAAO,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"SchemaValidator.js","sourceRoot":"","sources":["../../src/common/SchemaValidator.ts"],"names":[],"mappings":"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"}
package/dist-esm/index.js CHANGED
@@ -3,10 +3,14 @@ export * from "./lib/ConfigProvider";
3
3
  export * from "./lib/ConfigManager";
4
4
  export * from "./lib/BaseService";
5
5
  export * from "./lib/Logger";
6
+ export * from "./lib/ServiceResolver";
6
7
  export * from "./common/QueuePayloads";
7
8
  export * from "./common/JsonPatch";
8
9
  export * from "./common/FilterQuery";
10
+ export * from "./common/InferModel";
11
+ export * from "./common/SchemaValidator";
9
12
  export * from "./models/BaseModel";
13
+ export * from "./models/BuiltinModel";
10
14
  export * from './common/BuiltinSchemas';
11
15
  export * from "./models/AppModel";
12
16
  export * from "./models/Application";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAE7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAE9B,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AAEtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAE9B,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from "tslib";
2
- import { FatalErrorException } from "./Exceptions";
3
- import * as fs from "node:fs";
2
+ import { FatalErrorException } from './Exceptions';
3
+ import * as fs from 'node:fs';
4
4
  import { EventEmitter } from 'node:events';
5
5
  function frozen(target, propertyKey) {
6
6
  Object.defineProperty(target, propertyKey, {
@@ -34,6 +34,7 @@ export class NexxusBaseService extends TypedEventEmitter {
34
34
  config;
35
35
  static envVars;
36
36
  static cliArgs;
37
+ static configRootKey;
37
38
  static schemaPath;
38
39
  static schemaContents;
39
40
  constructor(config) {
@@ -56,18 +57,17 @@ export class NexxusBaseService extends TypedEventEmitter {
56
57
  if (!this.schemaPath) {
57
58
  throw new FatalErrorException(`Schema path not set for ${this.name} class.`);
58
59
  }
60
+ if (!this.configRootKey) {
61
+ throw new FatalErrorException(`configRootKey not set for ${this.name} class. ` +
62
+ 'This static must declare the top-level key under which this service\'s config sits in the merged root config.');
63
+ }
59
64
  if (!this.schemaContents) {
60
65
  this.schemaContents = fs.readFileSync(this.schemaPath, 'utf-8');
61
66
  }
62
67
  const definition = JSON.parse(this.schemaContents);
63
- if (!definition.$comment) {
64
- throw new FatalErrorException(`Schema for ${this.name} is missing $comment field. ` +
65
- 'This field is required to specify where in the main config this specific configuration ' +
66
- 'should be placed.');
67
- }
68
68
  return {
69
69
  name: this.name,
70
- where: definition.$comment,
70
+ where: this.configRootKey,
71
71
  definition,
72
72
  required: true
73
73
  };
@@ -1 +1 @@
1
- {"version":3,"file":"BaseService.js","sourceRoot":"","sources":["../../src/lib/BaseService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseService.js","sourceRoot":"","sources":["../../src/lib/BaseService.ts"],"names":[],"mappings":"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"}
@@ -6,17 +6,22 @@ import deepMerge from "deepmerge";
6
6
  import * as fs from "node:fs";
7
7
  import * as path from "node:path";
8
8
  export class NexxusConfigManager {
9
- static CONF_FILE_NAME = "nexxus.conf.json";
9
+ static CONF_FILE_NAME = 'nexxus.conf.json';
10
+ static DEFAULT_CONF_PATH = '/etc/nexxus';
10
11
  jsonSchema;
11
12
  envVarsSpecs = [];
12
13
  cliArgsSpecs = [];
13
14
  data = {};
14
15
  configProviders = [];
15
16
  customProviders = [];
16
- constructor(confFile) {
17
+ registeredServices = new Set();
18
+ dataInitialized = false;
19
+ hasNewRegistrations = false;
20
+ constructor(configFilePath) {
17
21
  const schemaPath = path.join(__dirname, "../../src/schemas/root.schema.json");
22
+ const resolvedConfPath = path.resolve(configFilePath || process.env.NXX_CONF_PATH || path.join(NexxusConfigManager.DEFAULT_CONF_PATH, NexxusConfigManager.CONF_FILE_NAME));
18
23
  this.jsonSchema = JSON.parse(fs.readFileSync(schemaPath, 'utf-8'));
19
- this.configProviders.push(new NexxusFileConfigProvider(path.join(process.cwd(), confFile ?? NexxusConfigManager.CONF_FILE_NAME)));
24
+ this.configProviders.push(new NexxusFileConfigProvider(resolvedConfPath));
20
25
  this.configProviders.push(new NexxusEnvVarsConfigProvider());
21
26
  this.configProviders.push(new NexxusCliArgConfigProvider());
22
27
  }
@@ -37,19 +42,30 @@ export class NexxusConfigManager {
37
42
  this.jsonSchema.required.push(def.where);
38
43
  }
39
44
  }
40
- validateServices(svcs) {
41
- for (const NxxSvc of svcs) {
42
- this.addCliArgsToSpec(NxxSvc.cliArgConfig());
43
- this.addEnvVarsToSpec(NxxSvc.envVarConfig());
44
- this.addJsonSchemaDef(NxxSvc.schema());
45
+ registerService(svc) {
46
+ if (this.registeredServices.has(svc.name)) {
47
+ return;
45
48
  }
46
- this.validate();
47
- }
48
- addCliArgsToSpec(cliArgSpec) {
49
- this.cliArgsSpecs.push(cliArgSpec);
49
+ const schemaDef = svc.schema();
50
+ const className = svc.name;
51
+ const configRootKey = schemaDef.where;
52
+ this.cliArgsSpecs.push({ className, configRootKey, specs: svc.cliArgConfig() });
53
+ this.envVarsSpecs.push({ className, configRootKey, specs: svc.envVarConfig() });
54
+ this.addJsonSchemaDef(schemaDef);
55
+ this.registeredServices.add(className);
56
+ this.hasNewRegistrations = true;
50
57
  }
51
- addEnvVarsToSpec(envVarSpec) {
52
- this.envVarsSpecs.push(envVarSpec);
58
+ async validateServices(svcs) {
59
+ if (svcs) {
60
+ for (const svc of svcs) {
61
+ this.registerService(svc);
62
+ }
63
+ }
64
+ if (!this.hasNewRegistrations) {
65
+ return;
66
+ }
67
+ await this.validate();
68
+ this.hasNewRegistrations = false;
53
69
  }
54
70
  populateFromCliArgs() {
55
71
  if (this.cliArgsSpecs.length === 0) {
@@ -61,9 +77,9 @@ export class NexxusConfigManager {
61
77
  spec.specs.forEach((arg) => {
62
78
  if (collectedNames.has(arg.name)) {
63
79
  throw new InvalidConfigException(`Duplicate CLI argument name: "${arg.name}".
64
- Defined first by source: "${collectedNames.get(arg.name)}" and now by source: "${spec.source}"`);
80
+ Defined first by class "${collectedNames.get(arg.name)}" and now by class "${spec.className}"`);
65
81
  }
66
- collectedNames.set(arg.name, spec.source);
82
+ collectedNames.set(arg.name, spec.className);
67
83
  cliArgProvider.addArgument(arg.name, arg.type);
68
84
  });
69
85
  });
@@ -71,7 +87,7 @@ export class NexxusConfigManager {
71
87
  this.cliArgsSpecs.forEach(spec => {
72
88
  spec.specs.forEach(arg => {
73
89
  if (parsed[arg.name] !== undefined && parsed[arg.name] !== null) {
74
- Dot.setProperty(this.data, arg.location, parsed[arg.name]);
90
+ Dot.setProperty(this.data, `${spec.configRootKey}.${arg.location}`, parsed[arg.name]);
75
91
  }
76
92
  });
77
93
  });
@@ -87,14 +103,14 @@ export class NexxusConfigManager {
87
103
  this.envVarsSpecs.forEach(spec => {
88
104
  spec.specs.forEach(envVar => {
89
105
  if (collectedNames.has(envVar.name)) {
90
- throw new InvalidConfigException(`Duplicate Env var: "${prefix}_${envVar.name}".
91
- Defined first by source: "${collectedNames.get(envVar.name)}" and now by source: "${spec.source}"`);
106
+ throw new InvalidConfigException(`Duplicate Env var: "${prefix}${envVar.name}".
107
+ Defined first by class "${collectedNames.get(envVar.name)}" and now by class "${spec.className}"`);
92
108
  }
93
109
  const value = envResult?.[`${prefix}${envVar.name}`];
94
110
  if (value !== undefined) {
95
- Dot.setProperty(this.data, envVar.location, value);
111
+ Dot.setProperty(this.data, `${spec.configRootKey}.${envVar.location}`, value);
96
112
  }
97
- collectedNames.set(envVar.name, spec.source);
113
+ collectedNames.set(envVar.name, spec.className);
98
114
  });
99
115
  });
100
116
  }
@@ -110,12 +126,27 @@ export class NexxusConfigManager {
110
126
  }).join('\n');
111
127
  }
112
128
  async validate() {
113
- const fileConfigProvider = this.configProviders[0];
114
- this.data = fileConfigProvider.getConfig();
115
- await this.populateFromCustomProviders();
129
+ if (!this.dataInitialized) {
130
+ const fileConfigProvider = this.configProviders[0];
131
+ try {
132
+ this.data = fileConfigProvider.getConfig();
133
+ }
134
+ catch (e) {
135
+ if (e instanceof FatalErrorException) {
136
+ if (e.subcode === FatalErrorException.SUBCODES.CONFIG_FILE_NOT_FOUND) {
137
+ this.data = {};
138
+ }
139
+ else {
140
+ throw e;
141
+ }
142
+ }
143
+ }
144
+ await this.populateFromCustomProviders();
145
+ this.dataInitialized = true;
146
+ }
116
147
  this.populateFromCliArgs();
117
148
  this.populateFromEnvVars();
118
- const ajv = new Ajv();
149
+ const ajv = new Ajv({ useDefaults: true });
119
150
  const validator = ajv.compile(this.jsonSchema);
120
151
  const result = validator(this.data);
121
152
  if (!result) {
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../../src/lib/ConfigManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../../src/lib/ConfigManager.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,15 @@ export class NexxusFileConfigProvider extends NexxusConfigProvider {
16
16
  fs.accessSync(this.filePath);
17
17
  }
18
18
  catch (e) {
19
- throw new FatalErrorException(`Cannot access config file "${this.filePath}": ${e.message}`);
19
+ if (e.code === 'ENOENT') {
20
+ throw new FatalErrorException(`Cannot access config file "${this.filePath}": ${e.message}`, FatalErrorException.SUBCODES.CONFIG_FILE_NOT_FOUND);
21
+ }
22
+ else if (e.code === 'EACCES') {
23
+ throw new FatalErrorException(`Cannot access config file "${this.filePath}": ${e.message}`, FatalErrorException.SUBCODES.CONFIG_FILE_UNREADABLE);
24
+ }
25
+ else {
26
+ throw new FatalErrorException(`Failed reading config file "${this.filePath}": ${e.message}`);
27
+ }
20
28
  }
21
29
  return JSON.parse(fs.readFileSync(this.filePath, 'utf-8'));
22
30
  }
@@ -36,6 +44,7 @@ export class NexxusEnvVarsConfigProvider extends NexxusConfigProvider {
36
44
  export class NexxusCliArgConfigProvider extends NexxusConfigProvider {
37
45
  argParser;
38
46
  originalExit;
47
+ addedArgs = new Set();
39
48
  constructor() {
40
49
  super();
41
50
  this.argParser = new ArgumentParser({ add_help: false, usage: SUPPRESS });
@@ -47,7 +56,11 @@ export class NexxusCliArgConfigProvider extends NexxusConfigProvider {
47
56
  };
48
57
  }
49
58
  addArgument(name, type) {
59
+ if (this.addedArgs.has(name)) {
60
+ return;
61
+ }
50
62
  this.argParser.add_argument(`--${name}`, { type: type, dest: name, required: false });
63
+ this.addedArgs.add(name);
51
64
  }
52
65
  getConfig() {
53
66
  return this.argParser.parse_args();
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigProvider.js","sourceRoot":"","sources":["../../src/lib/ConfigProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AASpD,MAAM,OAAgB,oBAAoB;CAEzC;AAED,MAAM,OAAgB,yBAAyB;CAE9C;AAED,MAAM,OAAO,wBAAyB,SAAQ,oBAAoB;IAC5C;IAApB,YAAoB,QAAgB;QAClC,KAAK,EAAE,CAAC;QADU,aAAQ,GAAR,QAAQ,CAAQ;IAEpC,CAAC;IAEM,SAAS;QACd,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,mBAAmB,CAAC,8BAA8B,IAAI,CAAC,QAAQ,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAiB,CAAC;IAC7E,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,oBAAoB;IACnE,MAAM,CAAC,cAAc,GAAsB,MAAM,CAAC;IAE3C,SAAS;QACd,MAAM,MAAM,GAAkB,EAAE,CAAC;QAEjC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrC,IAAI,GAAG,CAAC,UAAU,CAAC,2BAA2B,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAW,CAAC;YAC3C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;;AAGH,MAAM,OAAO,0BAA2B,SAAQ,oBAAoB;IAC1D,SAAS,CAAiB;IAC1B,YAAY,CAA4C;IAEhE;QACE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE;YACxD,IAAI,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrC,CAAC;QACH,CAAC,CAAA;IACH,CAAC;IAEM,WAAW,CAAC,IAAY,EAAE,IAAgB;QAC/C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACxF,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"ConfigProvider.js","sourceRoot":"","sources":["../../src/lib/ConfigProvider.ts"],"names":[],"mappings":"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"}
@@ -6,18 +6,30 @@ export var NexxusExceptions;
6
6
  NexxusExceptions["INVALID_CONFIG"] = "InvalidConfigException";
7
7
  NexxusExceptions["INVALID_JSON_PATCH"] = "InvalidJsonPatchException";
8
8
  NexxusExceptions["INVALID_QUERY_FILTER"] = "InvalidQueryFilterException";
9
+ NexxusExceptions["INVALID_SCHEMA_DATA"] = "InvalidSchemaDataException";
9
10
  NexxusExceptions["INVALID_USER_MODEL"] = "InvalidUserModelException";
10
11
  })(NexxusExceptions || (NexxusExceptions = {}));
11
12
  ;
12
13
  export class NexxusException extends Error {
13
- constructor(type, message) {
14
+ subcode;
15
+ constructor(type, message, subcode) {
14
16
  super(message);
15
17
  this.name = type;
18
+ this.subcode = subcode;
16
19
  }
17
20
  }
21
+ var FatalErrorSubcodes;
22
+ (function (FatalErrorSubcodes) {
23
+ FatalErrorSubcodes["CONFIG_FILE_NOT_FOUND"] = "CONFIG_FILE_NOT_FOUND";
24
+ FatalErrorSubcodes["CONFIG_FILE_INVALID_JSON"] = "CONFIG_FILE_INVALID_JSON";
25
+ FatalErrorSubcodes["CONFIG_FILE_INVALID_SCHEMA"] = "CONFIG_FILE_INVALID_SCHEMA";
26
+ FatalErrorSubcodes["CONFIG_FILE_UNREADABLE"] = "CONFIG_FILE_UNREADABLE";
27
+ })(FatalErrorSubcodes || (FatalErrorSubcodes = {}));
28
+ ;
18
29
  export class FatalErrorException extends NexxusException {
19
- constructor(message) {
20
- super(NexxusExceptions.FATAL_ERROR, message);
30
+ static SUBCODES = FatalErrorSubcodes;
31
+ constructor(message, subcode) {
32
+ super(NexxusExceptions.FATAL_ERROR, message, subcode);
21
33
  }
22
34
  }
23
35
  export class BadRequestException extends NexxusException {
@@ -45,6 +57,11 @@ export class InvalidQueryFilterException extends NexxusException {
45
57
  super(NexxusExceptions.INVALID_QUERY_FILTER, message);
46
58
  }
47
59
  }
60
+ export class InvalidSchemaDataException extends NexxusException {
61
+ constructor(message) {
62
+ super(NexxusExceptions.INVALID_SCHEMA_DATA, message);
63
+ }
64
+ }
48
65
  export class InvalidUserModelException extends NexxusException {
49
66
  constructor(message) {
50
67
  super(NexxusExceptions.INVALID_USER_MODEL, message);
@@ -1 +1 @@
1
- {"version":3,"file":"Exceptions.js","sourceRoot":"","sources":["../../src/lib/Exceptions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBAQX;AARD,WAAY,gBAAgB;IAC1B,uDAAmC,CAAA;IACnC,uDAAmC,CAAA;IACnC,iEAA6C,CAAA;IAC7C,6DAAyC,CAAA;IACzC,oEAAgD,CAAA;IAChD,wEAAoD,CAAA;IACpD,oEAAgD,CAAA;AAClD,CAAC,EARW,gBAAgB,KAAhB,gBAAgB,QAQ3B;AAAA,CAAC;AAEF,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,eAAe;IACzD,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,eAAe;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,eAAe;IAC9D,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,eAAe;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;CACF"}
1
+ {"version":3,"file":"Exceptions.js","sourceRoot":"","sources":["../../src/lib/Exceptions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBASX;AATD,WAAY,gBAAgB;IAC1B,uDAAmC,CAAA;IACnC,uDAAmC,CAAA;IACnC,iEAA6C,CAAA;IAC7C,6DAAyC,CAAA;IACzC,oEAAgD,CAAA;IAChD,wEAAoD,CAAA;IACpD,sEAAkD,CAAA;IAClD,oEAAgD,CAAA;AAClD,CAAC,EATW,gBAAgB,KAAhB,gBAAgB,QAS3B;AAAA,CAAC;AAEF,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxB,OAAO,CAAU;IAEjC,YAAY,IAAY,EAAE,OAAe,EAAE,OAAgB;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,IAAK,kBAKJ;AALD,WAAK,kBAAkB;IACrB,qEAA+C,CAAA;IAC/C,2EAAqD,CAAA;IACrD,+EAAyD,CAAA;IACzD,uEAAiD,CAAA;AACnD,CAAC,EALI,kBAAkB,KAAlB,kBAAkB,QAKtB;AAAA,CAAC;AAEF,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAC/C,MAAM,CAAC,QAAQ,GAAyC,kBAAkB,CAAC;IAElF,YAAY,OAAe,EAAE,OAA4B;QACvD,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;;AAGH,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,eAAe;IACzD,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,eAAe;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,eAAe;IAC9D,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,eAAe;IAC7D,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,eAAe;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;CACF"}
@@ -1,6 +1,7 @@
1
1
  import { NexxusBaseService } from './BaseService';
2
+ import { InvalidConfigException } from './Exceptions';
2
3
  import * as Winston from 'winston';
3
- import * as path from "node:path";
4
+ import * as path from 'node:path';
4
5
  export var NexxusLoggerLevels;
5
6
  (function (NexxusLoggerLevels) {
6
7
  NexxusLoggerLevels["EMERGENCY"] = "emerg";
@@ -13,90 +14,113 @@ export var NexxusLoggerLevels;
13
14
  NexxusLoggerLevels["DEBUG"] = "debug";
14
15
  })(NexxusLoggerLevels || (NexxusLoggerLevels = {}));
15
16
  export class NexxusBaseLogger extends NexxusBaseService {
17
+ static configRootKey = "logger";
16
18
  constructor(services) {
17
19
  super(services.configManager.getConfig('logger'));
18
20
  }
19
- debug(message, label) {
20
- this.log("debug", message, label);
21
+ static serializeError(err) {
22
+ const out = {
23
+ name: err.name,
24
+ message: err.message,
25
+ stack: err.stack,
26
+ };
27
+ if (err.cause !== undefined) {
28
+ out.cause = err.cause;
29
+ }
30
+ return out;
31
+ }
32
+ static makeSafeReplacer() {
33
+ const seen = new WeakSet();
34
+ return (_key, value) => {
35
+ if (value instanceof Error) {
36
+ return NexxusBaseLogger.serializeError(value);
37
+ }
38
+ if (value !== null && typeof value === 'object') {
39
+ if (seen.has(value)) {
40
+ return '[circular]';
41
+ }
42
+ seen.add(value);
43
+ }
44
+ return value;
45
+ };
46
+ }
47
+ static safeStringify(value) {
48
+ return JSON.stringify(value, NexxusBaseLogger.makeSafeReplacer());
21
49
  }
22
- info(message, label) {
23
- this.log("info", message, label);
50
+ debug(message, attributesOrLabel, label) {
51
+ this.dispatch("debug", message, attributesOrLabel, label);
24
52
  }
25
- warn(message, label) {
26
- this.log("warn", message, label);
53
+ info(message, attributesOrLabel, label) {
54
+ this.dispatch("info", message, attributesOrLabel, label);
27
55
  }
28
- error(message, label) {
29
- this.log("error", message, label);
56
+ warn(message, attributesOrLabel, label) {
57
+ this.dispatch("warn", message, attributesOrLabel, label);
30
58
  }
31
- critical(message, label) {
32
- this.log("crit", message, label);
59
+ error(message, attributesOrLabel, label) {
60
+ this.dispatch("error", message, attributesOrLabel, label);
33
61
  }
34
- alert(message, label) {
35
- this.log("alert", message, label);
62
+ critical(message, attributesOrLabel, label) {
63
+ this.dispatch("crit", message, attributesOrLabel, label);
36
64
  }
37
- emerg(message, label) {
38
- this.log("emerg", message, label);
65
+ alert(message, attributesOrLabel, label) {
66
+ this.dispatch("alert", message, attributesOrLabel, label);
67
+ }
68
+ emerg(message, attributesOrLabel, label) {
69
+ this.dispatch("emerg", message, attributesOrLabel, label);
70
+ }
71
+ dispatch(level, message, attributesOrLabel, label) {
72
+ if (typeof attributesOrLabel === 'string') {
73
+ this.log(level, message, undefined, attributesOrLabel);
74
+ }
75
+ else {
76
+ this.log(level, message, attributesOrLabel, label);
77
+ }
39
78
  }
40
79
  }
41
80
  export class WinstonNexxusLogger extends NexxusBaseLogger {
42
81
  winston;
43
82
  static schemaPath = path.join(__dirname, "../../src/schemas/winston-logger.schema.json");
44
- static envVars = {
45
- source: this.name,
46
- specs: [
47
- {
48
- name: "LOG_LEVEL",
49
- location: "logger.level"
50
- }
51
- ]
52
- };
53
- static cliArgs = {
54
- source: this.name,
55
- specs: []
56
- };
57
- constructor(services) {
83
+ static envVars = [
84
+ { name: "LOG_LEVEL", location: "level" }
85
+ ];
86
+ static cliArgs = [];
87
+ constructor(services, resolvedTransports) {
58
88
  super(services);
59
89
  let format;
60
90
  if (this.config.logType === "json") {
61
- format = Winston.format.json({
62
- circularValue: '[circular]'
63
- });
64
- format = Winston.format.combine(Winston.format.printf(info => {
65
- const msg = info.message;
66
- if (msg.startsWith("{") || msg.startsWith("[")) {
67
- try {
68
- info.message = JSON.parse(msg);
69
- }
70
- catch (e) {
71
- if (e.message.includes("Unexpected")) {
72
- info.message = msg;
73
- }
74
- else {
75
- throw e;
76
- }
77
- }
91
+ format = Winston.format.printf(info => {
92
+ const record = {};
93
+ if (info.timestamp) {
94
+ record.time = info.timestamp;
95
+ }
96
+ record.level = info.level;
97
+ record.label = info.label ?? "default-label";
98
+ record.msg = info.message;
99
+ const attrs = info.attrs;
100
+ if (attrs && typeof attrs === 'object' && Object.keys(attrs).length > 0) {
101
+ record.attrs = attrs;
78
102
  }
79
- info.label = info.label || "default-label";
80
- return JSON.stringify(info);
81
- }), format);
103
+ return WinstonNexxusLogger.safeStringify(record);
104
+ });
82
105
  if (this.config.timestamps) {
83
106
  format = Winston.format.combine(Winston.format.timestamp(), format);
84
107
  }
85
108
  }
86
109
  else {
87
110
  format = Winston.format.printf(info => {
88
- let result = '';
89
- if (info.message === undefined) {
90
- const isMetadataEmpty = Object.keys(info.metadata).length === 0;
91
- info.message = isMetadataEmpty ? 'undefined' : JSON.stringify(info.metadata);
111
+ const label = info.label ?? "default-label";
112
+ const timestampPrefix = info.timestamp ? `[${info.timestamp}] ` : '';
113
+ const header = `${timestampPrefix}${info.level.toLocaleUpperCase()} [${label}]: ${info.message}`;
114
+ const attrs = info.attrs;
115
+ if (!attrs || typeof attrs !== 'object' || Object.keys(attrs).length === 0) {
116
+ return header;
92
117
  }
93
- info.label = info.label || "default-label";
94
- if (info.timestamp) {
95
- result += `[${info.timestamp}] `;
118
+ const lines = [header];
119
+ for (const [k, v] of Object.entries(attrs)) {
120
+ lines.push(` ${k}: ${WinstonNexxusLogger.safeStringify(v)}`);
96
121
  }
97
- return result + `${info.level.toLocaleUpperCase()} [${info.label}]: ${info.message}`;
122
+ return lines.join('\n');
98
123
  });
99
- format = Winston.format.combine(Winston.format.metadata({ fillExcept: ['message', 'level', 'timestamp', 'label'] }), format);
100
124
  if (this.config.timestamps) {
101
125
  format = Winston.format.combine(Winston.format.timestamp(), format);
102
126
  }
@@ -107,19 +131,68 @@ export class WinstonNexxusLogger extends NexxusBaseLogger {
107
131
  this.winston = Winston.createLogger({
108
132
  level: this.config.level,
109
133
  format,
110
- transports: [
111
- new Winston.transports.Console()
112
- ]
134
+ transports: resolvedTransports
113
135
  });
114
136
  }
115
- log(level, message, label) {
116
- if (typeof message === 'object' || Array.isArray(message)) {
117
- message = JSON.stringify(message);
137
+ static async create(services) {
138
+ const config = services.configManager.getConfig('logger');
139
+ const resolvedTransports = await WinstonNexxusLogger.resolveTransports(config);
140
+ return new WinstonNexxusLogger(services, resolvedTransports);
141
+ }
142
+ static async resolveTransports(config) {
143
+ const entries = config.transports?.length
144
+ ? config.transports
145
+ : [{ type: 'stdout' }];
146
+ const resolved = [];
147
+ for (const entry of entries) {
148
+ switch (entry.type) {
149
+ case 'stdout':
150
+ resolved.push(new Winston.transports.Console());
151
+ break;
152
+ case 'file': {
153
+ const fileEntry = entry;
154
+ resolved.push(new Winston.transports.File({
155
+ filename: fileEntry.filename,
156
+ maxsize: fileEntry.maxSize || 10485760,
157
+ maxFiles: fileEntry.maxFiles || 5,
158
+ zippedArchive: true
159
+ }));
160
+ break;
161
+ }
162
+ default:
163
+ resolved.push(await WinstonNexxusLogger.loadCustomTransport(entry));
164
+ }
165
+ }
166
+ return resolved;
167
+ }
168
+ static async loadCustomTransport(transport) {
169
+ let mod;
170
+ try {
171
+ mod = await import(transport.type);
172
+ }
173
+ catch (e) {
174
+ throw new InvalidConfigException(`Transport package "${transport.type}" could not be loaded — make sure it's installed in your deployment. Underlying error: ${e.message}`);
175
+ }
176
+ let TransportCtor;
177
+ if (transport.export) {
178
+ TransportCtor = mod[transport.export];
179
+ if (typeof TransportCtor !== 'function') {
180
+ throw new InvalidConfigException(`Transport package "${transport.type}" has no export named "${transport.export}" (or it isn't a class/function)`);
181
+ }
182
+ }
183
+ else if (typeof mod.default === 'function') {
184
+ TransportCtor = mod.default;
185
+ }
186
+ else if (typeof mod === 'function') {
187
+ TransportCtor = mod;
118
188
  }
119
189
  else {
120
- message = String(message);
190
+ throw new InvalidConfigException(`Could not find a transport class in package "${transport.type}". Specify "export" in the transport config to name the class.`);
121
191
  }
122
- this.winston.log(level, message, { label });
192
+ return new TransportCtor(transport.options ?? {});
193
+ }
194
+ log(level, message, attributes, label) {
195
+ this.winston.log(level, message, { label, attrs: attributes });
123
196
  }
124
197
  }
125
198
  //# sourceMappingURL=Logger.js.map