@sentry/browser
Version:
Official Sentry SDK for browsers
46 lines (41 loc) • 2.1 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const core = require('@sentry/core');
const browserUtils = require('@sentry-internal/browser-utils');
function getAbsoluteTime(time = 0) {
return ((core.browserPerformanceTimeOrigin() || performance.timeOrigin) + time) / 1000;
}
/**
* Converts a PerformanceResourceTiming entry to span data for the resource span.
*
* @param resourceTiming
* @returns An array where the first element is the attribute name and the second element is the attribute value.
*/
function resourceTimingToSpanAttributes(
resourceTiming,
) {
const timingSpanData = [];
// Checking for only `undefined` and `null` is intentional because it's
// valid for `nextHopProtocol` to be an empty string.
if (resourceTiming.nextHopProtocol != undefined) {
const { name, version } = browserUtils.extractNetworkProtocol(resourceTiming.nextHopProtocol);
timingSpanData.push(['network.protocol.version', version], ['network.protocol.name', name]);
}
if (!core.browserPerformanceTimeOrigin()) {
return timingSpanData;
}
return [
...timingSpanData,
['http.request.redirect_start', getAbsoluteTime(resourceTiming.redirectStart)],
['http.request.fetch_start', getAbsoluteTime(resourceTiming.fetchStart)],
['http.request.domain_lookup_start', getAbsoluteTime(resourceTiming.domainLookupStart)],
['http.request.domain_lookup_end', getAbsoluteTime(resourceTiming.domainLookupEnd)],
['http.request.connect_start', getAbsoluteTime(resourceTiming.connectStart)],
['http.request.secure_connection_start', getAbsoluteTime(resourceTiming.secureConnectionStart)],
['http.request.connection_end', getAbsoluteTime(resourceTiming.connectEnd)],
['http.request.request_start', getAbsoluteTime(resourceTiming.requestStart)],
['http.request.response_start', getAbsoluteTime(resourceTiming.responseStart)],
['http.request.response_end', getAbsoluteTime(resourceTiming.responseEnd)],
];
}
exports.resourceTimingToSpanAttributes = resourceTimingToSpanAttributes;
//# sourceMappingURL=resource-timing.js.map