From d973ac678bfce8ca8c348f7a2da85db99e18f439 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Laroche Date: Mon, 5 Jan 2026 11:40:52 -0500 Subject: [PATCH 01/10] Linting --- lib/addons/prototypes/analytics.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/addons/prototypes/analytics.js b/lib/addons/prototypes/analytics.js index 91d02dd..bcc8be3 100644 --- a/lib/addons/prototypes/analytics.js +++ b/lib/addons/prototypes/analytics.js @@ -1,5 +1,4 @@ /* eslint-disable no-param-reassign */ -/* eslint-disable no-console */ const STATUS = { REQUESTED: "REQUESTED", RECEIVED: "RECEIVED", @@ -32,7 +31,7 @@ class OptablePrebidAnalytics { */ log(...args) { if (this.config.debug) { - console.log("[OptablePrebidAnalytics]", ...args); + console.log("[OptablePrebidAnalytics]", ...args); /* eslint-disable-line no-console */ } } @@ -269,8 +268,7 @@ class OptablePrebidAnalytics { missed, url: `${window.location.hostname}${window.location.pathname}`, tenant: this.config.tenant, - // eslint-disable-next-line no-undef - optableWrapperVersion: SDK_WRAPPER_VERSION, + optableWrapperVersion: SDK_WRAPPER_VERSION, // eslint-disable-line no-undef }; // Log summary with bid counts this.log( From 0d1b5286fc5b1be1fc72d3d8dc98f8e81c9319e7 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Laroche Date: Mon, 5 Jan 2026 11:41:15 -0500 Subject: [PATCH 02/10] Add prebidjs version --- lib/addons/prototypes/analytics.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/addons/prototypes/analytics.js b/lib/addons/prototypes/analytics.js index bcc8be3..d6f344a 100644 --- a/lib/addons/prototypes/analytics.js +++ b/lib/addons/prototypes/analytics.js @@ -83,6 +83,7 @@ class OptablePrebidAnalytics { */ hookIntoPrebid(prebidInstance = window.pbjs) { const pbjs = prebidInstance; + this.prebidInstance = pbjs; if (typeof pbjs === "undefined") { this.log("Prebid.js not found"); return false; @@ -269,6 +270,7 @@ class OptablePrebidAnalytics { url: `${window.location.hostname}${window.location.pathname}`, tenant: this.config.tenant, optableWrapperVersion: SDK_WRAPPER_VERSION, // eslint-disable-line no-undef + prebidjsVersion: this.prebidInstance?.version || "unknown", }; // Log summary with bid counts this.log( From f0d6a8078fa182056e6b3f5a7e919fe3f91567f4 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Laroche Date: Mon, 5 Jan 2026 11:41:23 -0500 Subject: [PATCH 03/10] Add sessionDepth --- lib/addons/prototypes/analytics.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/addons/prototypes/analytics.js b/lib/addons/prototypes/analytics.js index d6f344a..c19784a 100644 --- a/lib/addons/prototypes/analytics.js +++ b/lib/addons/prototypes/analytics.js @@ -271,6 +271,7 @@ class OptablePrebidAnalytics { tenant: this.config.tenant, optableWrapperVersion: SDK_WRAPPER_VERSION, // eslint-disable-line no-undef prebidjsVersion: this.prebidInstance?.version || "unknown", + sessionDepth: sessionStorage?.optableSessionDepth || 1, }; // Log summary with bid counts this.log( From 3a8191ecf728915ce1ea6ca1bf02f6dc6abb3096 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Laroche Date: Mon, 5 Jan 2026 11:41:36 -0500 Subject: [PATCH 04/10] Add pageAuctionsCount --- lib/addons/prototypes/analytics.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/addons/prototypes/analytics.js b/lib/addons/prototypes/analytics.js index c19784a..af6da55 100644 --- a/lib/addons/prototypes/analytics.js +++ b/lib/addons/prototypes/analytics.js @@ -100,6 +100,7 @@ class OptablePrebidAnalytics { async trackAuctionEnd(event, missed) { const { auctionId, timeout, bidderRequests = [], bidsReceived = [], noBids = [], timeoutBids = [] } = event; + window.optable.pageAuctionsCount = (window.optable.pageAuctionsCount || 0) + 1; this.log(`Processing auction ${auctionId} with ${bidderRequests.length} bidder requests`); @@ -272,6 +273,7 @@ class OptablePrebidAnalytics { optableWrapperVersion: SDK_WRAPPER_VERSION, // eslint-disable-line no-undef prebidjsVersion: this.prebidInstance?.version || "unknown", sessionDepth: sessionStorage?.optableSessionDepth || 1, + pageAuctionsCount: window.optable?.pageAuctionsCount || 1, }; // Log summary with bid counts this.log( From 022102088c79c7713b1b66812f4d018a97c7717e Mon Sep 17 00:00:00 2001 From: Jean-Philippe Laroche Date: Mon, 5 Jan 2026 16:14:29 -0500 Subject: [PATCH 05/10] Ensure it is a number for pageAuctionsCount --- lib/addons/prototypes/analytics.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/addons/prototypes/analytics.js b/lib/addons/prototypes/analytics.js index af6da55..3f4068e 100644 --- a/lib/addons/prototypes/analytics.js +++ b/lib/addons/prototypes/analytics.js @@ -100,7 +100,8 @@ class OptablePrebidAnalytics { async trackAuctionEnd(event, missed) { const { auctionId, timeout, bidderRequests = [], bidsReceived = [], noBids = [], timeoutBids = [] } = event; - window.optable.pageAuctionsCount = (window.optable.pageAuctionsCount || 0) + 1; + + window.optable.pageAuctionsCount = (Number(window.optable.pageAuctionsCount) || 0) + 1; this.log(`Processing auction ${auctionId} with ${bidderRequests.length} bidder requests`); From 9820268eb51ba1dfbdb4dc69abc686f6336e5167 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Laroche Date: Mon, 5 Jan 2026 16:14:43 -0500 Subject: [PATCH 06/10] Add increment of sessionDepth --- lib/addons/prototypes/analytics.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/addons/prototypes/analytics.js b/lib/addons/prototypes/analytics.js index 3f4068e..20941e2 100644 --- a/lib/addons/prototypes/analytics.js +++ b/lib/addons/prototypes/analytics.js @@ -23,6 +23,8 @@ class OptablePrebidAnalytics { this.auctions = {}; this.maxAuctionDataSize = 20; + sessionStorage.optableSessionDepth = (Number(sessionStorage?.optableSessionDepth) || 0) + 1; + this.log("OptablePrebidAnalytics initialized"); } From 1639840cc088e326c7d404519e8529d5486d746a Mon Sep 17 00:00:00 2001 From: Jean-Philippe Laroche Date: Thu, 5 Mar 2026 15:07:28 -0500 Subject: [PATCH 07/10] Add same field in ts file --- lib/addons/prebid/analytics.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/addons/prebid/analytics.ts b/lib/addons/prebid/analytics.ts index 22a8d2c..25a7480 100644 --- a/lib/addons/prebid/analytics.ts +++ b/lib/addons/prebid/analytics.ts @@ -10,6 +10,7 @@ declare const SDK_WRAPPER_VERSION: string; declare global { interface Window { pbjs?: any; + optable?: any; } } @@ -47,6 +48,7 @@ class OptablePrebidAnalytics { private readonly maxAuctionDataSize: number = 50; private auctions = new Map(); + private prebidInstance: any; /** * Create a new OptablePrebidAnalytics instance. @@ -72,6 +74,8 @@ class OptablePrebidAnalytics { sessionStorage.removeItem(SESSION_SAMPLE_KEY); } + sessionStorage.optableSessionDepth = (Number(sessionStorage?.optableSessionDepth) || 0) + 1; + this.isInitialized = true; // Store auction data @@ -186,6 +190,8 @@ class OptablePrebidAnalytics { */ hookIntoPrebid(prebidInstance = window.pbjs) { const pbjs = prebidInstance; + this.prebidInstance = pbjs; + if (typeof pbjs === "undefined") { this.log("Prebid.js not found"); return false; @@ -214,6 +220,8 @@ class OptablePrebidAnalytics { this.log(`Processing auction ${auctionId} with ${bidderRequests.length} bidder requests`); + window.optable.pageAuctionsCount = (Number(window.optable.pageAuctionsCount) || 0) + 1; + // Build auction object with bidder requests and EID flags const auction = { auctionId, @@ -510,6 +518,9 @@ class OptablePrebidAnalytics { optableWrapperVersion: SDK_WRAPPER_VERSION || "unknown", userAgent: Bowser.parse(window.navigator.userAgent) as unknown as Record, device, + prebidjsVersion: this.prebidInstance?.version || "unknown", + sessionDepth: sessionStorage?.optableSessionDepth || 1, + pageAuctionsCount: window.optable?.pageAuctionsCount || 1, }; // Log summary with bid counts From c5652e95df7101d006a40c132d2b14a348125a58 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Laroche Date: Thu, 5 Mar 2026 15:12:48 -0500 Subject: [PATCH 08/10] Fix --- lib/addons/prebid/analytics.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/addons/prebid/analytics.ts b/lib/addons/prebid/analytics.ts index 25a7480..f9dce74 100644 --- a/lib/addons/prebid/analytics.ts +++ b/lib/addons/prebid/analytics.ts @@ -220,7 +220,7 @@ class OptablePrebidAnalytics { this.log(`Processing auction ${auctionId} with ${bidderRequests.length} bidder requests`); - window.optable.pageAuctionsCount = (Number(window.optable.pageAuctionsCount) || 0) + 1; + window.optable.pageAuctionsCount = (Number(window.optable?.pageAuctionsCount) || 0) + 1; // Build auction object with bidder requests and EID flags const auction = { From 0bd2bda879396e3b626d238b336c7f6e9bf9d210 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Laroche Date: Thu, 5 Mar 2026 15:26:05 -0500 Subject: [PATCH 09/10] Fix 2 --- lib/addons/prebid/analytics.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/addons/prebid/analytics.ts b/lib/addons/prebid/analytics.ts index f9dce74..d7b842a 100644 --- a/lib/addons/prebid/analytics.ts +++ b/lib/addons/prebid/analytics.ts @@ -220,7 +220,8 @@ class OptablePrebidAnalytics { this.log(`Processing auction ${auctionId} with ${bidderRequests.length} bidder requests`); - window.optable.pageAuctionsCount = (Number(window.optable?.pageAuctionsCount) || 0) + 1; + window.optable = window.optable || {}; + window.optable.pageAuctionsCount = (Number(window.optable.pageAuctionsCount) || 0) + 1; // Build auction object with bidder requests and EID flags const auction = { From d74cef8dec748b876e714bbd759c8a43e8169ecf Mon Sep 17 00:00:00 2001 From: Jean-Philippe Laroche Date: Thu, 5 Mar 2026 15:38:35 -0500 Subject: [PATCH 10/10] Fix 3 --- lib/addons/prebid/analytics.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/addons/prebid/analytics.ts b/lib/addons/prebid/analytics.ts index d7b842a..154351f 100644 --- a/lib/addons/prebid/analytics.ts +++ b/lib/addons/prebid/analytics.ts @@ -10,7 +10,6 @@ declare const SDK_WRAPPER_VERSION: string; declare global { interface Window { pbjs?: any; - optable?: any; } } @@ -220,8 +219,8 @@ class OptablePrebidAnalytics { this.log(`Processing auction ${auctionId} with ${bidderRequests.length} bidder requests`); - window.optable = window.optable || {}; - window.optable.pageAuctionsCount = (Number(window.optable.pageAuctionsCount) || 0) + 1; + (window as any).optable = (window as any).optable || {}; + (window as any).optable.pageAuctionsCount = (Number((window as any).optable.pageAuctionsCount) || 0) + 1; // Build auction object with bidder requests and EID flags const auction = { @@ -521,7 +520,7 @@ class OptablePrebidAnalytics { device, prebidjsVersion: this.prebidInstance?.version || "unknown", sessionDepth: sessionStorage?.optableSessionDepth || 1, - pageAuctionsCount: window.optable?.pageAuctionsCount || 1, + pageAuctionsCount: (window as any).optable?.pageAuctionsCount || 1, }; // Log summary with bid counts