Files
discord-decomp/_bundle/Module933.js
T
2026-11-01 12:12:55 +02:00

240 lines
7.8 KiB
JavaScript

// Metro module 933 (f934).
import { hasSpansEnabled } from "./Module855";
import { getActiveSpan } from "./spanToJSON";
import { startInactiveSpan } from "./createChildOrRootSpan";
import { SentryNonRecordingSpan } from "./SentryNonRecordingSpan";
import { getClient } from "./Module848";
import { getTraceData } from "./Module904";
import { isRequest, isInstanceOf } from "./isInstanceOf";
import { setHttpStatus, SPAN_STATUS_ERROR } from "./Module840";
import { SENTRY_BAGGAGE_KEY_PREFIX } from "./Module835";
import { stripDataUrlContent, parseStringToURLObject, getSanitizedUrlStringFromUrlObject, isURLObjectRelative } from "./Module900";
import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP } from "./Module839";
function $mk67364($env) {
return (a0) => a0.trim().startsWith(SENTRY_BAGGAGE_KEY_PREFIX);
}
let env768 = {};
export function _addTracingHeadersToFetchRequest(a0, a1, a2, a3) {
const r5 = env768;
let r6 = a3;
const traceData = getTraceData({
span: a2,
propagateTraceparent: a3
});
const r11 = traceData["sentry-trace"];
const { baggage, traceparent } = traceData;
if (r11) {
const r26 = a1.headers || (isRequest(a0) ? a0.headers : void 0);
if (r26) {
const Headers2 = globalThis.Headers;
if (typeof Headers2 !== "undefined" ? isInstanceOf(r26, Headers) : typeof Headers2 !== "undefined") {
const headers = new Headers(r26);
if (!headers.get("sentry-trace")) {
headers.set("sentry-trace", r11);
}
if (a3) {
r6 = traceparent;
}
if (r6) {
r6 = !headers.get("traceparent");
}
if (r6) {
headers.set("traceparent", traceparent);
}
if (baggage) {
const r126 = headers.get("baggage");
if (r126) {
if (!r126.split(",").some($mk67364(r5))) {
headers.set("baggage", `${r126},${baggage}`);
}
} else {
headers.set("baggage", baggage);
}
}
return headers;
}
if (Array.isArray(r26)) {
const r83 = [...r26];
if (!r26.find((item) => item[0] === "sentry-trace")) {
r83.push(["sentry-trace", r11]);
}
if ((a3 ? traceparent : a3) && !r26.find((item) => item[0] === "traceparent")) {
r83.push(["traceparent", traceparent]);
}
const r103 = r26.find((item) => {
let r5 = item[0] === "baggage";
if (r5) {
const r6 = env768;
r5 = item[1].split(",").some($mk67364(r6));
}
return r5;
});
if (baggage && !r103) {
r83.push(["baggage", baggage]);
}
return r83;
}
let r44 = "sentry-trace" in r26 ? r26["sentry-trace"] : void 0;
const r47 = "traceparent" in r26 ? r26.traceparent : void 0;
const r17 = "baggage" in r26 ? r26.baggage : void 0;
const r15 = r17 ? Array.isArray(r17) ? [...r17] : [r17] : [];
const r57 = r17 && (Array.isArray(r17) ? r17.find((item) => item.split(",").some($mk67364(env768))) : r17.split(",").some($mk67364(r5)));
if (baggage ? !r57 : baggage) {
r15.push(baggage);
}
if (r44 == null) {
r44 = r11;
}
const r71 = {
...r26,
"sentry-trace": r44,
baggage: r15.length > 0 ? r15.join(",") : void 0
};
if ((a3 ? traceparent : a3) && !r47) {
r71.traceparent = traceparent;
}
return r71;
}
return {
...traceData
};
}
}
Object.defineProperty(exports, Symbol.toStringTag, {
value: "Module"
});
export function _callOnRequestSpanEnd(a0, a1, a2) {
const r4 = typeof a2 === "object" ? a2 !== null ? a2.onRequestSpanEnd : void 0 : void 0;
if (r4 != null) {
r4(a0, {
headers: a1.response?.headers,
error: a1.error
});
}
}
export function instrumentFetchRequest(a0, a1, a2, a3, a4) {
let r48, r62;
L58: {
if (a0.fetchData) {
const fetchData = a0.fetchData;
const { method, url } = fetchData;
const r32 = hasSpansEnabled() && a1(url);
if (a0.endTimestamp && r32) {
const __span = a0.fetchData.__span;
if (__span) {
const r152 = a3[__span];
if (!r152) {
break L58;
}
if (a0.response) {
setHttpStatus(r152, a0.response.status);
const response = a0.response;
const r3 = response == null;
let r169 = void 0;
if (!r3) {
const headers = response.headers;
r169 = headers == null ? void 0 : headers.get("content-length");
}
if (r169) {
const r176 = parseInt(r169);
if (r176 > 0) {
r152.setAttribute("http.response_content_length", r176);
}
}
} else if (a0.error) {
r152.setStatus({
code: SPAN_STATUS_ERROR,
message: "internal_error"
});
}
r152.end();
const r183 = typeof a4 === "object" ? a4 !== null ? a4.onRequestSpanEnd : void 0 : void 0;
if (r183 != null) {
r183(r152, {
headers: a0.response?.headers,
error: a0.error
});
}
delete a3[__span];
break L58;
}
return void 0;
}
const r35 = typeof a4 !== "object" ? {
spanOrigin: a4
} : a4;
const { spanOrigin = "auto.http.browser", propagateTraceparent = false } = r35;
const r42 = !!getActiveSpan();
if (r32 && r42) {
if (url.startsWith("data:")) {
const r97 = {
name: `${method} ${stripDataUrlContent(url)}`,
attributes: null
};
const attributes2 = {
url: stripDataUrlContent(url),
type: "fetch",
"http.method": method
};
attributes2[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] = spanOrigin;
attributes2[SEMANTIC_ATTRIBUTE_SENTRY_OP] = "http.client";
r97.attributes = attributes2;
r62 = r97;
} else {
const r16 = parseStringToURLObject(url);
r62 = {
name: `${method} ${r16 ? getSanitizedUrlStringFromUrlObject(r16) : url}`,
attributes: null
};
const attributes = {
url: stripDataUrlContent(url),
type: "fetch",
"http.method": method
};
attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] = spanOrigin;
attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] = "http.client";
if (r16) {
if (!isURLObjectRelative(r16)) {
attributes["http.url"] = stripDataUrlContent(r16.href);
attributes["server.address"] = r16.host;
}
if (r16.search) {
attributes["http.query"] = r16.search;
}
if (r16.hash) {
attributes["http.fragment"] = r16.hash;
}
}
r62.attributes = attributes;
}
r48 = startInactiveSpan(r62);
} else {
r48 = new SentryNonRecordingSpan();
}
a0.fetchData.__span = r48.spanContext().spanId;
a3[r48.spanContext().spanId] = r48;
if (a2(a0.fetchData.url)) {
const r122 = a0.args[0];
const r125 = {
...a0.args[1] || {}
};
const headers2 = _addTracingHeadersToFetchRequest(r122, r125, hasSpansEnabled() ? r42 ? r48 : void 0 : void 0, propagateTraceparent);
if (headers2) {
a0.args[1] = r125;
r125.headers = headers2;
}
}
const client = getClient();
if (client) {
client.emit("beforeOutgoingRequestSpan", r48, {
input: a0.args,
response: a0.response,
startTimestamp: a0.startTimestamp,
endTimestamp: a0.endTimestamp
});
}
return r48;
}
}
}