@grafana/faro-web-sdk
Version:
Faro instrumentations, metas, transports for web.
52 lines • 2.69 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.observeResourceTimings = void 0;
var faro_core_1 = require("@grafana/faro-core");
var url_1 = require("../../utils/url");
var performanceConstants_1 = require("./performanceConstants");
var performanceUtils_1 = require("./performanceUtils");
var DEFAULT_TRACK_RESOURCES = { initiatorType: ['xmlhttprequest', 'fetch'] };
function observeResourceTimings(faroNavigationId, pushEvent, observable) {
var trackResources = faro_core_1.faro.config.trackResources;
var observer = new PerformanceObserver(function (observedEntries) {
var entries = observedEntries.getEntries();
for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
var resourceEntryRaw = entries_1[_i];
if ((0, url_1.isUrlIgnored)(resourceEntryRaw.name)) {
return;
}
var resourceEntryJson = resourceEntryRaw.toJSON();
var spanContext = (0, performanceUtils_1.getSpanContextFromServerTiming)(resourceEntryJson === null || resourceEntryJson === void 0 ? void 0 : resourceEntryJson.serverTiming);
if ((trackResources == null && (0, performanceUtils_1.includePerformanceEntry)(resourceEntryJson, DEFAULT_TRACK_RESOURCES)) ||
trackResources) {
var faroResourceEntry = __assign(__assign({}, (0, performanceUtils_1.createFaroResourceTiming)(resourceEntryJson)), { faroNavigationId: faroNavigationId, faroResourceId: (0, faro_core_1.genShortID)() });
if (faro_core_1.faro.config.trackUserActionsPreview) {
observable === null || observable === void 0 ? void 0 : observable.notify({
type: performanceConstants_1.RESOURCE_ENTRY,
});
}
pushEvent('faro.performance.resource', faroResourceEntry, undefined, {
spanContext: spanContext,
timestampOverwriteMs: performance.timeOrigin + resourceEntryJson.startTime,
});
}
}
});
observer.observe({
type: performanceConstants_1.RESOURCE_ENTRY,
buffered: true,
});
}
exports.observeResourceTimings = observeResourceTimings;
//# sourceMappingURL=resource.js.map