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.21.2 to 4.22.0

8

cjs/boot/rumPublicApi.js

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

if (!configuration.trackViewsManually) {
doStartRum(configuration);
doStartRum(initConfiguration, configuration);
}

@@ -68,3 +68,3 @@ else {

startViewStrategy = function (options) {
doStartRum(configuration, options);
doStartRum(initConfiguration, configuration, options);
};

@@ -76,4 +76,4 @@ beforeInitCalls.drain();

}
function doStartRum(configuration, initialViewOptions) {
var startRumResults = startRumImpl(configuration, function () { return ({
function doStartRum(initConfiguration, configuration, initialViewOptions) {
var startRumResults = startRumImpl(initConfiguration, configuration, function () { return ({
user: userContextManager.getContext(),

@@ -80,0 +80,0 @@ context: globalContextManager.getContext(),

@@ -6,6 +6,6 @@ import type { Observable, RawError } from '@datadog/browser-core';

import type { LocationChange } from '../browser/locationChangeObservable';
import type { RumConfiguration } from '../domain/configuration';
import type { RumConfiguration, RumInitConfiguration } from '../domain/configuration';
import type { ViewOptions } from '../domain/rumEventsCollection/view/trackViews';
import type { RecorderApi } from './rumPublicApi';
export declare function startRum(configuration: RumConfiguration, getCommonContext: () => CommonContext, recorderApi: RecorderApi, initialViewOptions?: ViewOptions): {
export declare function startRum(initConfiguration: RumInitConfiguration, configuration: RumConfiguration, getCommonContext: () => CommonContext, recorderApi: RecorderApi, initialViewOptions?: ViewOptions): {
addAction: (action: import("../domain/rumEventsCollection/action/actionCollection").CustomAction, savedCommonContext?: CommonContext | undefined) => void;

@@ -12,0 +12,0 @@ addError: ({ error, handlingStack, startClocks, context: customerContext }: import("../domain/rumEventsCollection/error/errorCollection").ProvidedError, savedCommonContext?: CommonContext | undefined) => void;

@@ -23,3 +23,4 @@ "use strict";

var locationChangeObservable_1 = require("../browser/locationChangeObservable");
function startRum(configuration, getCommonContext, recorderApi, initialViewOptions) {
var configuration_1 = require("../domain/configuration");
function startRum(initConfiguration, configuration, getCommonContext, recorderApi, initialViewOptions) {
var lifeCycle = new lifeCycle_1.LifeCycle();

@@ -57,2 +58,3 @@ var telemetry = startRumTelemetry(configuration);

var _a = startRumEventCollection(lifeCycle, configuration, location, session, locationChangeObservable, domMutationObservable, getCommonContext, reportError), viewContexts = _a.viewContexts, foregroundContexts = _a.foregroundContexts, urlContexts = _a.urlContexts, actionContexts = _a.actionContexts, addAction = _a.addAction;
(0, browser_core_1.addTelemetryConfiguration)((0, configuration_1.serializeRumConfiguration)(initConfiguration));
(0, longTaskCollection_1.startLongTaskCollection)(lifeCycle, session);

@@ -78,3 +80,3 @@ (0, resourceCollection_1.startResourceCollection)(lifeCycle, configuration, session);

function startRumTelemetry(configuration) {
var telemetry = (0, browser_core_1.startTelemetry)(configuration);
var telemetry = (0, browser_core_1.startTelemetry)("browser-rum-sdk" /* RUM */, configuration);
if ((0, browser_core_1.canUseEventBridge)()) {

@@ -81,0 +83,0 @@ var bridge_1 = (0, browser_core_1.getEventBridge)();

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

},
browser_sdk_version: (0, browser_core_1.canUseEventBridge)() ? "4.21.2" : undefined,
browser_sdk_version: (0, browser_core_1.canUseEventBridge)() ? "4.22.0" : undefined,
},

@@ -75,5 +75,2 @@ application: {

serverRumEvent.context = (0, browser_core_1.combine)(commonContext.context, customerContext);
if ((0, browser_core_1.isSimulationActive)()) {
serverRumEvent.context.simulation_label = (0, browser_core_1.getSimulationLabel)();
}
if (!('has_replay' in serverRumEvent.session)) {

@@ -80,0 +77,0 @@ ;

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

import type { Configuration, InitConfiguration } from '@datadog/browser-core';
import type { Configuration, InitConfiguration, MatchOption, RawTelemetryConfiguration } from '@datadog/browser-core';
import { DefaultPrivacyLevel } from '@datadog/browser-core';

@@ -12,4 +12,4 @@ import type { RumEventDomainContext } from '../domainContext.types';

premiumSampleRate?: number | undefined;
excludedActivityUrls?: ReadonlyArray<string | RegExp> | undefined;
allowedTracingOrigins?: ReadonlyArray<string | RegExp> | undefined;
excludedActivityUrls?: MatchOption[] | undefined;
allowedTracingOrigins?: MatchOption[] | undefined;
tracingSampleRate?: number | undefined;

@@ -32,5 +32,5 @@ defaultPrivacyLevel?: DefaultPrivacyLevel | undefined;

actionNameAttribute: string | undefined;
allowedTracingOrigins: Array<string | RegExp>;
allowedTracingOrigins: MatchOption[];
tracingSampleRate: number | undefined;
excludedActivityUrls: Array<string | RegExp>;
excludedActivityUrls: MatchOption[];
applicationId: string;

@@ -48,1 +48,2 @@ defaultPrivacyLevel: DefaultPrivacyLevel;

export declare function validateAndBuildRumConfiguration(initConfiguration: RumInitConfiguration): RumConfiguration | undefined;
export declare function serializeRumConfiguration(configuration: RumInitConfiguration): RawTelemetryConfiguration;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateAndBuildRumConfiguration = void 0;
exports.serializeRumConfiguration = exports.validateAndBuildRumConfiguration = void 0;
var browser_core_1 = require("@datadog/browser-core");

@@ -69,2 +69,19 @@ function validateAndBuildRumConfiguration(initConfiguration) {

exports.validateAndBuildRumConfiguration = validateAndBuildRumConfiguration;
function serializeRumConfiguration(configuration) {
var baseSerializedConfiguration = (0, browser_core_1.serializeConfiguration)(configuration);
return (0, browser_core_1.assign)({
premium_sample_rate: configuration.premiumSampleRate,
replay_sample_rate: configuration.replaySampleRate,
session_replay_sample_rate: configuration.sessionReplaySampleRate,
trace_sample_rate: configuration.tracingSampleRate,
action_name_attribute: configuration.actionNameAttribute,
use_allowed_tracing_origins: Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0,
default_privacy_level: configuration.defaultPrivacyLevel,
use_excluded_activity_urls: Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0,
track_frustrations: configuration.trackFrustrations,
track_views_manually: configuration.trackViewsManually,
track_interactions: configuration.trackInteractions,
}, baseSerializedConfiguration);
}
exports.serializeRumConfiguration = serializeRumConfiguration;
//# sourceMappingURL=configuration.js.map

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

function makeRumBatch(configuration, lifeCycle, reportError) {
var primaryBatch = createRumBatch(configuration.rumEndpointBuilder, true, function () {
var primaryBatch = createRumBatch(configuration.rumEndpointBuilder, function () {
return lifeCycle.notify(9 /* BEFORE_UNLOAD */);

@@ -26,6 +26,6 @@ });

if (replica !== undefined) {
replicaBatch = createRumBatch(replica.rumEndpointBuilder, false);
replicaBatch = createRumBatch(replica.rumEndpointBuilder);
}
function createRumBatch(endpointBuilder, toPrimaryEndpoint, unloadCallback) {
return new browser_core_1.Batch((0, browser_core_1.createHttpRequest)(endpointBuilder, configuration.batchBytesLimit, reportError, toPrimaryEndpoint), configuration.batchMessagesLimit, configuration.batchBytesLimit, configuration.messageBytesLimit, configuration.flushTimeout, unloadCallback);
function createRumBatch(endpointBuilder, unloadCallback) {
return new browser_core_1.Batch((0, browser_core_1.createHttpRequest)(endpointBuilder, configuration.batchBytesLimit, reportError), configuration.batchMessagesLimit, configuration.batchBytesLimit, configuration.messageBytesLimit, configuration.flushTimeout, unloadCallback);
}

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

@@ -55,3 +55,3 @@ import { willSyntheticsInjectRum, assign, BoundedBuffer, buildCookieOptions, createContextManager, deepClone, makePublicApi, monitor, clocksNow, timeStampNow, display, callMonitored, createHandlingStack, canUseEventBridge, areCookiesAuthorized, } from '@datadog/browser-core';

if (!configuration.trackViewsManually) {
doStartRum(configuration);
doStartRum(initConfiguration, configuration);
}

@@ -65,3 +65,3 @@ else {

startViewStrategy = function (options) {
doStartRum(configuration, options);
doStartRum(initConfiguration, configuration, options);
};

@@ -73,4 +73,4 @@ beforeInitCalls.drain();

}
function doStartRum(configuration, initialViewOptions) {
var startRumResults = startRumImpl(configuration, function () { return ({
function doStartRum(initConfiguration, configuration, initialViewOptions) {
var startRumResults = startRumImpl(initConfiguration, configuration, function () { return ({
user: userContextManager.getContext(),

@@ -77,0 +77,0 @@ context: globalContextManager.getContext(),

@@ -6,6 +6,6 @@ import type { Observable, RawError } from '@datadog/browser-core';

import type { LocationChange } from '../browser/locationChangeObservable';
import type { RumConfiguration } from '../domain/configuration';
import type { RumConfiguration, RumInitConfiguration } from '../domain/configuration';
import type { ViewOptions } from '../domain/rumEventsCollection/view/trackViews';
import type { RecorderApi } from './rumPublicApi';
export declare function startRum(configuration: RumConfiguration, getCommonContext: () => CommonContext, recorderApi: RecorderApi, initialViewOptions?: ViewOptions): {
export declare function startRum(initConfiguration: RumInitConfiguration, configuration: RumConfiguration, getCommonContext: () => CommonContext, recorderApi: RecorderApi, initialViewOptions?: ViewOptions): {
addAction: (action: import("../domain/rumEventsCollection/action/actionCollection").CustomAction, savedCommonContext?: CommonContext | undefined) => void;

@@ -12,0 +12,0 @@ addError: ({ error, handlingStack, startClocks, context: customerContext }: import("../domain/rumEventsCollection/error/errorCollection").ProvidedError, savedCommonContext?: CommonContext | undefined) => void;

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

import { startTelemetry, canUseEventBridge, getEventBridge } from '@datadog/browser-core';
import { addTelemetryConfiguration, startTelemetry, canUseEventBridge, getEventBridge, } from '@datadog/browser-core';
import { createDOMMutationObservable } from '../browser/domMutationObservable';

@@ -20,3 +20,4 @@ import { startPerformanceCollection } from '../browser/performanceCollection';

import { createLocationChangeObservable } from '../browser/locationChangeObservable';
export function startRum(configuration, getCommonContext, recorderApi, initialViewOptions) {
import { serializeRumConfiguration } from '../domain/configuration';
export function startRum(initConfiguration, configuration, getCommonContext, recorderApi, initialViewOptions) {
var lifeCycle = new LifeCycle();

@@ -54,2 +55,3 @@ var telemetry = startRumTelemetry(configuration);

var _a = startRumEventCollection(lifeCycle, configuration, location, session, locationChangeObservable, domMutationObservable, getCommonContext, reportError), viewContexts = _a.viewContexts, foregroundContexts = _a.foregroundContexts, urlContexts = _a.urlContexts, actionContexts = _a.actionContexts, addAction = _a.addAction;
addTelemetryConfiguration(serializeRumConfiguration(initConfiguration));
startLongTaskCollection(lifeCycle, session);

@@ -74,3 +76,3 @@ startResourceCollection(lifeCycle, configuration, session);

function startRumTelemetry(configuration) {
var telemetry = startTelemetry(configuration);
var telemetry = startTelemetry("browser-rum-sdk" /* RUM */, configuration);
if (canUseEventBridge()) {

@@ -77,0 +79,0 @@ var bridge_1 = getEventBridge();

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

import { combine, isEmptyObject, limitModification, timeStampNow, currentDrift, display, createEventRateLimiter, canUseEventBridge, isSimulationActive, getSimulationLabel, } from '@datadog/browser-core';
import { combine, isEmptyObject, limitModification, timeStampNow, currentDrift, display, createEventRateLimiter, canUseEventBridge, } from '@datadog/browser-core';
import { getSyntheticsContext } from './contexts/syntheticsContext';

@@ -45,3 +45,3 @@ import { getCiTestContext } from './contexts/ciTestContext';

},
browser_sdk_version: canUseEventBridge() ? "4.21.2" : undefined,
browser_sdk_version: canUseEventBridge() ? "4.22.0" : undefined,
},

@@ -72,5 +72,2 @@ application: {

serverRumEvent.context = combine(commonContext.context, customerContext);
if (isSimulationActive()) {
serverRumEvent.context.simulation_label = getSimulationLabel();
}
if (!('has_replay' in serverRumEvent.session)) {

@@ -77,0 +74,0 @@ ;

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

import type { Configuration, InitConfiguration } from '@datadog/browser-core';
import type { Configuration, InitConfiguration, MatchOption, RawTelemetryConfiguration } from '@datadog/browser-core';
import { DefaultPrivacyLevel } from '@datadog/browser-core';

@@ -12,4 +12,4 @@ import type { RumEventDomainContext } from '../domainContext.types';

premiumSampleRate?: number | undefined;
excludedActivityUrls?: ReadonlyArray<string | RegExp> | undefined;
allowedTracingOrigins?: ReadonlyArray<string | RegExp> | undefined;
excludedActivityUrls?: MatchOption[] | undefined;
allowedTracingOrigins?: MatchOption[] | undefined;
tracingSampleRate?: number | undefined;

@@ -32,5 +32,5 @@ defaultPrivacyLevel?: DefaultPrivacyLevel | undefined;

actionNameAttribute: string | undefined;
allowedTracingOrigins: Array<string | RegExp>;
allowedTracingOrigins: MatchOption[];
tracingSampleRate: number | undefined;
excludedActivityUrls: Array<string | RegExp>;
excludedActivityUrls: MatchOption[];
applicationId: string;

@@ -48,1 +48,2 @@ defaultPrivacyLevel: DefaultPrivacyLevel;

export declare function validateAndBuildRumConfiguration(initConfiguration: RumInitConfiguration): RumConfiguration | undefined;
export declare function serializeRumConfiguration(configuration: RumInitConfiguration): RawTelemetryConfiguration;

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

import { assign, DefaultPrivacyLevel, display, isPercentage, objectHasValue, validateAndBuildConfiguration, } from '@datadog/browser-core';
import { serializeConfiguration, assign, DefaultPrivacyLevel, display, isPercentage, objectHasValue, validateAndBuildConfiguration, } from '@datadog/browser-core';
export function validateAndBuildRumConfiguration(initConfiguration) {

@@ -65,2 +65,18 @@ var _a, _b, _c, _d, _e;

}
export function serializeRumConfiguration(configuration) {
var baseSerializedConfiguration = serializeConfiguration(configuration);
return assign({
premium_sample_rate: configuration.premiumSampleRate,
replay_sample_rate: configuration.replaySampleRate,
session_replay_sample_rate: configuration.sessionReplaySampleRate,
trace_sample_rate: configuration.tracingSampleRate,
action_name_attribute: configuration.actionNameAttribute,
use_allowed_tracing_origins: Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0,
default_privacy_level: configuration.defaultPrivacyLevel,
use_excluded_activity_urls: Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0,
track_frustrations: configuration.trackFrustrations,
track_views_manually: configuration.trackViewsManually,
track_interactions: configuration.trackInteractions,
}, baseSerializedConfiguration);
}
//# sourceMappingURL=configuration.js.map

@@ -15,3 +15,3 @@ import { Batch, combine, createHttpRequest, isTelemetryReplicationAllowed } from '@datadog/browser-core';

function makeRumBatch(configuration, lifeCycle, reportError) {
var primaryBatch = createRumBatch(configuration.rumEndpointBuilder, true, function () {
var primaryBatch = createRumBatch(configuration.rumEndpointBuilder, function () {
return lifeCycle.notify(9 /* BEFORE_UNLOAD */);

@@ -22,6 +22,6 @@ });

if (replica !== undefined) {
replicaBatch = createRumBatch(replica.rumEndpointBuilder, false);
replicaBatch = createRumBatch(replica.rumEndpointBuilder);
}
function createRumBatch(endpointBuilder, toPrimaryEndpoint, unloadCallback) {
return new Batch(createHttpRequest(endpointBuilder, configuration.batchBytesLimit, reportError, toPrimaryEndpoint), configuration.batchMessagesLimit, configuration.batchBytesLimit, configuration.messageBytesLimit, configuration.flushTimeout, unloadCallback);
function createRumBatch(endpointBuilder, unloadCallback) {
return new Batch(createHttpRequest(endpointBuilder, configuration.batchBytesLimit, reportError), configuration.batchMessagesLimit, configuration.batchBytesLimit, configuration.messageBytesLimit, configuration.flushTimeout, unloadCallback);
}

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

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

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

"dependencies": {
"@datadog/browser-core": "4.21.2"
"@datadog/browser-core": "4.22.0"
},

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

},
"gitHead": "90f0b3a1cd5cf0de53634cdaa1d10deba4c61c66"
"gitHead": "00aab8934115bd56c8cb5f6001a4c2845eecc12c"
}

@@ -689,3 +689,3 @@ import type { RelativeTime, TimeStamp, Context } from '@datadog/browser-core'

expect(startRumSpy).toHaveBeenCalled()
expect(startRumSpy.calls.argsFor(0)[3]).toEqual({ name: 'foo' })
expect(startRumSpy.calls.argsFor(0)[4]).toEqual({ name: 'foo' })
expect(recorderApiOnRumStartSpy).toHaveBeenCalled()

@@ -702,3 +702,3 @@ expect(startViewSpy).not.toHaveBeenCalled()

expect(startRumSpy).toHaveBeenCalled()
expect(startRumSpy.calls.argsFor(0)[3]).toEqual({ name: 'foo' })
expect(startRumSpy.calls.argsFor(0)[4]).toEqual({ name: 'foo' })
expect(recorderApiOnRumStartSpy).toHaveBeenCalled()

@@ -714,3 +714,3 @@ expect(startViewSpy).not.toHaveBeenCalled()

expect(startRumSpy).toHaveBeenCalled()
expect(startRumSpy.calls.argsFor(0)[3]).toEqual({ name: 'foo' })
expect(startRumSpy.calls.argsFor(0)[4]).toEqual({ name: 'foo' })
expect(recorderApiOnRumStartSpy).toHaveBeenCalled()

@@ -760,3 +760,3 @@ expect(startViewSpy).toHaveBeenCalled()

function getCommonContext() {
return startRumSpy.calls.argsFor(0)[1]()
return startRumSpy.calls.argsFor(0)[2]()
}

@@ -763,0 +763,0 @@

@@ -115,3 +115,3 @@ import type { Context, InitConfiguration, TimeStamp, RelativeTime } from '@datadog/browser-core'

if (!configuration.trackViewsManually) {
doStartRum(configuration)
doStartRum(initConfiguration, configuration)
} else {

@@ -125,3 +125,3 @@ // drain beforeInitCalls by buffering them until we start RUM

startViewStrategy = (options) => {
doStartRum(configuration, options)
doStartRum(initConfiguration, configuration, options)
}

@@ -135,4 +135,9 @@ beforeInitCalls.drain()

function doStartRum(configuration: RumConfiguration, initialViewOptions?: ViewOptions) {
function doStartRum(
initConfiguration: RumInitConfiguration,
configuration: RumConfiguration,
initialViewOptions?: ViewOptions
) {
const startRumResults = startRumImpl(
initConfiguration,
configuration,

@@ -139,0 +144,0 @@ () => ({

import type { Observable, TelemetryEvent, RawError } from '@datadog/browser-core'
import { startTelemetry, canUseEventBridge, getEventBridge } from '@datadog/browser-core'
import {
TelemetryService,
addTelemetryConfiguration,
startTelemetry,
canUseEventBridge,
getEventBridge,
} from '@datadog/browser-core'
import { createDOMMutationObservable } from '../browser/domMutationObservable'

@@ -24,3 +30,4 @@ import { startPerformanceCollection } from '../browser/performanceCollection'

import { createLocationChangeObservable } from '../browser/locationChangeObservable'
import type { RumConfiguration } from '../domain/configuration'
import type { RumConfiguration, RumInitConfiguration } from '../domain/configuration'
import { serializeRumConfiguration } from '../domain/configuration'
import type { ViewOptions } from '../domain/rumEventsCollection/view/trackViews'

@@ -30,2 +37,3 @@ import type { RecorderApi } from './rumPublicApi'

export function startRum(
initConfiguration: RumInitConfiguration,
configuration: RumConfiguration,

@@ -77,2 +85,3 @@ getCommonContext: () => CommonContext,

)
addTelemetryConfiguration(serializeRumConfiguration(initConfiguration))

@@ -117,3 +126,3 @@ startLongTaskCollection(lifeCycle, session)

function startRumTelemetry(configuration: RumConfiguration) {
const telemetry = startTelemetry(configuration)
const telemetry = startTelemetry(TelemetryService.RUM, configuration)
if (canUseEventBridge()) {

@@ -120,0 +129,0 @@ const bridge = getEventBridge<'internal_telemetry', TelemetryEvent>()!

@@ -11,4 +11,2 @@ import type { Context, RawError, EventRateLimiter } from '@datadog/browser-core'

canUseEventBridge,
isSimulationActive,
getSimulationLabel,
} from '@datadog/browser-core'

@@ -139,6 +137,2 @@ import type { RumEventDomainContext } from '../domainContext.types'

if (isSimulationActive()) {
serverRumEvent.context.simulation_label = getSimulationLabel()
}
if (!('has_replay' in serverRumEvent.session)) {

@@ -145,0 +139,0 @@ ;(serverRumEvent.session as Mutable<RumEvent['session']>).has_replay = commonContext.hasReplay

@@ -183,2 +183,14 @@ import { DefaultPrivacyLevel, display } from '@datadog/browser-core'

it('accepts functions', () => {
const customOriginFunction = (origin: string): boolean => origin === 'foo'
expect(
validateAndBuildRumConfiguration({
...DEFAULT_INIT_CONFIGURATION,
allowedTracingOrigins: [customOriginFunction],
service: 'bar',
})!.allowedTracingOrigins
).toEqual([customOriginFunction])
})
it('does not validate the configuration if a value is provided and service is undefined', () => {

@@ -214,2 +226,14 @@ expect(

it('accepts functions', () => {
const customUrlFunction = (url: string): boolean => url === 'foo'
expect(
validateAndBuildRumConfiguration({
...DEFAULT_INIT_CONFIGURATION,
excludedActivityUrls: [customUrlFunction],
service: 'bar',
})!.excludedActivityUrls
).toEqual([customUrlFunction])
})
it('does not validate the configuration if an incorrect value is provided', () => {

@@ -216,0 +240,0 @@ expect(

@@ -1,3 +0,4 @@

import type { Configuration, InitConfiguration } from '@datadog/browser-core'
import type { Configuration, InitConfiguration, MatchOption, RawTelemetryConfiguration } from '@datadog/browser-core'
import {
serializeConfiguration,
assign,

@@ -21,6 +22,6 @@ DefaultPrivacyLevel,

premiumSampleRate?: number | undefined
excludedActivityUrls?: ReadonlyArray<string | RegExp> | undefined
excludedActivityUrls?: MatchOption[] | undefined
// tracing options
allowedTracingOrigins?: ReadonlyArray<string | RegExp> | undefined
allowedTracingOrigins?: MatchOption[] | undefined
tracingSampleRate?: number | undefined

@@ -53,5 +54,5 @@

actionNameAttribute: string | undefined
allowedTracingOrigins: Array<string | RegExp>
allowedTracingOrigins: MatchOption[]
tracingSampleRate: number | undefined
excludedActivityUrls: Array<string | RegExp>
excludedActivityUrls: MatchOption[]
applicationId: string

@@ -147,1 +148,24 @@ defaultPrivacyLevel: DefaultPrivacyLevel

}
export function serializeRumConfiguration(configuration: RumInitConfiguration): RawTelemetryConfiguration {
const baseSerializedConfiguration = serializeConfiguration(configuration)
return assign(
{
premium_sample_rate: configuration.premiumSampleRate,
replay_sample_rate: configuration.replaySampleRate,
session_replay_sample_rate: configuration.sessionReplaySampleRate,
trace_sample_rate: configuration.tracingSampleRate,
action_name_attribute: configuration.actionNameAttribute,
use_allowed_tracing_origins:
Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0,
default_privacy_level: configuration.defaultPrivacyLevel,
use_excluded_activity_urls:
Array.isArray(configuration.allowedTracingOrigins) && configuration.allowedTracingOrigins.length > 0,
track_frustrations: configuration.trackFrustrations,
track_views_manually: configuration.trackViewsManually,
track_interactions: configuration.trackInteractions,
},
baseSerializedConfiguration
)
}

@@ -110,3 +110,7 @@ import { isIE, objectEntries } from '@datadog/browser-core'

...configuration,
allowedTracingOrigins: [/^https?:\/\/qux\.com/, 'http://bar.com'],
allowedTracingOrigins: [
/^https?:\/\/qux\.com/,
'http://bar.com',
(origin: string) => origin === 'http://dynamic.com',
],
}

@@ -121,2 +125,3 @@ const stub = xhrStub as unknown as XMLHttpRequest

expect(context.spanId).toBeDefined()
context = { url: 'http://bar.com' }

@@ -126,2 +131,7 @@ tracer.traceXhr(context, stub)

expect(context.spanId).toBeDefined()
context = { url: 'http://dynamic.com' }
tracer.traceXhr(context, stub)
expect(context.traceId).toBeDefined()
expect(context.spanId).toBeDefined()
})

@@ -326,6 +336,11 @@ })

...configuration,
allowedTracingOrigins: [/^https?:\/\/qux\.com.*/, 'http://bar.com'],
allowedTracingOrigins: [
/^https?:\/\/qux\.com.*/,
'http://bar.com',
(origin: string) => origin === 'http://dynamic.com',
],
}
const quxDomainContext: Partial<RumFetchStartContext> = { url: 'http://qux.com' }
const barDomainContext: Partial<RumFetchStartContext> = { url: 'http://bar.com' }
const dynamicDomainContext: Partial<RumFetchStartContext> = { url: 'http://dynamic.com' }

@@ -336,2 +351,3 @@ const tracer = startTracer(configurationWithTracingUrls, sessionManager)

tracer.traceFetch(barDomainContext)
tracer.traceFetch(dynamicDomainContext)
expect(quxDomainContext.traceId).toBeDefined()

@@ -341,2 +357,4 @@ expect(quxDomainContext.spanId).toBeDefined()

expect(barDomainContext.spanId).toBeDefined()
expect(dynamicDomainContext.traceId).toBeDefined()
expect(dynamicDomainContext.spanId).toBeDefined()
})

@@ -343,0 +361,0 @@ })

@@ -138,8 +138,22 @@ import type { RelativeTime, Subscription } from '@datadog/browser-core'

it('ignores resources that should be excluded by configuration', () => {
const { lifeCycle } = setupBuilder.build()
const performanceTiming = {
entryType: 'resource',
name: EXCLUDED_FAKE_URL,
} as RumPerformanceResourceTiming
lifeCycle.notify(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, [performanceTiming])
const { lifeCycle } = setupBuilder
.withConfiguration({
excludedActivityUrls: [
/^https?:\/\/qux\.com.*/,
'http://bar.com',
(url: string) => url === 'http://dynamic.com',
],
})
.build()
lifeCycle.notify(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, [
makeFakePerformanceTiming('http://qux.com'),
])
lifeCycle.notify(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, [
makeFakePerformanceTiming('http://bar.com'),
])
lifeCycle.notify(LifeCycleEventType.PERFORMANCE_ENTRIES_COLLECTED, [
makeFakePerformanceTiming('http://dynamic.com'),
])
expect(events).toEqual([])

@@ -164,2 +178,8 @@ })

function makeFakePerformanceTiming(url: string) {
return {
entryType: 'resource',
name: url,
} as RumPerformanceResourceTiming
}
function makeFakeRequestCompleteEvent(requestIndex: number, url = FAKE_URL) {

@@ -166,0 +186,0 @@ return { requestIndex, url } as RequestCompleteEvent

@@ -38,3 +38,3 @@ import type { Context, EndpointBuilder, TelemetryEvent, Observable, RawError } from '@datadog/browser-core'

): RumBatch {
const primaryBatch = createRumBatch(configuration.rumEndpointBuilder, true, () =>
const primaryBatch = createRumBatch(configuration.rumEndpointBuilder, () =>
lifeCycle.notify(LifeCycleEventType.BEFORE_UNLOAD)

@@ -46,8 +46,8 @@ )

if (replica !== undefined) {
replicaBatch = createRumBatch(replica.rumEndpointBuilder, false)
replicaBatch = createRumBatch(replica.rumEndpointBuilder)
}
function createRumBatch(endpointBuilder: EndpointBuilder, toPrimaryEndpoint: boolean, unloadCallback?: () => void) {
function createRumBatch(endpointBuilder: EndpointBuilder, unloadCallback?: () => void) {
return new Batch(
createHttpRequest(endpointBuilder, configuration.batchBytesLimit, reportError, toPrimaryEndpoint),
createHttpRequest(endpointBuilder, configuration.batchBytesLimit, reportError),
configuration.batchMessagesLimit,

@@ -54,0 +54,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