hazo_logs 1.2.1 → 2.0.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 +73 -0
- package/config/hazo_logs_config.ini.sample +2 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/alert-triggers.d.ts.map +1 -1
- package/dist/lib/alert-triggers.js +4 -5
- package/dist/lib/alert-triggers.js.map +1 -1
- package/dist/lib/config_loader.d.ts.map +1 -1
- package/dist/lib/config_loader.js +0 -6
- package/dist/lib/config_loader.js.map +1 -1
- package/dist/lib/console-logger.d.ts +16 -1
- package/dist/lib/console-logger.d.ts.map +1 -1
- package/dist/lib/console-logger.js +36 -0
- package/dist/lib/console-logger.js.map +1 -1
- package/dist/lib/eslint_plugin/index.d.ts +109 -0
- package/dist/lib/eslint_plugin/index.d.ts.map +1 -0
- package/dist/lib/eslint_plugin/index.js +168 -0
- package/dist/lib/eslint_plugin/index.js.map +1 -0
- package/dist/lib/global-error-handlers.d.ts.map +1 -1
- package/dist/lib/global-error-handlers.js +2 -1
- package/dist/lib/global-error-handlers.js.map +1 -1
- package/dist/lib/hazo_logger.d.ts.map +1 -1
- package/dist/lib/hazo_logger.js +1 -0
- package/dist/lib/hazo_logger.js.map +1 -1
- package/dist/lib/level_resolver.d.ts +26 -0
- package/dist/lib/level_resolver.d.ts.map +1 -0
- package/dist/lib/level_resolver.js +65 -0
- package/dist/lib/level_resolver.js.map +1 -0
- package/dist/lib/log-reader.d.ts.map +1 -1
- package/dist/lib/log-reader.js +1 -0
- package/dist/lib/log-reader.js.map +1 -1
- package/dist/lib/package_logger.d.ts +46 -3
- package/dist/lib/package_logger.d.ts.map +1 -1
- package/dist/lib/package_logger.js +190 -6
- package/dist/lib/package_logger.js.map +1 -1
- package/dist/lib/ring_buffer.d.ts +51 -0
- package/dist/lib/ring_buffer.d.ts.map +1 -0
- package/dist/lib/ring_buffer.js +107 -0
- package/dist/lib/ring_buffer.js.map +1 -0
- package/dist/lib/types.d.ts +24 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/universal-logger.d.ts.map +1 -1
- package/dist/lib/universal-logger.js +15 -0
- package/dist/lib/universal-logger.js.map +1 -1
- package/dist/lib/utils/caller_info.d.ts +25 -1
- package/dist/lib/utils/caller_info.d.ts.map +1 -1
- package/dist/lib/utils/caller_info.js +62 -1
- package/dist/lib/utils/caller_info.js.map +1 -1
- package/dist/lib/with-error-handler.d.ts.map +1 -1
- package/dist/lib/with-error-handler.js +2 -1
- package/dist/lib/with-error-handler.js.map +1 -1
- package/dist/server.d.ts +14 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +13 -2
- package/dist/server.js.map +1 -1
- package/dist/ui/components/ErrorBoundary.d.ts.map +1 -1
- package/dist/ui/components/ErrorBoundary.js +3 -2
- package/dist/ui/components/ErrorBoundary.js.map +1 -1
- package/dist/ui/hooks/useErrorReporter.d.ts.map +1 -1
- package/dist/ui/hooks/useErrorReporter.js +4 -3
- package/dist/ui/hooks/useErrorReporter.js.map +1 -1
- package/dist/ui/server.d.ts +10 -4
- package/dist/ui/server.d.ts.map +1 -1
- package/dist/ui/server.js +10 -4
- package/dist/ui/server.js.map +1 -1
- package/package.json +15 -7
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RingBuffer — per-correlation-ID in-memory circular buffer for TRACE/DEBUG entries.
|
|
3
|
+
*
|
|
4
|
+
* Design constraints (from design spec §2.4):
|
|
5
|
+
* - 200 entries per buffer
|
|
6
|
+
* - Max 100 active correlation IDs (LRU eviction)
|
|
7
|
+
* - Memory ceiling: ~100 × 200 × 500B = 10 MB
|
|
8
|
+
*
|
|
9
|
+
* When an ERROR is emitted, the buffer for the current correlation ID is dumped
|
|
10
|
+
* alongside the error so the full request lead-up is visible in a single log group.
|
|
11
|
+
*/
|
|
12
|
+
// ─── RingBuffer ──────────────────────────────────────────────────────────────
|
|
13
|
+
export class RingBuffer {
|
|
14
|
+
capacity;
|
|
15
|
+
buf;
|
|
16
|
+
head = 0; // next write index
|
|
17
|
+
count = 0; // total written (capped at capacity)
|
|
18
|
+
constructor(capacity = 200) {
|
|
19
|
+
this.capacity = capacity;
|
|
20
|
+
this.buf = new Array(capacity);
|
|
21
|
+
}
|
|
22
|
+
push(entry) {
|
|
23
|
+
this.buf[this.head] = entry;
|
|
24
|
+
this.head = (this.head + 1) % this.capacity;
|
|
25
|
+
if (this.count < this.capacity)
|
|
26
|
+
this.count++;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Returns the last `n` entries (default: all).
|
|
30
|
+
* Returned in chronological order (oldest first).
|
|
31
|
+
*/
|
|
32
|
+
dump(n) {
|
|
33
|
+
const take = Math.min(n ?? this.count, this.count);
|
|
34
|
+
const result = [];
|
|
35
|
+
// Walk backwards from head to collect `take` entries, then reverse.
|
|
36
|
+
let idx = (this.head - 1 + this.capacity) % this.capacity;
|
|
37
|
+
for (let i = 0; i < take; i++) {
|
|
38
|
+
const entry = this.buf[idx];
|
|
39
|
+
if (entry !== undefined)
|
|
40
|
+
result.push(entry);
|
|
41
|
+
idx = (idx - 1 + this.capacity) % this.capacity;
|
|
42
|
+
}
|
|
43
|
+
return result.reverse();
|
|
44
|
+
}
|
|
45
|
+
clear() {
|
|
46
|
+
this.buf.fill(undefined);
|
|
47
|
+
this.head = 0;
|
|
48
|
+
this.count = 0;
|
|
49
|
+
}
|
|
50
|
+
get size() {
|
|
51
|
+
return this.count;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// ─── RingBufferRegistry ──────────────────────────────────────────────────────
|
|
55
|
+
/**
|
|
56
|
+
* Global per-correlationId ring buffer registry.
|
|
57
|
+
* LRU: max 100 active correlation IDs.
|
|
58
|
+
*/
|
|
59
|
+
export class RingBufferRegistry {
|
|
60
|
+
// Map preserves insertion order; we move-to-end on access (LRU).
|
|
61
|
+
buffers = new Map();
|
|
62
|
+
MAX_BUFFERS = 100;
|
|
63
|
+
getOrCreate(correlationId) {
|
|
64
|
+
const existing = this.buffers.get(correlationId);
|
|
65
|
+
if (existing) {
|
|
66
|
+
// Move to end (most-recently-used)
|
|
67
|
+
this.buffers.delete(correlationId);
|
|
68
|
+
this.buffers.set(correlationId, existing);
|
|
69
|
+
return existing;
|
|
70
|
+
}
|
|
71
|
+
if (this.buffers.size >= this.MAX_BUFFERS) {
|
|
72
|
+
this.evictLRU();
|
|
73
|
+
}
|
|
74
|
+
const buf = new RingBuffer();
|
|
75
|
+
this.buffers.set(correlationId, buf);
|
|
76
|
+
return buf;
|
|
77
|
+
}
|
|
78
|
+
get(correlationId) {
|
|
79
|
+
const buf = this.buffers.get(correlationId);
|
|
80
|
+
if (buf) {
|
|
81
|
+
// Move to end on read access
|
|
82
|
+
this.buffers.delete(correlationId);
|
|
83
|
+
this.buffers.set(correlationId, buf);
|
|
84
|
+
}
|
|
85
|
+
return buf;
|
|
86
|
+
}
|
|
87
|
+
evictLRU() {
|
|
88
|
+
// The first key in the Map is the least-recently-used
|
|
89
|
+
const firstKey = this.buffers.keys().next().value;
|
|
90
|
+
if (firstKey !== undefined) {
|
|
91
|
+
this.buffers.delete(firstKey);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// ─── Singleton ───────────────────────────────────────────────────────────────
|
|
96
|
+
export const ringBufferRegistry = new RingBufferRegistry();
|
|
97
|
+
/**
|
|
98
|
+
* Public API used by hazo_ui/test-harness and hazo_core.
|
|
99
|
+
* Returns the last `n` entries for the given correlationId (empty array if none).
|
|
100
|
+
*/
|
|
101
|
+
export function getRingBuffer(correlationId, n) {
|
|
102
|
+
const buf = ringBufferRegistry.get(correlationId);
|
|
103
|
+
if (!buf)
|
|
104
|
+
return [];
|
|
105
|
+
return buf.dump(n);
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=ring_buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ring_buffer.js","sourceRoot":"","sources":["../../src/lib/ring_buffer.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Type definitions for hazo_logs
|
|
3
3
|
*/
|
|
4
4
|
/** All log levels including fatal (above error) */
|
|
5
|
-
export type LogLevel = 'fatal' | 'error' | 'warn' | 'info' | 'debug';
|
|
5
|
+
export type LogLevel = 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace';
|
|
6
6
|
/**
|
|
7
7
|
* Levels valid for config min-level setting.
|
|
8
8
|
* 'fatal' excluded — configuring min-level as fatal would silence everything else.
|
|
@@ -53,6 +53,13 @@ export interface HandledError {
|
|
|
53
53
|
message?: string;
|
|
54
54
|
userMessage?: string;
|
|
55
55
|
}
|
|
56
|
+
/** Ring buffer entry — a captured TRACE/DEBUG entry stored for error context dumps */
|
|
57
|
+
export interface RingBufferEntry {
|
|
58
|
+
level: LogLevel;
|
|
59
|
+
msg: string;
|
|
60
|
+
fields?: Record<string, unknown>;
|
|
61
|
+
ts: string;
|
|
62
|
+
}
|
|
56
63
|
/** Logger interface — the public API for logging */
|
|
57
64
|
export interface Logger {
|
|
58
65
|
fatal(message: string, data?: LogData): void;
|
|
@@ -60,6 +67,22 @@ export interface Logger {
|
|
|
60
67
|
warn(message: string, data?: LogData): void;
|
|
61
68
|
info(message: string, data?: LogData): void;
|
|
62
69
|
debug(message: string, data?: LogData): void;
|
|
70
|
+
trace(message: string, data?: LogData): void;
|
|
71
|
+
heartbeat(name: string, fields: {
|
|
72
|
+
status: string;
|
|
73
|
+
[key: string]: unknown;
|
|
74
|
+
}, opts?: {
|
|
75
|
+
trigger?: (prev: Record<string, unknown>, curr: Record<string, unknown>) => boolean;
|
|
76
|
+
}): void;
|
|
77
|
+
sampled(level: 'trace' | 'debug' | 'info' | 'warn', msg: string, fields?: Record<string, unknown>, opts?: {
|
|
78
|
+
sample: number;
|
|
79
|
+
}): void;
|
|
80
|
+
dedupe(level: 'trace' | 'debug' | 'info' | 'warn', msg: string, fields?: Record<string, unknown>, opts?: {
|
|
81
|
+
window: string;
|
|
82
|
+
key?: string;
|
|
83
|
+
}): void;
|
|
84
|
+
/** Access the ring buffer for a correlation ID (optional — not all implementations support it) */
|
|
85
|
+
getRingBuffer?: (correlationId: string, n?: number) => RingBufferEntry[];
|
|
63
86
|
}
|
|
64
87
|
/** Configuration options loaded from hazo_logs_config.ini */
|
|
65
88
|
export interface HazoLogConfig {
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mDAAmD;AACnD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"universal-logger.d.ts","sourceRoot":"","sources":["../../src/lib/universal-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"universal-logger.d.ts","sourceRoot":"","sources":["../../src/lib/universal-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,EAA4B,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAiGpD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAYzD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAgBxD;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB5E;AAGD,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -55,6 +55,21 @@ class DeferredServerLogger {
|
|
|
55
55
|
debug(message, data) {
|
|
56
56
|
this.innerLogger.debug(message, data);
|
|
57
57
|
}
|
|
58
|
+
trace(message, data) {
|
|
59
|
+
this.innerLogger.trace(message, data);
|
|
60
|
+
}
|
|
61
|
+
heartbeat(name, fields, opts) {
|
|
62
|
+
this.innerLogger.heartbeat(name, fields, opts);
|
|
63
|
+
}
|
|
64
|
+
sampled(level, msg, fields, opts) {
|
|
65
|
+
this.innerLogger.sampled(level, msg, fields, opts);
|
|
66
|
+
}
|
|
67
|
+
dedupe(level, msg, fields, opts) {
|
|
68
|
+
this.innerLogger.dedupe(level, msg, fields, opts);
|
|
69
|
+
}
|
|
70
|
+
getRingBuffer(correlationId, n) {
|
|
71
|
+
return this.innerLogger.getRingBuffer?.(correlationId, n) ?? [];
|
|
72
|
+
}
|
|
58
73
|
}
|
|
59
74
|
// Cache for pre-loaded server loggers
|
|
60
75
|
const serverLoggerCache = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"universal-logger.js","sourceRoot":"","sources":["../../src/lib/universal-logger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"universal-logger.js","sourceRoot":"","sources":["../../src/lib/universal-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Utility to extract filename and line number from call stack
|
|
2
|
+
* Utility to extract filename and line number from call stack.
|
|
3
|
+
*
|
|
4
|
+
* Exports:
|
|
5
|
+
* getCallerInfo() — richer API used by hazo_logs internals (walks past logger frames)
|
|
6
|
+
* get_filename() — simple stack-scraping helper for API route logging
|
|
7
|
+
* get_line_number() — simple stack-scraping helper for API route logging
|
|
8
|
+
*
|
|
9
|
+
* get_filename / get_line_number were originally in hazo_auth/src/lib/utils/api_route_helpers.ts.
|
|
10
|
+
* Canonical location moved here in hazo_logs (see hazo_auth for re-export shim).
|
|
3
11
|
*/
|
|
4
12
|
export interface CallerInfo {
|
|
5
13
|
filename: string;
|
|
@@ -10,4 +18,20 @@ export interface CallerInfo {
|
|
|
10
18
|
* Walks up the stack to find the actual calling code (not the logger internals)
|
|
11
19
|
*/
|
|
12
20
|
export declare function getCallerInfo(): CallerInfo;
|
|
21
|
+
/**
|
|
22
|
+
* Gets the filename of the caller from the call stack.
|
|
23
|
+
* Simpler alternative to getCallerInfo() — does not skip internal frames,
|
|
24
|
+
* suitable for use directly in API route handlers.
|
|
25
|
+
*
|
|
26
|
+
* @returns Filename (basename only) or "route.ts" as default
|
|
27
|
+
*/
|
|
28
|
+
export declare function get_filename(): string;
|
|
29
|
+
/**
|
|
30
|
+
* Gets the line number of the caller from the call stack.
|
|
31
|
+
* Simpler alternative to getCallerInfo() — does not skip internal frames,
|
|
32
|
+
* suitable for use directly in API route handlers.
|
|
33
|
+
*
|
|
34
|
+
* @returns Line number or 0
|
|
35
|
+
*/
|
|
36
|
+
export declare function get_line_number(): number;
|
|
13
37
|
//# sourceMappingURL=caller_info.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caller_info.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/caller_info.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"caller_info.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/caller_info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,CA+B1C;AAwCD;;;;;;GAMG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAerC;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAexC"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Utility to extract filename and line number from call stack
|
|
2
|
+
* Utility to extract filename and line number from call stack.
|
|
3
|
+
*
|
|
4
|
+
* Exports:
|
|
5
|
+
* getCallerInfo() — richer API used by hazo_logs internals (walks past logger frames)
|
|
6
|
+
* get_filename() — simple stack-scraping helper for API route logging
|
|
7
|
+
* get_line_number() — simple stack-scraping helper for API route logging
|
|
8
|
+
*
|
|
9
|
+
* get_filename / get_line_number were originally in hazo_auth/src/lib/utils/api_route_helpers.ts.
|
|
10
|
+
* Canonical location moved here in hazo_logs (see hazo_auth for re-export shim).
|
|
3
11
|
*/
|
|
4
12
|
/**
|
|
5
13
|
* Get the filename and line number of the caller
|
|
@@ -62,4 +70,57 @@ function extractFilename(fullPath) {
|
|
|
62
70
|
const parts = fullPath.split(/[/\\]/);
|
|
63
71
|
return parts[parts.length - 1] || fullPath;
|
|
64
72
|
}
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
// Simple stack-scraping helpers (ported from hazo_auth/api_route_helpers)
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
/**
|
|
77
|
+
* Gets the filename of the caller from the call stack.
|
|
78
|
+
* Simpler alternative to getCallerInfo() — does not skip internal frames,
|
|
79
|
+
* suitable for use directly in API route handlers.
|
|
80
|
+
*
|
|
81
|
+
* @returns Filename (basename only) or "route.ts" as default
|
|
82
|
+
*/
|
|
83
|
+
export function get_filename() {
|
|
84
|
+
try {
|
|
85
|
+
const stack = new Error().stack;
|
|
86
|
+
if (!stack)
|
|
87
|
+
return 'route.ts';
|
|
88
|
+
const lines = stack.split('\n');
|
|
89
|
+
// Skip "Error" line and the get_filename() frame itself
|
|
90
|
+
for (let i = 2; i < lines.length; i++) {
|
|
91
|
+
const match = lines[i].match(/([^/\\]+\.tsx?):(\d+):(\d+)/);
|
|
92
|
+
if (match)
|
|
93
|
+
return match[1];
|
|
94
|
+
}
|
|
95
|
+
return 'route.ts';
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return 'route.ts';
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Gets the line number of the caller from the call stack.
|
|
103
|
+
* Simpler alternative to getCallerInfo() — does not skip internal frames,
|
|
104
|
+
* suitable for use directly in API route handlers.
|
|
105
|
+
*
|
|
106
|
+
* @returns Line number or 0
|
|
107
|
+
*/
|
|
108
|
+
export function get_line_number() {
|
|
109
|
+
try {
|
|
110
|
+
const stack = new Error().stack;
|
|
111
|
+
if (!stack)
|
|
112
|
+
return 0;
|
|
113
|
+
const lines = stack.split('\n');
|
|
114
|
+
// Skip "Error" line and the get_line_number() frame itself
|
|
115
|
+
for (let i = 2; i < lines.length; i++) {
|
|
116
|
+
const match = lines[i].match(/([^/\\]+\.tsx?):(\d+):(\d+)/);
|
|
117
|
+
if (match)
|
|
118
|
+
return parseInt(match[2], 10) || 0;
|
|
119
|
+
}
|
|
120
|
+
return 0;
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return 0;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
65
126
|
//# sourceMappingURL=caller_info.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caller_info.js","sourceRoot":"","sources":["../../../src/lib/utils/caller_info.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"caller_info.js","sourceRoot":"","sources":["../../../src/lib/utils/caller_info.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with-error-handler.d.ts","sourceRoot":"","sources":["../../src/lib/with-error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"with-error-handler.d.ts","sourceRoot":"","sources":["../../src/lib/with-error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,KAAK,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAiBhE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAqD5E"}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* - userMessage → client-facing message (falls back to "Internal server error")
|
|
14
14
|
* - message → logs only, never sent to client
|
|
15
15
|
*/
|
|
16
|
+
import { generateRequestId } from 'hazo_core';
|
|
16
17
|
import { createLogger } from './package_logger.js';
|
|
17
18
|
const logger = createLogger('hazo_logs.withErrorHandler');
|
|
18
19
|
function isHandledError(err) {
|
|
@@ -34,7 +35,7 @@ export function withErrorHandler(handler) {
|
|
|
34
35
|
return await handler(request);
|
|
35
36
|
}
|
|
36
37
|
catch (err) {
|
|
37
|
-
const correlationId =
|
|
38
|
+
const correlationId = generateRequestId();
|
|
38
39
|
if (isHandledError(err)) {
|
|
39
40
|
const level = levelForStatus(err.statusCode);
|
|
40
41
|
const logMessage = `[${err.code}] ${err.message ?? err.userMessage ?? 'handled error'}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"with-error-handler.js","sourceRoot":"","sources":["../../src/lib/with-error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,MAAM,GAAG,YAAY,CAAC,4BAA4B,CAAC,CAAC;AAI1D,SAAS,cAAc,CAAC,GAAY;IAClC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,OAAQ,GAA+B,CAAC,IAAI,KAAK,QAAQ;QACzD,OAAQ,GAA+B,CAAC,UAAU,KAAK,QAAQ,CAChE,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB;IACxC,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC;IACtC,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,MAAM,CAAC;IACrC,OAAO,OAAO,CAAC,CAAC,iCAAiC;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAyB;IACxD,OAAO,KAAK,EAAE,OAAgB,EAAqB,EAAE;QACnD,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,
|
|
1
|
+
{"version":3,"file":"with-error-handler.js","sourceRoot":"","sources":["../../src/lib/with-error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,MAAM,GAAG,YAAY,CAAC,4BAA4B,CAAC,CAAC;AAI1D,SAAS,cAAc,CAAC,GAAY;IAClC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,OAAQ,GAA+B,CAAC,IAAI,KAAK,QAAQ;QACzD,OAAQ,GAA+B,CAAC,UAAU,KAAK,QAAQ,CAChE,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB;IACxC,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC;IACtC,IAAI,UAAU,IAAI,GAAG;QAAE,OAAO,MAAM,CAAC;IACrC,OAAO,OAAO,CAAC,CAAC,iCAAiC;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAyB;IACxD,OAAO,KAAK,EAAE,OAAgB,EAAqB,EAAE;QACnD,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC;YAE1C,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC7C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,WAAW,IAAI,eAAe,EAAE,CAAC;gBACxF,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE;oBACxB,aAAa;oBACb,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ;iBACpC,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,IAAI,CAClB;oBACE,KAAK,EAAE,GAAG,CAAC,WAAW,IAAI,gBAAgB;oBAC1C,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,aAAa;iBACd,EACD;oBACE,MAAM,EAAE,GAAG,CAAC,UAAU;oBACtB,OAAO,EAAE,EAAE,kBAAkB,EAAE,aAAa,EAAE;iBAC/C,CACF,CAAC;YACJ,CAAC;YAED,+DAA+D;YAC/D,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3D,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;gBACxC,aAAa;gBACb,OAAO;gBACP,KAAK;gBACL,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ;aACpC,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,IAAI,CAClB;gBACE,KAAK,EAAE,uBAAuB;gBAC9B,IAAI,EAAE,gBAAgB;gBACtB,aAAa;aACd,EACD;gBACE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,kBAAkB,EAAE,aAAa,EAAE;aAC/C,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -2,7 +2,16 @@
|
|
|
2
2
|
* hazo_logs/server - Server-only logging module
|
|
3
3
|
*
|
|
4
4
|
* ⚠️ SERVER-ONLY: This module uses Node.js APIs (fs, async_hooks) and CANNOT be
|
|
5
|
-
* imported in
|
|
5
|
+
* imported in Client Components. Import will fail in browser bundles when
|
|
6
|
+
* fs/async_hooks resolve to empty/throwing shims.
|
|
7
|
+
*
|
|
8
|
+
* We intentionally do NOT `import 'server-only'` here because Next 15's
|
|
9
|
+
* "Collecting page data" build phase evaluates `route.ts` and middleware
|
|
10
|
+
* without setting the `react-server` resolution condition; the marker
|
|
11
|
+
* then throws and breaks the production build for every legitimate
|
|
12
|
+
* server-side consumer. The runtime failure mode for a real Client
|
|
13
|
+
* Component import is still loud enough — losing fail-fast at module
|
|
14
|
+
* load is the right tradeoff.
|
|
6
15
|
*
|
|
7
16
|
* Usage:
|
|
8
17
|
* import { createLogger, runWithLogContext } from 'hazo_logs/server';
|
|
@@ -13,10 +22,12 @@
|
|
|
13
22
|
* For client-side logging, use:
|
|
14
23
|
* import { createClientLogger } from 'hazo_logs/ui';
|
|
15
24
|
*/
|
|
16
|
-
import 'server-only';
|
|
17
25
|
export { HazoLogger } from './lib/hazo_logger.js';
|
|
18
26
|
export { PackageLogger, createLogger } from './lib/package_logger.js';
|
|
19
27
|
export { loadConfig } from './lib/config_loader.js';
|
|
28
|
+
export { getRingBuffer, ringBufferRegistry, RingBuffer, RingBufferRegistry } from './lib/ring_buffer.js';
|
|
29
|
+
export { LevelResolver } from './lib/level_resolver.js';
|
|
30
|
+
export type { OverrideMap } from './lib/level_resolver.js';
|
|
20
31
|
export { generateSessionId, startSession, startSessionAsync, runWithLogContext, runWithLogContextAsync, getLogContext, withSession, withContext, } from './lib/context/log-context.js';
|
|
21
32
|
export { readLogs, getAvailableLogDates, getUniquePackages, getUniqueExecutionIds, getUniqueSessionIds, getUniqueReferences, } from './lib/log-reader.js';
|
|
22
33
|
export type { Logger, LogLevel, LogData, LogEntry, LogContext, HazoLogConfig, PackageLoggerOptions, LogOrigin, } from './lib/types.js';
|
|
@@ -28,5 +39,5 @@ export { installGlobalErrorHandlers } from './lib/global-error-handlers.js';
|
|
|
28
39
|
export type { GlobalErrorHandlerOptions } from './lib/global-error-handlers.js';
|
|
29
40
|
export { registerAlertTrigger } from './lib/alert-triggers.js';
|
|
30
41
|
export type { AlertTriggerConfig, AlertTriggerMatch, AlertTriggerNotify } from './lib/alert-triggers.js';
|
|
31
|
-
export type { HandledError, ConfigLogLevel } from './lib/types.js';
|
|
42
|
+
export type { HandledError, ConfigLogLevel, RingBufferEntry } from './lib/types.js';
|
|
32
43
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,UAAU,EACV,aAAa,EACb,oBAAoB,EACpB,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE3E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,YAAY,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGzG,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -2,7 +2,16 @@
|
|
|
2
2
|
* hazo_logs/server - Server-only logging module
|
|
3
3
|
*
|
|
4
4
|
* ⚠️ SERVER-ONLY: This module uses Node.js APIs (fs, async_hooks) and CANNOT be
|
|
5
|
-
* imported in
|
|
5
|
+
* imported in Client Components. Import will fail in browser bundles when
|
|
6
|
+
* fs/async_hooks resolve to empty/throwing shims.
|
|
7
|
+
*
|
|
8
|
+
* We intentionally do NOT `import 'server-only'` here because Next 15's
|
|
9
|
+
* "Collecting page data" build phase evaluates `route.ts` and middleware
|
|
10
|
+
* without setting the `react-server` resolution condition; the marker
|
|
11
|
+
* then throws and breaks the production build for every legitimate
|
|
12
|
+
* server-side consumer. The runtime failure mode for a real Client
|
|
13
|
+
* Component import is still loud enough — losing fail-fast at module
|
|
14
|
+
* load is the right tradeoff.
|
|
6
15
|
*
|
|
7
16
|
* Usage:
|
|
8
17
|
* import { createLogger, runWithLogContext } from 'hazo_logs/server';
|
|
@@ -13,11 +22,13 @@
|
|
|
13
22
|
* For client-side logging, use:
|
|
14
23
|
* import { createClientLogger } from 'hazo_logs/ui';
|
|
15
24
|
*/
|
|
16
|
-
import 'server-only';
|
|
17
25
|
// Core logging
|
|
18
26
|
export { HazoLogger } from './lib/hazo_logger.js';
|
|
19
27
|
export { PackageLogger, createLogger } from './lib/package_logger.js';
|
|
20
28
|
export { loadConfig } from './lib/config_loader.js';
|
|
29
|
+
// Log quality — ring buffer, level resolver
|
|
30
|
+
export { getRingBuffer, ringBufferRegistry, RingBuffer, RingBufferRegistry } from './lib/ring_buffer.js';
|
|
31
|
+
export { LevelResolver } from './lib/level_resolver.js';
|
|
21
32
|
// Log context (uses AsyncLocalStorage)
|
|
22
33
|
export { generateSessionId, startSession, startSessionAsync, runWithLogContext, runWithLogContextAsync, getLogContext, withSession, withContext, } from './lib/context/log-context.js';
|
|
23
34
|
// Log reader (uses fs, readline)
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,4CAA4C;AAC5C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,uCAAuC;AACvC,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,8BAA8B,CAAC;AAEtC,iCAAiC;AACjC,OAAO,EACL,QAAQ,EACR,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAgB7B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,8BAA8B;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,iDAAiD;IACjD,QAAQ,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,KAAK,CAAC,SAAS,CAAC;IACjE,0DAA0D;IAC1D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IACxD,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,kBAAkB;IAC1B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,qBAAa,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACxF,OAAO,CAAC,MAAM,CAA6B;gBAE/B,KAAK,EAAE,kBAAkB;IAMrC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,kBAAkB;IAOjE,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI;IAmB5D,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI,KAAK,CAAC,SAAS;CAO1B"}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* </ErrorBoundary>
|
|
14
14
|
*/
|
|
15
15
|
import React from 'react';
|
|
16
|
+
import { generateRequestId } from 'hazo_core';
|
|
16
17
|
import { createClientLogger } from '../client-logger.js';
|
|
17
18
|
export class ErrorBoundary extends React.Component {
|
|
18
19
|
logger = null;
|
|
@@ -24,11 +25,11 @@ export class ErrorBoundary extends React.Component {
|
|
|
24
25
|
static getDerivedStateFromError(error) {
|
|
25
26
|
return {
|
|
26
27
|
error,
|
|
27
|
-
correlationId:
|
|
28
|
+
correlationId: generateRequestId(),
|
|
28
29
|
};
|
|
29
30
|
}
|
|
30
31
|
componentDidCatch(error, info) {
|
|
31
|
-
const correlationId = this.state.correlationId ??
|
|
32
|
+
const correlationId = this.state.correlationId ?? generateRequestId();
|
|
32
33
|
if (!this.logger) {
|
|
33
34
|
this.logger = createClientLogger({
|
|
34
35
|
apiBasePath: this.props.apiBasePath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../../src/ui/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA0BzD,MAAM,OAAO,aAAc,SAAQ,KAAK,CAAC,SAAiD;IAChF,MAAM,GAAwB,IAAI,CAAC;IAE3C,YAAY,KAAyB;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,wBAAwB,CAAC,KAAY;QAC1C,OAAO;YACL,KAAK;YACL,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.js","sourceRoot":"","sources":["../../../src/ui/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA0BzD,MAAM,OAAO,aAAc,SAAQ,KAAK,CAAC,SAAiD;IAChF,MAAM,GAAwB,IAAI,CAAC;IAE3C,YAAY,KAAyB;QACnC,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,wBAAwB,CAAC,KAAY;QAC1C,OAAO;YACL,KAAK;YACL,aAAa,EAAE,iBAAiB,EAAE;SACnC,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,KAAY,EAAE,IAAqB;QACnD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,iBAAiB,EAAE,CAAC;QAEtE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC;gBAC/B,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;gBACnC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,yBAAyB;aACjE,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,OAAO,EAAE,EAAE;YAClD,aAAa;YACb,UAAU,EAAE,KAAK,CAAC,IAAI;YACtB,eAAe,EAAE,IAAI,CAAC,cAAc,IAAI,SAAS;SAClD,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5C,IAAI,KAAK,IAAI,aAAa,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useErrorReporter.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useErrorReporter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useErrorReporter.d.ts","sourceRoot":"","sources":["../../../src/ui/hooks/useErrorReporter.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAgB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC;IACtF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAC3E,+CAA+C;IAC/C,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAC9E,mDAAmD;IACnD,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;CAC5E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,sBAAsB,CAwD9F"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
* // Show id to user: "Reference: {id}"
|
|
12
12
|
*/
|
|
13
13
|
import { useCallback, useRef } from 'react';
|
|
14
|
+
import { generateRequestId } from 'hazo_core';
|
|
14
15
|
import { createClientLogger } from '../client-logger.js';
|
|
15
16
|
export function useErrorReporter(options = {}) {
|
|
16
17
|
// Stable logger ref — doesn't re-create on every render
|
|
@@ -31,7 +32,7 @@ export function useErrorReporter(options = {}) {
|
|
|
31
32
|
...extra,
|
|
32
33
|
}), [options.userId]);
|
|
33
34
|
const reportError = useCallback((error, context) => {
|
|
34
|
-
const correlationId =
|
|
35
|
+
const correlationId = generateRequestId();
|
|
35
36
|
const message = error instanceof Error ? error.message : String(error);
|
|
36
37
|
logger.error(message, {
|
|
37
38
|
...buildMeta(context),
|
|
@@ -41,12 +42,12 @@ export function useErrorReporter(options = {}) {
|
|
|
41
42
|
return correlationId;
|
|
42
43
|
}, [logger, buildMeta]);
|
|
43
44
|
const reportWarning = useCallback((message, context) => {
|
|
44
|
-
const correlationId =
|
|
45
|
+
const correlationId = generateRequestId();
|
|
45
46
|
logger.warn(message, { ...buildMeta(context), correlationId });
|
|
46
47
|
return correlationId;
|
|
47
48
|
}, [logger, buildMeta]);
|
|
48
49
|
const reportInfo = useCallback((message, context) => {
|
|
49
|
-
const correlationId =
|
|
50
|
+
const correlationId = generateRequestId();
|
|
50
51
|
logger.info(message, { ...buildMeta(context), correlationId });
|
|
51
52
|
return correlationId;
|
|
52
53
|
}, [logger, buildMeta]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useErrorReporter.js","sourceRoot":"","sources":["../../../src/ui/hooks/useErrorReporter.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAkBzD,MAAM,UAAU,gBAAgB,CAAC,UAAmC,EAAE;IACpE,wDAAwD;IACxD,MAAM,SAAS,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvB,SAAS,CAAC,OAAO,GAAG,kBAAkB,CAAC;YACrC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,4BAA4B;YAChE,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;IAEjC,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,KAA+B,EAA2B,EAAE,CAAC,CAAC;QAC7D,UAAU,EAAE,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QAChF,UAAU,EAAE,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC9E,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,KAAK;KACT,CAAC,EACF,CAAC,OAAO,CAAC,MAAM,CAAC,CACjB,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,KAAc,EAAE,OAAiC,EAAU,EAAE;QAC5D,MAAM,aAAa,GAAG,
|
|
1
|
+
{"version":3,"file":"useErrorReporter.js","sourceRoot":"","sources":["../../../src/ui/hooks/useErrorReporter.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/server.d.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Server-side UI exports for hazo_logs
|
|
3
3
|
*
|
|
4
|
-
* ⚠️ SERVER-ONLY: This module uses Node.js APIs and CANNOT be
|
|
5
|
-
* imported in
|
|
4
|
+
* ⚠️ SERVER-ONLY: This module uses Node.js APIs (fs, path, etc.) and CANNOT be
|
|
5
|
+
* imported in Client Components. Importing from a Client Component will
|
|
6
|
+
* fail at bundle/runtime when the handlers reach for `fs` or `path`.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
+
* We intentionally do NOT `import 'server-only'` here because Next 15's
|
|
9
|
+
* "Collecting page data" build phase loads `route.ts` modules without
|
|
10
|
+
* setting the `react-server` resolution condition. With the marker in
|
|
11
|
+
* place, every consumer's `app/api/logs/route.ts` (which legitimately
|
|
12
|
+
* imports from this barrel) breaks the production build. The runtime
|
|
13
|
+
* failure mode for a real Client Component import is still loud enough
|
|
14
|
+
* — losing fail-fast at module load is the right tradeoff.
|
|
8
15
|
*/
|
|
9
|
-
import 'server-only';
|
|
10
16
|
export { createLogApiHandler } from './api/log-api-handler.js';
|
|
11
17
|
export { createClientLogHandler } from './api/client-log-handler.js';
|
|
12
18
|
export { createLogStreamApiHandler } from './api/log-stream-api-handler.js';
|
package/dist/ui/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/ui/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,YAAY,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5D,YAAY,EACV,YAAY,EACZ,aAAa,EACb,WAAW,GACZ,MAAM,YAAY,CAAC"}
|
package/dist/ui/server.js
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Server-side UI exports for hazo_logs
|
|
3
3
|
*
|
|
4
|
-
* ⚠️ SERVER-ONLY: This module uses Node.js APIs and CANNOT be
|
|
5
|
-
* imported in
|
|
4
|
+
* ⚠️ SERVER-ONLY: This module uses Node.js APIs (fs, path, etc.) and CANNOT be
|
|
5
|
+
* imported in Client Components. Importing from a Client Component will
|
|
6
|
+
* fail at bundle/runtime when the handlers reach for `fs` or `path`.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
+
* We intentionally do NOT `import 'server-only'` here because Next 15's
|
|
9
|
+
* "Collecting page data" build phase loads `route.ts` modules without
|
|
10
|
+
* setting the `react-server` resolution condition. With the marker in
|
|
11
|
+
* place, every consumer's `app/api/logs/route.ts` (which legitimately
|
|
12
|
+
* imports from this barrel) breaks the production build. The runtime
|
|
13
|
+
* failure mode for a real Client Component import is still loud enough
|
|
14
|
+
* — losing fail-fast at module load is the right tradeoff.
|
|
8
15
|
*/
|
|
9
|
-
import 'server-only';
|
|
10
16
|
// API Handlers
|
|
11
17
|
export { createLogApiHandler } from './api/log-api-handler.js';
|
|
12
18
|
export { createClientLogHandler } from './api/client-log-handler.js';
|