feat(tracker): allow network sanitizer to return null (skipping msg) (#2009)
This commit is contained in:
parent
ed6e09ec6d
commit
19de9067e0
8 changed files with 36 additions and 15 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "@openreplay/tracker",
|
||||
"description": "The OpenReplay tracker main package",
|
||||
"version": "12.0.5",
|
||||
"version": "12.0.6",
|
||||
"keywords": [
|
||||
"logging",
|
||||
"replay"
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ export class BeaconProxyHandler<T extends typeof navigator.sendBeacon> 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<T extends typeof navigator.sendBeacon> 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,
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ export class FetchProxyHandler<T extends typeof fetch> implements ProxyHandler<T
|
|||
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,
|
||||
private readonly tokenUrlMatcher?: (url: string) => boolean,
|
||||
|
|
@ -269,7 +269,10 @@ export class FetchProxyHandler<T extends typeof fetch> implements ProxyHandler<T
|
|||
item.responseSizeText = formatByteSize(item.responseSize)
|
||||
item.response = getStringResponseByType(item.responseType, responseValue)
|
||||
|
||||
this.sendMessage(item.getMessage())
|
||||
const msg = item.getMessage()
|
||||
if (msg) {
|
||||
this.sendMessage(msg)
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
@ -301,7 +304,7 @@ export default class FetchProxy {
|
|||
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,
|
||||
tokenUrlMatcher?: (url: string) => boolean,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ export class XHRProxyHandler<T extends XMLHttpRequest> implements ProxyHandler<T
|
|||
XMLReq: XMLHttpRequest,
|
||||
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: (message: NetworkRequest) => void,
|
||||
private readonly isServiceUrl: (url: string) => boolean,
|
||||
private readonly tokenUrlMatcher?: (url: string) => boolean,
|
||||
|
|
@ -91,7 +91,10 @@ export class XHRProxyHandler<T extends XMLHttpRequest> implements ProxyHandler<T
|
|||
}, 0)
|
||||
|
||||
if (this.XMLReq.readyState === RequestState.DONE) {
|
||||
this.sendMessage(this.item.getMessage())
|
||||
const msg = this.item.getMessage()
|
||||
if (msg) {
|
||||
this.sendMessage(msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -99,14 +102,20 @@ export class XHRProxyHandler<T extends XMLHttpRequest> implements ProxyHandler<T
|
|||
this.item.cancelState = 1
|
||||
this.item.statusText = 'Abort'
|
||||
|
||||
this.sendMessage(this.item.getMessage())
|
||||
const msg = this.item.getMessage()
|
||||
if (msg) {
|
||||
this.sendMessage(msg)
|
||||
}
|
||||
}
|
||||
|
||||
public onTimeout() {
|
||||
this.item.cancelState = 3
|
||||
this.item.statusText = 'Timeout'
|
||||
|
||||
this.sendMessage(this.item.getMessage())
|
||||
const msg = this.item.getMessage()
|
||||
if (msg) {
|
||||
this.sendMessage(msg)
|
||||
}
|
||||
}
|
||||
|
||||
protected getOpen(target: T) {
|
||||
|
|
@ -229,7 +238,7 @@ export default class XHRProxy {
|
|||
public static create(
|
||||
ignoredHeaders: boolean | string[],
|
||||
setSessionTokenHeader: (cb: (name: string, value: string) => void) => void,
|
||||
sanitize: (data: RequestResponseData) => RequestResponseData,
|
||||
sanitize: (data: RequestResponseData) => RequestResponseData | null,
|
||||
sendMessage: (data: NetworkRequest) => void,
|
||||
isServiceUrl: (url: string) => boolean,
|
||||
tokenUrlMatcher?: (url: string) => boolean,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue