@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.
Files changed (52) hide show
  1. package/dist/client.d.ts +286 -0
  2. package/dist/client.js +681 -0
  3. package/dist/client.js.map +1 -0
  4. package/dist/context.d.ts +126 -0
  5. package/dist/context.js +170 -0
  6. package/dist/context.js.map +1 -0
  7. package/dist/errors.d.ts +135 -0
  8. package/dist/errors.js +180 -0
  9. package/dist/errors.js.map +1 -0
  10. package/dist/index.d.ts +301 -0
  11. package/dist/index.js +314 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/integrations/express.d.ts +77 -0
  14. package/dist/integrations/express.js +87 -0
  15. package/dist/integrations/express.js.map +1 -0
  16. package/dist/integrations/http.d.ts +129 -0
  17. package/dist/integrations/http.js +465 -0
  18. package/dist/integrations/http.js.map +1 -0
  19. package/dist/integrations/metrics.d.ts +110 -0
  20. package/dist/integrations/metrics.js +313 -0
  21. package/dist/integrations/metrics.js.map +1 -0
  22. package/dist/integrations/next.d.ts +252 -0
  23. package/dist/integrations/next.js +480 -0
  24. package/dist/integrations/next.js.map +1 -0
  25. package/dist/integrations/pg.d.ts +169 -0
  26. package/dist/integrations/pg.js +616 -0
  27. package/dist/integrations/pg.js.map +1 -0
  28. package/dist/integrations/pino.d.ts +52 -0
  29. package/dist/integrations/pino.js +153 -0
  30. package/dist/integrations/pino.js.map +1 -0
  31. package/dist/integrations/redis.d.ts +190 -0
  32. package/dist/integrations/redis.js +597 -0
  33. package/dist/integrations/redis.js.map +1 -0
  34. package/dist/integrations/winston.d.ts +48 -0
  35. package/dist/integrations/winston.js +99 -0
  36. package/dist/integrations/winston.js.map +1 -0
  37. package/dist/logger.d.ts +148 -0
  38. package/dist/logger.js +162 -0
  39. package/dist/logger.js.map +1 -0
  40. package/dist/span.d.ts +192 -0
  41. package/dist/span.js +197 -0
  42. package/dist/span.js.map +1 -0
  43. package/dist/transport.d.ts +246 -0
  44. package/dist/transport.js +654 -0
  45. package/dist/transport.js.map +1 -0
  46. package/dist/utils/headers.d.ts +60 -0
  47. package/dist/utils/headers.js +93 -0
  48. package/dist/utils/headers.js.map +1 -0
  49. package/dist/utils/id.d.ts +23 -0
  50. package/dist/utils/id.js +36 -0
  51. package/dist/utils/id.js.map +1 -0
  52. 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;
@@ -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":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAiEH,wCAEC;AASD,4CAEC;AAOD,sCAGC;AAOD,4CAGC;AAOD,0BAGC;AAOD,0BAGC;AAYD,4CAMC;AAeD,0CAMC;AAWD,gDASC;AA/KD,6CAAgD;AA8BhD;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,IAAI,+BAAiB,EAAgB,CAAC;AAEhE;;;;GAIG;AACH,SAAS,oBAAoB;IAC3B,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,EAAE;KACT,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,cAAc,CAAI,OAAqB,EAAE,EAAW;IAClE,OAAO,iBAAiB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB;IAC9B,OAAO,iBAAiB,CAAC,QAAQ,EAAE,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa;IAC3B,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IACzC,OAAO,GAAG,EAAE,UAAU,IAAI,IAAI,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB;IAC9B,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IACzC,OAAO,GAAG,EAAE,OAAO,IAAI,IAAI,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,SAAgB,OAAO;IACrB,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IACzC,OAAO,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,SAAgB,OAAO;IACrB,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IACzC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACpC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,gBAAgB,CAAC,IAAiB;IAChD,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,yDAAyD;IACzD,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,eAAe,CAAC,GAAW,EAAE,KAAa;IACxD,MAAM,GAAG,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO;IAEjB,sEAAsE;IACtE,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAAC,SAAgC;IACjE,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,oBAAoB,EAAE,CAAC;IACtE,OAAO;QACL,UAAU,EAAE,SAAS,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU;QACrD,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO;QAC5C,IAAI,EAAE,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;QACjE,4DAA4D;QAC5D,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE;KACpD,CAAC;AACJ,CAAC"}
@@ -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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"}