@rsdk/core 1.0.12 → 2.0.0
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 +50 -0
- package/dist/app/platform.app.d.ts +1 -1
- package/dist/app/platform.app.js +3 -25
- package/dist/app/platform.app.js.map +1 -1
- package/dist/app-metadata/app-metadata.module.js.map +1 -1
- package/dist/app-metadata/exceptions/app-name-validation.exception.js.map +1 -1
- package/dist/config/additional-source/additional-source.initializer.d.ts +6 -2
- package/dist/config/additional-source/additional-source.initializer.js +24 -18
- package/dist/config/additional-source/additional-source.initializer.js.map +1 -1
- package/dist/config/additional-source/additional-source.module.d.ts +1 -1
- package/dist/config/additional-source/additional-source.module.js +3 -1
- package/dist/config/additional-source/additional-source.module.js.map +1 -1
- package/dist/config/config-reload.indicator.d.ts +3 -2
- package/dist/config/config-reload.indicator.js +4 -3
- package/dist/config/config-reload.indicator.js.map +1 -1
- package/dist/config/config.abstract.d.ts +3 -2
- package/dist/config/config.abstract.js +3 -3
- package/dist/config/config.abstract.js.map +1 -1
- package/dist/config/config.module.d.ts +0 -81
- package/dist/config/config.module.js +26 -203
- package/dist/config/config.module.js.map +1 -1
- package/dist/config/context/config.context.d.ts +75 -0
- package/dist/config/context/config.context.js +159 -0
- package/dist/config/context/config.context.js.map +1 -0
- package/dist/config/context/module.d.ts +5 -0
- package/dist/config/context/module.js +26 -0
- package/dist/config/context/module.js.map +1 -0
- package/dist/config/exceptions/config-not-bootstrapped.exception.js.map +1 -1
- package/dist/config/exceptions/property.exception.d.ts +9 -2
- package/dist/config/exceptions/property.exception.js +4 -6
- package/dist/config/exceptions/property.exception.js.map +1 -1
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.js +3 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/metadata/config-metadata.provider.d.ts +21 -0
- package/dist/config/metadata/config-metadata.provider.js +37 -0
- package/dist/config/metadata/config-metadata.provider.js.map +1 -0
- package/dist/config/metadata/config-metadata.registry.d.ts +1 -9
- package/dist/config/metadata/config-metadata.registry.js +9 -28
- package/dist/config/metadata/config-metadata.registry.js.map +1 -1
- package/dist/config/metadata/constants.d.ts +3 -0
- package/dist/config/metadata/constants.js +7 -0
- package/dist/config/metadata/constants.js.map +1 -0
- package/dist/config/metadata/decorators/declare-property.decorator.js +2 -2
- package/dist/config/metadata/decorators/declare-property.decorator.js.map +1 -1
- package/dist/config/metadata/decorators/inject-property.decorator.d.ts +1 -1
- package/dist/config/metadata/decorators/inject-property.decorator.js +1 -1
- package/dist/config/metadata/exceptions/duplicate-property.exception.js.map +1 -1
- package/dist/config/metadata/exceptions/duplicate-section.exception.js.map +1 -1
- package/dist/config/metadata/exceptions/duplicate-source.exception.js.map +1 -1
- package/dist/config/metadata/types.d.ts +16 -0
- package/dist/config/metadata/types.js +3 -0
- package/dist/config/metadata/types.js.map +1 -0
- package/dist/config/reload/config-reload.events.d.ts +0 -2
- package/dist/config/reload/config-reload.events.js +0 -8
- package/dist/config/reload/config-reload.events.js.map +1 -1
- package/dist/config/sources/base/reloadable-config-source.abstract.d.ts +3 -2
- package/dist/config/sources/base/reloadable-config-source.abstract.js +3 -3
- package/dist/config/sources/base/reloadable-config-source.abstract.js.map +1 -1
- package/dist/config/sources/exceptions/config-source-di.exception.js.map +1 -1
- package/dist/config/sources/implementations/json-file.source.js.map +1 -1
- package/dist/config/sources/implementations/relodable-json-file.source.d.ts +3 -1
- package/dist/config/sources/implementations/relodable-json-file.source.js +6 -3
- package/dist/config/sources/implementations/relodable-json-file.source.js.map +1 -1
- package/dist/config/vars.class.d.ts +1 -1
- package/dist/config/vars.class.js +6 -6
- package/dist/config/vars.class.js.map +1 -1
- package/dist/context.aggregator.d.ts +21 -0
- package/dist/context.aggregator.js +53 -0
- package/dist/context.aggregator.js.map +1 -0
- package/dist/exceptions/base/platform-exception.absract.d.ts +2 -2
- package/dist/exceptions/base/platform-exception.absract.js +4 -1
- package/dist/exceptions/base/platform-exception.absract.js.map +1 -1
- package/dist/exceptions/implementations/bootstrap/double-init.exception.js.map +1 -1
- package/dist/exceptions/implementations/bootstrap/duplicate-protocol.exception.js.map +1 -1
- package/dist/exceptions/implementations/bootstrap/no-http.exception.js.map +1 -1
- package/dist/exceptions/implementations/bootstrap/no-init.exception.js.map +1 -1
- package/dist/exceptions/implementations/bootstrap/no-matching-transport.exception.js.map +1 -1
- package/dist/exceptions/implementations/bootstrap/sequence.exception.js.map +1 -1
- package/dist/exceptions/implementations/bootstrap/symbol-key-decoration.exception.js.map +1 -1
- package/dist/exceptions/implementations/bootstrap/unknown-bootstrap.exception.js.map +1 -1
- package/dist/exceptions/implementations/pipeline/authentication.exception.js.map +1 -1
- package/dist/exceptions/implementations/pipeline/conflict.exception.js.map +1 -1
- package/dist/exceptions/implementations/pipeline/duplicate-entity.exception.js.map +1 -1
- package/dist/exceptions/implementations/pipeline/input.exception.js.map +1 -1
- package/dist/exceptions/implementations/pipeline/internal.exception.js.map +1 -1
- package/dist/exceptions/implementations/pipeline/not-allowed.exception.js.map +1 -1
- package/dist/exceptions/implementations/pipeline/not-found.exception.js.map +1 -1
- package/dist/exceptions/implementations/pipeline/timeout.exception.js.map +1 -1
- package/dist/exceptions.handling/global-exceptions.config.js.map +1 -1
- package/dist/exceptions.handling/global-exceptions.filter.js.map +1 -1
- package/dist/exceptions.handling/global-exceptions.module.js.map +1 -1
- package/dist/health/autodoc/heath.autodoc-resolver.d.ts +5 -15
- package/dist/health/autodoc/heath.autodoc-resolver.js +11 -13
- package/dist/health/autodoc/heath.autodoc-resolver.js.map +1 -1
- package/dist/health/exceptions/health-check.exception.js.map +1 -1
- package/dist/health/health.const.d.ts +1 -0
- package/dist/health/health.const.js +2 -1
- package/dist/health/health.const.js.map +1 -1
- package/dist/health/health.module.js.map +1 -1
- package/dist/health/health.service.d.ts +6 -2
- package/dist/health/health.service.js +19 -6
- package/dist/health/health.service.js.map +1 -1
- package/dist/health/metadata/constants.d.ts +1 -0
- package/dist/health/metadata/constants.js +5 -0
- package/dist/health/metadata/constants.js.map +1 -0
- package/dist/health/metadata/indicator.decorator.js +2 -12
- package/dist/health/metadata/indicator.decorator.js.map +1 -1
- package/dist/health/metadata/indicators.registry.d.ts +0 -7
- package/dist/health/metadata/indicators.registry.js +6 -14
- package/dist/health/metadata/indicators.registry.js.map +1 -1
- package/dist/health/metadata/types.d.ts +7 -0
- package/dist/health/metadata/types.js +3 -0
- package/dist/health/metadata/types.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.js +13 -7
- package/dist/index.js.map +1 -1
- package/dist/logging/decorators/inject-logger.decorator.js +5 -3
- package/dist/logging/decorators/inject-logger.decorator.js.map +1 -1
- package/dist/logging/global-logger-provider.generator.d.ts +7 -0
- package/dist/logging/global-logger-provider.generator.js +22 -0
- package/dist/logging/global-logger-provider.generator.js.map +1 -0
- package/dist/logging/index.d.ts +2 -0
- package/dist/logging/index.js +3 -0
- package/dist/logging/index.js.map +1 -1
- package/dist/logging/logging.config.js +1 -1
- package/dist/logging/logging.config.js.map +1 -1
- package/dist/logging/logging.module.d.ts +5 -3
- package/dist/logging/logging.module.js +25 -13
- package/dist/logging/logging.module.js.map +1 -1
- package/dist/logging/metadata/constants.d.ts +1 -0
- package/dist/logging/metadata/constants.js +5 -0
- package/dist/logging/metadata/constants.js.map +1 -0
- package/dist/logging/types.d.ts +6 -2
- package/dist/metrics/index.d.ts +1 -1
- package/dist/metrics/index.js +3 -3
- package/dist/metrics/index.js.map +1 -1
- package/dist/metrics/metadata/autodoc/metrics.autodoc-resolver.d.ts +6 -7
- package/dist/metrics/metadata/autodoc/metrics.autodoc-resolver.js +8 -11
- package/dist/metrics/metadata/autodoc/metrics.autodoc-resolver.js.map +1 -1
- package/dist/metrics/metadata/constants.d.ts +1 -0
- package/dist/metrics/metadata/constants.js +5 -0
- package/dist/metrics/metadata/constants.js.map +1 -0
- package/dist/metrics/metadata/index.d.ts +0 -1
- package/dist/metrics/metadata/index.js +0 -3
- package/dist/metrics/metadata/index.js.map +1 -1
- package/dist/metrics/metadata/metrics.registry.d.ts +0 -3
- package/dist/metrics/metadata/metrics.registry.js +9 -16
- package/dist/metrics/metadata/metrics.registry.js.map +1 -1
- package/dist/metrics/metadata/types.d.ts +2 -4
- package/dist/metrics/metric.storage.d.ts +8 -0
- package/dist/metrics/metric.storage.js +11 -0
- package/dist/metrics/metric.storage.js.map +1 -0
- package/dist/metrics/metrics.config.js.map +1 -1
- package/dist/metrics/metrics.module.d.ts +1 -1
- package/dist/metrics/metrics.module.js +27 -21
- package/dist/metrics/metrics.module.js.map +1 -1
- package/dist/platform.context.d.ts +5 -3
- package/dist/platform.context.js +20 -19
- package/dist/platform.context.js.map +1 -1
- package/dist/platform.module.d.ts +5 -4
- package/dist/platform.module.js +24 -13
- package/dist/platform.module.js.map +1 -1
- package/dist/rsdk-metadata/constants.d.ts +3 -0
- package/dist/rsdk-metadata/constants.js +5 -0
- package/dist/rsdk-metadata/constants.js.map +1 -0
- package/dist/rsdk-metadata/rsdk-metadata.global-module.d.ts +6 -0
- package/dist/rsdk-metadata/rsdk-metadata.global-module.js +31 -0
- package/dist/rsdk-metadata/rsdk-metadata.global-module.js.map +1 -0
- package/dist/tracing/services/instrumentation.service.js.map +1 -1
- package/dist/tracing/services/metadata.scanner.js.map +1 -1
- package/dist/tracing/tracing.config.js.map +1 -1
- package/dist/tracing/tracing.module.js.map +1 -1
- package/dist/transport/transport.module.d.ts +1 -0
- package/dist/transport/transport.module.js +8 -2
- package/dist/transport/transport.module.js.map +1 -1
- package/dist/types/context-aggregated.d.ts +8 -0
- package/dist/types/context-aggregated.js +3 -0
- package/dist/types/context-aggregated.js.map +1 -0
- package/dist/types/options.d.ts +6 -6
- package/dist/types/transports.d.ts +10 -3
- package/dist/types/transports.js.map +1 -1
- package/dist/unhandled-rejection.handler.d.ts +1 -0
- package/dist/unhandled-rejection.handler.js +24 -0
- package/dist/unhandled-rejection.handler.js.map +1 -0
- package/package.json +8 -7
- package/src/app/platform.app.ts +6 -32
- package/src/config/additional-source/additional-source.initializer.ts +34 -25
- package/src/config/additional-source/additional-source.module.ts +5 -2
- package/src/config/config-reload.indicator.ts +3 -3
- package/src/config/config.abstract.ts +2 -3
- package/src/config/config.module.ts +23 -225
- package/src/config/context/config.context.ts +209 -0
- package/src/config/context/module.ts +25 -0
- package/src/config/exceptions/property.exception.ts +11 -6
- package/src/config/index.ts +1 -0
- package/src/config/metadata/config-metadata.provider.ts +79 -0
- package/src/config/metadata/config-metadata.registry.ts +36 -41
- package/src/config/metadata/constants.ts +6 -0
- package/src/config/metadata/decorators/declare-property.decorator.ts +2 -2
- package/src/config/metadata/decorators/inject-property.decorator.ts +1 -1
- package/src/config/metadata/types.ts +22 -0
- package/src/config/reload/config-reload.events.ts +1 -13
- package/src/config/sources/base/reloadable-config-source.abstract.ts +2 -3
- package/src/config/sources/implementations/relodable-json-file.source.ts +6 -2
- package/src/config/vars.class.ts +9 -7
- package/src/context.aggregator.ts +62 -0
- package/src/exceptions/base/platform-exception.absract.ts +8 -3
- package/src/health/autodoc/heath.autodoc-resolver.ts +15 -18
- package/src/health/health.const.ts +2 -0
- package/src/health/health.service.ts +23 -4
- package/src/health/metadata/constants.ts +1 -0
- package/src/health/metadata/indicator.decorator.ts +2 -18
- package/src/health/metadata/indicators.registry.ts +16 -23
- package/src/health/metadata/types.ts +9 -0
- package/src/index.ts +29 -12
- package/src/logging/decorators/inject-logger.decorator.ts +5 -4
- package/src/logging/global-logger-provider.generator.ts +28 -0
- package/src/logging/index.ts +2 -0
- package/src/logging/logging.config.ts +2 -1
- package/src/logging/logging.module.ts +42 -16
- package/src/logging/metadata/constants.ts +1 -0
- package/src/logging/types.ts +6 -2
- package/src/metrics/index.ts +1 -1
- package/src/metrics/metadata/autodoc/metrics.autodoc-resolver.ts +13 -9
- package/src/metrics/metadata/constants.ts +1 -0
- package/src/metrics/metadata/index.ts +0 -1
- package/src/metrics/metadata/metrics.registry.ts +19 -23
- package/src/metrics/metadata/types.ts +2 -5
- package/src/metrics/metric.storage.ts +10 -0
- package/src/metrics/metrics.module.ts +32 -31
- package/src/platform.context.ts +32 -20
- package/src/platform.module.ts +18 -20
- package/src/rsdk-metadata/constants.ts +5 -0
- package/src/rsdk-metadata/rsdk-metadata.global-module.ts +34 -0
- package/src/transport/transport.module.ts +13 -1
- package/src/types/context-aggregated.ts +10 -0
- package/src/types/options.ts +6 -5
- package/src/types/transports.ts +15 -3
- package/src/unhandled-rejection.handler.ts +29 -0
- package/dist/health/index.d.ts +0 -7
- package/dist/health/index.js +0 -26
- package/dist/health/index.js.map +0 -1
- package/dist/health/metadata/index.d.ts +0 -2
- package/dist/health/metadata/index.js +0 -19
- package/dist/health/metadata/index.js.map +0 -1
- package/src/health/index.ts +0 -7
- package/src/health/metadata/index.ts +0 -2
|
@@ -1,111 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var PlatformConfigModule_1;
|
|
9
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
3
|
exports.PlatformConfigModule = void 0;
|
|
11
|
-
const common_1 = require("@nestjs/common");
|
|
12
|
-
const common_2 = require("@rsdk/common");
|
|
13
|
-
const logging_1 = require("@rsdk/logging");
|
|
14
|
-
const exceptions_1 = require("../exceptions");
|
|
15
4
|
const additional_source_initializer_1 = require("./additional-source/additional-source.initializer");
|
|
16
5
|
const additional_source_module_1 = require("./additional-source/additional-source.module");
|
|
17
|
-
const
|
|
6
|
+
const config_context_1 = require("./context/config.context");
|
|
18
7
|
const metadata_1 = require("./metadata");
|
|
19
|
-
|
|
20
|
-
const vars_class_1 = require("./vars.class");
|
|
21
|
-
/**
|
|
22
|
-
* Configuration is loaded in predictable order. You should take
|
|
23
|
-
* into account chat all repeating keys will be overwritten on each step:
|
|
24
|
-
*
|
|
25
|
-
* 1. .env file if there is any
|
|
26
|
-
* 2. process environment
|
|
27
|
-
* 3. динамические source'ы (если сделать последовательно - то в порядке указания)
|
|
28
|
-
*/
|
|
29
|
-
let PlatformConfigModule = PlatformConfigModule_1 = class PlatformConfigModule {
|
|
30
|
-
static isBootstrapped = false;
|
|
31
|
-
static events = reload_1.ReloadEvents.getInstance();
|
|
32
|
-
static vars;
|
|
33
|
-
static prefix;
|
|
34
|
-
/**
|
|
35
|
-
* Проинициализированные секции конфигов
|
|
36
|
-
* @private
|
|
37
|
-
*/
|
|
38
|
-
static initializedConfigs = new Map();
|
|
39
|
-
/**
|
|
40
|
-
* undefined является валидным значением по умолчанию (`defaultValue`)
|
|
41
|
-
* @private
|
|
42
|
-
*/
|
|
43
|
-
static properties = new Map();
|
|
44
|
-
/**
|
|
45
|
-
* We don't use class as context here because it is undefined if
|
|
46
|
-
* tsc target is ES2022
|
|
47
|
-
*/
|
|
48
|
-
static logger = logging_1.LoggerFactory.create('PlatformConfigModule');
|
|
49
|
-
/**
|
|
50
|
-
* Метадата о необходимых приложению значениях конфигурации
|
|
51
|
-
* Зачем храним?
|
|
52
|
-
* Потому что пайплайн такой:
|
|
53
|
-
* 1. Собираем данные о том какие поля нам нужны
|
|
54
|
-
* 2. Приложение запрашивает поле из конфигурации
|
|
55
|
-
* 3. Ищем метаданные
|
|
56
|
-
* 4. По метаданным вытягиваем значение
|
|
57
|
-
* 5. Отдаём значение
|
|
58
|
-
*
|
|
59
|
-
* Это важно так как позволяет прозрачным образом контролировать этот процесс и инициализировать поля в тот момент когда они потребуются
|
|
60
|
-
* А не в тот момент когда их объявили
|
|
61
|
-
* Основной кейс, где это применяется - тесты
|
|
62
|
-
* @private
|
|
63
|
-
*/
|
|
64
|
-
static propertyMetadata = new Map();
|
|
65
|
-
/**
|
|
66
|
-
* This method should be invoked BEFORE bootstrapping nest application.
|
|
67
|
-
*
|
|
68
|
-
* It takes 2 main actions:
|
|
69
|
-
* - load environment variables
|
|
70
|
-
*
|
|
71
|
-
* - instantiates all configuration initializedConfig (classes marked with
|
|
72
|
-
* @ConfigSection() decorator) and adds them into internal storage
|
|
73
|
-
*
|
|
74
|
-
* If any of these actions fails - application should exit.
|
|
75
|
-
*
|
|
76
|
-
* NOTE: This method should be invoked before any other interaction
|
|
77
|
-
* with ConfigurationModule
|
|
78
|
-
*
|
|
79
|
-
* ATTENTION: not load values from additional source
|
|
80
|
-
*/
|
|
81
|
-
static bootstrap(options) {
|
|
82
|
-
if (this.isBootstrapped) {
|
|
83
|
-
throw new exceptions_1.SequenceException("Can't bootstrap ConfigurationModule twice");
|
|
84
|
-
}
|
|
85
|
-
this.prefix = options?.appName ?? '';
|
|
86
|
-
if (this.prefix) {
|
|
87
|
-
this.logger.info('Setting configuration keys prefix', {
|
|
88
|
-
prefix: this.prefix,
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
this.vars = new vars_class_1.Vars(this.prefix);
|
|
92
|
-
this.readEnvironment();
|
|
93
|
-
/**
|
|
94
|
-
* Reading and validating standalone properties from env.
|
|
95
|
-
*
|
|
96
|
-
* NOTE: Splitting extraction if standalone properties into 2 phases
|
|
97
|
-
* is necessary, some configuration sources can need something
|
|
98
|
-
* from env to be instatiated.
|
|
99
|
-
*/
|
|
100
|
-
const { properties } = metadata_1.ConfigMetadataRegistry.getMetadata();
|
|
101
|
-
this.extractStandaloneProperties(properties, 'expectedInEnv');
|
|
102
|
-
/**
|
|
103
|
-
* NOTE: That properties from .env already loaded.
|
|
104
|
-
* Now loading ones from other sources
|
|
105
|
-
*/
|
|
106
|
-
this.extractStandaloneProperties(properties, 'others');
|
|
107
|
-
this.isBootstrapped = true;
|
|
108
|
-
}
|
|
8
|
+
class PlatformConfigModule {
|
|
109
9
|
/**
|
|
110
10
|
* Use this method to imports specific configuration property
|
|
111
11
|
* into given module
|
|
@@ -121,7 +21,7 @@ let PlatformConfigModule = PlatformConfigModule_1 = class PlatformConfigModule {
|
|
|
121
21
|
const token = (0, metadata_1.getPropertyToken)(alias);
|
|
122
22
|
const provider = this.getPropertyProvider(token);
|
|
123
23
|
return {
|
|
124
|
-
module:
|
|
24
|
+
module: PlatformConfigModule,
|
|
125
25
|
providers: [provider],
|
|
126
26
|
exports: [provider],
|
|
127
27
|
};
|
|
@@ -138,18 +38,26 @@ let PlatformConfigModule = PlatformConfigModule_1 = class PlatformConfigModule {
|
|
|
138
38
|
* forFeature() is executed Config instances don't yet exist
|
|
139
39
|
*/
|
|
140
40
|
const provider = {
|
|
141
|
-
inject: [
|
|
41
|
+
inject: [
|
|
42
|
+
config_context_1.ConfigContext,
|
|
43
|
+
{ optional: true, token: additional_source_initializer_1.AdditionalSourceInitializer },
|
|
44
|
+
],
|
|
142
45
|
provide: ctor,
|
|
143
|
-
useFactory: async (additionalSourceModuleInitializer) => {
|
|
46
|
+
useFactory: async (configContext, additionalSourceModuleInitializer) => {
|
|
144
47
|
/**
|
|
145
48
|
* Да, каждый раз вызываем метод `initialize` более подробно почему так - смотри в `JSDoc` метода
|
|
146
49
|
*/
|
|
147
50
|
await additionalSourceModuleInitializer?.initialize();
|
|
148
|
-
return
|
|
51
|
+
return configContext.resolve(ctor);
|
|
149
52
|
},
|
|
150
53
|
};
|
|
151
54
|
return {
|
|
152
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Если использовать существующий PlatformConfigModule,
|
|
57
|
+
* то появляются коллизии при резолве зависимостей, а сам Nest падает
|
|
58
|
+
* TODO [@nestjs/core@>9.4]: проверить работоспособность, может быть исправлено
|
|
59
|
+
*/
|
|
60
|
+
module: PlatformConfigModule,
|
|
153
61
|
providers: [provider],
|
|
154
62
|
exports: [provider],
|
|
155
63
|
};
|
|
@@ -158,114 +66,29 @@ let PlatformConfigModule = PlatformConfigModule_1 = class PlatformConfigModule {
|
|
|
158
66
|
const providers = [];
|
|
159
67
|
const imports = [];
|
|
160
68
|
if (options.config?.sources) {
|
|
161
|
-
imports.push(
|
|
162
|
-
// TODO: Эти опции в идеале добавить в сам контейнер и использовать их везде
|
|
163
|
-
additional_source_module_1.AdditionalSourceModule.forRoot({
|
|
164
|
-
sources: options.config?.sources,
|
|
165
|
-
logger: this.logger,
|
|
166
|
-
properties: this.properties,
|
|
167
|
-
vars: this.vars,
|
|
168
|
-
events: this.events,
|
|
169
|
-
prefix: this.prefix,
|
|
170
|
-
propertyMetadata: this.propertyMetadata,
|
|
171
|
-
}));
|
|
69
|
+
imports.push(additional_source_module_1.AdditionalSourceModule.forRoot(options.config?.sources));
|
|
172
70
|
}
|
|
173
71
|
return {
|
|
72
|
+
global: true,
|
|
174
73
|
imports,
|
|
175
|
-
module:
|
|
74
|
+
module: PlatformConfigModule,
|
|
176
75
|
providers,
|
|
76
|
+
exports: providers,
|
|
177
77
|
};
|
|
178
78
|
}
|
|
179
|
-
/**
|
|
180
|
-
* Extracting specific instance of configuration section by
|
|
181
|
-
* its class reference. Throws error if called before .bootstrap()
|
|
182
|
-
*
|
|
183
|
-
* ATTENTION: Конфиг будет разрешен с доступными на данный момент переменными,
|
|
184
|
-
* то есть если дополнительные источники конфигурации ещё не были проинициализированы,
|
|
185
|
-
* они не будут учтены в разрешении конфигурации.
|
|
186
|
-
*
|
|
187
|
-
* @param ctor Pass constructor of configuration section class
|
|
188
|
-
* @returns T
|
|
189
|
-
*/
|
|
190
|
-
static resolve(ctor) {
|
|
191
|
-
/**
|
|
192
|
-
* Автор уверен, что здесь не стоит делать bootstrap так как это разные зоны ответственности
|
|
193
|
-
*/
|
|
194
|
-
if (!this.isBootstrapped) {
|
|
195
|
-
throw new exceptions_2.ConfigNotBootstrappedException();
|
|
196
|
-
}
|
|
197
|
-
const instance = this.initializedConfigs.get(ctor);
|
|
198
|
-
if (!instance) {
|
|
199
|
-
const instantiateSection = this.instantiateSection(ctor);
|
|
200
|
-
this.initializedConfigs.set(ctor, instantiateSection);
|
|
201
|
-
return instantiateSection;
|
|
202
|
-
}
|
|
203
|
-
// We know exactly it is T
|
|
204
|
-
return instance;
|
|
205
|
-
}
|
|
206
79
|
static getPropertyProvider(token) {
|
|
207
80
|
return {
|
|
208
|
-
inject: [
|
|
81
|
+
inject: [
|
|
82
|
+
config_context_1.ConfigContext,
|
|
83
|
+
{ optional: true, token: additional_source_initializer_1.AdditionalSourceInitializer },
|
|
84
|
+
],
|
|
209
85
|
provide: token,
|
|
210
|
-
useFactory: async (additionalSourceModuleInitializer) => {
|
|
86
|
+
useFactory: async (configContext, additionalSourceModuleInitializer) => {
|
|
211
87
|
await additionalSourceModuleInitializer?.initialize();
|
|
212
|
-
|
|
213
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
214
|
-
return this.properties.get(token);
|
|
215
|
-
}
|
|
216
|
-
const propMeta = this.propertyMetadata.get(token);
|
|
217
|
-
if (!propMeta) {
|
|
218
|
-
throw new exceptions_2.ConfigPropertyMetadataNotFound(token);
|
|
219
|
-
}
|
|
220
|
-
const value = this.vars.extract(propMeta);
|
|
221
|
-
this.properties.set(token, value);
|
|
222
|
-
return value;
|
|
88
|
+
return configContext.resolveProperty(token);
|
|
223
89
|
},
|
|
224
90
|
};
|
|
225
91
|
}
|
|
226
|
-
|
|
227
|
-
this.logger.info('Loading variables from .env file if exists');
|
|
228
|
-
common_2.dotenv.config();
|
|
229
|
-
this.logger.info('Initializing raw parameters storage');
|
|
230
|
-
/**
|
|
231
|
-
* Copying parameters from process.env, skipping entries
|
|
232
|
-
* for which value is undefined (not sure it's possible,
|
|
233
|
-
* but @types/node says it is).
|
|
234
|
-
*/
|
|
235
|
-
for (const [key, value] of Object.entries(process.env)) {
|
|
236
|
-
if (value !== undefined) {
|
|
237
|
-
this.vars.set(key, value);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
static extractStandaloneProperties(properties, subset) {
|
|
242
|
-
for (const [alias, metadata] of properties.entries()) {
|
|
243
|
-
if (subset === 'expectedInEnv' && !metadata.expectedInEnv) {
|
|
244
|
-
continue;
|
|
245
|
-
}
|
|
246
|
-
this.propertyMetadata.set((0, metadata_1.getPropertyToken)(alias), metadata);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Инициализирует инстанс секции конфига
|
|
251
|
-
* ATTENTION: не проверяет есть ли ещё проинициализированные, будьте внимательны во избежание неожиданного поведение
|
|
252
|
-
* @param ctor
|
|
253
|
-
* @private
|
|
254
|
-
*/
|
|
255
|
-
static instantiateSection(ctor) {
|
|
256
|
-
const instance = new ctor();
|
|
257
|
-
this.logger.debug('Initializing configuration section instance', {
|
|
258
|
-
ctor: ctor.name,
|
|
259
|
-
});
|
|
260
|
-
this.events.on('merge', () => {
|
|
261
|
-
instance.tryUpdate(this.vars);
|
|
262
|
-
});
|
|
263
|
-
instance.read(this.vars);
|
|
264
|
-
return instance;
|
|
265
|
-
}
|
|
266
|
-
};
|
|
267
|
-
PlatformConfigModule = PlatformConfigModule_1 = __decorate([
|
|
268
|
-
(0, common_1.Module)({})
|
|
269
|
-
], PlatformConfigModule);
|
|
92
|
+
}
|
|
270
93
|
exports.PlatformConfigModule = PlatformConfigModule;
|
|
271
94
|
//# sourceMappingURL=config.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.module.js","sourceRoot":"","sources":["../../src/config/config.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.module.js","sourceRoot":"","sources":["../../src/config/config.module.ts"],"names":[],"mappings":";;;AAKA,qGAAgG;AAChG,2FAAsF;AACtF,6DAAyD;AAEzD,yCAA8C;AAkB9C,MAAa,oBAAoB;IAC/B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,WAAW,CAAC,KAAa;QAC9B,MAAM,KAAK,GAAG,IAAA,2BAAgB,EAAC,KAAK,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEjD,OAAO;YACL,MAAM,EAAE,oBAAoB;YAC5B,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,OAAO,EAAE,CAAC,QAAQ,CAAC;SACpB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAC,IAAyB;QACzC;;;WAGG;QACH,MAAM,QAAQ,GAAoB;YAChC,MAAM,EAAE;gBACN,8BAAa;gBACb,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,2DAA2B,EAAE;aACvD;YACD,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,KAAK,EACf,aAA4B,EAC5B,iCAA+D,EAC/D,EAAE;gBACF;;mBAEG;gBACH,MAAM,iCAAiC,EAAE,UAAU,EAAE,CAAC;gBACtD,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;SACF,CAAC;QAEF,OAAO;YACL;;;;eAIG;YACH,MAAM,EAAE,oBAAoB;YAC5B,SAAS,EAAE,CAAC,QAAQ,CAAC;YAErB,OAAO,EAAE,CAAC,QAAQ,CAAC;SACpB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAwB;QACrC,MAAM,SAAS,GAAe,EAAE,CAAC;QACjC,MAAM,OAAO,GAA+C,EAAE,CAAC;QAE/D,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,iDAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;SACvE;QAED,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,OAAO;YACP,MAAM,EAAE,oBAAoB;YAC5B,SAAS;YACT,OAAO,EAAE,SAAS;SACnB,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAChC,KAA6C;QAE7C,OAAO;YACL,MAAM,EAAE;gBACN,8BAAa;gBACb,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,2DAA2B,EAAE;aACvD;YACD,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK,EACf,aAA4B,EAC5B,iCAA+D,EAC7B,EAAE;gBACpC,MAAM,iCAAiC,EAAE,UAAU,EAAE,CAAC;gBACtD,OAAO,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC9C,CAAC;SACF,CAAC;IACJ,CAAC;CACF;AApGD,oDAoGC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration is loaded in predictable order. You should take
|
|
3
|
+
* into account chat all repeating keys will be overwritten on each step:
|
|
4
|
+
*
|
|
5
|
+
* 1. .env file if there is any
|
|
6
|
+
* 2. process environment
|
|
7
|
+
* 3. динамические source'ы (если сделать последовательно - то в порядке указания)
|
|
8
|
+
*/
|
|
9
|
+
import type { Constructor } from '@rsdk/common';
|
|
10
|
+
import type { RsdkMetadataProvider } from '@rsdk/metadata';
|
|
11
|
+
import type { Config } from '../config.abstract';
|
|
12
|
+
import type { ConfigModuleOptions } from '../config.module';
|
|
13
|
+
import { ReloadEvents } from '../reload';
|
|
14
|
+
import type { ConfigValue, PropertyMetadata } from '../types';
|
|
15
|
+
import { Vars } from '../vars.class';
|
|
16
|
+
export declare class ConfigContext {
|
|
17
|
+
readonly events: ReloadEvents;
|
|
18
|
+
readonly vars: Vars;
|
|
19
|
+
readonly prefix: string;
|
|
20
|
+
/**
|
|
21
|
+
* Метадата о необходимых приложению значениях конфигурации
|
|
22
|
+
* Зачем храним?
|
|
23
|
+
* Потому что пайплайн такой:
|
|
24
|
+
* 1. Собираем данные о том какие поля нам нужны
|
|
25
|
+
* 2. Приложение запрашивает поле из конфигурации
|
|
26
|
+
* 3. Ищем метаданные
|
|
27
|
+
* 4. По метаданным вытягиваем значение
|
|
28
|
+
* 5. Отдаём значение
|
|
29
|
+
|
|
30
|
+
*
|
|
31
|
+
* Это важно так как позволяет прозрачным образом контролировать этот процесс и инициализировать поля в тот момент когда они потребуются
|
|
32
|
+
* А не в тот момент когда их объявили
|
|
33
|
+
* Основной кейс, где это применяется - тесты
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
36
|
+
readonly standalonePropertyMetadata: Map<string, PropertyMetadata<ConfigValue>>;
|
|
37
|
+
/**
|
|
38
|
+
* Проинициализированные секции конфигов
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
private readonly initializedConfigs;
|
|
42
|
+
/**
|
|
43
|
+
* undefined является валидным значением по умолчанию (`defaultValue`)
|
|
44
|
+
* @private
|
|
45
|
+
*/
|
|
46
|
+
private readonly properties;
|
|
47
|
+
/**
|
|
48
|
+
* We don't use class as context here because it is undefined if
|
|
49
|
+
* tsc target is ES2022
|
|
50
|
+
*/
|
|
51
|
+
private readonly logger;
|
|
52
|
+
constructor(rsdkMetadataProvider: RsdkMetadataProvider, options?: ConfigModuleOptions);
|
|
53
|
+
/**
|
|
54
|
+
* Extracting specific instance of configuration section by
|
|
55
|
+
* its class reference. Throws error if called before .bootstrap()
|
|
56
|
+
*
|
|
57
|
+
* ATTENTION: Конфиг будет разрешен с доступными на данный момент переменными,
|
|
58
|
+
* то есть если дополнительные источники конфигурации ещё не были проинициализированы,
|
|
59
|
+
* они не будут учтены в разрешении конфигурации.
|
|
60
|
+
*
|
|
61
|
+
* @param ctor Pass constructor of configuration section class
|
|
62
|
+
* @returns T
|
|
63
|
+
*/
|
|
64
|
+
resolve<T extends Config>(ctor: Constructor<T>): T;
|
|
65
|
+
resolveProperty(token: `STANDALONE_CONFIG_PROPERTY_${string}`): ConfigValue | undefined;
|
|
66
|
+
private readEnvironment;
|
|
67
|
+
private extractStandaloneProperties;
|
|
68
|
+
/**
|
|
69
|
+
* Инициализирует инстанс секции конфига
|
|
70
|
+
* ATTENTION: не проверяет есть ли ещё проинициализированные, будьте внимательны во избежание неожиданного поведение
|
|
71
|
+
* @param ctor
|
|
72
|
+
* @private
|
|
73
|
+
*/
|
|
74
|
+
private instantiateSection;
|
|
75
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigContext = void 0;
|
|
4
|
+
const common_1 = require("@rsdk/common");
|
|
5
|
+
const logging_1 = require("@rsdk/logging");
|
|
6
|
+
const exceptions_1 = require("../exceptions");
|
|
7
|
+
const metadata_1 = require("../metadata");
|
|
8
|
+
const config_metadata_provider_1 = require("../metadata/config-metadata.provider");
|
|
9
|
+
const reload_1 = require("../reload");
|
|
10
|
+
const vars_class_1 = require("../vars.class");
|
|
11
|
+
class ConfigContext {
|
|
12
|
+
events = new reload_1.ReloadEvents();
|
|
13
|
+
vars;
|
|
14
|
+
prefix;
|
|
15
|
+
/**
|
|
16
|
+
* Метадата о необходимых приложению значениях конфигурации
|
|
17
|
+
* Зачем храним?
|
|
18
|
+
* Потому что пайплайн такой:
|
|
19
|
+
* 1. Собираем данные о том какие поля нам нужны
|
|
20
|
+
* 2. Приложение запрашивает поле из конфигурации
|
|
21
|
+
* 3. Ищем метаданные
|
|
22
|
+
* 4. По метаданным вытягиваем значение
|
|
23
|
+
* 5. Отдаём значение
|
|
24
|
+
|
|
25
|
+
*
|
|
26
|
+
* Это важно так как позволяет прозрачным образом контролировать этот процесс и инициализировать поля в тот момент когда они потребуются
|
|
27
|
+
* А не в тот момент когда их объявили
|
|
28
|
+
* Основной кейс, где это применяется - тесты
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
31
|
+
standalonePropertyMetadata = new Map();
|
|
32
|
+
/**
|
|
33
|
+
* Проинициализированные секции конфигов
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
36
|
+
initializedConfigs = new Map();
|
|
37
|
+
/**
|
|
38
|
+
* undefined является валидным значением по умолчанию (`defaultValue`)
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
properties = new Map();
|
|
42
|
+
/**
|
|
43
|
+
* We don't use class as context here because it is undefined if
|
|
44
|
+
* tsc target is ES2022
|
|
45
|
+
*/
|
|
46
|
+
logger = logging_1.LoggerFactory.create('PlatformConfigModule');
|
|
47
|
+
constructor(rsdkMetadataProvider, options) {
|
|
48
|
+
/**
|
|
49
|
+
* Should be invoked BEFORE bootstrapping nest application.
|
|
50
|
+
*
|
|
51
|
+
* It takes 2 main actions:
|
|
52
|
+
* - load environment variables
|
|
53
|
+
*
|
|
54
|
+
* - initialize storage from options and rsdkMetadataProvider
|
|
55
|
+
*
|
|
56
|
+
* If any of these actions fails - application should exit.
|
|
57
|
+
*
|
|
58
|
+
* ATTENTION: not load values from additional source
|
|
59
|
+
*/
|
|
60
|
+
this.prefix = options?.appName ?? '';
|
|
61
|
+
if (this.prefix) {
|
|
62
|
+
this.logger.info('Setting configuration keys prefix', {
|
|
63
|
+
prefix: this.prefix,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
this.vars = new vars_class_1.Vars(this.prefix);
|
|
67
|
+
this.readEnvironment();
|
|
68
|
+
const properties = new config_metadata_provider_1.ConfigMetadataProvider(rsdkMetadataProvider).getPropertiesMap();
|
|
69
|
+
/**
|
|
70
|
+
* Reading and validating standalone properties from env.
|
|
71
|
+
*
|
|
72
|
+
* NOTE: Splitting extraction if standalone properties into 2 phases
|
|
73
|
+
* is necessary, some configuration sources can need something
|
|
74
|
+
* from env to be instatiated.
|
|
75
|
+
*/
|
|
76
|
+
this.extractStandaloneProperties(properties, 'expectedInEnv');
|
|
77
|
+
/**
|
|
78
|
+
* NOTE: That properties from .env already loaded.
|
|
79
|
+
* Now loading ones from other sources
|
|
80
|
+
*/
|
|
81
|
+
this.extractStandaloneProperties(properties, 'others');
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Extracting specific instance of configuration section by
|
|
85
|
+
* its class reference. Throws error if called before .bootstrap()
|
|
86
|
+
*
|
|
87
|
+
* ATTENTION: Конфиг будет разрешен с доступными на данный момент переменными,
|
|
88
|
+
* то есть если дополнительные источники конфигурации ещё не были проинициализированы,
|
|
89
|
+
* они не будут учтены в разрешении конфигурации.
|
|
90
|
+
*
|
|
91
|
+
* @param ctor Pass constructor of configuration section class
|
|
92
|
+
* @returns T
|
|
93
|
+
*/
|
|
94
|
+
resolve(ctor) {
|
|
95
|
+
const instance = this.initializedConfigs.get(ctor);
|
|
96
|
+
if (!instance) {
|
|
97
|
+
const instantiateSection = this.instantiateSection(ctor);
|
|
98
|
+
this.initializedConfigs.set(ctor, instantiateSection);
|
|
99
|
+
return instantiateSection;
|
|
100
|
+
}
|
|
101
|
+
// We know exactly it is T
|
|
102
|
+
return instance;
|
|
103
|
+
}
|
|
104
|
+
resolveProperty(token) {
|
|
105
|
+
if (this.properties.has(token)) {
|
|
106
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
107
|
+
return this.properties.get(token);
|
|
108
|
+
}
|
|
109
|
+
const propMeta = this.standalonePropertyMetadata.get(token);
|
|
110
|
+
if (!propMeta) {
|
|
111
|
+
throw new exceptions_1.ConfigPropertyMetadataNotFound(token);
|
|
112
|
+
}
|
|
113
|
+
const value = this.vars.extract(propMeta);
|
|
114
|
+
this.properties.set(token, value);
|
|
115
|
+
return value;
|
|
116
|
+
}
|
|
117
|
+
readEnvironment() {
|
|
118
|
+
this.logger.info('Loading variables from .env file if exists');
|
|
119
|
+
common_1.dotenv.config();
|
|
120
|
+
this.logger.info('Initializing raw parameters storage');
|
|
121
|
+
/**
|
|
122
|
+
* Copying parameters from process.env, skipping entries
|
|
123
|
+
* for which value is undefined (not sure it's possible,
|
|
124
|
+
* but @types/node says it is).
|
|
125
|
+
*/
|
|
126
|
+
for (const [key, value] of Object.entries(process.env)) {
|
|
127
|
+
if (value !== undefined) {
|
|
128
|
+
this.vars.set(key, value);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
extractStandaloneProperties(properties, subset) {
|
|
133
|
+
for (const [alias, metadata] of properties.entries()) {
|
|
134
|
+
if (subset === 'expectedInEnv' && !metadata.expectedInEnv) {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
this.standalonePropertyMetadata.set((0, metadata_1.getPropertyToken)(alias), metadata);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Инициализирует инстанс секции конфига
|
|
142
|
+
* ATTENTION: не проверяет есть ли ещё проинициализированные, будьте внимательны во избежание неожиданного поведение
|
|
143
|
+
* @param ctor
|
|
144
|
+
* @private
|
|
145
|
+
*/
|
|
146
|
+
instantiateSection(ctor) {
|
|
147
|
+
const instance = new ctor(this.events);
|
|
148
|
+
this.logger.debug('Initializing configuration section instance', {
|
|
149
|
+
ctor: ctor.name,
|
|
150
|
+
});
|
|
151
|
+
this.events.on('merge', () => {
|
|
152
|
+
instance.tryUpdate(this.vars);
|
|
153
|
+
});
|
|
154
|
+
instance.read(this.vars);
|
|
155
|
+
return instance;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
exports.ConfigContext = ConfigContext;
|
|
159
|
+
//# sourceMappingURL=config.context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.context.js","sourceRoot":"","sources":["../../../src/config/context/config.context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigContextModule = void 0;
|
|
4
|
+
const reload_1 = require("../reload");
|
|
5
|
+
const config_context_1 = require("./config.context");
|
|
6
|
+
class ConfigContextModule {
|
|
7
|
+
static forRoot(configContext) {
|
|
8
|
+
return {
|
|
9
|
+
global: true,
|
|
10
|
+
module: ConfigContextModule,
|
|
11
|
+
providers: [
|
|
12
|
+
{
|
|
13
|
+
provide: config_context_1.ConfigContext,
|
|
14
|
+
useValue: configContext,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
provide: reload_1.ReloadEvents,
|
|
18
|
+
useValue: configContext.events,
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
exports: [config_context_1.ConfigContext],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.ConfigContextModule = ConfigContextModule;
|
|
26
|
+
//# sourceMappingURL=module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../../src/config/context/module.ts"],"names":[],"mappings":";;;AAEA,sCAAyC;AAEzC,qDAAiD;AAEjD,MAAa,mBAAmB;IAC9B,MAAM,CAAC,OAAO,CAAC,aAA4B;QACzC,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,mBAAmB;YAC3B,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,8BAAa;oBACtB,QAAQ,EAAE,aAAa;iBACxB;gBACD;oBACE,OAAO,EAAE,qBAAY;oBACrB,QAAQ,EAAE,aAAa,CAAC,MAAM;iBAC/B;aACF;YACD,OAAO,EAAE,CAAC,8BAAa,CAAC;SACzB,CAAC;IACJ,CAAC;CACF;AAlBD,kDAkBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-not-bootstrapped.exception.js","sourceRoot":"","sources":["../../../src/config/exceptions/config-not-bootstrapped.exception.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAoC;AAEpC,iDAAiE;
|
|
1
|
+
{"version":3,"file":"config-not-bootstrapped.exception.js","sourceRoot":"","sources":["../../../src/config/exceptions/config-not-bootstrapped.exception.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAoC;AAEpC,iDAAiE;AAEjE,IAMa,8BAA8B,GAN3C,MAMa,8BAA+B,SAAQ,+BAAkB;IACpE;QACE,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACrD,CAAC;CACF,CAAA;AAJY,8BAA8B;IAN1C,IAAA,sBAAS,EAAC;QACT,WAAW,EAAE,IAAA,aAAI,EAAA;;;GAGhB;KACF,CAAC;;GACW,8BAA8B,CAI1C;AAJY,wEAA8B"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { PlatformException } from '../../exceptions';
|
|
2
|
+
import type { PropertyMetadata } from '../types';
|
|
2
3
|
export declare class PropertyException extends PlatformException {
|
|
3
|
-
constructor(
|
|
4
|
-
|
|
4
|
+
constructor(msg: string, details: {
|
|
5
|
+
propertyMetadata: PropertyMetadata;
|
|
6
|
+
preparedKey: string;
|
|
7
|
+
});
|
|
8
|
+
static fromError(err: any, details: {
|
|
9
|
+
propertyMetadata: PropertyMetadata;
|
|
10
|
+
preparedKey: string;
|
|
11
|
+
}): PropertyException;
|
|
5
12
|
}
|
|
@@ -3,15 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PropertyException = void 0;
|
|
4
4
|
const exceptions_1 = require("../../exceptions");
|
|
5
5
|
class PropertyException extends exceptions_1.PlatformException {
|
|
6
|
-
constructor(
|
|
6
|
+
constructor(msg, details) {
|
|
7
7
|
super('CONFIG:PROPERTY', msg, {
|
|
8
|
-
details
|
|
9
|
-
property,
|
|
10
|
-
},
|
|
8
|
+
details,
|
|
11
9
|
});
|
|
12
10
|
}
|
|
13
|
-
static fromError(err,
|
|
14
|
-
return new PropertyException(
|
|
11
|
+
static fromError(err, details) {
|
|
12
|
+
return new PropertyException(err.message || 'UNKNOWN ERROR', details);
|
|
15
13
|
}
|
|
16
14
|
}
|
|
17
15
|
exports.PropertyException = PropertyException;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"property.exception.js","sourceRoot":"","sources":["../../../src/config/exceptions/property.exception.ts"],"names":[],"mappings":";;;AAAA,iDAAqD;
|
|
1
|
+
{"version":3,"file":"property.exception.js","sourceRoot":"","sources":["../../../src/config/exceptions/property.exception.ts"],"names":[],"mappings":";;;AAAA,iDAAqD;AAGrD,MAAa,iBAAkB,SAAQ,8BAAiB;IACtD,YACE,GAAW,EACX,OAAoE;QAEpE,KAAK,CAAC,iBAAiB,EAAE,GAAG,EAAE;YAC5B,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,SAAS,CACd,GAAQ,EACR,OAAoE;QAEpE,OAAO,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,IAAI,eAAe,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;CACF;AAhBD,8CAgBC"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -8,3 +8,4 @@ export * from './reload';
|
|
|
8
8
|
export { AdditionalSourceModule } from './additional-source/additional-source.module';
|
|
9
9
|
export { AdditionalSourceOptions } from './additional-source/additional-source.module';
|
|
10
10
|
export { ConfigPropertyMetadataNotFound } from './exceptions';
|
|
11
|
+
export { ConfigContext } from './context/config.context';
|
package/dist/config/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.ConfigPropertyMetadataNotFound = exports.AdditionalSourceModule = void 0;
|
|
17
|
+
exports.ConfigContext = exports.ConfigPropertyMetadataNotFound = exports.AdditionalSourceModule = void 0;
|
|
18
18
|
__exportStar(require("./parsers"), exports);
|
|
19
19
|
__exportStar(require("./config.module"), exports);
|
|
20
20
|
__exportStar(require("./sources"), exports);
|
|
@@ -26,4 +26,6 @@ var additional_source_module_1 = require("./additional-source/additional-source.
|
|
|
26
26
|
Object.defineProperty(exports, "AdditionalSourceModule", { enumerable: true, get: function () { return additional_source_module_1.AdditionalSourceModule; } });
|
|
27
27
|
var exceptions_1 = require("./exceptions");
|
|
28
28
|
Object.defineProperty(exports, "ConfigPropertyMetadataNotFound", { enumerable: true, get: function () { return exceptions_1.ConfigPropertyMetadataNotFound; } });
|
|
29
|
+
var config_context_1 = require("./context/config.context");
|
|
30
|
+
Object.defineProperty(exports, "ConfigContext", { enumerable: true, get: function () { return config_context_1.ConfigContext; } });
|
|
29
31
|
//# sourceMappingURL=index.js.map
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,kDAAgC;AAChC,4CAA0B;AAC1B,oDAAkC;AAClC,6CAA2B;AAC3B,0CAAwB;AACxB,2CAAyB;AACzB,yFAAsF;AAA7E,kIAAA,sBAAsB,OAAA;AAE/B,2CAA8D;AAArD,4HAAA,8BAA8B,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,kDAAgC;AAChC,4CAA0B;AAC1B,oDAAkC;AAClC,6CAA2B;AAC3B,0CAAwB;AACxB,2CAAyB;AACzB,yFAAsF;AAA7E,kIAAA,sBAAsB,OAAA;AAE/B,2CAA8D;AAArD,4HAAA,8BAA8B,OAAA;AACvC,2DAAyD;AAAhD,+GAAA,aAAa,OAAA"}
|