@rsdk/core 3.0.2 → 3.1.0-next.1
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/config/additional-source/additional-source.initializer.d.ts +0 -1
- package/dist/config/additional-source/additional-source.initializer.js +0 -1
- package/dist/config/additional-source/additional-source.initializer.js.map +1 -1
- package/dist/config/metadata/decorators/config-section.decorator.d.ts +12 -0
- package/dist/config/metadata/decorators/config-section.decorator.js +23 -3
- package/dist/config/metadata/decorators/config-section.decorator.js.map +1 -1
- package/dist/config/metadata/decorators/property.decorator.d.ts +1 -1
- package/dist/config/metadata/decorators/property.decorator.js +1 -1
- package/dist/config/metadata/decorators/property.decorator.js.map +1 -1
- package/dist/config/sources/config-source.decorator.d.ts +1 -0
- package/dist/config/sources/config-source.decorator.js +1 -0
- package/dist/config/sources/config-source.decorator.js.map +1 -1
- package/dist/config/types.d.ts +5 -1
- package/dist/exceptions/base/bootstrap-exception.abstract.d.ts +0 -1
- package/dist/exceptions/base/bootstrap-exception.abstract.js +0 -1
- package/dist/exceptions/base/bootstrap-exception.abstract.js.map +1 -1
- package/dist/exceptions/base/platform-exception.absract.d.ts +1 -0
- package/dist/exceptions/base/platform-exception.absract.js +1 -0
- package/dist/exceptions/base/platform-exception.absract.js.map +1 -1
- package/dist/exceptions.handling/types.d.ts +1 -1
- package/dist/rsdk-metadata/rsdk-metadata.global-module.js +1 -1
- package/package.json +10 -10
- package/src/config/additional-source/additional-source.initializer.ts +0 -1
- package/src/config/metadata/decorators/config-section.decorator.ts +52 -9
- package/src/config/metadata/decorators/property.decorator.ts +3 -3
- package/src/config/parsers/boolean/bool.spec.ts +3 -2
- package/src/config/parsers/size/size.spec.ts +2 -2
- package/src/config/parsers/timespan/timespan.spec.ts +3 -2
- package/src/config/sources/config-source.decorator.ts +1 -0
- package/src/config/types.ts +5 -3
- package/src/exceptions/base/bootstrap-exception.abstract.ts +0 -1
- package/src/exceptions/base/platform-exception.absract.ts +1 -0
- package/src/exceptions.handling/types.ts +1 -1
- package/src/rsdk-metadata/rsdk-metadata.global-module.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [3.1.0-next.1](https://github.com/R-Vision/rsdk/compare/v3.1.0-next.0...v3.1.0-next.1) (2023-08-08)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **core:** add prefix to config section decorator ([#94](https://github.com/R-Vision/rsdk/issues/94)) ([d4bd4d5](https://github.com/R-Vision/rsdk/commit/d4bd4d5e17d1431a477e6f864b3ad5408535d5c9))
|
|
11
|
+
|
|
12
|
+
## [3.1.0-next.0](https://github.com/R-Vision/rsdk/compare/v3.0.2...v3.1.0-next.0) (2023-08-08)
|
|
13
|
+
|
|
14
|
+
**Note:** Version bump only for package @rsdk/core
|
|
15
|
+
|
|
6
16
|
## [3.0.2](https://github.com/R-Vision/rsdk/compare/v3.0.1...v3.0.2) (2023-08-07)
|
|
7
17
|
|
|
8
18
|
**Note:** Version bump only for package @rsdk/core
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"additional-source.initializer.js","sourceRoot":"","sources":["../../../src/config/additional-source/additional-source.initializer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"additional-source.initializer.js","sourceRoot":"","sources":["../../../src/config/additional-source/additional-source.initializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,18 @@ export interface ConfigSectionOptions {
|
|
|
5
5
|
* Используются только в документации
|
|
6
6
|
*/
|
|
7
7
|
tags?: string[];
|
|
8
|
+
/**
|
|
9
|
+
* Всем полям указанным в теле будет добавлена строка
|
|
10
|
+
* `<PREFIX>_<PROPERTY_NAME>`
|
|
11
|
+
* @example
|
|
12
|
+
* // @ConfigSection({ prefix: 'APP_CONFIG' })
|
|
13
|
+
* class AppConfig extends Config {
|
|
14
|
+
* // @Property('FIELD', ...)
|
|
15
|
+
* field: string
|
|
16
|
+
* }
|
|
17
|
+
* // env -> APP_CONFIG_FIELD
|
|
18
|
+
*/
|
|
19
|
+
prefix?: string;
|
|
8
20
|
}
|
|
9
21
|
/**
|
|
10
22
|
* Sets metadata for Config class
|
|
@@ -1,19 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ConfigSection = void 0;
|
|
4
|
+
const common_1 = require("@rsdk/common");
|
|
4
5
|
const config_metadata_registry_1 = require("../config-metadata.registry");
|
|
5
6
|
const property_decorator_1 = require("./property.decorator");
|
|
7
|
+
function getComputedMetadata(sectionMetadata, options) {
|
|
8
|
+
if (options?.prefix) {
|
|
9
|
+
const properties = Object.fromEntries(Object.entries(sectionMetadata.properties).map(([propName, propMeta]) => {
|
|
10
|
+
return [
|
|
11
|
+
propName,
|
|
12
|
+
{
|
|
13
|
+
...propMeta,
|
|
14
|
+
key: common_1.Case.toUpperSnake(`${options.prefix}_${propMeta.key}`),
|
|
15
|
+
},
|
|
16
|
+
];
|
|
17
|
+
}));
|
|
18
|
+
return {
|
|
19
|
+
...sectionMetadata,
|
|
20
|
+
properties,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
return sectionMetadata;
|
|
24
|
+
}
|
|
6
25
|
/**
|
|
7
26
|
* Sets metadata for Config class
|
|
8
27
|
* @param options ConfigSectionOptions
|
|
9
28
|
* @returns ClassDecorator
|
|
10
29
|
*/
|
|
11
30
|
const ConfigSection = (options) => function (target) {
|
|
12
|
-
const metadata = Reflect.getMetadata(property_decorator_1.CONFIG_METADATA_KEY, target)
|
|
13
|
-
|
|
31
|
+
const metadata = (Reflect.getMetadata(property_decorator_1.CONFIG_METADATA_KEY, target) ??
|
|
32
|
+
{});
|
|
33
|
+
config_metadata_registry_1.ConfigMetadataRegistry.registerSection(target, getComputedMetadata({
|
|
14
34
|
...metadata,
|
|
15
35
|
...options,
|
|
16
|
-
});
|
|
36
|
+
}, options));
|
|
17
37
|
};
|
|
18
38
|
exports.ConfigSection = ConfigSection;
|
|
19
39
|
//# sourceMappingURL=config-section.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-section.decorator.js","sourceRoot":"","sources":["../../../../src/config/metadata/decorators/config-section.decorator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"config-section.decorator.js","sourceRoot":"","sources":["../../../../src/config/metadata/decorators/config-section.decorator.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AAGpC,0EAAqE;AAErE,6DAA2D;AAwB3D,SAAS,mBAAmB,CAC1B,eAAgC,EAChC,OAA8B;IAE9B,IAAI,OAAO,EAAE,MAAM,EAAE;QACnB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACnC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE;YACtE,OAAO;gBACL,QAAQ;gBACR;oBACE,GAAG,QAAQ;oBACX,GAAG,EAAE,aAAI,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;iBAC5D;aACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QAEF,OAAO;YACL,GAAG,eAAe;YAClB,UAAU;SACX,CAAC;KACH;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACI,MAAM,aAAa,GAAG,CAAC,OAA8B,EAAkB,EAAE,CAC9E,UAAU,MAAgB;IACxB,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,wCAAmB,EAAE,MAAM,CAAC;QAChE,EAAE,CAAoB,CAAC;IAEzB,iDAAsB,CAAC,eAAe,CACpC,MAAqB,EACrB,mBAAmB,CACjB;QACE,GAAG,QAAQ;QACX,GAAG,OAAO;KACX,EACD,OAAO,CACR,CACF,CAAC;AACJ,CAAC,CAAC;AAfS,QAAA,aAAa,iBAetB"}
|
|
@@ -9,4 +9,4 @@ export declare const CONFIG_METADATA_KEY = "CONFIG_METADATA";
|
|
|
9
9
|
* @param options Additional options (default value, description etc.)
|
|
10
10
|
* @returns PropertyDecorator
|
|
11
11
|
*/
|
|
12
|
-
export declare const Property: <T>(key: string, parser: PropertyParser<T>, options: PropertyOptions<T>) =>
|
|
12
|
+
export declare const Property: <T>(key: string, parser: PropertyParser<T>, options: PropertyOptions<T>) => (target: object, propertyKey: string) => void;
|
|
@@ -13,7 +13,7 @@ exports.CONFIG_METADATA_KEY = 'CONFIG_METADATA';
|
|
|
13
13
|
*/
|
|
14
14
|
const Property = (key, parser, options) => function (target, propertyKey) {
|
|
15
15
|
const ctor = target.constructor;
|
|
16
|
-
const metadata = Reflect.getMetadata(exports.CONFIG_METADATA_KEY, ctor)
|
|
16
|
+
const metadata = Reflect.getMetadata(exports.CONFIG_METADATA_KEY, ctor) ?? { properties: {} };
|
|
17
17
|
metadata.properties[propertyKey] = {
|
|
18
18
|
expectedInEnv: false,
|
|
19
19
|
key,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"property.decorator.js","sourceRoot":"","sources":["../../../../src/config/metadata/decorators/property.decorator.ts"],"names":[],"mappings":";;;AAMa,QAAA,mBAAmB,GAAG,iBAAiB,CAAC;AAErD;;;;;;;;GAQG;AACI,MAAM,QAAQ,GAAG,CACtB,GAAW,EACX,MAAyB,EACzB,OAA2B,
|
|
1
|
+
{"version":3,"file":"property.decorator.js","sourceRoot":"","sources":["../../../../src/config/metadata/decorators/property.decorator.ts"],"names":[],"mappings":";;;AAMa,QAAA,mBAAmB,GAAG,iBAAiB,CAAC;AAErD;;;;;;;;GAQG;AACI,MAAM,QAAQ,GAAG,CACtB,GAAW,EACX,MAAyB,EACzB,OAA2B,EACsB,EAAE,CACnD,UAAU,MAAc,EAAE,WAAmB;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhC,MAAM,QAAQ,GAAI,OAAO,CAAC,WAAW,CACnC,2BAAmB,EACnB,IAAI,CACe,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAE5C,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG;QACjC,aAAa,EAAE,KAAK;QACpB,GAAG;QACH,MAAM;QACN,GAAG,OAAO;KACX,CAAC;IAEF,OAAO,CAAC,cAAc,CAAC,2BAAmB,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC;AArBS,QAAA,QAAQ,YAqBjB;AAEJ,6GAA6G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-source.decorator.js","sourceRoot":"","sources":["../../../src/config/sources/config-source.decorator.ts"],"names":[],"mappings":";;;AAGA,0CAAqD;AAGrD,MAAM,mBAAmB,GAAG,4BAA4B,CAAC;AAOzD,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B
|
|
1
|
+
{"version":3,"file":"config-source.decorator.js","sourceRoot":"","sources":["../../../src/config/sources/config-source.decorator.ts"],"names":[],"mappings":";;;AAGA,0CAAqD;AAGrD,MAAM,mBAAmB,GAAG,4BAA4B,CAAC;AAOzD,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B;;;;;;GAMG;AACI,MAAM,MAAM,GAAG,CACpB,IAAgB,EAChB,UAAyB,EAAE,EACX,EAAE;IAClB,OAAO,UAAU,MAAgB;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;QACzC,MAAM,gBAAgB,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAExE,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAEtE,iCAAsB,CAAC,cAAc,CACnC,MAAqB,EACrB,gBAAgB,CACjB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,MAAM,UAejB"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -27,9 +27,13 @@ export interface PropertyMetadata<T = any> {
|
|
|
27
27
|
export interface SectionMetadata {
|
|
28
28
|
name?: string;
|
|
29
29
|
constructorName: string;
|
|
30
|
-
|
|
30
|
+
/**
|
|
31
|
+
* Record because must be natively serialized to rsdk.json
|
|
32
|
+
*/
|
|
33
|
+
properties: Record<string, PropertyMetadata>;
|
|
31
34
|
description?: string;
|
|
32
35
|
tags?: string[];
|
|
36
|
+
prefix?: string;
|
|
33
37
|
}
|
|
34
38
|
export interface SourceMetadata {
|
|
35
39
|
type: SourceType;
|
|
@@ -7,7 +7,6 @@ import { PlatformException } from './platform-exception.absract';
|
|
|
7
7
|
*/
|
|
8
8
|
export declare abstract class BootstrapException extends PlatformException {
|
|
9
9
|
/**
|
|
10
|
-
* @param kind kind of pipeline error
|
|
11
10
|
* @param message error message
|
|
12
11
|
* @param props additional properties
|
|
13
12
|
*/
|
|
@@ -9,7 +9,6 @@ const platform_exception_absract_1 = require("./platform-exception.absract");
|
|
|
9
9
|
*/
|
|
10
10
|
class BootstrapException extends platform_exception_absract_1.PlatformException {
|
|
11
11
|
/**
|
|
12
|
-
* @param kind kind of pipeline error
|
|
13
12
|
* @param message error message
|
|
14
13
|
* @param props additional properties
|
|
15
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap-exception.abstract.js","sourceRoot":"","sources":["../../../src/exceptions/base/bootstrap-exception.abstract.ts"],"names":[],"mappings":";;;AACA,6EAAiE;AAEjE;;;;GAIG;AACH,MAAsB,kBAAmB,SAAQ,8CAAiB;IAChE
|
|
1
|
+
{"version":3,"file":"bootstrap-exception.abstract.js","sourceRoot":"","sources":["../../../src/exceptions/base/bootstrap-exception.abstract.ts"],"names":[],"mappings":";;;AACA,6EAAiE;AAEjE;;;;GAIG;AACH,MAAsB,kBAAmB,SAAQ,8CAAiB;IAChE;;;OAGG;IACH,YAAY,OAAe,EAAE,KAAuB;QAClD,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;QAEvC,KAAK,CAAC,IAAI,IAAI,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF;AAVD,gDAUC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-exception.absract.js","sourceRoot":"","sources":["../../../src/exceptions/base/platform-exception.absract.ts"],"names":[],"mappings":";;;AAkBA;;;;;GAKG;AACH,MAAsB,iBAA2B,SAAQ,KAAK;IAC5D;;OAEG;IACM,QAAQ,CAAS;IAE1B;;OAEG;IACM,IAAI,CAAgB;IAE7B;;;OAGG;IACe,KAAK,CAAsB;IAE7C;;;;OAIG;IACM,OAAO,CAAgB;IAEhC
|
|
1
|
+
{"version":3,"file":"platform-exception.absract.js","sourceRoot":"","sources":["../../../src/exceptions/base/platform-exception.absract.ts"],"names":[],"mappings":";;;AAkBA;;;;;GAKG;AACH,MAAsB,iBAA2B,SAAQ,KAAK;IAC5D;;OAEG;IACM,QAAQ,CAAS;IAE1B;;OAEG;IACM,IAAI,CAAgB;IAE7B;;;OAGG;IACe,KAAK,CAAsB;IAE7C;;;;OAIG;IACM,OAAO,CAAgB;IAEhC;;;;OAIG;IACH,YACE,IAAmB,EACnB,OAAe,EACf,KAAwC;QAExC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,EAAE,OAAO,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,EAAS;QAC5B,IACE,CAAC,EAAE;YACH,CAAC,CAAC,EAAE,YAAY,iBAAiB,CAAC;YAClC,CAAC,EAAE,CAAC,KAAK;YACT,CAAC,CAAC,EAAE,CAAC,KAAK,YAAY,KAAK,CAAC,EAC5B;YACA,OAAO,EAAE,CAAC;SACX;QAED,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;CACF;AArDD,8CAqDC"}
|
|
@@ -46,7 +46,7 @@ export interface IErrorsSender {
|
|
|
46
46
|
* Implementation of sending error back to the client
|
|
47
47
|
*
|
|
48
48
|
* @param host ArgumentsHost - nest.js wrapper over request context
|
|
49
|
-
* @param
|
|
49
|
+
* @param ex
|
|
50
50
|
*/
|
|
51
51
|
send(host: ArgumentsHost, ex: unknown): Observable<any> | typeof EMPTY;
|
|
52
52
|
}
|
|
@@ -10,7 +10,7 @@ class RsdkMetadataGlobalModule {
|
|
|
10
10
|
const rsdkMetadataProvider = await metadata_1.RsdkMetadataProvider.create(rootModule);
|
|
11
11
|
const resources = rsdkMetadataProvider.get(constants_1.PLATFORM_RAW_GLOBAL_METADATA_SCOPE);
|
|
12
12
|
const imports = resources.map(({ value }) => value);
|
|
13
|
-
RsdkMetadataGlobalModule.logger.
|
|
13
|
+
RsdkMetadataGlobalModule.logger.trace('extracted imports: ', {
|
|
14
14
|
imports,
|
|
15
15
|
});
|
|
16
16
|
return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsdk/core",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.1.0-next.1",
|
|
4
4
|
"description": "Nestjs based microservice chassis",
|
|
5
5
|
"license": "Apache License 2.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -31,17 +31,17 @@
|
|
|
31
31
|
"@nestjs/common": "^10.1.3",
|
|
32
32
|
"@nestjs/core": "^10.1.3",
|
|
33
33
|
"@nestjs/microservices": "^10.1.3",
|
|
34
|
-
"@rsdk/autodoc.protocol": "^3.0.
|
|
35
|
-
"@rsdk/common": "^3.0.
|
|
36
|
-
"@rsdk/common.nestjs": "^3.0.
|
|
37
|
-
"@rsdk/common.node": "^3.0.
|
|
38
|
-
"@rsdk/decorators": "^3.0.
|
|
39
|
-
"@rsdk/logging": "^3.0.
|
|
40
|
-
"@rsdk/metadata": "^3.0.
|
|
41
|
-
"@rsdk/nest-tools": "^3.0.
|
|
34
|
+
"@rsdk/autodoc.protocol": "^3.1.0-next.0",
|
|
35
|
+
"@rsdk/common": "^3.1.0-next.0",
|
|
36
|
+
"@rsdk/common.nestjs": "^3.1.0-next.0",
|
|
37
|
+
"@rsdk/common.node": "^3.1.0-next.0",
|
|
38
|
+
"@rsdk/decorators": "^3.1.0-next.0",
|
|
39
|
+
"@rsdk/logging": "^3.1.0-next.0",
|
|
40
|
+
"@rsdk/metadata": "^3.1.0-next.0",
|
|
41
|
+
"@rsdk/nest-tools": "^3.1.0-next.0",
|
|
42
42
|
"axios": "^1.1.3",
|
|
43
43
|
"reflect-metadata": "^0.1.13",
|
|
44
44
|
"rxjs": "^7.0.0"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "e9002b175fb3d24b9bae5169df59bd250091672c"
|
|
47
47
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
2
|
import type { Constructor } from '@rsdk/common';
|
|
3
|
+
import { Case } from '@rsdk/common';
|
|
3
4
|
|
|
4
5
|
import type { SectionMetadata } from '../../types';
|
|
5
6
|
import { ConfigMetadataRegistry } from '../config-metadata.registry';
|
|
@@ -13,6 +14,44 @@ export interface ConfigSectionOptions {
|
|
|
13
14
|
* Используются только в документации
|
|
14
15
|
*/
|
|
15
16
|
tags?: string[];
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Всем полям указанным в теле будет добавлена строка
|
|
20
|
+
* `<PREFIX>_<PROPERTY_NAME>`
|
|
21
|
+
* @example
|
|
22
|
+
* // @ConfigSection({ prefix: 'APP_CONFIG' })
|
|
23
|
+
* class AppConfig extends Config {
|
|
24
|
+
* // @Property('FIELD', ...)
|
|
25
|
+
* field: string
|
|
26
|
+
* }
|
|
27
|
+
* // env -> APP_CONFIG_FIELD
|
|
28
|
+
*/
|
|
29
|
+
prefix?: string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function getComputedMetadata(
|
|
33
|
+
sectionMetadata: SectionMetadata,
|
|
34
|
+
options?: ConfigSectionOptions,
|
|
35
|
+
): SectionMetadata {
|
|
36
|
+
if (options?.prefix) {
|
|
37
|
+
const properties = Object.fromEntries(
|
|
38
|
+
Object.entries(sectionMetadata.properties).map(([propName, propMeta]) => {
|
|
39
|
+
return [
|
|
40
|
+
propName,
|
|
41
|
+
{
|
|
42
|
+
...propMeta,
|
|
43
|
+
key: Case.toUpperSnake(`${options.prefix}_${propMeta.key}`),
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
}),
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
...sectionMetadata,
|
|
51
|
+
properties,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return sectionMetadata;
|
|
16
55
|
}
|
|
17
56
|
|
|
18
57
|
/**
|
|
@@ -22,13 +61,17 @@ export interface ConfigSectionOptions {
|
|
|
22
61
|
*/
|
|
23
62
|
export const ConfigSection = (options?: ConfigSectionOptions): ClassDecorator =>
|
|
24
63
|
function (target: Function): void {
|
|
25
|
-
const metadata = Reflect.getMetadata(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
64
|
+
const metadata = (Reflect.getMetadata(CONFIG_METADATA_KEY, target) ??
|
|
65
|
+
{}) as SectionMetadata;
|
|
66
|
+
|
|
67
|
+
ConfigMetadataRegistry.registerSection(
|
|
68
|
+
target as Constructor,
|
|
69
|
+
getComputedMetadata(
|
|
70
|
+
{
|
|
71
|
+
...metadata,
|
|
72
|
+
...options,
|
|
73
|
+
},
|
|
74
|
+
options,
|
|
75
|
+
),
|
|
76
|
+
);
|
|
34
77
|
};
|
|
@@ -19,14 +19,14 @@ export const Property = <T>(
|
|
|
19
19
|
key: string,
|
|
20
20
|
parser: PropertyParser<T>,
|
|
21
21
|
options: PropertyOptions<T>,
|
|
22
|
-
):
|
|
23
|
-
function (target: object, propertyKey: string
|
|
22
|
+
): ((target: object, propertyKey: string) => void) =>
|
|
23
|
+
function (target: object, propertyKey: string): void {
|
|
24
24
|
const ctor = target.constructor;
|
|
25
25
|
|
|
26
26
|
const metadata = (Reflect.getMetadata(
|
|
27
27
|
CONFIG_METADATA_KEY,
|
|
28
28
|
ctor,
|
|
29
|
-
) as SectionMetadata)
|
|
29
|
+
) as SectionMetadata) ?? { properties: {} };
|
|
30
30
|
|
|
31
31
|
metadata.properties[propertyKey] = {
|
|
32
32
|
expectedInEnv: false,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
describe('TimespanParser', () => {
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
3
|
-
it('See tests for Timespan class in @rsdk/common', () =>
|
|
4
|
-
|
|
3
|
+
it('See tests for Timespan class in @rsdk/common', () =>
|
|
4
|
+
expect(true).toBe(true));
|
|
5
|
+
});
|
package/src/config/types.ts
CHANGED
|
@@ -33,11 +33,13 @@ export interface PropertyMetadata<T = any> {
|
|
|
33
33
|
export interface SectionMetadata {
|
|
34
34
|
name?: string;
|
|
35
35
|
constructorName: string;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Record because must be natively serialized to rsdk.json
|
|
38
|
+
*/
|
|
39
|
+
properties: Record<string, PropertyMetadata>;
|
|
39
40
|
description?: string;
|
|
40
41
|
tags?: string[];
|
|
42
|
+
prefix?: string;
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
export interface SourceMetadata {
|
|
@@ -8,7 +8,6 @@ import { PlatformException } from './platform-exception.absract';
|
|
|
8
8
|
*/
|
|
9
9
|
export abstract class BootstrapException extends PlatformException {
|
|
10
10
|
/**
|
|
11
|
-
* @param kind kind of pipeline error
|
|
12
11
|
* @param message error message
|
|
13
12
|
* @param props additional properties
|
|
14
13
|
*/
|
|
@@ -51,7 +51,7 @@ export interface IErrorsSender {
|
|
|
51
51
|
* Implementation of sending error back to the client
|
|
52
52
|
*
|
|
53
53
|
* @param host ArgumentsHost - nest.js wrapper over request context
|
|
54
|
-
* @param
|
|
54
|
+
* @param ex
|
|
55
55
|
*/
|
|
56
56
|
send(host: ArgumentsHost, ex: unknown): Observable<any> | typeof EMPTY;
|
|
57
57
|
}
|
|
@@ -15,7 +15,7 @@ export class RsdkMetadataGlobalModule {
|
|
|
15
15
|
);
|
|
16
16
|
const imports = resources.map(({ value }) => value);
|
|
17
17
|
|
|
18
|
-
RsdkMetadataGlobalModule.logger.
|
|
18
|
+
RsdkMetadataGlobalModule.logger.trace('extracted imports: ', {
|
|
19
19
|
imports,
|
|
20
20
|
});
|
|
21
21
|
return {
|