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.
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 +420 -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,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
- // Merge: defaults < file < env
200
- let merged = deepMergeDicts(DEFAULTS, fileData);
201
- merged = applyEnvOverrides(merged);
202
- const config = new Config(merged);
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
- * Checks required fields, type constraints, and semantic rules.
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 reloaded = Config.load(this._yamlPath);
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
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
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;AAIzC,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,EAAE,CAAC;gBAClC,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,sBAAsB;IACjC,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,YAAY;IACvB,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"}