1- import type { Breadcrumb , FetchBreadcrumbData , XhrBreadcrumbData } from '@sentry/types' ;
2-
3- import type { AllEntryData } from './performance' ;
4- import type { EventType } from './rrweb' ;
5-
6- interface BaseReplayFrame {
1+ import type { EventType } from '@sentry-internal/rrweb' ;
2+ import type { Breadcrumb } from '@sentry/types' ;
3+
4+ import type {
5+ HistoryData ,
6+ LargestContentfulPaintData ,
7+ MemoryData ,
8+ NavigationData ,
9+ NetworkRequestData ,
10+ PaintData ,
11+ ResourceData ,
12+ } from './performance' ;
13+
14+ interface BaseBreadcrumbFrame {
715 timestamp : number ;
816 /**
917 * For compatibility reasons
@@ -29,43 +37,31 @@ interface ConsoleFrameData {
2937 logger : string ;
3038 arguments ?: unknown [ ] ;
3139}
32- interface ConsoleFrame extends BaseReplayFrame {
40+ interface ConsoleFrame extends BaseBreadcrumbFrame {
3341 category : 'console' ;
3442 level : Breadcrumb [ 'level' ] ;
3543 message : string ;
3644 data : ConsoleFrameData ;
3745}
3846
3947type ClickFrameData = BaseDomFrameData ;
40- interface ClickFrame extends BaseReplayFrame {
48+ interface ClickFrame extends BaseBreadcrumbFrame {
4149 category : 'ui.click' ;
4250 message : string ;
4351 data : ClickFrameData ;
4452}
4553
46- interface FetchFrame extends BaseReplayFrame {
47- category : 'fetch' ;
48- type : 'http' ;
49- data : FetchBreadcrumbData ;
50- }
51-
52- interface InputFrame extends BaseReplayFrame {
54+ interface InputFrame extends BaseBreadcrumbFrame {
5355 category : 'ui.input' ;
5456 message : string ;
5557}
5658
57- interface XhrFrame extends BaseReplayFrame {
58- category : 'xhr' ;
59- type : 'http' ;
60- data : XhrBreadcrumbData ;
61- }
62-
6359/* Breadcrumbs from Replay */
6460interface MutationFrameData {
6561 count : number ;
6662 limit : boolean ;
6763}
68- interface MutationFrame extends BaseReplayFrame {
64+ interface MutationFrame extends BaseBreadcrumbFrame {
6965 category : 'replay.mutations' ;
7066 data : MutationFrameData ;
7167}
@@ -77,16 +73,16 @@ interface KeyboardEventFrameData extends BaseDomFrameData {
7773 altKey : boolean ;
7874 key : string ;
7975}
80- interface KeyboardEventFrame extends BaseReplayFrame {
76+ interface KeyboardEventFrame extends BaseBreadcrumbFrame {
8177 category : 'ui.keyDown' ;
8278 data : KeyboardEventFrameData ;
8379}
8480
85- interface BlurFrame extends BaseReplayFrame {
81+ interface BlurFrame extends BaseBreadcrumbFrame {
8682 category : 'ui.blur' ;
8783}
8884
89- interface FocusFrame extends BaseReplayFrame {
85+ interface FocusFrame extends BaseBreadcrumbFrame {
9086 category : 'ui.focus' ;
9187}
9288
@@ -95,46 +91,89 @@ interface SlowClickFrameData extends ClickFrameData {
9591 timeAfterClickFs : number ;
9692 endReason : string ;
9793}
98- interface SlowClickFrame extends BaseReplayFrame {
94+ interface SlowClickFrame extends BaseBreadcrumbFrame {
9995 category : 'ui.slowClickDetected' ;
10096 data : SlowClickFrameData ;
10197}
10298
10399interface OptionFrame {
104- sessionSampleRate : number ;
105- errorSampleRate : number ;
106- useCompressionOption : boolean ;
107100 blockAllMedia : boolean ;
108- maskAllText : boolean ;
101+ errorSampleRate : number ;
109102 maskAllInputs : boolean ;
110- useCompression : boolean ;
111- networkDetailHasUrls : boolean ;
103+ maskAllText : boolean ;
112104 networkCaptureBodies : boolean ;
105+ networkDetailHasUrls : boolean ;
113106 networkRequestHasHeaders : boolean ;
114107 networkResponseHasHeaders : boolean ;
108+ sessionSampleRate : number ;
109+ useCompression : boolean ;
110+ useCompressionOption : boolean ;
115111}
116112
117113export type BreadcrumbFrame =
118114 | ConsoleFrame
119115 | ClickFrame
120- | FetchFrame
121116 | InputFrame
122- | XhrFrame
123117 | KeyboardEventFrame
124118 | BlurFrame
125119 | FocusFrame
126120 | SlowClickFrame
127121 | MutationFrame
128- | BaseReplayFrame ;
122+ | BaseBreadcrumbFrame ;
129123
130- export interface SpanFrame {
124+ interface BaseSpanFrame {
131125 op : string ;
132126 description : string ;
133127 startTimestamp : number ;
134128 endTimestamp : number ;
135- data : AllEntryData ;
129+ data ?: undefined | Record < string , any > ;
130+ }
131+
132+ interface HistoryFrame extends BaseSpanFrame {
133+ data : HistoryData ;
134+ op : 'navigation.push' ;
135+ }
136+
137+ interface LargestContentfulPaintFrame extends BaseSpanFrame {
138+ data : LargestContentfulPaintData ;
139+ op : 'largest-contentful-paint' ;
140+ }
141+
142+ interface MemoryFrame extends BaseSpanFrame {
143+ data : MemoryData ;
144+ op : 'memory' ;
145+ }
146+
147+ interface NavigationFrame extends BaseSpanFrame {
148+ data : NavigationData ;
149+ op : 'navigation.navigate' | 'navigation.reload' | 'navigation.back_forward' ;
150+ }
151+
152+ interface PaintFrame extends BaseSpanFrame {
153+ data : PaintData ;
154+ op : 'paint' ;
155+ }
156+
157+ interface RequestFrame extends BaseSpanFrame {
158+ data : NetworkRequestData ;
159+ op : 'resource.fetch' | 'resource.xhr' ;
160+ }
161+
162+ interface ResourceFrame extends BaseSpanFrame {
163+ data : ResourceData ;
164+ op : 'resource.css' | 'resource.iframe' | 'resource.img' | 'resource.link' | 'resource.other' | 'resource.script' ;
136165}
137166
167+ export type SpanFrame =
168+ | BaseSpanFrame
169+ | HistoryFrame
170+ | RequestFrame
171+ | LargestContentfulPaintFrame
172+ | MemoryFrame
173+ | NavigationFrame
174+ | PaintFrame
175+ | ResourceFrame ;
176+
138177export type ReplayFrame = BreadcrumbFrame | SpanFrame ;
139178
140179interface RecordingCustomEvent {
0 commit comments