apcore-js 0.14.1 → 0.15.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.
Files changed (37) hide show
  1. package/README.md +136 -1
  2. package/dist/config.d.ts +74 -3
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +422 -12
  5. package/dist/config.js.map +1 -1
  6. package/dist/error-formatter.d.ts +37 -0
  7. package/dist/error-formatter.d.ts.map +1 -0
  8. package/dist/error-formatter.js +51 -0
  9. package/dist/error-formatter.js.map +1 -0
  10. package/dist/errors.d.ts +30 -0
  11. package/dist/errors.d.ts.map +1 -1
  12. package/dist/errors.js +48 -0
  13. package/dist/errors.js.map +1 -1
  14. package/dist/events/subscribers.d.ts +1 -1
  15. package/dist/events/subscribers.d.ts.map +1 -1
  16. package/dist/events/subscribers.js +4 -4
  17. package/dist/events/subscribers.js.map +1 -1
  18. package/dist/generated/version.d.ts +1 -1
  19. package/dist/generated/version.js +1 -1
  20. package/dist/index.d.ts +4 -2
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +4 -2
  23. package/dist/index.js.map +1 -1
  24. package/dist/middleware/platform-notify.d.ts.map +1 -1
  25. package/dist/middleware/platform-notify.js +4 -2
  26. package/dist/middleware/platform-notify.js.map +1 -1
  27. package/dist/sys-modules/control.d.ts.map +1 -1
  28. package/dist/sys-modules/control.js +15 -2
  29. package/dist/sys-modules/control.js.map +1 -1
  30. package/dist/sys-modules/registration.d.ts +1 -1
  31. package/dist/sys-modules/registration.d.ts.map +1 -1
  32. package/dist/sys-modules/registration.js +40 -9
  33. package/dist/sys-modules/registration.js.map +1 -1
  34. package/dist/sys-modules/toggle.d.ts.map +1 -1
  35. package/dist/sys-modules/toggle.js +6 -2
  36. package/dist/sys-modules/toggle.js.map +1 -1
  37. 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
- /** Environment variable prefix for overrides. */
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,14 @@ 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
+ /** Pattern that matches the APCORE_[A-Z0-9] reservation rule. */
111
+ const APCORE_ENV_RESERVED_RE = /^APCORE_[A-Z0-9]/;
112
+ // ---------------------------------------------------------------------------
113
+ // Utility helpers
114
+ // ---------------------------------------------------------------------------
96
115
  function deepMergeDicts(base, override) {
97
116
  const result = { ...base };
98
117
  for (const [key, value] of Object.entries(override)) {
@@ -159,23 +178,187 @@ function applyEnvOverrides(data) {
159
178
  }
160
179
  return result;
161
180
  }
181
+ /**
182
+ * Apply per-namespace env overrides using longest-prefix-match dispatch.
183
+ *
184
+ * For each env var, finds the registered namespace whose envPrefix is the
185
+ * longest matching prefix, strips it, converts separators, and writes to
186
+ * that namespace's subtree in data.
187
+ */
188
+ function applyNamespaceEnvOverrides(data) {
189
+ const result = JSON.parse(JSON.stringify(data));
190
+ const env = _nodeProcess?.env ?? {};
191
+ // Sort registrations by envPrefix length descending (longest first)
192
+ const registrations = Array.from(_globalNsRegistry.values())
193
+ .filter((r) => r.envPrefix !== null)
194
+ .sort((a, b) => (b.envPrefix.length) - (a.envPrefix.length));
195
+ for (const [envKey, envValue] of Object.entries(env)) {
196
+ if (envValue === undefined)
197
+ continue;
198
+ for (const reg of registrations) {
199
+ if (envKey.startsWith(reg.envPrefix)) {
200
+ const suffix = envKey.slice(reg.envPrefix.length);
201
+ if (!suffix)
202
+ continue;
203
+ // Strip leading separator (single _ or __)
204
+ const stripped = suffix.startsWith('__') ? suffix.slice(2) : suffix.startsWith('_') ? suffix.slice(1) : suffix;
205
+ if (!stripped)
206
+ continue;
207
+ // Convert: double __ -> literal _, single _ -> .
208
+ const dotPath = stripped.toLowerCase().replace(/__/g, '\x00').replace(/_/g, '.').replace(/\x00/g, '_');
209
+ // Ensure namespace subtree exists
210
+ if (typeof result[reg.name] !== 'object' || result[reg.name] === null) {
211
+ result[reg.name] = {};
212
+ }
213
+ setNested(result[reg.name], dotPath, coerceEnvValue(envValue));
214
+ break;
215
+ }
216
+ }
217
+ }
218
+ return result;
219
+ }
220
+ /**
221
+ * Resolve the namespace from a dot-path like "apcore-mcp.transport".
222
+ * The namespace portion may contain hyphens, so we cannot simply split on ".".
223
+ * We match against known registered namespaces (longest match first).
224
+ */
225
+ function resolveNamespacePath(key) {
226
+ // Sort known namespaces by length descending for longest-match
227
+ const knownNamespaces = Array.from(_globalNsRegistry.keys())
228
+ .concat(Array.from(_RESERVED_NAMESPACES))
229
+ .sort((a, b) => b.length - a.length);
230
+ for (const ns of knownNamespaces) {
231
+ if (key === ns) {
232
+ return { namespace: ns, subPath: '' };
233
+ }
234
+ if (key.startsWith(ns + '.')) {
235
+ return { namespace: ns, subPath: key.slice(ns.length + 1) };
236
+ }
237
+ }
238
+ // Fallback: use naive first-segment split
239
+ const dotIndex = key.indexOf('.');
240
+ if (dotIndex === -1) {
241
+ return { namespace: key, subPath: '' };
242
+ }
243
+ return { namespace: key.slice(0, dotIndex), subPath: key.slice(dotIndex + 1) };
244
+ }
245
+ // ---------------------------------------------------------------------------
246
+ // Config discovery (§9.14)
247
+ // ---------------------------------------------------------------------------
248
+ /**
249
+ * Search for a config file in the standard discovery order (§9.14).
250
+ * Returns the path of the first found file, or null if none found.
251
+ */
252
+ export function discoverConfigFile() {
253
+ const env = _nodeProcess?.env ?? {};
254
+ const existsSync = _nodeFs?.existsSync;
255
+ const join = _nodePath?.join;
256
+ const homedir = _nodeOs?.homedir;
257
+ if (!existsSync || !join || !homedir)
258
+ return null;
259
+ const envPath = env['APCORE_CONFIG_FILE'];
260
+ if (envPath)
261
+ return envPath;
262
+ const cwdCandidates = ['project.yaml', 'project.yml', 'apcore.yaml', 'apcore.yml'];
263
+ for (const name of cwdCandidates) {
264
+ if (existsSync(name))
265
+ return name;
266
+ }
267
+ const home = homedir();
268
+ // W-10: Use lazy-loaded _nodeProcess so this works in non-Node environments.
269
+ const xdgConfig = (_nodeProcess?.platform ?? 'linux') === 'darwin'
270
+ ? join(home, 'Library', 'Application Support', 'apcore', 'config.yaml')
271
+ : join(home, '.config', 'apcore', 'config.yaml');
272
+ if (existsSync(xdgConfig))
273
+ return xdgConfig;
274
+ const legacy = join(home, '.apcore', 'config.yaml');
275
+ if (existsSync(legacy))
276
+ return legacy;
277
+ return null;
278
+ }
279
+ // ---------------------------------------------------------------------------
280
+ // Config class
281
+ // ---------------------------------------------------------------------------
162
282
  /**
163
283
  * Configuration system with YAML loading, env overrides, and validation.
164
284
  *
165
- * Merge priority (highest wins): environment variables > config file > defaults.
285
+ * Merge priority (highest wins): environment variables > mount data > config file > namespace defaults > defaults.
286
+ *
287
+ * Two modes:
288
+ * - Legacy mode: top-level YAML has no "apcore" key. Backward compatible.
289
+ * - Namespace mode: top-level YAML has "apcore" key. Enables namespace features.
166
290
  *
167
291
  * Backward compatible: `new Config(data)` still works for in-memory configuration.
168
292
  */
169
293
  export class Config {
170
294
  _data;
171
295
  _yamlPath = null;
296
+ _mode = 'legacy';
297
+ _mounts = new Map();
172
298
  constructor(data) {
173
299
  this._data = data ?? {};
174
300
  }
301
+ // -------------------------------------------------------------------------
302
+ // Static namespace registry methods
303
+ // -------------------------------------------------------------------------
304
+ /**
305
+ * Register a namespace globally.
306
+ *
307
+ * Throws:
308
+ * - ConfigNamespaceReservedError if name is in the reserved set.
309
+ * - ConfigNamespaceDuplicateError if name is already registered.
310
+ * - ConfigEnvPrefixConflictError if envPrefix is already used or matches the
311
+ * APCORE_[A-Z0-9] pattern.
312
+ */
313
+ static registerNamespace(options) {
314
+ const { name, schema = null, envPrefix = null, defaults = null } = options;
315
+ if (_RESERVED_NAMESPACES.has(name)) {
316
+ throw new ConfigNamespaceReservedError(name);
317
+ }
318
+ if (_globalNsRegistry.has(name)) {
319
+ throw new ConfigNamespaceDuplicateError(name);
320
+ }
321
+ if (envPrefix !== null) {
322
+ if (_envPrefixUsed.has(envPrefix) || APCORE_ENV_RESERVED_RE.test(envPrefix)) {
323
+ throw new ConfigEnvPrefixConflictError(envPrefix);
324
+ }
325
+ }
326
+ _globalNsRegistry.set(name, { name, schema, envPrefix, defaults });
327
+ if (envPrefix !== null) {
328
+ _envPrefixUsed.add(envPrefix);
329
+ }
330
+ }
331
+ /**
332
+ * Return a snapshot of all registered namespaces.
333
+ */
334
+ static registeredNamespaces() {
335
+ return Array.from(_globalNsRegistry.values()).map((r) => ({
336
+ name: r.name,
337
+ envPrefix: r.envPrefix,
338
+ hasSchema: r.schema !== null,
339
+ }));
340
+ }
341
+ // -------------------------------------------------------------------------
342
+ // Static factory methods
343
+ // -------------------------------------------------------------------------
175
344
  /**
176
345
  * Load configuration from a YAML file with env overrides.
346
+ *
347
+ * Auto-detects mode:
348
+ * - Namespace mode: top-level "apcore" key present.
349
+ * - Legacy mode: otherwise (backward compatible).
177
350
  */
178
351
  static load(yamlPath, options) {
352
+ if (yamlPath === undefined || yamlPath === null) {
353
+ const found = discoverConfigFile();
354
+ if (found === null)
355
+ return Config.fromDefaults();
356
+ yamlPath = found;
357
+ }
358
+ // C-5: Guard against non-Node environments where fs may not be available.
359
+ if (_nodeFs === null) {
360
+ throw new ConfigError(`Cannot load config file '${yamlPath}': filesystem not available`);
361
+ }
179
362
  const { existsSync, readFileSync } = _nodeFs;
180
363
  if (!existsSync(yamlPath)) {
181
364
  throw new ConfigNotFoundError(yamlPath);
@@ -196,10 +379,35 @@ export class Config {
196
379
  if (typeof fileData !== 'object' || Array.isArray(fileData)) {
197
380
  throw new ConfigError(`Config file must be a mapping, got ${typeof fileData}`);
198
381
  }
199
- // Merge: defaults < file < env
200
- let merged = deepMergeDicts(DEFAULTS, fileData);
201
- merged = applyEnvOverrides(merged);
202
- const config = new Config(merged);
382
+ const rawData = fileData;
383
+ // Namespace mode requires "apcore" key to be an object/mapping — not null, scalar, or array.
384
+ const apcoreValue = rawData['apcore'];
385
+ const isNamespaceMode = apcoreValue !== null && apcoreValue !== undefined &&
386
+ typeof apcoreValue === 'object' && !Array.isArray(apcoreValue);
387
+ let config;
388
+ if (isNamespaceMode) {
389
+ // Namespace mode: apply namespace defaults, file data, then env overrides
390
+ let merged = {};
391
+ // Apply namespace defaults first
392
+ for (const reg of _globalNsRegistry.values()) {
393
+ if (reg.defaults !== null) {
394
+ merged[reg.name] = JSON.parse(JSON.stringify(reg.defaults));
395
+ }
396
+ }
397
+ // Merge file data over defaults
398
+ merged = deepMergeDicts(merged, rawData);
399
+ // Apply namespace-aware env overrides
400
+ merged = applyNamespaceEnvOverrides(merged);
401
+ config = new Config(merged);
402
+ config._mode = 'namespace';
403
+ }
404
+ else {
405
+ // Legacy mode: merge defaults < file < env
406
+ let merged = deepMergeDicts(DEFAULTS, rawData);
407
+ merged = applyEnvOverrides(merged);
408
+ config = new Config(merged);
409
+ config._mode = 'legacy';
410
+ }
203
411
  config._yamlPath = yamlPath;
204
412
  if (options?.validate !== false) {
205
413
  config.validate();
@@ -211,25 +419,153 @@ export class Config {
211
419
  const data = applyEnvOverrides({ ...DEFAULTS });
212
420
  return new Config(data);
213
421
  }
422
+ // -------------------------------------------------------------------------
423
+ // Instance methods
424
+ // -------------------------------------------------------------------------
214
425
  /** Get a configuration value by dot-path key. */
215
426
  get(key, defaultValue) {
427
+ if (this._mode === 'namespace') {
428
+ const resolved = resolveNamespacePath(key);
429
+ if (resolved === null)
430
+ return defaultValue;
431
+ const nsData = this._data[resolved.namespace];
432
+ if (nsData === undefined || nsData === null)
433
+ return defaultValue;
434
+ if (!resolved.subPath)
435
+ return nsData;
436
+ return getNested(nsData, resolved.subPath, defaultValue);
437
+ }
216
438
  return getNested(this._data, key, defaultValue);
217
439
  }
218
440
  /** Set a configuration value by dot-path key. */
219
441
  set(key, value) {
442
+ if (this._mode === 'namespace') {
443
+ const resolved = resolveNamespacePath(key);
444
+ if (resolved === null) {
445
+ setNested(this._data, key, value);
446
+ return;
447
+ }
448
+ if (!resolved.subPath) {
449
+ this._data[resolved.namespace] = value;
450
+ return;
451
+ }
452
+ if (typeof this._data[resolved.namespace] !== 'object' || this._data[resolved.namespace] === null) {
453
+ this._data[resolved.namespace] = {};
454
+ }
455
+ setNested(this._data[resolved.namespace], resolved.subPath, value);
456
+ return;
457
+ }
220
458
  setNested(this._data, key, value);
221
459
  }
222
460
  /** Return a deep copy of the raw config data. */
223
461
  get data() {
224
462
  return JSON.parse(JSON.stringify(this._data));
225
463
  }
464
+ /** Return the detected mode: 'legacy' or 'namespace'. */
465
+ get mode() {
466
+ return this._mode;
467
+ }
468
+ /**
469
+ * Attach external config data to a namespace.
470
+ *
471
+ * Exactly one of fromFile or fromDict must be provided.
472
+ * Throws ConfigMountError if namespace is "_config" or file not found.
473
+ */
474
+ mount(namespace, options) {
475
+ if (namespace === '_config') {
476
+ throw new ConfigMountError("Cannot mount to reserved namespace '_config'");
477
+ }
478
+ const { fromFile, fromDict } = options;
479
+ const hasFile = fromFile !== undefined;
480
+ const hasDict = fromDict !== undefined;
481
+ if (hasFile && hasDict) {
482
+ throw new ConfigMountError("Specify exactly one of 'fromFile' or 'fromDict', not both");
483
+ }
484
+ if (!hasFile && !hasDict) {
485
+ throw new ConfigMountError("One of 'fromFile' or 'fromDict' is required");
486
+ }
487
+ let mountData;
488
+ if (hasFile) {
489
+ if (_nodeFs === null) {
490
+ throw new ConfigMountError('Cannot mount from file: filesystem not available');
491
+ }
492
+ const { existsSync, readFileSync } = _nodeFs;
493
+ if (!existsSync(fromFile)) {
494
+ throw new ConfigMountError(`Mount file not found: ${fromFile}`);
495
+ }
496
+ let parsed;
497
+ try {
498
+ const content = readFileSync(fromFile, 'utf-8');
499
+ parsed = yaml.load(content);
500
+ }
501
+ catch (e) {
502
+ throw new ConfigMountError(`Failed to parse mount file '${fromFile}': ${e}`);
503
+ }
504
+ if (parsed === null || parsed === undefined) {
505
+ parsed = {};
506
+ }
507
+ if (typeof parsed !== 'object' || Array.isArray(parsed)) {
508
+ throw new ConfigMountError(`Mount file must be a YAML mapping: ${fromFile}`);
509
+ }
510
+ mountData = parsed;
511
+ }
512
+ else {
513
+ mountData = fromDict;
514
+ }
515
+ this._mounts.set(namespace, mountData);
516
+ // Merge mount data into namespace subtree
517
+ const existing = (this._data[namespace] ?? {});
518
+ this._data[namespace] = deepMergeDicts(existing, mountData);
519
+ }
520
+ /**
521
+ * Return a deep copy of a namespace subtree.
522
+ */
523
+ namespace(name) {
524
+ const subtree = this._data[name];
525
+ if (subtree === undefined || subtree === null) {
526
+ return {};
527
+ }
528
+ return JSON.parse(JSON.stringify(subtree));
529
+ }
530
+ /**
531
+ * Typed get with coercion and validation.
532
+ * Applies the coerce function to the raw value and returns the result.
533
+ * Throws ConfigError if the raw value is undefined.
534
+ */
535
+ getTyped(path, coerce) {
536
+ const value = this.get(path);
537
+ if (value === undefined) {
538
+ throw new ConfigError(`Missing required config path: '${path}'`);
539
+ }
540
+ return coerce(value);
541
+ }
542
+ /**
543
+ * Deserialize a namespace subtree into a class instance.
544
+ * The schema constructor receives the namespace data as a plain object.
545
+ * Throws ConfigBindError if instantiation fails.
546
+ */
547
+ bind(namespace, schema) {
548
+ const data = this.namespace(namespace);
549
+ try {
550
+ return new schema(data);
551
+ }
552
+ catch (e) {
553
+ throw new ConfigBindError(`Failed to bind namespace '${namespace}': ${e}`);
554
+ }
555
+ }
226
556
  /**
227
557
  * Validate the configuration per Algorithm A12.
228
558
  *
229
- * Checks required fields, type constraints, and semantic rules.
559
+ * In legacy mode: checks required fields, type constraints, and semantic rules.
560
+ * In namespace mode (A12-NS): validates data.apcore; throws on unknown namespaces
561
+ * if strict mode is enabled via data._config.strict.
230
562
  * Collects all errors before raising.
231
563
  */
232
564
  validate() {
565
+ if (this._mode === 'namespace') {
566
+ this._validateNamespaceMode();
567
+ return;
568
+ }
233
569
  const errors = [];
234
570
  // 1. Required field check
235
571
  for (const field of REQUIRED_FIELDS) {
@@ -250,16 +586,90 @@ export class Config {
250
586
  errors.map((e) => ` - ${e}`).join('\n'));
251
587
  }
252
588
  }
589
+ _validateNamespaceMode() {
590
+ const apcore = this._data['apcore'];
591
+ if (apcore !== undefined && apcore !== null) {
592
+ // Run A12 checks on data.apcore subtree
593
+ const errors = [];
594
+ const apcoreData = apcore;
595
+ for (const [field, [checkFn, errMsg]] of Object.entries(CONSTRAINTS)) {
596
+ const value = getNested(apcoreData, field);
597
+ if (value !== undefined && value !== null && !checkFn(value)) {
598
+ errors.push(`Invalid value for 'apcore.${field}': ${errMsg} (got ${JSON.stringify(value)})`);
599
+ }
600
+ }
601
+ if (errors.length > 0) {
602
+ throw new ConfigError(`Configuration validation failed (${errors.length} error(s)):\n` +
603
+ errors.map((e) => ` - ${e}`).join('\n'));
604
+ }
605
+ }
606
+ // Strict mode: reject unknown namespaces
607
+ const configMeta = this._data['_config'];
608
+ const isStrict = configMeta !== null && typeof configMeta === 'object' &&
609
+ configMeta['strict'] === true;
610
+ if (isStrict) {
611
+ const knownKeys = new Set([
612
+ ...Array.from(_globalNsRegistry.keys()),
613
+ 'apcore',
614
+ '_config',
615
+ ]);
616
+ for (const key of Object.keys(this._data)) {
617
+ if (!knownKeys.has(key)) {
618
+ throw new ConfigError(`Unknown namespace '${key}' in strict mode`);
619
+ }
620
+ }
621
+ }
622
+ }
253
623
  /**
254
624
  * Re-read configuration from the original YAML file.
255
625
  * Only works if the Config was created via Config.load().
626
+ * In namespace mode, re-applies namespace defaults, env overrides, and mount data.
256
627
  */
257
628
  reload() {
258
629
  if (this._yamlPath === null) {
259
630
  throw new ConfigError('Cannot reload: Config was not loaded from a YAML file');
260
631
  }
261
- const reloaded = Config.load(this._yamlPath);
632
+ const previousMounts = new Map(this._mounts);
633
+ const reloaded = Config.load(this._yamlPath, { validate: false });
262
634
  this._data = reloaded._data;
635
+ this._mode = reloaded._mode;
636
+ this._mounts = new Map();
637
+ // Re-apply mounts
638
+ for (const [namespace, mountData] of previousMounts) {
639
+ this.mount(namespace, { fromDict: mountData });
640
+ }
641
+ // Re-apply namespace env overrides in namespace mode
642
+ if (this._mode === 'namespace') {
643
+ this._data = applyNamespaceEnvOverrides(this._data);
644
+ }
263
645
  }
264
646
  }
647
+ // ---------------------------------------------------------------------------
648
+ // Bootstrap: register apcore built-in namespaces (§9.15)
649
+ // ---------------------------------------------------------------------------
650
+ // W-13: Use snake_case keys to match Python defaults and YAML config conventions.
651
+ // camelCase keys would silently diverge from cross-language YAML configs.
652
+ Config.registerNamespace({
653
+ name: 'observability',
654
+ envPrefix: 'APCORE__OBSERVABILITY',
655
+ defaults: {
656
+ tracing: { enabled: false, strategy: 'full', sampling_rate: 1.0, exporter: 'stdout', otlp_endpoint: null },
657
+ metrics: { enabled: false, exporter: 'stdout' },
658
+ logging: { enabled: true, level: 'info', format: 'json', redact_sensitive: true },
659
+ error_history: { max_entries_per_module: 50, max_total_entries: 1000 },
660
+ platform_notify: { enabled: false, error_rate_threshold: 0.1, latency_p99_threshold_ms: 5000.0 },
661
+ },
662
+ });
663
+ Config.registerNamespace({
664
+ name: 'sys_modules',
665
+ envPrefix: 'APCORE__SYS',
666
+ defaults: {
667
+ enabled: true,
668
+ health: { enabled: true },
669
+ manifest: { enabled: true },
670
+ usage: { enabled: true, retention_hours: 168, bucketing_strategy: 'hourly' },
671
+ control: { enabled: true },
672
+ events: { enabled: true, thresholds: { error_rate: 0.1, latency_p99_ms: 5000.0 } },
673
+ },
674
+ });
265
675
  //# sourceMappingURL=config.js.map
@@ -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":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,+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,IAAI,SAAS,GAAsC,IAAI,CAAC;AACxD,IAAI,CAAC;IAAC,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;AAElF,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,wDAAwD;AACxD,MAAM,UAAU,GAAG,SAAS,CAAC;AAE7B,gEAAgE;AAChE,MAAM,eAAe,GAAG;IACtB,SAAS;IACT,iBAAiB;IACjB,aAAa;IACb,UAAU;IACV,oBAAoB;IACpB,cAAc;CACN,CAAC;AAEX,4EAA4E;AAC5E,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,oDAAoD;AACpD,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;AAaF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAiC,CAAC;AACnE,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;AAEzC,iEAAiE;AACjE,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAElD,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,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,SAAS,0BAA0B,CAAC,IAA6B;IAC/D,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;IAEpC,oEAAoE;IACpE,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;SACzD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC;SACnC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,SAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAEjE,KAAK,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAS;QACrC,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,SAAU,CAAC,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAU,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACtB,2CAA2C;gBAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC/G,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBACxB,iDAAiD;gBACjD,MAAM,OAAO,GAAG,QAAQ,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;gBACvG,kCAAkC;gBAClC,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACtE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACxB,CAAC;gBACD,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAA4B,EAAE,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC1F,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,GAAW;IACvC,+DAA+D;IAC/D,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;SACzD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SACxC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAEvC,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjC,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YACf,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACxC,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IACvC,MAAM,IAAI,GAAG,SAAS,EAAE,IAAI,CAAC;IAC7B,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;IAEjC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAElD,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC1C,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACnF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACpC,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,6EAA6E;IAC7E,MAAM,SAAS,GAAG,CAAC,YAAY,EAAE,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAChE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,aAAa,CAAC;QACvE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACpD,IAAI,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAEtC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,OAAO,MAAM;IACT,KAAK,CAA0B;IAC/B,SAAS,GAAkB,IAAI,CAAC;IAChC,KAAK,GAA2B,QAAQ,CAAC;IACzC,OAAO,GAAyC,IAAI,GAAG,EAAE,CAAC;IAElE,YAAY,IAA8B;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,4EAA4E;IAC5E,oCAAoC;IACpC,4EAA4E;IAE5E;;;;;;;;OAQG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAKxB;QACC,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAE3E,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5E,MAAM,IAAI,4BAA4B,CAAC,SAAS,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,oBAAoB;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,CAAC,CAAC,MAAM,KAAK,IAAI;SAC7B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,4EAA4E;IAC5E,yBAAyB;IACzB,4EAA4E;IAE5E;;;;;;OAMG;IACH,MAAM,CAAC,IAAI,CAAC,QAAiB,EAAE,OAAgC;QAC7D,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;YACnC,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;YACjD,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QAED,0EAA0E;QAC1E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,IAAI,WAAW,CAAC,4BAA4B,QAAQ,6BAA6B,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QAC7C,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,MAAM,OAAO,GAAG,QAAmC,CAAC;QACpD,6FAA6F;QAC7F,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,eAAe,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS;YACvE,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEjE,IAAI,MAAc,CAAC;QAEnB,IAAI,eAAe,EAAE,CAAC;YACpB,0EAA0E;YAC1E,IAAI,MAAM,GAA4B,EAAE,CAAC;YAEzC,iCAAiC;YACjC,KAAK,MAAM,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC7C,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBAC1B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YAED,gCAAgC;YAChC,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAEzC,sCAAsC;YACtC,MAAM,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAE5C,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,2CAA2C;YAC3C,IAAI,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;QAC1B,CAAC;QAED,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,4EAA4E;IAC5E,mBAAmB;IACnB,4EAA4E;IAE5E,iDAAiD;IACjD,GAAG,CAAC,GAAW,EAAE,YAAsB;QACrC,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO,YAAY,CAAC;YAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,YAAY,CAAC;YACjE,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,OAAO,MAAM,CAAC;YACrC,OAAO,SAAS,CAAC,MAAiC,EAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC;IAED,iDAAiD;IACjD,GAAG,CAAC,GAAW,EAAE,KAAc;QAC7B,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAClC,OAAO;YACT,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;gBACvC,OAAO;YACT,CAAC;YACD,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;gBAClG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;YACtC,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAA4B,EAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC9F,OAAO;QACT,CAAC;QACD,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,yDAAyD;IACzD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAiB,EAAE,OAAkE;QACzF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,gBAAgB,CAAC,8CAA8C,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACvC,MAAM,OAAO,GAAG,QAAQ,KAAK,SAAS,CAAC;QACvC,MAAM,OAAO,GAAG,QAAQ,KAAK,SAAS,CAAC;QAEvC,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;YACvB,MAAM,IAAI,gBAAgB,CAAC,2DAA2D,CAAC,CAAC;QAC1F,CAAC;QACD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,gBAAgB,CAAC,6CAA6C,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,SAAkC,CAAC;QAEvC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,gBAAgB,CAAC,kDAAkD,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,QAAS,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,gBAAgB,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,MAAe,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAS,EAAE,OAAO,CAAC,CAAC;gBACjD,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,gBAAgB,CAAC,+BAA+B,QAAQ,MAAM,CAAC,EAAE,CAAC,CAAC;YAC/E,CAAC;YACD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC5C,MAAM,GAAG,EAAE,CAAC;YACd,CAAC;YACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxD,MAAM,IAAI,gBAAgB,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;YAC/E,CAAC;YACD,SAAS,GAAG,MAAiC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,QAAS,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEvC,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAA4B,CAAC;QAC1E,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAY;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAA4B,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAI,IAAY,EAAE,MAAyB;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,WAAW,CAAC,kCAAkC,IAAI,GAAG,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAI,SAAiB,EAAE,MAAgD;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,eAAe,CAAC,6BAA6B,SAAS,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ;QACN,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,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;IAEO,sBAAsB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5C,wCAAwC;YACxC,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,MAAiC,CAAC;YACrD,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrE,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC7D,MAAM,CAAC,IAAI,CAAC,6BAA6B,KAAK,MAAM,MAAM,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,WAAW,CACnB,oCAAoC,MAAM,CAAC,MAAM,eAAe;oBAChE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACzC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ;YACnE,UAAsC,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;QAE7D,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;gBACxB,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBACvC,QAAQ;gBACR,SAAS;aACV,CAAC,CAAC;YACH,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,IAAI,WAAW,CAAC,sBAAsB,GAAG,kBAAkB,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,WAAW,CAAC,uDAAuD,CAAC,CAAC;QACjF,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;QAEzB,kBAAkB;QAClB,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,cAAc,EAAE,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,qDAAqD;QACrD,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF;AAED,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAE9E,kFAAkF;AAClF,0EAA0E;AAC1E,MAAM,CAAC,iBAAiB,CAAC;IACvB,IAAI,EAAE,eAAe;IACrB,SAAS,EAAE,uBAAuB;IAClC,QAAQ,EAAE;QACR,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE;QAC1G,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE;QAC/C,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE;QACjF,aAAa,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE;QACtE,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE;KACjG;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,iBAAiB,CAAC;IACvB,IAAI,EAAE,aAAa;IACnB,SAAS,EAAE,aAAa;IACxB,QAAQ,EAAE;QACR,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QACzB,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QAC3B,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EAAE;QAC5E,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE;KACnF;CACF,CAAC,CAAC"}
@@ -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"}