Socket
Socket
Sign inDemoInstall

@datadog/browser-rum-core

Package Overview
Dependencies
Maintainers
1
Versions
177
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 2.2.0 to 2.2.1

2

cjs/boot/buildEnv.js

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

datacenter: 'us',
sdkVersion: '2.2.0',
sdkVersion: '2.2.1',
};
//# sourceMappingURL=buildEnv.js.map

@@ -9,2 +9,4 @@ import { Configuration } from '@datadog/browser-core';

addError: ({ error, startTime, context: customerContext, source }: import("../domain/rumEventsCollection/error/errorCollection").ProvidedError, savedCommonContext?: CommonContext | undefined) => void;
addTiming: (name: string, inInitialView?: boolean) => void;
configuration: Configuration;
getInternalContext: (startTime?: number | undefined) => import("../rawRumEvent.types").InternalContext | undefined;

@@ -16,3 +18,4 @@ };

parentContexts: import("../domain/parentContexts").ParentContexts;
addTiming: (name: string, inInitialView?: boolean) => void;
stop(): void;
};

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

});
var _b = startRumEventCollection(userConfiguration.applicationId, location, lifeCycle, configuration, session, getCommonContext), parentContexts = _b.parentContexts, addError = _b.addError, addAction = _b.addAction;
var _b = startRumEventCollection(userConfiguration.applicationId, location, lifeCycle, configuration, session, getCommonContext), parentContexts = _b.parentContexts, addError = _b.addError, addAction = _b.addAction, addTiming = _b.addTiming;
requestCollection_1.startRequestCollection(lifeCycle, configuration);

@@ -37,2 +37,4 @@ performanceCollection_1.startPerformanceCollection(lifeCycle, configuration);

addError: addError,
addTiming: addTiming,
configuration: configuration,
getInternalContext: internalContext.get,

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

resourceCollection_1.startResourceCollection(lifeCycle, configuration, session);
viewCollection_1.startViewCollection(lifeCycle, configuration, location);
var addTiming = viewCollection_1.startViewCollection(lifeCycle, configuration, location).addTiming;
var addError = errorCollection_1.startErrorCollection(lifeCycle, configuration).addError;

@@ -56,2 +58,3 @@ var addAction = actionCollection_1.startActionCollection(lifeCycle, configuration).addAction;

parentContexts: parentContexts,
addTiming: addTiming,
stop: function () {

@@ -58,0 +61,0 @@ // prevent batch from previous tests to keep running and send unwanted requests

@@ -37,7 +37,8 @@ "use strict";

}
;
var configuration;
var addTiming;
(_a = startRumImpl(userConfiguration, function () { return ({
user: user,
context: globalContextManager.get(),
}); }), addActionStrategy = _a.addAction, addErrorStrategy = _a.addError, getInternalContextStrategy = _a.getInternalContext);
}); }), addTiming = _a.addTiming, configuration = _a.configuration, addActionStrategy = _a.addAction, addErrorStrategy = _a.addError, getInternalContextStrategy = _a.getInternalContext);
beforeInitAddAction.drain(function (_a) {

@@ -51,2 +52,6 @@ var action = _a[0], commonContext = _a[1];

});
if (configuration.isEnabled('custom-timings')) {
;
rumGlobal.addTiming = addTiming;
}
isAlreadyInitialized = true;

@@ -53,0 +58,0 @@ }),

@@ -9,2 +9,3 @@ import { LifeCycle } from '../../lifeCycle';

timings: Timings;
customTimings: ViewCustomTimings;
eventCounts: EventCounts;

@@ -29,6 +30,10 @@ documentVersion: number;

}
export interface ViewCustomTimings {
[key: string]: number;
}
export declare const THROTTLE_VIEW_UPDATE_PERIOD = 3000;
export declare const SESSION_KEEP_ALIVE_INTERVAL: number;
export declare function trackViews(location: Location, lifeCycle: LifeCycle): {
addTiming(name: string, inInitialView?: boolean): void;
stop(): void;
};

@@ -55,2 +55,8 @@ "use strict";

return {
addTiming: function (name, inInitialView) {
if (inInitialView === void 0) { inInitialView = false; }
var view = inInitialView ? initialView : currentView;
view.addTiming(name);
view.triggerUpdate();
},
stop: function () {

@@ -75,2 +81,3 @@ stopTimingsTracking();

var timings = {};
var customTimings = {};
var documentVersion = 0;

@@ -112,2 +119,3 @@ var cumulativeLayoutShift;

cumulativeLayoutShift: cumulativeLayoutShift,
customTimings: customTimings,
documentVersion: documentVersion,

@@ -149,2 +157,5 @@ eventCounts: eventCounts,

},
addTiming: function (name) {
customTimings[name] = performance.now() - startTime;
},
updateLocation: function (newLocation) {

@@ -151,0 +162,0 @@ location = tslib_1.__assign({}, newLocation);

import { Configuration } from '@datadog/browser-core';
import { LifeCycle } from '../../lifeCycle';
export declare function startViewCollection(lifeCycle: LifeCycle, configuration: Configuration, location: Location): {
addTiming(name: string, inInitialView?: boolean): void;
stop(): void;
};

@@ -49,2 +49,5 @@ "use strict";

};
if (!browser_core_1.isEmptyObject(view.customTimings)) {
viewEvent.view.customTimings = browser_core_1.mapValues(view.customTimings, browser_core_1.msToNs);
}
return {

@@ -51,0 +54,0 @@ rawRumEvent: viewEvent,

import { Context, ErrorSource, ResourceType } from '@datadog/browser-core';
import { ActionType } from './domain/rumEventsCollection/action/trackActions';
import { PerformanceResourceDetailsElement } from './domain/rumEventsCollection/resource/resourceUtils';
import { ViewLoadingType } from './domain/rumEventsCollection/view/trackViews';
import { ViewCustomTimings, ViewLoadingType } from './domain/rumEventsCollection/view/trackViews';
export declare enum RumEventType {

@@ -59,2 +59,3 @@ ACTION = "action",

cumulativeLayoutShift?: number;
customTimings?: ViewCustomTimings;
largestContentfulPaint?: number;

@@ -61,0 +62,0 @@ domInteractive?: number;

@@ -425,2 +425,8 @@ /**

/**
* User custom timings of the view
*/
readonly custom_timings?: {
[k: string]: number;
};
/**
* Whether the View corresponding to this event is considered active

@@ -427,0 +433,0 @@ */

export var buildEnv = {
buildMode: 'release',
datacenter: 'us',
sdkVersion: '2.2.0',
sdkVersion: '2.2.1',
};
//# sourceMappingURL=buildEnv.js.map

@@ -9,2 +9,4 @@ import { Configuration } from '@datadog/browser-core';

addError: ({ error, startTime, context: customerContext, source }: import("../domain/rumEventsCollection/error/errorCollection").ProvidedError, savedCommonContext?: CommonContext | undefined) => void;
addTiming: (name: string, inInitialView?: boolean) => void;
configuration: Configuration;
getInternalContext: (startTime?: number | undefined) => import("../rawRumEvent.types").InternalContext | undefined;

@@ -16,3 +18,4 @@ };

parentContexts: import("../domain/parentContexts").ParentContexts;
addTiming: (name: string, inInitialView?: boolean) => void;
stop(): void;
};

@@ -26,3 +26,3 @@ import { combine, commonInit } from '@datadog/browser-core';

});
var _b = startRumEventCollection(userConfiguration.applicationId, location, lifeCycle, configuration, session, getCommonContext), parentContexts = _b.parentContexts, addError = _b.addError, addAction = _b.addAction;
var _b = startRumEventCollection(userConfiguration.applicationId, location, lifeCycle, configuration, session, getCommonContext), parentContexts = _b.parentContexts, addError = _b.addError, addAction = _b.addAction, addTiming = _b.addTiming;
startRequestCollection(lifeCycle, configuration);

@@ -35,2 +35,4 @@ startPerformanceCollection(lifeCycle, configuration);

addError: addError,
addTiming: addTiming,
configuration: configuration,
getInternalContext: internalContext.get,

@@ -45,3 +47,3 @@ };

startResourceCollection(lifeCycle, configuration, session);
startViewCollection(lifeCycle, configuration, location);
var addTiming = startViewCollection(lifeCycle, configuration, location).addTiming;
var addError = startErrorCollection(lifeCycle, configuration).addError;

@@ -53,2 +55,3 @@ var addAction = startActionCollection(lifeCycle, configuration).addAction;

parentContexts: parentContexts,
addTiming: addTiming,
stop: function () {

@@ -55,0 +58,0 @@ // prevent batch from previous tests to keep running and send unwanted requests

@@ -35,7 +35,8 @@ import { BoundedBuffer, buildCookieOptions, checkCookiesAuthorized, checkIsNotLocalFile, createContextManager, deepClone, ErrorSource, isPercentage, makePublicApi, monitor, } from '@datadog/browser-core';

}
;
var configuration;
var addTiming;
(_a = startRumImpl(userConfiguration, function () { return ({
user: user,
context: globalContextManager.get(),
}); }), addActionStrategy = _a.addAction, addErrorStrategy = _a.addError, getInternalContextStrategy = _a.getInternalContext);
}); }), addTiming = _a.addTiming, configuration = _a.configuration, addActionStrategy = _a.addAction, addErrorStrategy = _a.addError, getInternalContextStrategy = _a.getInternalContext);
beforeInitAddAction.drain(function (_a) {

@@ -49,2 +50,6 @@ var action = _a[0], commonContext = _a[1];

});
if (configuration.isEnabled('custom-timings')) {
;
rumGlobal.addTiming = addTiming;
}
isAlreadyInitialized = true;

@@ -51,0 +56,0 @@ }),

@@ -9,2 +9,3 @@ import { LifeCycle } from '../../lifeCycle';

timings: Timings;
customTimings: ViewCustomTimings;
eventCounts: EventCounts;

@@ -29,6 +30,10 @@ documentVersion: number;

}
export interface ViewCustomTimings {
[key: string]: number;
}
export declare const THROTTLE_VIEW_UPDATE_PERIOD = 3000;
export declare const SESSION_KEEP_ALIVE_INTERVAL: number;
export declare function trackViews(location: Location, lifeCycle: LifeCycle): {
addTiming(name: string, inInitialView?: boolean): void;
stop(): void;
};
import { __assign } from "tslib";
import { addEventListener, DOM_EVENT, generateUUID, monitor, noop, ONE_MINUTE, throttle } from '@datadog/browser-core';
import { addEventListener, DOM_EVENT, generateUUID, monitor, noop, ONE_MINUTE, throttle, } from '@datadog/browser-core';
import { supportPerformanceTimingEvent } from '../../../browser/performanceCollection';

@@ -53,2 +53,8 @@ import { LifeCycleEventType } from '../../lifeCycle';

return {
addTiming: function (name, inInitialView) {
if (inInitialView === void 0) { inInitialView = false; }
var view = inInitialView ? initialView : currentView;
view.addTiming(name);
view.triggerUpdate();
},
stop: function () {

@@ -72,2 +78,3 @@ stopTimingsTracking();

var timings = {};
var customTimings = {};
var documentVersion = 0;

@@ -109,2 +116,3 @@ var cumulativeLayoutShift;

cumulativeLayoutShift: cumulativeLayoutShift,
customTimings: customTimings,
documentVersion: documentVersion,

@@ -146,2 +154,5 @@ eventCounts: eventCounts,

},
addTiming: function (name) {
customTimings[name] = performance.now() - startTime;
},
updateLocation: function (newLocation) {

@@ -148,0 +159,0 @@ location = __assign({}, newLocation);

import { Configuration } from '@datadog/browser-core';
import { LifeCycle } from '../../lifeCycle';
export declare function startViewCollection(lifeCycle: LifeCycle, configuration: Configuration, location: Location): {
addTiming(name: string, inInitialView?: boolean): void;
stop(): void;
};

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

import { getTimestamp, msToNs } from '@datadog/browser-core';
import { getTimestamp, isEmptyObject, mapValues, msToNs } from '@datadog/browser-core';
import { RumEventType } from '../../../rawRumEvent.types';

@@ -46,2 +46,5 @@ import { LifeCycleEventType } from '../../lifeCycle';

};
if (!isEmptyObject(view.customTimings)) {
viewEvent.view.customTimings = mapValues(view.customTimings, msToNs);
}
return {

@@ -48,0 +51,0 @@ rawRumEvent: viewEvent,

import { Context, ErrorSource, ResourceType } from '@datadog/browser-core';
import { ActionType } from './domain/rumEventsCollection/action/trackActions';
import { PerformanceResourceDetailsElement } from './domain/rumEventsCollection/resource/resourceUtils';
import { ViewLoadingType } from './domain/rumEventsCollection/view/trackViews';
import { ViewCustomTimings, ViewLoadingType } from './domain/rumEventsCollection/view/trackViews';
export declare enum RumEventType {

@@ -59,2 +59,3 @@ ACTION = "action",

cumulativeLayoutShift?: number;
customTimings?: ViewCustomTimings;
largestContentfulPaint?: number;

@@ -61,0 +62,0 @@ domInteractive?: number;

@@ -425,2 +425,8 @@ /**

/**
* User custom timings of the view
*/
readonly custom_timings?: {
[k: string]: number;
};
/**
* Whether the View corresponding to this event is considered active

@@ -427,0 +433,0 @@ */

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

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

"dependencies": {
"@datadog/browser-core": "2.2.0",
"@datadog/browser-core": "2.2.1",
"tslib": "^1.10.0"

@@ -27,3 +27,3 @@ },

},
"gitHead": "8cb2ec883174f7194f62d2c66e0ba42152619b63"
"gitHead": "129bd33e18a2e07fefb995b090254fcc32e601f6"
}

@@ -37,3 +37,3 @@ import { combine, commonInit, Configuration, Context } from '@datadog/browser-core'

const { parentContexts, addError, addAction } = startRumEventCollection(
const { parentContexts, addError, addAction, addTiming } = startRumEventCollection(
userConfiguration.applicationId,

@@ -56,2 +56,4 @@ location,

addError,
addTiming,
configuration,
getInternalContext: internalContext.get,

@@ -74,3 +76,3 @@ }

startResourceCollection(lifeCycle, configuration, session)
startViewCollection(lifeCycle, configuration, location)
const { addTiming } = startViewCollection(lifeCycle, configuration, location)
const { addError } = startErrorCollection(lifeCycle, configuration)

@@ -84,2 +86,4 @@ const { addAction } = startActionCollection(lifeCycle, configuration)

addTiming,
stop() {

@@ -86,0 +90,0 @@ // prevent batch from previous tests to keep running and send unwanted requests

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

import { ErrorSource, ONE_SECOND } from '@datadog/browser-core'
import { Configuration, ErrorSource, ONE_SECOND } from '@datadog/browser-core'
import { setup, TestSetupBuilder } from '../../test/specHelper'

@@ -6,5 +6,10 @@ import { ActionType } from '../domain/rumEventsCollection/action/trackActions'

const configuration: Partial<Configuration> = {
isEnabled: () => false,
}
const noopStartRum = () => ({
addAction: () => undefined,
addError: () => undefined,
addTiming: () => undefined,
configuration: configuration as Configuration,
getInternalContext: () => undefined,

@@ -389,2 +394,35 @@ })

})
describe('addTiming', () => {
let addTimingSpy: jasmine.Spy<ReturnType<StartRum>['addTiming']>
let errorSpy: jasmine.Spy<() => void>
let rumGlobal: RumPublicApi
let setupBuilder: TestSetupBuilder
beforeEach(() => {
addTimingSpy = jasmine.createSpy()
errorSpy = spyOn(console, 'error')
const otherConfiguration: Partial<Configuration> = {
isEnabled: () => true,
}
rumGlobal = makeRumPublicApi(() => ({
...noopStartRum(),
addTiming: addTimingSpy,
configuration: otherConfiguration as Configuration,
}))
setupBuilder = setup()
})
afterEach(() => {
setupBuilder.cleanup()
})
it('should add custom timings', () => {
rumGlobal.init(DEFAULT_INIT_CONFIGURATION)
// tslint:disable-next-line: no-unsafe-any
;(rumGlobal as any).addTiming('foo')
expect(addTimingSpy.calls.argsFor(0)[0]).toEqual('foo')
expect(errorSpy).not.toHaveBeenCalled()
})
})
})

@@ -6,2 +6,3 @@ import {

checkIsNotLocalFile,
Configuration,
Context,

@@ -71,3 +72,7 @@ createContextManager,

let configuration: Configuration
let addTiming: ReturnType<StartRum>['addTiming']
;({
addTiming,
configuration,
addAction: addActionStrategy,

@@ -83,2 +88,6 @@ addError: addErrorStrategy,

if (configuration.isEnabled('custom-timings')) {
;(rumGlobal as any).addTiming = addTiming
}
isAlreadyInitialized = true

@@ -85,0 +94,0 @@ }),

@@ -832,1 +832,89 @@ import { createRawRumEvent } from '../../../../test/fixtures'

})
describe('rum track custom timings', () => {
let setupBuilder: TestSetupBuilder
let handler: jasmine.Spy
let getViewEvent: (index: number) => View
let addTiming: (name: string, inInitialView?: boolean, time?: number) => void
beforeEach(() => {
;({ handler, getViewEvent } = spyOnViews())
setupBuilder = setup()
.withFakeLocation('/foo')
.withFakeClock()
.beforeBuild(({ location, lifeCycle }) => {
lifeCycle.subscribe(LifeCycleEventType.VIEW_UPDATED, handler)
;({ addTiming } = trackViews(location, lifeCycle))
})
})
afterEach(() => {
setupBuilder.cleanup()
})
it('should add custom timing to current view', () => {
const { clock } = setupBuilder.build()
history.pushState({}, '', '/bar')
const currentViewId = getViewEvent(2).id
clock.tick(20)
addTiming('foo', false)
const event = getViewEvent(3)
expect(event.id).toEqual(currentViewId)
expect(event.customTimings).toEqual({ foo: 20 })
})
it('should add custom timing to initial view', () => {
const { clock } = setupBuilder.build()
clock.tick(20)
history.pushState({}, '', '/bar')
const initialViewId = getViewEvent(0).id
clock.tick(20)
addTiming('foo', true)
const event = getViewEvent(3)
expect(event.id).toEqual(initialViewId)
expect(event.customTimings).toEqual({ foo: 40 })
})
it('should add multiple custom timings', () => {
const { clock } = setupBuilder.build()
clock.tick(20)
addTiming('foo', false)
clock.tick(10)
addTiming('bar', false)
const event = getViewEvent(2)
expect(event.customTimings).toEqual({
bar: 30,
foo: 20,
})
})
it('should update custom timing', () => {
const { clock } = setupBuilder.build()
clock.tick(20)
addTiming('foo', false)
clock.tick(10)
addTiming('bar', false)
let event = getViewEvent(2)
expect(event.customTimings).toEqual({
bar: 30,
foo: 20,
})
clock.tick(20)
addTiming('foo', false)
event = getViewEvent(3)
expect(event.customTimings).toEqual({
bar: 30,
foo: 50,
})
})
})

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

import { addEventListener, DOM_EVENT, generateUUID, monitor, noop, ONE_MINUTE, throttle } from '@datadog/browser-core'
import {
addEventListener,
DOM_EVENT,
generateUUID,
monitor,
msToNs,
noop,
ONE_MINUTE,
throttle,
} from '@datadog/browser-core'

@@ -14,2 +23,3 @@ import { supportPerformanceTimingEvent } from '../../../browser/performanceCollection'

timings: Timings
customTimings: ViewCustomTimings
eventCounts: EventCounts

@@ -37,2 +47,6 @@ documentVersion: number

export interface ViewCustomTimings {
[key: string]: number
}
export const THROTTLE_VIEW_UPDATE_PERIOD = 3000

@@ -88,2 +102,7 @@ export const SESSION_KEEP_ALIVE_INTERVAL = 5 * ONE_MINUTE

return {
addTiming(name: string, inInitialView = false) {
const view = inInitialView ? initialView : currentView
view.addTiming(name)
view.triggerUpdate()
},
stop() {

@@ -113,2 +132,3 @@ stopTimingsTracking()

let timings: Timings = {}
const customTimings: ViewCustomTimings = {}
let documentVersion = 0

@@ -161,2 +181,3 @@ let cumulativeLayoutShift: number | undefined

cumulativeLayoutShift,
customTimings,
documentVersion,

@@ -201,2 +222,5 @@ eventCounts,

},
addTiming(name: string) {
customTimings[name] = performance.now() - startTime
},
updateLocation(newLocation: Location) {

@@ -203,0 +227,0 @@ location = { ...newLocation }

@@ -26,4 +26,9 @@ import { setup, TestSetupBuilder } from '../../../../test/specHelper'

const { lifeCycle, rawRumEvents } = setupBuilder.build()
const location: Partial<Location> = {}
const view = {
cumulativeLayoutShift: 1,
customTimings: {
bar: 20,
foo: 10,
},
documentVersion: 3,

@@ -41,3 +46,3 @@ duration: 100,

loadingType: ViewLoadingType.INITIAL_LOAD,
location: {},
location: location as Location,
referrer: '',

@@ -56,3 +61,3 @@ startTime: 1234,

}
lifeCycle.notify(LifeCycleEventType.VIEW_UPDATED, view as View)
lifeCycle.notify(LifeCycleEventType.VIEW_UPDATED, view)

@@ -71,2 +76,6 @@ expect(rawRumEvents[rawRumEvents.length - 1].startTime).toBe(1234)

cumulativeLayoutShift: 1,
customTimings: {
bar: 20 * 1e6,
foo: 10 * 1e6,
},
domComplete: 10 * 1e6,

@@ -73,0 +82,0 @@ domContentLoaded: 10 * 1e6,

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

import { Configuration, getTimestamp, msToNs } from '@datadog/browser-core'
import { Configuration, getTimestamp, isEmptyObject, mapValues, msToNs } from '@datadog/browser-core'
import { RawRumViewEvent, RumEventType } from '../../../rawRumEvent.types'

@@ -49,2 +49,5 @@ import { LifeCycle, LifeCycleEventType } from '../../lifeCycle'

}
if (!isEmptyObject(view.customTimings)) {
viewEvent.view.customTimings = mapValues(view.customTimings, msToNs)
}
return {

@@ -51,0 +54,0 @@ rawRumEvent: viewEvent,

import { Context, ErrorSource, ResourceType } from '@datadog/browser-core'
import { ActionType } from './domain/rumEventsCollection/action/trackActions'
import { PerformanceResourceDetailsElement } from './domain/rumEventsCollection/resource/resourceUtils'
import { ViewLoadingType } from './domain/rumEventsCollection/view/trackViews'
import { ViewCustomTimings, ViewLoadingType } from './domain/rumEventsCollection/view/trackViews'

@@ -63,2 +63,3 @@ export enum RumEventType {

cumulativeLayoutShift?: number
customTimings?: ViewCustomTimings
largestContentfulPaint?: number

@@ -65,0 +66,0 @@ domInteractive?: number

@@ -463,2 +463,8 @@ /* tslint:disable */

/**
* User custom timings of the view
*/
readonly custom_timings?: {
[k: string]: number
}
/**
* Whether the View corresponding to this event is considered active

@@ -465,0 +471,0 @@ */

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