@pristine-ts/configuration 2.0.4 → 2.0.6
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/dist/lib/cjs/configuration.module.js +1 -0
- package/dist/lib/cjs/configuration.module.js.map +1 -1
- package/dist/lib/cjs/errors/configuration-definition-already-exists.error.js +2 -6
- package/dist/lib/cjs/errors/configuration-definition-already-exists.error.js.map +1 -1
- package/dist/lib/cjs/errors/configuration-resolver.error.js +5 -9
- package/dist/lib/cjs/errors/configuration-resolver.error.js.map +1 -1
- package/dist/lib/cjs/errors/configuration-validation.error.js +1 -5
- package/dist/lib/cjs/errors/configuration-validation.error.js.map +1 -1
- package/dist/lib/cjs/loaders/loaders.js +19 -0
- package/dist/lib/cjs/loaders/loaders.js.map +1 -0
- package/dist/lib/cjs/loaders/pristine-config-file.interface.js +3 -0
- package/dist/lib/cjs/loaders/pristine-config-file.interface.js.map +1 -0
- package/dist/lib/cjs/loaders/pristine-config-file.loader.js +130 -0
- package/dist/lib/cjs/loaders/pristine-config-file.loader.js.map +1 -0
- package/dist/lib/cjs/managers/configuration.manager.js +82 -14
- package/dist/lib/cjs/managers/configuration.manager.js.map +1 -1
- package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/lib/esm/configuration.module.js +1 -0
- package/dist/lib/esm/configuration.module.js.map +1 -1
- package/dist/lib/esm/errors/configuration-definition-already-exists.error.js +3 -7
- package/dist/lib/esm/errors/configuration-definition-already-exists.error.js.map +1 -1
- package/dist/lib/esm/errors/configuration-resolver.error.js +6 -10
- package/dist/lib/esm/errors/configuration-resolver.error.js.map +1 -1
- package/dist/lib/esm/errors/configuration-validation.error.js +2 -6
- package/dist/lib/esm/errors/configuration-validation.error.js.map +1 -1
- package/dist/lib/esm/loaders/loaders.js +3 -0
- package/dist/lib/esm/loaders/loaders.js.map +1 -0
- package/dist/lib/esm/loaders/pristine-config-file.interface.js +2 -0
- package/dist/lib/esm/loaders/pristine-config-file.interface.js.map +1 -0
- package/dist/lib/esm/loaders/pristine-config-file.loader.js +124 -0
- package/dist/lib/esm/loaders/pristine-config-file.loader.js.map +1 -0
- package/dist/lib/esm/managers/configuration.manager.js +82 -14
- package/dist/lib/esm/managers/configuration.manager.js.map +1 -1
- package/dist/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/types/configuration.module.d.ts +1 -0
- package/dist/types/errors/configuration-definition-already-exists.error.d.ts +2 -2
- package/dist/types/errors/configuration-resolver.error.d.ts +2 -2
- package/dist/types/errors/configuration-validation.error.d.ts +2 -2
- package/dist/types/loaders/loaders.d.ts +2 -0
- package/dist/types/loaders/pristine-config-file.interface.d.ts +15 -0
- package/dist/types/loaders/pristine-config-file.loader.d.ts +47 -0
- package/dist/types/managers/configuration.manager.d.ts +34 -8
- package/package.json +3 -3
|
@@ -2,12 +2,14 @@ import { DependencyContainer } from "tsyringe";
|
|
|
2
2
|
import { ModuleConfigurationValue } from "../types/module-configuration.value";
|
|
3
3
|
import { ConfigurationParser } from "../parsers/configuration.parser";
|
|
4
4
|
import { ConfigurationDefinition } from "@pristine-ts/common";
|
|
5
|
+
import { PristineConfigFileLoader } from "../loaders/pristine-config-file.loader";
|
|
5
6
|
export declare class ConfigurationManager {
|
|
6
7
|
private readonly configurationParser;
|
|
8
|
+
private readonly pristineConfigFileLoader;
|
|
7
9
|
configurationDefinitions: {
|
|
8
10
|
[key: string]: ConfigurationDefinition;
|
|
9
11
|
};
|
|
10
|
-
constructor(configurationParser: ConfigurationParser);
|
|
12
|
+
constructor(configurationParser: ConfigurationParser, pristineConfigFileLoader: PristineConfigFileLoader);
|
|
11
13
|
/**
|
|
12
14
|
* This method registers the configuration definition that a module has defined. This method will be called for each
|
|
13
15
|
* configuration definition defined in each module.
|
|
@@ -16,18 +18,35 @@ export declare class ConfigurationManager {
|
|
|
16
18
|
*/
|
|
17
19
|
register(configurationDefinition: ConfigurationDefinition): void;
|
|
18
20
|
/**
|
|
19
|
-
*
|
|
20
|
-
* will verify that a corresponding configurationDefinition exists and if it does, it will resolve the value.
|
|
21
|
+
* Loads configuration values into the container using the precedence chain:
|
|
21
22
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
23
|
+
* 1. `moduleConfigurationValues` — explicit overrides passed to `kernel.start()`.
|
|
24
|
+
* Highest precedence; wins all conflicts.
|
|
25
|
+
* 2. `pristine.config.ts:config` — values from the user-authored config file.
|
|
26
|
+
* Beats `configDefaults` and the resolver chain.
|
|
27
|
+
* 3. `configDefaults` — merged from every module's `ModuleInterface.configDefaults`.
|
|
28
|
+
* Beats the resolver chain.
|
|
29
|
+
* 4. `configurationDefinition.defaultResolvers` — per-key resolver list (env vars,
|
|
30
|
+
* secrets manager, etc.). First successful resolver wins.
|
|
31
|
+
* 5. `configurationDefinition.defaultValue` — hard fallback.
|
|
24
32
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
33
|
+
* Conflicts:
|
|
34
|
+
* - **Same key in `moduleConfigurationValues` and the file** → stderr warning naming
|
|
35
|
+
* both sources (never the value, which may be a secret); the overrides win.
|
|
36
|
+
* - **Unknown key** in any of the explicit sources (overrides / file / configDefaults)
|
|
37
|
+
* → validation error; throws at end of `load`.
|
|
38
|
+
* - **Two modules' `configDefaults` disagree** — handled by the kernel before this
|
|
39
|
+
* method runs (throws at registration). The merged `configDefaults` reaching this
|
|
40
|
+
* method is already conflict-free.
|
|
41
|
+
*
|
|
42
|
+
* @param moduleConfigurationValues Explicit overrides from `kernel.start()`.
|
|
43
|
+
* @param container The DI container to register resolved values into.
|
|
44
|
+
* @param configDefaults Merged `ModuleInterface.configDefaults` from every module in the
|
|
45
|
+
* graph. Optional; defaults to empty.
|
|
27
46
|
*/
|
|
28
47
|
load(moduleConfigurationValues: {
|
|
29
48
|
[key: string]: ModuleConfigurationValue;
|
|
30
|
-
}, container: DependencyContainer): Promise<void>;
|
|
49
|
+
}, container: DependencyContainer, configDefaults?: Record<string, unknown>): Promise<void>;
|
|
31
50
|
/**
|
|
32
51
|
* Returns the registered required parameters that are missing a value, without mutating state and without
|
|
33
52
|
* invoking default resolvers (which would require a container and could throw). A parameter is reported as
|
|
@@ -49,4 +68,11 @@ export declare class ConfigurationManager {
|
|
|
49
68
|
* @param container
|
|
50
69
|
*/
|
|
51
70
|
registerConfigurationValue(configurationKey: string, value: boolean | number | string, container: DependencyContainer): void;
|
|
71
|
+
/**
|
|
72
|
+
* Reads the `config:` block from `pristine.config.{ts,js}` (if present). The file is
|
|
73
|
+
* optional — its absence is not an error, just produces an empty map. Failures to
|
|
74
|
+
* parse a present file are also swallowed (and reported via stderr) so misconfigured
|
|
75
|
+
* config files don't take down the whole boot.
|
|
76
|
+
*/
|
|
77
|
+
private readFileConfigSafely;
|
|
52
78
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pristine-ts/configuration",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.6",
|
|
4
4
|
"description": "",
|
|
5
5
|
"module": "dist/lib/esm/configuration.module.js",
|
|
6
6
|
"main": "dist/lib/cjs/configuration.module.js",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"dist"
|
|
16
16
|
],
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@pristine-ts/common": "^2.0.
|
|
18
|
+
"@pristine-ts/common": "^2.0.6"
|
|
19
19
|
},
|
|
20
20
|
"author": "",
|
|
21
21
|
"license": "ISC",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"src/*.{js,ts}"
|
|
57
57
|
]
|
|
58
58
|
},
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "539029d624372f9bb1e22e09da7152eabb95c105",
|
|
60
60
|
"repository": {
|
|
61
61
|
"type": "git",
|
|
62
62
|
"url": "https://github.com/magieno/pristine-ts.git",
|