@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.
- package/README.md +2 -3
- package/dist/api/rest.js +4 -4
- package/dist/client/admin/utils/csrf.d.ts +9 -6
- package/dist/client/admin/utils/csrf.d.ts.map +1 -1
- package/dist/client/admin/utils/csrf.js +9 -6
- package/dist/collections/operations/fieldValidation.d.ts +5 -16
- package/dist/collections/operations/fieldValidation.d.ts.map +1 -1
- package/dist/collections/operations/fieldValidation.js +5 -20
- package/dist/collections/operations/update.d.ts.map +1 -1
- package/dist/collections/operations/update.js +4 -2
- package/dist/database/safe-parse.js +3 -3
- package/dist/database/universal-postgres.d.ts.map +1 -1
- package/dist/database/universal-postgres.js +10 -13
- package/dist/deployment-mode.d.ts +44 -0
- package/dist/deployment-mode.d.ts.map +1 -0
- package/dist/deployment-mode.js +58 -0
- package/dist/error-handling/error-boundary.d.ts +16 -2
- package/dist/error-handling/error-boundary.d.ts.map +1 -1
- package/dist/error-handling/error-boundary.js +18 -3
- package/dist/error-handling/error-reporter.d.ts +1 -1
- package/dist/error-handling/error-reporter.d.ts.map +1 -1
- package/dist/error-handling/error-reporter.js +6 -2
- package/dist/error-handling/index.d.ts +1 -1
- package/dist/error-handling/index.d.ts.map +1 -1
- package/dist/error-handling/index.js +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/instance/logger.d.ts +18 -7
- package/dist/instance/logger.d.ts.map +1 -1
- package/dist/instance/logger.js +66 -17
- package/dist/license/mint-client.d.ts +72 -0
- package/dist/license/mint-client.d.ts.map +1 -0
- package/dist/license/mint-client.js +175 -0
- package/dist/license.d.ts +6 -0
- package/dist/license.d.ts.map +1 -1
- package/dist/license.js +15 -1
- package/dist/observability/index.d.ts +5 -2
- package/dist/observability/index.d.ts.map +1 -1
- package/dist/observability/index.js +5 -2
- package/dist/observability/logger.d.ts +5 -3
- package/dist/observability/logger.d.ts.map +1 -1
- package/dist/observability/logger.js +5 -3
- package/dist/relationships/analyzer.js +2 -2
- package/dist/storage/object-storage.d.ts.map +1 -1
- package/dist/storage/object-storage.js +3 -3
- package/dist/utils/errors.d.ts +16 -4
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +14 -2
- package/dist/utils/json-parsing.d.ts.map +1 -1
- package/dist/utils/json-parsing.js +4 -2
- package/dist/utils/logger-client.d.ts +6 -27
- package/dist/utils/logger-client.d.ts.map +1 -1
- package/dist/utils/logger-client.js +5 -51
- package/dist/utils/logger-server.d.ts +16 -20
- package/dist/utils/logger-server.d.ts.map +1 -1
- package/dist/utils/logger-server.js +40 -53
- package/dist/utils/logger.d.ts +7 -9
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +6 -8
- package/package.json +154 -76
- package/dist/caching/index.d.ts +0 -6
- package/dist/caching/index.d.ts.map +0 -1
- package/dist/caching/index.js +0 -5
- package/dist/observability/tracing.d.ts +0 -149
- package/dist/observability/tracing.d.ts.map +0 -1
- 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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACzD,YAAY,EACV,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAChB,YAAY,EAEZ,cAAc,EACd,QAAQ,EACR,YAAY,EAEZ,SAAS,EACT,cAAc,EACd,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,yBAAyB,EACzB,UAAU,EACV,QAAQ,EAER,oBAAoB,EACpB,eAAe,EAEf,aAAa,EAEb,WAAW,EACX,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,YAAY,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,YAAY,EACjB,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAMtB,OAAO,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAEL,yBAAyB,EACzB,uBAAuB,EACvB,0BAA0B,EAC1B,4BAA4B,EAE5B,gBAAgB,EAEhB,iBAAiB,EAEjB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,aAAa,EAEb,qBAAqB,EAErB,MAAM,EAEN,kBAAkB,EAClB,cAAc,EACd,KAAK,cAAc,EAEnB,KAAK,eAAe,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,WAAW,EACX,aAAa,EACb,eAAe,EACf,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;
|
|
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
|
|
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
|
-
//
|
|
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
|
-
*
|
|
5
|
-
*
|
|
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
|
-
*
|
|
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
|
|
33
|
+
* Creates a new instance-shaped logger (utils-backed).
|
|
25
34
|
*/
|
|
26
35
|
export declare function createLogger(): RevealUILogger;
|
|
27
36
|
/**
|
|
28
|
-
* Default logger
|
|
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
|
|
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"}
|
package/dist/instance/logger.js
CHANGED
|
@@ -1,42 +1,91 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* RevealUI Logger
|
|
2
|
+
* RevealUI Logger (instance API adapter)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
-
*
|
|
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
|
-
|
|
14
|
-
if (
|
|
15
|
-
|
|
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
|
-
|
|
20
|
-
if (
|
|
21
|
-
|
|
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
|
-
|
|
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
|
-
|
|
29
|
-
|
|
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
|
|
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
|
|
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
|
*
|
package/dist/license.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../src/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,8BAA8B;AAC9B,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,YAAY,CAAC;AAEhE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE/F,gDAAgD;AAChD,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,qBAAqB;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB;IAChC,2EAA2E;IAC3E,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;CACnB;AAmBD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAEjF;AAED,qCAAqC;AACrC,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;iBAuBxB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,sCAAsC;AACtC,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;CACf;AAID;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,QAAiB,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAW5E;AASD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAElF;AAkBD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAOxC;AAYD;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASxE;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACrC,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAShC;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAEtC;;;;;;;;;;;;GAYG;AACH,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,EACrC,iBAAiB,GAAE,MAA4B,GAC9C,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAEhC;AA+GD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CA4D9B;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CA8C9D;AAaD;;;GAGG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAG5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAGzD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAQ5F;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,WAAW,GAAG,OAAO,CA2B7D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,GAAE,WAAmB,GAAG,kBAAkB,CAkEtF;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAE5D;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAMpC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAMpC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gCAAgC,QAAqB,CAAC;AAEnE;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,qBAAqB,QAAoC,CAAC;AAEvE;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,EAClC,KAAK,GAAE,MAAmB,GACzB,MAAM,CAIR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAE5D;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,qCAAqC,IAAI,CAAC;AAEvD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtF;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQ/E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,EACvE,UAAU,EAAE,MAAM,EAClB,gBAAgB,GAAE,MAAM,GAAG,IAAuC,EAClE,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAGxC"}
|
|
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 './
|
|
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,
|
|
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
|
|
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,
|
|
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
|
-
*
|
|
5
|
-
*
|
|
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
|
|
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
|
-
*
|
|
5
|
-
*
|
|
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';
|