240 lines
7.8 KiB
JavaScript
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;
|
|
}
|
|
}
|
|
}
|