@spinajs/configuration 2.0.557 → 3.0.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/lib/cjs/config/configuration.d.ts +1 -5
- package/lib/cjs/config/configuration.d.ts.map +1 -1
- package/lib/cjs/config/configuration.js +3 -1
- package/lib/cjs/config/configuration.js.map +1 -1
- package/lib/cjs/configuration.d.ts +24 -1
- package/lib/cjs/configuration.d.ts.map +1 -1
- package/lib/cjs/configuration.js +357 -82
- package/lib/cjs/configuration.js.map +1 -1
- package/lib/cjs/decorators.d.ts +77 -4
- package/lib/cjs/decorators.d.ts.map +1 -1
- package/lib/cjs/decorators.js +212 -11
- package/lib/cjs/decorators.js.map +1 -1
- package/lib/cjs/exception.d.ts +9 -1
- package/lib/cjs/exception.d.ts.map +1 -1
- package/lib/cjs/exception.js +2 -1
- package/lib/cjs/exception.js.map +1 -1
- package/lib/cjs/helpers.d.ts.map +1 -1
- package/lib/cjs/helpers.js +3 -2
- package/lib/cjs/helpers.js.map +1 -1
- package/lib/cjs/index.browser.d.ts +1 -0
- package/lib/cjs/index.browser.d.ts.map +1 -1
- package/lib/cjs/index.browser.js +4 -0
- package/lib/cjs/index.browser.js.map +1 -1
- package/lib/cjs/index.d.ts +3 -0
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +6 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/lib-dirs.d.ts +8 -0
- package/lib/cjs/lib-dirs.d.ts.map +1 -0
- package/lib/cjs/lib-dirs.js +16 -0
- package/lib/cjs/lib-dirs.js.map +1 -0
- package/lib/cjs/schemas.d.ts +20 -0
- package/lib/cjs/schemas.d.ts.map +1 -0
- package/lib/cjs/schemas.js +58 -0
- package/lib/cjs/schemas.js.map +1 -0
- package/lib/cjs/sources.d.ts +9 -3
- package/lib/cjs/sources.d.ts.map +1 -1
- package/lib/cjs/sources.js +27 -10
- package/lib/cjs/sources.js.map +1 -1
- package/lib/cjs/util.d.ts +8 -0
- package/lib/cjs/util.d.ts.map +1 -1
- package/lib/cjs/util.js +7 -1
- package/lib/cjs/util.js.map +1 -1
- package/lib/mjs/config/configuration.d.ts +1 -5
- package/lib/mjs/config/configuration.d.ts.map +1 -1
- package/lib/mjs/config/configuration.js +3 -1
- package/lib/mjs/config/configuration.js.map +1 -1
- package/lib/mjs/configuration.d.ts +24 -1
- package/lib/mjs/configuration.d.ts.map +1 -1
- package/lib/mjs/configuration.js +326 -84
- package/lib/mjs/configuration.js.map +1 -1
- package/lib/mjs/decorators.d.ts +77 -4
- package/lib/mjs/decorators.d.ts.map +1 -1
- package/lib/mjs/decorators.js +207 -12
- package/lib/mjs/decorators.js.map +1 -1
- package/lib/mjs/exception.d.ts +9 -1
- package/lib/mjs/exception.d.ts.map +1 -1
- package/lib/mjs/exception.js +2 -1
- package/lib/mjs/exception.js.map +1 -1
- package/lib/mjs/helpers.d.ts.map +1 -1
- package/lib/mjs/helpers.js +3 -2
- package/lib/mjs/helpers.js.map +1 -1
- package/lib/mjs/index.browser.d.ts +1 -0
- package/lib/mjs/index.browser.d.ts.map +1 -1
- package/lib/mjs/index.browser.js +1 -0
- package/lib/mjs/index.browser.js.map +1 -1
- package/lib/mjs/index.d.ts +3 -0
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +3 -0
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/lib-dirs.d.ts +8 -0
- package/lib/mjs/lib-dirs.d.ts.map +1 -0
- package/lib/mjs/lib-dirs.js +13 -0
- package/lib/mjs/lib-dirs.js.map +1 -0
- package/lib/mjs/schemas.d.ts +20 -0
- package/lib/mjs/schemas.d.ts.map +1 -0
- package/lib/mjs/schemas.js +54 -0
- package/lib/mjs/schemas.js.map +1 -0
- package/lib/mjs/sources.d.ts +9 -3
- package/lib/mjs/sources.d.ts.map +1 -1
- package/lib/mjs/sources.js +27 -10
- package/lib/mjs/sources.js.map +1 -1
- package/lib/mjs/util.d.ts +8 -0
- package/lib/mjs/util.d.ts.map +1 -1
- package/lib/mjs/util.js +4 -0
- package/lib/mjs/util.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +7 -7
package/lib/mjs/configuration.js
CHANGED
|
@@ -20,16 +20,80 @@ import _ from 'lodash';
|
|
|
20
20
|
import { InternalLogger } from '@spinajs/internal-logger';
|
|
21
21
|
import { InvalidArgument, InvalidOperation } from '@spinajs/exceptions';
|
|
22
22
|
import { ConfigurationSource, Configuration, ConfigVarProtocol, ConfigVar, } from '@spinajs/configuration-common';
|
|
23
|
-
import { Autoinject, Container, Injectable
|
|
23
|
+
import { Autoinject, Container, Injectable } from '@spinajs/di';
|
|
24
24
|
import { InvalidConfiguration } from './exception.js';
|
|
25
|
-
import { mapObject, mergeArrays, parseArgv, pickObjects, pickString } from './util.js';
|
|
26
|
-
import config from './config/configuration.js';
|
|
25
|
+
import { mapObject, mergeArrays, parseArgv, pickObjects, pickString, sameSchema, schemaNameOf } from './util.js';
|
|
26
|
+
import config, { buildEnvironmentFlags } from './config/configuration.js';
|
|
27
27
|
import './sources.js';
|
|
28
28
|
import { default as ajvMergePath } from 'ajv-merge-patch';
|
|
29
29
|
import { default as ajvFormats } from 'ajv-formats';
|
|
30
30
|
import { default as ajvKeywords } from 'ajv-keywords';
|
|
31
31
|
const PROTOCOL_REGEXP = /^([a-zA-Z0-9\-]+:\/\/)+(.+)$/gm;
|
|
32
32
|
const COMMON_WEB_PROTOCOLS = ['http://', 'https://', 'ws://', 'wss://', 'ftp://', 'ftps://', 'file://', 'data://', 'blob://', 'mailto:'];
|
|
33
|
+
// A Configuration whose check ran but which DI has not cached yet (the microtasks after resolve() returns), by container.
|
|
34
|
+
const CHECKED = new WeakMap();
|
|
35
|
+
// The target of each lazy-var proxy load() builds, by proxy: copying a proxy property by property would load every var.
|
|
36
|
+
const LAZY_TARGETS = new WeakMap();
|
|
37
|
+
// Set while Ajv validates the stored value in place: it writes coerced values back through the proxies.
|
|
38
|
+
let keepUnresolvedVars = false;
|
|
39
|
+
const UNSAFE_PATH_SEGMENTS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
40
|
+
// _.set skips these keys, but _.get resolves them, so merge() into `__proto__` would write to Object.prototype.
|
|
41
|
+
function assertSafePath(path) {
|
|
42
|
+
const unsafe = _.toPath(path).find((s) => UNSAFE_PATH_SEGMENTS.has(s));
|
|
43
|
+
if (unsafe !== undefined)
|
|
44
|
+
throw new InvalidArgument(`Configuration path '${_.toPath(path).join('.')}' contains the reserved segment '${unsafe}'`);
|
|
45
|
+
}
|
|
46
|
+
const isUnresolved = (v) => v instanceof ConfigVar && (v.get() ?? null) === null;
|
|
47
|
+
function withLazyVars(obj) {
|
|
48
|
+
const proxy = new Proxy(obj, {
|
|
49
|
+
get: (o, prop) => (o[prop] instanceof ConfigVar ? o[prop].get() : o[prop]),
|
|
50
|
+
set: (o, prop, value) => {
|
|
51
|
+
// A var that is not ready yet reads as null; its coercion ('' for a string) must not replace it for good.
|
|
52
|
+
if (!(keepUnresolvedVars && isUnresolved(o[prop])))
|
|
53
|
+
o[prop] = value;
|
|
54
|
+
return true;
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
LAZY_TARGETS.set(proxy, obj);
|
|
58
|
+
return proxy;
|
|
59
|
+
}
|
|
60
|
+
// A copy that validates as the stored value does: behind a copied lazy-var proxy only the vars the schema reads load,
|
|
61
|
+
// and a class instance (a ConfigVar, one with #private fields a copy would lack) is kept by reference.
|
|
62
|
+
function copyForCheck(value) {
|
|
63
|
+
return _.cloneDeepWith(value, function copy(v) {
|
|
64
|
+
const target = typeof v === 'object' && v !== null ? LAZY_TARGETS.get(v) : undefined;
|
|
65
|
+
if (target)
|
|
66
|
+
return withLazyVars(_.cloneDeepWith(target, copy));
|
|
67
|
+
if (Object.prototype.toString.call(v) === '[object Object]' && !_.isPlainObject(v))
|
|
68
|
+
return v;
|
|
69
|
+
return undefined;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
const decodePointer = (segment) => segment.replace(/~1/g, '/').replace(/~0/g, '~');
|
|
73
|
+
// Ajv tags the sub-errors of a propertyNames check with `propertyName`; the check itself reports the key in `params`.
|
|
74
|
+
const isNameError = (e) => e.propertyName !== undefined;
|
|
75
|
+
const keyOf = (e) => {
|
|
76
|
+
const p = e.params;
|
|
77
|
+
return p.missingProperty ?? p.additionalProperty ?? p.propertyName;
|
|
78
|
+
};
|
|
79
|
+
function toViolations(module, schema, errors) {
|
|
80
|
+
const violations = [];
|
|
81
|
+
for (const e of errors) {
|
|
82
|
+
if (isNameError(e))
|
|
83
|
+
continue;
|
|
84
|
+
const segments = e.instancePath.split('/').filter((p) => p !== '').map(decodePointer);
|
|
85
|
+
const key = keyOf(e);
|
|
86
|
+
if (key !== undefined)
|
|
87
|
+
segments.push(String(key));
|
|
88
|
+
let message = e.message ?? e.keyword;
|
|
89
|
+
if (e.keyword === 'propertyNames') {
|
|
90
|
+
const detail = errors.filter((n) => isNameError(n) && n.instancePath === e.instancePath && n.propertyName === key).map((n) => n.message ?? n.keyword);
|
|
91
|
+
message = `property name is invalid${detail.length ? `: ${detail.join(', ')}` : ''}`;
|
|
92
|
+
}
|
|
93
|
+
violations.push({ path: [module, ...segments].join('.'), schema, message });
|
|
94
|
+
}
|
|
95
|
+
return violations;
|
|
96
|
+
}
|
|
33
97
|
/**
|
|
34
98
|
* HACK:
|
|
35
99
|
* Becouse of ajv not supporting esm default exports we need to
|
|
@@ -59,6 +123,9 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
59
123
|
* Loaded & merged configuration
|
|
60
124
|
*/
|
|
61
125
|
this.Config = {};
|
|
126
|
+
/** Schemas applied after boot that refused the loaded value, by schema; a read of their module throws. */
|
|
127
|
+
this.RefusedModules = new Map();
|
|
128
|
+
this.Loading = false;
|
|
62
129
|
this.CustomConfigPaths = options?.cfgCustomPaths ?? [];
|
|
63
130
|
this.RunApp = options?.app ?? parseArgv('--app') ?? '';
|
|
64
131
|
this.AppBaseDir = options?.appBaseDir ?? parseArgv('--apppath') ?? join(process.cwd(), '../apps/');
|
|
@@ -71,7 +138,33 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
71
138
|
* @param defaultValue - optional, if value at specified path not exists returns default value
|
|
72
139
|
*/
|
|
73
140
|
get(path, defaultValue) {
|
|
74
|
-
|
|
141
|
+
if (this.RefusedModules.size !== 0)
|
|
142
|
+
this.throwIfRefused(path);
|
|
143
|
+
const value = _.get(this.Config, path, defaultValue);
|
|
144
|
+
if (value === null && defaultValue !== undefined && this.isUnresolvedVar(path))
|
|
145
|
+
return defaultValue;
|
|
146
|
+
return value;
|
|
147
|
+
}
|
|
148
|
+
isUnresolvedVar(path) {
|
|
149
|
+
const segments = _.toPath(path);
|
|
150
|
+
if (segments.length === 0)
|
|
151
|
+
return false;
|
|
152
|
+
const parent = segments.length === 1 ? this.Config : _.get(this.Config, segments.slice(0, -1));
|
|
153
|
+
const target = typeof parent === 'object' && parent !== null ? LAZY_TARGETS.get(parent) : undefined;
|
|
154
|
+
return target !== undefined && isUnresolved(target[segments[segments.length - 1]]);
|
|
155
|
+
}
|
|
156
|
+
// A schema applied after boot cannot fail the boot; reading the value it refused, or a part of it, must still fail.
|
|
157
|
+
throwIfRefused(path) {
|
|
158
|
+
const segments = _.toPath(path);
|
|
159
|
+
// An empty path names no module (and reads nothing): it must not match every refused one.
|
|
160
|
+
if (segments.length === 0)
|
|
161
|
+
return;
|
|
162
|
+
for (const { module, error } of this.RefusedModules.values()) {
|
|
163
|
+
const n = Math.min(module.length, segments.length);
|
|
164
|
+
if (_.isEqual(module.slice(0, n), segments.slice(0, n))) {
|
|
165
|
+
throw new InvalidConfiguration(error.message, error.validationExceptions, error.violations);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
75
168
|
}
|
|
76
169
|
/**
|
|
77
170
|
* Sets at given path configuration value. Use when you want to override config
|
|
@@ -81,7 +174,11 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
81
174
|
* @param value - value to set
|
|
82
175
|
*/
|
|
83
176
|
set(path, value) {
|
|
177
|
+
assertSafePath(path);
|
|
178
|
+
const schemas = this.schemasAt(path);
|
|
179
|
+
this.checkChange(schemas, path, (root) => _.set(root, path, copyForCheck(value)));
|
|
84
180
|
this.Config = _.set(this.Config, path, value);
|
|
181
|
+
this.applySchemas(schemas);
|
|
85
182
|
}
|
|
86
183
|
/**
|
|
87
184
|
* Merge existing config value with new options instead overriding
|
|
@@ -90,7 +187,11 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
90
187
|
* @param value - value to merge
|
|
91
188
|
*/
|
|
92
189
|
merge(path, value) {
|
|
190
|
+
assertSafePath(path);
|
|
191
|
+
const schemas = this.schemasAt(path);
|
|
192
|
+
this.checkChange(schemas, path, (root) => _.mergeWith(_.get(root, path), copyForCheck(value), mergeArrays));
|
|
93
193
|
_.mergeWith(this.get(path), value, mergeArrays);
|
|
194
|
+
this.applySchemas(schemas);
|
|
94
195
|
}
|
|
95
196
|
async resolve() {
|
|
96
197
|
await super.resolve();
|
|
@@ -104,48 +205,76 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
104
205
|
throw new InvalidArgument(`ConfigurationConfigPaths should be an array`);
|
|
105
206
|
}
|
|
106
207
|
this.CustomConfigPaths.forEach((p) => {
|
|
107
|
-
InternalLogger.trace(
|
|
208
|
+
InternalLogger.trace({ path: p }, 'Custom config path at: ${path}', 'Configuration');
|
|
108
209
|
});
|
|
109
210
|
}
|
|
110
211
|
if (this.RunApp) {
|
|
111
|
-
InternalLogger.info(
|
|
212
|
+
InternalLogger.info({ runApp: this.RunApp }, 'Run app is ${runApp}', 'Configuration');
|
|
112
213
|
}
|
|
113
|
-
InternalLogger.info(
|
|
214
|
+
InternalLogger.info({ appBaseDir: this.AppBaseDir }, 'App base dir is ${appBaseDir}', 'Configuration');
|
|
114
215
|
this.initValidator();
|
|
115
|
-
this.applyAppDirs();
|
|
116
|
-
// add default configuration of this module
|
|
117
|
-
// so we dont need to import it
|
|
118
|
-
this.set('configuration', config);
|
|
119
216
|
/**
|
|
120
217
|
* Load and validate data from cfg sources
|
|
121
218
|
* in proper order
|
|
122
219
|
*/
|
|
123
220
|
this.loadSources();
|
|
124
221
|
await this.load();
|
|
125
|
-
|
|
126
|
-
|
|
222
|
+
try {
|
|
223
|
+
this.validate();
|
|
224
|
+
this.configure();
|
|
225
|
+
}
|
|
226
|
+
catch (e) {
|
|
227
|
+
// DI does not cache a Configuration whose resolve failed: a schema registered later must not be checked against it.
|
|
228
|
+
if (CHECKED.get(this.Container) === this)
|
|
229
|
+
CHECKED.delete(this.Container);
|
|
230
|
+
throw e;
|
|
231
|
+
}
|
|
127
232
|
}
|
|
128
233
|
async mergeSource(sType) {
|
|
129
234
|
const source = this.Container.resolve(sType);
|
|
130
235
|
const sCfg = await source.Load(this);
|
|
236
|
+
const schemas = sCfg ? _.uniq(Object.keys(sCfg).flatMap((k) => this.schemasAt([k]))) : [];
|
|
237
|
+
this.checkChange(schemas, [], (root) => _.mergeWith(root, copyForCheck(sCfg), mergeArrays));
|
|
131
238
|
this.Sources.push(source);
|
|
132
239
|
if (sCfg) {
|
|
133
|
-
_.mergeWith(sCfg, mergeArrays);
|
|
240
|
+
_.mergeWith(this.Config, sCfg, mergeArrays);
|
|
134
241
|
}
|
|
242
|
+
this.applySchemas(schemas);
|
|
135
243
|
}
|
|
136
244
|
/**
|
|
137
245
|
* Reloads configuration data
|
|
138
246
|
*/
|
|
139
247
|
async load() {
|
|
248
|
+
const previous = this.Config;
|
|
249
|
+
this.Loading = true;
|
|
250
|
+
try {
|
|
251
|
+
await this.loadTree();
|
|
252
|
+
// resolve() checks the first load itself.
|
|
253
|
+
if (this.ValidationSchemas !== undefined)
|
|
254
|
+
this.checkAll();
|
|
255
|
+
}
|
|
256
|
+
catch (e) {
|
|
257
|
+
this.Config = previous;
|
|
258
|
+
throw e;
|
|
259
|
+
}
|
|
260
|
+
finally {
|
|
261
|
+
this.Loading = false;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
async loadTree() {
|
|
140
265
|
this.Config = {};
|
|
266
|
+
this.NamedEnv = this.Env ?? this.Container.get('process.env')?.APP_ENV ?? process.env.NODE_ENV;
|
|
141
267
|
// add env variables to config
|
|
142
|
-
const env =
|
|
268
|
+
const env = this.Container.get('process.env');
|
|
269
|
+
const appEnv = this.Env ?? env?.APP_ENV ?? process.env.NODE_ENV ?? 'development';
|
|
143
270
|
this.set('process.env', {
|
|
144
271
|
...process.env,
|
|
145
272
|
...env,
|
|
146
|
-
APP_ENV:
|
|
273
|
+
APP_ENV: appEnv,
|
|
147
274
|
});
|
|
148
|
-
|
|
275
|
+
// Defaults of this module, which sources may override. The flags follow the APP_ENV that selects the config files.
|
|
276
|
+
_.mergeWith(this.Config, _.cloneDeep(config), { configuration: buildEnvironmentFlags({ APP_ENV: appEnv }) }, mergeArrays);
|
|
277
|
+
InternalLogger.info({ appEnv: this.get('process.env.APP_ENV') }, 'APP_ENV set to ${appEnv}', 'Configuration');
|
|
149
278
|
for (const source of this.Sources) {
|
|
150
279
|
const rCfg = await source.Load(this);
|
|
151
280
|
if (rCfg) {
|
|
@@ -158,11 +287,11 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
158
287
|
* eg. when custom modules have config and dont want to use files
|
|
159
288
|
* eg. in webpack environment
|
|
160
289
|
*/
|
|
290
|
+
// Merged at the root: merge() writes nothing at a key no source defines.
|
|
161
291
|
this.Container.resolve(Array.ofType('__configuration__')).forEach((c) => {
|
|
162
|
-
|
|
163
|
-
this.merge(k, c[`${k}`]);
|
|
164
|
-
});
|
|
292
|
+
_.mergeWith(this.Config, c, mergeArrays);
|
|
165
293
|
});
|
|
294
|
+
this.applyAppDirs();
|
|
166
295
|
// load config vars from various protocols
|
|
167
296
|
await this.loadProtocolVars();
|
|
168
297
|
/**
|
|
@@ -179,14 +308,7 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
179
308
|
if (!haveProtoVals) {
|
|
180
309
|
return obj;
|
|
181
310
|
}
|
|
182
|
-
return
|
|
183
|
-
get: (obj, prop) => {
|
|
184
|
-
if (obj[prop] instanceof ConfigVar) {
|
|
185
|
-
return obj[prop].get();
|
|
186
|
-
}
|
|
187
|
-
return obj[prop];
|
|
188
|
-
},
|
|
189
|
-
});
|
|
311
|
+
return withLazyVars(obj);
|
|
190
312
|
};
|
|
191
313
|
// omit system config prop couse dir dynamic loading.
|
|
192
314
|
// NOTE: the root object must be wrapped by proxyFunc AFTER merging - spreading
|
|
@@ -199,7 +321,7 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
199
321
|
});
|
|
200
322
|
}
|
|
201
323
|
async loadProtocolVars() {
|
|
202
|
-
const configProtocols = await
|
|
324
|
+
const configProtocols = await this.Container.resolve(Array.ofType(ConfigVarProtocol));
|
|
203
325
|
if (!configProtocols || configProtocols.length === 0) {
|
|
204
326
|
InternalLogger.warn(`No configuration protocols registered`, 'Configuration');
|
|
205
327
|
return;
|
|
@@ -207,54 +329,55 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
207
329
|
// Build protocol map for O(1) lookup
|
|
208
330
|
const protocolMap = new Map();
|
|
209
331
|
configProtocols.forEach((p) => {
|
|
210
|
-
InternalLogger.info(
|
|
332
|
+
InternalLogger.info({ protocol: p.Protocol }, 'Registered configuration protocol: ${protocol}', 'Configuration');
|
|
211
333
|
protocolMap.set(p.Protocol, p);
|
|
212
334
|
});
|
|
213
335
|
// Build common web protocol prefix set for fast checking
|
|
214
336
|
const webProtocolSet = new Set(COMMON_WEB_PROTOCOLS.map(p => p.toLowerCase()));
|
|
337
|
+
const resolveString = async (obj, key, val, currentPath) => {
|
|
338
|
+
// Quick check: does it contain ://?
|
|
339
|
+
const protocolIndex = val.indexOf('://');
|
|
340
|
+
if (protocolIndex === -1) {
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
// Extract potential protocol (everything before ://)
|
|
344
|
+
const potentialProtocol = val.substring(0, protocolIndex + 3).toLowerCase();
|
|
345
|
+
// Skip common web protocols using Set lookup (O(1))
|
|
346
|
+
if (webProtocolSet.has(potentialProtocol)) {
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
// Use regex only if we passed initial checks
|
|
350
|
+
PROTOCOL_REGEXP.lastIndex = 0;
|
|
351
|
+
const match = PROTOCOL_REGEXP.exec(val);
|
|
352
|
+
if (!match) {
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
// O(1) protocol lookup using Map
|
|
356
|
+
const protocol = protocolMap.get(match[1]);
|
|
357
|
+
if (!protocol) {
|
|
358
|
+
InternalLogger.warn({ protocol: match[1] }, 'Protocol ${protocol} used in configuration is not registered.', 'Configuration');
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
const fullPath = [...currentPath, key].join('.');
|
|
362
|
+
try {
|
|
363
|
+
obj[key] = await protocol.getVar(match[2], this.Config);
|
|
364
|
+
}
|
|
365
|
+
catch (err) {
|
|
366
|
+
InternalLogger.error({ error: err, key: fullPath, protocol: protocol.Protocol, value: val }, 'Error loading configuration var for key ${key} using protocol ${protocol}, value: ${value}', 'Configuration');
|
|
367
|
+
}
|
|
368
|
+
};
|
|
215
369
|
const iterate = async (obj, currentPath = []) => {
|
|
216
370
|
if (!obj) {
|
|
217
371
|
return;
|
|
218
372
|
}
|
|
219
373
|
if (Array.isArray(obj)) {
|
|
220
|
-
await Promise.all(obj.map((c, index) => iterate(c, [...currentPath, `[${index}]`])));
|
|
374
|
+
await Promise.all(obj.map((c, index) => (typeof c === 'string' ? resolveString(obj, String(index), c, currentPath) : iterate(c, [...currentPath, `[${index}]`]))));
|
|
221
375
|
return;
|
|
222
376
|
}
|
|
223
377
|
const stringEntries = pickString(obj);
|
|
224
378
|
const objectEntries = pickObjects(obj);
|
|
225
379
|
// Process strings in parallel
|
|
226
|
-
await Promise.all(stringEntries.map(
|
|
227
|
-
// Quick check: does it contain ://?
|
|
228
|
-
const protocolIndex = val.indexOf('://');
|
|
229
|
-
if (protocolIndex === -1) {
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
// Extract potential protocol (everything before ://)
|
|
233
|
-
const potentialProtocol = val.substring(0, protocolIndex + 3).toLowerCase();
|
|
234
|
-
// Skip common web protocols using Set lookup (O(1))
|
|
235
|
-
if (webProtocolSet.has(potentialProtocol)) {
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
// Use regex only if we passed initial checks
|
|
239
|
-
PROTOCOL_REGEXP.lastIndex = 0;
|
|
240
|
-
const match = PROTOCOL_REGEXP.exec(val);
|
|
241
|
-
if (!match) {
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
// O(1) protocol lookup using Map
|
|
245
|
-
const protocol = protocolMap.get(match[1]);
|
|
246
|
-
if (!protocol) {
|
|
247
|
-
InternalLogger.warn(`Protocol ${match[1]} used in configuration is not registered.`, 'Configuration');
|
|
248
|
-
return;
|
|
249
|
-
}
|
|
250
|
-
const fullPath = [...currentPath, key].join('.');
|
|
251
|
-
try {
|
|
252
|
-
obj[key] = await protocol.getVar(match[2], this.Config);
|
|
253
|
-
}
|
|
254
|
-
catch (err) {
|
|
255
|
-
InternalLogger.error(err, `Error loading configuration var for key ${fullPath} using protocol ${protocol.Protocol}, value: ${val}`, 'Configuration');
|
|
256
|
-
}
|
|
257
|
-
}));
|
|
380
|
+
await Promise.all(stringEntries.map(([key, val]) => resolveString(obj, key, val, currentPath)));
|
|
258
381
|
// Process nested objects in parallel
|
|
259
382
|
await Promise.all(objectEntries.map(([key, val]) => iterate(val, [...currentPath, key])));
|
|
260
383
|
};
|
|
@@ -276,21 +399,130 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
276
399
|
});
|
|
277
400
|
}
|
|
278
401
|
validate() {
|
|
279
|
-
this.
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
402
|
+
this.checkAll();
|
|
403
|
+
const container = this.Container;
|
|
404
|
+
CHECKED.set(container, this);
|
|
405
|
+
container.once('di.resolved.Configuration', () => {
|
|
406
|
+
if (CHECKED.get(container) === this)
|
|
407
|
+
CHECKED.delete(container);
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
/** The Configuration of `container` that has run its check but is not resolved (cached) yet. */
|
|
411
|
+
static checkedIn(container) {
|
|
412
|
+
return CHECKED.get(container);
|
|
413
|
+
}
|
|
414
|
+
checkAll() {
|
|
415
|
+
this.ValidationSchemas = this.schemasOfLineage();
|
|
416
|
+
const errors = [];
|
|
417
|
+
const violations = [];
|
|
418
|
+
for (const s of this.ValidationSchemas) {
|
|
419
|
+
const r = this.checkModule(s);
|
|
420
|
+
errors.push(...r.errors);
|
|
421
|
+
violations.push(...r.violations);
|
|
422
|
+
}
|
|
423
|
+
this.throwIfInvalid(errors, violations);
|
|
424
|
+
this.RefusedModules.clear();
|
|
425
|
+
}
|
|
426
|
+
// The registered schemas whose module is at, under or above `path`. None before the boot check, and none while load()
|
|
427
|
+
// rebuilds the tree: it checks the whole tree once it is complete.
|
|
428
|
+
schemasAt(path) {
|
|
429
|
+
if (this.ValidationSchemas === undefined || this.Loading)
|
|
430
|
+
return [];
|
|
431
|
+
const target = _.toPath(path);
|
|
432
|
+
return this.schemasOfLineage().filter((s) => {
|
|
433
|
+
const module = _.toPath(s.$configurationModule);
|
|
434
|
+
const n = Math.min(module.length, target.length);
|
|
435
|
+
return _.isEqual(module.slice(0, n), target.slice(0, n));
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
// Runs `change` on a copy of the modules of `schemas` and throws when one of them would become invalid, so that a
|
|
439
|
+
// refused change is never applied.
|
|
440
|
+
checkChange(schemas, path, change) {
|
|
441
|
+
if (schemas.length === 0)
|
|
442
|
+
return;
|
|
443
|
+
const top = _.minBy([_.toPath(path), ...schemas.map((s) => _.toPath(s.$configurationModule))], (p) => p.length) ?? [];
|
|
444
|
+
const root = (top.length === 0 ? copyForCheck(this.Config) : _.set({}, top, copyForCheck(_.get(this.Config, top))));
|
|
445
|
+
change(root);
|
|
446
|
+
const errors = [];
|
|
447
|
+
const violations = [];
|
|
448
|
+
for (const s of schemas) {
|
|
449
|
+
const value = _.get(root, s.$configurationModule);
|
|
450
|
+
if (value === undefined || this.Validator.validate(s, value))
|
|
451
|
+
continue;
|
|
452
|
+
const r = this.failureOf(s);
|
|
453
|
+
errors.push(...r.errors);
|
|
454
|
+
violations.push(...r.violations);
|
|
455
|
+
}
|
|
456
|
+
this.throwIfInvalid(errors, violations);
|
|
457
|
+
}
|
|
458
|
+
// Fills the defaults and coercion of the modules a change that passed checkChange() reached.
|
|
459
|
+
applySchemas(schemas) {
|
|
460
|
+
for (const s of schemas) {
|
|
461
|
+
const r = this.checkModule(s);
|
|
462
|
+
this.throwIfInvalid(r.errors, r.violations);
|
|
463
|
+
this.RefusedModules.delete(schemaNameOf(s));
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
/** Validates one module after boot; a refused module stays refused for reads until a later check passes. */
|
|
467
|
+
validateModule(s) {
|
|
468
|
+
const key = schemaNameOf(s);
|
|
469
|
+
const r = this.checkModule(s);
|
|
470
|
+
try {
|
|
471
|
+
this.throwIfInvalid(r.errors, r.violations);
|
|
472
|
+
}
|
|
473
|
+
catch (e) {
|
|
474
|
+
this.RefusedModules.set(key, { module: _.toPath(s.$configurationModule), error: e });
|
|
475
|
+
throw e;
|
|
476
|
+
}
|
|
477
|
+
this.RefusedModules.delete(key);
|
|
478
|
+
}
|
|
479
|
+
throwIfInvalid(errors, violations) {
|
|
480
|
+
if (violations.length === 0)
|
|
481
|
+
return;
|
|
482
|
+
violations.forEach((v) => InternalLogger.error({ path: v.path, schema: v.schema, violation: v.message }, 'Invalid configuration at ${path} ( schema ${schema} ): ${violation}', 'Configuration'));
|
|
483
|
+
throw new InvalidConfiguration(`Invalid configuration: ${violations.map((v) => `${v.path} ${v.message} ( schema ${v.schema} )`).join('; ')}`, errors, violations);
|
|
484
|
+
}
|
|
485
|
+
checkModule(s) {
|
|
486
|
+
// Not this.get: a refused module is read here to check it again.
|
|
487
|
+
const config = _.get(this.Config, s.$configurationModule);
|
|
488
|
+
if (config === undefined) {
|
|
489
|
+
// An unconfigured module still gets its schema defaults, unless the schema needs values from the app.
|
|
490
|
+
const empty = {};
|
|
491
|
+
if (this.Validator.validate(s, empty)) {
|
|
492
|
+
_.set(this.Config, s.$configurationModule, empty);
|
|
284
493
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
// @ts-ignore
|
|
288
|
-
this.Validator.errors.forEach((ve) => {
|
|
289
|
-
InternalLogger.error('Invalid configuration ! Message: %s, path: %s, keyword: %s, schemaPath: %s, configuration module: %s', 'Configuration', ve.message, ve.instancePath, ve.keyword, ve.schemaPath, s.$configurationModule);
|
|
290
|
-
});
|
|
291
|
-
throw new InvalidConfiguration('Validation error', this.Validator.errors);
|
|
494
|
+
else {
|
|
495
|
+
InternalLogger.warn({ module: s.$configurationModule }, 'Cannot validate configuration for module ${module}, configuration is not set', 'Configuration');
|
|
292
496
|
}
|
|
293
|
-
|
|
497
|
+
return { errors: [], violations: [] };
|
|
498
|
+
}
|
|
499
|
+
// Ajv coerces and fills defaults in place, and evaluates `if` before `properties` coerces. Checking the stored value
|
|
500
|
+
// directly would rewrite a refused value (a null guard's null into 0) so that the next check of it passes; only a
|
|
501
|
+
// value whose copy passes gets its defaults and coercion.
|
|
502
|
+
if (this.Validator.validate(s, copyForCheck(config)) && this.validateInPlace(s, config)) {
|
|
503
|
+
return { errors: [], violations: [] };
|
|
504
|
+
}
|
|
505
|
+
return this.failureOf(s);
|
|
506
|
+
}
|
|
507
|
+
// The violations of the last failed this.Validator.validate(s, ...) call.
|
|
508
|
+
failureOf(s) {
|
|
509
|
+
const errors = this.Validator.errors ?? [];
|
|
510
|
+
const schema = schemaNameOf(s);
|
|
511
|
+
let violations = toViolations(s.$configurationModule, schema, errors);
|
|
512
|
+
if (violations.length === 0) {
|
|
513
|
+
// An invalid configuration must never pass, whatever shape Ajv reported.
|
|
514
|
+
violations = errors.map((e) => ({ path: [s.$configurationModule, ...e.instancePath.split('/').filter((p) => p !== '').map(decodePointer)].join('.'), schema, message: e.message ?? e.keyword }));
|
|
515
|
+
}
|
|
516
|
+
return { errors, violations };
|
|
517
|
+
}
|
|
518
|
+
validateInPlace(s, config) {
|
|
519
|
+
keepUnresolvedVars = true;
|
|
520
|
+
try {
|
|
521
|
+
return this.Validator.validate(s, config);
|
|
522
|
+
}
|
|
523
|
+
finally {
|
|
524
|
+
keepUnresolvedVars = false;
|
|
525
|
+
}
|
|
294
526
|
}
|
|
295
527
|
initValidator() {
|
|
296
528
|
const options = {
|
|
@@ -307,6 +539,8 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
307
539
|
useDefaults: true,
|
|
308
540
|
// The option coerceTypes allows you to have your data types coerced to the types specified in your schema type keywords
|
|
309
541
|
coerceTypes: true,
|
|
542
|
+
// allow rules across fields, eg. minimum: { $data: '1/min' }
|
|
543
|
+
$data: true,
|
|
310
544
|
};
|
|
311
545
|
// @ts-ignore
|
|
312
546
|
if (Ajv.default) {
|
|
@@ -329,11 +563,17 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
329
563
|
// we use $configurationModule keyword to identify
|
|
330
564
|
// to match config module with config schema
|
|
331
565
|
this.Validator.addKeyword('$configurationModule');
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
566
|
+
}
|
|
567
|
+
// A child that registers a schema of its own must not hide the schemas of its ancestors.
|
|
568
|
+
schemasOfLineage() {
|
|
569
|
+
const found = [];
|
|
570
|
+
for (let c = this.Container; c; c = c.Parent) {
|
|
571
|
+
for (const s of (c.Cache.get('__configurationSchema__', false) ?? [])) {
|
|
572
|
+
if (!found.some((f) => sameSchema(f, s)))
|
|
573
|
+
found.push(s);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
return found;
|
|
337
577
|
}
|
|
338
578
|
dir(toJoin) {
|
|
339
579
|
return normalize(join(resolve(this.AppBaseDir), toJoin));
|
|
@@ -345,8 +585,10 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
345
585
|
if (!this.RunApp) {
|
|
346
586
|
return;
|
|
347
587
|
}
|
|
348
|
-
for (const prop of Object.keys(this.get(['system', 'dirs'],
|
|
349
|
-
this.get(['system', 'dirs', prop])
|
|
588
|
+
for (const prop of Object.keys(this.get(['system', 'dirs'], {}))) {
|
|
589
|
+
const dirs = this.get(['system', 'dirs', prop]);
|
|
590
|
+
if (Array.isArray(dirs))
|
|
591
|
+
dirs.push(this.dir(`/${this.RunApp}/${prop}`));
|
|
350
592
|
}
|
|
351
593
|
}
|
|
352
594
|
/**
|
|
@@ -357,7 +599,7 @@ let FrameworkConfiguration = class FrameworkConfiguration extends Configuration
|
|
|
357
599
|
for (const prop of Object.keys(this.Config)) {
|
|
358
600
|
const subconfig = this.Config[`${prop}`];
|
|
359
601
|
if (!subconfig) {
|
|
360
|
-
InternalLogger.warn(
|
|
602
|
+
InternalLogger.warn({ section: prop }, 'Configuration for ${section} not exists, check configuration file', 'configuration');
|
|
361
603
|
continue;
|
|
362
604
|
}
|
|
363
605
|
if (subconfig.configure && typeof subconfig.configure === 'function') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/configuration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/configuration.ts"],"names":[],"mappings":"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"}
|