@revealui/core 0.12.0 → 0.12.2

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 (66) hide show
  1. package/README.md +2 -3
  2. package/dist/api/rest.js +4 -4
  3. package/dist/client/admin/utils/csrf.d.ts +9 -6
  4. package/dist/client/admin/utils/csrf.d.ts.map +1 -1
  5. package/dist/client/admin/utils/csrf.js +9 -6
  6. package/dist/collections/operations/fieldValidation.d.ts +5 -16
  7. package/dist/collections/operations/fieldValidation.d.ts.map +1 -1
  8. package/dist/collections/operations/fieldValidation.js +5 -20
  9. package/dist/collections/operations/update.d.ts.map +1 -1
  10. package/dist/collections/operations/update.js +4 -2
  11. package/dist/database/safe-parse.js +3 -3
  12. package/dist/database/universal-postgres.d.ts.map +1 -1
  13. package/dist/database/universal-postgres.js +10 -13
  14. package/dist/deployment-mode.d.ts +44 -0
  15. package/dist/deployment-mode.d.ts.map +1 -0
  16. package/dist/deployment-mode.js +58 -0
  17. package/dist/error-handling/error-boundary.d.ts +16 -2
  18. package/dist/error-handling/error-boundary.d.ts.map +1 -1
  19. package/dist/error-handling/error-boundary.js +18 -3
  20. package/dist/error-handling/error-reporter.d.ts +1 -1
  21. package/dist/error-handling/error-reporter.d.ts.map +1 -1
  22. package/dist/error-handling/error-reporter.js +6 -2
  23. package/dist/error-handling/index.d.ts +1 -1
  24. package/dist/error-handling/index.d.ts.map +1 -1
  25. package/dist/error-handling/index.js +1 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +4 -2
  28. package/dist/instance/logger.d.ts +18 -7
  29. package/dist/instance/logger.d.ts.map +1 -1
  30. package/dist/instance/logger.js +66 -17
  31. package/dist/license/mint-client.d.ts +72 -0
  32. package/dist/license/mint-client.d.ts.map +1 -0
  33. package/dist/license/mint-client.js +175 -0
  34. package/dist/license.d.ts +6 -0
  35. package/dist/license.d.ts.map +1 -1
  36. package/dist/license.js +15 -1
  37. package/dist/observability/index.d.ts +5 -2
  38. package/dist/observability/index.d.ts.map +1 -1
  39. package/dist/observability/index.js +5 -2
  40. package/dist/observability/logger.d.ts +5 -3
  41. package/dist/observability/logger.d.ts.map +1 -1
  42. package/dist/observability/logger.js +5 -3
  43. package/dist/relationships/analyzer.js +2 -2
  44. package/dist/storage/object-storage.d.ts.map +1 -1
  45. package/dist/storage/object-storage.js +3 -3
  46. package/dist/utils/errors.d.ts +16 -4
  47. package/dist/utils/errors.d.ts.map +1 -1
  48. package/dist/utils/errors.js +14 -2
  49. package/dist/utils/json-parsing.d.ts.map +1 -1
  50. package/dist/utils/json-parsing.js +4 -2
  51. package/dist/utils/logger-client.d.ts +6 -27
  52. package/dist/utils/logger-client.d.ts.map +1 -1
  53. package/dist/utils/logger-client.js +5 -51
  54. package/dist/utils/logger-server.d.ts +16 -20
  55. package/dist/utils/logger-server.d.ts.map +1 -1
  56. package/dist/utils/logger-server.js +40 -53
  57. package/dist/utils/logger.d.ts +7 -9
  58. package/dist/utils/logger.d.ts.map +1 -1
  59. package/dist/utils/logger.js +6 -8
  60. package/package.json +154 -76
  61. package/dist/caching/index.d.ts +0 -6
  62. package/dist/caching/index.d.ts.map +0 -1
  63. package/dist/caching/index.js +0 -5
  64. package/dist/observability/tracing.d.ts +0 -149
  65. package/dist/observability/tracing.d.ts.map +0 -1
  66. package/dist/observability/tracing.js +0 -380
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/error-handling/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACtB,8BAA8B,EAC9B,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,KAAK,EACL,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,SAAS,EACT,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,UAAU,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,0BAA0B,EAC1B,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,KAAK,GACN,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/error-handling/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,EACd,sBAAsB,EACtB,8BAA8B,EAC9B,uBAAuB,EACvB,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,KAAK,EACL,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,SAAS,EACT,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,sBAAsB,EACtB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,UAAU,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,0BAA0B,EAC1B,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,KAAK,GACN,MAAM,uBAAuB,CAAC"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  export { AdaptiveCircuitBreaker, Bulkhead, CircuitBreak, CircuitBreaker, CircuitBreakerOpenError, CircuitBreakerRegistry, calculateDelay, circuitBreakerRegistry, createCircuitBreakerMiddleware, createResilientFunction, createRetryMiddleware, ExponentialBackoff, fetchWithCircuitBreaker, fetchWithRetry, globalRetryConfig, ResilientOperation, Retryable, RetryableOperation, RetryPolicies, RetryPolicyBuilder, retry, retryBatch, retryIf, retryUntil, retryWithFallback, sleep, withCircuitBreaker, } from '@revealui/resilience';
7
7
  // Error boundaries
8
- export { AuthenticationError, ErrorBoundary, ErrorBoundaryWithRetry, getErrorSeverity, isAuthenticationError, isNetworkError, isNotFoundError, isValidationError, NetworkError, NotFoundError, shouldRetryError, useErrorHandler, ValidationError, withErrorBoundary, } from './error-boundary';
8
+ export { AuthenticationError, ClientValidationError, ErrorBoundary, ErrorBoundaryWithRetry, getErrorSeverity, isAuthenticationError, isClientValidationError, isNetworkError, isNotFoundError, isValidationError, NetworkError, NotFoundError, shouldRetryError, useErrorHandler, ValidationError, withErrorBoundary, } from './error-boundary';
9
9
  // Error reporting
10
10
  export { ConsoleErrorReporter, ErrorFilters, ErrorReportingSystem, errorReporter, HTTPErrorReporter, initializeErrorReporting, LoggingErrorReporter, trackAction, trackAPICall, trackNavigation, } from './error-reporter';
11
11
  // Fallback components
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -67,14 +67,16 @@ RevealUICollection, RevealUIGlobal, relationshipPopulationPromise, validateRelat
67
67
  export { BoldFeature, FixedToolbarFeature, HeadingFeature, ItalicFeature, LinkFeature, lexicalEditor, TreeViewFeature, UnderlineFeature, } from './richtext/index.js';
68
68
  // Storage adapters
69
69
  export { objectStorage } from './storage/object-storage.js';
70
- // Note: Logger class is exported from ./revealui.ts (instance/logger.js), not from utils/logger.js
70
+ // Note: Instance-shaped Logger (RevealUILogger adapter) is exported from
71
+ // ./revealui.ts (instance/logger.js). Structured utils logger is re-exported
72
+ // below from ./utils/logger.js (ADR-008: both backed by @revealui/utils/logger).
71
73
  export { LRUCache } from './utils/cache.js';
72
74
  // Deep clone utility
73
75
  export { deepClone } from './utils/deep-clone.js';
74
76
  // Error response utilities (framework-agnostic)
75
77
  export { createApplicationErrorResponseData, createErrorResponseData, createSuccessResponseData, createValidationErrorResponseData, } from './utils/error-responses.js';
76
78
  export { ApplicationError, AuthenticationError, AuthorizationError, ConflictError, DatabaseError, handleApiError, handleDatabaseError, NotFoundError, PostgresErrorCode, RateLimitError, ValidationError, } from './utils/errors.js';
77
- // Utilities
79
+ // Structured logger (utils-backed client barrel — ADR-008 D4)
78
80
  export { createLogger, logger, } from './utils/logger.js';
79
81
  // Type guards
80
82
  export { flattenFields, isJsonFieldType, isObject } from './utils/type-guards.js';
@@ -1,9 +1,17 @@
1
1
  /**
2
- * RevealUI Logger
2
+ * RevealUI Logger (instance API adapter)
3
3
  *
4
- * Production-safe logging utility for RevealUI framework operations.
5
- * Info/warn messages are no-ops in production to avoid console pollution.
4
+ * ADR-008 D2/D4: implementation is a thin adapter over `@revealui/utils/logger`.
5
+ * The varargs `RevealUILogger` shape stays for `RevealUIInstance.logger` and
6
+ * public re-exports from `revealui.ts`. Prefer structured imports for new code:
7
+ *
8
+ * import { logger } from '@revealui/core/observability/logger'
9
+ *
10
+ * Production silencing: follows utils `LOG_LEVEL` (default `info`). Legacy
11
+ * hard-silence of info/warn in production is intentionally retired (documented
12
+ * in the D2 PR). setup/scripts CLI loggers are out of scope.
6
13
  */
14
+ import { type Logger as UtilsLogger } from '@revealui/utils/logger';
7
15
  export interface RevealUILogger {
8
16
  info: (...args: unknown[]) => void;
9
17
  warn: (...args: unknown[]) => void;
@@ -11,21 +19,24 @@ export interface RevealUILogger {
11
19
  debug: (...args: unknown[]) => void;
12
20
  }
13
21
  /**
14
- * Production-safe logger implementation
15
- * Info/warn messages are completely silenced in production
22
+ * Adapts structured utils logger to the historical varargs instance API.
16
23
  */
17
24
  export declare class Logger implements RevealUILogger {
25
+ private readonly backend;
26
+ constructor(backend?: UtilsLogger);
18
27
  info(...args: unknown[]): void;
19
28
  warn(...args: unknown[]): void;
20
29
  error(...args: unknown[]): void;
21
30
  debug(...args: unknown[]): void;
22
31
  }
23
32
  /**
24
- * Creates a new logger instance
33
+ * Creates a new instance-shaped logger (utils-backed).
25
34
  */
26
35
  export declare function createLogger(): RevealUILogger;
27
36
  /**
28
- * Default logger instance
37
+ * Default instance-shaped logger (utils-backed).
38
+ *
39
+ * @deprecated Prefer `import { logger } from '@revealui/core/observability/logger'`.
29
40
  */
30
41
  export declare const defaultLogger: RevealUILogger;
31
42
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/instance/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC;AAED;;;GAGG;AACH,qBAAa,MAAO,YAAW,cAAc;IAC3C,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAO9B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAO9B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAKhC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,cAAc,CAE7C;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,cAA6B,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/instance/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAGL,KAAK,MAAM,IAAI,WAAW,EAE3B,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACnC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACrC;AAoCD;;GAEG;AACH,qBAAa,MAAO,YAAW,cAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAE1B,OAAO,GAAE,WAAyB;IAI9C,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAS9B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAS9B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAS/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAQhC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,cAAc,CAE7C;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,cAA6B,CAAC"}
@@ -1,42 +1,91 @@
1
1
  /**
2
- * RevealUI Logger
2
+ * RevealUI Logger (instance API adapter)
3
3
  *
4
- * Production-safe logging utility for RevealUI framework operations.
5
- * Info/warn messages are no-ops in production to avoid console pollution.
4
+ * ADR-008 D2/D4: implementation is a thin adapter over `@revealui/utils/logger`.
5
+ * The varargs `RevealUILogger` shape stays for `RevealUIInstance.logger` and
6
+ * public re-exports from `revealui.ts`. Prefer structured imports for new code:
7
+ *
8
+ * import { logger } from '@revealui/core/observability/logger'
9
+ *
10
+ * Production silencing: follows utils `LOG_LEVEL` (default `info`). Legacy
11
+ * hard-silence of info/warn in production is intentionally retired (documented
12
+ * in the D2 PR). setup/scripts CLI loggers are out of scope.
6
13
  */
14
+ import { createLogger as createUtilsLogger, logger as utilsLogger, } from '@revealui/utils/logger';
15
+ function toMessageAndContext(args) {
16
+ if (args.length === 0) {
17
+ return { message: '' };
18
+ }
19
+ const [first, ...rest] = args;
20
+ const message = typeof first === 'string' ? first : first instanceof Error ? first.message : String(first);
21
+ if (rest.length === 0) {
22
+ if (first instanceof Error) {
23
+ return { message, error: first };
24
+ }
25
+ return { message };
26
+ }
27
+ if (rest.length === 1) {
28
+ const only = rest[0];
29
+ if (only instanceof Error) {
30
+ return { message, error: only };
31
+ }
32
+ if (only !== null && typeof only === 'object' && !Array.isArray(only)) {
33
+ return { message, context: only };
34
+ }
35
+ return { message, context: { detail: only } };
36
+ }
37
+ return { message, context: { args: rest } };
38
+ }
7
39
  /**
8
- * Production-safe logger implementation
9
- * Info/warn messages are completely silenced in production
40
+ * Adapts structured utils logger to the historical varargs instance API.
10
41
  */
11
42
  export class Logger {
43
+ backend;
44
+ constructor(backend = utilsLogger) {
45
+ this.backend = backend;
46
+ }
12
47
  info(...args) {
13
- // Info messages are never logged in production
14
- if (process.env.NODE_ENV !== 'production') {
15
- console.log('[RevealUI]', ...args);
48
+ const { message, context, error } = toMessageAndContext(args);
49
+ if (error) {
50
+ this.backend.info(message, { ...context, error: error.message, stack: error.stack });
51
+ return;
16
52
  }
53
+ this.backend.info(message, context);
17
54
  }
18
55
  warn(...args) {
19
- // Warning messages are never logged in production
20
- if (process.env.NODE_ENV !== 'production') {
21
- console.warn('[RevealUI]', ...args);
56
+ const { message, context, error } = toMessageAndContext(args);
57
+ if (error) {
58
+ this.backend.warn(message, { ...context, error: error.message, stack: error.stack });
59
+ return;
22
60
  }
61
+ this.backend.warn(message, context);
23
62
  }
24
63
  error(...args) {
25
- console.error('[RevealUI]', ...args);
64
+ const { message, context, error } = toMessageAndContext(args);
65
+ if (error) {
66
+ this.backend.error(message, error, context);
67
+ return;
68
+ }
69
+ this.backend.error(message, context);
26
70
  }
27
71
  debug(...args) {
28
- if (process.env.NODE_ENV !== 'production') {
29
- console.debug('[RevealUI]', ...args);
72
+ const { message, context, error } = toMessageAndContext(args);
73
+ if (error) {
74
+ this.backend.debug(message, { ...context, error: error.message, stack: error.stack });
75
+ return;
30
76
  }
77
+ this.backend.debug(message, context);
31
78
  }
32
79
  }
33
80
  /**
34
- * Creates a new logger instance
81
+ * Creates a new instance-shaped logger (utils-backed).
35
82
  */
36
83
  export function createLogger() {
37
- return new Logger();
84
+ return new Logger(createUtilsLogger({ component: 'revealui-instance' }));
38
85
  }
39
86
  /**
40
- * Default logger instance
87
+ * Default instance-shaped logger (utils-backed).
88
+ *
89
+ * @deprecated Prefer `import { logger } from '@revealui/core/observability/logger'`.
41
90
  */
42
91
  export const defaultLogger = new Logger();
@@ -0,0 +1,72 @@
1
+ /**
2
+ * License mint client (GAP-260 P4-3).
3
+ *
4
+ * Single entry for online mint surfaces (Stripe webhooks, admin generate).
5
+ * Routes to either:
6
+ * - remote `apps/license-signer` POST /internal/mint when
7
+ * REVEALUI_LICENSE_SIGN_VIA_SIGNER is truthy, or
8
+ * - local {@link generateLicenseKey} with REVEALUI_LICENSE_PRIVATE_KEY
9
+ * (default / fallback until P4-4 drops the private key from api).
10
+ *
11
+ * Offline stamper (revforge) keeps calling generateLicenseKey directly.
12
+ *
13
+ * Env (remote path):
14
+ * REVEALUI_LICENSE_SIGN_VIA_SIGNER=1|true|yes|on
15
+ * REVEALUI_LICENSE_SIGNER_URL base URL (e.g. http://127.0.0.1:8791)
16
+ * REVEALUI_SIGNER_INVOKE_SECRET HMAC secret (no REVEALUI_SECRET fallback)
17
+ *
18
+ * Env (local path):
19
+ * REVEALUI_LICENSE_PRIVATE_KEY PKCS#8 Ed25519 PEM (required)
20
+ * REVEALUI_LICENSE_PUBLIC_KEY optional; enables kid on JWT header
21
+ */
22
+ export declare const SIGNER_TIMESTAMP_HEADER = "x-revealui-signer-timestamp";
23
+ export declare const SIGNER_SIGNATURE_HEADER = "x-revealui-signer-signature";
24
+ export declare const SIGNER_MINT_PATH = "/internal/mint";
25
+ export type MintEnv = Record<string, string | undefined>;
26
+ /** Payload fields the signer / generateLicenseKey accept for online mints. */
27
+ export type MintLicensePayload = {
28
+ tier: 'pro' | 'max' | 'enterprise';
29
+ customerId: string;
30
+ domains?: string[];
31
+ maxSites?: number;
32
+ maxUsers?: number;
33
+ perpetual?: boolean;
34
+ jti?: string;
35
+ /**
36
+ * Relative JWT lifetime in seconds.
37
+ * - `undefined`: local default (subscription TTL) / omit on remote body
38
+ * - `null`: perpetual (no exp claim)
39
+ * - number: explicit TTL
40
+ */
41
+ expiresInSeconds?: number | null;
42
+ };
43
+ export declare class LicenseMintConfigError extends Error {
44
+ readonly code: "license_mint_config";
45
+ constructor(message: string);
46
+ }
47
+ export declare class LicenseMintRemoteError extends Error {
48
+ readonly code: "license_mint_remote";
49
+ readonly status: number;
50
+ constructor(message: string, status: number);
51
+ }
52
+ /** Truthy flag values for REVEALUI_LICENSE_SIGN_VIA_SIGNER. */
53
+ export declare function isSignViaSigner(env?: MintEnv): boolean;
54
+ /**
55
+ * Whether this process can mint a license key (local private key OR remote
56
+ * signer fully configured). Used by call sites that used to gate only on
57
+ * REVEALUI_LICENSE_PRIVATE_KEY presence.
58
+ */
59
+ export declare function canMintLicense(env?: MintEnv): boolean;
60
+ /** Human-readable reason mint is unavailable (for CRITICAL logs). */
61
+ export declare function mintConfigMissingMessage(env?: MintEnv): string;
62
+ export declare function signMintRequest(secret: string, method: string, path: string, body: string, timestampSeconds: number): string;
63
+ export type MintLicenseKeyOptions = {
64
+ env?: MintEnv;
65
+ /** Inject for tests; defaults to global fetch. */
66
+ fetch?: typeof fetch;
67
+ };
68
+ /**
69
+ * Mint a signed license JWT — remote signer when flagged, else local private key.
70
+ */
71
+ export declare function mintLicenseKey(input: MintLicensePayload, options?: MintLicenseKeyOptions): Promise<string>;
72
+ //# sourceMappingURL=mint-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mint-client.d.ts","sourceRoot":"","sources":["../../src/license/mint-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,eAAO,MAAM,uBAAuB,gCAAgC,CAAC;AACrE,eAAO,MAAM,uBAAuB,gCAAgC,CAAC;AACrE,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AAEjD,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAEzD,8EAA8E;AAC9E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,YAAY,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAG,qBAAqB,CAAU;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAG,qBAAqB,CAAU;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK5C;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,GAAG,GAAE,OAAqB,GAAG,OAAO,CAGnE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,OAAqB,GAAG,OAAO,CAOlE;AAED,qEAAqE;AACrE,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,OAAqB,GAAG,MAAM,CAQ3E;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAGR;AAyGD,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,kBAAkB,EACzB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,MAAM,CAAC,CAQjB"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * License mint client (GAP-260 P4-3).
3
+ *
4
+ * Single entry for online mint surfaces (Stripe webhooks, admin generate).
5
+ * Routes to either:
6
+ * - remote `apps/license-signer` POST /internal/mint when
7
+ * REVEALUI_LICENSE_SIGN_VIA_SIGNER is truthy, or
8
+ * - local {@link generateLicenseKey} with REVEALUI_LICENSE_PRIVATE_KEY
9
+ * (default / fallback until P4-4 drops the private key from api).
10
+ *
11
+ * Offline stamper (revforge) keeps calling generateLicenseKey directly.
12
+ *
13
+ * Env (remote path):
14
+ * REVEALUI_LICENSE_SIGN_VIA_SIGNER=1|true|yes|on
15
+ * REVEALUI_LICENSE_SIGNER_URL base URL (e.g. http://127.0.0.1:8791)
16
+ * REVEALUI_SIGNER_INVOKE_SECRET HMAC secret (no REVEALUI_SECRET fallback)
17
+ *
18
+ * Env (local path):
19
+ * REVEALUI_LICENSE_PRIVATE_KEY PKCS#8 Ed25519 PEM (required)
20
+ * REVEALUI_LICENSE_PUBLIC_KEY optional; enables kid on JWT header
21
+ */
22
+ import { createHmac } from 'node:crypto';
23
+ import { generateLicenseKey, readPemEnv } from '../license.js';
24
+ export const SIGNER_TIMESTAMP_HEADER = 'x-revealui-signer-timestamp';
25
+ export const SIGNER_SIGNATURE_HEADER = 'x-revealui-signer-signature';
26
+ export const SIGNER_MINT_PATH = '/internal/mint';
27
+ export class LicenseMintConfigError extends Error {
28
+ code = 'license_mint_config';
29
+ constructor(message) {
30
+ super(message);
31
+ this.name = 'LicenseMintConfigError';
32
+ }
33
+ }
34
+ export class LicenseMintRemoteError extends Error {
35
+ code = 'license_mint_remote';
36
+ status;
37
+ constructor(message, status) {
38
+ super(message);
39
+ this.name = 'LicenseMintRemoteError';
40
+ this.status = status;
41
+ }
42
+ }
43
+ /** Truthy flag values for REVEALUI_LICENSE_SIGN_VIA_SIGNER. */
44
+ export function isSignViaSigner(env = process.env) {
45
+ const raw = (env.REVEALUI_LICENSE_SIGN_VIA_SIGNER ?? '').trim().toLowerCase();
46
+ return raw === '1' || raw === 'true' || raw === 'yes' || raw === 'on';
47
+ }
48
+ /**
49
+ * Whether this process can mint a license key (local private key OR remote
50
+ * signer fully configured). Used by call sites that used to gate only on
51
+ * REVEALUI_LICENSE_PRIVATE_KEY presence.
52
+ */
53
+ export function canMintLicense(env = process.env) {
54
+ if (isSignViaSigner(env)) {
55
+ const url = env.REVEALUI_LICENSE_SIGNER_URL?.trim() ?? '';
56
+ const secret = env.REVEALUI_SIGNER_INVOKE_SECRET?.trim() ?? '';
57
+ return url.length > 0 && secret.length > 0;
58
+ }
59
+ return Boolean(env.REVEALUI_LICENSE_PRIVATE_KEY?.trim());
60
+ }
61
+ /** Human-readable reason mint is unavailable (for CRITICAL logs). */
62
+ export function mintConfigMissingMessage(env = process.env) {
63
+ if (isSignViaSigner(env)) {
64
+ return ('REVEALUI_LICENSE_SIGN_VIA_SIGNER is set but REVEALUI_LICENSE_SIGNER_URL ' +
65
+ 'and/or REVEALUI_SIGNER_INVOKE_SECRET are missing');
66
+ }
67
+ return 'REVEALUI_LICENSE_PRIVATE_KEY not configured';
68
+ }
69
+ export function signMintRequest(secret, method, path, body, timestampSeconds) {
70
+ const payload = `${timestampSeconds}.${method.toUpperCase()}.${path}.${body}`;
71
+ return createHmac('sha256', secret).update(payload, 'utf8').digest('hex');
72
+ }
73
+ function buildMintBody(input) {
74
+ const body = {
75
+ tier: input.tier,
76
+ customerId: input.customerId,
77
+ };
78
+ if (input.domains !== undefined)
79
+ body.domains = input.domains;
80
+ if (input.maxSites !== undefined)
81
+ body.maxSites = input.maxSites;
82
+ if (input.maxUsers !== undefined)
83
+ body.maxUsers = input.maxUsers;
84
+ if (input.perpetual !== undefined)
85
+ body.perpetual = input.perpetual;
86
+ if (input.jti !== undefined)
87
+ body.jti = input.jti;
88
+ if (input.expiresInSeconds !== undefined) {
89
+ body.expiresInSeconds = input.expiresInSeconds;
90
+ }
91
+ return body;
92
+ }
93
+ /** Strip trailing `/` without regex (CodeQL js/polynomial-redos + fleet no-regex). */
94
+ function stripTrailingSlashes(s) {
95
+ let end = s.length;
96
+ while (end > 0 && s.charCodeAt(end - 1) === 47 /* / */) {
97
+ end -= 1;
98
+ }
99
+ return end === s.length ? s : s.slice(0, end);
100
+ }
101
+ function joinSignerUrl(base, path) {
102
+ return `${stripTrailingSlashes(base)}${path}`;
103
+ }
104
+ async function mintViaSigner(input, env, fetchImpl) {
105
+ const baseUrl = env.REVEALUI_LICENSE_SIGNER_URL?.trim() ?? '';
106
+ const secret = env.REVEALUI_SIGNER_INVOKE_SECRET?.trim() ?? '';
107
+ if (!(baseUrl && secret)) {
108
+ throw new LicenseMintConfigError(mintConfigMissingMessage(env));
109
+ }
110
+ const bodyObj = buildMintBody(input);
111
+ const bodyText = JSON.stringify(bodyObj);
112
+ const ts = Math.floor(Date.now() / 1000);
113
+ const signature = signMintRequest(secret, 'POST', SIGNER_MINT_PATH, bodyText, ts);
114
+ const url = joinSignerUrl(baseUrl, SIGNER_MINT_PATH);
115
+ let res;
116
+ try {
117
+ res = await fetchImpl(url, {
118
+ method: 'POST',
119
+ headers: {
120
+ 'content-type': 'application/json',
121
+ [SIGNER_TIMESTAMP_HEADER]: String(ts),
122
+ [SIGNER_SIGNATURE_HEADER]: signature,
123
+ },
124
+ body: bodyText,
125
+ });
126
+ }
127
+ catch (err) {
128
+ const detail = err instanceof Error ? err.message : String(err);
129
+ throw new LicenseMintRemoteError(`license-signer fetch failed: ${detail}`, 0);
130
+ }
131
+ const text = await res.text();
132
+ if (!res.ok) {
133
+ throw new LicenseMintRemoteError(`license-signer mint failed: HTTP ${res.status}: ${text.slice(0, 200)}`, res.status);
134
+ }
135
+ let json;
136
+ try {
137
+ json = text ? JSON.parse(text) : {};
138
+ }
139
+ catch {
140
+ throw new LicenseMintRemoteError('license-signer returned non-JSON body', res.status);
141
+ }
142
+ const licenseKey = typeof json === 'object' &&
143
+ json !== null &&
144
+ 'licenseKey' in json &&
145
+ typeof json.licenseKey === 'string'
146
+ ? json.licenseKey
147
+ : '';
148
+ if (!licenseKey) {
149
+ throw new LicenseMintRemoteError('license-signer response missing licenseKey', res.status);
150
+ }
151
+ return licenseKey;
152
+ }
153
+ async function mintLocal(input, env) {
154
+ const privateKey = readPemEnv('REVEALUI_LICENSE_PRIVATE_KEY', env);
155
+ if (!privateKey) {
156
+ throw new LicenseMintConfigError(mintConfigMissingMessage(env));
157
+ }
158
+ const publicKey = readPemEnv('REVEALUI_LICENSE_PUBLIC_KEY', env);
159
+ const { expiresInSeconds, ...payload } = input;
160
+ if (expiresInSeconds === undefined) {
161
+ return generateLicenseKey(payload, privateKey, undefined, publicKey);
162
+ }
163
+ return generateLicenseKey(payload, privateKey, expiresInSeconds, publicKey);
164
+ }
165
+ /**
166
+ * Mint a signed license JWT — remote signer when flagged, else local private key.
167
+ */
168
+ export async function mintLicenseKey(input, options = {}) {
169
+ const env = options.env ?? process.env;
170
+ const fetchImpl = options.fetch ?? globalThis.fetch.bind(globalThis);
171
+ if (isSignViaSigner(env)) {
172
+ return mintViaSigner(input, env, fetchImpl);
173
+ }
174
+ return mintLocal(input, env);
175
+ }
package/dist/license.d.ts CHANGED
@@ -106,6 +106,12 @@ export declare function configureLicenseCache(overrides: Partial<LicenseCacheCon
106
106
  * authored regex, per the fleet no-regex rule.
107
107
  */
108
108
  export declare function normalizePem(raw: string): string;
109
+ /**
110
+ * Read a PEM from `env[name]` (defaults to `process.env`), trim, and normalize
111
+ * escaped newlines. Returns `undefined` when missing or blank after trim.
112
+ * Canonical helper for the former 8+ copy-pasted license/webhook PEM unescapes (GAP-396).
113
+ */
114
+ export declare function readPemEnv(name: string, env?: Record<string, string | undefined>): string | undefined;
109
115
  /**
110
116
  * The ordered public-key candidates used to verify license JWTs.
111
117
  *
@@ -1 +1 @@
1
- {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"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"}
package/dist/license.js CHANGED
@@ -15,7 +15,7 @@
15
15
  // other modules in the auth route bundle during page data collection.
16
16
  import { z } from 'zod';
17
17
  import { decryptLicenseKey } from './license-encryption.js';
18
- import { logger } from './utils/logger.js';
18
+ import { logger } from './observability/logger.js';
19
19
  async function getJose() {
20
20
  return await import('jose');
21
21
  }
@@ -127,6 +127,20 @@ let cachedState = {
127
127
  export function normalizePem(raw) {
128
128
  return raw.split('\\n').join('\n');
129
129
  }
130
+ /**
131
+ * Read a PEM from `env[name]` (defaults to `process.env`), trim, and normalize
132
+ * escaped newlines. Returns `undefined` when missing or blank after trim.
133
+ * Canonical helper for the former 8+ copy-pasted license/webhook PEM unescapes (GAP-396).
134
+ */
135
+ export function readPemEnv(name, env = process.env) {
136
+ const raw = env[name];
137
+ if (raw === undefined)
138
+ return undefined;
139
+ const trimmed = raw.trim();
140
+ if (trimmed.length === 0)
141
+ return undefined;
142
+ return normalizePem(trimmed);
143
+ }
130
144
  /**
131
145
  * The ordered public-key candidates used to verify license JWTs.
132
146
  *
@@ -2,11 +2,14 @@
2
2
  * Observability Module
3
3
  *
4
4
  * Centralized exports for observability functionality including logging,
5
- * metrics, tracing, alerts, and health checks.
5
+ * metrics, alerts, and health checks.
6
+ *
7
+ * In-memory `TracingSystem` was removed (fleet-redundancy C11, 2026-07-23):
8
+ * unmounted, tests-only, zero app consumers. Prefer OpenTelemetry when
9
+ * distributed tracing is wired.
6
10
  */
7
11
  export * from './alerts.js';
8
12
  export * from './health-check.js';
9
13
  export * from './logger.js';
10
14
  export * from './metrics.js';
11
- export * from './tracing.js';
12
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/observability/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
@@ -2,10 +2,13 @@
2
2
  * Observability Module
3
3
  *
4
4
  * Centralized exports for observability functionality including logging,
5
- * metrics, tracing, alerts, and health checks.
5
+ * metrics, alerts, and health checks.
6
+ *
7
+ * In-memory `TracingSystem` was removed (fleet-redundancy C11, 2026-07-23):
8
+ * unmounted, tests-only, zero app consumers. Prefer OpenTelemetry when
9
+ * distributed tracing is wired.
6
10
  */
7
11
  export * from './alerts.js';
8
12
  export * from './health-check.js';
9
13
  export * from './logger.js';
10
14
  export * from './metrics.js';
11
- export * from './tracing.js';
@@ -1,8 +1,10 @@
1
1
  /**
2
- * Structured Logging Infrastructure
2
+ * Structured Logging Infrastructure (canonical core facade)
3
3
  *
4
- * Re-exports from @revealui/utils to maintain backward compatibility.
5
- * The actual implementation has been moved to @revealui/utils to break circular dependencies.
4
+ * Preferred import for packages that already depend on `@revealui/core`
5
+ * (ADR-008). Re-exports `@revealui/utils/logger` and adds core-only helpers
6
+ * (`createRequestLogger`, `logPerformance`, …). Leaf packages without a core
7
+ * dependency should import `@revealui/utils/logger` directly.
6
8
  */
7
9
  export type { LogContext, LogEntry, LoggerConfig, LogLevel, } from '@revealui/utils/logger';
8
10
  export { createLogger, Logger, logAudit, logError, logger, logQuery, } from '@revealui/utils/logger';
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/observability/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,YAAY,EACV,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,QAAQ,GACT,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,QAAQ,GACT,MAAM,wBAAwB,CAAC;AAKhC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,GAAG,OAAO,EAAE,SAAS,GAAG,OAAO,EACzE,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,IAG/D,SAAS,QAAQ,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;QACrC,OAAO,CAAC,EAAE,MAAM,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KAC5C,CAAC;CACH,EACD,MAAM,MAAM,OAAO,CAAC,SAAS,CAAC,KAC7B,OAAO,CAAC,SAAS,CAAC,CA6CtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CASN;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAgBN;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EAC5C,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAKrF"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/observability/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,YAAY,EACV,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,QAAQ,GACT,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,QAAQ,GACT,MAAM,wBAAwB,CAAC;AAKhC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,GAAG,OAAO,EAAE,SAAS,GAAG,OAAO,EACzE,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,IAG/D,SAAS,QAAQ,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;QACrC,OAAO,CAAC,EAAE,MAAM,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KAC5C,CAAC;CACH,EACD,MAAM,MAAM,OAAO,CAAC,SAAS,CAAC,KAC7B,OAAO,CAAC,SAAS,CAAC,CA6CtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CASN;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAgBN;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EAC5C,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAKrF"}
@@ -1,8 +1,10 @@
1
1
  /**
2
- * Structured Logging Infrastructure
2
+ * Structured Logging Infrastructure (canonical core facade)
3
3
  *
4
- * Re-exports from @revealui/utils to maintain backward compatibility.
5
- * The actual implementation has been moved to @revealui/utils to break circular dependencies.
4
+ * Preferred import for packages that already depend on `@revealui/core`
5
+ * (ADR-008). Re-exports `@revealui/utils/logger` and adds core-only helpers
6
+ * (`createRequestLogger`, `logPerformance`, …). Leaf packages without a core
7
+ * dependency should import `@revealui/utils/logger` directly.
6
8
  */
7
9
  // Import logger for internal use
8
10
  import { logger as utilsLogger } from '@revealui/utils/logger';