apcore-js 0.14.1 → 0.15.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/README.md +136 -1
- package/dist/config.d.ts +74 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +420 -12
- package/dist/config.js.map +1 -1
- package/dist/error-formatter.d.ts +37 -0
- package/dist/error-formatter.d.ts.map +1 -0
- package/dist/error-formatter.js +51 -0
- package/dist/error-formatter.js.map +1 -0
- package/dist/errors.d.ts +30 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +48 -0
- package/dist/errors.js.map +1 -1
- package/dist/events/subscribers.d.ts +1 -1
- package/dist/events/subscribers.d.ts.map +1 -1
- package/dist/events/subscribers.js +4 -4
- package/dist/events/subscribers.js.map +1 -1
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/middleware/platform-notify.d.ts.map +1 -1
- package/dist/middleware/platform-notify.js +4 -2
- package/dist/middleware/platform-notify.js.map +1 -1
- package/dist/sys-modules/control.d.ts.map +1 -1
- package/dist/sys-modules/control.js +15 -2
- package/dist/sys-modules/control.js.map +1 -1
- package/dist/sys-modules/registration.d.ts +1 -1
- package/dist/sys-modules/registration.d.ts.map +1 -1
- package/dist/sys-modules/registration.js +40 -9
- package/dist/sys-modules/registration.js.map +1 -1
- package/dist/sys-modules/toggle.d.ts.map +1 -1
- package/dist/sys-modules/toggle.js +6 -2
- package/dist/sys-modules/toggle.js.map +1 -1
- package/package.json +1 -1
package/dist/config.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Configuration loading, validation, and environment variable overrides (Algorithm A12).
|
|
3
|
+
* Supports legacy mode (flat YAML) and namespace mode (apcore top-level key).
|
|
3
4
|
*/
|
|
4
5
|
import yaml from 'js-yaml';
|
|
5
|
-
import { ConfigError, ConfigNotFoundError } from './errors.js';
|
|
6
|
+
import { ConfigError, ConfigNotFoundError, ConfigNamespaceDuplicateError, ConfigNamespaceReservedError, ConfigEnvPrefixConflictError, ConfigMountError, ConfigBindError, } from './errors.js';
|
|
6
7
|
// Lazy-load Node.js built-in modules for browser compatibility
|
|
7
8
|
let _nodeFs = null;
|
|
8
9
|
try {
|
|
@@ -14,9 +15,19 @@ try {
|
|
|
14
15
|
_nodeProcess = await import('node:process');
|
|
15
16
|
}
|
|
16
17
|
catch { /* browser environment */ }
|
|
17
|
-
|
|
18
|
+
let _nodePath = null;
|
|
19
|
+
try {
|
|
20
|
+
_nodePath = await import('node:path');
|
|
21
|
+
}
|
|
22
|
+
catch { /* browser environment */ }
|
|
23
|
+
let _nodeOs = null;
|
|
24
|
+
try {
|
|
25
|
+
_nodeOs = await import('node:os');
|
|
26
|
+
}
|
|
27
|
+
catch { /* browser environment */ }
|
|
28
|
+
/** Environment variable prefix for legacy overrides. */
|
|
18
29
|
const ENV_PREFIX = 'APCORE_';
|
|
19
|
-
/** Required configuration fields (dot-paths). */
|
|
30
|
+
/** Required configuration fields in legacy mode (dot-paths). */
|
|
20
31
|
const REQUIRED_FIELDS = [
|
|
21
32
|
'version',
|
|
22
33
|
'extensions.root',
|
|
@@ -25,7 +36,7 @@ const REQUIRED_FIELDS = [
|
|
|
25
36
|
'acl.default_effect',
|
|
26
37
|
'project.name',
|
|
27
38
|
];
|
|
28
|
-
/** Field constraints: field -> [validator, errorMessage]. */
|
|
39
|
+
/** Field constraints in legacy mode: field -> [validator, errorMessage]. */
|
|
29
40
|
const CONSTRAINTS = {
|
|
30
41
|
'acl.default_effect': [
|
|
31
42
|
(v) => v === 'allow' || v === 'deny',
|
|
@@ -56,7 +67,7 @@ const CONSTRAINTS = {
|
|
|
56
67
|
'must be a positive integer',
|
|
57
68
|
],
|
|
58
69
|
};
|
|
59
|
-
/** Default configuration values. */
|
|
70
|
+
/** Default configuration values for legacy mode. */
|
|
60
71
|
const DEFAULTS = {
|
|
61
72
|
version: '0.8.0',
|
|
62
73
|
extensions: {
|
|
@@ -93,6 +104,12 @@ const DEFAULTS = {
|
|
|
93
104
|
name: 'apcore',
|
|
94
105
|
},
|
|
95
106
|
};
|
|
107
|
+
const _globalNsRegistry = new Map();
|
|
108
|
+
const _RESERVED_NAMESPACES = new Set(['apcore', '_config']);
|
|
109
|
+
const _envPrefixUsed = new Set();
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
// Utility helpers
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
96
113
|
function deepMergeDicts(base, override) {
|
|
97
114
|
const result = { ...base };
|
|
98
115
|
for (const [key, value] of Object.entries(override)) {
|
|
@@ -159,23 +176,187 @@ function applyEnvOverrides(data) {
|
|
|
159
176
|
}
|
|
160
177
|
return result;
|
|
161
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Apply per-namespace env overrides using longest-prefix-match dispatch.
|
|
181
|
+
*
|
|
182
|
+
* For each env var, finds the registered namespace whose envPrefix is the
|
|
183
|
+
* longest matching prefix, strips it, converts separators, and writes to
|
|
184
|
+
* that namespace's subtree in data.
|
|
185
|
+
*/
|
|
186
|
+
function applyNamespaceEnvOverrides(data) {
|
|
187
|
+
const result = JSON.parse(JSON.stringify(data));
|
|
188
|
+
const env = _nodeProcess?.env ?? {};
|
|
189
|
+
// Sort registrations by envPrefix length descending (longest first)
|
|
190
|
+
const registrations = Array.from(_globalNsRegistry.values())
|
|
191
|
+
.filter((r) => r.envPrefix !== null)
|
|
192
|
+
.sort((a, b) => (b.envPrefix.length) - (a.envPrefix.length));
|
|
193
|
+
for (const [envKey, envValue] of Object.entries(env)) {
|
|
194
|
+
if (envValue === undefined)
|
|
195
|
+
continue;
|
|
196
|
+
for (const reg of registrations) {
|
|
197
|
+
if (envKey.startsWith(reg.envPrefix)) {
|
|
198
|
+
const suffix = envKey.slice(reg.envPrefix.length);
|
|
199
|
+
if (!suffix)
|
|
200
|
+
continue;
|
|
201
|
+
// Strip leading separator (single _ or __)
|
|
202
|
+
const stripped = suffix.startsWith('__') ? suffix.slice(2) : suffix.startsWith('_') ? suffix.slice(1) : suffix;
|
|
203
|
+
if (!stripped)
|
|
204
|
+
continue;
|
|
205
|
+
// Convert: double __ -> literal _, single _ -> .
|
|
206
|
+
const dotPath = stripped.toLowerCase().replace(/__/g, '\x00').replace(/_/g, '.').replace(/\x00/g, '_');
|
|
207
|
+
// Ensure namespace subtree exists
|
|
208
|
+
if (typeof result[reg.name] !== 'object' || result[reg.name] === null) {
|
|
209
|
+
result[reg.name] = {};
|
|
210
|
+
}
|
|
211
|
+
setNested(result[reg.name], dotPath, coerceEnvValue(envValue));
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return result;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Resolve the namespace from a dot-path like "apcore-mcp.transport".
|
|
220
|
+
* The namespace portion may contain hyphens, so we cannot simply split on ".".
|
|
221
|
+
* We match against known registered namespaces (longest match first).
|
|
222
|
+
*/
|
|
223
|
+
function resolveNamespacePath(key) {
|
|
224
|
+
// Sort known namespaces by length descending for longest-match
|
|
225
|
+
const knownNamespaces = Array.from(_globalNsRegistry.keys())
|
|
226
|
+
.concat(Array.from(_RESERVED_NAMESPACES))
|
|
227
|
+
.sort((a, b) => b.length - a.length);
|
|
228
|
+
for (const ns of knownNamespaces) {
|
|
229
|
+
if (key === ns) {
|
|
230
|
+
return { namespace: ns, subPath: '' };
|
|
231
|
+
}
|
|
232
|
+
if (key.startsWith(ns + '.')) {
|
|
233
|
+
return { namespace: ns, subPath: key.slice(ns.length + 1) };
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
// Fallback: use naive first-segment split
|
|
237
|
+
const dotIndex = key.indexOf('.');
|
|
238
|
+
if (dotIndex === -1) {
|
|
239
|
+
return { namespace: key, subPath: '' };
|
|
240
|
+
}
|
|
241
|
+
return { namespace: key.slice(0, dotIndex), subPath: key.slice(dotIndex + 1) };
|
|
242
|
+
}
|
|
243
|
+
// ---------------------------------------------------------------------------
|
|
244
|
+
// Config discovery (§9.14)
|
|
245
|
+
// ---------------------------------------------------------------------------
|
|
246
|
+
/**
|
|
247
|
+
* Search for a config file in the standard discovery order (§9.14).
|
|
248
|
+
* Returns the path of the first found file, or null if none found.
|
|
249
|
+
*/
|
|
250
|
+
export function discoverConfigFile() {
|
|
251
|
+
const env = _nodeProcess?.env ?? {};
|
|
252
|
+
const existsSync = _nodeFs?.existsSync;
|
|
253
|
+
const join = _nodePath?.join;
|
|
254
|
+
const homedir = _nodeOs?.homedir;
|
|
255
|
+
if (!existsSync || !join || !homedir)
|
|
256
|
+
return null;
|
|
257
|
+
const envPath = env['APCORE_CONFIG_FILE'];
|
|
258
|
+
if (envPath)
|
|
259
|
+
return envPath;
|
|
260
|
+
const cwdCandidates = ['project.yaml', 'project.yml', 'apcore.yaml', 'apcore.yml'];
|
|
261
|
+
for (const name of cwdCandidates) {
|
|
262
|
+
if (existsSync(name))
|
|
263
|
+
return name;
|
|
264
|
+
}
|
|
265
|
+
const home = homedir();
|
|
266
|
+
// W-10: Use lazy-loaded _nodeProcess so this works in non-Node environments.
|
|
267
|
+
const xdgConfig = (_nodeProcess?.platform ?? 'linux') === 'darwin'
|
|
268
|
+
? join(home, 'Library', 'Application Support', 'apcore', 'config.yaml')
|
|
269
|
+
: join(home, '.config', 'apcore', 'config.yaml');
|
|
270
|
+
if (existsSync(xdgConfig))
|
|
271
|
+
return xdgConfig;
|
|
272
|
+
const legacy = join(home, '.apcore', 'config.yaml');
|
|
273
|
+
if (existsSync(legacy))
|
|
274
|
+
return legacy;
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
// ---------------------------------------------------------------------------
|
|
278
|
+
// Config class
|
|
279
|
+
// ---------------------------------------------------------------------------
|
|
162
280
|
/**
|
|
163
281
|
* Configuration system with YAML loading, env overrides, and validation.
|
|
164
282
|
*
|
|
165
|
-
* Merge priority (highest wins): environment variables > config file > defaults.
|
|
283
|
+
* Merge priority (highest wins): environment variables > mount data > config file > namespace defaults > defaults.
|
|
284
|
+
*
|
|
285
|
+
* Two modes:
|
|
286
|
+
* - Legacy mode: top-level YAML has no "apcore" key. Backward compatible.
|
|
287
|
+
* - Namespace mode: top-level YAML has "apcore" key. Enables namespace features.
|
|
166
288
|
*
|
|
167
289
|
* Backward compatible: `new Config(data)` still works for in-memory configuration.
|
|
168
290
|
*/
|
|
169
291
|
export class Config {
|
|
170
292
|
_data;
|
|
171
293
|
_yamlPath = null;
|
|
294
|
+
_mode = 'legacy';
|
|
295
|
+
_mounts = new Map();
|
|
172
296
|
constructor(data) {
|
|
173
297
|
this._data = data ?? {};
|
|
174
298
|
}
|
|
299
|
+
// -------------------------------------------------------------------------
|
|
300
|
+
// Static namespace registry methods
|
|
301
|
+
// -------------------------------------------------------------------------
|
|
302
|
+
/**
|
|
303
|
+
* Register a namespace globally.
|
|
304
|
+
*
|
|
305
|
+
* Throws:
|
|
306
|
+
* - ConfigNamespaceReservedError if name is in the reserved set.
|
|
307
|
+
* - ConfigNamespaceDuplicateError if name is already registered.
|
|
308
|
+
* - ConfigEnvPrefixConflictError if envPrefix is already used or matches the
|
|
309
|
+
* an already-registered prefix.
|
|
310
|
+
*/
|
|
311
|
+
static registerNamespace(options) {
|
|
312
|
+
const { name, schema = null, envPrefix = null, defaults = null } = options;
|
|
313
|
+
if (_RESERVED_NAMESPACES.has(name)) {
|
|
314
|
+
throw new ConfigNamespaceReservedError(name);
|
|
315
|
+
}
|
|
316
|
+
if (_globalNsRegistry.has(name)) {
|
|
317
|
+
throw new ConfigNamespaceDuplicateError(name);
|
|
318
|
+
}
|
|
319
|
+
if (envPrefix !== null) {
|
|
320
|
+
if (_envPrefixUsed.has(envPrefix)) {
|
|
321
|
+
throw new ConfigEnvPrefixConflictError(envPrefix);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
_globalNsRegistry.set(name, { name, schema, envPrefix, defaults });
|
|
325
|
+
if (envPrefix !== null) {
|
|
326
|
+
_envPrefixUsed.add(envPrefix);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Return a snapshot of all registered namespaces.
|
|
331
|
+
*/
|
|
332
|
+
static registeredNamespaces() {
|
|
333
|
+
return Array.from(_globalNsRegistry.values()).map((r) => ({
|
|
334
|
+
name: r.name,
|
|
335
|
+
envPrefix: r.envPrefix,
|
|
336
|
+
hasSchema: r.schema !== null,
|
|
337
|
+
}));
|
|
338
|
+
}
|
|
339
|
+
// -------------------------------------------------------------------------
|
|
340
|
+
// Static factory methods
|
|
341
|
+
// -------------------------------------------------------------------------
|
|
175
342
|
/**
|
|
176
343
|
* Load configuration from a YAML file with env overrides.
|
|
344
|
+
*
|
|
345
|
+
* Auto-detects mode:
|
|
346
|
+
* - Namespace mode: top-level "apcore" key present.
|
|
347
|
+
* - Legacy mode: otherwise (backward compatible).
|
|
177
348
|
*/
|
|
178
349
|
static load(yamlPath, options) {
|
|
350
|
+
if (yamlPath === undefined || yamlPath === null) {
|
|
351
|
+
const found = discoverConfigFile();
|
|
352
|
+
if (found === null)
|
|
353
|
+
return Config.fromDefaults();
|
|
354
|
+
yamlPath = found;
|
|
355
|
+
}
|
|
356
|
+
// C-5: Guard against non-Node environments where fs may not be available.
|
|
357
|
+
if (_nodeFs === null) {
|
|
358
|
+
throw new ConfigError(`Cannot load config file '${yamlPath}': filesystem not available`);
|
|
359
|
+
}
|
|
179
360
|
const { existsSync, readFileSync } = _nodeFs;
|
|
180
361
|
if (!existsSync(yamlPath)) {
|
|
181
362
|
throw new ConfigNotFoundError(yamlPath);
|
|
@@ -196,10 +377,35 @@ export class Config {
|
|
|
196
377
|
if (typeof fileData !== 'object' || Array.isArray(fileData)) {
|
|
197
378
|
throw new ConfigError(`Config file must be a mapping, got ${typeof fileData}`);
|
|
198
379
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
const
|
|
380
|
+
const rawData = fileData;
|
|
381
|
+
// Namespace mode requires "apcore" key to be an object/mapping — not null, scalar, or array.
|
|
382
|
+
const apcoreValue = rawData['apcore'];
|
|
383
|
+
const isNamespaceMode = apcoreValue !== null && apcoreValue !== undefined &&
|
|
384
|
+
typeof apcoreValue === 'object' && !Array.isArray(apcoreValue);
|
|
385
|
+
let config;
|
|
386
|
+
if (isNamespaceMode) {
|
|
387
|
+
// Namespace mode: apply namespace defaults, file data, then env overrides
|
|
388
|
+
let merged = {};
|
|
389
|
+
// Apply namespace defaults first
|
|
390
|
+
for (const reg of _globalNsRegistry.values()) {
|
|
391
|
+
if (reg.defaults !== null) {
|
|
392
|
+
merged[reg.name] = JSON.parse(JSON.stringify(reg.defaults));
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
// Merge file data over defaults
|
|
396
|
+
merged = deepMergeDicts(merged, rawData);
|
|
397
|
+
// Apply namespace-aware env overrides
|
|
398
|
+
merged = applyNamespaceEnvOverrides(merged);
|
|
399
|
+
config = new Config(merged);
|
|
400
|
+
config._mode = 'namespace';
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
// Legacy mode: merge defaults < file < env
|
|
404
|
+
let merged = deepMergeDicts(DEFAULTS, rawData);
|
|
405
|
+
merged = applyEnvOverrides(merged);
|
|
406
|
+
config = new Config(merged);
|
|
407
|
+
config._mode = 'legacy';
|
|
408
|
+
}
|
|
203
409
|
config._yamlPath = yamlPath;
|
|
204
410
|
if (options?.validate !== false) {
|
|
205
411
|
config.validate();
|
|
@@ -211,25 +417,153 @@ export class Config {
|
|
|
211
417
|
const data = applyEnvOverrides({ ...DEFAULTS });
|
|
212
418
|
return new Config(data);
|
|
213
419
|
}
|
|
420
|
+
// -------------------------------------------------------------------------
|
|
421
|
+
// Instance methods
|
|
422
|
+
// -------------------------------------------------------------------------
|
|
214
423
|
/** Get a configuration value by dot-path key. */
|
|
215
424
|
get(key, defaultValue) {
|
|
425
|
+
if (this._mode === 'namespace') {
|
|
426
|
+
const resolved = resolveNamespacePath(key);
|
|
427
|
+
if (resolved === null)
|
|
428
|
+
return defaultValue;
|
|
429
|
+
const nsData = this._data[resolved.namespace];
|
|
430
|
+
if (nsData === undefined || nsData === null)
|
|
431
|
+
return defaultValue;
|
|
432
|
+
if (!resolved.subPath)
|
|
433
|
+
return nsData;
|
|
434
|
+
return getNested(nsData, resolved.subPath, defaultValue);
|
|
435
|
+
}
|
|
216
436
|
return getNested(this._data, key, defaultValue);
|
|
217
437
|
}
|
|
218
438
|
/** Set a configuration value by dot-path key. */
|
|
219
439
|
set(key, value) {
|
|
440
|
+
if (this._mode === 'namespace') {
|
|
441
|
+
const resolved = resolveNamespacePath(key);
|
|
442
|
+
if (resolved === null) {
|
|
443
|
+
setNested(this._data, key, value);
|
|
444
|
+
return;
|
|
445
|
+
}
|
|
446
|
+
if (!resolved.subPath) {
|
|
447
|
+
this._data[resolved.namespace] = value;
|
|
448
|
+
return;
|
|
449
|
+
}
|
|
450
|
+
if (typeof this._data[resolved.namespace] !== 'object' || this._data[resolved.namespace] === null) {
|
|
451
|
+
this._data[resolved.namespace] = {};
|
|
452
|
+
}
|
|
453
|
+
setNested(this._data[resolved.namespace], resolved.subPath, value);
|
|
454
|
+
return;
|
|
455
|
+
}
|
|
220
456
|
setNested(this._data, key, value);
|
|
221
457
|
}
|
|
222
458
|
/** Return a deep copy of the raw config data. */
|
|
223
459
|
get data() {
|
|
224
460
|
return JSON.parse(JSON.stringify(this._data));
|
|
225
461
|
}
|
|
462
|
+
/** Return the detected mode: 'legacy' or 'namespace'. */
|
|
463
|
+
get mode() {
|
|
464
|
+
return this._mode;
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Attach external config data to a namespace.
|
|
468
|
+
*
|
|
469
|
+
* Exactly one of fromFile or fromDict must be provided.
|
|
470
|
+
* Throws ConfigMountError if namespace is "_config" or file not found.
|
|
471
|
+
*/
|
|
472
|
+
mount(namespace, options) {
|
|
473
|
+
if (namespace === '_config') {
|
|
474
|
+
throw new ConfigMountError("Cannot mount to reserved namespace '_config'");
|
|
475
|
+
}
|
|
476
|
+
const { fromFile, fromDict } = options;
|
|
477
|
+
const hasFile = fromFile !== undefined;
|
|
478
|
+
const hasDict = fromDict !== undefined;
|
|
479
|
+
if (hasFile && hasDict) {
|
|
480
|
+
throw new ConfigMountError("Specify exactly one of 'fromFile' or 'fromDict', not both");
|
|
481
|
+
}
|
|
482
|
+
if (!hasFile && !hasDict) {
|
|
483
|
+
throw new ConfigMountError("One of 'fromFile' or 'fromDict' is required");
|
|
484
|
+
}
|
|
485
|
+
let mountData;
|
|
486
|
+
if (hasFile) {
|
|
487
|
+
if (_nodeFs === null) {
|
|
488
|
+
throw new ConfigMountError('Cannot mount from file: filesystem not available');
|
|
489
|
+
}
|
|
490
|
+
const { existsSync, readFileSync } = _nodeFs;
|
|
491
|
+
if (!existsSync(fromFile)) {
|
|
492
|
+
throw new ConfigMountError(`Mount file not found: ${fromFile}`);
|
|
493
|
+
}
|
|
494
|
+
let parsed;
|
|
495
|
+
try {
|
|
496
|
+
const content = readFileSync(fromFile, 'utf-8');
|
|
497
|
+
parsed = yaml.load(content);
|
|
498
|
+
}
|
|
499
|
+
catch (e) {
|
|
500
|
+
throw new ConfigMountError(`Failed to parse mount file '${fromFile}': ${e}`);
|
|
501
|
+
}
|
|
502
|
+
if (parsed === null || parsed === undefined) {
|
|
503
|
+
parsed = {};
|
|
504
|
+
}
|
|
505
|
+
if (typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
506
|
+
throw new ConfigMountError(`Mount file must be a YAML mapping: ${fromFile}`);
|
|
507
|
+
}
|
|
508
|
+
mountData = parsed;
|
|
509
|
+
}
|
|
510
|
+
else {
|
|
511
|
+
mountData = fromDict;
|
|
512
|
+
}
|
|
513
|
+
this._mounts.set(namespace, mountData);
|
|
514
|
+
// Merge mount data into namespace subtree
|
|
515
|
+
const existing = (this._data[namespace] ?? {});
|
|
516
|
+
this._data[namespace] = deepMergeDicts(existing, mountData);
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Return a deep copy of a namespace subtree.
|
|
520
|
+
*/
|
|
521
|
+
namespace(name) {
|
|
522
|
+
const subtree = this._data[name];
|
|
523
|
+
if (subtree === undefined || subtree === null) {
|
|
524
|
+
return {};
|
|
525
|
+
}
|
|
526
|
+
return JSON.parse(JSON.stringify(subtree));
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* Typed get with coercion and validation.
|
|
530
|
+
* Applies the coerce function to the raw value and returns the result.
|
|
531
|
+
* Throws ConfigError if the raw value is undefined.
|
|
532
|
+
*/
|
|
533
|
+
getTyped(path, coerce) {
|
|
534
|
+
const value = this.get(path);
|
|
535
|
+
if (value === undefined) {
|
|
536
|
+
throw new ConfigError(`Missing required config path: '${path}'`);
|
|
537
|
+
}
|
|
538
|
+
return coerce(value);
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Deserialize a namespace subtree into a class instance.
|
|
542
|
+
* The schema constructor receives the namespace data as a plain object.
|
|
543
|
+
* Throws ConfigBindError if instantiation fails.
|
|
544
|
+
*/
|
|
545
|
+
bind(namespace, schema) {
|
|
546
|
+
const data = this.namespace(namespace);
|
|
547
|
+
try {
|
|
548
|
+
return new schema(data);
|
|
549
|
+
}
|
|
550
|
+
catch (e) {
|
|
551
|
+
throw new ConfigBindError(`Failed to bind namespace '${namespace}': ${e}`);
|
|
552
|
+
}
|
|
553
|
+
}
|
|
226
554
|
/**
|
|
227
555
|
* Validate the configuration per Algorithm A12.
|
|
228
556
|
*
|
|
229
|
-
*
|
|
557
|
+
* In legacy mode: checks required fields, type constraints, and semantic rules.
|
|
558
|
+
* In namespace mode (A12-NS): validates data.apcore; throws on unknown namespaces
|
|
559
|
+
* if strict mode is enabled via data._config.strict.
|
|
230
560
|
* Collects all errors before raising.
|
|
231
561
|
*/
|
|
232
562
|
validate() {
|
|
563
|
+
if (this._mode === 'namespace') {
|
|
564
|
+
this._validateNamespaceMode();
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
233
567
|
const errors = [];
|
|
234
568
|
// 1. Required field check
|
|
235
569
|
for (const field of REQUIRED_FIELDS) {
|
|
@@ -250,16 +584,90 @@ export class Config {
|
|
|
250
584
|
errors.map((e) => ` - ${e}`).join('\n'));
|
|
251
585
|
}
|
|
252
586
|
}
|
|
587
|
+
_validateNamespaceMode() {
|
|
588
|
+
const apcore = this._data['apcore'];
|
|
589
|
+
if (apcore !== undefined && apcore !== null) {
|
|
590
|
+
// Run A12 checks on data.apcore subtree
|
|
591
|
+
const errors = [];
|
|
592
|
+
const apcoreData = apcore;
|
|
593
|
+
for (const [field, [checkFn, errMsg]] of Object.entries(CONSTRAINTS)) {
|
|
594
|
+
const value = getNested(apcoreData, field);
|
|
595
|
+
if (value !== undefined && value !== null && !checkFn(value)) {
|
|
596
|
+
errors.push(`Invalid value for 'apcore.${field}': ${errMsg} (got ${JSON.stringify(value)})`);
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
if (errors.length > 0) {
|
|
600
|
+
throw new ConfigError(`Configuration validation failed (${errors.length} error(s)):\n` +
|
|
601
|
+
errors.map((e) => ` - ${e}`).join('\n'));
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
// Strict mode: reject unknown namespaces
|
|
605
|
+
const configMeta = this._data['_config'];
|
|
606
|
+
const isStrict = configMeta !== null && typeof configMeta === 'object' &&
|
|
607
|
+
configMeta['strict'] === true;
|
|
608
|
+
if (isStrict) {
|
|
609
|
+
const knownKeys = new Set([
|
|
610
|
+
...Array.from(_globalNsRegistry.keys()),
|
|
611
|
+
'apcore',
|
|
612
|
+
'_config',
|
|
613
|
+
]);
|
|
614
|
+
for (const key of Object.keys(this._data)) {
|
|
615
|
+
if (!knownKeys.has(key)) {
|
|
616
|
+
throw new ConfigError(`Unknown namespace '${key}' in strict mode`);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
}
|
|
253
621
|
/**
|
|
254
622
|
* Re-read configuration from the original YAML file.
|
|
255
623
|
* Only works if the Config was created via Config.load().
|
|
624
|
+
* In namespace mode, re-applies namespace defaults, env overrides, and mount data.
|
|
256
625
|
*/
|
|
257
626
|
reload() {
|
|
258
627
|
if (this._yamlPath === null) {
|
|
259
628
|
throw new ConfigError('Cannot reload: Config was not loaded from a YAML file');
|
|
260
629
|
}
|
|
261
|
-
const
|
|
630
|
+
const previousMounts = new Map(this._mounts);
|
|
631
|
+
const reloaded = Config.load(this._yamlPath, { validate: false });
|
|
262
632
|
this._data = reloaded._data;
|
|
633
|
+
this._mode = reloaded._mode;
|
|
634
|
+
this._mounts = new Map();
|
|
635
|
+
// Re-apply mounts
|
|
636
|
+
for (const [namespace, mountData] of previousMounts) {
|
|
637
|
+
this.mount(namespace, { fromDict: mountData });
|
|
638
|
+
}
|
|
639
|
+
// Re-apply namespace env overrides in namespace mode
|
|
640
|
+
if (this._mode === 'namespace') {
|
|
641
|
+
this._data = applyNamespaceEnvOverrides(this._data);
|
|
642
|
+
}
|
|
263
643
|
}
|
|
264
644
|
}
|
|
645
|
+
// ---------------------------------------------------------------------------
|
|
646
|
+
// Bootstrap: register apcore built-in namespaces (§9.15)
|
|
647
|
+
// ---------------------------------------------------------------------------
|
|
648
|
+
// W-13: Use snake_case keys to match Python defaults and YAML config conventions.
|
|
649
|
+
// camelCase keys would silently diverge from cross-language YAML configs.
|
|
650
|
+
Config.registerNamespace({
|
|
651
|
+
name: 'observability',
|
|
652
|
+
envPrefix: 'APCORE_OBSERVABILITY',
|
|
653
|
+
defaults: {
|
|
654
|
+
tracing: { enabled: false, strategy: 'full', sampling_rate: 1.0, exporter: 'stdout', otlp_endpoint: null },
|
|
655
|
+
metrics: { enabled: false, exporter: 'stdout' },
|
|
656
|
+
logging: { enabled: true, level: 'info', format: 'json', redact_sensitive: true },
|
|
657
|
+
error_history: { max_entries_per_module: 50, max_total_entries: 1000 },
|
|
658
|
+
platform_notify: { enabled: false, error_rate_threshold: 0.1, latency_p99_threshold_ms: 5000.0 },
|
|
659
|
+
},
|
|
660
|
+
});
|
|
661
|
+
Config.registerNamespace({
|
|
662
|
+
name: 'sys_modules',
|
|
663
|
+
envPrefix: 'APCORE_SYS',
|
|
664
|
+
defaults: {
|
|
665
|
+
enabled: true,
|
|
666
|
+
health: { enabled: true },
|
|
667
|
+
manifest: { enabled: true },
|
|
668
|
+
usage: { enabled: true, retention_hours: 168, bucketing_strategy: 'hourly' },
|
|
669
|
+
control: { enabled: true },
|
|
670
|
+
events: { enabled: true, thresholds: { error_rate: 0.1, latency_p99_ms: 5000.0 } },
|
|
671
|
+
},
|
|
672
|
+
});
|
|
265
673
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE/D,+DAA+D;AAC/D,IAAI,OAAO,GAAoC,IAAI,CAAC;AACpD,IAAI,CAAC;IAAC,OAAO,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;AAE9E,IAAI,YAAY,GAAyC,IAAI,CAAC;AAC9D,IAAI,CAAC;IAAC,YAAY,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;AAExF,iDAAiD;AACjD,MAAM,UAAU,GAAG,SAAS,CAAC;AAE7B,iDAAiD;AACjD,MAAM,eAAe,GAAG;IACtB,SAAS;IACT,iBAAiB;IACjB,aAAa;IACb,UAAU;IACV,oBAAoB;IACpB,cAAc;CACN,CAAC;AAEX,6DAA6D;AAC7D,MAAM,WAAW,GAAsD;IACrE,oBAAoB,EAAE;QACpB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,MAAM;QACpC,2BAA2B;KAC5B;IACD,qCAAqC,EAAE;QACrC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG;QACpD,gCAAgC;KACjC;IACD,sBAAsB,EAAE;QACtB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACxE,+BAA+B;KAChC;IACD,0BAA0B,EAAE;QAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7D,+CAA+C;KAChD;IACD,yBAAyB,EAAE;QACzB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7D,+CAA+C;KAChD;IACD,yBAAyB,EAAE;QACzB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7D,4BAA4B;KAC7B;IACD,4BAA4B,EAAE;QAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7D,4BAA4B;KAC7B;CACF,CAAC;AAEF,oCAAoC;AACpC,MAAM,QAAQ,GAA4B;IACxC,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE;QACV,IAAI,EAAE,cAAc;QACpB,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,CAAC;QACZ,eAAe,EAAE,KAAK;KACvB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,YAAY;QACtB,aAAa,EAAE,EAAE;KAClB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,OAAO;QACb,cAAc,EAAE,MAAM;KACvB;IACD,QAAQ,EAAE;QACR,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,EAAE;QAClB,iBAAiB,EAAE,CAAC;KACrB;IACD,aAAa,EAAE;QACb,OAAO,EAAE;YACP,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,GAAG;SACnB;QACD,OAAO,EAAE;YACP,OAAO,EAAE,KAAK;SACf;KACF;IACD,OAAO,EAAE;QACP,IAAI,EAAE,QAAQ;KACf;CACF,CAAC;AAEF,SAAS,cAAc,CACrB,IAA6B,EAC7B,QAAiC;IAEjC,MAAM,MAAM,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;IACpD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,IACE,GAAG,IAAI,MAAM;YACb,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtF,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EACpE,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAC1B,MAAM,CAAC,GAAG,CAA4B,EACtC,KAAgC,CACjC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,IAA6B,EAAE,OAAe,EAAE,YAAsB;IACvF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,OAAO,GAAY,IAAI,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,IAAI,IAAK,OAAmC,EAAE,CAAC;YACpG,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,OAAO,YAAY,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,IAA6B,EAAE,OAAe,EAAE,KAAc;IAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACtF,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAA4B,CAAC;IACrD,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;AAC3C,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAChD,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC;IACjE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,IAA6B;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAA4B,CAAC;IAC3E,MAAM,GAAG,GAAG,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAS;QACvE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,6DAA6D;QAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACrG,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,MAAM;IACT,KAAK,CAA0B;IAC/B,SAAS,GAAkB,IAAI,CAAC;IAExC,YAAY,IAA8B;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,QAAgB,EAAE,OAAgC;QAC5D,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,OAAQ,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,QAAiB,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,mBAAmB;gBAAE,MAAM,CAAC,CAAC;YAC9C,MAAM,IAAI,WAAW,CAAC,mBAAmB,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChD,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;QACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,WAAW,CAAC,sCAAsC,OAAO,QAAQ,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,+BAA+B;QAC/B,IAAI,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAmC,CAAC,CAAC;QAC3E,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAEnC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE5B,IAAI,OAAO,EAAE,QAAQ,KAAK,KAAK,EAAE,CAAC;YAChC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sEAAsE;IACtE,MAAM,CAAC,YAAY;QACjB,MAAM,IAAI,GAAG,iBAAiB,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;QAChD,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,iDAAiD;IACjD,GAAG,CAAC,GAAW,EAAE,YAAsB;QACrC,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC;IAED,iDAAiD;IACjD,GAAG,CAAC,GAAW,EAAE,KAAc;QAC7B,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,iDAAiD;IACjD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACH,QAAQ;QACN,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,0BAA0B;QAC1B,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,MAAM,CAAC,IAAI,CAAC,4BAA4B,KAAK,GAAG,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACrE,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7D,MAAM,CAAC,IAAI,CAAC,sBAAsB,KAAK,MAAM,MAAM,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,WAAW,CACnB,oCAAoC,MAAM,CAAC,MAAM,eAAe;gBAChE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACzC,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,WAAW,CAAC,uDAAuD,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC9B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ErrorFormatterRegistry -- per-adapter error formatting (§8.8).
|
|
3
|
+
*
|
|
4
|
+
* Allows adapters to register custom formatters that transform ModuleErrors
|
|
5
|
+
* into adapter-specific output shapes. Falls back to error.toJSON() when no
|
|
6
|
+
* formatter is registered for the given adapter.
|
|
7
|
+
*/
|
|
8
|
+
import { ModuleError } from './errors.js';
|
|
9
|
+
export interface ErrorFormatter {
|
|
10
|
+
format(error: ModuleError, context?: unknown): Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
export declare class ErrorFormatterRegistry {
|
|
13
|
+
private static readonly _registry;
|
|
14
|
+
/**
|
|
15
|
+
* Register a formatter for the given adapter name.
|
|
16
|
+
* Throws ErrorFormatterDuplicateError if a formatter is already registered.
|
|
17
|
+
*/
|
|
18
|
+
static register(adapterName: string, formatter: ErrorFormatter): void;
|
|
19
|
+
/**
|
|
20
|
+
* Retrieve the registered formatter for an adapter, or undefined if none.
|
|
21
|
+
*/
|
|
22
|
+
static get(adapterName: string): ErrorFormatter | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Format an error using the registered formatter for the given adapter.
|
|
25
|
+
* Falls back to error.toJSON() if no formatter is registered.
|
|
26
|
+
*/
|
|
27
|
+
static format(adapterName: string, error: ModuleError, context?: unknown): Record<string, unknown>;
|
|
28
|
+
/**
|
|
29
|
+
* Remove a registered formatter. Used primarily in tests.
|
|
30
|
+
*/
|
|
31
|
+
static unregister(adapterName: string): void;
|
|
32
|
+
/**
|
|
33
|
+
* Clear all registered formatters. Used primarily in tests.
|
|
34
|
+
*/
|
|
35
|
+
static clear(): void;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=error-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-formatter.d.ts","sourceRoot":"","sources":["../src/error-formatter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxE;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAEtE;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI;IAOrE;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI3D;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQlG;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;CAGrB"}
|