@datadog/mobile-react-native
Version:
A client-side React Native module to interact with Datadog
58 lines (56 loc) • 2.31 kB
JavaScript
;
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