mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
import type {RequestFrame, ResourceFrame, SpanFrame} from 'sentry/utils/replays/types';
|
|
|
|
export function isRequestFrame(frame: SpanFrame): frame is RequestFrame {
|
|
return ['resource.fetch', 'resource.xhr'].includes(frame.op);
|
|
}
|
|
|
|
function isResourceFrame(frame: SpanFrame): frame is ResourceFrame {
|
|
return [
|
|
'resource.css',
|
|
'resource.iframe',
|
|
'resource.img',
|
|
'resource.link',
|
|
'resource.other',
|
|
'resource.script',
|
|
].includes(frame.op);
|
|
}
|
|
|
|
export function getFrameMethod(frame: SpanFrame) {
|
|
return isRequestFrame(frame) ? frame.data.method ?? 'GET' : 'GET';
|
|
}
|
|
|
|
export function getFrameStatus(frame: SpanFrame) {
|
|
return isRequestFrame(frame)
|
|
? frame.data.statusCode
|
|
: isResourceFrame(frame)
|
|
? frame.data.statusCode
|
|
: undefined;
|
|
}
|
|
|
|
export function getReqRespContentTypes(frame: SpanFrame) {
|
|
if (isRequestFrame(frame)) {
|
|
return {
|
|
req: frame.data.request?.headers?.['content-type'],
|
|
resp: frame.data.response?.headers?.['content-type'],
|
|
};
|
|
}
|
|
return {
|
|
req: undefined,
|
|
resp: undefined,
|
|
};
|
|
}
|
|
|
|
export function getResponseBodySize(frame: SpanFrame) {
|
|
if (isRequestFrame(frame)) {
|
|
// `data.responseBodySize` is from SDK version 7.44-7.45
|
|
return frame.data.response?.size ?? frame.data.responseBodySize;
|
|
}
|
|
if (isResourceFrame(frame)) {
|
|
// What about these?
|
|
// frame.data.decodedBodySize
|
|
// frame.data.encodedBodySize
|
|
return frame.data.size;
|
|
}
|
|
return undefined;
|
|
}
|