-
Notifications
You must be signed in to change notification settings - Fork 6.5k
Expand file tree
/
Copy pathsentry.ts
More file actions
68 lines (57 loc) · 1.8 KB
/
Copy pathsentry.ts
File metadata and controls
68 lines (57 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import { type SeverityLevel } from '@sentry/cloudflare';
export function determineSeverityLevel(
item: TraceItem
): SeverityLevel | undefined {
// Two scenarios where we want to report back to Sentry:
// 1. Trace item outcome isn't 'ok'
// 2. We have a status code >= 500
//
// Note that outcome is determined by if the worker executed to completion,
// not if it returned a successful status code
if (item.outcome === 'ok') {
const response =
item.event && 'response' in item.event ? item.event.response : undefined;
if (response?.status && response?.status >= 500) {
return 'error';
} else {
// Don't care
return undefined;
}
}
return workerOutcomeToSeverityLevel(item.outcome);
}
export function workerOutcomeToSeverityLevel(outcome: string): SeverityLevel {
const map: Record<string, SeverityLevel> = {
exceededCpu: 'fatal',
exceededMemory: 'fatal',
exception: 'error',
ok: 'info',
};
return map[outcome] ?? 'warning';
}
export function workerOutcomeToEventMessage(outcome: string): string {
const map: Record<string, string> = {
exceededCpu: 'Exceeded CPU',
exceededMemory: 'Exceeded Memory',
exception: 'Script Threw Exception',
canceled: 'Client Disconnected',
ok: 'Success',
};
return map[outcome] ?? 'Internal';
}
export function consoleLogLevelToSentryLevel(logLevel: string): SeverityLevel {
const map: Record<string, SeverityLevel> = {
debug: 'debug',
log: 'info',
error: 'error',
warn: 'warning',
trace: 'debug',
};
return map[logLevel] ?? 'debug';
}
export function consoleLogToString(logMessage: unknown): string {
const pieces = Array.isArray(logMessage) ? logMessage : [logMessage];
return pieces
.map(p => (typeof p === 'string' ? p : JSON.stringify(p)))
.join(', ');
}