prebid.js 8.3.0 → 8.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/a1MediaRtdProvider.js +1 -0
  4. package/dist/adagioBidAdapter.js +1 -1
  5. package/dist/adbookpspBidAdapter.js +1 -1
  6. package/dist/adfBidAdapter.js +1 -1
  7. package/dist/adgenerationBidAdapter.js +1 -1
  8. package/dist/adkernelAdnBidAdapter.js +1 -1
  9. package/dist/adkernelBidAdapter.js +1 -1
  10. package/dist/admanBidAdapter.js +1 -1
  11. package/dist/admixerIdSystem.js +1 -1
  12. package/dist/adnuntiusBidAdapter.js +1 -1
  13. package/dist/adqueryBidAdapter.js +1 -1
  14. package/dist/adqueryIdSystem.js +1 -1
  15. package/dist/adrelevantisBidAdapter.js +1 -1
  16. package/dist/adtelligentIdSystem.js +1 -1
  17. package/dist/adtrgtmeBidAdapter.js +1 -1
  18. package/dist/adxcgBidAdapter.js +1 -1
  19. package/dist/adyoulikeBidAdapter.js +1 -1
  20. package/dist/ajaBidAdapter.js +1 -1
  21. package/dist/amxBidAdapter.js +1 -1
  22. package/dist/amxIdSystem.js +1 -1
  23. package/dist/appierAnalyticsAdapter.js +1 -1
  24. package/dist/appnexusBidAdapter.js +1 -1
  25. package/dist/asoBidAdapter.js +1 -1
  26. package/dist/axonixBidAdapter.js +1 -1
  27. package/dist/beachfrontBidAdapter.js +1 -1
  28. package/dist/bidglassBidAdapter.js +1 -1
  29. package/dist/big-richmediaBidAdapter.js +1 -1
  30. package/dist/brandmetricsRtdProvider.js +1 -1
  31. package/dist/bridBidAdapter.js +1 -1
  32. package/dist/bridgewellBidAdapter.js +1 -1
  33. package/dist/brightMountainMediaBidAdapter.js +1 -1
  34. package/dist/britepoolIdSystem.js +1 -1
  35. package/dist/carodaBidAdapter.js +1 -1
  36. package/dist/chtnwBidAdapter.js +1 -1
  37. package/dist/concertBidAdapter.js +1 -1
  38. package/dist/connectIdSystem.js +1 -1
  39. package/dist/connectadBidAdapter.js +1 -1
  40. package/dist/consentManagementGpp.js +1 -1
  41. package/dist/consumableBidAdapter.js +1 -1
  42. package/dist/conversantAnalyticsAdapter.js +1 -1
  43. package/dist/conversantBidAdapter.js +1 -1
  44. package/dist/craftBidAdapter.js +1 -1
  45. package/dist/criteoBidAdapter.js +1 -1
  46. package/dist/criteoIdSystem.js +1 -1
  47. package/dist/cwireBidAdapter.js +1 -1
  48. package/dist/czechAdIdSystem.js +1 -1
  49. package/dist/dacIdSystem.js +1 -1
  50. package/dist/deepintentDpesIdSystem.js +1 -1
  51. package/dist/dependencies.json +6 -0
  52. package/dist/dmdIdSystem.js +1 -1
  53. package/dist/dspxBidAdapter.js +1 -1
  54. package/dist/eplanningBidAdapter.js +1 -1
  55. package/dist/euidIdSystem.js +1 -1
  56. package/dist/fabrickIdSystem.js +1 -1
  57. package/dist/feedadBidAdapter.js +1 -1
  58. package/dist/finativeBidAdapter.js +1 -1
  59. package/dist/freewheel-sspBidAdapter.js +1 -1
  60. package/dist/ftrackIdSystem.js +1 -1
  61. package/dist/gdprEnforcement.js +1 -1
  62. package/dist/geolocationRtdProvider.js +1 -0
  63. package/dist/gmosspBidAdapter.js +1 -1
  64. package/dist/goldbachBidAdapter.js +1 -1
  65. package/dist/gravitoIdSystem.js +1 -1
  66. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  67. package/dist/greenbidsRtdProvider.js +1 -1
  68. package/dist/gridBidAdapter.js +1 -1
  69. package/dist/growthCodeIdSystem.js +1 -1
  70. package/dist/gumgumBidAdapter.js +1 -1
  71. package/dist/h12mediaBidAdapter.js +1 -1
  72. package/dist/hadronIdSystem.js +1 -1
  73. package/dist/hypelabBidAdapter.js +1 -1
  74. package/dist/id5IdSystem.js +1 -1
  75. package/dist/identityLinkIdSystem.js +1 -1
  76. package/dist/idxIdSystem.js +1 -1
  77. package/dist/imdsBidAdapter.js +1 -1
  78. package/dist/improvedigitalBidAdapter.js +1 -1
  79. package/dist/imuIdSystem.js +1 -1
  80. package/dist/insticatorBidAdapter.js +1 -1
  81. package/dist/intentIqIdSystem.js +1 -1
  82. package/dist/invibesBidAdapter.js +1 -1
  83. package/dist/ixBidAdapter.js +1 -1
  84. package/dist/justIdSystem.js +1 -1
  85. package/dist/justpremiumBidAdapter.js +1 -1
  86. package/dist/kargoBidAdapter.js +1 -1
  87. package/dist/kinessoIdSystem.js +1 -1
  88. package/dist/konduitAnalyticsAdapter.js +1 -1
  89. package/dist/kueezBidAdapter.js +1 -1
  90. package/dist/kueezRtbBidAdapter.js +1 -1
  91. package/dist/kulturemediaBidAdapter.js +1 -1
  92. package/dist/lassoBidAdapter.js +1 -1
  93. package/dist/lifestreetBidAdapter.js +1 -1
  94. package/dist/liveIntentIdSystem.js +1 -1
  95. package/dist/logicadBidAdapter.js +1 -1
  96. package/dist/loglyliftBidAdapter.js +1 -1
  97. package/dist/lotamePanoramaIdSystem.js +1 -1
  98. package/dist/magniteAnalyticsAdapter.js +1 -1
  99. package/dist/malltvAnalyticsAdapter.js +1 -1
  100. package/dist/marsmediaBidAdapter.js +1 -1
  101. package/dist/mediafuseBidAdapter.js +1 -1
  102. package/dist/mediasquareBidAdapter.js +1 -1
  103. package/dist/merkleIdSystem.js +1 -1
  104. package/dist/mgidBidAdapter.js +1 -1
  105. package/dist/minutemediaBidAdapter.js +1 -1
  106. package/dist/minutemediaplusBidAdapter.js +1 -1
  107. package/dist/mwOpenLinkIdSystem.js +1 -1
  108. package/dist/naveggIdSystem.js +1 -1
  109. package/dist/netIdSystem.js +1 -1
  110. package/dist/nexx360BidAdapter.js +1 -1
  111. package/dist/not-for-prod/prebid.js +185 -182
  112. package/dist/novatiqIdSystem.js +1 -1
  113. package/dist/oguryBidAdapter.js +1 -1
  114. package/dist/oneKeyIdSystem.js +1 -1
  115. package/dist/onetagBidAdapter.js +1 -1
  116. package/dist/ooloAnalyticsAdapter.js +1 -1
  117. package/dist/optidigitalBidAdapter.js +1 -1
  118. package/dist/outbrainBidAdapter.js +1 -1
  119. package/dist/ozoneBidAdapter.js +1 -1
  120. package/dist/pairIdSystem.js +1 -1
  121. package/dist/parrableIdSystem.js +1 -1
  122. package/dist/pixfutureBidAdapter.js +1 -1
  123. package/dist/prebid-core.js +2 -2
  124. package/dist/publinkIdSystem.js +1 -1
  125. package/dist/pubmaticBidAdapter.js +1 -1
  126. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  127. package/dist/pulsepointBidAdapter.js +1 -1
  128. package/dist/pxyzBidAdapter.js +1 -1
  129. package/dist/quantcastBidAdapter.js +1 -1
  130. package/dist/quantcastIdSystem.js +1 -1
  131. package/dist/readpeakBidAdapter.js +1 -1
  132. package/dist/relaidoBidAdapter.js +1 -1
  133. package/dist/retailspotBidAdapter.js +1 -1
  134. package/dist/rhythmoneBidAdapter.js +1 -1
  135. package/dist/riseBidAdapter.js +1 -1
  136. package/dist/rubiconBidAdapter.js +1 -1
  137. package/dist/seedingAllianceBidAdapter.js +1 -1
  138. package/dist/seedtagBidAdapter.js +1 -1
  139. package/dist/sharedIdSystem.js +1 -1
  140. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  141. package/dist/sharethroughBidAdapter.js +1 -1
  142. package/dist/shinezBidAdapter.js +1 -1
  143. package/dist/silverpushBidAdapter.js +1 -1
  144. package/dist/smaatoBidAdapter.js +1 -1
  145. package/dist/smartadserverBidAdapter.js +1 -1
  146. package/dist/smartxBidAdapter.js +1 -1
  147. package/dist/smilewantedBidAdapter.js +1 -1
  148. package/dist/sonobiBidAdapter.js +1 -1
  149. package/dist/sovrnAnalyticsAdapter.js +1 -1
  150. package/dist/sovrnBidAdapter.js +1 -1
  151. package/dist/ssmasBidAdapter.js +1 -0
  152. package/dist/sspBCBidAdapter.js +1 -1
  153. package/dist/stroeerCoreBidAdapter.js +1 -1
  154. package/dist/stvBidAdapter.js +1 -1
  155. package/dist/sublimeBidAdapter.js +1 -1
  156. package/dist/tapadIdSystem.js +1 -1
  157. package/dist/targetVideoBidAdapter.js +1 -1
  158. package/dist/teadsBidAdapter.js +1 -1
  159. package/dist/tncIdSystem.js +1 -1
  160. package/dist/topicsFpdModule.js +1 -1
  161. package/dist/trionBidAdapter.js +1 -1
  162. package/dist/tripleliftBidAdapter.js +1 -1
  163. package/dist/ttdBidAdapter.js +1 -1
  164. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  165. package/dist/uid2IdSystem.js +1 -1
  166. package/dist/underdogmediaBidAdapter.js +1 -1
  167. package/dist/undertoneBidAdapter.js +1 -1
  168. package/dist/unifiedIdSystem.js +1 -1
  169. package/dist/userId.js +1 -1
  170. package/dist/utiqSystem.js +1 -1
  171. package/dist/verizonMediaIdSystem.js +1 -1
  172. package/dist/vidazooBidAdapter.js +1 -1
  173. package/dist/videobyteBidAdapter.js +1 -1
  174. package/dist/visxBidAdapter.js +1 -1
  175. package/dist/voxBidAdapter.js +1 -1
  176. package/dist/vrtcalBidAdapter.js +1 -1
  177. package/dist/vuukleBidAdapter.js +1 -1
  178. package/dist/widespaceBidAdapter.js +1 -1
  179. package/dist/winrBidAdapter.js +1 -1
  180. package/dist/yahoosspBidAdapter.js +1 -1
  181. package/dist/yandexBidAdapter.js +1 -1
  182. package/dist/yieldmoBidAdapter.js +1 -1
  183. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  184. package/dist/zeotapIdPlusIdSystem.js +1 -1
  185. package/integrationExamples/gpt/adUnitFloors.html +0 -1
  186. package/integrationExamples/videoModule/jwplayer/bidMarkedAsUsed.html +1 -1
  187. package/integrationExamples/videoModule/jwplayer/eventListeners.html +2 -2
  188. package/integrationExamples/videoModule/jwplayer/eventsUI.html +1 -1
  189. package/integrationExamples/videoModule/jwplayer/gamAdServerMediation.html +1 -1
  190. package/integrationExamples/videoModule/jwplayer/mediaMetadata.html +1 -1
  191. package/integrationExamples/videoModule/jwplayer/playlist.html +1 -1
  192. package/integrationExamples/videoModule/videojs/bidMarkedAsUsed.html +1 -1
  193. package/integrationExamples/videoModule/videojs/bidRequestScheduling.html +1 -1
  194. package/integrationExamples/videoModule/videojs/eventListeners.html +1 -1
  195. package/integrationExamples/videoModule/videojs/eventsUI.html +1 -1
  196. package/integrationExamples/videoModule/videojs/gamAdServerMediation.html +1 -1
  197. package/integrationExamples/videoModule/videojs/mediaMetadata.html +1 -1
  198. package/integrationExamples/videoModule/videojs/playlist.html +1 -1
  199. package/modules/.submodules.json +1 -0
  200. package/modules/33acrossBidAdapter.js +24 -14
  201. package/modules/33acrossIdSystem.js +24 -4
  202. package/modules/a1MediaRtdProvider.js +92 -0
  203. package/modules/a1MediaRtdProvider.md +46 -0
  204. package/modules/adagioBidAdapter.js +0 -1
  205. package/modules/adfBidAdapter.js +4 -1
  206. package/modules/adkernelAdnBidAdapter.js +1 -1
  207. package/modules/adkernelBidAdapter.js +10 -3
  208. package/modules/admanBidAdapter.js +4 -0
  209. package/modules/admixerIdSystem.js +6 -0
  210. package/modules/adnuntiusBidAdapter.js +5 -13
  211. package/modules/adqueryIdSystem.js +6 -0
  212. package/modules/adtelligentIdSystem.js +6 -0
  213. package/modules/adyoulikeBidAdapter.js +6 -3
  214. package/modules/amxIdSystem.js +6 -0
  215. package/modules/beachfrontBidAdapter.js +32 -6
  216. package/modules/brandmetricsRtdProvider.js +36 -2
  217. package/modules/brandmetricsRtdProvider.md +17 -2
  218. package/modules/britepoolIdSystem.js +6 -0
  219. package/modules/connectIdSystem.js +6 -0
  220. package/modules/consentManagementGpp.js +10 -1
  221. package/modules/consumableBidAdapter.js +9 -1
  222. package/modules/criteoIdSystem.js +6 -0
  223. package/modules/czechAdIdSystem.js +6 -0
  224. package/modules/dacIdSystem.js +6 -0
  225. package/modules/deepintentDpesIdSystem.js +7 -2
  226. package/modules/dmdIdSystem.js +6 -0
  227. package/modules/euidIdSystem.js +9 -0
  228. package/modules/fabrickIdSystem.js +6 -0
  229. package/modules/ftrackIdSystem.js +16 -0
  230. package/modules/gdprEnforcement.js +27 -22
  231. package/modules/geolocationRtdProvider.js +65 -0
  232. package/modules/gravitoIdSystem.js +6 -0
  233. package/modules/greenbidsRtdProvider.js +1 -1
  234. package/modules/gridBidAdapter.js +19 -0
  235. package/modules/growthCodeIdSystem.js +20 -1
  236. package/modules/hadronIdSystem.js +6 -0
  237. package/modules/id5IdSystem.js +34 -8
  238. package/modules/identityLinkIdSystem.js +6 -0
  239. package/modules/idxIdSystem.js +6 -0
  240. package/modules/imdsBidAdapter.js +38 -14
  241. package/modules/imuIdSystem.js +10 -0
  242. package/modules/intentIqIdSystem.js +6 -0
  243. package/modules/invibesBidAdapter.js +5 -5
  244. package/modules/ixBidAdapter.js +56 -2
  245. package/modules/justIdSystem.js +6 -0
  246. package/modules/kargoBidAdapter.js +4 -0
  247. package/modules/kinessoIdSystem.js +7 -2
  248. package/modules/liveIntentIdSystem.js +53 -0
  249. package/modules/lotamePanoramaIdSystem.js +6 -0
  250. package/modules/merkleIdSystem.js +24 -0
  251. package/modules/minutemediaBidAdapter.js +17 -2
  252. package/modules/mwOpenLinkIdSystem.js +6 -0
  253. package/modules/naveggIdSystem.js +6 -0
  254. package/modules/netIdSystem.js +6 -0
  255. package/modules/novatiqIdSystem.js +12 -0
  256. package/modules/oguryBidAdapter.js +29 -16
  257. package/modules/oneKeyIdSystem.js +26 -0
  258. package/modules/ozoneBidAdapter.js +65 -18
  259. package/modules/ozoneBidAdapter.md +3 -1
  260. package/modules/pairIdSystem.js +6 -0
  261. package/modules/parrableIdSystem.js +38 -2
  262. package/modules/publinkIdSystem.js +7 -1
  263. package/modules/pubmaticBidAdapter.js +16 -1
  264. package/modules/pulsepointBidAdapter.js +63 -424
  265. package/modules/pulsepointBidAdapter.md +39 -45
  266. package/modules/quantcastIdSystem.js +6 -0
  267. package/modules/rubiconBidAdapter.js +9 -0
  268. package/modules/sharedIdSystem.js +7 -1
  269. package/modules/silverpushBidAdapter.js +2 -2
  270. package/modules/sovrnBidAdapter.js +5 -1
  271. package/modules/ssmasBidAdapter.js +126 -0
  272. package/modules/ssmasBidAdapter.md +35 -0
  273. package/modules/sspBCBidAdapter.js +36 -13
  274. package/modules/stroeerCoreBidAdapter.js +2 -3
  275. package/modules/tapadIdSystem.js +6 -0
  276. package/modules/teadsBidAdapter.js +2 -0
  277. package/modules/tncIdSystem.js +6 -0
  278. package/modules/topicsFpdModule.js +4 -1
  279. package/modules/topicsFpdModule.md +4 -0
  280. package/modules/tripleliftBidAdapter.js +5 -0
  281. package/modules/uid2IdSystem.js +14 -0
  282. package/modules/unifiedIdSystem.js +11 -0
  283. package/modules/userId/eids.js +6 -445
  284. package/modules/userId/index.js +38 -26
  285. package/modules/utiqSystem.js +9 -0
  286. package/modules/verizonMediaIdSystem.js +6 -0
  287. package/modules/vidazooBidAdapter.js +5 -7
  288. package/modules/voxBidAdapter.js +16 -5
  289. package/modules/vrtcalBidAdapter.js +10 -6
  290. package/modules/yahoosspBidAdapter.js +38 -33
  291. package/modules/yahoosspBidAdapter.md +96 -95
  292. package/modules/yandexBidAdapter.js +12 -15
  293. package/modules/zeotapIdPlusIdSystem.js +6 -0
  294. package/package.json +1 -1
  295. package/src/activities/redactor.js +1 -1
  296. package/src/adapters/bidderFactory.js +15 -6
  297. package/src/adloader.js +2 -1
  298. package/src/auction.js +24 -2
  299. package/src/constants.json +3 -1
  300. package/src/fpd/sua.js +8 -2
  301. package/test/spec/auctionmanager_spec.js +29 -1
  302. package/test/spec/fpd/enrichment_spec.js +7 -1
  303. package/test/spec/fpd/sua_spec.js +12 -0
  304. package/test/spec/modules/33acrossBidAdapter_spec.js +188 -35
  305. package/test/spec/modules/33acrossIdSystem_spec.js +122 -27
  306. package/test/spec/modules/a1MediaRtdProvider_spec.js +105 -0
  307. package/test/spec/modules/adagioBidAdapter_spec.js +0 -1
  308. package/test/spec/modules/adfBidAdapter_spec.js +47 -0
  309. package/test/spec/modules/adkernelAdnBidAdapter_spec.js +1 -2
  310. package/test/spec/modules/adkernelBidAdapter_spec.js +7 -2
  311. package/test/spec/modules/adnuntiusBidAdapter_spec.js +116 -64
  312. package/test/spec/modules/adyoulikeBidAdapter_spec.js +13 -24
  313. package/test/spec/modules/beachfrontBidAdapter_spec.js +35 -2
  314. package/test/spec/modules/brandmetricsRtdProvider_spec.js +69 -7
  315. package/test/spec/modules/consentManagementGpp_spec.js +16 -0
  316. package/test/spec/modules/consumableBidAdapter_spec.js +15 -0
  317. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +5 -5
  318. package/test/spec/modules/gdprEnforcement_spec.js +43 -2
  319. package/test/spec/modules/geolocationRtdProvider_spec.js +119 -0
  320. package/test/spec/modules/greenbidsRtdProvider_spec.js +1 -1
  321. package/test/spec/modules/gridBidAdapter_spec.js +42 -0
  322. package/test/spec/modules/id5IdSystem_spec.js +18 -0
  323. package/test/spec/modules/imdsBidAdapter_spec.js +98 -17
  324. package/test/spec/modules/invibesBidAdapter_spec.js +123 -32
  325. package/test/spec/modules/ixBidAdapter_spec.js +95 -5
  326. package/test/spec/modules/kargoBidAdapter_spec.js +121 -106
  327. package/test/spec/modules/medianetBidAdapter_spec.js +117 -0
  328. package/test/spec/modules/minutemediaBidAdapter_spec.js +36 -5
  329. package/test/spec/modules/oguryBidAdapter_spec.js +208 -108
  330. package/test/spec/modules/outbrainBidAdapter_spec.js +3 -5
  331. package/test/spec/modules/ozoneBidAdapter_spec.js +27 -1
  332. package/test/spec/modules/prebidServerBidAdapter_spec.js +2 -20
  333. package/test/spec/modules/priceFloors_spec.js +14 -0
  334. package/test/spec/modules/pubmaticBidAdapter_spec.js +125 -373
  335. package/test/spec/modules/pulsepointBidAdapter_spec.js +225 -486
  336. package/test/spec/modules/rubiconBidAdapter_spec.js +220 -9
  337. package/test/spec/modules/smaatoBidAdapter_spec.js +4 -6
  338. package/test/spec/modules/sovrnBidAdapter_spec.js +24 -4
  339. package/test/spec/modules/ssmasBidAdapter_spec.js +244 -0
  340. package/test/spec/modules/sspBCBidAdapter_spec.js +18 -19
  341. package/test/spec/modules/stroeerCoreBidAdapter_spec.js +8 -5
  342. package/test/spec/modules/teadsBidAdapter_spec.js +70 -21
  343. package/test/spec/modules/topicsFpdModule_spec.js +10 -4
  344. package/test/spec/modules/tripleliftBidAdapter_spec.js +40 -0
  345. package/test/spec/modules/userId_spec.js +116 -7
  346. package/test/spec/modules/vidazooBidAdapter_spec.js +0 -5
  347. package/test/spec/modules/voxBidAdapter_spec.js +93 -0
  348. package/test/spec/modules/vrtcalBidAdapter_spec.js +12 -4
  349. package/test/spec/modules/xeBidAdapter_spec.js +366 -368
  350. package/test/spec/modules/yahoosspBidAdapter_spec.js +405 -330
  351. package/test/spec/modules/yandexBidAdapter_spec.js +21 -3
  352. package/test/spec/unit/core/bidderFactory_spec.js +61 -14
  353. package/integrationExamples/gpt/inskin_example.html +0 -100
  354. package/integrationExamples/gpt/pbjs_video_adUnit.html +0 -109
@@ -77,7 +77,8 @@ const SOURCE_RTI_MAPPING = {
77
77
  'pubcid.org': '', // SharedID, pubcid
78
78
  'utiq.com': '', // Utiq
79
79
  'intimatemerger.com': '',
80
- '33across.com': ''
80
+ '33across.com': '',
81
+ 'liveintent.indexexchange.com': '',
81
82
  };
82
83
  const PROVIDERS = [
83
84
  'britepoolid',
@@ -180,6 +181,41 @@ function bidToBannerImp(bid) {
180
181
  return imp;
181
182
  }
182
183
 
184
+ /**
185
+ * Sets imp.displaymanager
186
+ *
187
+ * @param {object} imp
188
+ * @param {object} bid
189
+ */
190
+ function setDisplayManager(imp, bid) {
191
+ if (deepAccess(bid, 'mediaTypes.video.context') === OUTSTREAM) {
192
+ let renderer = deepAccess(bid, 'mediaTypes.video.renderer');
193
+ if (!renderer) {
194
+ renderer = deepAccess(bid, 'renderer');
195
+ }
196
+
197
+ if (deepAccess(bid, 'schain', false)) {
198
+ imp.displaymanager = 'pbjs_wrapper';
199
+ } else if (renderer && typeof (renderer) === 'object') {
200
+ if (renderer.url !== undefined) {
201
+ let domain = '';
202
+ try {
203
+ domain = new URL(renderer.url).hostname
204
+ } catch {
205
+ return;
206
+ }
207
+ if (domain.includes('js-sec.indexww')) {
208
+ imp.displaymanager = 'ix';
209
+ } else {
210
+ imp.displaymanager = renderer.url;
211
+ }
212
+ }
213
+ } else {
214
+ imp.displaymanager = 'ix';
215
+ }
216
+ }
217
+ }
218
+
183
219
  /**
184
220
  * Transform valid bid request config object to video impression object that will be sent to ad server.
185
221
  *
@@ -199,8 +235,10 @@ export function bidToVideoImp(bid) {
199
235
  // populate imp level transactionId
200
236
  imp.ext.tid = deepAccess(bid, 'ortb2Imp.ext.tid');
201
237
 
238
+ setDisplayManager(imp, bid);
239
+
202
240
  // AdUnit-Specific First Party Data
203
- addAdUnitFPD(imp, bid)
241
+ addAdUnitFPD(imp, bid);
204
242
 
205
243
  // copy all video properties to imp object
206
244
  for (const adUnitProperty in videoAdUnitRef) {
@@ -698,6 +736,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
698
736
 
699
737
  const isLastAdUnit = adUnitIndex === impKeys.length - 1;
700
738
 
739
+ r = addDeviceInfo(r);
701
740
  r = deduplicateImpExtFields(r);
702
741
  r = removeSiteIDs(r);
703
742
 
@@ -2018,4 +2057,19 @@ function getFormatCount(imp) {
2018
2057
  return formatCount;
2019
2058
  }
2020
2059
 
2060
+ /**
2061
+ * Adds device.w / device.h info
2062
+ * @param {object} r
2063
+ * @returns object
2064
+ */
2065
+ export function addDeviceInfo(r) {
2066
+ if (r.device == undefined) {
2067
+ r.device = {};
2068
+ }
2069
+ r.device.h = window.screen.height;
2070
+ r.device.w = window.screen.width;
2071
+
2072
+ return r;
2073
+ }
2074
+
2021
2075
  registerBidder(spec);
@@ -91,6 +91,12 @@ export const justIdSubmodule = {
91
91
  }
92
92
  }
93
93
  };
94
+ },
95
+ eids: {
96
+ 'justId': {
97
+ source: 'justtag.com',
98
+ atype: 1
99
+ },
94
100
  }
95
101
  };
96
102
 
@@ -97,6 +97,10 @@ function buildRequests(validBidRequests, bidderRequest) {
97
97
  user: getUserIds(tdidAdapter, bidderRequest.uspConsent, bidderRequest.gdprConsent, firstBidRequest.userIdAsEids, bidderRequest.gppConsent),
98
98
  });
99
99
 
100
+ if (firstBidRequest.schain && firstBidRequest.schain.nodes) {
101
+ krakenParams.schain = firstBidRequest.schain
102
+ }
103
+
100
104
  const reqCount = getRequestCount()
101
105
  if (reqCount != null) {
102
106
  krakenParams.requestCount = reqCount;
@@ -233,8 +233,13 @@ export const kinessoIdSubmodule = {
233
233
  const payloadString = JSON.stringify(kinessoIdPayload);
234
234
  ajax(kinessoSyncUrl(accountId, consentData), syncId(knnsoId), payloadString, {method: 'POST', withCredentials: true});
235
235
  return {'id': knnsoId};
236
- }
237
-
236
+ },
237
+ eids: {
238
+ 'kpuid': {
239
+ source: 'kpuid.com',
240
+ atype: 3
241
+ },
242
+ },
238
243
  };
239
244
 
240
245
  // Register submodule for userId
@@ -242,6 +242,59 @@ export const liveIntentIdSubmodule = {
242
242
  }
243
243
 
244
244
  return { callback: result };
245
+ },
246
+ eids: {
247
+ 'lipb': {
248
+ getValue: function(data) {
249
+ return data.lipbid;
250
+ },
251
+ source: 'liveintent.com',
252
+ atype: 3,
253
+ getEidExt: function(data) {
254
+ if (Array.isArray(data.segments) && data.segments.length) {
255
+ return {
256
+ segments: data.segments
257
+ };
258
+ }
259
+ }
260
+ },
261
+ 'bidswitch': {
262
+ source: 'bidswitch.net',
263
+ atype: 3,
264
+ getValue: function(data) {
265
+ return data.id;
266
+ },
267
+ getUidExt: function(data) {
268
+ if (data.ext) {
269
+ return data.ext;
270
+ }
271
+ }
272
+ },
273
+ 'medianet': {
274
+ source: 'media.net',
275
+ atype: 3,
276
+ getValue: function(data) {
277
+ return data.id;
278
+ },
279
+ getUidExt: function(data) {
280
+ if (data.ext) {
281
+ return data.ext;
282
+ }
283
+ }
284
+ },
285
+ 'magnite': {
286
+ source: 'rubiconproject.com',
287
+ atype: 3,
288
+ getValue: function(data) {
289
+ return data.id;
290
+ },
291
+ getUidExt: function(data) {
292
+ if (data.ext) {
293
+ return data.ext;
294
+ }
295
+ }
296
+ },
297
+
245
298
  }
246
299
  };
247
300
 
@@ -368,6 +368,12 @@ export const lotamePanoramaIdSubmodule = {
368
368
 
369
369
  return { callback: resolveIdFunction };
370
370
  },
371
+ eids: {
372
+ lotamePanoramaId: {
373
+ source: 'crwdcntrl.net',
374
+ atype: 1,
375
+ },
376
+ },
371
377
  };
372
378
 
373
379
  submodule('userId', lotamePanoramaIdSubmodule);
@@ -196,6 +196,30 @@ export const merkleIdSubmodule = {
196
196
 
197
197
  logInfo('User ID - merkleId not refreshed');
198
198
  return {id: storedId};
199
+ },
200
+ eids: {
201
+ 'merkleId': {
202
+ atype: 3,
203
+ getSource: function(data) {
204
+ if (data?.ext?.ssp) {
205
+ return `${data.ext.ssp}.merkleinc.com`
206
+ }
207
+ return 'merkleinc.com'
208
+ },
209
+ getValue: function(data) {
210
+ return data.id;
211
+ },
212
+ getUidExt: function(data) {
213
+ if (data.keyID) {
214
+ return {
215
+ keyID: data.keyID
216
+ }
217
+ }
218
+ if (data.ext) {
219
+ return data.ext;
220
+ }
221
+ }
222
+ },
199
223
  }
200
224
 
201
225
  };
@@ -307,6 +307,15 @@ function generateBidParameters(bid, bidderRequest) {
307
307
  bidObject.placementId = placementId;
308
308
  }
309
309
 
310
+ const mimes = deepAccess(bid, `mediaTypes.${mediaType}.mimes`);
311
+ if (mimes) {
312
+ bidObject.mimes = mimes;
313
+ }
314
+ const api = deepAccess(bid, `mediaTypes.${mediaType}.api`);
315
+ if (api) {
316
+ bidObject.api = api;
317
+ }
318
+
310
319
  const sua = deepAccess(bid, `ortb2.device.sua`);
311
320
  if (sua) {
312
321
  bidObject.sua = sua;
@@ -358,6 +367,11 @@ function generateBidParameters(bid, bidderRequest) {
358
367
  bidObject.linearity = linearity;
359
368
  }
360
369
 
370
+ const protocols = deepAccess(bid, `mediaTypes.video.protocols`);
371
+ if (protocols) {
372
+ bidObject.protocols = protocols;
373
+ }
374
+
361
375
  const plcmt = deepAccess(bid, `mediaTypes.video.plcmt`);
362
376
  if (plcmt) {
363
377
  bidObject.plcmt = plcmt;
@@ -398,7 +412,8 @@ function generateGeneralParams(generalObject, bidderRequest) {
398
412
  dnt: (navigator.doNotTrack == 'yes' || navigator.doNotTrack == '1' || navigator.msDoNotTrack == '1') ? 1 : 0,
399
413
  device_type: getDeviceType(navigator.userAgent),
400
414
  ua: navigator.userAgent,
401
- session_id: getBidIdParameter('bidderRequestId', generalObject),
415
+ is_wrapper: !!generalBidParams.isWrapper,
416
+ session_id: generalBidParams.sessionId || getBidIdParameter('bidderRequestId', generalObject),
402
417
  tmax: timeout
403
418
  }
404
419
 
@@ -441,7 +456,7 @@ function generateGeneralParams(generalObject, bidderRequest) {
441
456
 
442
457
  if (bidderRequest && bidderRequest.refererInfo) {
443
458
  generalParams.referrer = deepAccess(bidderRequest, 'refererInfo.ref');
444
- generalParams.page_url = deepAccess(bidderRequest, 'refererInfo.page') || window.location.href
459
+ generalParams.page_url = deepAccess(bidderRequest, 'refererInfo.page') || deepAccess(window, 'location.href');
445
460
  }
446
461
 
447
462
  return generalParams
@@ -137,6 +137,12 @@ export const mwOpenLinkIdSubModule = {
137
137
  const submoduleConfigParams = (submoduleConfig && submoduleConfig.params) || {};
138
138
  if (!isValidConfig(submoduleConfigParams)) return undefined;
139
139
  return setID(submoduleConfigParams);
140
+ },
141
+ eids: {
142
+ 'mwOpenLinkId': {
143
+ source: 'mediawallahscript.com',
144
+ atype: 1
145
+ },
140
146
  }
141
147
  };
142
148
 
@@ -107,6 +107,12 @@ export const naveggIdSubmodule = {
107
107
  }
108
108
  }
109
109
  return undefined;
110
+ },
111
+ eids: {
112
+ 'naveggId': {
113
+ source: 'navegg.com',
114
+ atype: 1
115
+ },
110
116
  }
111
117
  };
112
118
  submodule('userId', naveggIdSubmodule);
@@ -34,6 +34,12 @@ export const netIdSubmodule = {
34
34
  getId(config) {
35
35
  /* currently not possible */
36
36
  return {};
37
+ },
38
+ eids: {
39
+ 'netId': {
40
+ source: 'netid.de',
41
+ atype: 1
42
+ },
37
43
  }
38
44
  };
39
45
 
@@ -259,6 +259,18 @@ export const novatiqIdSubmodule = {
259
259
  srcId = configParams.sourceid;
260
260
  }
261
261
  return srcId;
262
+ },
263
+ eids: {
264
+ 'novatiq': {
265
+ getValue: function(data) {
266
+ if (data.snowflake.id === undefined) {
267
+ return data.snowflake;
268
+ }
269
+
270
+ return data.snowflake.id;
271
+ },
272
+ source: 'novatiq.com',
273
+ },
262
274
  }
263
275
  };
264
276
  submodule('userId', novatiqIdSubmodule);
@@ -11,7 +11,7 @@ const DEFAULT_TIMEOUT = 1000;
11
11
  const BID_HOST = 'https://mweb-hb.presage.io/api/header-bidding-request';
12
12
  const TIMEOUT_MONITORING_HOST = 'https://ms-ads-monitoring-events.presage.io';
13
13
  const MS_COOKIE_SYNC_DOMAIN = 'https://ms-cookie-sync.presage.io';
14
- const ADAPTER_VERSION = '1.4.1';
14
+ const ADAPTER_VERSION = '1.5.0';
15
15
 
16
16
  function getClientWidth() {
17
17
  const documentElementClientWidth = window.top.document.documentElement.clientWidth
@@ -46,22 +46,35 @@ function isBidRequestValid(bid) {
46
46
  }
47
47
 
48
48
  function getUserSyncs(syncOptions, serverResponses, gdprConsent, uspConsent) {
49
- if (!syncOptions.pixelEnabled) return [];
49
+ const consent = (gdprConsent && gdprConsent.consentString) || '';
50
50
 
51
- return [
52
- {
53
- type: 'image',
54
- url: `${MS_COOKIE_SYNC_DOMAIN}/v1/init-sync/bid-switch?iab_string=${(gdprConsent && gdprConsent.consentString) || ''}&source=prebid`
55
- },
56
- {
57
- type: 'image',
58
- url: `${MS_COOKIE_SYNC_DOMAIN}/ttd/init-sync?iab_string=${(gdprConsent && gdprConsent.consentString) || ''}&source=prebid`
59
- },
60
- {
61
- type: 'image',
62
- url: `${MS_COOKIE_SYNC_DOMAIN}/xandr/init-sync?iab_string=${(gdprConsent && gdprConsent.consentString) || ''}&source=prebid`
63
- }
64
- ]
51
+ if (syncOptions.iframeEnabled) {
52
+ return [
53
+ {
54
+ type: 'iframe',
55
+ url: `${MS_COOKIE_SYNC_DOMAIN}/user-sync.html?gdpr_consent=${consent}&source=prebid`
56
+ }
57
+ ];
58
+ }
59
+
60
+ if (syncOptions.pixelEnabled) {
61
+ return [
62
+ {
63
+ type: 'image',
64
+ url: `${MS_COOKIE_SYNC_DOMAIN}/v1/init-sync/bid-switch?iab_string=${consent}&source=prebid`
65
+ },
66
+ {
67
+ type: 'image',
68
+ url: `${MS_COOKIE_SYNC_DOMAIN}/ttd/init-sync?iab_string=${consent}&source=prebid`
69
+ },
70
+ {
71
+ type: 'image',
72
+ url: `${MS_COOKIE_SYNC_DOMAIN}/xandr/init-sync?iab_string=${consent}&source=prebid`
73
+ }
74
+ ];
75
+ }
76
+
77
+ return [];
65
78
  }
66
79
 
67
80
  function buildRequests(validBidRequests, bidderRequest) {
@@ -72,6 +72,32 @@ export const oneKeyIdSubmodule = {
72
72
  return {
73
73
  callback: getIdsAndPreferences
74
74
  };
75
+ },
76
+ eids: {
77
+ 'oneKeyData': {
78
+ getValue: function(data) {
79
+ if (data && Array.isArray(data.identifiers) && data.identifiers[0]) {
80
+ return data.identifiers[0].value;
81
+ }
82
+ },
83
+ source: 'paf',
84
+ atype: 1,
85
+ getEidExt: function(data) {
86
+ if (data && data.preferences) {
87
+ return {preferences: data.preferences};
88
+ }
89
+ },
90
+ getUidExt: function(data) {
91
+ if (data && Array.isArray(data.identifiers) && data.identifiers[0]) {
92
+ const id = data.identifiers[0];
93
+ return {
94
+ version: id.version,
95
+ type: id.type,
96
+ source: id.source
97
+ };
98
+ }
99
+ }
100
+ }
75
101
  }
76
102
  };
77
103
 
@@ -7,7 +7,8 @@ import {
7
7
  isArray,
8
8
  contains,
9
9
  mergeDeep,
10
- parseUrl
10
+ parseUrl,
11
+ generateUUID
11
12
  } from '../src/utils.js';
12
13
  import { registerBidder } from '../src/adapters/bidderFactory.js';
13
14
  import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
@@ -16,12 +17,12 @@ import {getPriceBucketString} from '../src/cpmBucketManager.js';
16
17
  import { Renderer } from '../src/Renderer.js';
17
18
  import {getRefererInfo} from '../src/refererDetection.js';
18
19
  const BIDDER_CODE = 'ozone';
19
- const ORIGIN = 'https://elb.the-ozone-project.com'; // applies only to auction & cookie
20
+ const ORIGIN = 'https://elb.the-ozone-project.com' // applies only to auction & cookie
20
21
  const AUCTIONURI = '/openrtb2/auction';
21
22
  const OZONECOOKIESYNC = '/static/load-cookie.html';
22
23
  const OZONE_RENDERER_URL = 'https://prebid.the-ozone-project.com/ozone-renderer.js';
23
24
  const ORIGIN_DEV = 'https://test.ozpr.net';
24
- const OZONEVERSION = '2.8.0';
25
+ const OZONEVERSION = '2.9.0';
25
26
  export const spec = {
26
27
  gvlid: 524,
27
28
  aliases: [{code: 'lmc', gvlid: 524}],
@@ -36,7 +37,8 @@ export const spec = {
36
37
  'keyPrefix': 'oz',
37
38
  'auctionUrl': ORIGIN + AUCTIONURI,
38
39
  'cookieSyncUrl': ORIGIN + OZONECOOKIESYNC,
39
- 'rendererUrl': OZONE_RENDERER_URL
40
+ 'rendererUrl': OZONE_RENDERER_URL,
41
+ 'batchRequests': false /* you can change this to true OR override it in the config: config.ozone.batchRequests */
40
42
  },
41
43
  loadWhitelabelData(bid) {
42
44
  if (this.propertyBag.whitelabel) { return; }
@@ -73,6 +75,9 @@ export const spec = {
73
75
  this.propertyBag.whitelabel.auctionUrl = bidderConfig.endpointOverride.auctionUrl;
74
76
  }
75
77
  }
78
+ if (bidderConfig.hasOwnProperty('batchRequests')) {
79
+ this.propertyBag.whitelabel.batchRequests = bidderConfig.batchRequests;
80
+ }
76
81
  try {
77
82
  if (arr.hasOwnProperty('auction') && arr.auction === 'dev') {
78
83
  logInfo('GET: auction=dev');
@@ -94,11 +99,14 @@ export const spec = {
94
99
  getRendererUrl() {
95
100
  return this.propertyBag.whitelabel.rendererUrl;
96
101
  },
102
+ isBatchRequests() {
103
+ return this.propertyBag.whitelabel.batchRequests;
104
+ },
97
105
  isBidRequestValid(bid) {
98
106
  this.loadWhitelabelData(bid);
99
107
  logInfo('isBidRequestValid : ', config.getConfig(), bid);
100
108
  let adUnitCode = bid.adUnitCode; // adunit[n].code
101
- let err1 = 'VALIDATION FAILED : missing {param} : siteId, placementId and publisherId are REQUIRED';
109
+ let err1 = 'VALIDATION FAILED : missing {param} : siteId, placementId and publisherId are REQUIRED'
102
110
  if (!(bid.params.hasOwnProperty('placementId'))) {
103
111
  logError(err1.replace('{param}', 'placementId'), adUnitCode);
104
112
  return false;
@@ -199,7 +207,7 @@ export const spec = {
199
207
  let placementId = placementIdOverrideFromGetParam || this.getPlacementId(ozoneBidRequest); // prefer to use a valid override param, else the bidRequest placement Id
200
208
  obj.id = ozoneBidRequest.bidId; // this causes an error if we change it to something else, even if you update the bidRequest object: "WARNING: Bidder ozone made bid for unknown request ID: mb7953.859498327448. Ignoring."
201
209
  obj.tagid = placementId;
202
- let parsed = parseUrl(getRefererInfo().page);
210
+ let parsed = parseUrl(this.getRefererInfo().page);
203
211
  obj.secure = parsed.protocol === 'https' ? 1 : 0;
204
212
  let arrBannerSizes = [];
205
213
  if (!ozoneBidRequest.hasOwnProperty('mediaTypes')) {
@@ -262,9 +270,7 @@ export const spec = {
262
270
  obj.placementId = placementId;
263
271
  deepSetValue(obj, 'ext.prebid', {'storedrequest': {'id': placementId}});
264
272
  obj.ext[whitelabelBidder] = {};
265
- // TODO: fix auctionId/transactionID leak: https://github.com/prebid/Prebid.js/issues/9781
266
273
  obj.ext[whitelabelBidder].adUnitCode = ozoneBidRequest.adUnitCode; // eg. 'mpu'
267
- obj.ext[whitelabelBidder].transactionId = ozoneBidRequest.transactionId; // this is the transactionId PER adUnit, common across bidders for this unit
268
274
  if (ozoneBidRequest.params.hasOwnProperty('customData')) {
269
275
  obj.ext[whitelabelBidder].customData = ozoneBidRequest.params.customData;
270
276
  }
@@ -291,6 +297,10 @@ export const spec = {
291
297
  if (!schain && deepAccess(ozoneBidRequest, 'schain')) {
292
298
  schain = ozoneBidRequest.schain;
293
299
  }
300
+ let gpid = deepAccess(ozoneBidRequest, 'ortb2Imp.ext.gpid');
301
+ if (gpid) {
302
+ deepSetValue(obj, 'ext.gpid', gpid);
303
+ }
294
304
  return obj;
295
305
  });
296
306
  let extObj = {};
@@ -326,7 +336,7 @@ export const spec = {
326
336
  let userExtEids = deepAccess(validBidRequests, '0.userIdAsEids', []); // generate the UserIDs in the correct format for UserId module
327
337
  ozoneRequest.site = {
328
338
  'publisher': {'id': htmlParams.publisherId},
329
- 'page': getRefererInfo().page,
339
+ 'page': this.getRefererInfo().page,
330
340
  'id': htmlParams.siteId
331
341
  };
332
342
  ozoneRequest.test = config.getConfig('debug') ? 1 : 0;
@@ -355,13 +365,33 @@ export const spec = {
355
365
  if (config.getConfig('coppa') === true) {
356
366
  deepSetValue(ozoneRequest, 'regs.coppa', 1);
357
367
  }
368
+ let ozUuid = generateUUID();
369
+ if (this.isBatchRequests()) {
370
+ logInfo('going to batch the requests');
371
+ let arrRet = []; // return an array of objects containing data describing max 10 bids
372
+ for (let i = 0; i < tosendtags.length; i += 10) {
373
+ ozoneRequest.id = ozUuid; // Unique ID of the bid request, provided by the exchange. (REQUIRED)
374
+ ozoneRequest.imp = tosendtags.slice(i, i + 10);
375
+ ozoneRequest.ext = extObj;
376
+ deepSetValue(ozoneRequest, 'user.ext.eids', userExtEids);
377
+ if (ozoneRequest.imp.length > 0) {
378
+ arrRet.push({
379
+ method: 'POST',
380
+ url: this.getAuctionUrl(),
381
+ data: JSON.stringify(ozoneRequest),
382
+ bidderRequest: bidderRequest
383
+ });
384
+ }
385
+ }
386
+ logInfo('batch request going to return : ', arrRet);
387
+ return arrRet;
388
+ }
389
+ logInfo('requests will not be batched.');
358
390
  if (singleRequest) {
359
391
  logInfo('buildRequests starting to generate response for a single request');
360
- ozoneRequest.id = bidderRequest.auctionId; // Unique ID of the bid request, provided by the exchange.
361
- ozoneRequest.auctionId = bidderRequest.auctionId; // not sure if this should be here?
392
+ ozoneRequest.id = ozUuid; // Unique ID of the bid request, provided by the exchange. (REQUIRED)
362
393
  ozoneRequest.imp = tosendtags;
363
394
  ozoneRequest.ext = extObj;
364
- deepSetValue(ozoneRequest, 'source.tid', bidderRequest.auctionId);// RTB 2.5 : tid is Transaction ID that must be common across all participants in this bid request (e.g., potentially multiple exchanges).
365
395
  deepSetValue(ozoneRequest, 'user.ext.eids', userExtEids);
366
396
  var ret = {
367
397
  method: 'POST',
@@ -377,12 +407,9 @@ export const spec = {
377
407
  let arrRet = tosendtags.map(imp => {
378
408
  logInfo('buildRequests starting to generate non-single response, working on imp : ', imp);
379
409
  let ozoneRequestSingle = Object.assign({}, ozoneRequest);
380
- imp.ext[whitelabelBidder].pageAuctionId = bidderRequest['auctionId']; // make a note in the ext object of what the original auctionId was, in the bidderRequest object
381
- ozoneRequestSingle.id = imp.ext[whitelabelBidder].transactionId; // Unique ID of the bid request, provided by the exchange.
382
- ozoneRequestSingle.auctionId = imp.ext[whitelabelBidder].transactionId; // not sure if this should be here?
410
+ ozoneRequestSingle.id = generateUUID(); // Unique ID of the bid request, provided by the exchange. (REQUIRED)
383
411
  ozoneRequestSingle.imp = [imp];
384
412
  ozoneRequestSingle.ext = extObj;
385
- deepSetValue(ozoneRequestSingle, 'source.tid', bidderRequest.auctionId);// RTB 2.5 : tid is Transaction ID that must be common across all participants in this bid request (e.g., potentially multiple exchanges).
386
413
  deepSetValue(ozoneRequestSingle, 'user.ext.eids', userExtEids);
387
414
  logInfo('buildRequests RequestSingle (for non-single) = ', ozoneRequestSingle);
388
415
  return {
@@ -424,6 +451,7 @@ export const spec = {
424
451
  logInfo(`interpretResponse time: ${startTime} . Time between buildRequests done and interpretResponse start was ${startTime - this.propertyBag.buildRequestsEnd}ms`);
425
452
  logInfo(`serverResponse, request`, JSON.parse(JSON.stringify(serverResponse)), JSON.parse(JSON.stringify(request)));
426
453
  serverResponse = serverResponse.body || {};
454
+ let aucId = serverResponse.id; // this will be correct for single requests and non-single
427
455
  if (!serverResponse.hasOwnProperty('seatbid')) {
428
456
  return [];
429
457
  }
@@ -518,7 +546,7 @@ export const spec = {
518
546
  }
519
547
  }
520
548
  let {seat: winningSeat, bid: winningBid} = ozoneGetWinnerForRequestBid(thisBid.bidId, serverResponse.seatbid);
521
- adserverTargeting[whitelabelPrefix + '_auc_id'] = String(request.bidderRequest.auctionId);
549
+ adserverTargeting[whitelabelPrefix + '_auc_id'] = String(aucId); // was request.bidderRequest.auctionId
522
550
  adserverTargeting[whitelabelPrefix + '_winner'] = String(winningSeat);
523
551
  adserverTargeting[whitelabelPrefix + '_bid'] = 'true';
524
552
  adserverTargeting[whitelabelPrefix + '_cache_id'] = deepAccess(thisBid, 'ext.prebid.targeting.hb_cache_id', 'no-id');
@@ -686,10 +714,29 @@ export const spec = {
686
714
  return null;
687
715
  },
688
716
  getGetParametersAsObject() {
689
- let parsed = parseUrl(getRefererInfo().page);
717
+ let parsed = parseUrl(this.getRefererInfo().location);
690
718
  logInfo('getGetParametersAsObject found:', parsed.search);
691
719
  return parsed.search;
692
720
  },
721
+ getRefererInfo() {
722
+ if (getRefererInfo().hasOwnProperty('location')) {
723
+ logInfo('FOUND location on getRefererInfo OK (prebid >= 7); will use getRefererInfo for location & page');
724
+ return getRefererInfo();
725
+ } else {
726
+ logInfo('DID NOT FIND location on getRefererInfo (prebid < 7); will use legacy code that ALWAYS worked reliably to get location & page ;-)');
727
+ try {
728
+ return {
729
+ page: top.location.href,
730
+ location: top.location.href
731
+ };
732
+ } catch (e) {
733
+ return {
734
+ page: window.location.href,
735
+ location: window.location.href
736
+ };
737
+ }
738
+ }
739
+ },
693
740
  blockTheRequest() {
694
741
  let ozRequest = this.getWhitelabelConfigItem('ozone.oz_request');
695
742
  if (typeof ozRequest == 'boolean' && !ozRequest) {
@@ -73,6 +73,8 @@ adUnits = [{
73
73
  }];
74
74
  ```
75
75
 
76
+
77
+ ```
76
78
  //Instream Video adUnit
77
79
 
78
80
  adUnits = [{
@@ -108,4 +110,4 @@ adUnits = [{
108
110
  }
109
111
  }]
110
112
  };
111
- ```
113
+ ```
@@ -78,6 +78,12 @@ export const pairIdSubmodule = {
78
78
  return undefined;
79
79
  }
80
80
  return {'id': ids};
81
+ },
82
+ eids: {
83
+ 'pairId': {
84
+ source: 'google.com',
85
+ atype: 571187
86
+ },
81
87
  }
82
88
  };
83
89