Skip to content
Snippets Groups Projects
index.js 8.31 MiB
Newer Older
  • Learn to ignore specific revisions
  • 
            (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__._optionalChain)([scope, 'optionalAccess', _6 => _6.setSpan, 'call', _7 => _7(span)]);
    
            const rv = orig.call(this, ...args);
    
            if ((0,_sentry_utils__WEBPACK_IMPORTED_MODULE_5__.isThenable)(rv)) {
              return rv.then((res) => {
                (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__._optionalChain)([span, 'optionalAccess', _8 => _8.finish, 'call', _9 => _9()]);
                (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__._optionalChain)([scope, 'optionalAccess', _10 => _10.setSpan, 'call', _11 => _11(parentSpan)]);
    
                return res;
              });
            }
    
            (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__._optionalChain)([span, 'optionalAccess', _12 => _12.finish, 'call', _13 => _13()]);
            (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__._optionalChain)([scope, 'optionalAccess', _14 => _14.setSpan, 'call', _15 => _15(parentSpan)]);
            return rv;
          };
        });
      }
    }GraphQL.__initStatic();
    
    
    //# sourceMappingURL=graphql.js.map
    
    
    /***/ }),
    
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "Apollo": () => (/* binding */ Apollo)
    /* harmony export */ });
    
    /* harmony import */ var _sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1663);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1645);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1653);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1650);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1647);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1649);
    /* harmony import */ var _utils_node_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1742);
    
    
    
    
    
    /** Tracing integration for Apollo */
    class Apollo  {constructor() { Apollo.prototype.__init.call(this); }
      /**
       * @inheritDoc
       */
       static __initStatic() {this.id = 'Apollo';}
    
      /**
       * @inheritDoc
       */
       __init() {this.name = Apollo.id;}
    
      /**
       * @inheritDoc
       */
       setupOnce(_, getCurrentHub) {
        const pkg = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_0__.loadModule)
    
    ('apollo-server-core');
    
        if (!pkg) {
          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__.logger.error('Apollo Integration was unable to require apollo-server-core package.');
          return;
        }
    
        if ((0,_utils_node_utils_js__WEBPACK_IMPORTED_MODULE_2__.shouldDisableAutoInstrumentation)(getCurrentHub)) {
          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__.logger.log('Apollo Integration is skipped because of instrumenter configuration.');
          return;
        }
    
        /**
         * Iterate over resolvers of the ApolloServer instance before schemas are constructed.
         */
        (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_3__.fill)(pkg.ApolloServerBase.prototype, 'constructSchema', function (orig) {
          return function () {
            if (!this.config.resolvers) {
              if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__)) {
                if (this.config.schema) {
                  _sentry_utils__WEBPACK_IMPORTED_MODULE_1__.logger.warn(
                    'Apollo integration is not able to trace `ApolloServer` instances constructed via `schema` property.',
                  );
                } else if (this.config.modules) {
                  _sentry_utils__WEBPACK_IMPORTED_MODULE_1__.logger.warn(
                    'Apollo integration is not able to trace `ApolloServer` instances constructed via `modules` property.',
                  );
                }
    
                _sentry_utils__WEBPACK_IMPORTED_MODULE_1__.logger.error('Skipping tracing as no resolvers found on the `ApolloServer` instance.');
              }
    
              return orig.call(this);
            }
    
            const resolvers = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_4__.arrayify)(this.config.resolvers);
    
            this.config.resolvers = resolvers.map(model => {
              Object.keys(model).forEach(resolverGroupName => {
                Object.keys(model[resolverGroupName]).forEach(resolverName => {
                  if (typeof model[resolverGroupName][resolverName] !== 'function') {
                    return;
                  }
    
                  wrapResolver(model, resolverGroupName, resolverName, getCurrentHub);
                });
              });
    
              return model;
            });
    
            return orig.call(this);
          };
        });
      }
    }Apollo.__initStatic();
    
    /**
     * Wrap a single resolver which can be a parent of other resolvers and/or db operations.
     */
    function wrapResolver(
      model,
      resolverGroupName,
      resolverName,
      getCurrentHub,
    ) {
      (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_3__.fill)(model[resolverGroupName], resolverName, function (orig) {
        return function ( ...args) {
          const scope = getCurrentHub().getScope();
          const parentSpan = (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_5__._optionalChain)([scope, 'optionalAccess', _2 => _2.getSpan, 'call', _3 => _3()]);
          const span = (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_5__._optionalChain)([parentSpan, 'optionalAccess', _4 => _4.startChild, 'call', _5 => _5({
            description: `${resolverGroupName}.${resolverName}`,
            op: 'graphql.resolve',
          })]);
    
          const rv = orig.call(this, ...args);
    
          if ((0,_sentry_utils__WEBPACK_IMPORTED_MODULE_6__.isThenable)(rv)) {
            return rv.then((res) => {
              (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_5__._optionalChain)([span, 'optionalAccess', _6 => _6.finish, 'call', _7 => _7()]);
              return res;
            });
          }
    
          (0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_5__._optionalChain)([span, 'optionalAccess', _8 => _8.finish, 'call', _9 => _9()]);
    
          return rv;
        };
      });
    }
    
    
    //# sourceMappingURL=apollo.js.map
    
    
    /***/ }),
    
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "BROWSER_TRACING_INTEGRATION_ID": () => (/* binding */ BROWSER_TRACING_INTEGRATION_ID),
    /* harmony export */   "BrowserTracing": () => (/* binding */ BrowserTracing),
    /* harmony export */   "getMetaContent": () => (/* binding */ getMetaContent)
    /* harmony export */ });
    
    /* harmony import */ var _sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1663);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1653);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1717);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(1695);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(1651);
    /* harmony import */ var _hubextensions_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(1732);
    /* harmony import */ var _idletransaction_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1736);
    /* harmony import */ var _backgroundtab_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1766);
    /* harmony import */ var _metrics_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1753);
    /* harmony import */ var _request_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1752);
    /* harmony import */ var _router_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1750);
    /* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(1751);
    
    
    
    
    
    
    
    
    
    
    
    
    const BROWSER_TRACING_INTEGRATION_ID = 'BrowserTracing';
    
    /** Options for Browser Tracing integration */
    
    const DEFAULT_BROWSER_TRACING_OPTIONS = {
      idleTimeout: _idletransaction_js__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_IDLE_TIMEOUT,
      finalTimeout: _idletransaction_js__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_FINAL_TIMEOUT,
      heartbeatInterval: _idletransaction_js__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_HEARTBEAT_INTERVAL,
      markBackgroundTransactions: true,
      routingInstrumentation: _router_js__WEBPACK_IMPORTED_MODULE_1__.instrumentRoutingWithDefaults,
      startTransactionOnLocationChange: true,
      startTransactionOnPageLoad: true,
      _experiments: { enableLongTask: true },
      ..._request_js__WEBPACK_IMPORTED_MODULE_2__.defaultRequestInstrumentationOptions,
    };
    
    /**
     * The Browser Tracing integration automatically instruments browser pageload/navigation
     * actions as transactions, and captures requests, metrics and errors as spans.
     *
     * The integration can be configured with a variety of options, and can be extended to use
     * any routing library. This integration uses {@see IdleTransaction} to create transactions.
     */
    class BrowserTracing  {
      // This class currently doesn't have a static `id` field like the other integration classes, because it prevented
      // @sentry/tracing from being treeshaken. Tree shakers do not like static fields, because they behave like side effects.
      // TODO: Come up with a better plan, than using static fields on integration classes, and use that plan on all
      // integrations.
    
      /** Browser Tracing integration options */
    
      /**
       * @inheritDoc
       */
       __init() {this.name = BROWSER_TRACING_INTEGRATION_ID;}
    
       constructor(_options) {;BrowserTracing.prototype.__init.call(this);
        this.options = {
          ...DEFAULT_BROWSER_TRACING_OPTIONS,
          ..._options,
        };
    
        // TODO (v8): remove this block after tracingOrigins is removed
        // Set tracePropagationTargets to tracingOrigins if specified by the user
        // In case both are specified, tracePropagationTargets takes precedence
        // eslint-disable-next-line deprecation/deprecation
        if (_options && !_options.tracePropagationTargets && _options.tracingOrigins) {
          // eslint-disable-next-line deprecation/deprecation
          this.options.tracePropagationTargets = _options.tracingOrigins;
        }
    
        const { _metricOptions } = this.options;
        (0,_metrics_index_js__WEBPACK_IMPORTED_MODULE_3__.startTrackingWebVitals)(_metricOptions && _metricOptions._reportAllChanges);
        if ((0,_sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_4__._optionalChain)([this, 'access', _2 => _2.options, 'access', _3 => _3._experiments, 'optionalAccess', _4 => _4.enableLongTask])) {
          (0,_metrics_index_js__WEBPACK_IMPORTED_MODULE_3__.startTrackingLongTasks)();
        }
      }
    
      /**
       * @inheritDoc
       */
       setupOnce(_, getCurrentHub) {
        this._getCurrentHub = getCurrentHub;
    
        // eslint-disable-next-line @typescript-eslint/unbound-method
        const {
          routingInstrumentation: instrumentRouting,
          startTransactionOnLocationChange,
          startTransactionOnPageLoad,
          markBackgroundTransactions,
          traceFetch,
          traceXHR,
          tracePropagationTargets,
          shouldCreateSpanForRequest,
        } = this.options;
    
        instrumentRouting(
          (context) => this._createRouteTransaction(context),
          startTransactionOnPageLoad,
          startTransactionOnLocationChange,
        );
    
        if (markBackgroundTransactions) {
          (0,_backgroundtab_js__WEBPACK_IMPORTED_MODULE_5__.registerBackgroundTabDetection)();
        }
    
        (0,_request_js__WEBPACK_IMPORTED_MODULE_2__.instrumentOutgoingRequests)({
          traceFetch,
          traceXHR,
          tracePropagationTargets,
          shouldCreateSpanForRequest,
        });
      }
    
      /** Create routing idle transaction. */
       _createRouteTransaction(context) {
        if (!this._getCurrentHub) {
          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&
            _sentry_utils__WEBPACK_IMPORTED_MODULE_6__.logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);
          return undefined;
        }
    
        // eslint-disable-next-line @typescript-eslint/unbound-method
        const { beforeNavigate, idleTimeout, finalTimeout, heartbeatInterval } = this.options;
    
        const isPageloadTransaction = context.op === 'pageload';
    
        const sentryTraceMetaTagValue = isPageloadTransaction ? getMetaContent('sentry-trace') : null;
        const baggageMetaTagValue = isPageloadTransaction ? getMetaContent('baggage') : null;
    
        const traceParentData = sentryTraceMetaTagValue ? (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_7__.extractTraceparentData)(sentryTraceMetaTagValue) : undefined;
        const dynamicSamplingContext = baggageMetaTagValue
          ? (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_8__.baggageHeaderToDynamicSamplingContext)(baggageMetaTagValue)
          : undefined;
    
        const expandedContext = {
          ...context,
          ...traceParentData,
          metadata: {
            ...context.metadata,
            dynamicSamplingContext: traceParentData && !dynamicSamplingContext ? {} : dynamicSamplingContext,
          },
          trimEnd: true,
        };
    
        const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;
    
        // For backwards compatibility reasons, beforeNavigate can return undefined to "drop" the transaction (prevent it
        // from being sent to Sentry).
        const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;
    
        // If `beforeNavigate` set a custom name, record that fact
        finalContext.metadata =
          finalContext.name !== expandedContext.name
            ? { ...finalContext.metadata, source: 'custom' }
            : finalContext.metadata;
    
        if (finalContext.sampled === false) {
          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&
            _sentry_utils__WEBPACK_IMPORTED_MODULE_6__.logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);
        }
    
        (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_6__.logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);
    
        const hub = this._getCurrentHub();
        const { location } = _types_js__WEBPACK_IMPORTED_MODULE_9__.WINDOW;
    
        const idleTransaction = (0,_hubextensions_js__WEBPACK_IMPORTED_MODULE_10__.startIdleTransaction)(
          hub,
          finalContext,
          idleTimeout,
          finalTimeout,
          true,
          { location }, // for use in the tracesSampler
          heartbeatInterval,
        );
        idleTransaction.registerBeforeFinishCallback(transaction => {
          (0,_metrics_index_js__WEBPACK_IMPORTED_MODULE_3__.addPerformanceEntries)(transaction);
        });
    
        return idleTransaction ;
      }
    }
    
    /** Returns the value of a meta tag */
    function getMetaContent(metaName) {
      // Can't specify generic to `getDomElement` because tracing can be used
      // in a variety of environments, have to disable `no-unsafe-member-access`
      // as a result.
      const metaTag = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_11__.getDomElement)(`meta[name=${metaName}]`);
      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
      return metaTag ? metaTag.getAttribute('content') : null;
    }
    
    
    //# sourceMappingURL=browsertracing.js.map
    
    
    /***/ }),
    
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "instrumentRoutingWithDefaults": () => (/* binding */ instrumentRoutingWithDefaults)
    /* harmony export */ });
    
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1653);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1738);
    /* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1751);
    
    
    
    
    /**
     * Default function implementing pageload and navigation transactions
     */
    function instrumentRoutingWithDefaults(
      customStartTransaction,
      startTransactionOnPageLoad = true,
      startTransactionOnLocationChange = true,
    ) {
      if (!_types_js__WEBPACK_IMPORTED_MODULE_0__.WINDOW || !_types_js__WEBPACK_IMPORTED_MODULE_0__.WINDOW.location) {
        (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__.logger.warn('Could not initialize routing instrumentation due to invalid location');
        return;
      }
    
      let startingUrl = _types_js__WEBPACK_IMPORTED_MODULE_0__.WINDOW.location.href;
    
      let activeTransaction;
      if (startTransactionOnPageLoad) {
        activeTransaction = customStartTransaction({
          name: _types_js__WEBPACK_IMPORTED_MODULE_0__.WINDOW.location.pathname,
          op: 'pageload',
          metadata: { source: 'url' },
        });
      }
    
      if (startTransactionOnLocationChange) {
        (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_2__.addInstrumentationHandler)('history', ({ to, from }) => {
          /**
           * This early return is there to account for some cases where a navigation transaction starts right after
           * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't
           * create an uneccessary navigation transaction.
           *
           * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also
           * only be caused in certain development environments where the usage of a hot module reloader is causing
           * errors.
           */
          if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {
            startingUrl = undefined;
            return;
          }
    
          if (from !== to) {
            startingUrl = undefined;
            if (activeTransaction) {
              (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__.logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);
              // If there's an open transaction on the scope, we need to finish it before creating an new one.
              activeTransaction.finish();
            }
            activeTransaction = customStartTransaction({
              name: _types_js__WEBPACK_IMPORTED_MODULE_0__.WINDOW.location.pathname,
              op: 'navigation',
              metadata: { source: 'url' },
            });
          }
        });
      }
    }
    
    
    //# sourceMappingURL=router.js.map
    
    
    /***/ }),
    
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "WINDOW": () => (/* binding */ WINDOW)
    /* harmony export */ });
    
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1644);
    
    
    
    const WINDOW = _sentry_utils__WEBPACK_IMPORTED_MODULE_0__.GLOBAL_OBJ ;
    
    
    //# sourceMappingURL=types.js.map
    
    
    /***/ }),
    
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "DEFAULT_TRACE_PROPAGATION_TARGETS": () => (/* binding */ DEFAULT_TRACE_PROPAGATION_TARGETS),
    /* harmony export */   "defaultRequestInstrumentationOptions": () => (/* binding */ defaultRequestInstrumentationOptions),
    /* harmony export */   "fetchCallback": () => (/* binding */ fetchCallback),
    /* harmony export */   "instrumentOutgoingRequests": () => (/* binding */ instrumentOutgoingRequests),
    /* harmony export */   "shouldAttachHeaders": () => (/* binding */ shouldAttachHeaders),
    /* harmony export */   "xhrCallback": () => (/* binding */ xhrCallback)
    /* harmony export */ });
    
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1738);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1648);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1695);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1649);
    /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1733);
    
    251485 251486 251487 251488 251489 251490 251491 251492 251493 251494 251495 251496 251497 251498 251499 251500 251501 251502 251503 251504 251505 251506 251507 251508 251509 251510 251511 251512 251513 251514 251515 251516 251517 251518 251519 251520 251521 251522 251523 251524 251525 251526 251527 251528 251529 251530 251531 251532 251533 251534 251535 251536 251537 251538 251539 251540 251541 251542 251543 251544 251545 251546 251547 251548 251549 251550 251551 251552 251553 251554 251555 251556 251557 251558 251559 251560 251561 251562 251563 251564 251565 251566 251567 251568 251569 251570 251571 251572 251573 251574 251575 251576 251577 251578 251579 251580 251581 251582 251583 251584 251585 251586 251587 251588 251589 251590 251591 251592 251593 251594 251595 251596 251597 251598 251599 251600 251601 251602 251603 251604 251605 251606 251607 251608 251609 251610 251611 251612 251613 251614 251615 251616 251617 251618 251619 251620 251621 251622 251623 251624 251625 251626 251627 251628 251629 251630 251631 251632 251633 251634 251635 251636 251637 251638 251639 251640 251641 251642 251643 251644 251645 251646 251647 251648 251649 251650 251651 251652 251653 251654 251655 251656 251657 251658 251659 251660 251661 251662 251663 251664 251665 251666 251667 251668 251669 251670 251671 251672 251673 251674 251675 251676 251677 251678 251679 251680 251681 251682 251683 251684 251685 251686 251687 251688 251689 251690 251691 251692 251693 251694 251695 251696 251697 251698 251699 251700 251701 251702 251703 251704 251705 251706 251707 251708 251709 251710 251711 251712 251713 251714 251715 251716 251717 251718 251719 251720 251721 251722 251723 251724 251725 251726 251727 251728 251729 251730 251731 251732 251733 251734 251735 251736 251737 251738 251739 251740 251741 251742 251743 251744 251745 251746 251747 251748 251749
    
    
    
    const DEFAULT_TRACE_PROPAGATION_TARGETS = ['localhost', /^\//];
    
    /** Options for Request Instrumentation */
    
    const defaultRequestInstrumentationOptions = {
      traceFetch: true,
      traceXHR: true,
      // TODO (v8): Remove this property
      tracingOrigins: DEFAULT_TRACE_PROPAGATION_TARGETS,
      tracePropagationTargets: DEFAULT_TRACE_PROPAGATION_TARGETS,
    };
    
    /** Registers span creators for xhr and fetch requests  */
    function instrumentOutgoingRequests(_options) {
      // eslint-disable-next-line deprecation/deprecation
      const { traceFetch, traceXHR, tracePropagationTargets, tracingOrigins, shouldCreateSpanForRequest } = {
        traceFetch: defaultRequestInstrumentationOptions.traceFetch,
        traceXHR: defaultRequestInstrumentationOptions.traceXHR,
        ..._options,
      };
    
      const shouldCreateSpan =
        typeof shouldCreateSpanForRequest === 'function' ? shouldCreateSpanForRequest : (_) => true;
    
      // TODO(v8) Remove tracingOrigins here
      // The only reason we're passing it in here is because this instrumentOutgoingRequests function is publicly exported
      // and we don't want to break the API. We can remove it in v8.
      const shouldAttachHeadersWithTargets = (url) =>
        shouldAttachHeaders(url, tracePropagationTargets || tracingOrigins);
    
      const spans = {};
    
      if (traceFetch) {
        (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_0__.addInstrumentationHandler)('fetch', (handlerData) => {
          fetchCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);
        });
      }
    
      if (traceXHR) {
        (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_0__.addInstrumentationHandler)('xhr', (handlerData) => {
          xhrCallback(handlerData, shouldCreateSpan, shouldAttachHeadersWithTargets, spans);
        });
      }
    }
    
    /**
     * A function that determines whether to attach tracing headers to a request.
     * This was extracted from `instrumentOutgoingRequests` to make it easier to test shouldAttachHeaders.
     * We only export this fuction for testing purposes.
     */
    function shouldAttachHeaders(url, tracePropagationTargets) {
      return (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_1__.stringMatchesSomePattern)(url, tracePropagationTargets || DEFAULT_TRACE_PROPAGATION_TARGETS);
    }
    
    /**
     * Create and track fetch request spans
     */
    function fetchCallback(
      handlerData,
      shouldCreateSpan,
      shouldAttachHeaders,
      spans,
    ) {
      if (!(0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.hasTracingEnabled)() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {
        return;
      }
    
      if (handlerData.endTimestamp) {
        const spanId = handlerData.fetchData.__span;
        if (!spanId) return;
    
        const span = spans[spanId];
        if (span) {
          if (handlerData.response) {
            // TODO (kmclb) remove this once types PR goes through
            // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
            span.setHttpStatus(handlerData.response.status);
          } else if (handlerData.error) {
            span.setStatus('internal_error');
          }
          span.finish();
    
          // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
          delete spans[spanId];
        }
        return;
      }
    
      const activeTransaction = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.getActiveTransaction)();
      if (activeTransaction) {
        const span = activeTransaction.startChild({
          data: {
            ...handlerData.fetchData,
            type: 'fetch',
          },
          description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`,
          op: 'http.client',
        });
    
        handlerData.fetchData.__span = span.spanId;
        spans[span.spanId] = span;
    
        const request = handlerData.args[0];
    
        // In case the user hasn't set the second argument of a fetch call we default it to `{}`.
        handlerData.args[1] = handlerData.args[1] || {};
    
        // eslint-disable-next-line @typescript-eslint/no-explicit-any
        const options = handlerData.args[1];
    
        if (shouldAttachHeaders(handlerData.fetchData.url)) {
          options.headers = addTracingHeadersToFetchRequest(
            request,
            activeTransaction.getDynamicSamplingContext(),
            span,
            options,
          );
    
          activeTransaction.metadata.propagations++;
        }
      }
    }
    
    function addTracingHeadersToFetchRequest(
      request,
      dynamicSamplingContext,
      span,
      options
    
    ,
    ) {
      const sentryBaggageHeader = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_3__.dynamicSamplingContextToSentryBaggageHeader)(dynamicSamplingContext);
      const sentryTraceHeader = span.toTraceparent();
    
      const headers =
        typeof Request !== 'undefined' && (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_4__.isInstanceOf)(request, Request) ? (request ).headers : options.headers;
    
      if (!headers) {
        return { 'sentry-trace': sentryTraceHeader, baggage: sentryBaggageHeader };
      } else if (typeof Headers !== 'undefined' && (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_4__.isInstanceOf)(headers, Headers)) {
        const newHeaders = new Headers(headers );
    
        newHeaders.append('sentry-trace', sentryTraceHeader);
    
        if (sentryBaggageHeader) {
          // If the same header is appended miultiple times the browser will merge the values into a single request header.
          // Its therefore safe to simply push a "baggage" entry, even though there might already be another baggage header.
          newHeaders.append(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__.BAGGAGE_HEADER_NAME, sentryBaggageHeader);
        }
    
        return newHeaders ;
      } else if (Array.isArray(headers)) {
        const newHeaders = [...headers, ['sentry-trace', sentryTraceHeader]];
    
        if (sentryBaggageHeader) {
          // If there are multiple entries with the same key, the browser will merge the values into a single request header.
          // Its therefore safe to simply push a "baggage" entry, even though there might already be another baggage header.
          newHeaders.push([_sentry_utils__WEBPACK_IMPORTED_MODULE_3__.BAGGAGE_HEADER_NAME, sentryBaggageHeader]);
        }
    
        return newHeaders;
      } else {
        const existingBaggageHeader = 'baggage' in headers ? headers.baggage : undefined;
        const newBaggageHeaders = [];
    
        if (Array.isArray(existingBaggageHeader)) {
          newBaggageHeaders.push(...existingBaggageHeader);
        } else if (existingBaggageHeader) {
          newBaggageHeaders.push(existingBaggageHeader);
        }
    
        if (sentryBaggageHeader) {
          newBaggageHeaders.push(sentryBaggageHeader);
        }
    
        return {
          ...(headers ),
          'sentry-trace': sentryTraceHeader,
          baggage: newBaggageHeaders.length > 0 ? newBaggageHeaders.join(',') : undefined,
        };
      }
    }
    
    /**
     * Create and track xhr request spans
     */
    function xhrCallback(
      handlerData,
      shouldCreateSpan,
      shouldAttachHeaders,
      spans,
    ) {
      if (
        !(0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.hasTracingEnabled)() ||
        (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||
        !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))
      ) {
        return;
      }
    
      const xhr = handlerData.xhr.__sentry_xhr__;
    
      // check first if the request has finished and is tracked by an existing span which should now end
      if (handlerData.endTimestamp) {
        const spanId = handlerData.xhr.__sentry_xhr_span_id__;
        if (!spanId) return;
    
        const span = spans[spanId];
        if (span) {
          span.setHttpStatus(xhr.status_code);
          span.finish();
    
          // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
          delete spans[spanId];
        }
        return;
      }
    
      // if not, create a new span to track it
      const activeTransaction = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.getActiveTransaction)();
      if (activeTransaction) {
        const span = activeTransaction.startChild({
          data: {
            ...xhr.data,
            type: 'xhr',
            method: xhr.method,
            url: xhr.url,
          },
          description: `${xhr.method} ${xhr.url}`,
          op: 'http.client',
        });
    
        handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;
        spans[handlerData.xhr.__sentry_xhr_span_id__] = span;
    
        if (handlerData.xhr.setRequestHeader && shouldAttachHeaders(handlerData.xhr.__sentry_xhr__.url)) {
          try {
            handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());
    
            const dynamicSamplingContext = activeTransaction.getDynamicSamplingContext();
            const sentryBaggageHeader = (0,_sentry_utils__WEBPACK_IMPORTED_MODULE_3__.dynamicSamplingContextToSentryBaggageHeader)(dynamicSamplingContext);
    
            if (sentryBaggageHeader) {
              // From MDN: "If this method is called several times with the same header, the values are merged into one single request header."
              // We can therefore simply set a baggage header without checking what was there before
              // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader
              handlerData.xhr.setRequestHeader(_sentry_utils__WEBPACK_IMPORTED_MODULE_3__.BAGGAGE_HEADER_NAME, sentryBaggageHeader);
            }
    
            activeTransaction.metadata.propagations++;
          } catch (_) {
            // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.
          }
        }
      }
    }
    
    
    //# sourceMappingURL=request.js.map
    
    
    /***/ }),
    
    /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    /* harmony export */ __webpack_require__.d(__webpack_exports__, {
    /* harmony export */   "_addMeasureSpans": () => (/* binding */ _addMeasureSpans),
    /* harmony export */   "_addResourceSpans": () => (/* binding */ _addResourceSpans),
    /* harmony export */   "addPerformanceEntries": () => (/* binding */ addPerformanceEntries),
    /* harmony export */   "startTrackingLongTasks": () => (/* binding */ startTrackingLongTasks),
    /* harmony export */   "startTrackingWebVitals": () => (/* binding */ startTrackingWebVitals)
    /* harmony export */ });
    
    /* harmony import */ var _sentry_utils_esm_buildPolyfills__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(1688);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1643);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1653);
    /* harmony import */ var _sentry_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(1651);
    /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1733);
    /* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1751);
    /* harmony import */ var _web_vitals_getCLS_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1755);
    /* harmony import */ var _web_vitals_getFID_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1764);
    /* harmony import */ var _web_vitals_getLCP_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1762);
    /* harmony import */ var _web_vitals_lib_getVisibilityWatcher_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(1763);
    /* harmony import */ var _web_vitals_lib_observe_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1754);
    /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(1765);
    
    251774 251775 251776 251777 251778 251779 251780 251781 251782 251783 251784 251785 251786 251787 251788 251789 251790 251791 251792 251793 251794 251795 251796 251797 251798 251799 251800 251801 251802 251803 251804 251805 251806 251807 251808 251809 251810 251811 251812 251813 251814 251815 251816 251817 251818 251819 251820 251821 251822 251823 251824 251825 251826 251827 251828 251829 251830 251831 251832 251833 251834 251835 251836 251837 251838 251839 251840 251841 251842 251843 251844 251845 251846 251847 251848 251849 251850 251851 251852 251853 251854 251855 251856 251857 251858 251859 251860 251861 251862 251863 251864 251865 251866 251867 251868 251869 251870 251871 251872 251873 251874 251875 251876 251877 251878 251879 251880 251881 251882 251883 251884 251885 251886 251887 251888 251889 251890 251891 251892 251893 251894 251895 251896 251897 251898 251899 251900 251901 251902 251903 251904 251905 251906 251907 251908 251909 251910 251911 251912 251913 251914 251915 251916 251917 251918 251919 251920 251921 251922 251923 251924 251925 251926 251927 251928 251929 251930 251931 251932 251933 251934 251935 251936 251937 251938 251939 251940 251941 251942 251943 251944 251945 251946 251947 251948 251949 251950 251951 251952 251953 251954 251955 251956 251957 251958 251959 251960 251961 251962 251963 251964 251965 251966 251967 251968 251969 251970 251971 251972 251973 251974 251975 251976 251977 251978 251979 251980 251981 251982 251983 251984 251985 251986 251987 251988 251989 251990 251991 251992 251993 251994 251995 251996 251997 251998 251999 252000
    
    
    
    
    
    
    
    
    
    
    
    function getBrowserPerformanceAPI() {
      return _types_js__WEBPACK_IMPORTED_MODULE_0__.WINDOW && _types_js__WEBPACK_IMPORTED_MODULE_0__.WINDOW.addEventListener && _types_js__WEBPACK_IMPORTED_MODULE_0__.WINDOW.performance;
    }
    
    let _performanceCursor = 0;
    
    let _measurements = {};
    let _lcpEntry;
    let _clsEntry;
    
    /**
     * Start tracking web vitals
     */
    function startTrackingWebVitals(reportAllChanges = false) {
      const performance = getBrowserPerformanceAPI();
      if (performance && _sentry_utils__WEBPACK_IMPORTED_MODULE_1__.browserPerformanceTimeOrigin) {
        if (performance.mark) {
          _types_js__WEBPACK_IMPORTED_MODULE_0__.WINDOW.performance.mark('sentry-tracing-init');
        }
        _trackCLS();
        _trackLCP(reportAllChanges);
        _trackFID();
      }
    }
    
    /**
     * Start tracking long tasks.
     */
    function startTrackingLongTasks() {
      const entryHandler = (entries) => {
        for (const entry of entries) {
          const transaction = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.getActiveTransaction)() ;
          if (!transaction) {
            return;
          }
          const startTime = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.msToSec)((_sentry_utils__WEBPACK_IMPORTED_MODULE_1__.browserPerformanceTimeOrigin ) + entry.startTime);
          const duration = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.msToSec)(entry.duration);
    
          transaction.startChild({
            description: 'Main UI thread blocked',
            op: 'ui.long-task',
            startTimestamp: startTime,
            endTimestamp: startTime + duration,
          });
        }
      };
    
      (0,_web_vitals_lib_observe_js__WEBPACK_IMPORTED_MODULE_3__.observe)('longtask', entryHandler);
    }
    
    /** Starts tracking the Cumulative Layout Shift on the current page. */
    function _trackCLS() {
      // See:
      // https://web.dev/evolving-cls/
      // https://web.dev/cls-web-tooling/
      (0,_web_vitals_getCLS_js__WEBPACK_IMPORTED_MODULE_4__.onCLS)(metric => {
        const entry = metric.entries.pop();
        if (!entry) {
          return;
        }
    
        (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_5__.logger.log('[Measurements] Adding CLS');
        _measurements['cls'] = { value: metric.value, unit: '' };
        _clsEntry = entry ;
      });
    }
    
    /** Starts tracking the Largest Contentful Paint on the current page. */
    function _trackLCP(reportAllChanges) {
      (0,_web_vitals_getLCP_js__WEBPACK_IMPORTED_MODULE_6__.onLCP)(
        metric => {
          const entry = metric.entries.pop();
          if (!entry) {
            return;
          }
    
          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_5__.logger.log('[Measurements] Adding LCP');
          _measurements['lcp'] = { value: metric.value, unit: 'millisecond' };
          _lcpEntry = entry ;
        },
        { reportAllChanges },
      );
    }
    
    /** Starts tracking the First Input Delay on the current page. */
    function _trackFID() {
      (0,_web_vitals_getFID_js__WEBPACK_IMPORTED_MODULE_7__.onFID)(metric => {
        const entry = metric.entries.pop();
        if (!entry) {
          return;
        }
    
        const timeOrigin = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.msToSec)(_sentry_utils__WEBPACK_IMPORTED_MODULE_1__.browserPerformanceTimeOrigin );
        const startTime = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.msToSec)(entry.startTime);
        (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_5__.logger.log('[Measurements] Adding FID');
        _measurements['fid'] = { value: metric.value, unit: 'millisecond' };
        _measurements['mark.fid'] = { value: timeOrigin + startTime, unit: 'second' };
      });
    }
    
    /** Add performance related spans to a transaction */
    function addPerformanceEntries(transaction) {
      const performance = getBrowserPerformanceAPI();
      if (!performance || !_types_js__WEBPACK_IMPORTED_MODULE_0__.WINDOW.performance.getEntries || !_sentry_utils__WEBPACK_IMPORTED_MODULE_1__.browserPerformanceTimeOrigin) {
        // Gatekeeper if performance API not available
        return;
      }
    
      (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_5__.logger.log('[Tracing] Adding & adjusting spans using Performance API');
      const timeOrigin = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.msToSec)(_sentry_utils__WEBPACK_IMPORTED_MODULE_1__.browserPerformanceTimeOrigin);
    
      const performanceEntries = performance.getEntries();
    
      let responseStartTimestamp;
      let requestStartTimestamp;
    
      // eslint-disable-next-line @typescript-eslint/no-explicit-any
      performanceEntries.slice(_performanceCursor).forEach((entry) => {
        const startTime = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.msToSec)(entry.startTime);
        const duration = (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.msToSec)(entry.duration);
    
        if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {
          return;
        }
    
        switch (entry.entryType) {
          case 'navigation': {
            _addNavigationSpans(transaction, entry, timeOrigin);
            responseStartTimestamp = timeOrigin + (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.msToSec)(entry.responseStart);
            requestStartTimestamp = timeOrigin + (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.msToSec)(entry.requestStart);
            break;
          }
          case 'mark':
          case 'paint':
          case 'measure': {
            _addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);
    
            // capture web vitals
            const firstHidden = (0,_web_vitals_lib_getVisibilityWatcher_js__WEBPACK_IMPORTED_MODULE_8__.getVisibilityWatcher)();
            // Only report if the page wasn't hidden prior to the web vital.
            const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;
    
            if (entry.name === 'first-paint' && shouldRecord) {
              (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_5__.logger.log('[Measurements] Adding FP');
              _measurements['fp'] = { value: entry.startTime, unit: 'millisecond' };
            }
            if (entry.name === 'first-contentful-paint' && shouldRecord) {
              (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_5__.logger.log('[Measurements] Adding FCP');
              _measurements['fcp'] = { value: entry.startTime, unit: 'millisecond' };
            }
            break;
          }
          case 'resource': {
            const resourceName = (entry.name ).replace(_types_js__WEBPACK_IMPORTED_MODULE_0__.WINDOW.location.origin, '');
            _addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);
            break;
          }
          default:
          // Ignore other entry types.
        }
      });
    
      _performanceCursor = Math.max(performanceEntries.length - 1, 0);
    
      _trackNavigator(transaction);
    
      // Measurements are only available for pageload transactions
      if (transaction.op === 'pageload') {
        // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the
        // start of the response in milliseconds
        if (typeof responseStartTimestamp === 'number') {
          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && _sentry_utils__WEBPACK_IMPORTED_MODULE_5__.logger.log('[Measurements] Adding TTFB');
          _measurements['ttfb'] = {
            value: (responseStartTimestamp - transaction.startTimestamp) * 1000,
            unit: 'millisecond',
          };
    
          if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {
            // Capture the time spent making the request and receiving the first byte of the response.
            // This is the time between the start of the request and the start of the response in milliseconds.
            _measurements['ttfb.requestTime'] = {
              value: (responseStartTimestamp - requestStartTimestamp) * 1000,
              unit: 'millisecond',
            };
          }
        }
    
        ['fcp', 'fp', 'lcp'].forEach(name => {
          if (!_measurements[name] || timeOrigin >= transaction.startTimestamp) {
            return;
          }
          // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.
          // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need
          // to be adjusted to be relative to transaction.startTimestamp.
          const oldValue = _measurements[name].value;
          const measurementTimestamp = timeOrigin + (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.msToSec)(oldValue);
    
          // normalizedValue should be in milliseconds
          const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);
          const delta = normalizedValue - oldValue;
    
          (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) &&
            _sentry_utils__WEBPACK_IMPORTED_MODULE_5__.logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);
          _measurements[name].value = normalizedValue;
        });
    
        const fidMark = _measurements['mark.fid'];
        if (fidMark && _measurements['fid']) {
          // create span for FID
          (0,_utils_js__WEBPACK_IMPORTED_MODULE_9__._startChild)(transaction, {
            description: 'first input delay',
            endTimestamp: fidMark.value + (0,_utils_js__WEBPACK_IMPORTED_MODULE_2__.msToSec)(_measurements['fid'].value),
            op: 'ui.action',
            startTimestamp: fidMark.value,
          });