1
1
import type { EventType } from '@sentry-internal/rrweb' ;
2
2
import type { Breadcrumb , FetchBreadcrumbData , XhrBreadcrumbData } from '@sentry/types' ;
3
3
4
- import type { AllEntryData } from './performance' ;
5
-
6
- interface BaseReplayFrame {
4
+ import type {
5
+ HistoryData ,
6
+ LargestContentfulPaintData ,
7
+ MemoryData ,
8
+ NavigationData ,
9
+ NetworkRequestData ,
10
+ PaintData ,
11
+ ResourceData ,
12
+ } from './performance' ;
13
+ import type { ReplayNetworkRequestData } from './replay' ;
14
+
15
+ interface BaseBreadcrumbFrame {
7
16
timestamp : number ;
8
17
/**
9
18
* For compatibility reasons
@@ -29,32 +38,32 @@ interface ConsoleFrameData {
29
38
logger : string ;
30
39
arguments ?: unknown [ ] ;
31
40
}
32
- interface ConsoleFrame extends BaseReplayFrame {
41
+ interface ConsoleFrame extends BaseBreadcrumbFrame {
33
42
category : 'console' ;
34
43
level : Breadcrumb [ 'level' ] ;
35
44
message : string ;
36
45
data : ConsoleFrameData ;
37
46
}
38
47
39
48
type ClickFrameData = BaseDomFrameData ;
40
- interface ClickFrame extends BaseReplayFrame {
49
+ interface ClickFrame extends BaseBreadcrumbFrame {
41
50
category : 'ui.click' ;
42
51
message : string ;
43
52
data : ClickFrameData ;
44
53
}
45
54
46
- interface FetchFrame extends BaseReplayFrame {
55
+ interface FetchFrame extends BaseBreadcrumbFrame {
47
56
category : 'fetch' ;
48
57
type : 'http' ;
49
58
data : FetchBreadcrumbData ;
50
59
}
51
60
52
- interface InputFrame extends BaseReplayFrame {
61
+ interface InputFrame extends BaseBreadcrumbFrame {
53
62
category : 'ui.input' ;
54
63
message : string ;
55
64
}
56
65
57
- interface XhrFrame extends BaseReplayFrame {
66
+ interface XhrFrame extends BaseBreadcrumbFrame {
58
67
category : 'xhr' ;
59
68
type : 'http' ;
60
69
data : XhrBreadcrumbData ;
@@ -65,7 +74,7 @@ interface MutationFrameData {
65
74
count : number ;
66
75
limit : boolean ;
67
76
}
68
- interface MutationFrame extends BaseReplayFrame {
77
+ interface MutationFrame extends BaseBreadcrumbFrame {
69
78
category : 'replay.mutations' ;
70
79
data : MutationFrameData ;
71
80
}
@@ -77,16 +86,16 @@ interface KeyboardEventFrameData extends BaseDomFrameData {
77
86
altKey : boolean ;
78
87
key : string ;
79
88
}
80
- interface KeyboardEventFrame extends BaseReplayFrame {
89
+ interface KeyboardEventFrame extends BaseBreadcrumbFrame {
81
90
category : 'ui.keyDown' ;
82
91
data : KeyboardEventFrameData ;
83
92
}
84
93
85
- interface BlurFrame extends BaseReplayFrame {
94
+ interface BlurFrame extends BaseBreadcrumbFrame {
86
95
category : 'ui.blur' ;
87
96
}
88
97
89
- interface FocusFrame extends BaseReplayFrame {
98
+ interface FocusFrame extends BaseBreadcrumbFrame {
90
99
category : 'ui.focus' ;
91
100
}
92
101
@@ -95,7 +104,7 @@ interface SlowClickFrameData extends ClickFrameData {
95
104
timeAfterClickFs : number ;
96
105
endReason : string ;
97
106
}
98
- interface SlowClickFrame extends BaseReplayFrame {
107
+ interface SlowClickFrame extends BaseBreadcrumbFrame {
99
108
category : 'ui.slowClickDetected' ;
100
109
data : SlowClickFrameData ;
101
110
}
@@ -125,16 +134,68 @@ export type BreadcrumbFrame =
125
134
| FocusFrame
126
135
| SlowClickFrame
127
136
| MutationFrame
128
- | BaseReplayFrame ;
137
+ | BaseBreadcrumbFrame ;
129
138
130
- export interface SpanFrame {
139
+ interface BaseSpanFrame {
131
140
op : string ;
132
141
description : string ;
133
142
startTimestamp : number ;
134
143
endTimestamp : number ;
135
- data : AllEntryData ;
144
+ data ?: Record < string , any > ;
136
145
}
137
146
147
+ interface HistoryFrame extends BaseSpanFrame {
148
+ data : HistoryData ;
149
+ op : 'navigation.push' ;
150
+ }
151
+
152
+ interface LargestContentfulPaintFrame extends BaseSpanFrame {
153
+ data : LargestContentfulPaintData ;
154
+ op : 'largest-contentful-paint' ;
155
+ }
156
+
157
+ interface MemoryFrame extends BaseSpanFrame {
158
+ data : MemoryData ,
159
+ op : 'memory' ,
160
+ }
161
+
162
+ interface NavigationFrame extends BaseSpanFrame {
163
+ data : NavigationData
164
+ op : 'navigation.navigate' | 'navigation.reload' | 'navigation.back' ;
165
+ }
166
+
167
+ interface NetworkRequestFrame extends BaseSpanFrame {
168
+ data : NetworkRequestData | ReplayNetworkRequestData ;
169
+ op : 'resource.fetch'
170
+ }
171
+
172
+ interface PaintFrame extends BaseSpanFrame {
173
+ data : PaintData ;
174
+ op : 'paint' ;
175
+ }
176
+
177
+ interface ResourceFrame extends BaseSpanFrame {
178
+ data : ResourceData ;
179
+ op :
180
+ | 'resource.css'
181
+ | 'resource.iframe'
182
+ | 'resource.img'
183
+ | 'resource.link'
184
+ | 'resource.other'
185
+ | 'resource.script'
186
+ | 'resource.xhr' ;
187
+ }
188
+
189
+ export type SpanFrame =
190
+ | BaseSpanFrame
191
+ | HistoryFrame
192
+ | LargestContentfulPaintFrame
193
+ | MemoryFrame
194
+ | NavigationFrame
195
+ | NetworkRequestFrame
196
+ | PaintFrame
197
+ | ResourceFrame ;
198
+
138
199
export type ReplayFrame = BreadcrumbFrame | SpanFrame ;
139
200
140
201
interface RecordingCustomEvent {
0 commit comments