@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.
- package/CHANGELOG.md +10 -0
- package/dist/app/platform.app.d.ts +3 -1
- package/dist/app/platform.app.js +24 -0
- package/dist/app/platform.app.js.map +1 -1
- package/dist/config/config.const.d.ts +13 -0
- package/dist/config/config.const.js +17 -0
- package/dist/config/config.const.js.map +1 -0
- package/dist/config/metadata/decorators/config-section.decorator.d.ts +4 -0
- package/dist/config/metadata/decorators/config-section.decorator.js.map +1 -1
- package/dist/config/types.d.ts +3 -1
- package/dist/exceptions.handling/global-exceptions.config.js +4 -1
- package/dist/exceptions.handling/global-exceptions.config.js.map +1 -1
- package/dist/health/autodoc/heath.autodoc-resolver.d.ts +16 -0
- package/dist/health/autodoc/heath.autodoc-resolver.js +24 -0
- package/dist/health/autodoc/heath.autodoc-resolver.js.map +1 -0
- package/dist/health/health.service.d.ts +2 -1
- package/dist/health/health.service.js.map +1 -1
- package/dist/health/index.d.ts +1 -0
- package/dist/health/index.js +3 -0
- package/dist/health/index.js.map +1 -1
- package/dist/health/metadata/indicator.decorator.d.ts +16 -0
- package/dist/health/metadata/indicator.decorator.js +21 -0
- package/dist/health/metadata/indicator.decorator.js.map +1 -1
- package/dist/health/metadata/indicators.registry.js +0 -3
- package/dist/health/metadata/indicators.registry.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/logging/logging.config.js +4 -1
- package/dist/logging/logging.config.js.map +1 -1
- package/dist/metrics/index.d.ts +2 -0
- package/dist/metrics/index.js +3 -1
- package/dist/metrics/index.js.map +1 -1
- package/dist/metrics/metadata/autodoc/metrics.autodoc-resolver.d.ts +8 -0
- package/dist/metrics/metadata/autodoc/metrics.autodoc-resolver.js +26 -0
- package/dist/metrics/metadata/autodoc/metrics.autodoc-resolver.js.map +1 -0
- package/dist/metrics/metadata/decorators/metric.decorator.d.ts +12 -5
- package/dist/metrics/metadata/decorators/metric.decorator.js.map +1 -1
- package/dist/metrics/metadata/index.d.ts +2 -0
- package/dist/metrics/metadata/index.js +3 -0
- package/dist/metrics/metadata/index.js.map +1 -1
- package/dist/metrics/metadata/types.d.ts +8 -0
- package/dist/metrics/metadata/types.js +3 -0
- package/dist/metrics/metadata/types.js.map +1 -0
- package/dist/metrics/metrics.config.js +5 -1
- package/dist/metrics/metrics.config.js.map +1 -1
- package/dist/metrics/metrics.module.js +15 -3
- package/dist/metrics/metrics.module.js.map +1 -1
- package/dist/platform.context.d.ts +5 -3
- package/dist/platform.context.js +31 -14
- package/dist/platform.context.js.map +1 -1
- package/dist/tracing/tracing.config.js +4 -1
- package/dist/tracing/tracing.config.js.map +1 -1
- package/dist/types/metadata.d.ts +7 -1
- package/dist/types/metadata.js.map +1 -1
- package/dist/types/options.d.ts +3 -1
- package/package.json +20 -18
- package/src/app/platform.app.ts +33 -1
- package/src/config/config.const.ts +13 -0
- package/src/config/metadata/decorators/config-section.decorator.ts +4 -0
- package/src/config/types.ts +3 -1
- package/src/exceptions.handling/global-exceptions.config.ts +4 -1
- package/src/health/autodoc/heath.autodoc-resolver.ts +33 -0
- package/src/health/health.service.ts +2 -1
- package/src/health/index.ts +1 -0
- package/src/health/metadata/indicator.decorator.ts +34 -0
- package/src/health/metadata/indicators.registry.ts +0 -4
- package/src/index.ts +2 -0
- package/src/logging/logging.config.ts +4 -1
- package/src/metrics/index.ts +2 -0
- package/src/metrics/metadata/autodoc/metrics.autodoc-resolver.ts +30 -0
- package/src/metrics/metadata/decorators/metric.decorator.ts +14 -6
- package/src/metrics/metadata/index.ts +3 -0
- package/src/metrics/metadata/types.ts +11 -0
- package/src/metrics/metrics.config.ts +5 -1
- package/src/metrics/metrics.module.ts +23 -2
- package/src/platform.context.ts +40 -21
- package/src/tracing/tracing.config.ts +4 -1
- package/src/types/metadata.ts +8 -1
- package/src/types/options.ts +3 -1
- package/tsconfig.json +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Constructor } from '@rsdk/common';
|
|
2
|
+
|
|
3
|
+
import type { AnyMetric, MetricMetadata, OmitType } from '../types';
|
|
4
|
+
|
|
5
|
+
import type { MetricType } from './decorators';
|
|
6
|
+
|
|
7
|
+
export type MetricRsdkMetadata = {
|
|
8
|
+
type: MetricType;
|
|
9
|
+
metadata: OmitType<MetricMetadata>;
|
|
10
|
+
metricController: Constructor<AnyMetric>;
|
|
11
|
+
};
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { BoolParser, Config, ConfigSection, Property } from '../config';
|
|
2
|
+
import { ConfigTag } from '../config/config.const';
|
|
2
3
|
|
|
3
|
-
@ConfigSection({
|
|
4
|
+
@ConfigSection({
|
|
5
|
+
name: 'Metrics configuration',
|
|
6
|
+
tags: [ConfigTag.infrastructure, ConfigTag.metric],
|
|
7
|
+
})
|
|
4
8
|
export class MetricsModuleConfig extends Config {
|
|
5
9
|
@Property('METRICS_ENABLED', new BoolParser(), {
|
|
6
10
|
defaultValue: true,
|
|
@@ -4,12 +4,15 @@ import type {
|
|
|
4
4
|
Provider,
|
|
5
5
|
} from '@nestjs/common';
|
|
6
6
|
import { Module } from '@nestjs/common';
|
|
7
|
+
import { AutodocMetadata } from '@rsdk/autodoc-protocol';
|
|
7
8
|
import type { Constructor } from '@rsdk/common';
|
|
9
|
+
import { RsdkMetadata } from '@rsdk/metadata';
|
|
8
10
|
import client from 'prom-client';
|
|
9
11
|
|
|
10
12
|
import { PlatformConfigModule } from '../config';
|
|
11
13
|
|
|
12
|
-
import {
|
|
14
|
+
import type { MetricRsdkMetadata } from './metadata';
|
|
15
|
+
import { MetricAutodocResolver, MetricsRegistry } from './metadata';
|
|
13
16
|
import { MetricsModuleConfig } from './metrics.config';
|
|
14
17
|
import type { AnyMetric, MetricsModuleOptions } from './types';
|
|
15
18
|
|
|
@@ -65,10 +68,28 @@ export class MetricsModule implements OnApplicationBootstrap {
|
|
|
65
68
|
|
|
66
69
|
const metadata = MetricsRegistry.getOne(ctor);
|
|
67
70
|
|
|
68
|
-
|
|
71
|
+
const provider = {
|
|
69
72
|
provide: ctor,
|
|
70
73
|
useValue: new ctor(metadata),
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const rsdkMetadata = new RsdkMetadata<MetricRsdkMetadata>(
|
|
77
|
+
provider,
|
|
78
|
+
'metrics',
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
rsdkMetadata.add({
|
|
82
|
+
type: metadata.type,
|
|
83
|
+
metricController: ctor,
|
|
84
|
+
metadata,
|
|
71
85
|
});
|
|
86
|
+
|
|
87
|
+
const autodocMetadata = new AutodocMetadata(rsdkMetadata);
|
|
88
|
+
|
|
89
|
+
const metricsDocumentResolver = new MetricAutodocResolver(rsdkMetadata);
|
|
90
|
+
|
|
91
|
+
autodocMetadata.defineResolver(metricsDocumentResolver);
|
|
92
|
+
providers.push(provider);
|
|
72
93
|
}
|
|
73
94
|
|
|
74
95
|
return {
|
package/src/platform.context.ts
CHANGED
|
@@ -2,10 +2,12 @@ import type { DynamicModule, INestMicroservice } 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 { Constructor } from '@rsdk/common';
|
|
5
6
|
import { LoggerFactory } from '@rsdk/logging';
|
|
6
7
|
import { groupBy, intersection } from 'lodash';
|
|
7
8
|
|
|
8
9
|
import { Manifest } from './manifest/manifest';
|
|
10
|
+
import type { Config, SectionMetadata } from './config';
|
|
9
11
|
import { ConfigMetadataRegistry, PlatformConfigModule } from './config';
|
|
10
12
|
import {
|
|
11
13
|
DuplicateProtocolException,
|
|
@@ -34,12 +36,11 @@ import {
|
|
|
34
36
|
*/
|
|
35
37
|
export class PlatformContext {
|
|
36
38
|
readonly logger = LoggerFactory.create('App');
|
|
37
|
-
readonly root: DynamicModule;
|
|
38
|
-
|
|
39
39
|
private microservices: Map<INestMicroservice, IMicroserviceTransport>;
|
|
40
40
|
private readonly httpTransport: IHttpTransport | undefined;
|
|
41
41
|
private readonly httpAdapter: AbstractHttpAdapter;
|
|
42
|
-
private
|
|
42
|
+
private _extendedOptions: PlatformExtendedOptions;
|
|
43
|
+
private _root: DynamicModule;
|
|
43
44
|
|
|
44
45
|
/**
|
|
45
46
|
* Создаёт контекст проводя базовые проверки
|
|
@@ -53,28 +54,39 @@ export class PlatformContext {
|
|
|
53
54
|
PlatformContext.assertTransportCompatability(options);
|
|
54
55
|
PlatformContext.assertPluginCompatability(options);
|
|
55
56
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
this.httpTransport = options.transports?.find?.(isHttpTransport);
|
|
58
|
+
this.httpAdapter =
|
|
59
|
+
this.httpTransport?.getAdapter() ?? new NoopHttpAdapter();
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
get root(): DynamicModule {
|
|
63
|
+
if (this._root) {
|
|
64
|
+
return this._root;
|
|
65
|
+
}
|
|
66
|
+
PlatformConfigModule.bootstrap({
|
|
67
|
+
...(this.extendedOptions.config ?? {}),
|
|
68
|
+
appName: this.extendedOptions.name,
|
|
69
|
+
});
|
|
70
|
+
this._root = PlatformModule.forRoot(this.extendedOptions);
|
|
71
|
+
return this._root;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
get extendedOptions(): PlatformExtendedOptions {
|
|
75
|
+
if (this._extendedOptions) {
|
|
76
|
+
return this._extendedOptions;
|
|
77
|
+
}
|
|
78
|
+
const manifestData = Manifest.getData(this.options.manifestPath);
|
|
79
|
+
const { name, description, version } = manifestData;
|
|
59
80
|
|
|
60
81
|
const extendedOptions: PlatformExtendedOptions = {
|
|
61
82
|
description,
|
|
62
83
|
name,
|
|
63
84
|
version,
|
|
64
|
-
...options,
|
|
85
|
+
...this.options,
|
|
65
86
|
};
|
|
66
87
|
|
|
67
|
-
this.
|
|
68
|
-
|
|
69
|
-
PlatformConfigModule.bootstrap({
|
|
70
|
-
...(extendedOptions.config ?? {}),
|
|
71
|
-
appName: extendedOptions.name,
|
|
72
|
-
});
|
|
73
|
-
this.httpTransport = options.transports?.find?.(isHttpTransport);
|
|
74
|
-
this.httpAdapter =
|
|
75
|
-
this.httpTransport?.getAdapter() ?? new NoopHttpAdapter();
|
|
76
|
-
|
|
77
|
-
this.root = PlatformModule.forRoot(this.extendedOptions);
|
|
88
|
+
this._extendedOptions = extendedOptions;
|
|
89
|
+
return this._extendedOptions;
|
|
78
90
|
}
|
|
79
91
|
|
|
80
92
|
private static assertPluginCompatability(options: PlatformOptions): void {
|
|
@@ -115,14 +127,21 @@ export class PlatformContext {
|
|
|
115
127
|
|
|
116
128
|
return {
|
|
117
129
|
name: options.name,
|
|
118
|
-
|
|
130
|
+
version: options.version,
|
|
119
131
|
description: options.description,
|
|
120
132
|
protocols: protocols,
|
|
121
133
|
|
|
122
134
|
config: {
|
|
123
135
|
prefix: options.name,
|
|
124
|
-
sections: [...confMetadata.sections.
|
|
125
|
-
|
|
136
|
+
sections: [...confMetadata.sections.entries()].map(
|
|
137
|
+
([section, metadata]: [
|
|
138
|
+
section: Constructor<Config>,
|
|
139
|
+
metadata: SectionMetadata,
|
|
140
|
+
]) =>
|
|
141
|
+
transformSectionMetadata({
|
|
142
|
+
...metadata,
|
|
143
|
+
constructorName: section.name,
|
|
144
|
+
}),
|
|
126
145
|
),
|
|
127
146
|
sources: [...confMetadata.sources.values()],
|
|
128
147
|
|
|
@@ -5,8 +5,11 @@ import {
|
|
|
5
5
|
Property,
|
|
6
6
|
UrlParser,
|
|
7
7
|
} from '../config';
|
|
8
|
+
import { ConfigTag } from '../config/config.const';
|
|
8
9
|
|
|
9
|
-
@ConfigSection(
|
|
10
|
+
@ConfigSection({
|
|
11
|
+
tags: [ConfigTag.infrastructure, ConfigTag.tracing],
|
|
12
|
+
})
|
|
10
13
|
export class TracingModuleConfig extends Config {
|
|
11
14
|
@Property('TRACING_ENABLED', new BoolParser(), {
|
|
12
15
|
defaultValue: false,
|
package/src/types/metadata.ts
CHANGED
|
@@ -49,7 +49,9 @@ export type SerializableSectionMetadata = Omit<
|
|
|
49
49
|
export const transformSectionMetadata = ({
|
|
50
50
|
properties,
|
|
51
51
|
...rest
|
|
52
|
-
}: SectionMetadata
|
|
52
|
+
}: SectionMetadata & {
|
|
53
|
+
constructorName: string;
|
|
54
|
+
}): SerializableSectionMetadata => ({
|
|
53
55
|
...rest,
|
|
54
56
|
// TODO: Если properties переделается в мапу, может быть проблема
|
|
55
57
|
properties: Object.values(properties).map(serializePropertyMetadata),
|
|
@@ -76,6 +78,11 @@ export interface PlatformAppMetadata {
|
|
|
76
78
|
*/
|
|
77
79
|
description: string;
|
|
78
80
|
|
|
81
|
+
/**
|
|
82
|
+
* Application version
|
|
83
|
+
*/
|
|
84
|
+
version: string;
|
|
85
|
+
|
|
79
86
|
/**
|
|
80
87
|
* Supported protocols
|
|
81
88
|
*/
|
package/src/types/options.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DynamicModule } from '@nestjs/common';
|
|
1
2
|
import type { Constructor, RequiredFields } from '@rsdk/common';
|
|
2
3
|
|
|
3
4
|
import type { ConfigModuleOptions } from '../config';
|
|
@@ -8,7 +9,8 @@ import type { IPrimaryTransport, ITransport } from './transports';
|
|
|
8
9
|
/**
|
|
9
10
|
* Not empty collection of modules
|
|
10
11
|
*/
|
|
11
|
-
type
|
|
12
|
+
type Module = DynamicModule | Constructor;
|
|
13
|
+
type Modules = [Module, ...Module[]];
|
|
12
14
|
|
|
13
15
|
export interface ManifestData {
|
|
14
16
|
/**
|