Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Socket
Sign inDemoInstall

@datadog/browser-rum-core

Package Overview
Dependencies
Maintainers
1
Versions
179
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@datadog/browser-rum-core - npm Package Compare versions

Comparing version 4.17.2 to 4.18.1

2

cjs/boot/startRum.js

@@ -54,3 +54,3 @@ "use strict";

(0, longTaskCollection_1.startLongTaskCollection)(lifeCycle, session);
(0, resourceCollection_1.startResourceCollection)(lifeCycle);
(0, resourceCollection_1.startResourceCollection)(lifeCycle, configuration);
var _b = (0, viewCollection_1.startViewCollection)(lifeCycle, configuration, location, domMutationObservable, locationChangeObservable, foregroundContexts, recorderApi, initialViewOptions), addTiming = _b.addTiming, startView = _b.startView;

@@ -57,0 +57,0 @@ var addError = (0, errorCollection_1.startErrorCollection)(lifeCycle, foregroundContexts).addError;

@@ -51,3 +51,3 @@ "use strict";

},
browser_sdk_version: (0, browser_core_1.canUseEventBridge)() ? "4.17.2" : undefined,
browser_sdk_version: (0, browser_core_1.canUseEventBridge)() ? "4.18.1" : undefined,
},

@@ -54,0 +54,0 @@ application: {

@@ -26,3 +26,3 @@ import type { Configuration, InitConfiguration } from '@datadog/browser-core';

allowedTracingOrigins: Array<string | RegExp>;
tracingSampleRate: number;
tracingSampleRate: number | undefined;
excludedActivityUrls: Array<string | RegExp>;

@@ -29,0 +29,0 @@ applicationId: string;

@@ -6,3 +6,3 @@ "use strict";

function validateAndBuildRumConfiguration(initConfiguration) {
var _a, _b, _c, _d;
var _a, _b, _c;
if (!initConfiguration.applicationId) {

@@ -47,4 +47,4 @@ browser_core_1.display.error('Application ID is not configured, no RUM data will be collected.');

allowedTracingOrigins: (_b = initConfiguration.allowedTracingOrigins) !== null && _b !== void 0 ? _b : [],
tracingSampleRate: (_c = initConfiguration.tracingSampleRate) !== null && _c !== void 0 ? _c : 100,
excludedActivityUrls: (_d = initConfiguration.excludedActivityUrls) !== null && _d !== void 0 ? _d : [],
tracingSampleRate: initConfiguration.tracingSampleRate,
excludedActivityUrls: (_c = initConfiguration.excludedActivityUrls) !== null && _c !== void 0 ? _c : [],
trackInteractions: !!initConfiguration.trackInteractions || trackFrustrations,

@@ -51,0 +51,0 @@ trackFrustrations: trackFrustrations,

@@ -0,2 +1,3 @@

import type { RumConfiguration } from '../../configuration';
import type { LifeCycle } from '../../lifeCycle';
export declare function startResourceCollection(lifeCycle: LifeCycle): void;
export declare function startResourceCollection(lifeCycle: LifeCycle, configuration: RumConfiguration): void;

@@ -8,5 +8,5 @@ "use strict";

var resourceUtils_1 = require("./resourceUtils");
function startResourceCollection(lifeCycle) {
function startResourceCollection(lifeCycle, configuration) {
lifeCycle.subscribe(6 /* REQUEST_COMPLETED */, function (request) {
lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processRequest(request));
lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processRequest(request, configuration));
});

@@ -17,3 +17,3 @@ lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {

if (entry.entryType === 'resource' && !(0, resourceUtils_1.isRequestKind)(entry)) {
lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processResourceEntry(entry));
lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processResourceEntry(entry, configuration));
}

@@ -24,3 +24,3 @@ }

exports.startResourceCollection = startResourceCollection;
function processRequest(request) {
function processRequest(request, configuration) {
var type = request.type === "xhr" /* XHR */ ? "xhr" /* XHR */ : "fetch" /* FETCH */;

@@ -30,3 +30,3 @@ var matchingTiming = (0, matchRequestTiming_1.matchRequestTiming)(request);

var correspondingTimingOverrides = matchingTiming ? computePerformanceEntryMetrics(matchingTiming) : undefined;
var tracingInfo = computeRequestTracingInfo(request);
var tracingInfo = computeRequestTracingInfo(request, configuration);
var resourceEvent = (0, browser_core_1.combine)({

@@ -57,6 +57,6 @@ date: startClocks.timeStamp,

}
function processResourceEntry(entry) {
function processResourceEntry(entry, configuration) {
var type = (0, resourceUtils_1.computeResourceKind)(entry);
var entryMetrics = computePerformanceEntryMetrics(entry);
var tracingInfo = computeEntryTracingInfo(entry);
var tracingInfo = computeEntryTracingInfo(entry, configuration);
var startClocks = (0, browser_core_1.relativeToClocks)(entry.startTime);

@@ -88,3 +88,3 @@ var resourceEvent = (0, browser_core_1.combine)({

}
function computeRequestTracingInfo(request) {
function computeRequestTracingInfo(request, configuration) {
var hasBeenTraced = request.traceSampled && request.traceId && request.spanId;

@@ -98,7 +98,17 @@ if (!hasBeenTraced) {

trace_id: request.traceId.toDecimalString(),
rule_psr: getRulePsr(configuration),
},
};
}
function computeEntryTracingInfo(entry) {
return entry.traceId ? { _dd: { trace_id: entry.traceId } } : undefined;
function computeEntryTracingInfo(entry, configuration) {
var hasBeenTraced = entry.traceId;
if (!hasBeenTraced) {
return undefined;
}
return {
_dd: {
trace_id: entry.traceId,
rule_psr: getRulePsr(configuration),
},
};
}

@@ -111,2 +121,8 @@ function toPerformanceEntryRepresentation(entry) {

}
/**
* @returns number between 0 and 1 which represents tracing sample rate
*/
function getRulePsr(configuration) {
return (0, browser_core_1.isNumber)(configuration.tracingSampleRate) ? configuration.tracingSampleRate / 100 : undefined;
}
//# sourceMappingURL=resourceCollection.js.map

@@ -81,3 +81,3 @@ "use strict";

context.spanId = new TraceIdentifier();
context.traceSampled = (0, browser_core_1.performDraw)(configuration.tracingSampleRate);
context.traceSampled = !(0, browser_core_1.isNumber)(configuration.tracingSampleRate) || (0, browser_core_1.performDraw)(configuration.tracingSampleRate);
inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled));

@@ -84,0 +84,0 @@ }

@@ -31,2 +31,3 @@ import type { Context, Duration, ErrorSource, ErrorHandling, ResourceType, ServerDuration, TimeStamp } from '@datadog/browser-core';

span_id?: string;
rule_psr?: number;
};

@@ -33,0 +34,0 @@ }

@@ -49,3 +49,3 @@ /**

*/
readonly type: ('rage_click' | 'dead_click' | 'error_click')[];
readonly type: ('rage_click' | 'dead_click' | 'error_click' | 'rage_tap' | 'error_tap')[];
[k: string]: unknown;

@@ -433,2 +433,6 @@ };

readonly trace_id?: string;
/**
* tracing sample rate in decimal format
*/
readonly rule_psr?: number;
[k: string]: unknown;

@@ -681,3 +685,3 @@ };

*/
readonly source?: 'android' | 'ios' | 'browser' | 'flutter' | 'react-native';
readonly source?: 'android' | 'ios' | 'browser' | 'flutter' | 'react-native' | 'roku';
/**

@@ -684,0 +688,0 @@ * View properties

@@ -28,3 +28,3 @@ "use strict";

function createRumBatch(endpointBuilder, unloadCallback) {
return new browser_core_1.Batch(new browser_core_1.HttpRequest(endpointBuilder, configuration.batchBytesLimit), configuration.batchMessagesLimit, configuration.batchBytesLimit, configuration.messageBytesLimit, configuration.flushTimeout, unloadCallback);
return new browser_core_1.Batch((0, browser_core_1.createHttpRequest)(endpointBuilder, configuration.batchBytesLimit), configuration.batchMessagesLimit, configuration.batchBytesLimit, configuration.messageBytesLimit, configuration.flushTimeout, unloadCallback);
}

@@ -31,0 +31,0 @@ function withReplicaApplicationId(message) {

@@ -51,3 +51,3 @@ import { startTelemetry, canUseEventBridge, getEventBridge } from '@datadog/browser-core';

startLongTaskCollection(lifeCycle, session);
startResourceCollection(lifeCycle);
startResourceCollection(lifeCycle, configuration);
var _b = startViewCollection(lifeCycle, configuration, location, domMutationObservable, locationChangeObservable, foregroundContexts, recorderApi, initialViewOptions), addTiming = _b.addTiming, startView = _b.startView;

@@ -54,0 +54,0 @@ var addError = startErrorCollection(lifeCycle, foregroundContexts).addError;

@@ -48,3 +48,3 @@ import { combine, isEmptyObject, limitModification, timeStampNow, currentDrift, display, createEventRateLimiter, canUseEventBridge, } from '@datadog/browser-core';

},
browser_sdk_version: canUseEventBridge() ? "4.17.2" : undefined,
browser_sdk_version: canUseEventBridge() ? "4.18.1" : undefined,
},

@@ -51,0 +51,0 @@ application: {

@@ -26,3 +26,3 @@ import type { Configuration, InitConfiguration } from '@datadog/browser-core';

allowedTracingOrigins: Array<string | RegExp>;
tracingSampleRate: number;
tracingSampleRate: number | undefined;
excludedActivityUrls: Array<string | RegExp>;

@@ -29,0 +29,0 @@ applicationId: string;

import { assign, DefaultPrivacyLevel, display, isPercentage, objectHasValue, validateAndBuildConfiguration, } from '@datadog/browser-core';
export function validateAndBuildRumConfiguration(initConfiguration) {
var _a, _b, _c, _d;
var _a, _b, _c;
if (!initConfiguration.applicationId) {

@@ -43,4 +43,4 @@ display.error('Application ID is not configured, no RUM data will be collected.');

allowedTracingOrigins: (_b = initConfiguration.allowedTracingOrigins) !== null && _b !== void 0 ? _b : [],
tracingSampleRate: (_c = initConfiguration.tracingSampleRate) !== null && _c !== void 0 ? _c : 100,
excludedActivityUrls: (_d = initConfiguration.excludedActivityUrls) !== null && _d !== void 0 ? _d : [],
tracingSampleRate: initConfiguration.tracingSampleRate,
excludedActivityUrls: (_c = initConfiguration.excludedActivityUrls) !== null && _c !== void 0 ? _c : [],
trackInteractions: !!initConfiguration.trackInteractions || trackFrustrations,

@@ -47,0 +47,0 @@ trackFrustrations: trackFrustrations,

@@ -0,2 +1,3 @@

import type { RumConfiguration } from '../../configuration';
import type { LifeCycle } from '../../lifeCycle';
export declare function startResourceCollection(lifeCycle: LifeCycle): void;
export declare function startResourceCollection(lifeCycle: LifeCycle, configuration: RumConfiguration): void;

@@ -1,8 +0,8 @@

import { combine, generateUUID, toServerDuration, relativeToClocks, assign, } from '@datadog/browser-core';
import { combine, generateUUID, toServerDuration, relativeToClocks, assign, isNumber, } from '@datadog/browser-core';
import { supportPerformanceEntry } from '../../../browser/performanceCollection';
import { matchRequestTiming } from './matchRequestTiming';
import { computePerformanceResourceDetails, computePerformanceResourceDuration, computeResourceKind, computeSize, isRequestKind, } from './resourceUtils';
export function startResourceCollection(lifeCycle) {
export function startResourceCollection(lifeCycle, configuration) {
lifeCycle.subscribe(6 /* REQUEST_COMPLETED */, function (request) {
lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processRequest(request));
lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processRequest(request, configuration));
});

@@ -13,3 +13,3 @@ lifeCycle.subscribe(0 /* PERFORMANCE_ENTRIES_COLLECTED */, function (entries) {

if (entry.entryType === 'resource' && !isRequestKind(entry)) {
lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processResourceEntry(entry));
lifeCycle.notify(10 /* RAW_RUM_EVENT_COLLECTED */, processResourceEntry(entry, configuration));
}

@@ -19,3 +19,3 @@ }

}
function processRequest(request) {
function processRequest(request, configuration) {
var type = request.type === "xhr" /* XHR */ ? "xhr" /* XHR */ : "fetch" /* FETCH */;

@@ -25,3 +25,3 @@ var matchingTiming = matchRequestTiming(request);

var correspondingTimingOverrides = matchingTiming ? computePerformanceEntryMetrics(matchingTiming) : undefined;
var tracingInfo = computeRequestTracingInfo(request);
var tracingInfo = computeRequestTracingInfo(request, configuration);
var resourceEvent = combine({

@@ -52,6 +52,6 @@ date: startClocks.timeStamp,

}
function processResourceEntry(entry) {
function processResourceEntry(entry, configuration) {
var type = computeResourceKind(entry);
var entryMetrics = computePerformanceEntryMetrics(entry);
var tracingInfo = computeEntryTracingInfo(entry);
var tracingInfo = computeEntryTracingInfo(entry, configuration);
var startClocks = relativeToClocks(entry.startTime);

@@ -83,3 +83,3 @@ var resourceEvent = combine({

}
function computeRequestTracingInfo(request) {
function computeRequestTracingInfo(request, configuration) {
var hasBeenTraced = request.traceSampled && request.traceId && request.spanId;

@@ -93,7 +93,17 @@ if (!hasBeenTraced) {

trace_id: request.traceId.toDecimalString(),
rule_psr: getRulePsr(configuration),
},
};
}
function computeEntryTracingInfo(entry) {
return entry.traceId ? { _dd: { trace_id: entry.traceId } } : undefined;
function computeEntryTracingInfo(entry, configuration) {
var hasBeenTraced = entry.traceId;
if (!hasBeenTraced) {
return undefined;
}
return {
_dd: {
trace_id: entry.traceId,
rule_psr: getRulePsr(configuration),
},
};
}

@@ -106,2 +116,8 @@ function toPerformanceEntryRepresentation(entry) {

}
/**
* @returns number between 0 and 1 which represents tracing sample rate
*/
function getRulePsr(configuration) {
return isNumber(configuration.tracingSampleRate) ? configuration.tracingSampleRate / 100 : undefined;
}
//# sourceMappingURL=resourceCollection.js.map

@@ -1,2 +0,2 @@

import { getOrigin, matchList, objectEntries, shallowClone, performDraw } from '@datadog/browser-core';
import { getOrigin, matchList, objectEntries, shallowClone, performDraw, isNumber } from '@datadog/browser-core';
/**

@@ -76,3 +76,3 @@ * Clear tracing information to avoid incomplete traces. Ideally, we should do it when the

context.spanId = new TraceIdentifier();
context.traceSampled = performDraw(configuration.tracingSampleRate);
context.traceSampled = !isNumber(configuration.tracingSampleRate) || performDraw(configuration.tracingSampleRate);
inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled));

@@ -79,0 +79,0 @@ }

@@ -31,2 +31,3 @@ import type { Context, Duration, ErrorSource, ErrorHandling, ResourceType, ServerDuration, TimeStamp } from '@datadog/browser-core';

span_id?: string;
rule_psr?: number;
};

@@ -33,0 +34,0 @@ }

@@ -49,3 +49,3 @@ /**

*/
readonly type: ('rage_click' | 'dead_click' | 'error_click')[];
readonly type: ('rage_click' | 'dead_click' | 'error_click' | 'rage_tap' | 'error_tap')[];
[k: string]: unknown;

@@ -433,2 +433,6 @@ };

readonly trace_id?: string;
/**
* tracing sample rate in decimal format
*/
readonly rule_psr?: number;
[k: string]: unknown;

@@ -681,3 +685,3 @@ };

*/
readonly source?: 'android' | 'ios' | 'browser' | 'flutter' | 'react-native';
readonly source?: 'android' | 'ios' | 'browser' | 'flutter' | 'react-native' | 'roku';
/**

@@ -684,0 +688,0 @@ * View properties

@@ -1,2 +0,2 @@

import { Batch, combine, HttpRequest, isTelemetryReplicationAllowed } from '@datadog/browser-core';
import { Batch, combine, createHttpRequest, isTelemetryReplicationAllowed } from '@datadog/browser-core';
export function startRumBatch(configuration, lifeCycle, telemetryEventObservable) {

@@ -24,3 +24,3 @@ var batch = makeRumBatch(configuration, lifeCycle);

function createRumBatch(endpointBuilder, unloadCallback) {
return new Batch(new HttpRequest(endpointBuilder, configuration.batchBytesLimit), configuration.batchMessagesLimit, configuration.batchBytesLimit, configuration.messageBytesLimit, configuration.flushTimeout, unloadCallback);
return new Batch(createHttpRequest(endpointBuilder, configuration.batchBytesLimit), configuration.batchMessagesLimit, configuration.batchBytesLimit, configuration.messageBytesLimit, configuration.flushTimeout, unloadCallback);
}

@@ -27,0 +27,0 @@ function withReplicaApplicationId(message) {

{
"name": "@datadog/browser-rum-core",
"version": "4.17.2",
"version": "4.18.1",
"license": "Apache-2.0",

@@ -15,3 +15,3 @@ "main": "cjs/index.js",

"dependencies": {
"@datadog/browser-core": "4.17.2"
"@datadog/browser-core": "4.18.1"
},

@@ -26,3 +26,3 @@ "devDependencies": {

},
"gitHead": "b4a39bcc003ad5f38044dfedbe3bd3b118281183"
"gitHead": "bd833602495172229db1e133b89a9f2b0b8eea9e"
}

@@ -73,3 +73,3 @@ import type { Observable, TelemetryEvent } from '@datadog/browser-core'

startLongTaskCollection(lifeCycle, session)
startResourceCollection(lifeCycle)
startResourceCollection(lifeCycle, configuration)
const { addTiming, startView } = startViewCollection(

@@ -76,0 +76,0 @@ lifeCycle,

@@ -61,4 +61,4 @@ import { DefaultPrivacyLevel, display } from '@datadog/browser-core'

describe('tracingSampleRate', () => {
it('defaults to 100 if the option is not provided', () => {
expect(validateAndBuildRumConfiguration(DEFAULT_INIT_CONFIGURATION)!.tracingSampleRate).toBe(100)
it('defaults to undefined if the option is not provided', () => {
expect(validateAndBuildRumConfiguration(DEFAULT_INIT_CONFIGURATION)!.tracingSampleRate).toBeUndefined()
})

@@ -65,0 +65,0 @@

@@ -46,3 +46,3 @@ import type { Configuration, InitConfiguration } from '@datadog/browser-core'

allowedTracingOrigins: Array<string | RegExp>
tracingSampleRate: number
tracingSampleRate: number | undefined
excludedActivityUrls: Array<string | RegExp>

@@ -108,3 +108,3 @@ applicationId: string

allowedTracingOrigins: initConfiguration.allowedTracingOrigins ?? [],
tracingSampleRate: initConfiguration.tracingSampleRate ?? 100,
tracingSampleRate: initConfiguration.tracingSampleRate,
excludedActivityUrls: initConfiguration.excludedActivityUrls ?? [],

@@ -111,0 +111,0 @@ trackInteractions: !!initConfiguration.trackInteractions || trackFrustrations,

@@ -11,2 +11,3 @@ import type { Duration, RelativeTime, ServerDuration, TimeStamp } from '@datadog/browser-core'

import { TraceIdentifier } from '../../tracing/tracer'
import { validateAndBuildRumConfiguration } from '../../configuration'
import { startResourceCollection } from './resourceCollection'

@@ -19,3 +20,6 @@

setupBuilder = setup().beforeBuild(({ lifeCycle }) => {
startResourceCollection(lifeCycle)
startResourceCollection(
lifeCycle,
validateAndBuildRumConfiguration({ clientToken: 'xxx', applicationId: 'xxx' })!
)
})

@@ -191,2 +195,76 @@ })

})
it('should pull tracingSampleRate from config if present', () => {
setupBuilder = setup().beforeBuild(({ lifeCycle }) => {
startResourceCollection(
lifeCycle,
validateAndBuildRumConfiguration({
clientToken: 'xxx',
applicationId: 'xxx',
tracingSampleRate: 60,
})!
)
})
const { lifeCycle, rawRumEvents } = setupBuilder.build()
lifeCycle.notify(
LifeCycleEventType.REQUEST_COMPLETED,
createCompletedRequest({
traceSampled: true,
spanId: new TraceIdentifier(),
traceId: new TraceIdentifier(),
})
)
const traceInfo = (rawRumEvents[0].rawRumEvent as RawRumResourceEvent)._dd!
expect(traceInfo.rule_psr).toEqual(0.6)
})
it('should not define rule_psr if tracingSampleRate is undefined', () => {
setupBuilder = setup().beforeBuild(({ lifeCycle }) => {
startResourceCollection(
lifeCycle,
validateAndBuildRumConfiguration({
clientToken: 'xxx',
applicationId: 'xxx',
})!
)
})
const { lifeCycle, rawRumEvents } = setupBuilder.build()
lifeCycle.notify(
LifeCycleEventType.REQUEST_COMPLETED,
createCompletedRequest({
traceSampled: true,
spanId: new TraceIdentifier(),
traceId: new TraceIdentifier(),
})
)
const traceInfo = (rawRumEvents[0].rawRumEvent as RawRumResourceEvent)._dd!
expect(traceInfo.rule_psr).toBeUndefined()
})
it('should define rule_psr to 0 if tracingSampleRate is set to 0', () => {
setupBuilder = setup().beforeBuild(({ lifeCycle }) => {
startResourceCollection(
lifeCycle,
validateAndBuildRumConfiguration({
clientToken: 'xxx',
applicationId: 'xxx',
tracingSampleRate: 0,
})!
)
})
const { lifeCycle, rawRumEvents } = setupBuilder.build()
lifeCycle.notify(
LifeCycleEventType.REQUEST_COMPLETED,
createCompletedRequest({
traceSampled: true,
spanId: new TraceIdentifier(),
traceId: new TraceIdentifier(),
})
)
const traceInfo = (rawRumEvents[0].rawRumEvent as RawRumResourceEvent)._dd!
expect(traceInfo.rule_psr).toEqual(0)
})
})

@@ -193,0 +271,0 @@ })

@@ -9,3 +9,5 @@ import {

assign,
isNumber,
} from '@datadog/browser-core'
import type { RumConfiguration } from '../../configuration'
import type { RumPerformanceEntry, RumPerformanceResourceTiming } from '../../../browser/performanceCollection'

@@ -32,5 +34,5 @@ import { supportPerformanceEntry } from '../../../browser/performanceCollection'

export function startResourceCollection(lifeCycle: LifeCycle) {
export function startResourceCollection(lifeCycle: LifeCycle, configuration: RumConfiguration) {
lifeCycle.subscribe(LifeCycleEventType.REQUEST_COMPLETED, (request: RequestCompleteEvent) => {
lifeCycle.notify(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, processRequest(request))
lifeCycle.notify(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, processRequest(request, configuration))
})

@@ -41,3 +43,3 @@

if (entry.entryType === 'resource' && !isRequestKind(entry)) {
lifeCycle.notify(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, processResourceEntry(entry))
lifeCycle.notify(LifeCycleEventType.RAW_RUM_EVENT_COLLECTED, processResourceEntry(entry, configuration))
}

@@ -48,3 +50,6 @@ }

function processRequest(request: RequestCompleteEvent): RawRumEventCollectedData<RawRumResourceEvent> {
function processRequest(
request: RequestCompleteEvent,
configuration: RumConfiguration
): RawRumEventCollectedData<RawRumResourceEvent> {
const type = request.type === RequestType.XHR ? ResourceType.XHR : ResourceType.FETCH

@@ -56,3 +61,3 @@

const tracingInfo = computeRequestTracingInfo(request)
const tracingInfo = computeRequestTracingInfo(request, configuration)

@@ -89,7 +94,11 @@ const resourceEvent = combine(

function processResourceEntry(entry: RumPerformanceResourceTiming): RawRumEventCollectedData<RawRumResourceEvent> {
function processResourceEntry(
entry: RumPerformanceResourceTiming,
configuration: RumConfiguration
): RawRumEventCollectedData<RawRumResourceEvent> {
const type = computeResourceKind(entry)
const entryMetrics = computePerformanceEntryMetrics(entry)
const tracingInfo = computeEntryTracingInfo(entry)
const tracingInfo = computeEntryTracingInfo(entry, configuration)
const startClocks = relativeToClocks(entry.startTime)

@@ -130,3 +139,3 @@ const resourceEvent = combine(

function computeRequestTracingInfo(request: RequestCompleteEvent) {
function computeRequestTracingInfo(request: RequestCompleteEvent, configuration: RumConfiguration) {
const hasBeenTraced = request.traceSampled && request.traceId && request.spanId

@@ -140,2 +149,3 @@ if (!hasBeenTraced) {

trace_id: request.traceId!.toDecimalString(),
rule_psr: getRulePsr(configuration),
},

@@ -145,4 +155,13 @@ }

function computeEntryTracingInfo(entry: RumPerformanceResourceTiming) {
return entry.traceId ? { _dd: { trace_id: entry.traceId } } : undefined
function computeEntryTracingInfo(entry: RumPerformanceResourceTiming, configuration: RumConfiguration) {
const hasBeenTraced = entry.traceId
if (!hasBeenTraced) {
return undefined
}
return {
_dd: {
trace_id: entry.traceId,
rule_psr: getRulePsr(configuration),
},
}
}

@@ -156,1 +175,8 @@

}
/**
* @returns number between 0 and 1 which represents tracing sample rate
*/
function getRulePsr(configuration: RumConfiguration) {
return isNumber(configuration.tracingSampleRate) ? configuration.tracingSampleRate / 100 : undefined
}

@@ -1,2 +0,2 @@

import { getOrigin, matchList, objectEntries, shallowClone, performDraw } from '@datadog/browser-core'
import { getOrigin, matchList, objectEntries, shallowClone, performDraw, isNumber } from '@datadog/browser-core'
import type { RumConfiguration } from '../configuration'

@@ -96,3 +96,3 @@ import type {

context.spanId = new TraceIdentifier()
context.traceSampled = performDraw(configuration.tracingSampleRate)
context.traceSampled = !isNumber(configuration.tracingSampleRate) || performDraw(configuration.tracingSampleRate)
inject(makeTracingHeaders(context.traceId, context.spanId, context.traceSampled))

@@ -99,0 +99,0 @@ }

@@ -41,2 +41,3 @@ import type {

span_id?: string // not available for initial document tracing
rule_psr?: number
}

@@ -43,0 +44,0 @@ }

@@ -51,3 +51,3 @@ /* eslint-disable */

*/
readonly type: ('rage_click' | 'dead_click' | 'error_click')[]
readonly type: ('rage_click' | 'dead_click' | 'error_click' | 'rage_tap' | 'error_tap')[]
[k: string]: unknown

@@ -477,2 +477,6 @@ }

readonly trace_id?: string
/**
* tracing sample rate in decimal format
*/
readonly rule_psr?: number
[k: string]: unknown

@@ -734,3 +738,3 @@ }

*/
readonly source?: 'android' | 'ios' | 'browser' | 'flutter' | 'react-native'
readonly source?: 'android' | 'ios' | 'browser' | 'flutter' | 'react-native' | 'roku'
/**

@@ -737,0 +741,0 @@ * View properties

import type { Context, EndpointBuilder, TelemetryEvent, Observable } from '@datadog/browser-core'
import { Batch, combine, HttpRequest, isTelemetryReplicationAllowed } from '@datadog/browser-core'
import { Batch, combine, createHttpRequest, isTelemetryReplicationAllowed } from '@datadog/browser-core'
import type { RumConfiguration } from '../domain/configuration'

@@ -45,3 +45,3 @@ import type { LifeCycle } from '../domain/lifeCycle'

return new Batch(
new HttpRequest(endpointBuilder, configuration.batchBytesLimit),
createHttpRequest(endpointBuilder, configuration.batchBytesLimit),
configuration.batchMessagesLimit,

@@ -48,0 +48,0 @@ configuration.batchBytesLimit,

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc