@justanalyticsapp/node 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +286 -0
- package/dist/client.js +681 -0
- package/dist/client.js.map +1 -0
- package/dist/context.d.ts +126 -0
- package/dist/context.js +170 -0
- package/dist/context.js.map +1 -0
- package/dist/errors.d.ts +135 -0
- package/dist/errors.js +180 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +301 -0
- package/dist/index.js +314 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/express.d.ts +77 -0
- package/dist/integrations/express.js +87 -0
- package/dist/integrations/express.js.map +1 -0
- package/dist/integrations/http.d.ts +129 -0
- package/dist/integrations/http.js +465 -0
- package/dist/integrations/http.js.map +1 -0
- package/dist/integrations/metrics.d.ts +110 -0
- package/dist/integrations/metrics.js +313 -0
- package/dist/integrations/metrics.js.map +1 -0
- package/dist/integrations/next.d.ts +252 -0
- package/dist/integrations/next.js +480 -0
- package/dist/integrations/next.js.map +1 -0
- package/dist/integrations/pg.d.ts +169 -0
- package/dist/integrations/pg.js +616 -0
- package/dist/integrations/pg.js.map +1 -0
- package/dist/integrations/pino.d.ts +52 -0
- package/dist/integrations/pino.js +153 -0
- package/dist/integrations/pino.js.map +1 -0
- package/dist/integrations/redis.d.ts +190 -0
- package/dist/integrations/redis.js +597 -0
- package/dist/integrations/redis.js.map +1 -0
- package/dist/integrations/winston.d.ts +48 -0
- package/dist/integrations/winston.js +99 -0
- package/dist/integrations/winston.js.map +1 -0
- package/dist/logger.d.ts +148 -0
- package/dist/logger.js +162 -0
- package/dist/logger.js.map +1 -0
- package/dist/span.d.ts +192 -0
- package/dist/span.js +197 -0
- package/dist/span.js.map +1 -0
- package/dist/transport.d.ts +246 -0
- package/dist/transport.js +654 -0
- package/dist/transport.js.map +1 -0
- package/dist/utils/headers.d.ts +60 -0
- package/dist/utils/headers.js +93 -0
- package/dist/utils/headers.js.map +1 -0
- package/dist/utils/id.d.ts +23 -0
- package/dist/utils/id.js +36 -0
- package/dist/utils/id.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/node-sdk/src/context.ts
|
|
3
|
+
* @description AsyncLocalStorage-based context propagation for distributed tracing.
|
|
4
|
+
*
|
|
5
|
+
* Implements Story 035 - Node.js SDK Core
|
|
6
|
+
*
|
|
7
|
+
* Uses Node.js built-in `AsyncLocalStorage` to automatically propagate trace
|
|
8
|
+
* context across async boundaries (async/await, Promise.then, setTimeout,
|
|
9
|
+
* setInterval, EventEmitter callbacks).
|
|
10
|
+
*
|
|
11
|
+
* Context uses copy-on-write semantics: mutations via `setTag()` or `setUser()`
|
|
12
|
+
* inside a nested scope create a shallow copy, preventing leaks to the outer scope.
|
|
13
|
+
*
|
|
14
|
+
* A single `AsyncLocalStorage<TraceContext>` instance is created at module load
|
|
15
|
+
* time. Each `startSpan()` call invokes `asyncLocalStorage.run()` to establish
|
|
16
|
+
* a new scope with the span as the active span.
|
|
17
|
+
*
|
|
18
|
+
* References:
|
|
19
|
+
* - Node.js async_hooks documentation (AsyncLocalStorage)
|
|
20
|
+
* - OpenTelemetry context propagation patterns
|
|
21
|
+
*/
|
|
22
|
+
import { Span } from './span';
|
|
23
|
+
/** User context set via JA.setUser() */
|
|
24
|
+
export interface UserContext {
|
|
25
|
+
/** User ID */
|
|
26
|
+
id?: string;
|
|
27
|
+
/** User email */
|
|
28
|
+
email?: string;
|
|
29
|
+
/** Username */
|
|
30
|
+
username?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Trace context stored in AsyncLocalStorage.
|
|
34
|
+
*
|
|
35
|
+
* Each async scope may have its own context. Nested scopes inherit from
|
|
36
|
+
* the parent but can override via copy-on-write semantics.
|
|
37
|
+
*/
|
|
38
|
+
export interface TraceContext {
|
|
39
|
+
/** Currently active span (innermost) */
|
|
40
|
+
activeSpan: Span | null;
|
|
41
|
+
/** Current trace ID */
|
|
42
|
+
traceId: string | null;
|
|
43
|
+
/** User context set via JA.setUser() */
|
|
44
|
+
user: UserContext | null;
|
|
45
|
+
/** Tags set via JA.setTag() -- attached as attributes to new spans */
|
|
46
|
+
tags: Record<string, string>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Run a function within a new trace context scope.
|
|
50
|
+
*
|
|
51
|
+
* The callback runs inside `asyncLocalStorage.run()` with the provided
|
|
52
|
+
* context. The context is automatically available to all async operations
|
|
53
|
+
* within the callback via `getActiveContext()`.
|
|
54
|
+
*
|
|
55
|
+
* @param context - The trace context for this scope
|
|
56
|
+
* @param fn - The function to run within the context
|
|
57
|
+
* @returns The return value of `fn`
|
|
58
|
+
*/
|
|
59
|
+
export declare function runWithContext<T>(context: TraceContext, fn: () => T): T;
|
|
60
|
+
/**
|
|
61
|
+
* Get the current trace context from AsyncLocalStorage.
|
|
62
|
+
*
|
|
63
|
+
* Returns `undefined` if called outside of any traced context.
|
|
64
|
+
*
|
|
65
|
+
* @returns The current TraceContext, or undefined if none exists
|
|
66
|
+
*/
|
|
67
|
+
export declare function getActiveContext(): TraceContext | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Get the currently active span from the AsyncLocalStorage context.
|
|
70
|
+
*
|
|
71
|
+
* @returns The active Span, or null if not in a traced context
|
|
72
|
+
*/
|
|
73
|
+
export declare function getActiveSpan(): Span | null;
|
|
74
|
+
/**
|
|
75
|
+
* Get the current trace ID from the AsyncLocalStorage context.
|
|
76
|
+
*
|
|
77
|
+
* @returns The trace ID string, or null if not in a traced context
|
|
78
|
+
*/
|
|
79
|
+
export declare function getActiveTraceId(): string | null;
|
|
80
|
+
/**
|
|
81
|
+
* Get the current user context from the AsyncLocalStorage context.
|
|
82
|
+
*
|
|
83
|
+
* @returns The UserContext, or null if not set
|
|
84
|
+
*/
|
|
85
|
+
export declare function getUser(): UserContext | null;
|
|
86
|
+
/**
|
|
87
|
+
* Get the current tags from the AsyncLocalStorage context.
|
|
88
|
+
*
|
|
89
|
+
* @returns A copy of the current tags, or an empty object if not in context
|
|
90
|
+
*/
|
|
91
|
+
export declare function getTags(): Record<string, string>;
|
|
92
|
+
/**
|
|
93
|
+
* Set user context on the current AsyncLocalStorage scope.
|
|
94
|
+
*
|
|
95
|
+
* Uses copy-on-write: creates a new context object derived from the current
|
|
96
|
+
* one, so mutations do not leak to parent scopes.
|
|
97
|
+
*
|
|
98
|
+
* If called outside of a traced context, this is a no-op.
|
|
99
|
+
*
|
|
100
|
+
* @param user - User context to set
|
|
101
|
+
*/
|
|
102
|
+
export declare function setUserInContext(user: UserContext): void;
|
|
103
|
+
/**
|
|
104
|
+
* Set a tag on the current AsyncLocalStorage scope.
|
|
105
|
+
*
|
|
106
|
+
* Tags are attached as attributes to all new spans created within this scope.
|
|
107
|
+
*
|
|
108
|
+
* Uses copy-on-write: creates a shallow copy of the tags object, so mutations
|
|
109
|
+
* do not leak to parent scopes.
|
|
110
|
+
*
|
|
111
|
+
* If called outside of a traced context, this is a no-op.
|
|
112
|
+
*
|
|
113
|
+
* @param key - Tag key
|
|
114
|
+
* @param value - Tag value
|
|
115
|
+
*/
|
|
116
|
+
export declare function setTagInContext(key: string, value: string): void;
|
|
117
|
+
/**
|
|
118
|
+
* Create a child context from the current context.
|
|
119
|
+
*
|
|
120
|
+
* The child inherits all fields from the parent but gets its own shallow
|
|
121
|
+
* copies of tags, ensuring copy-on-write semantics for nested scopes.
|
|
122
|
+
*
|
|
123
|
+
* @param overrides - Fields to override in the child context
|
|
124
|
+
* @returns A new TraceContext derived from the current context
|
|
125
|
+
*/
|
|
126
|
+
export declare function createChildContext(overrides: Partial<TraceContext>): TraceContext;
|
package/dist/context.js
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file packages/node-sdk/src/context.ts
|
|
4
|
+
* @description AsyncLocalStorage-based context propagation for distributed tracing.
|
|
5
|
+
*
|
|
6
|
+
* Implements Story 035 - Node.js SDK Core
|
|
7
|
+
*
|
|
8
|
+
* Uses Node.js built-in `AsyncLocalStorage` to automatically propagate trace
|
|
9
|
+
* context across async boundaries (async/await, Promise.then, setTimeout,
|
|
10
|
+
* setInterval, EventEmitter callbacks).
|
|
11
|
+
*
|
|
12
|
+
* Context uses copy-on-write semantics: mutations via `setTag()` or `setUser()`
|
|
13
|
+
* inside a nested scope create a shallow copy, preventing leaks to the outer scope.
|
|
14
|
+
*
|
|
15
|
+
* A single `AsyncLocalStorage<TraceContext>` instance is created at module load
|
|
16
|
+
* time. Each `startSpan()` call invokes `asyncLocalStorage.run()` to establish
|
|
17
|
+
* a new scope with the span as the active span.
|
|
18
|
+
*
|
|
19
|
+
* References:
|
|
20
|
+
* - Node.js async_hooks documentation (AsyncLocalStorage)
|
|
21
|
+
* - OpenTelemetry context propagation patterns
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.runWithContext = runWithContext;
|
|
25
|
+
exports.getActiveContext = getActiveContext;
|
|
26
|
+
exports.getActiveSpan = getActiveSpan;
|
|
27
|
+
exports.getActiveTraceId = getActiveTraceId;
|
|
28
|
+
exports.getUser = getUser;
|
|
29
|
+
exports.getTags = getTags;
|
|
30
|
+
exports.setUserInContext = setUserInContext;
|
|
31
|
+
exports.setTagInContext = setTagInContext;
|
|
32
|
+
exports.createChildContext = createChildContext;
|
|
33
|
+
const async_hooks_1 = require("async_hooks");
|
|
34
|
+
/**
|
|
35
|
+
* Global AsyncLocalStorage instance for trace context propagation.
|
|
36
|
+
*
|
|
37
|
+
* Created once at module load time. All context operations use this
|
|
38
|
+
* single instance.
|
|
39
|
+
*/
|
|
40
|
+
const asyncLocalStorage = new async_hooks_1.AsyncLocalStorage();
|
|
41
|
+
/**
|
|
42
|
+
* Create a default (empty) trace context.
|
|
43
|
+
*
|
|
44
|
+
* @returns A new TraceContext with all fields set to their defaults
|
|
45
|
+
*/
|
|
46
|
+
function createDefaultContext() {
|
|
47
|
+
return {
|
|
48
|
+
activeSpan: null,
|
|
49
|
+
traceId: null,
|
|
50
|
+
user: null,
|
|
51
|
+
tags: {},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Run a function within a new trace context scope.
|
|
56
|
+
*
|
|
57
|
+
* The callback runs inside `asyncLocalStorage.run()` with the provided
|
|
58
|
+
* context. The context is automatically available to all async operations
|
|
59
|
+
* within the callback via `getActiveContext()`.
|
|
60
|
+
*
|
|
61
|
+
* @param context - The trace context for this scope
|
|
62
|
+
* @param fn - The function to run within the context
|
|
63
|
+
* @returns The return value of `fn`
|
|
64
|
+
*/
|
|
65
|
+
function runWithContext(context, fn) {
|
|
66
|
+
return asyncLocalStorage.run(context, fn);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get the current trace context from AsyncLocalStorage.
|
|
70
|
+
*
|
|
71
|
+
* Returns `undefined` if called outside of any traced context.
|
|
72
|
+
*
|
|
73
|
+
* @returns The current TraceContext, or undefined if none exists
|
|
74
|
+
*/
|
|
75
|
+
function getActiveContext() {
|
|
76
|
+
return asyncLocalStorage.getStore();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get the currently active span from the AsyncLocalStorage context.
|
|
80
|
+
*
|
|
81
|
+
* @returns The active Span, or null if not in a traced context
|
|
82
|
+
*/
|
|
83
|
+
function getActiveSpan() {
|
|
84
|
+
const ctx = asyncLocalStorage.getStore();
|
|
85
|
+
return ctx?.activeSpan ?? null;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get the current trace ID from the AsyncLocalStorage context.
|
|
89
|
+
*
|
|
90
|
+
* @returns The trace ID string, or null if not in a traced context
|
|
91
|
+
*/
|
|
92
|
+
function getActiveTraceId() {
|
|
93
|
+
const ctx = asyncLocalStorage.getStore();
|
|
94
|
+
return ctx?.traceId ?? null;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get the current user context from the AsyncLocalStorage context.
|
|
98
|
+
*
|
|
99
|
+
* @returns The UserContext, or null if not set
|
|
100
|
+
*/
|
|
101
|
+
function getUser() {
|
|
102
|
+
const ctx = asyncLocalStorage.getStore();
|
|
103
|
+
return ctx?.user ?? null;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get the current tags from the AsyncLocalStorage context.
|
|
107
|
+
*
|
|
108
|
+
* @returns A copy of the current tags, or an empty object if not in context
|
|
109
|
+
*/
|
|
110
|
+
function getTags() {
|
|
111
|
+
const ctx = asyncLocalStorage.getStore();
|
|
112
|
+
return ctx ? { ...ctx.tags } : {};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Set user context on the current AsyncLocalStorage scope.
|
|
116
|
+
*
|
|
117
|
+
* Uses copy-on-write: creates a new context object derived from the current
|
|
118
|
+
* one, so mutations do not leak to parent scopes.
|
|
119
|
+
*
|
|
120
|
+
* If called outside of a traced context, this is a no-op.
|
|
121
|
+
*
|
|
122
|
+
* @param user - User context to set
|
|
123
|
+
*/
|
|
124
|
+
function setUserInContext(user) {
|
|
125
|
+
const ctx = asyncLocalStorage.getStore();
|
|
126
|
+
if (!ctx)
|
|
127
|
+
return;
|
|
128
|
+
// Copy-on-write: mutate only the current store reference
|
|
129
|
+
ctx.user = user;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Set a tag on the current AsyncLocalStorage scope.
|
|
133
|
+
*
|
|
134
|
+
* Tags are attached as attributes to all new spans created within this scope.
|
|
135
|
+
*
|
|
136
|
+
* Uses copy-on-write: creates a shallow copy of the tags object, so mutations
|
|
137
|
+
* do not leak to parent scopes.
|
|
138
|
+
*
|
|
139
|
+
* If called outside of a traced context, this is a no-op.
|
|
140
|
+
*
|
|
141
|
+
* @param key - Tag key
|
|
142
|
+
* @param value - Tag value
|
|
143
|
+
*/
|
|
144
|
+
function setTagInContext(key, value) {
|
|
145
|
+
const ctx = asyncLocalStorage.getStore();
|
|
146
|
+
if (!ctx)
|
|
147
|
+
return;
|
|
148
|
+
// Copy-on-write: create new tags object so parent scope is unaffected
|
|
149
|
+
ctx.tags = { ...ctx.tags, [key]: value };
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Create a child context from the current context.
|
|
153
|
+
*
|
|
154
|
+
* The child inherits all fields from the parent but gets its own shallow
|
|
155
|
+
* copies of tags, ensuring copy-on-write semantics for nested scopes.
|
|
156
|
+
*
|
|
157
|
+
* @param overrides - Fields to override in the child context
|
|
158
|
+
* @returns A new TraceContext derived from the current context
|
|
159
|
+
*/
|
|
160
|
+
function createChildContext(overrides) {
|
|
161
|
+
const parent = asyncLocalStorage.getStore() || createDefaultContext();
|
|
162
|
+
return {
|
|
163
|
+
activeSpan: overrides.activeSpan ?? parent.activeSpan,
|
|
164
|
+
traceId: overrides.traceId ?? parent.traceId,
|
|
165
|
+
user: overrides.user !== undefined ? overrides.user : parent.user,
|
|
166
|
+
// Shallow copy tags so child mutations don't leak to parent
|
|
167
|
+
tags: { ...parent.tags, ...(overrides.tags || {}) },
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file packages/node-sdk/src/errors.ts
|
|
3
|
+
* @description Error capture, serialization, and payload construction for server-side error tracking.
|
|
4
|
+
*
|
|
5
|
+
* Implements Story 041 - Server-Side Error Tracking via SDK
|
|
6
|
+
*
|
|
7
|
+
* This module provides:
|
|
8
|
+
* - `serializeError(value)` - extract message, type, stack from Error objects; handle non-Error values
|
|
9
|
+
* - `buildErrorPayload(...)` - build full payload with auto-attached traceId/spanId/user/tags from AsyncLocalStorage
|
|
10
|
+
* - `generateEventId()` - unique event ID generation
|
|
11
|
+
* - `CaptureOptions` and `ServerErrorPayload` interfaces
|
|
12
|
+
*
|
|
13
|
+
* Error serialization rules:
|
|
14
|
+
* 1. Error instances: extract message, name (as type), stack
|
|
15
|
+
* 2. String values: use as message with type 'Error'
|
|
16
|
+
* 3. Any other type: coerce to string via String(value)
|
|
17
|
+
* 4. Cause chains: extract up to 3 levels, guard against circular references
|
|
18
|
+
*
|
|
19
|
+
* References:
|
|
20
|
+
* - packages/node-sdk/src/context.ts (getActiveSpan, getUser, getTags)
|
|
21
|
+
* - packages/node-sdk/src/utils/id.ts (ID generation pattern)
|
|
22
|
+
* - src/app/api/monitor/errors/route.ts (fingerprinting pattern)
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Options for captureException() and captureMessage().
|
|
26
|
+
*/
|
|
27
|
+
export interface CaptureOptions {
|
|
28
|
+
/** Additional tags to attach to the error event (merged with context tags) */
|
|
29
|
+
tags?: Record<string, string>;
|
|
30
|
+
/** Arbitrary extra data to attach to the error event */
|
|
31
|
+
extra?: Record<string, unknown>;
|
|
32
|
+
/** User context to override the current AsyncLocalStorage user */
|
|
33
|
+
user?: {
|
|
34
|
+
id?: string;
|
|
35
|
+
email?: string;
|
|
36
|
+
username?: string;
|
|
37
|
+
};
|
|
38
|
+
/** Severity level (default: 'error' for captureException, 'info' for captureMessage) */
|
|
39
|
+
level?: 'debug' | 'info' | 'warning' | 'error' | 'fatal';
|
|
40
|
+
/** Custom fingerprint for grouping (overrides automatic fingerprinting) */
|
|
41
|
+
fingerprint?: string[];
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Payload sent to POST /api/ingest/errors from the SDK.
|
|
45
|
+
*/
|
|
46
|
+
export interface ServerErrorPayload {
|
|
47
|
+
/** Unique event ID generated by SDK */
|
|
48
|
+
eventId: string;
|
|
49
|
+
/** ISO 8601 timestamp */
|
|
50
|
+
timestamp: string;
|
|
51
|
+
/** Error details */
|
|
52
|
+
error: {
|
|
53
|
+
message: string;
|
|
54
|
+
type: string;
|
|
55
|
+
stack: string | null;
|
|
56
|
+
};
|
|
57
|
+
/** Severity level */
|
|
58
|
+
level: 'debug' | 'info' | 'warning' | 'error' | 'fatal';
|
|
59
|
+
/** Error mechanism */
|
|
60
|
+
mechanism: {
|
|
61
|
+
type: 'manual' | 'uncaughtException' | 'unhandledRejection';
|
|
62
|
+
handled: boolean;
|
|
63
|
+
};
|
|
64
|
+
/** Service and environment context */
|
|
65
|
+
context: {
|
|
66
|
+
serviceName: string;
|
|
67
|
+
environment: string | null;
|
|
68
|
+
release: string | null;
|
|
69
|
+
runtime: 'node';
|
|
70
|
+
nodeVersion: string;
|
|
71
|
+
};
|
|
72
|
+
/** Trace linkage (from AsyncLocalStorage) */
|
|
73
|
+
trace: {
|
|
74
|
+
traceId: string | null;
|
|
75
|
+
spanId: string | null;
|
|
76
|
+
} | null;
|
|
77
|
+
/** User context */
|
|
78
|
+
user: {
|
|
79
|
+
id?: string;
|
|
80
|
+
email?: string;
|
|
81
|
+
username?: string;
|
|
82
|
+
} | null;
|
|
83
|
+
/** Tags (merged from context + options) */
|
|
84
|
+
tags: Record<string, string> | null;
|
|
85
|
+
/** Extra data */
|
|
86
|
+
extra: Record<string, unknown> | null;
|
|
87
|
+
/** Custom fingerprint (if provided) */
|
|
88
|
+
fingerprint: string[] | null;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Serialize an Error (or non-Error value) into the error payload shape.
|
|
92
|
+
*
|
|
93
|
+
* Rules:
|
|
94
|
+
* 1. If value is an Error instance, extract message, name (as type), stack
|
|
95
|
+
* 2. If value is a string, use it as message with type 'Error'
|
|
96
|
+
* 3. For any other type, coerce to string via String(value)
|
|
97
|
+
* 4. Extract `cause` chain up to 3 levels, guarding against circular references
|
|
98
|
+
*
|
|
99
|
+
* @param value - The error or value to serialize
|
|
100
|
+
* @returns { error: { message, type, stack }, causeChain } + cause chain in extra
|
|
101
|
+
*/
|
|
102
|
+
export declare function serializeError(value: unknown): {
|
|
103
|
+
error: {
|
|
104
|
+
message: string;
|
|
105
|
+
type: string;
|
|
106
|
+
stack: string | null;
|
|
107
|
+
};
|
|
108
|
+
causeChain: unknown[] | null;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Build a complete ServerErrorPayload from an error value and options.
|
|
112
|
+
*
|
|
113
|
+
* Automatically attaches:
|
|
114
|
+
* - traceId/spanId from AsyncLocalStorage context
|
|
115
|
+
* - user from AsyncLocalStorage context (overridden by options.user)
|
|
116
|
+
* - tags from AsyncLocalStorage context (merged with options.tags)
|
|
117
|
+
*
|
|
118
|
+
* @param value - Error object or other value to capture
|
|
119
|
+
* @param options - CaptureOptions with tags, extra, user, level, fingerprint
|
|
120
|
+
* @param mechanismType - How the error was captured
|
|
121
|
+
* @param handled - Whether the error was handled
|
|
122
|
+
* @param serviceName - Service name from SDK config
|
|
123
|
+
* @param environment - Environment from SDK config
|
|
124
|
+
* @param release - Release from SDK config
|
|
125
|
+
* @param defaultLevel - Default severity level
|
|
126
|
+
* @returns The serialized payload ready for transport
|
|
127
|
+
*/
|
|
128
|
+
export declare function buildErrorPayload(value: unknown, options: CaptureOptions | undefined, mechanismType: 'manual' | 'uncaughtException' | 'unhandledRejection', handled: boolean, serviceName: string, environment: string | undefined, release: string | undefined, defaultLevel: 'debug' | 'info' | 'warning' | 'error' | 'fatal'): ServerErrorPayload;
|
|
129
|
+
/**
|
|
130
|
+
* Generate a unique event ID (24-char hex string).
|
|
131
|
+
* Uses crypto.randomBytes(12) for 96 bits of cryptographic randomness.
|
|
132
|
+
*
|
|
133
|
+
* @returns 24-character lowercase hex string
|
|
134
|
+
*/
|
|
135
|
+
export declare function generateEventId(): string;
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file packages/node-sdk/src/errors.ts
|
|
4
|
+
* @description Error capture, serialization, and payload construction for server-side error tracking.
|
|
5
|
+
*
|
|
6
|
+
* Implements Story 041 - Server-Side Error Tracking via SDK
|
|
7
|
+
*
|
|
8
|
+
* This module provides:
|
|
9
|
+
* - `serializeError(value)` - extract message, type, stack from Error objects; handle non-Error values
|
|
10
|
+
* - `buildErrorPayload(...)` - build full payload with auto-attached traceId/spanId/user/tags from AsyncLocalStorage
|
|
11
|
+
* - `generateEventId()` - unique event ID generation
|
|
12
|
+
* - `CaptureOptions` and `ServerErrorPayload` interfaces
|
|
13
|
+
*
|
|
14
|
+
* Error serialization rules:
|
|
15
|
+
* 1. Error instances: extract message, name (as type), stack
|
|
16
|
+
* 2. String values: use as message with type 'Error'
|
|
17
|
+
* 3. Any other type: coerce to string via String(value)
|
|
18
|
+
* 4. Cause chains: extract up to 3 levels, guard against circular references
|
|
19
|
+
*
|
|
20
|
+
* References:
|
|
21
|
+
* - packages/node-sdk/src/context.ts (getActiveSpan, getUser, getTags)
|
|
22
|
+
* - packages/node-sdk/src/utils/id.ts (ID generation pattern)
|
|
23
|
+
* - src/app/api/monitor/errors/route.ts (fingerprinting pattern)
|
|
24
|
+
*/
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.serializeError = serializeError;
|
|
30
|
+
exports.buildErrorPayload = buildErrorPayload;
|
|
31
|
+
exports.generateEventId = generateEventId;
|
|
32
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
33
|
+
const context_1 = require("./context");
|
|
34
|
+
/**
|
|
35
|
+
* Serialize an Error (or non-Error value) into the error payload shape.
|
|
36
|
+
*
|
|
37
|
+
* Rules:
|
|
38
|
+
* 1. If value is an Error instance, extract message, name (as type), stack
|
|
39
|
+
* 2. If value is a string, use it as message with type 'Error'
|
|
40
|
+
* 3. For any other type, coerce to string via String(value)
|
|
41
|
+
* 4. Extract `cause` chain up to 3 levels, guarding against circular references
|
|
42
|
+
*
|
|
43
|
+
* @param value - The error or value to serialize
|
|
44
|
+
* @returns { error: { message, type, stack }, causeChain } + cause chain in extra
|
|
45
|
+
*/
|
|
46
|
+
function serializeError(value) {
|
|
47
|
+
if (value instanceof Error) {
|
|
48
|
+
const causeChain = extractCauseChain(value, 3);
|
|
49
|
+
return {
|
|
50
|
+
error: {
|
|
51
|
+
message: value.message || String(value),
|
|
52
|
+
type: value.name || 'Error',
|
|
53
|
+
stack: value.stack || null,
|
|
54
|
+
},
|
|
55
|
+
causeChain: causeChain.length > 0 ? causeChain : null,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (typeof value === 'string') {
|
|
59
|
+
return {
|
|
60
|
+
error: { message: value, type: 'Error', stack: null },
|
|
61
|
+
causeChain: null,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
error: { message: String(value), type: 'Error', stack: null },
|
|
66
|
+
causeChain: null,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Extract the cause chain from an Error, up to maxDepth levels.
|
|
71
|
+
* Guards against circular references using a WeakSet.
|
|
72
|
+
*
|
|
73
|
+
* @param error - The root error to extract causes from
|
|
74
|
+
* @param maxDepth - Maximum depth to traverse (default: 3)
|
|
75
|
+
* @returns Array of serialized cause objects or '[Circular]' strings
|
|
76
|
+
*/
|
|
77
|
+
function extractCauseChain(error, maxDepth) {
|
|
78
|
+
const chain = [];
|
|
79
|
+
const seen = new WeakSet();
|
|
80
|
+
seen.add(error);
|
|
81
|
+
let current = error.cause;
|
|
82
|
+
for (let i = 0; i < maxDepth && current != null; i++) {
|
|
83
|
+
if (current instanceof Error) {
|
|
84
|
+
if (seen.has(current)) {
|
|
85
|
+
chain.push('[Circular]');
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
seen.add(current);
|
|
89
|
+
chain.push({
|
|
90
|
+
message: current.message,
|
|
91
|
+
type: current.name,
|
|
92
|
+
stack: current.stack || null,
|
|
93
|
+
});
|
|
94
|
+
current = current.cause;
|
|
95
|
+
}
|
|
96
|
+
else if (typeof current === 'object' && current !== null) {
|
|
97
|
+
if (seen.has(current)) {
|
|
98
|
+
chain.push('[Circular]');
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
seen.add(current);
|
|
102
|
+
chain.push(String(current));
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
chain.push(String(current));
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return chain;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Build a complete ServerErrorPayload from an error value and options.
|
|
114
|
+
*
|
|
115
|
+
* Automatically attaches:
|
|
116
|
+
* - traceId/spanId from AsyncLocalStorage context
|
|
117
|
+
* - user from AsyncLocalStorage context (overridden by options.user)
|
|
118
|
+
* - tags from AsyncLocalStorage context (merged with options.tags)
|
|
119
|
+
*
|
|
120
|
+
* @param value - Error object or other value to capture
|
|
121
|
+
* @param options - CaptureOptions with tags, extra, user, level, fingerprint
|
|
122
|
+
* @param mechanismType - How the error was captured
|
|
123
|
+
* @param handled - Whether the error was handled
|
|
124
|
+
* @param serviceName - Service name from SDK config
|
|
125
|
+
* @param environment - Environment from SDK config
|
|
126
|
+
* @param release - Release from SDK config
|
|
127
|
+
* @param defaultLevel - Default severity level
|
|
128
|
+
* @returns The serialized payload ready for transport
|
|
129
|
+
*/
|
|
130
|
+
function buildErrorPayload(value, options, mechanismType, handled, serviceName, environment, release, defaultLevel) {
|
|
131
|
+
const { error, causeChain } = serializeError(value);
|
|
132
|
+
// Get trace context from AsyncLocalStorage
|
|
133
|
+
const activeSpan = (0, context_1.getActiveSpan)();
|
|
134
|
+
const traceId = activeSpan?.traceId ?? null;
|
|
135
|
+
const spanId = activeSpan?.id ?? null;
|
|
136
|
+
// Get user context (options override context)
|
|
137
|
+
const contextUser = (0, context_1.getUser)();
|
|
138
|
+
const user = options?.user || contextUser || null;
|
|
139
|
+
// Merge context tags with option tags (option tags take precedence)
|
|
140
|
+
const contextTags = (0, context_1.getTags)();
|
|
141
|
+
const mergedTags = { ...contextTags, ...(options?.tags || {}) };
|
|
142
|
+
// Merge extra with cause chain
|
|
143
|
+
const extra = { ...(options?.extra || {}) };
|
|
144
|
+
if (causeChain) {
|
|
145
|
+
extra['error.cause'] = causeChain;
|
|
146
|
+
}
|
|
147
|
+
const eventId = generateEventId();
|
|
148
|
+
return {
|
|
149
|
+
eventId,
|
|
150
|
+
timestamp: new Date().toISOString(),
|
|
151
|
+
error,
|
|
152
|
+
level: options?.level || defaultLevel,
|
|
153
|
+
mechanism: {
|
|
154
|
+
type: mechanismType,
|
|
155
|
+
handled,
|
|
156
|
+
},
|
|
157
|
+
context: {
|
|
158
|
+
serviceName,
|
|
159
|
+
environment: environment || null,
|
|
160
|
+
release: release || null,
|
|
161
|
+
runtime: 'node',
|
|
162
|
+
nodeVersion: process.version,
|
|
163
|
+
},
|
|
164
|
+
trace: traceId ? { traceId, spanId } : null,
|
|
165
|
+
user: user && (user.id || user.email || user.username) ? user : null,
|
|
166
|
+
tags: Object.keys(mergedTags).length > 0 ? mergedTags : null,
|
|
167
|
+
extra: Object.keys(extra).length > 0 ? extra : null,
|
|
168
|
+
fingerprint: options?.fingerprint || null,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Generate a unique event ID (24-char hex string).
|
|
173
|
+
* Uses crypto.randomBytes(12) for 96 bits of cryptographic randomness.
|
|
174
|
+
*
|
|
175
|
+
* @returns 24-character lowercase hex string
|
|
176
|
+
*/
|
|
177
|
+
function generateEventId() {
|
|
178
|
+
return crypto_1.default.randomBytes(12).toString('hex');
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|