UNPKG

@grafana/faro-web-tracing

Version:
35 lines 1.56 kB
import { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request'; import { faro, getUrlFromResource, UserActionState } from '@grafana/faro-web-sdk'; export class FaroXhrInstrumentation extends XMLHttpRequestInstrumentation { constructor(config = {}) { super(config); const self = this; this.parentCreateSpan = self._createSpan.bind(this); } // Patching the parent's private method to handle url type string or URL _patchOpen() { return (original) => { const plugin = this; return function patchOpen(...args) { let span; try { const method = args[0]; let url = getUrlFromResource(args[1]); span = plugin.parentCreateSpan(this, url, method); } catch (error) { faro.internalLogger.error(error); } const currentAction = faro.api.getActiveUserAction(); if (span && currentAction && (currentAction === null || currentAction === void 0 ? void 0 : currentAction.getState()) === UserActionState.Started) { span.setAttribute('faro.action.user.name', currentAction.name); span.setAttribute('faro.action.user.parentId', currentAction.parentId); } return original.apply(this, args); }; }; } } //# sourceMappingURL=faroXhrInstrumentation.js.map