UNPKG

@datadog/mobile-react-native

Version:

A client-side React Native module to interact with Datadog

58 lines (56 loc) 2.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DdRumResourceTracking = void 0; var _InternalLog = require("../../../InternalLog"); var _SdkVerbosity = require("../../../SdkVerbosity"); var _firstPartyHosts = require("./distributedTracing/firstPartyHosts"); var _ResourceReporter = require("./requestProxy/XHRProxy/DatadogRumResource/ResourceReporter"); var _internalDevResourceBlocklist = require("./requestProxy/XHRProxy/DatadogRumResource/internalDevResourceBlocklist"); var _XHRProxy = require("./requestProxy/XHRProxy/XHRProxy"); /* * Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0. * This product includes software developed at Datadog (https://www.datadoghq.com/). * Copyright 2016-Present Datadog, Inc. */ /** * Provides RUM auto-instrumentation feature to track resources (fetch, XHR, axios) as RUM events. */ class DdRumResourceTracking { static isTracking = false; /** * Starts tracking resources and sends a RUM Resource event every time a network request is detected. */ static startTracking({ tracingSamplingRate, firstPartyHosts }) { // extra safety to avoid proxying the XHR class twice if (DdRumResourceTracking.isTracking) { _InternalLog.InternalLog.log('Datadog SDK is already tracking XHR resources', _SdkVerbosity.SdkVerbosity.WARN); return; } this.requestProxy = new _XHRProxy.XHRProxy({ xhrType: XMLHttpRequest, resourceReporter: new _ResourceReporter.ResourceReporter([_internalDevResourceBlocklist.filterDevResource]) }); this.requestProxy.onTrackingStart({ tracingSamplingRate, firstPartyHostsRegexMap: (0, _firstPartyHosts.firstPartyHostsRegexMapBuilder)(firstPartyHosts) }); _InternalLog.InternalLog.log('Datadog SDK is tracking XHR resources', _SdkVerbosity.SdkVerbosity.INFO); DdRumResourceTracking.isTracking = true; } static stopTracking() { if (DdRumResourceTracking.isTracking) { DdRumResourceTracking.isTracking = false; if (this.requestProxy) { this.requestProxy.onTrackingStop(); } this.requestProxy = null; } } } exports.DdRumResourceTracking = DdRumResourceTracking; //# sourceMappingURL=DdRumResourceTracking.js.map