From 47158814f2afba02519accc42258d1448888fdd5 Mon Sep 17 00:00:00 2001 From: Alex Kaminskii Date: Fri, 16 Dec 2022 12:10:14 +0100 Subject: [PATCH] fix(tracker-fetch;tracker-axios):prevent multiple plugin use on the same app/axios instance --- tracker/tracker-axios/package.json | 2 +- tracker/tracker-axios/src/index.ts | 7 ++++++- tracker/tracker-fetch/package.json | 2 +- tracker/tracker-fetch/src/index.ts | 9 +++++++-- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/tracker/tracker-axios/package.json b/tracker/tracker-axios/package.json index 6712fb2c2..318e2ab2d 100644 --- a/tracker/tracker-axios/package.json +++ b/tracker/tracker-axios/package.json @@ -1,7 +1,7 @@ { "name": "@openreplay/tracker-axios", "description": "Tracker plugin for axios requests recording", - "version": "3.6.1", + "version": "3.6.2", "keywords": [ "axios", "logging", diff --git a/tracker/tracker-axios/src/index.ts b/tracker/tracker-axios/src/index.ts index 2b2049818..840fd0626 100644 --- a/tracker/tracker-axios/src/index.ts +++ b/tracker/tracker-axios/src/index.ts @@ -52,9 +52,14 @@ export default function(opts: Partial = {}) { opts, ); return (app: App | null) => { - if (app === null) { + if (app === null || + // @ts-ignore - a catch for the developers who apply a plugin several times + options.instance.__openreplayAxiosInstalled__ + ) { return; } + // @ts-ignore + options.instance.__openreplayAxiosInstalled__ = true const ihOpt = options.ignoreHeaders const isHIgnoring = Array.isArray(ihOpt) diff --git a/tracker/tracker-fetch/package.json b/tracker/tracker-fetch/package.json index 2c10d5ed0..1488ae819 100644 --- a/tracker/tracker-fetch/package.json +++ b/tracker/tracker-fetch/package.json @@ -1,7 +1,7 @@ { "name": "@openreplay/tracker-fetch", "description": "Tracker plugin for fetch requests recording ", - "version": "3.6.1", + "version": "3.6.2", "keywords": [ "fetch", "logging", diff --git a/tracker/tracker-fetch/src/index.ts b/tracker/tracker-fetch/src/index.ts index 94aa573b2..10b75b7ea 100644 --- a/tracker/tracker-fetch/src/index.ts +++ b/tracker/tracker-fetch/src/index.ts @@ -37,7 +37,7 @@ export default function(opts: Partial = {}): (app: App | null) => Windo if (typeof window === 'undefined') { // not in browser (SSR) return () => opts.fetch || null - } + } const options: Options = Object.assign( { @@ -53,9 +53,14 @@ export default function(opts: Partial = {}): (app: App | null) => Windo } return (app: App | null) => { - if (app === null) { + if (app === null || + // @ts-ignore - a catch for the developers who apply a plugin several times + app.__fetchInstalled__ + ) { return options.fetch } + // @ts-ignore + app.__fetchInstalled__ = true const ihOpt = options.ignoreHeaders const isHIgnoring = Array.isArray(ihOpt)