Skip to content

Commit 1d77b6c

Browse files
committed
add ignoreRequestFn
1 parent d656ac7 commit 1d77b6c

File tree

1 file changed

+13
-11
lines changed
  • packages/rrweb/src/plugins/network/record

1 file changed

+13
-11
lines changed

packages/rrweb/src/plugins/network/record/index.ts

+13-11
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export type InitiatorType =
2727

2828
type NetworkRecordOptions = {
2929
initiatorType?: InitiatorType[];
30+
ignoreRequestFn?: (data: NetworkRequest) => boolean;
3031
recordHeaders?:
3132
| boolean
3233
| StringifyOptions
@@ -68,6 +69,7 @@ const defaultNetworkOptions: NetworkRecordOptions = {
6869
'video',
6970
'xmlhttprequest',
7071
],
72+
ignoreEventFn: () => false,
7173
recordHeaders: false,
7274
recordBody: false,
7375
recordInitialEvents: false,
@@ -91,14 +93,10 @@ export type NetworkData = {
9193

9294
type networkCallback = (data: NetworkData) => void;
9395

94-
type NetworkObserverOptions = NetworkRecordOptions & {
95-
initiatorType: InitiatorType[];
96-
};
97-
9896
function initPerformanceObserver(
9997
cb: networkCallback,
10098
win: IWindow,
101-
options: NetworkObserverOptions,
99+
options: Required<NetworkRecordOptions>,
102100
) {
103101
if (!('performance' in win)) {
104102
return () => {
@@ -151,7 +149,7 @@ function initPerformanceObserver(
151149
function initXhrObserver(
152150
cb: networkCallback,
153151
win: IWindow,
154-
options: NetworkObserverOptions,
152+
options: Required<NetworkRecordOptions>,
155153
): listenerHandler {
156154
if (!options.initiatorType.includes('xmlhttprequest')) {
157155
return () => {
@@ -166,7 +164,7 @@ function initXhrObserver(
166164
function initFetchObserver(
167165
cb: networkCallback,
168166
win: IWindow,
169-
options: NetworkObserverOptions,
167+
options: Required<NetworkRecordOptions>,
170168
): listenerHandler {
171169
if (!options.initiatorType.includes('fetch')) {
172170
return () => {
@@ -283,15 +281,19 @@ function initFetchObserver(
283281
}
284282

285283
function initNetworkObserver(
286-
cb: networkCallback,
284+
callback: networkCallback,
287285
win: IWindow, // top window or in an iframe
288286
options: NetworkRecordOptions,
289287
): listenerHandler {
290288
const networkOptions = (options
291289
? 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 });
295297
};
296298

297299
const performanceObserver = initPerformanceObserver(cb, win, networkOptions);

0 commit comments

Comments
 (0)