@datadog/browser-rum-core
Advanced tools
Comparing version 2.2.0 to 2.2.1
@@ -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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
729331
15464
+ Added@datadog/browser-core@2.2.1(transitive)
- Removed@datadog/browser-core@2.2.0(transitive)
Updated@datadog/browser-core@2.2.1