From 13092c33c54ee566d36ec5de2d9d670d1934a31d Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Tue, 6 Jun 2023 11:24:25 -0700 Subject: [PATCH 1/8] Reset --- packages/replay/src/index.ts | 22 ++++++++++++++++++- packages/replay/src/types/index.ts | 1 + packages/replay/src/types/performance.ts | 4 +++- packages/replay/src/types/replayFrame.ts | 2 +- packages/replay/src/types/rrweb.ts | 12 ++-------- packages/replay/src/util/addEvent.ts | 2 +- .../replay/src/util/handleRecordingEmit.ts | 2 +- 7 files changed, 30 insertions(+), 15 deletions(-) diff --git a/packages/replay/src/index.ts b/packages/replay/src/index.ts index 239cd727d67f..d677d5c41434 100644 --- a/packages/replay/src/index.ts +++ b/packages/replay/src/index.ts @@ -1,9 +1,29 @@ export { Replay } from './integration'; export type { + // From ./types/replayFrame BreadcrumbFrame, BreadcrumbFrameEvent, + OptionFrameEvent, ReplayFrame, ReplayFrameEvent, SpanFrame, SpanFrameEvent, -} from './types/replayFrame'; + + // From ./types/performance + AllEntryData, + AllPerformanceEntryData, + ExperimentalPerformanceResourceTiming, + HistoryData, + LargestContentfulPaintData, + MemoryData, + NavigationData, + NetworkRequestData, + PaintData, + PerformanceNavigationTiming, + PerformancePaintTiming, + ReplayNetworkRequestData, + ResourceData, + + // From rrweb + EventType, +} from './types'; diff --git a/packages/replay/src/types/index.ts b/packages/replay/src/types/index.ts index 2461e4f3ac8e..fd7fcc8195e0 100644 --- a/packages/replay/src/types/index.ts +++ b/packages/replay/src/types/index.ts @@ -2,3 +2,4 @@ export * from './performance'; export * from './replay'; export * from './replayFrame'; export * from './rrweb'; +export type { EventType } from '@sentry-internal/rrweb'; diff --git a/packages/replay/src/types/performance.ts b/packages/replay/src/types/performance.ts index 0ff647e7d7d0..c90373a3f751 100644 --- a/packages/replay/src/types/performance.ts +++ b/packages/replay/src/types/performance.ts @@ -1,3 +1,5 @@ +import type { ReplayNetworkRequestData } from './replay'; + export type AllPerformanceEntry = PerformancePaintTiming | PerformanceResourceTiming | PerformanceNavigationTiming; // PerformancePaintTiming and PerformanceNavigationTiming are only available with TS 4.4 and newer @@ -130,7 +132,7 @@ export interface HistoryData { previous: string; } -export type AllEntryData = AllPerformanceEntryData | MemoryData | NetworkRequestData | HistoryData; +export type AllEntryData = AllPerformanceEntryData | MemoryData | NetworkRequestData | ReplayNetworkRequestData | HistoryData; export interface ReplayPerformanceEntry { /** diff --git a/packages/replay/src/types/replayFrame.ts b/packages/replay/src/types/replayFrame.ts index 463e462851e6..e795a2bcafea 100644 --- a/packages/replay/src/types/replayFrame.ts +++ b/packages/replay/src/types/replayFrame.ts @@ -1,7 +1,7 @@ +import type { EventType } from '@sentry-internal/rrweb'; import type { Breadcrumb, FetchBreadcrumbData, XhrBreadcrumbData } from '@sentry/types'; import type { AllEntryData } from './performance'; -import type { EventType } from './rrweb'; interface BaseReplayFrame { timestamp: number; diff --git a/packages/replay/src/types/rrweb.ts b/packages/replay/src/types/rrweb.ts index 7f2dfec78110..cfbe4cddf4c3 100644 --- a/packages/replay/src/types/rrweb.ts +++ b/packages/replay/src/types/rrweb.ts @@ -1,18 +1,10 @@ /* eslint-disable @typescript-eslint/naming-convention */ +import type { EventType } from '@sentry-internal/rrweb'; + type blockClass = string | RegExp; type maskTextClass = string | RegExp; -export enum EventType { - DomContentLoaded = 0, - Load = 1, - FullSnapshot = 2, - IncrementalSnapshot = 3, - Meta = 4, - Custom = 5, - Plugin = 6, -} - /** * This is a partial copy of rrweb's eventWithTime type which only contains the properties * we specifcally need in the SDK. diff --git a/packages/replay/src/util/addEvent.ts b/packages/replay/src/util/addEvent.ts index 2a5458887af6..16f653e9fc5d 100644 --- a/packages/replay/src/util/addEvent.ts +++ b/packages/replay/src/util/addEvent.ts @@ -1,8 +1,8 @@ +import { EventType } from '@sentry-internal/rrweb'; import { getCurrentHub } from '@sentry/core'; import { logger } from '@sentry/utils'; import type { AddEventResult, RecordingEvent, ReplayContainer, ReplayFrameEvent } from '../types'; -import { EventType } from '../types/rrweb'; import { timestampToMs } from './timestampToMs'; function isCustomEvent(event: RecordingEvent): event is ReplayFrameEvent { diff --git a/packages/replay/src/util/handleRecordingEmit.ts b/packages/replay/src/util/handleRecordingEmit.ts index ffb0a993dc89..cc7c87afed48 100644 --- a/packages/replay/src/util/handleRecordingEmit.ts +++ b/packages/replay/src/util/handleRecordingEmit.ts @@ -1,8 +1,8 @@ +import { EventType } from '@sentry-internal/rrweb'; import { logger } from '@sentry/utils'; import { saveSession } from '../session/saveSession'; import type { AddEventResult, OptionFrameEvent, RecordingEvent, ReplayContainer } from '../types'; -import { EventType } from '../types/rrweb'; import { addEvent } from './addEvent'; type RecordingEmitCallback = (event: RecordingEvent, isCheckout?: boolean) => void; From ce4889d153ef3f1630999a73ea38b15a6ddfe50c Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Tue, 6 Jun 2023 12:09:07 -0700 Subject: [PATCH 2/8] refactor SpanFrame to use a base class and map op to data --- packages/replay/src/types/replayFrame.ts | 93 ++++++++++++++++++++---- 1 file changed, 77 insertions(+), 16 deletions(-) diff --git a/packages/replay/src/types/replayFrame.ts b/packages/replay/src/types/replayFrame.ts index e795a2bcafea..8df4ccfff80d 100644 --- a/packages/replay/src/types/replayFrame.ts +++ b/packages/replay/src/types/replayFrame.ts @@ -1,9 +1,18 @@ import type { EventType } from '@sentry-internal/rrweb'; import type { Breadcrumb, FetchBreadcrumbData, XhrBreadcrumbData } from '@sentry/types'; -import type { AllEntryData } from './performance'; - -interface BaseReplayFrame { +import type { + HistoryData, + LargestContentfulPaintData, + MemoryData, + NavigationData, + NetworkRequestData, + PaintData, + ResourceData, +} from './performance'; +import type { ReplayNetworkRequestData } from './replay'; + +interface BaseBreadcrumbFrame { timestamp: number; /** * For compatibility reasons @@ -29,7 +38,7 @@ interface ConsoleFrameData { logger: string; arguments?: unknown[]; } -interface ConsoleFrame extends BaseReplayFrame { +interface ConsoleFrame extends BaseBreadcrumbFrame { category: 'console'; level: Breadcrumb['level']; message: string; @@ -37,24 +46,24 @@ interface ConsoleFrame extends BaseReplayFrame { } type ClickFrameData = BaseDomFrameData; -interface ClickFrame extends BaseReplayFrame { +interface ClickFrame extends BaseBreadcrumbFrame { category: 'ui.click'; message: string; data: ClickFrameData; } -interface FetchFrame extends BaseReplayFrame { +interface FetchFrame extends BaseBreadcrumbFrame { category: 'fetch'; type: 'http'; data: FetchBreadcrumbData; } -interface InputFrame extends BaseReplayFrame { +interface InputFrame extends BaseBreadcrumbFrame { category: 'ui.input'; message: string; } -interface XhrFrame extends BaseReplayFrame { +interface XhrFrame extends BaseBreadcrumbFrame { category: 'xhr'; type: 'http'; data: XhrBreadcrumbData; @@ -65,7 +74,7 @@ interface MutationFrameData { count: number; limit: boolean; } -interface MutationFrame extends BaseReplayFrame { +interface MutationFrame extends BaseBreadcrumbFrame { category: 'replay.mutations'; data: MutationFrameData; } @@ -77,16 +86,16 @@ interface KeyboardEventFrameData extends BaseDomFrameData { altKey: boolean; key: string; } -interface KeyboardEventFrame extends BaseReplayFrame { +interface KeyboardEventFrame extends BaseBreadcrumbFrame { category: 'ui.keyDown'; data: KeyboardEventFrameData; } -interface BlurFrame extends BaseReplayFrame { +interface BlurFrame extends BaseBreadcrumbFrame { category: 'ui.blur'; } -interface FocusFrame extends BaseReplayFrame { +interface FocusFrame extends BaseBreadcrumbFrame { category: 'ui.focus'; } @@ -95,7 +104,7 @@ interface SlowClickFrameData extends ClickFrameData { timeAfterClickFs: number; endReason: string; } -interface SlowClickFrame extends BaseReplayFrame { +interface SlowClickFrame extends BaseBreadcrumbFrame { category: 'ui.slowClickDetected'; data: SlowClickFrameData; } @@ -125,16 +134,68 @@ export type BreadcrumbFrame = | FocusFrame | SlowClickFrame | MutationFrame - | BaseReplayFrame; + | BaseBreadcrumbFrame; -export interface SpanFrame { +interface BaseSpanFrame { op: string; description: string; startTimestamp: number; endTimestamp: number; - data: AllEntryData; + data?: Record; } +interface HistoryFrame extends BaseSpanFrame { + data: HistoryData; + op: 'navigation.push'; +} + +interface LargestContentfulPaintFrame extends BaseSpanFrame { + data: LargestContentfulPaintData; + op: 'largest-contentful-paint'; +} + +interface MemoryFrame extends BaseSpanFrame { + data: MemoryData, + op: 'memory', +} + +interface NavigationFrame extends BaseSpanFrame { + data: NavigationData + op: 'navigation.navigate' | 'navigation.reload' | 'navigation.back'; +} + +interface NetworkRequestFrame extends BaseSpanFrame { + data: NetworkRequestData | ReplayNetworkRequestData; + op: 'resource.fetch' +} + +interface PaintFrame extends BaseSpanFrame { + data: PaintData; + op: 'paint'; +} + +interface ResourceFrame extends BaseSpanFrame { + data: ResourceData; + op: + | 'resource.css' + | 'resource.iframe' + | 'resource.img' + | 'resource.link' + | 'resource.other' + | 'resource.script' + | 'resource.xhr'; +} + +export type SpanFrame = + | BaseSpanFrame + | HistoryFrame + | LargestContentfulPaintFrame + | MemoryFrame + | NavigationFrame + | NetworkRequestFrame + | PaintFrame + | ResourceFrame; + export type ReplayFrame = BreadcrumbFrame | SpanFrame; interface RecordingCustomEvent { From 4db6b20d1e07a3268bd2bc35993c5cc0e41bac13 Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Tue, 6 Jun 2023 13:27:25 -0700 Subject: [PATCH 3/8] cleanup extra exports that are not needed --- packages/replay/src/index.ts | 19 +------------------ packages/replay/src/types/replayFrame.ts | 14 +++++++------- 2 files changed, 8 insertions(+), 25 deletions(-) diff --git a/packages/replay/src/index.ts b/packages/replay/src/index.ts index d677d5c41434..b8c53a18fb3a 100644 --- a/packages/replay/src/index.ts +++ b/packages/replay/src/index.ts @@ -1,6 +1,5 @@ export { Replay } from './integration'; export type { - // From ./types/replayFrame BreadcrumbFrame, BreadcrumbFrameEvent, OptionFrameEvent, @@ -8,22 +7,6 @@ export type { ReplayFrameEvent, SpanFrame, SpanFrameEvent, - - // From ./types/performance - AllEntryData, - AllPerformanceEntryData, - ExperimentalPerformanceResourceTiming, - HistoryData, - LargestContentfulPaintData, - MemoryData, - NavigationData, - NetworkRequestData, - PaintData, - PerformanceNavigationTiming, - PerformancePaintTiming, - ReplayNetworkRequestData, - ResourceData, - - // From rrweb EventType, } from './types'; + diff --git a/packages/replay/src/types/replayFrame.ts b/packages/replay/src/types/replayFrame.ts index 8df4ccfff80d..d17c1416b811 100644 --- a/packages/replay/src/types/replayFrame.ts +++ b/packages/replay/src/types/replayFrame.ts @@ -110,17 +110,17 @@ interface SlowClickFrame extends BaseBreadcrumbFrame { } interface OptionFrame { - sessionSampleRate: number; - errorSampleRate: number; - useCompressionOption: boolean; blockAllMedia: boolean; - maskAllText: boolean; + errorSampleRate: number; maskAllInputs: boolean; - useCompression: boolean; - networkDetailHasUrls: boolean; + maskAllText: boolean; networkCaptureBodies: boolean; + networkDetailHasUrls: boolean; networkRequestHasHeaders: boolean; networkResponseHasHeaders: boolean; + sessionSampleRate: number; + useCompression: boolean; + useCompressionOption: boolean; } export type BreadcrumbFrame = @@ -141,7 +141,7 @@ interface BaseSpanFrame { description: string; startTimestamp: number; endTimestamp: number; - data?: Record; + data?: undefined | Record; } interface HistoryFrame extends BaseSpanFrame { From 889cb1341e63a5d1af8d267c3325477963e3159a Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Tue, 6 Jun 2023 14:31:12 -0700 Subject: [PATCH 4/8] Replace ReplayNetworkRequestData, which has start/endTimestamp, with ReplayNetworkRequestOrResponse added into NetworkRequestData --- packages/replay/src/index.ts | 1 - packages/replay/src/types/performance.ts | 6 ++-- packages/replay/src/types/replayFrame.ts | 42 +++++++++--------------- 3 files changed, 20 insertions(+), 29 deletions(-) diff --git a/packages/replay/src/index.ts b/packages/replay/src/index.ts index b8c53a18fb3a..166932d4acce 100644 --- a/packages/replay/src/index.ts +++ b/packages/replay/src/index.ts @@ -9,4 +9,3 @@ export type { SpanFrameEvent, EventType, } from './types'; - diff --git a/packages/replay/src/types/performance.ts b/packages/replay/src/types/performance.ts index c90373a3f751..f3356bf3a8a7 100644 --- a/packages/replay/src/types/performance.ts +++ b/packages/replay/src/types/performance.ts @@ -1,4 +1,4 @@ -import type { ReplayNetworkRequestData } from './replay'; +import type { ReplayNetworkRequestOrResponse } from './replay'; export type AllPerformanceEntry = PerformancePaintTiming | PerformanceResourceTiming | PerformanceNavigationTiming; @@ -126,13 +126,15 @@ export interface NetworkRequestData { statusCode?: number; requestBodySize?: number; responseBodySize?: number; + request?: ReplayNetworkRequestOrResponse; + response?: ReplayNetworkRequestOrResponse; } export interface HistoryData { previous: string; } -export type AllEntryData = AllPerformanceEntryData | MemoryData | NetworkRequestData | ReplayNetworkRequestData | HistoryData; +export type AllEntryData = AllPerformanceEntryData | MemoryData | NetworkRequestData | HistoryData; export interface ReplayPerformanceEntry { /** diff --git a/packages/replay/src/types/replayFrame.ts b/packages/replay/src/types/replayFrame.ts index d17c1416b811..0ca72b15a086 100644 --- a/packages/replay/src/types/replayFrame.ts +++ b/packages/replay/src/types/replayFrame.ts @@ -1,5 +1,5 @@ import type { EventType } from '@sentry-internal/rrweb'; -import type { Breadcrumb, FetchBreadcrumbData, XhrBreadcrumbData } from '@sentry/types'; +import type { Breadcrumb } from '@sentry/types'; import type { HistoryData, @@ -10,7 +10,6 @@ import type { PaintData, ResourceData, } from './performance'; -import type { ReplayNetworkRequestData } from './replay'; interface BaseBreadcrumbFrame { timestamp: number; @@ -52,23 +51,11 @@ interface ClickFrame extends BaseBreadcrumbFrame { data: ClickFrameData; } -interface FetchFrame extends BaseBreadcrumbFrame { - category: 'fetch'; - type: 'http'; - data: FetchBreadcrumbData; -} - interface InputFrame extends BaseBreadcrumbFrame { category: 'ui.input'; message: string; } -interface XhrFrame extends BaseBreadcrumbFrame { - category: 'xhr'; - type: 'http'; - data: XhrBreadcrumbData; -} - /* Breadcrumbs from Replay */ interface MutationFrameData { count: number; @@ -126,9 +113,7 @@ interface OptionFrame { export type BreadcrumbFrame = | ConsoleFrame | ClickFrame - | FetchFrame | InputFrame - | XhrFrame | KeyboardEventFrame | BlurFrame | FocusFrame @@ -144,6 +129,11 @@ interface BaseSpanFrame { data?: undefined | Record; } +interface FetchFrame extends BaseSpanFrame { + data: NetworkRequestData; + op: 'resource.fetch' +} + interface HistoryFrame extends BaseSpanFrame { data: HistoryData; op: 'navigation.push'; @@ -161,12 +151,7 @@ interface MemoryFrame extends BaseSpanFrame { interface NavigationFrame extends BaseSpanFrame { data: NavigationData - op: 'navigation.navigate' | 'navigation.reload' | 'navigation.back'; -} - -interface NetworkRequestFrame extends BaseSpanFrame { - data: NetworkRequestData | ReplayNetworkRequestData; - op: 'resource.fetch' + op: 'navigation.navigate' | 'navigation.reload' | 'navigation.back_forward'; } interface PaintFrame extends BaseSpanFrame { @@ -182,19 +167,24 @@ interface ResourceFrame extends BaseSpanFrame { | 'resource.img' | 'resource.link' | 'resource.other' - | 'resource.script' - | 'resource.xhr'; + | 'resource.script'; +} + +interface XHRFrame extends BaseSpanFrame { + data: NetworkRequestData; + op: 'resource.xhr' } export type SpanFrame = | BaseSpanFrame + | FetchFrame | HistoryFrame | LargestContentfulPaintFrame | MemoryFrame | NavigationFrame - | NetworkRequestFrame | PaintFrame - | ResourceFrame; + | ResourceFrame + | XHRFrame; export type ReplayFrame = BreadcrumbFrame | SpanFrame; From de36842e7a1624bb78829f4c1320359c6462c0b9 Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Tue, 6 Jun 2023 18:07:41 -0700 Subject: [PATCH 5/8] break circular dependency --- packages/replay/src/types/index.ts | 1 + packages/replay/src/types/performance.ts | 2 +- packages/replay/src/types/replay.ts | 19 +------------------ packages/replay/src/types/request.ts | 18 ++++++++++++++++++ 4 files changed, 21 insertions(+), 19 deletions(-) create mode 100644 packages/replay/src/types/request.ts diff --git a/packages/replay/src/types/index.ts b/packages/replay/src/types/index.ts index fd7fcc8195e0..2d4fa2f3d529 100644 --- a/packages/replay/src/types/index.ts +++ b/packages/replay/src/types/index.ts @@ -1,5 +1,6 @@ export * from './performance'; export * from './replay'; export * from './replayFrame'; +export * from './request'; export * from './rrweb'; export type { EventType } from '@sentry-internal/rrweb'; diff --git a/packages/replay/src/types/performance.ts b/packages/replay/src/types/performance.ts index f3356bf3a8a7..49590a361cdb 100644 --- a/packages/replay/src/types/performance.ts +++ b/packages/replay/src/types/performance.ts @@ -1,4 +1,4 @@ -import type { ReplayNetworkRequestOrResponse } from './replay'; +import type { ReplayNetworkRequestOrResponse } from './request'; export type AllPerformanceEntry = PerformancePaintTiming | PerformanceResourceTiming | PerformanceNavigationTiming; diff --git a/packages/replay/src/types/replay.ts b/packages/replay/src/types/replay.ts index 262dcbf65a88..e1ddf9c9619e 100644 --- a/packages/replay/src/types/replay.ts +++ b/packages/replay/src/types/replay.ts @@ -11,6 +11,7 @@ import type { import type { SKIPPED, THROTTLED } from '../util/throttle'; import type { AllPerformanceEntry } from './performance'; import type { ReplayFrameEvent } from './replayFrame'; +import type { ReplayNetworkRequestOrResponse } from './request'; import type { eventWithTime, recordOptions } from './rrweb'; export type RecordingEvent = ReplayFrameEvent | eventWithTime; @@ -444,24 +445,6 @@ export type FetchHint = FetchBreadcrumbHint & { response: Response; }; -type JsonObject = Record; -type JsonArray = unknown[]; - -export type NetworkBody = JsonObject | JsonArray | string; - -export type NetworkMetaWarning = 'JSON_TRUNCATED' | 'TEXT_TRUNCATED' | 'INVALID_JSON' | 'URL_SKIPPED'; - -interface NetworkMeta { - warnings?: NetworkMetaWarning[]; -} - -export interface ReplayNetworkRequestOrResponse { - size?: number; - body?: NetworkBody; - headers: Record; - _meta?: NetworkMeta; -} - export type ReplayNetworkRequestData = { startTimestamp: number; endTimestamp: number; diff --git a/packages/replay/src/types/request.ts b/packages/replay/src/types/request.ts new file mode 100644 index 000000000000..79a8ba5c1e69 --- /dev/null +++ b/packages/replay/src/types/request.ts @@ -0,0 +1,18 @@ + +type JsonObject = Record; +type JsonArray = unknown[]; + +export type NetworkBody = JsonObject | JsonArray | string; + +export type NetworkMetaWarning = 'JSON_TRUNCATED' | 'TEXT_TRUNCATED' | 'INVALID_JSON' | 'URL_SKIPPED'; + +interface NetworkMeta { + warnings?: NetworkMetaWarning[]; +} + +export interface ReplayNetworkRequestOrResponse { + size?: number; + body?: NetworkBody; + headers: Record; + _meta?: NetworkMeta; +} From 0ec4343346ed93194c6e254d95dbc027f324f520 Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Tue, 6 Jun 2023 19:21:45 -0700 Subject: [PATCH 6/8] prettier --- packages/replay/src/types/replayFrame.ts | 18 ++++++------------ packages/replay/src/types/request.ts | 1 - 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/packages/replay/src/types/replayFrame.ts b/packages/replay/src/types/replayFrame.ts index 0ca72b15a086..9cc48e0382d7 100644 --- a/packages/replay/src/types/replayFrame.ts +++ b/packages/replay/src/types/replayFrame.ts @@ -131,7 +131,7 @@ interface BaseSpanFrame { interface FetchFrame extends BaseSpanFrame { data: NetworkRequestData; - op: 'resource.fetch' + op: 'resource.fetch'; } interface HistoryFrame extends BaseSpanFrame { @@ -145,12 +145,12 @@ interface LargestContentfulPaintFrame extends BaseSpanFrame { } interface MemoryFrame extends BaseSpanFrame { - data: MemoryData, - op: 'memory', + data: MemoryData; + op: 'memory'; } interface NavigationFrame extends BaseSpanFrame { - data: NavigationData + data: NavigationData; op: 'navigation.navigate' | 'navigation.reload' | 'navigation.back_forward'; } @@ -161,18 +161,12 @@ interface PaintFrame extends BaseSpanFrame { interface ResourceFrame extends BaseSpanFrame { data: ResourceData; - op: - | 'resource.css' - | 'resource.iframe' - | 'resource.img' - | 'resource.link' - | 'resource.other' - | 'resource.script'; + op: 'resource.css' | 'resource.iframe' | 'resource.img' | 'resource.link' | 'resource.other' | 'resource.script'; } interface XHRFrame extends BaseSpanFrame { data: NetworkRequestData; - op: 'resource.xhr' + op: 'resource.xhr'; } export type SpanFrame = diff --git a/packages/replay/src/types/request.ts b/packages/replay/src/types/request.ts index 79a8ba5c1e69..ae24574d4b7e 100644 --- a/packages/replay/src/types/request.ts +++ b/packages/replay/src/types/request.ts @@ -1,4 +1,3 @@ - type JsonObject = Record; type JsonArray = unknown[]; From dbcc440fb31d01dc14c96299b1548829bce2e30f Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Tue, 6 Jun 2023 19:59:17 -0700 Subject: [PATCH 7/8] combine xhr and fetch request types --- packages/replay/src/types/replayFrame.ts | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/packages/replay/src/types/replayFrame.ts b/packages/replay/src/types/replayFrame.ts index 9cc48e0382d7..529b1b428a6f 100644 --- a/packages/replay/src/types/replayFrame.ts +++ b/packages/replay/src/types/replayFrame.ts @@ -129,11 +129,6 @@ interface BaseSpanFrame { data?: undefined | Record; } -interface FetchFrame extends BaseSpanFrame { - data: NetworkRequestData; - op: 'resource.fetch'; -} - interface HistoryFrame extends BaseSpanFrame { data: HistoryData; op: 'navigation.push'; @@ -159,26 +154,25 @@ interface PaintFrame extends BaseSpanFrame { op: 'paint'; } +interface RequestFrame extends BaseSpanFrame { + data: NetworkRequestData; + op: 'resource.fetch' | 'resource.xhr'; +} + interface ResourceFrame extends BaseSpanFrame { data: ResourceData; op: 'resource.css' | 'resource.iframe' | 'resource.img' | 'resource.link' | 'resource.other' | 'resource.script'; } -interface XHRFrame extends BaseSpanFrame { - data: NetworkRequestData; - op: 'resource.xhr'; -} - export type SpanFrame = | BaseSpanFrame - | FetchFrame | HistoryFrame + | RequestFrame | LargestContentfulPaintFrame | MemoryFrame | NavigationFrame | PaintFrame - | ResourceFrame - | XHRFrame; + | ResourceFrame; export type ReplayFrame = BreadcrumbFrame | SpanFrame; From 69f73eea13542ce0c797fb382233964af49a541e Mon Sep 17 00:00:00 2001 From: Ryan Albrecht Date: Tue, 6 Jun 2023 20:45:21 -0700 Subject: [PATCH 8/8] re-export rrweb event/node types and enums --- packages/replay/src/index.ts | 5 ++++- packages/replay/src/types/index.ts | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/replay/src/index.ts b/packages/replay/src/index.ts index 166932d4acce..3e6b01f39f5c 100644 --- a/packages/replay/src/index.ts +++ b/packages/replay/src/index.ts @@ -7,5 +7,8 @@ export type { ReplayFrameEvent, SpanFrame, SpanFrameEvent, - EventType, } from './types'; +export { EventType } from '@sentry-internal/rrweb'; +export { NodeType } from '@sentry-internal/rrweb-snapshot'; +export type { eventWithTime, fullSnapshotEvent } from '@sentry-internal/rrweb'; +export type { serializedNodeWithId } from '@sentry-internal/rrweb-snapshot'; diff --git a/packages/replay/src/types/index.ts b/packages/replay/src/types/index.ts index 2d4fa2f3d529..0fc39c9cd411 100644 --- a/packages/replay/src/types/index.ts +++ b/packages/replay/src/types/index.ts @@ -3,4 +3,3 @@ export * from './replay'; export * from './replayFrame'; export * from './request'; export * from './rrweb'; -export type { EventType } from '@sentry-internal/rrweb';