From 19de9067e06d6b5521e495b45d64e0ccd3a0352e Mon Sep 17 00:00:00 2001 From: Delirium Date: Thu, 28 Mar 2024 12:29:08 +0100 Subject: [PATCH] feat(tracker): allow network sanitizer to return null (skipping msg) (#2009) --- tracker/tracker/CHANGELOG.md | 4 ++++ tracker/tracker/package.json | 2 +- .../src/main/modules/Network/beaconProxy.ts | 9 ++++++--- .../src/main/modules/Network/fetchProxy.ts | 9 ++++++--- .../tracker/src/main/modules/Network/index.ts | 2 +- .../main/modules/Network/networkMessage.ts | 4 +++- .../src/main/modules/Network/xhrProxy.ts | 19 ++++++++++++++----- tracker/tracker/src/main/modules/network.ts | 2 +- 8 files changed, 36 insertions(+), 15 deletions(-) diff --git a/tracker/tracker/CHANGELOG.md b/tracker/tracker/CHANGELOG.md index c359e58cc..5e7b658ae 100644 --- a/tracker/tracker/CHANGELOG.md +++ b/tracker/tracker/CHANGELOG.md @@ -1,3 +1,7 @@ +# 12.0.6 + +- allow network sanitizer to return null (will ignore network req) + # 12.0.5 - patch for img.ts srcset detector diff --git a/tracker/tracker/package.json b/tracker/tracker/package.json index 7a316eadc..fa8364cfa 100644 --- a/tracker/tracker/package.json +++ b/tracker/tracker/package.json @@ -1,7 +1,7 @@ { "name": "@openreplay/tracker", "description": "The OpenReplay tracker main package", - "version": "12.0.5", + "version": "12.0.6", "keywords": [ "logging", "replay" diff --git a/tracker/tracker/src/main/modules/Network/beaconProxy.ts b/tracker/tracker/src/main/modules/Network/beaconProxy.ts index 3e73e12b7..2433bd950 100644 --- a/tracker/tracker/src/main/modules/Network/beaconProxy.ts +++ b/tracker/tracker/src/main/modules/Network/beaconProxy.ts @@ -21,7 +21,7 @@ export class BeaconProxyHandler implement constructor( private readonly ignoredHeaders: boolean | string[], private readonly setSessionTokenHeader: (cb: (name: string, value: string) => void) => void, - private readonly sanitize: (data: RequestResponseData) => RequestResponseData, + private readonly sanitize: (data: RequestResponseData) => RequestResponseData | null, private readonly sendMessage: (item: NetworkRequest) => void, private readonly isServiceUrl: (url: string) => boolean, ) {} @@ -66,7 +66,10 @@ export class BeaconProxyHandler implement item.statusText = 'Unknown' } - this.sendMessage(item.getMessage()) + const msg = item.getMessage() + if (msg) { + this.sendMessage(msg) + } return isSuccess } } @@ -81,7 +84,7 @@ export default class BeaconProxy { public static create( ignoredHeaders: boolean | string[], setSessionTokenHeader: (cb: (name: string, value: string) => void) => void, - sanitize: (data: RequestResponseData) => RequestResponseData, + sanitize: (data: RequestResponseData) => RequestResponseData | null, sendMessage: (item: NetworkRequest) => void, isServiceUrl: (url: string) => boolean, ) { diff --git a/tracker/tracker/src/main/modules/Network/fetchProxy.ts b/tracker/tracker/src/main/modules/Network/fetchProxy.ts index 76f1d5cb6..83cd09e6a 100644 --- a/tracker/tracker/src/main/modules/Network/fetchProxy.ts +++ b/tracker/tracker/src/main/modules/Network/fetchProxy.ts @@ -122,7 +122,7 @@ export class FetchProxyHandler implements ProxyHandler void) => void, - private readonly sanitize: (data: RequestResponseData) => RequestResponseData, + private readonly sanitize: (data: RequestResponseData) => RequestResponseData | null, private readonly sendMessage: (item: NetworkRequest) => void, private readonly isServiceUrl: (url: string) => boolean, private readonly tokenUrlMatcher?: (url: string) => boolean, @@ -269,7 +269,10 @@ export class FetchProxyHandler implements ProxyHandler void) => void, - sanitize: (data: RequestResponseData) => RequestResponseData, + sanitize: (data: RequestResponseData) => RequestResponseData | null, sendMessage: (item: NetworkRequest) => void, isServiceUrl: (url: string) => boolean, tokenUrlMatcher?: (url: string) => boolean, diff --git a/tracker/tracker/src/main/modules/Network/index.ts b/tracker/tracker/src/main/modules/Network/index.ts index 2027b81ff..1e9c81ac1 100644 --- a/tracker/tracker/src/main/modules/Network/index.ts +++ b/tracker/tracker/src/main/modules/Network/index.ts @@ -12,7 +12,7 @@ export default function setProxy( context: typeof globalThis, ignoredHeaders: boolean | string[], setSessionTokenHeader: (cb: (name: string, value: string) => void) => void, - sanitize: (data: RequestResponseData) => RequestResponseData, + sanitize: (data: RequestResponseData) => RequestResponseData | null, sendMessage: (message: NetworkRequest) => void, isServiceUrl: (url: string) => boolean, tokenUrlMatcher?: (url: string) => boolean, diff --git a/tracker/tracker/src/main/modules/Network/networkMessage.ts b/tracker/tracker/src/main/modules/Network/networkMessage.ts index 98e1c3a76..7ef4da96a 100644 --- a/tracker/tracker/src/main/modules/Network/networkMessage.ts +++ b/tracker/tracker/src/main/modules/Network/networkMessage.ts @@ -44,7 +44,7 @@ export default class NetworkMessage { constructor( private readonly ignoredHeaders: boolean | string[] = [], private readonly setSessionTokenHeader: (cb: (name: string, value: string) => void) => void, - private readonly sanitize: (data: RequestResponseData) => RequestResponseData, + private readonly sanitize: (data: RequestResponseData) => RequestResponseData | null, ) {} getMessage() { @@ -63,6 +63,8 @@ export default class NetworkMessage { response, }) + if (!messageInfo) return + return NetworkRequest( this.requestType, messageInfo.method, diff --git a/tracker/tracker/src/main/modules/Network/xhrProxy.ts b/tracker/tracker/src/main/modules/Network/xhrProxy.ts index f98d7f9c8..1c096c001 100644 --- a/tracker/tracker/src/main/modules/Network/xhrProxy.ts +++ b/tracker/tracker/src/main/modules/Network/xhrProxy.ts @@ -19,7 +19,7 @@ export class XHRProxyHandler implements ProxyHandler void) => void, - private readonly sanitize: (data: RequestResponseData) => RequestResponseData, + private readonly sanitize: (data: RequestResponseData) => RequestResponseData | null, private readonly sendMessage: (message: NetworkRequest) => void, private readonly isServiceUrl: (url: string) => boolean, private readonly tokenUrlMatcher?: (url: string) => boolean, @@ -91,7 +91,10 @@ export class XHRProxyHandler implements ProxyHandler implements ProxyHandler void) => void, - sanitize: (data: RequestResponseData) => RequestResponseData, + sanitize: (data: RequestResponseData) => RequestResponseData | null, sendMessage: (data: NetworkRequest) => void, isServiceUrl: (url: string) => boolean, tokenUrlMatcher?: (url: string) => boolean, diff --git a/tracker/tracker/src/main/modules/network.ts b/tracker/tracker/src/main/modules/network.ts index bb440eda2..b16657b03 100644 --- a/tracker/tracker/src/main/modules/network.ts +++ b/tracker/tracker/src/main/modules/network.ts @@ -45,7 +45,7 @@ function strMethod(method?: string) { return typeof method === 'string' ? method.toUpperCase() : 'GET' } -type Sanitizer = (data: RequestResponseData) => RequestResponseData +type Sanitizer = (data: RequestResponseData) => RequestResponseData | null export interface Options { sessionTokenHeader: string | boolean