@debugbundle/shared-types 1.5.0 → 1.7.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-envelope.d.ts","sourceRoot":"","sources":["../src/event-envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,eAAO,MAAM,eAAe,iKASlB,CAAC;AAEX,eAAO,MAAM,eAAe,mKAA0B,CAAC;AA0CvD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;EAQ1B,CAAC;AA+DZ,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBxB,CAAC;AAgNZ,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwD5B,CAAC;AAEL,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,KAAK,gBAAgB,GAAG;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,KAAK,gBAAgB,CAAC,UAAU,SAAS,aAAa,CAAC,YAAY,CAAC,IAAI,OAAO,CAC7E,aAAa,EACb;IAAE,UAAU,EAAE,UAAU,CAAA;CAAE,CAC3B,CAAC;AAEF,KAAK,mBAAmB,CAAC,UAAU,SAAS,aAAa,CAAC,YAAY,CAAC,IACrE,UAAU,SAAS,aAAa,CAAC,YAAY,CAAC,GAC1C,IAAI,CACF,gBAAgB,CAAC,UAAU,CAAC,EAC5B,gBAAgB,GAAG,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,CAC3F,GACC,OAAO,CACL,IAAI,CACF,gBAAgB,CAAC,UAAU,CAAC,EAC5B,gBAAgB,GAAG,UAAU,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,CAC3E,CACF,GAAG;IACF,WAAW,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAC5C,GACH,KAAK,CAAC;AAEZ,KAAK,sBAAsB,GAAG,mBAAmB,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;AAE/E,KAAK,6BAA6B,GAAG,IAAI,CACvC,aAAa,EACb,gBAAgB,GAAG,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,CAC3F,GACC,OAAO,CACL,IAAI,CAAC,aAAa,EAAE,gBAAgB,GAAG,UAAU,GAAG,aAAa,GAAG,UAAU,GAAG,aAAa,CAAC,CAChG,GAAG;IACF,WAAW,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;CAC5C,CAAC;AAEJ,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,MAAM,SAAS,sBAAsB,EAC7E,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,6BAA6B,GAAG,aAAa,CAAC"}
@@ -0,0 +1,414 @@
1
+ import { z } from "zod";
2
+ /** CSPRNG-backed UUID v4 using Web Crypto API (available in all target runtimes: Node 18+, modern browsers). */
3
+ function createUuidV4() {
4
+ const cryptoSource = globalThis.crypto;
5
+ if (typeof cryptoSource?.randomUUID === "function") {
6
+ return cryptoSource.randomUUID();
7
+ }
8
+ // getRandomValues fallback for environments where randomUUID isn't exposed (e.g. non-secure HTTP contexts)
9
+ const bytes = cryptoSource.getRandomValues(new Uint8Array(16));
10
+ const versionByte = bytes[6] ?? 0;
11
+ const variantByte = bytes[8] ?? 0;
12
+ bytes[6] = (versionByte & 0x0f) | 0x40;
13
+ bytes[8] = (variantByte & 0x3f) | 0x80;
14
+ const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0"));
15
+ return `${hex.slice(0, 4).join("")}-${hex.slice(4, 6).join("")}-${hex.slice(6, 8).join("")}-${hex.slice(8, 10).join("")}-${hex.slice(10, 16).join("")}`;
16
+ }
17
+ export const EventTypeValues = [
18
+ "backend_exception",
19
+ "request_event",
20
+ "log_event",
21
+ "frontend_breadcrumb",
22
+ "frontend_exception",
23
+ "deploy_metadata",
24
+ "error_suppressed",
25
+ "probe_event"
26
+ ];
27
+ export const EventTypeSchema = z.enum(EventTypeValues);
28
+ const ServiceSchema = z
29
+ .object({
30
+ name: z.string().min(1),
31
+ runtime: z.string().min(1).nullable().optional(),
32
+ framework: z.string().min(1).nullable().optional(),
33
+ environment: z.string().min(1)
34
+ })
35
+ .strict();
36
+ const CorrelationSchema = z
37
+ .object({
38
+ request_id: z.string().nullable().optional(),
39
+ trace_id: z.string().nullable().optional(),
40
+ session_id: z.string().nullable().optional(),
41
+ user_id_hash: z.string().nullable().optional()
42
+ })
43
+ .strict()
44
+ .transform((value) => ({
45
+ request_id: value.request_id ?? null,
46
+ trace_id: value.trace_id ?? null,
47
+ session_id: value.session_id ?? null,
48
+ user_id_hash: value.user_id_hash ?? null
49
+ }));
50
+ const InlineProbeDataItemSchema = z
51
+ .object({
52
+ label: z.string().min(1),
53
+ data: z.record(z.string(), z.unknown()),
54
+ timestamp: z.string().datetime(),
55
+ activation_id: z.string().uuid().nullable()
56
+ })
57
+ .strict();
58
+ const InlineProbeDataSchema = z
59
+ .object({
60
+ version: z.literal(1),
61
+ items: z.array(InlineProbeDataItemSchema)
62
+ })
63
+ .strict();
64
+ export const RuntimeMemoryStatsSchema = z
65
+ .object({
66
+ rss: z.number().nonnegative().nullable(),
67
+ heap_total: z.number().nonnegative().nullable(),
68
+ heap_used: z.number().nonnegative().nullable(),
69
+ external: z.number().nonnegative().nullable(),
70
+ peak: z.number().nonnegative().nullable()
71
+ })
72
+ .strict();
73
+ const BackendRuntimePayloadSchema = z
74
+ .object({
75
+ version: z.string().min(1),
76
+ platform: z.string().min(1).nullable().optional(),
77
+ arch: z.string().min(1).nullable().optional(),
78
+ pid: z.number().int().nonnegative().nullable().optional(),
79
+ cwd: z.string().min(1).nullable().optional(),
80
+ uptime_sec: z.number().nonnegative().nullable().optional(),
81
+ hostname: z.string().min(1).nullable().optional(),
82
+ thread_id: z.union([z.string(), z.number()]).nullable().optional(),
83
+ framework_version: z.string().min(1).nullable().optional(),
84
+ memory: RuntimeMemoryStatsSchema.nullable().optional(),
85
+ framework_extras: z.record(z.string(), z.unknown()).nullable().optional()
86
+ })
87
+ .strict();
88
+ const BackendExceptionPayloadSchema = z
89
+ .object({
90
+ name: z.string().min(1),
91
+ message: z.string().min(1),
92
+ stack: z.string().min(1),
93
+ handled: z.boolean(),
94
+ request: z.object({
95
+ method: z.string().min(1),
96
+ path: z.string().min(1),
97
+ query: z.record(z.string(), z.unknown()),
98
+ headers: z.record(z.string(), z.unknown()),
99
+ body: z.unknown().nullable().optional()
100
+ }),
101
+ response: z.object({
102
+ status_code: z.number().int().nonnegative(),
103
+ headers: z.record(z.string(), z.unknown()).optional(),
104
+ body: z.unknown().optional()
105
+ }),
106
+ runtime: BackendRuntimePayloadSchema,
107
+ probe_data: InlineProbeDataSchema.optional()
108
+ })
109
+ .strict();
110
+ const ClientDeviceInfoFields = {
111
+ user_agent: z.string().nullable(),
112
+ os: z.object({
113
+ name: z.string().nullable(),
114
+ version: z.string().nullable()
115
+ }),
116
+ device_type: z.enum(["desktop", "mobile", "tablet", "unknown"]),
117
+ screen: z.object({
118
+ width: z.number().int().nonnegative(),
119
+ height: z.number().int().nonnegative()
120
+ }),
121
+ viewport: z.object({
122
+ width: z.number().int().nonnegative(),
123
+ height: z.number().int().nonnegative()
124
+ }),
125
+ device_pixel_ratio: z.number().positive().nullable(),
126
+ touch_capable: z.boolean().nullable(),
127
+ language: z.string().nullable(),
128
+ connection_type: z.string().nullable(),
129
+ color_scheme_preference: z.enum(["light", "dark", "no-preference"]).nullable()
130
+ };
131
+ export const MobileDeviceInfoSchema = z
132
+ .object({
133
+ ...ClientDeviceInfoFields,
134
+ app_version: z.string().nullable().optional(),
135
+ build_number: z.string().nullable().optional(),
136
+ release_channel: z.string().nullable().optional(),
137
+ api_level: z.number().int().nonnegative().nullable().optional(),
138
+ manufacturer: z.string().nullable().optional(),
139
+ model: z.string().nullable().optional(),
140
+ timezone: z.string().nullable().optional(),
141
+ battery_level: z.number().nonnegative().nullable().optional(),
142
+ battery_charging: z.boolean().nullable().optional(),
143
+ free_disk_bytes: z.number().int().nonnegative().nullable().optional(),
144
+ free_memory_bytes: z.number().int().nonnegative().nullable().optional(),
145
+ jailbroken: z.boolean().nullable().optional()
146
+ })
147
+ .strict();
148
+ const RequestEventPayloadFields = {
149
+ method: z.string().min(1),
150
+ path: z.string().min(1),
151
+ query: z.record(z.string(), z.unknown()),
152
+ headers: z.record(z.string(), z.unknown()),
153
+ body: z.unknown().nullable().optional(),
154
+ response_status: z.number().int().nonnegative(),
155
+ duration_ms: z.number().nonnegative(),
156
+ route_template: z.string().min(1).nullable().optional(),
157
+ response_headers: z.record(z.string(), z.unknown()).optional(),
158
+ response_body: z.unknown().optional()
159
+ };
160
+ const RequestEventPayloadSchema = z.union([
161
+ z.object(RequestEventPayloadFields).strict(),
162
+ z.object({ ...RequestEventPayloadFields, device: MobileDeviceInfoSchema }).strict()
163
+ ]);
164
+ const LogEventPayloadFields = {
165
+ level: z.string().min(1),
166
+ message: z.string().min(1),
167
+ attributes: z.record(z.string(), z.unknown())
168
+ };
169
+ const LogEventPayloadSchema = z.union([
170
+ z.object(LogEventPayloadFields).strict(),
171
+ z.object({ ...LogEventPayloadFields, device: MobileDeviceInfoSchema }).strict()
172
+ ]);
173
+ const FrontendBreadcrumbPayloadFields = {
174
+ breadcrumb_type: z.enum([
175
+ "route_change",
176
+ "click",
177
+ "form_submit",
178
+ "console_log",
179
+ "network_request"
180
+ ]),
181
+ route: z.string().min(1).nullable().optional(),
182
+ data: z.record(z.string(), z.unknown())
183
+ };
184
+ const FrontendBreadcrumbPayloadSchema = z.union([
185
+ z.object(FrontendBreadcrumbPayloadFields).strict(),
186
+ z
187
+ .object({
188
+ breadcrumb_type: z.string().min(1),
189
+ route: z.string().min(1).nullable().optional(),
190
+ data: z.record(z.string(), z.unknown()),
191
+ device: MobileDeviceInfoSchema
192
+ })
193
+ .strict()
194
+ ]);
195
+ const FrontendExceptionBreadcrumbSchema = z
196
+ .object({
197
+ ...FrontendBreadcrumbPayloadFields,
198
+ ts: z.string().datetime()
199
+ })
200
+ .strict();
201
+ const MobileExceptionBreadcrumbSchema = z
202
+ .object({
203
+ breadcrumb_type: z.string().min(1),
204
+ route: z.string().min(1).nullable().optional(),
205
+ data: z.record(z.string(), z.unknown()),
206
+ ts: z.string().datetime()
207
+ })
208
+ .strict();
209
+ const BrowserDeviceInfoSchema = z.object(ClientDeviceInfoFields).strict();
210
+ const BrowserExceptionEventSchema = z
211
+ .object({
212
+ kind: z.enum(["window_error", "resource_error"]),
213
+ message: z.string().nullable(),
214
+ file_name: z.string().nullable(),
215
+ line_number: z.number().int().nonnegative().nullable(),
216
+ column_number: z.number().int().nonnegative().nullable(),
217
+ target: z
218
+ .object({
219
+ tag_name: z.string().nullable(),
220
+ source_url: z.string().nullable(),
221
+ attributes: z
222
+ .object({
223
+ rel: z.string().optional(),
224
+ as: z.string().optional(),
225
+ type: z.string().optional(),
226
+ media: z.string().optional(),
227
+ cross_origin: z.string().optional(),
228
+ async: z.boolean().optional(),
229
+ defer: z.boolean().optional(),
230
+ integrity_present: z.boolean().optional()
231
+ })
232
+ .strict()
233
+ .optional()
234
+ })
235
+ .strict()
236
+ .nullable(),
237
+ page: z
238
+ .object({
239
+ url: z.string().nullable(),
240
+ referrer: z.string().nullable(),
241
+ ready_state: z.enum(["loading", "interactive", "complete"]).nullable(),
242
+ visibility_state: z.enum(["visible", "hidden", "prerender", "unloaded"]).nullable()
243
+ })
244
+ .strict()
245
+ .optional(),
246
+ opaque: z.boolean()
247
+ })
248
+ .strict();
249
+ const FrontendRejectionReasonSchema = z
250
+ .object({
251
+ kind: z.enum(["error", "string", "object", "null", "undefined", "unknown"]),
252
+ name: z.string().min(1).optional(),
253
+ message: z.string().min(1).optional(),
254
+ preview: z.string().min(1).optional()
255
+ })
256
+ .strict();
257
+ const FrontendExceptionPayloadSchema = z
258
+ .object({
259
+ name: z.string().min(1),
260
+ message: z.string().min(1),
261
+ stack: z.string().min(1),
262
+ route: z.string().min(1).nullable().optional(),
263
+ browser: z
264
+ .object({
265
+ name: z.string().min(1),
266
+ version: z.string().min(1)
267
+ })
268
+ .optional(),
269
+ breadcrumbs: z
270
+ .array(z.union([FrontendExceptionBreadcrumbSchema, MobileExceptionBreadcrumbSchema]))
271
+ .optional(),
272
+ device: z.union([BrowserDeviceInfoSchema, MobileDeviceInfoSchema]).nullable().optional(),
273
+ browser_event: BrowserExceptionEventSchema.optional(),
274
+ rejection_reason: FrontendRejectionReasonSchema.optional(),
275
+ dom_context: z
276
+ .object({
277
+ mode: z.literal("lightweight"),
278
+ html_excerpt: z.string().min(1)
279
+ })
280
+ .nullable()
281
+ .optional(),
282
+ probe_data: InlineProbeDataSchema.optional()
283
+ })
284
+ .strict();
285
+ const DeployMetadataPayloadSchema = z
286
+ .object({
287
+ commit_sha: z.string().min(1),
288
+ version: z.string().min(1),
289
+ branch: z.string().min(1),
290
+ environment: z.string().min(1),
291
+ deployed_at: z.string().datetime()
292
+ })
293
+ .strict();
294
+ const ErrorSuppressedPayloadFields = {
295
+ fingerprint: z.string().min(1),
296
+ suppressed_count: z.number().int().nonnegative(),
297
+ window_seconds: z.number().int().positive(),
298
+ first_seen: z.string().datetime(),
299
+ last_seen: z.string().datetime()
300
+ };
301
+ const ErrorSuppressedPayloadSchema = z.union([
302
+ z.object(ErrorSuppressedPayloadFields).strict(),
303
+ z.object({ ...ErrorSuppressedPayloadFields, device: MobileDeviceInfoSchema }).strict()
304
+ ]);
305
+ const ProbeEventPayloadFields = {
306
+ label: z.string().min(1),
307
+ data: z.record(z.string(), z.unknown()),
308
+ activation_id: z.string().uuid().nullable(),
309
+ probe_label_pattern: z.string().min(1)
310
+ };
311
+ const ProbeEventPayloadSchema = z.union([
312
+ z.object(ProbeEventPayloadFields).strict(),
313
+ z.object({ ...ProbeEventPayloadFields, device: MobileDeviceInfoSchema }).strict()
314
+ ]);
315
+ const EnvelopeBaseSchema = z
316
+ .object({
317
+ schema_version: z.string().min(1),
318
+ event_id: z.string().uuid(),
319
+ event_type: EventTypeSchema,
320
+ project_token: z.string().min(1).optional(),
321
+ project_id: z.string().uuid().nullable().optional(),
322
+ sdk_name: z.string().min(1),
323
+ sdk_version: z.string().min(1),
324
+ service: ServiceSchema,
325
+ occurred_at: z.string().datetime(),
326
+ correlation: CorrelationSchema.optional(),
327
+ context: z.record(z.string(), z.unknown()).optional()
328
+ })
329
+ .strict();
330
+ const MOBILE_SDK_NAMES = new Set([
331
+ "@debugbundle/sdk-android",
332
+ "@debugbundle/sdk-swift",
333
+ "@debugbundle/sdk-react-native"
334
+ ]);
335
+ export const EventEnvelopeSchema = z
336
+ .discriminatedUnion("event_type", [
337
+ EnvelopeBaseSchema.extend({
338
+ event_type: z.literal("backend_exception"),
339
+ payload: BackendExceptionPayloadSchema
340
+ }),
341
+ EnvelopeBaseSchema.extend({
342
+ event_type: z.literal("request_event"),
343
+ payload: RequestEventPayloadSchema
344
+ }),
345
+ EnvelopeBaseSchema.extend({
346
+ event_type: z.literal("log_event"),
347
+ payload: LogEventPayloadSchema
348
+ }),
349
+ EnvelopeBaseSchema.extend({
350
+ event_type: z.literal("frontend_breadcrumb"),
351
+ payload: FrontendBreadcrumbPayloadSchema
352
+ }),
353
+ EnvelopeBaseSchema.extend({
354
+ event_type: z.literal("frontend_exception"),
355
+ payload: FrontendExceptionPayloadSchema
356
+ }),
357
+ EnvelopeBaseSchema.extend({
358
+ event_type: z.literal("deploy_metadata"),
359
+ payload: DeployMetadataPayloadSchema
360
+ }),
361
+ EnvelopeBaseSchema.extend({
362
+ event_type: z.literal("error_suppressed"),
363
+ payload: ErrorSuppressedPayloadSchema
364
+ }),
365
+ EnvelopeBaseSchema.extend({
366
+ event_type: z.literal("probe_event"),
367
+ payload: ProbeEventPayloadSchema
368
+ })
369
+ ])
370
+ .superRefine((event, context) => {
371
+ if (event.event_type !== "frontend_exception") {
372
+ return;
373
+ }
374
+ if (MOBILE_SDK_NAMES.has(event.sdk_name)) {
375
+ if (event.payload.device === undefined || event.payload.device === null) {
376
+ context.addIssue({
377
+ code: z.ZodIssueCode.custom,
378
+ message: "Required",
379
+ path: ["payload", "device"]
380
+ });
381
+ }
382
+ return;
383
+ }
384
+ if (event.payload.browser === undefined) {
385
+ context.addIssue({
386
+ code: z.ZodIssueCode.custom,
387
+ message: "Required",
388
+ path: ["payload", "browser"]
389
+ });
390
+ }
391
+ });
392
+ export function createEventEnvelope(input) {
393
+ const candidate = {
394
+ schema_version: input.schema_version ?? "2026-03-01",
395
+ event_id: input.event_id ?? createUuidV4(),
396
+ event_type: input.event_type,
397
+ project_token: input.project_token,
398
+ project_id: input.project_id,
399
+ sdk_name: input.sdk_name ?? "debugbundle-node",
400
+ sdk_version: input.sdk_version ?? "0.0.0",
401
+ service: input.service,
402
+ occurred_at: input.occurred_at ?? new Date().toISOString(),
403
+ correlation: input.correlation ?? {
404
+ request_id: null,
405
+ trace_id: null,
406
+ session_id: null,
407
+ user_id_hash: null
408
+ },
409
+ context: input.context,
410
+ payload: input.payload
411
+ };
412
+ return EventEnvelopeSchema.parse(candidate);
413
+ }
414
+ //# sourceMappingURL=event-envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-envelope.js","sourceRoot":"","sources":["../src/event-envelope.ts"],"names":[],"mappings":"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"}