openreplay/networkProxy
Delirium dbc142c114
UI patches (28.03) (#3231)
* ui: force getting url for location in tabmanagers

* Assist add turn servers (#3229)

* fixed conflicts

* add offers

* add config to sicket query

* add config to sicket query

* add config init

* removed console logs

* removed wrong updates

* fixed conflicts

* add offers

* add config to sicket query

* add config to sicket query

* add config init

* removed console logs

* removed wrong updates

* ui: fix chat draggable, fix default params

---------

Co-authored-by: nick-delirium <nikita@openreplay.com>

* ui: fix spritemap generation for assist sessions

* ui: fix yarnlock

* fix errors

* updated widget link

* resolved conflicts

* updated widget url

---------

Co-authored-by: Andrey Babushkin <55714097+reyand43@users.noreply.github.com>
Co-authored-by: Андрей Бабушкин <andreybabushkin2000@gmail.com>
2025-03-28 17:32:12 +01:00
..
.yarn UI patches (28.03) (#3231) 2025-03-28 17:32:12 +01:00
coverage network proxy: add vitest coverage 2024-09-30 12:52:11 +02:00
src network layer: change beacon creation, publish .4 2024-11-15 10:14:49 +01:00
tests network proxy: move tests from tracker 2024-09-30 12:50:28 +02:00
.gitignore Spot network refactoring (#2617) 2024-09-30 09:47:27 +02:00
LICENSE Spot network refactoring (#2617) 2024-09-30 09:47:27 +02:00
package-lock.json Spot network refactoring (#2617) 2024-09-30 09:47:27 +02:00
package.json tracker: fix bundling process, export types separately 2024-11-25 10:11:56 +01:00
README.md Spot network refactoring (#2617) 2024-09-30 09:47:27 +02:00
tsconfig.json Spot network refactoring (#2617) 2024-09-30 09:47:27 +02:00
vitest.config.ts network proxy: add vitest coverage 2024-09-30 12:52:11 +02:00
yarn.lock network proxy: add vitest coverage 2024-09-30 12:52:11 +02:00

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 requests 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