From 0273361b8a6b724fe93e549d1402027e6bb52432 Mon Sep 17 00:00:00 2001 From: Catherine Lee <55311782+c298lee@users.noreply.github.com> Date: Thu, 5 Sep 2024 16:04:40 -0400 Subject: [PATCH 1/3] improve types --- packages/replay-internal/src/types/performance.ts | 4 ++-- .../replay-internal/src/util/createPerformanceEntries.ts | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/replay-internal/src/types/performance.ts b/packages/replay-internal/src/types/performance.ts index b3dcab0e7dd7..fa996254a12c 100644 --- a/packages/replay-internal/src/types/performance.ts +++ b/packages/replay-internal/src/types/performance.ts @@ -110,11 +110,11 @@ export interface WebVitalData { /** * The recording id of the web vital nodes. -1 if not found */ - nodeIds?: number[]; + nodeIds: number[] | undefined; /** * The layout shifts of a CLS metric */ - attributions?: { value: number; nodeIds?: number[] }[]; + attributions: { value: number; nodeIds: number[] | undefined }[] | undefined; } /** diff --git a/packages/replay-internal/src/util/createPerformanceEntries.ts b/packages/replay-internal/src/util/createPerformanceEntries.ts index 0c22ba73163a..67d8baf912a8 100644 --- a/packages/replay-internal/src/util/createPerformanceEntries.ts +++ b/packages/replay-internal/src/util/createPerformanceEntries.ts @@ -60,7 +60,7 @@ interface LayoutShiftAttribution { interface Attribution { value: number; - nodeIds?: number[]; + nodeIds: number[] | undefined; } /** @@ -220,9 +220,10 @@ export function getCumulativeLayoutShift(metric: Metric): ReplayPerformanceEntry } } } - layoutShifts.push({ value: entry.value, nodeIds }); + layoutShifts.push({ value: entry.value, nodeIds: nodeIds.length ? nodeIds : undefined }); } } + return getWebVital(metric, 'cumulative-layout-shift', nodes, layoutShifts); } @@ -258,7 +259,7 @@ function getWebVital( const end = getAbsoluteTime(value); - const data: ReplayPerformanceEntry = { + return { type: 'web-vital', name, start: end, @@ -271,6 +272,4 @@ function getWebVital( attributions, }, }; - - return data; } From ca8c3c26343a5098e036663c5d54e6fa01d61618 Mon Sep 17 00:00:00 2001 From: Catherine Lee <55311782+c298lee@users.noreply.github.com> Date: Thu, 5 Sep 2024 16:39:12 -0400 Subject: [PATCH 2/3] lint --- packages/replay-internal/src/util/createPerformanceEntries.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/replay-internal/src/util/createPerformanceEntries.ts b/packages/replay-internal/src/util/createPerformanceEntries.ts index 67d8baf912a8..52f2f19ec15b 100644 --- a/packages/replay-internal/src/util/createPerformanceEntries.ts +++ b/packages/replay-internal/src/util/createPerformanceEntries.ts @@ -259,7 +259,7 @@ function getWebVital( const end = getAbsoluteTime(value); - return { + return { type: 'web-vital', name, start: end, From 4f73c5ced6b58f750a7cb3603d119e65809b9165 Mon Sep 17 00:00:00 2001 From: Catherine Lee <55311782+c298lee@users.noreply.github.com> Date: Fri, 6 Sep 2024 12:26:27 -0400 Subject: [PATCH 3/3] PR comments --- packages/replay-internal/src/types/performance.ts | 4 ++-- .../replay-internal/src/util/createPerformanceEntries.ts | 9 ++------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/packages/replay-internal/src/types/performance.ts b/packages/replay-internal/src/types/performance.ts index fa996254a12c..f598581c93ab 100644 --- a/packages/replay-internal/src/types/performance.ts +++ b/packages/replay-internal/src/types/performance.ts @@ -110,11 +110,11 @@ export interface WebVitalData { /** * The recording id of the web vital nodes. -1 if not found */ - nodeIds: number[] | undefined; + nodeIds?: number[]; /** * The layout shifts of a CLS metric */ - attributions: { value: number; nodeIds: number[] | undefined }[] | undefined; + attributions?: { value: number; nodeIds: number[] | undefined }[]; } /** diff --git a/packages/replay-internal/src/util/createPerformanceEntries.ts b/packages/replay-internal/src/util/createPerformanceEntries.ts index 52f2f19ec15b..c28e69caee00 100644 --- a/packages/replay-internal/src/util/createPerformanceEntries.ts +++ b/packages/replay-internal/src/util/createPerformanceEntries.ts @@ -58,11 +58,6 @@ interface LayoutShiftAttribution { currentRect: DOMRectReadOnly; } -interface Attribution { - value: number; - nodeIds: number[] | undefined; -} - /** * Handler creater for web vitals */ @@ -206,7 +201,7 @@ function isLayoutShift(entry: PerformanceEntry): entry is LayoutShift { * Add a CLS event to the replay based on a CLS metric. */ export function getCumulativeLayoutShift(metric: Metric): ReplayPerformanceEntry { - const layoutShifts: Attribution[] = []; + const layoutShifts: WebVitalData['attributions'] = []; const nodes: Node[] = []; for (const entry of metric.entries) { if (isLayoutShift(entry)) { @@ -252,7 +247,7 @@ function getWebVital( metric: Metric, name: string, nodes: Node[] | undefined, - attributions?: Attribution[], + attributions?: WebVitalData['attributions'], ): ReplayPerformanceEntry { const value = metric.value; const rating = metric.rating;