@rsdk/core 1.0.8 → 1.0.10

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 (82) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/app/platform.app.d.ts +3 -1
  3. package/dist/app/platform.app.js +24 -0
  4. package/dist/app/platform.app.js.map +1 -1
  5. package/dist/config/config.const.d.ts +13 -0
  6. package/dist/config/config.const.js +17 -0
  7. package/dist/config/config.const.js.map +1 -0
  8. package/dist/config/metadata/decorators/config-section.decorator.d.ts +4 -0
  9. package/dist/config/metadata/decorators/config-section.decorator.js.map +1 -1
  10. package/dist/config/types.d.ts +3 -1
  11. package/dist/exceptions.handling/global-exceptions.config.js +4 -1
  12. package/dist/exceptions.handling/global-exceptions.config.js.map +1 -1
  13. package/dist/health/autodoc/heath.autodoc-resolver.d.ts +16 -0
  14. package/dist/health/autodoc/heath.autodoc-resolver.js +24 -0
  15. package/dist/health/autodoc/heath.autodoc-resolver.js.map +1 -0
  16. package/dist/health/health.service.d.ts +2 -1
  17. package/dist/health/health.service.js.map +1 -1
  18. package/dist/health/index.d.ts +1 -0
  19. package/dist/health/index.js +3 -0
  20. package/dist/health/index.js.map +1 -1
  21. package/dist/health/metadata/indicator.decorator.d.ts +16 -0
  22. package/dist/health/metadata/indicator.decorator.js +21 -0
  23. package/dist/health/metadata/indicator.decorator.js.map +1 -1
  24. package/dist/health/metadata/indicators.registry.js +0 -3
  25. package/dist/health/metadata/indicators.registry.js.map +1 -1
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.js +3 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/logging/logging.config.js +4 -1
  30. package/dist/logging/logging.config.js.map +1 -1
  31. package/dist/metrics/index.d.ts +2 -0
  32. package/dist/metrics/index.js +3 -1
  33. package/dist/metrics/index.js.map +1 -1
  34. package/dist/metrics/metadata/autodoc/metrics.autodoc-resolver.d.ts +8 -0
  35. package/dist/metrics/metadata/autodoc/metrics.autodoc-resolver.js +26 -0
  36. package/dist/metrics/metadata/autodoc/metrics.autodoc-resolver.js.map +1 -0
  37. package/dist/metrics/metadata/decorators/metric.decorator.d.ts +12 -5
  38. package/dist/metrics/metadata/decorators/metric.decorator.js.map +1 -1
  39. package/dist/metrics/metadata/index.d.ts +2 -0
  40. package/dist/metrics/metadata/index.js +3 -0
  41. package/dist/metrics/metadata/index.js.map +1 -1
  42. package/dist/metrics/metadata/types.d.ts +8 -0
  43. package/dist/metrics/metadata/types.js +3 -0
  44. package/dist/metrics/metadata/types.js.map +1 -0
  45. package/dist/metrics/metrics.config.js +5 -1
  46. package/dist/metrics/metrics.config.js.map +1 -1
  47. package/dist/metrics/metrics.module.js +15 -3
  48. package/dist/metrics/metrics.module.js.map +1 -1
  49. package/dist/platform.context.d.ts +5 -3
  50. package/dist/platform.context.js +31 -14
  51. package/dist/platform.context.js.map +1 -1
  52. package/dist/tracing/tracing.config.js +4 -1
  53. package/dist/tracing/tracing.config.js.map +1 -1
  54. package/dist/types/metadata.d.ts +7 -1
  55. package/dist/types/metadata.js.map +1 -1
  56. package/dist/types/options.d.ts +3 -1
  57. package/package.json +20 -18
  58. package/src/app/platform.app.ts +33 -1
  59. package/src/config/config.const.ts +13 -0
  60. package/src/config/metadata/decorators/config-section.decorator.ts +4 -0
  61. package/src/config/types.ts +3 -1
  62. package/src/exceptions.handling/global-exceptions.config.ts +4 -1
  63. package/src/health/autodoc/heath.autodoc-resolver.ts +33 -0
  64. package/src/health/health.service.ts +2 -1
  65. package/src/health/index.ts +1 -0
  66. package/src/health/metadata/indicator.decorator.ts +34 -0
  67. package/src/health/metadata/indicators.registry.ts +0 -4
  68. package/src/index.ts +2 -0
  69. package/src/logging/logging.config.ts +4 -1
  70. package/src/metrics/index.ts +2 -0
  71. package/src/metrics/metadata/autodoc/metrics.autodoc-resolver.ts +30 -0
  72. package/src/metrics/metadata/decorators/metric.decorator.ts +14 -6
  73. package/src/metrics/metadata/index.ts +3 -0
  74. package/src/metrics/metadata/types.ts +11 -0
  75. package/src/metrics/metrics.config.ts +5 -1
  76. package/src/metrics/metrics.module.ts +23 -2
  77. package/src/platform.context.ts +40 -21
  78. package/src/tracing/tracing.config.ts +4 -1
  79. package/src/types/metadata.ts +8 -1
  80. package/src/types/options.ts +3 -1
  81. package/tsconfig.json +0 -1
  82. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -15,9 +15,11 @@ var MetricsModule_1;
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.MetricsModule = void 0;
17
17
  const common_1 = require("@nestjs/common");
18
+ const autodoc_protocol_1 = require("@rsdk/autodoc-protocol");
19
+ const metadata_1 = require("@rsdk/metadata");
18
20
  const prom_client_1 = __importDefault(require("prom-client"));
19
21
  const config_1 = require("../config");
20
- const metadata_1 = require("./metadata");
22
+ const metadata_2 = require("./metadata");
21
23
  const metrics_config_1 = require("./metrics.config");
22
24
  /**
23
25
  * Metrics module exposes metrics interface (depending on transport)
@@ -59,11 +61,21 @@ let MetricsModule = MetricsModule_1 = class MetricsModule {
59
61
  providers.push(existing);
60
62
  continue;
61
63
  }
62
- const metadata = metadata_1.MetricsRegistry.getOne(ctor);
63
- providers.push({
64
+ const metadata = metadata_2.MetricsRegistry.getOne(ctor);
65
+ const provider = {
64
66
  provide: ctor,
65
67
  useValue: new ctor(metadata),
68
+ };
69
+ const rsdkMetadata = new metadata_1.RsdkMetadata(provider, 'metrics');
70
+ rsdkMetadata.add({
71
+ type: metadata.type,
72
+ metricController: ctor,
73
+ metadata,
66
74
  });
75
+ const autodocMetadata = new autodoc_protocol_1.AutodocMetadata(rsdkMetadata);
76
+ const metricsDocumentResolver = new metadata_2.MetricAutodocResolver(rsdkMetadata);
77
+ autodocMetadata.defineResolver(metricsDocumentResolver);
78
+ providers.push(provider);
67
79
  }
68
80
  return {
69
81
  module: MetricsModule_1,
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.module.js","sourceRoot":"","sources":["../../src/metrics/metrics.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAKA,2CAAwC;AAExC,8DAAiC;AAEjC,sCAAiD;AAEjD,yCAA6C;AAC7C,qDAAuD;AAGvD;;;;;;;GAOG;AAII,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAIK;IAHrB,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;IAErE,YAA6B,MAA2B;QAA3B,WAAM,GAAN,MAAM,CAAqB;IAAG,CAAC;IAE5D;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,OAA6B;QAC1C,OAAO;YACL,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;YACrC,MAAM,EAAE,eAAa;SACtB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CACf,KAA6B,EAC7B,GAAG,KAA+B;QAElC,MAAM,SAAS,GAAe,EAAE,CAAC;QAEjC,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAExC,IAAI,QAAQ,EAAE;gBACZ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAEzB,SAAS;aACV;YAED,MAAM,QAAQ,GAAG,0BAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAE9C,SAAS,CAAC,IAAI,CAAC;gBACb,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC;aAC7B,CAAC,CAAC;SACJ;QAED,OAAO;YACL,MAAM,EAAE,eAAa;YAErB,OAAO,EAAE,SAAS;YAClB,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB;;;WAGG;QACH,IAAI,eAAa,CAAC,cAAc,EAAE;YAChC,OAAO;SACR;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;YAC9B,qBAAM,CAAC,qBAAqB,EAAE,CAAC;SAChC;QAED,eAAa,CAAC,cAAc,GAAG,IAAI,CAAC;IACtC,CAAC;;AAxEU,aAAa;IAHzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,6BAAoB,CAAC,UAAU,CAAC,oCAAmB,CAAC,CAAC;KAChE,CAAC;qCAKqC,oCAAmB;GAJ7C,aAAa,CAyEzB;AAzEY,sCAAa"}
1
+ {"version":3,"file":"metrics.module.js","sourceRoot":"","sources":["../../src/metrics/metrics.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAKA,2CAAwC;AACxC,6DAAyD;AAEzD,6CAA8C;AAC9C,8DAAiC;AAEjC,sCAAiD;AAGjD,yCAAoE;AACpE,qDAAuD;AAGvD;;;;;;;GAOG;AAII,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAIK;IAHrB,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC;IAC9B,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,EAAoC,CAAC;IAErE,YAA6B,MAA2B;QAA3B,WAAM,GAAN,MAAM,CAAqB;IAAG,CAAC;IAE5D;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,OAA6B;QAC1C,OAAO;YACL,WAAW,EAAE,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;YACrC,MAAM,EAAE,eAAa;SACtB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CACf,KAA6B,EAC7B,GAAG,KAA+B;QAElC,MAAM,SAAS,GAAe,EAAE,CAAC;QAEjC,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,EAAE;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAExC,IAAI,QAAQ,EAAE;gBACZ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAEzB,SAAS;aACV;YAED,MAAM,QAAQ,GAAG,0BAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAE9C,MAAM,QAAQ,GAAG;gBACf,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC;aAC7B,CAAC;YAEF,MAAM,YAAY,GAAG,IAAI,uBAAY,CACnC,QAAQ,EACR,SAAS,CACV,CAAC;YAEF,YAAY,CAAC,GAAG,CAAC;gBACf,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,gBAAgB,EAAE,IAAI;gBACtB,QAAQ;aACT,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,IAAI,kCAAe,CAAC,YAAY,CAAC,CAAC;YAE1D,MAAM,uBAAuB,GAAG,IAAI,gCAAqB,CAAC,YAAY,CAAC,CAAC;YAExE,eAAe,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;YACxD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC1B;QAED,OAAO;YACL,MAAM,EAAE,eAAa;YAErB,OAAO,EAAE,SAAS;YAClB,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB;;;WAGG;QACH,IAAI,eAAa,CAAC,cAAc,EAAE;YAChC,OAAO;SACR;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;YAC9B,qBAAM,CAAC,qBAAqB,EAAE,CAAC;SAChC;QAED,eAAa,CAAC,cAAc,GAAG,IAAI,CAAC;IACtC,CAAC;;AA1FU,aAAa;IAHzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,6BAAoB,CAAC,UAAU,CAAC,oCAAmB,CAAC,CAAC;KAChE,CAAC;qCAKqC,oCAAmB;GAJ7C,aAAa,CA2FzB;AA3FY,sCAAa"}
@@ -2,18 +2,18 @@ import type { DynamicModule } from '@nestjs/common';
2
2
  import type { INestApplication } from '@nestjs/common/interfaces';
3
3
  import type { NestApplicationOptions } from '@nestjs/common/interfaces/nest-application-options.interface';
4
4
  import type { AbstractHttpAdapter } from '@nestjs/core';
5
- import type { PlatformAppMetadata, PlatformOptions } from './types';
5
+ import type { PlatformAppMetadata, PlatformExtendedOptions, PlatformOptions } from './types';
6
6
  /**
7
7
  * Агрегат для хранения опций приложения, а также методы для конфигурации и запуска приложения
8
8
  */
9
9
  export declare class PlatformContext {
10
10
  readonly options: PlatformOptions;
11
11
  readonly logger: import("@rsdk/logging").ILogger;
12
- readonly root: DynamicModule;
13
12
  private microservices;
14
13
  private readonly httpTransport;
15
14
  private readonly httpAdapter;
16
- private readonly extendedOptions;
15
+ private _extendedOptions;
16
+ private _root;
17
17
  /**
18
18
  * Создаёт контекст проводя базовые проверки
19
19
  * - все транспорты совместимы между собой
@@ -23,6 +23,8 @@ export declare class PlatformContext {
23
23
  * @param options
24
24
  */
25
25
  constructor(options: PlatformOptions);
26
+ get root(): DynamicModule;
27
+ get extendedOptions(): PlatformExtendedOptions;
26
28
  private static assertPluginCompatability;
27
29
  private static assertTransportCompatability;
28
30
  /**
@@ -16,11 +16,11 @@ const types_1 = require("./types");
16
16
  class PlatformContext {
17
17
  options;
18
18
  logger = logging_1.LoggerFactory.create('App');
19
- root;
20
19
  microservices;
21
20
  httpTransport;
22
21
  httpAdapter;
23
- extendedOptions;
22
+ _extendedOptions;
23
+ _root;
24
24
  /**
25
25
  * Создаёт контекст проводя базовые проверки
26
26
  * - все транспорты совместимы между собой
@@ -33,22 +33,35 @@ class PlatformContext {
33
33
  this.options = options;
34
34
  PlatformContext.assertTransportCompatability(options);
35
35
  PlatformContext.assertPluginCompatability(options);
36
- const { name, description, version } = manifest_1.Manifest.getData(options.manifestPath);
36
+ this.httpTransport = options.transports?.find?.(types_1.isHttpTransport);
37
+ this.httpAdapter =
38
+ this.httpTransport?.getAdapter() ?? new noop_http_adapter_1.NoopHttpAdapter();
39
+ }
40
+ get root() {
41
+ if (this._root) {
42
+ return this._root;
43
+ }
44
+ config_1.PlatformConfigModule.bootstrap({
45
+ ...(this.extendedOptions.config ?? {}),
46
+ appName: this.extendedOptions.name,
47
+ });
48
+ this._root = platform_module_1.PlatformModule.forRoot(this.extendedOptions);
49
+ return this._root;
50
+ }
51
+ get extendedOptions() {
52
+ if (this._extendedOptions) {
53
+ return this._extendedOptions;
54
+ }
55
+ const manifestData = manifest_1.Manifest.getData(this.options.manifestPath);
56
+ const { name, description, version } = manifestData;
37
57
  const extendedOptions = {
38
58
  description,
39
59
  name,
40
60
  version,
41
- ...options,
61
+ ...this.options,
42
62
  };
43
- this.extendedOptions = extendedOptions;
44
- config_1.PlatformConfigModule.bootstrap({
45
- ...(extendedOptions.config ?? {}),
46
- appName: extendedOptions.name,
47
- });
48
- this.httpTransport = options.transports?.find?.(types_1.isHttpTransport);
49
- this.httpAdapter =
50
- this.httpTransport?.getAdapter() ?? new noop_http_adapter_1.NoopHttpAdapter();
51
- this.root = platform_module_1.PlatformModule.forRoot(this.extendedOptions);
63
+ this._extendedOptions = extendedOptions;
64
+ return this._extendedOptions;
52
65
  }
53
66
  static assertPluginCompatability(options) {
54
67
  if (!options.plugins) {
@@ -82,11 +95,15 @@ class PlatformContext {
82
95
  const protocols = (options?.transports ?? []).map((x) => x.getProtocol());
83
96
  return {
84
97
  name: options.name,
98
+ version: options.version,
85
99
  description: options.description,
86
100
  protocols: protocols,
87
101
  config: {
88
102
  prefix: options.name,
89
- sections: [...confMetadata.sections.values()].map(types_1.transformSectionMetadata),
103
+ sections: [...confMetadata.sections.entries()].map(([section, metadata]) => (0, types_1.transformSectionMetadata)({
104
+ ...metadata,
105
+ constructorName: section.name,
106
+ })),
90
107
  sources: [...confMetadata.sources.values()],
91
108
  properties: [...confMetadata.properties.values()].map(types_1.serializePropertyMetadata),
92
109
  },
@@ -1 +1 @@
1
- {"version":3,"file":"platform.context.js","sourceRoot":"","sources":["../src/platform.context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"platform.context.js","sourceRoot":"","sources":["../src/platform.context.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.TracingModuleConfig = void 0;
13
13
  const config_1 = require("../config");
14
+ const config_const_1 = require("../config/config.const");
14
15
  let TracingModuleConfig = class TracingModuleConfig extends config_1.Config {
15
16
  enabled;
16
17
  collectorUrl;
@@ -30,7 +31,9 @@ __decorate([
30
31
  __metadata("design:type", URL)
31
32
  ], TracingModuleConfig.prototype, "collectorUrl", void 0);
32
33
  TracingModuleConfig = __decorate([
33
- (0, config_1.ConfigSection)()
34
+ (0, config_1.ConfigSection)({
35
+ tags: [config_const_1.ConfigTag.infrastructure, config_const_1.ConfigTag.tracing],
36
+ })
34
37
  ], TracingModuleConfig);
35
38
  exports.TracingModuleConfig = TracingModuleConfig;
36
39
  //# sourceMappingURL=tracing.config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.config.js","sourceRoot":"","sources":["../../src/tracing/tracing.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAMmB;AAGZ,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,eAAM;IAK7C,OAAO,CAAW;IAMlB,YAAY,CAAO;CACpB,CAAA;AAXC;IAAC,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,IAAI,mBAAU,EAAE,EAAE;QAC7C,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,4BAA4B;KAC1C,CAAC;;oDACgB;AAElB;IAAC,IAAA,iBAAQ,EAAC,uBAAuB,EAAE,IAAI,kBAAS,EAAE,EAAE;QAClD,YAAY,EAAE,IAAI,GAAG,CAAC,iCAAiC,CAAC;QACxD,WAAW,EAAE,0CAA0C;KACxD,CAAC;8BACa,GAAG;yDAAC;AAXR,mBAAmB;IAD/B,IAAA,sBAAa,GAAE;GACH,mBAAmB,CAY/B;AAZY,kDAAmB"}
1
+ {"version":3,"file":"tracing.config.js","sourceRoot":"","sources":["../../src/tracing/tracing.config.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sCAMmB;AACnB,yDAAmD;AAK5C,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,eAAM;IAK7C,OAAO,CAAW;IAMlB,YAAY,CAAO;CACpB,CAAA;AAXC;IAAC,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,IAAI,mBAAU,EAAE,EAAE;QAC7C,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,4BAA4B;KAC1C,CAAC;;oDACgB;AAElB;IAAC,IAAA,iBAAQ,EAAC,uBAAuB,EAAE,IAAI,kBAAS,EAAE,EAAE;QAClD,YAAY,EAAE,IAAI,GAAG,CAAC,iCAAiC,CAAC;QACxD,WAAW,EAAE,0CAA0C;KACxD,CAAC;8BACa,GAAG;yDAAC;AAXR,mBAAmB;IAH/B,IAAA,sBAAa,EAAC;QACb,IAAI,EAAE,CAAC,wBAAS,CAAC,cAAc,EAAE,wBAAS,CAAC,OAAO,CAAC;KACpD,CAAC;GACW,mBAAmB,CAY/B;AAZY,kDAAmB"}
@@ -8,7 +8,9 @@ export declare const serializePropertyMetadata: (metadata: PropertyMetadata) =>
8
8
  export type SerializableSectionMetadata = Omit<SectionMetadata, 'properties'> & {
9
9
  properties: SerializablePropertyMetadata[];
10
10
  };
11
- export declare const transformSectionMetadata: ({ properties, ...rest }: SectionMetadata) => SerializableSectionMetadata;
11
+ export declare const transformSectionMetadata: ({ properties, ...rest }: SectionMetadata & {
12
+ constructorName: string;
13
+ }) => SerializableSectionMetadata;
12
14
  export type SerializableConfigMetadata = {
13
15
  prefix: string;
14
16
  sources: SourceMetadata[];
@@ -27,6 +29,10 @@ export interface PlatformAppMetadata {
27
29
  * Application description
28
30
  */
29
31
  description: string;
32
+ /**
33
+ * Application version
34
+ */
35
+ version: string;
30
36
  /**
31
37
  * Supported protocols
32
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/types/metadata.ts"],"names":[],"mappings":";;;AACA,yCAAmD;AAiB5C,MAAM,yBAAyB,GAAG,CACvC,QAA0B,EACI,EAAE;IAChC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;IAEnD,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;YAEnB,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;SAClC;QACD,GAAG,CAAC,IAAA,eAAM,EAAC,QAAQ,EAAE,cAAc,CAAC,IAAI;YACtC,+CAA+C;YAC/C,YAAY,EAAE,IAAA,oBAAW,EAAC,YAAY,CAAC;gBACrC,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC7B,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAA,oBAAW,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC9D,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE;SAC7B,CAAC;KAC6B,CAAC;AACpC,CAAC,CAAC;AArBW,QAAA,yBAAyB,6BAqBpC;AASK,MAAM,wBAAwB,GAAG,CAAC,EACvC,UAAU,EACV,GAAG,IAAI,EACS,EAA+B,EAAE,CAAC,CAAC;IACnD,GAAG,IAAI;IACP,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,iCAAyB,CAAC;CACrE,CAAC,CAAC;AAPU,QAAA,wBAAwB,4BAOlC"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/types/metadata.ts"],"names":[],"mappings":";;;AACA,yCAAmD;AAiB5C,MAAM,yBAAyB,GAAG,CACvC,QAA0B,EACI,EAAE;IAChC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;IAEnD,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;YAEnB,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;SAClC;QACD,GAAG,CAAC,IAAA,eAAM,EAAC,QAAQ,EAAE,cAAc,CAAC,IAAI;YACtC,+CAA+C;YAC/C,YAAY,EAAE,IAAA,oBAAW,EAAC,YAAY,CAAC;gBACrC,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC7B,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAA,oBAAW,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC9D,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE;SAC7B,CAAC;KAC6B,CAAC;AACpC,CAAC,CAAC;AArBW,QAAA,yBAAyB,6BAqBpC;AASK,MAAM,wBAAwB,GAAG,CAAC,EACvC,UAAU,EACV,GAAG,IAAI,EAGR,EAA+B,EAAE,CAAC,CAAC;IAClC,GAAG,IAAI;IACP,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,iCAAyB,CAAC;CACrE,CAAC,CAAC;AATU,QAAA,wBAAwB,4BASlC"}
@@ -1,3 +1,4 @@
1
+ import type { DynamicModule } from '@nestjs/common';
1
2
  import type { Constructor, RequiredFields } from '@rsdk/common';
2
3
  import type { ConfigModuleOptions } from '../config';
3
4
  import type { PlatformAppPlugin } from './plugins';
@@ -5,7 +6,8 @@ import type { IPrimaryTransport, ITransport } from './transports';
5
6
  /**
6
7
  * Not empty collection of modules
7
8
  */
8
- type Modules = [Constructor, ...Constructor[]];
9
+ type Module = DynamicModule | Constructor;
10
+ type Modules = [Module, ...Module[]];
9
11
  export interface ManifestData {
10
12
  /**
11
13
  * Application name
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rsdk/core",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "description": "Nestjs based microservice chassis",
5
5
  "license": "Apache License 2.0",
6
6
  "publishConfig": {
@@ -11,29 +11,31 @@
11
11
  },
12
12
  "main": "dist/index.js",
13
13
  "dependencies": {
14
- "@opentelemetry/api": "1.4.0",
15
- "@opentelemetry/auto-instrumentations-node": "0.36.1",
16
- "@opentelemetry/context-async-hooks": "1.9.1",
17
- "@opentelemetry/core": "1.9.1",
18
- "@opentelemetry/exporter-trace-otlp-http": "0.35.1",
19
- "@opentelemetry/propagator-b3": "1.9.1",
20
- "@opentelemetry/resources": "1.9.1",
21
- "@opentelemetry/sdk-node": "0.35.1",
22
- "@opentelemetry/sdk-trace-base": "1.9.1",
23
- "@opentelemetry/semantic-conventions": "1.9.1",
14
+ "@opentelemetry/api": "1.4.1",
15
+ "@opentelemetry/auto-instrumentations-node": "0.37.0",
16
+ "@opentelemetry/context-async-hooks": "1.13.0",
17
+ "@opentelemetry/core": "1.13.0",
18
+ "@opentelemetry/exporter-trace-otlp-http": "0.39.1",
19
+ "@opentelemetry/propagator-b3": "1.13.0",
20
+ "@opentelemetry/resources": "1.13.0",
21
+ "@opentelemetry/sdk-node": "^0.39.1",
22
+ "@opentelemetry/sdk-trace-base": "1.13.0",
23
+ "@opentelemetry/semantic-conventions": "1.13.0",
24
24
  "prom-client": "^14.2.0"
25
25
  },
26
26
  "peerDependencies": {
27
- "@nestjs/common": "^9.0.0",
28
- "@nestjs/core": "^9.0.0",
29
- "@nestjs/microservices": "^9.0.0",
30
- "@rsdk/common": "^1.0.8",
31
- "@rsdk/decorators": "^1.0.8",
32
- "@rsdk/logging": "^1.0.8",
27
+ "@nestjs/common": "~9.3.8",
28
+ "@nestjs/core": "~9.3.8",
29
+ "@nestjs/microservices": "~9.3.8",
30
+ "@rsdk/autodoc-protocol": "^1.0.10",
31
+ "@rsdk/common": "^1.0.10",
32
+ "@rsdk/decorators": "^1.0.10",
33
+ "@rsdk/logging": "^1.0.10",
34
+ "@rsdk/metadata": "^1.0.10",
33
35
  "axios": "^1.1.3",
34
36
  "lodash": "^4.17.21",
35
37
  "reflect-metadata": "^0.1.13",
36
38
  "rxjs": "^7.0.0"
37
39
  },
38
- "gitHead": "fa402740434388d4c3e7a79f4ad30088e2659d6b"
40
+ "gitHead": "172c83d3a3d6d9387ac103b633ed498e50a642b5"
39
41
  }
@@ -1,5 +1,7 @@
1
1
  import type { INestApplication } from '@nestjs/common/interfaces';
2
2
  import { NestFactory } from '@nestjs/core';
3
+ import { text } from '@rsdk/common';
4
+ import { LoggerFactory } from '@rsdk/logging';
3
5
 
4
6
  import { PlatformContext } from '../platform.context';
5
7
  import type { PlatformAppMetadata, PlatformAppOptions } from '../types';
@@ -11,7 +13,37 @@ import type { PlatformAppMetadata, PlatformAppOptions } from '../types';
11
13
  * ready to go!
12
14
  */
13
15
  export class PlatformApp {
14
- private readonly context: PlatformContext;
16
+ private static logger = LoggerFactory.create(PlatformApp);
17
+
18
+ readonly context: PlatformContext;
19
+
20
+ static {
21
+ const { logger } = PlatformApp;
22
+ logger.info('Registering unhandled rejections handler...');
23
+
24
+ // This code enriches output if unhandled exceptions happen
25
+ process.on('unhandledRejection', (reason: any, promise) => {
26
+ logger.error(
27
+ text`
28
+ Unhandled promise rejection happened! Process is shutting down
29
+ with exit code 1. See: https://github.com/nodejs/node/issues/20392
30
+ and https://nodejs.org/api/process.html#event-unhandledrejection
31
+ `,
32
+ { promise, reason },
33
+ );
34
+
35
+ /**
36
+ * Additionally writes to standard console, because both <promise> and <reason>
37
+ * can be not serializable
38
+ */
39
+ console.error('Found unhandled rejection', {
40
+ promise,
41
+ reason,
42
+ });
43
+
44
+ process.exit(1);
45
+ });
46
+ }
15
47
 
16
48
  constructor(readonly platformAppOptions: PlatformAppOptions) {
17
49
  this.context = new PlatformContext(platformAppOptions);
@@ -0,0 +1,13 @@
1
+ export const ConfigTag = {
2
+ infrastructure: 'infrastructure',
3
+ logging: 'logging',
4
+ errorHandling: 'error-handling',
5
+ metric: 'metric',
6
+ tracing: 'tracing',
7
+ storage: 'storage',
8
+ transport: 'transport',
9
+ graphql: 'graphql',
10
+ http: 'http',
11
+ grpcServer: 'grpc-server',
12
+ natsHemera: 'nats-hemera',
13
+ } as const;
@@ -9,6 +9,10 @@ import { CONFIG_METADATA_KEY } from './property.decorator';
9
9
  export interface ConfigSectionOptions {
10
10
  name?: string;
11
11
  description?: string;
12
+ /**
13
+ * Используются только в документации
14
+ */
15
+ tags?: string[];
12
16
  }
13
17
 
14
18
  /**
@@ -45,11 +45,13 @@ export interface PropertyMetadata<T extends ConfigValue = ConfigValue> {
45
45
  }
46
46
 
47
47
  export interface SectionMetadata {
48
- name: string;
48
+ name?: string;
49
+ constructorName: string;
49
50
  // TODO: Why use Record instead of map here
50
51
  // TODO: Why symbol here
51
52
  properties: Record<string | symbol, PropertyMetadata>;
52
53
  description?: string;
54
+ tags?: string[];
53
55
  }
54
56
 
55
57
  export interface SourceMetadata {
@@ -1,8 +1,11 @@
1
1
  import { text } from '@rsdk/common';
2
2
 
3
3
  import { BoolParser, Config, ConfigSection, Property } from '../config';
4
+ import { ConfigTag } from '../config/config.const';
4
5
 
5
- @ConfigSection()
6
+ @ConfigSection({
7
+ tags: [ConfigTag.infrastructure, ConfigTag.errorHandling],
8
+ })
6
9
  export class GlobalExceptionsConfig extends Config {
7
10
  @Property('VERBOSE_ERRORS', new BoolParser(), {
8
11
  defaultValue: true,
@@ -0,0 +1,33 @@
1
+ import type { DocumentNode, DocumentResolver } from '@rsdk/autodoc-protocol';
2
+ import { Composite, Table } from '@rsdk/autodoc-protocol';
3
+ import type { RsdkMetadata } from '@rsdk/metadata';
4
+
5
+ import type { IndicatorOptions } from '../metadata';
6
+
7
+ export class IndicatorAutodoc implements DocumentResolver {
8
+ constructor(
9
+ readonly rsdkMetadata: RsdkMetadata<{
10
+ key: string;
11
+ options: IndicatorOptions;
12
+ constructorName: string;
13
+ }>,
14
+ ) {}
15
+
16
+ getNode(): DocumentNode | null {
17
+ const resources = this.rsdkMetadata.get();
18
+ if (!resources) {
19
+ return null;
20
+ }
21
+ return new Composite(
22
+ new Table(
23
+ resources.map(({ value }) => ({
24
+ key: value.key,
25
+ scope: value.options.scope ?? '-',
26
+ description: value.options.description ?? '-',
27
+ name: value.constructorName,
28
+ })),
29
+ ),
30
+ 'Health indicators',
31
+ );
32
+ }
33
+ }
@@ -1,3 +1,4 @@
1
+ import type { OnModuleInit } from '@nestjs/common';
1
2
  import { Injectable } from '@nestjs/common';
2
3
  import { ModuleRef } from '@nestjs/core';
3
4
  import type { Constructor } from '@rsdk/common';
@@ -15,7 +16,7 @@ import type {
15
16
  } from './types';
16
17
 
17
18
  @Injectable()
18
- export class HealthChecksService {
19
+ export class HealthChecksService implements OnModuleInit {
19
20
  private readonly indicators: ResolvedIndicators = { common: [] };
20
21
  private readonly indicatorNames = new Map<HealthIndicator, string>();
21
22
 
@@ -4,3 +4,4 @@ export * from './indicators.abstract';
4
4
  export * from './metadata/indicator.decorator';
5
5
  export * from './types';
6
6
  export * from './helpers';
7
+ export { IndicatorAutodoc as IndicatorAutodocResolver } from './autodoc/heath.autodoc-resolver';
@@ -1,16 +1,36 @@
1
1
  /* eslint-disable @typescript-eslint/ban-types */
2
2
 
3
+ import { AutodocMetadata } from '@rsdk/autodoc-protocol';
3
4
  import type { Constructor } from '@rsdk/common';
5
+ import { RsdkMetadata } from '@rsdk/metadata';
4
6
 
7
+ import { IndicatorAutodoc } from '../autodoc/heath.autodoc-resolver';
5
8
  import type { HealthIndicator } from '../types';
6
9
 
7
10
  import { IndicatorsRegistry } from './indicators.registry';
8
11
 
9
12
  export interface IndicatorOptions {
13
+ /**
14
+ * Description
15
+ */
10
16
  description?: string;
17
+
18
+ /**
19
+ * FIXME: WTF?
20
+ */
11
21
  scope?: string;
12
22
  }
13
23
 
24
+ /**
25
+ * Registers health indicator. Indicators should be added to application
26
+ * modules as providers and use common DI to inject necessary services
27
+ * (api, database clients, etc.)
28
+ * @param {string} key Healthcheck response is object where each key
29
+ * is a specific indicator. Thus you can use key to recognize an
30
+ * indicator in healthcheck response
31
+ * @param {IndicatorOptions} options Indicator metadata
32
+ * @returns {ClassDecorator}
33
+ */
14
34
  export const Indicator = (
15
35
  key: string,
16
36
  options: IndicatorOptions = {},
@@ -21,5 +41,19 @@ export const Indicator = (
21
41
  scope: 'common',
22
42
  ...options,
23
43
  });
44
+ const rsdkMetadata = new RsdkMetadata<{
45
+ key: string;
46
+ options: IndicatorOptions;
47
+ constructorName: string;
48
+ }>(target, 'health-indicator');
49
+
50
+ rsdkMetadata.add({
51
+ key,
52
+ options,
53
+ constructorName: target.name,
54
+ });
55
+ const autodocMetadata = new AutodocMetadata(rsdkMetadata);
56
+
57
+ autodocMetadata.defineResolver(new IndicatorAutodoc(rsdkMetadata));
24
58
  };
25
59
  };
@@ -23,10 +23,6 @@ export class IndicatorsRegistry {
23
23
  throw new DoubleInitException('Health indicator', target.name);
24
24
  }
25
25
 
26
- this.logger.info(`Registering indicator: ${target.name}`, {
27
- indicator: target.name,
28
- });
29
-
30
26
  this.indicators.set(target, options);
31
27
  }
32
28
 
package/src/index.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export { ConfigTag } from './config/config.const';
2
+
1
3
  export { PlatformContext } from './platform.context';
2
4
 
3
5
  export * from './config';
@@ -8,8 +8,11 @@ import {
8
8
  Property,
9
9
  StringParser,
10
10
  } from '../config';
11
+ import { ConfigTag } from '../config/config.const';
11
12
 
12
- @ConfigSection()
13
+ @ConfigSection({
14
+ tags: [ConfigTag.infrastructure, ConfigTag.logging],
15
+ })
13
16
  export class LoggingConfig extends Config {
14
17
  @Property('LOG_LEVEL', new EnumParser(LogLevel), {
15
18
  // TODO: Can pass anything instead of enum value. Need to handle this!
@@ -2,3 +2,5 @@ export { Counter, Gauge, Histogram, Summary, register } from 'prom-client';
2
2
  export * from './metrics.module';
3
3
  export * from './types';
4
4
  export * from './metadata';
5
+ export { MetricAutodocResolver } from './metadata';
6
+ export { MetricRsdkMetadata } from './metadata';
@@ -0,0 +1,30 @@
1
+ import type { DocumentNode, DocumentResolver } from '@rsdk/autodoc-protocol';
2
+ import { Composite, Table } from '@rsdk/autodoc-protocol';
3
+ import type { RsdkMetadata } from '@rsdk/metadata';
4
+
5
+ import type { MetricRsdkMetadata } from '../types';
6
+
7
+ export class MetricAutodocResolver implements DocumentResolver {
8
+ constructor(readonly rsdkMetadata: RsdkMetadata<MetricRsdkMetadata>) {}
9
+
10
+ getNode(): DocumentNode | null {
11
+ const resources = this.rsdkMetadata.get();
12
+ if (!resources) {
13
+ return null;
14
+ }
15
+
16
+ return new Composite(
17
+ new Table(
18
+ resources.map(({ value }) => {
19
+ return {
20
+ name: value.metadata.name,
21
+ description: value.metadata.description,
22
+ type: value.type,
23
+ controllerName: value.metricController.name,
24
+ };
25
+ }),
26
+ ),
27
+ 'Metrics',
28
+ );
29
+ }
30
+ }
@@ -11,13 +11,21 @@ import type {
11
11
  } from '../../types';
12
12
  import { MetricsRegistry } from '../metrics.registry';
13
13
 
14
+ export type MetricType = 'counter' | 'gauge' | 'histogram' | 'summary';
15
+
14
16
  /**
15
- * Registers metric's metadata, which allows
16
- * MetricsModule to instantiate it and export as
17
- * a provider
17
+ * Registers a custom metric. Metrics a added to MetricsModules inside
18
+ * the core, so you **should NOT** use them as providers in your application.
19
+ *
20
+ * Conventional usage is to create a class that extends one of prom-client
21
+ * metric: Counter, Gauge, Histogram or Summary, and mark it with this
22
+ * decorator. The class should stay empty - it's is used only as a "host"
23
+ * for Metrics decorator.
18
24
  *
19
- * @param type type of metric
20
- * @param metadata respective metadata
25
+ * @param {counter|gauge|histogram|summary} type type of metric
26
+ * @param {CounterMetadata|GaugeMetadata|HistogramMetadata|SummaryMetadata} metadata
27
+ * respective metadata
28
+ * @returns {ClassDecorator}
21
29
  */
22
30
  export function Metric(
23
31
  type: 'counter',
@@ -36,7 +44,7 @@ export function Metric(
36
44
  metadata: OmitType<SummaryMetadata>,
37
45
  ): ClassDecorator;
38
46
  export function Metric(
39
- type: 'counter' | 'gauge' | 'histogram' | 'summary',
47
+ type: MetricType,
40
48
  metadata: OmitType<MetricMetadata>,
41
49
  ): ClassDecorator {
42
50
  return function (target: Function): void {
@@ -1,2 +1,5 @@
1
1
  export * from './metrics.registry';
2
2
  export * from './decorators';
3
+ export { MetricAutodocResolver } from './autodoc/metrics.autodoc-resolver';
4
+
5
+ export { MetricRsdkMetadata } from './types';