@openreplay/network-proxy
v1.0.5
Published
this library helps us to create proxy objects for fetch, XHR and beacons for proper request tracking.
Downloads
56,593
Keywords
Readme
this tiny library helps us (OpenReplay folks) to create proxy objects for fetch, XHR and beacons for proper request tracking in @openreplay/tracker and Spot extension.
example usage:
import createNetworkProxy from '@openreplay/network-proxy';
const context = this;
const ignoreHeaders = ['Authorization'];
const tokenUrlMatcher = /\/auth\/token/;
function setSessionTokenHeader(setRequestHeader: (name: string, value: string) => void) {
const header = 'X-Session-Token
const sessionToken = getToken() // for exmaple, => `session #123123`;
if (sessionToken) {
setRequestHeader(header, sessionToken)
}
}
function sanitize(reqResInfo) {
if (reqResInfo.request) {
delete reqResInfo.request.body
}
return reqResInfo
}
const onMsg = (networkReq) => console.log(networkReq)
const isIgnoredUrl = (url) => url.includes('google.com')
// Gets current tracker request’s url and returns boolean. If present,
// sessionTokenHeader will only be applied when this function returns true.
// Default: undefined
const tokenUrlMatcher = (url) => url.includes('google.com');
// this will observe global network requests
createNetworkProxy(
context,
options.ignoreHeaders,
setSessionTokenHeader,
sanitize,
(message) => app.send(message),
(url) => app.isServiceURL(url),
options.tokenUrlMatcher,
)
// to stop it, you can save this.fetch/other apis before appliying the proxy
// and then restore them