@@ -27,6 +27,7 @@ export type InitiatorType =
27
27
28
28
type NetworkRecordOptions = {
29
29
initiatorType ?: InitiatorType [ ] ;
30
+ ignoreRequestFn ?: ( data : NetworkRequest ) => boolean ;
30
31
recordHeaders ?:
31
32
| boolean
32
33
| StringifyOptions
@@ -68,6 +69,7 @@ const defaultNetworkOptions: NetworkRecordOptions = {
68
69
'video' ,
69
70
'xmlhttprequest' ,
70
71
] ,
72
+ ignoreEventFn : ( ) => false ,
71
73
recordHeaders : false ,
72
74
recordBody : false ,
73
75
recordInitialEvents : false ,
@@ -91,14 +93,10 @@ export type NetworkData = {
91
93
92
94
type networkCallback = ( data : NetworkData ) => void ;
93
95
94
- type NetworkObserverOptions = NetworkRecordOptions & {
95
- initiatorType : InitiatorType [ ] ;
96
- } ;
97
-
98
96
function initPerformanceObserver (
99
97
cb : networkCallback ,
100
98
win : IWindow ,
101
- options : NetworkObserverOptions ,
99
+ options : Required < NetworkRecordOptions > ,
102
100
) {
103
101
if ( ! ( 'performance' in win ) ) {
104
102
return ( ) => {
@@ -151,7 +149,7 @@ function initPerformanceObserver(
151
149
function initXhrObserver (
152
150
cb : networkCallback ,
153
151
win : IWindow ,
154
- options : NetworkObserverOptions ,
152
+ options : Required < NetworkRecordOptions > ,
155
153
) : listenerHandler {
156
154
if ( ! options . initiatorType . includes ( 'xmlhttprequest' ) ) {
157
155
return ( ) => {
@@ -166,7 +164,7 @@ function initXhrObserver(
166
164
function initFetchObserver (
167
165
cb : networkCallback ,
168
166
win : IWindow ,
169
- options : NetworkObserverOptions ,
167
+ options : Required < NetworkRecordOptions > ,
170
168
) : listenerHandler {
171
169
if ( ! options . initiatorType . includes ( 'fetch' ) ) {
172
170
return ( ) => {
@@ -283,15 +281,19 @@ function initFetchObserver(
283
281
}
284
282
285
283
function initNetworkObserver (
286
- cb : networkCallback ,
284
+ callback : networkCallback ,
287
285
win : IWindow , // top window or in an iframe
288
286
options : NetworkRecordOptions ,
289
287
) : listenerHandler {
290
288
const networkOptions = ( options
291
289
? Object . assign ( { } , defaultNetworkOptions , options )
292
- : defaultNetworkOptions ) as {
293
- initiatorType : InitiatorType [ ] ;
294
- recordInitialEvents : boolean ;
290
+ : defaultNetworkOptions ) as Required < NetworkRecordOptions > ;
291
+
292
+ const cb : networkCallback = ( data ) => {
293
+ const requests = data . requests . filter ( ( request ) =>
294
+ networkOptions . ignoreRequestFn ( request ) ,
295
+ ) ;
296
+ callback ( { ...data , requests } ) ;
295
297
} ;
296
298
297
299
const performanceObserver = initPerformanceObserver ( cb , win , networkOptions ) ;
0 commit comments