UNPKG

@grafana/faro-web-sdk

Version:

Faro instrumentations, metas, transports for web.

37 lines 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.observeResourceTimings = observeResourceTimings; const faro_core_1 = require("@grafana/faro-core"); const url_1 = require("../../utils/url"); const performanceConstants_1 = require("./performanceConstants"); const performanceUtils_1 = require("./performanceUtils"); const DEFAULT_TRACK_RESOURCES = { initiatorType: ['xmlhttprequest', 'fetch'] }; function observeResourceTimings(faroNavigationId, pushEvent, observable) { const trackResources = faro_core_1.faro.config.trackResources; const observer = new PerformanceObserver((observedEntries) => { const entries = observedEntries.getEntries(); for (const resourceEntryRaw of entries) { if ((0, url_1.isUrlIgnored)(resourceEntryRaw.name)) { continue; } observable === null || observable === void 0 ? void 0 : observable.notify({ type: performanceConstants_1.RESOURCE_ENTRY, }); const resourceEntryJson = resourceEntryRaw.toJSON(); let 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) { const faroResourceEntry = Object.assign(Object.assign({}, (0, performanceUtils_1.createFaroResourceTiming)(resourceEntryJson)), { faroNavigationId, faroResourceId: (0, faro_core_1.genShortID)() }); pushEvent('faro.performance.resource', faroResourceEntry, undefined, { spanContext, timestampOverwriteMs: performance.timeOrigin + resourceEntryJson.startTime, }); } } }); observer.observe({ type: performanceConstants_1.RESOURCE_ENTRY, buffered: true, }); } //# sourceMappingURL=resource.js.map