prebid.js 8.44.0 → 8.46.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 (521) hide show
  1. package/README.md +7 -1
  2. package/creative/constants.js +7 -7
  3. package/creative/renderers/display/constants.js +2 -2
  4. package/creative/renderers/native/constants.js +2 -2
  5. package/dist/33acrossAnalyticsAdapter.js +1 -1
  6. package/dist/33acrossBidAdapter.js +1 -1
  7. package/dist/33acrossIdSystem.js +1 -1
  8. package/dist/BTBidAdapter.js +1 -1
  9. package/dist/adWMGAnalyticsAdapter.js +1 -1
  10. package/dist/adagioAnalyticsAdapter.js +1 -1
  11. package/dist/adagioBidAdapter.js +1 -1
  12. package/dist/adbookpspBidAdapter.js +1 -1
  13. package/dist/adgenerationBidAdapter.js +1 -1
  14. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  15. package/dist/adkernelBidAdapter.js +1 -1
  16. package/dist/adlooxAdServerVideo.js +1 -1
  17. package/dist/adlooxAnalyticsAdapter.js +1 -1
  18. package/dist/adlooxRtdProvider.js +1 -1
  19. package/dist/adnuntiusBidAdapter.js +1 -1
  20. package/dist/adomikAnalyticsAdapter.js +1 -1
  21. package/dist/adpod.js +1 -1
  22. package/dist/adqueryBidAdapter.js +1 -1
  23. package/dist/adrelevantisBidAdapter.js +1 -1
  24. package/dist/adstirBidAdapter.js +1 -1
  25. package/dist/adtrgtmeBidAdapter.js +1 -1
  26. package/dist/adxcgAnalyticsAdapter.js +1 -1
  27. package/dist/adxcgBidAdapter.js +1 -1
  28. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  29. package/dist/adyoulikeBidAdapter.js +1 -1
  30. package/dist/agmaAnalyticsAdapter.js +1 -1
  31. package/dist/ajaBidAdapter.js +1 -1
  32. package/dist/alkimiBidAdapter.js +1 -1
  33. package/dist/amxBidAdapter.js +1 -1
  34. package/dist/amxIdSystem.js +1 -1
  35. package/dist/analyticsAdapter.js +1 -1
  36. package/dist/appierAnalyticsAdapter.js +1 -1
  37. package/dist/appnexusBidAdapter.js +1 -1
  38. package/dist/asoBidAdapter.js +1 -1
  39. package/dist/asteriobidAnalyticsAdapter.js +1 -1
  40. package/dist/atsAnalyticsAdapter.js +1 -1
  41. package/dist/automatadAnalyticsAdapter.js +1 -1
  42. package/dist/axonixBidAdapter.js +1 -1
  43. package/dist/bidViewability.js +1 -1
  44. package/dist/bidViewabilityIO.js +1 -1
  45. package/dist/bidglassBidAdapter.js +1 -1
  46. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  47. package/dist/big-richmediaBidAdapter.js +1 -1
  48. package/dist/brandmetricsRtdProvider.js +1 -1
  49. package/dist/bridBidAdapter.js +1 -1
  50. package/dist/bridgewellBidAdapter.js +1 -1
  51. package/dist/brightMountainMediaBidAdapter.js +1 -1
  52. package/dist/browsiRtdProvider.js +1 -1
  53. package/dist/byDataAnalyticsAdapter.js +1 -1
  54. package/dist/carodaBidAdapter.js +1 -1
  55. package/dist/chtnwBidAdapter.js +1 -1
  56. package/dist/chunk-core.js +1 -1
  57. package/dist/chunk-paapi.js +1 -1
  58. package/dist/cleanioRtdProvider.js +1 -1
  59. package/dist/concertAnalyticsAdapter.js +1 -1
  60. package/dist/concertBidAdapter.js +1 -1
  61. package/dist/confiantRtdProvider.js +1 -1
  62. package/dist/connectadBidAdapter.js +1 -1
  63. package/dist/consentManagementUsp.js +1 -1
  64. package/dist/consumableBidAdapter.js +1 -1
  65. package/dist/conversantAnalyticsAdapter.js +1 -1
  66. package/dist/conversantBidAdapter.js +1 -1
  67. package/dist/craftBidAdapter.js +1 -1
  68. package/dist/creative-renderer-native.js +1 -1
  69. package/dist/criteoBidAdapter.js +1 -1
  70. package/dist/currency.js +1 -1
  71. package/dist/cwireBidAdapter.js +1 -1
  72. package/dist/dailymotionBidAdapter.js +1 -0
  73. package/dist/datablocksAnalyticsAdapter.js +1 -1
  74. package/dist/datawrkzBidAdapter.js +1 -1
  75. package/dist/debugging-standalone.js +1 -1
  76. package/dist/debugging.js +1 -1
  77. package/dist/dependencies.json +15 -6
  78. package/dist/dfpAdServerVideo.js +1 -1
  79. package/dist/dsaControl.js +1 -1
  80. package/dist/dspxBidAdapter.js +1 -1
  81. package/dist/dxkultureBidAdapter.js +1 -1
  82. package/dist/engageyaBidAdapter.js +1 -1
  83. package/dist/eplanningAnalyticsAdapter.js +1 -1
  84. package/dist/eplanningBidAdapter.js +1 -1
  85. package/dist/euidIdSystem.js +1 -1
  86. package/dist/feedadBidAdapter.js +1 -1
  87. package/dist/finativeBidAdapter.js +1 -1
  88. package/dist/fintezaAnalyticsAdapter.js +1 -1
  89. package/dist/freewheel-sspBidAdapter.js +1 -1
  90. package/dist/gdprEnforcement.js +1 -1
  91. package/dist/genericAnalyticsAdapter.js +1 -1
  92. package/dist/geoedgeRtdProvider.js +1 -1
  93. package/dist/gmosspBidAdapter.js +1 -1
  94. package/dist/goldbachBidAdapter.js +1 -1
  95. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  96. package/dist/greenbidsRtdProvider.js +1 -1
  97. package/dist/gridBidAdapter.js +1 -1
  98. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  99. package/dist/gumgumBidAdapter.js +1 -1
  100. package/dist/h12mediaBidAdapter.js +1 -1
  101. package/dist/hadronAnalyticsAdapter.js +1 -1
  102. package/dist/holidBidAdapter.js +1 -1
  103. package/dist/hypelabBidAdapter.js +1 -1
  104. package/dist/id5AnalyticsAdapter.js +1 -1
  105. package/dist/id5IdSystem.js +1 -1
  106. package/dist/illuminBidAdapter.js +1 -1
  107. package/dist/imdsBidAdapter.js +1 -1
  108. package/dist/improvedigitalBidAdapter.js +1 -1
  109. package/dist/insticatorBidAdapter.js +1 -1
  110. package/dist/instreamTracking.js +1 -1
  111. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  112. package/dist/ixBidAdapter.js +1 -1
  113. package/dist/jixieBidAdapter.js +1 -1
  114. package/dist/justpremiumBidAdapter.js +1 -1
  115. package/dist/jwplayerBidAdapter.js +1 -0
  116. package/dist/kargoAnalyticsAdapter.js +1 -1
  117. package/dist/kargoBidAdapter.js +1 -1
  118. package/dist/kimberliteBidAdapter.js +1 -1
  119. package/dist/konduitAnalyticsAdapter.js +1 -1
  120. package/dist/kueezBidAdapter.js +1 -1
  121. package/dist/kueezRtbBidAdapter.js +1 -1
  122. package/dist/lassoBidAdapter.js +1 -1
  123. package/dist/lifestreetBidAdapter.js +1 -1
  124. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  125. package/dist/liveIntentIdSystem.js +1 -1
  126. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  127. package/dist/logicadBidAdapter.js +1 -1
  128. package/dist/loglyliftBidAdapter.js +1 -1
  129. package/dist/luceadBidAdapter.js +1 -1
  130. package/dist/magniteAnalyticsAdapter.js +1 -1
  131. package/dist/malltvAnalyticsAdapter.js +1 -1
  132. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  133. package/dist/marsmediaBidAdapter.js +1 -1
  134. package/dist/mediafilterRtdProvider.js +1 -1
  135. package/dist/mediafuseBidAdapter.js +1 -1
  136. package/dist/medianetAnalyticsAdapter.js +1 -1
  137. package/dist/medianetBidAdapter.js +1 -1
  138. package/dist/mediasquareBidAdapter.js +1 -1
  139. package/dist/mgidBidAdapter.js +1 -1
  140. package/dist/minutemediaBidAdapter.js +1 -1
  141. package/dist/minutemediaplusBidAdapter.js +1 -1
  142. package/dist/missenaBidAdapter.js +1 -1
  143. package/dist/multibid.js +1 -1
  144. package/dist/neuwoRtdProvider.js +1 -1
  145. package/dist/nextMillenniumBidAdapter.js +1 -1
  146. package/dist/nexx360BidAdapter.js +1 -1
  147. package/dist/nobidAnalyticsAdapter.js +1 -1
  148. package/dist/not-for-prod/prebid.js +245 -241
  149. package/dist/oguryBidAdapter.js +1 -1
  150. package/dist/onetagBidAdapter.js +1 -1
  151. package/dist/ooloAnalyticsAdapter.js +1 -1
  152. package/dist/openwebBidAdapter.js +1 -1
  153. package/dist/openxBidAdapter.js +1 -1
  154. package/dist/optableBidAdapter.js +1 -0
  155. package/dist/optidigitalBidAdapter.js +1 -1
  156. package/dist/optimonAnalyticsAdapter.js +1 -1
  157. package/dist/ortbConverter.js +1 -1
  158. package/dist/outbrainBidAdapter.js +1 -1
  159. package/dist/oxxionAnalyticsAdapter.js +1 -1
  160. package/dist/oxxionRtdProvider.js +1 -1
  161. package/dist/parrableIdSystem.js +1 -1
  162. package/dist/pbsExtensions.js +1 -1
  163. package/dist/permutiveRtdProvider.js +1 -1
  164. package/dist/pgamsspBidAdapter.js +1 -1
  165. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  166. package/dist/pirIdSystem.js +1 -0
  167. package/dist/pixfutureBidAdapter.js +1 -1
  168. package/dist/prebidServerBidAdapter.js +1 -1
  169. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  170. package/dist/priceFloors.js +1 -1
  171. package/dist/publinkIdSystem.js +1 -1
  172. package/dist/publirBidAdapter.js +1 -1
  173. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  174. package/dist/pubmaticBidAdapter.js +1 -1
  175. package/dist/pubperfAnalyticsAdapter.js +1 -1
  176. package/dist/pubstackAnalyticsAdapter.js +1 -1
  177. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  178. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  179. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  180. package/dist/pxyzBidAdapter.js +1 -1
  181. package/dist/qortexRtdProvider.js +1 -1
  182. package/dist/quantcastBidAdapter.js +1 -1
  183. package/dist/readpeakBidAdapter.js +1 -1
  184. package/dist/relaidoBidAdapter.js +1 -1
  185. package/dist/relevantAnalyticsAdapter.js +1 -1
  186. package/dist/retailspotBidAdapter.js +1 -1
  187. package/dist/rhythmoneBidAdapter.js +1 -1
  188. package/dist/riseBidAdapter.js +1 -1
  189. package/dist/rivrAnalyticsAdapter.js +1 -1
  190. package/dist/roxotAnalyticsAdapter.js +1 -1
  191. package/dist/rtdModule.js +1 -1
  192. package/dist/rubiconBidAdapter.js +1 -1
  193. package/dist/s2sTesting.js +1 -1
  194. package/dist/scaleableAnalyticsAdapter.js +1 -1
  195. package/dist/schain.js +1 -1
  196. package/dist/seedingAllianceBidAdapter.js +1 -1
  197. package/dist/seedtagBidAdapter.js +1 -1
  198. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  199. package/dist/sharethroughBidAdapter.js +1 -1
  200. package/dist/shinezBidAdapter.js +1 -1
  201. package/dist/shinezRtbBidAdapter.js +1 -1
  202. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  203. package/dist/sirdataRtdProvider.js +1 -1
  204. package/dist/sizeMapping.js +1 -1
  205. package/dist/smaatoBidAdapter.js +1 -1
  206. package/dist/smartadserverBidAdapter.js +1 -1
  207. package/dist/smartxBidAdapter.js +1 -1
  208. package/dist/smilewantedBidAdapter.js +1 -1
  209. package/dist/sonobiAnalyticsAdapter.js +1 -1
  210. package/dist/sonobiBidAdapter.js +1 -1
  211. package/dist/sovrnAnalyticsAdapter.js +1 -1
  212. package/dist/sovrnBidAdapter.js +1 -1
  213. package/dist/sspBCBidAdapter.js +1 -1
  214. package/dist/staqAnalyticsAdapter.js +1 -1
  215. package/dist/stnBidAdapter.js +1 -1
  216. package/dist/stroeerCoreBidAdapter.js +1 -1
  217. package/dist/stvBidAdapter.js +1 -1
  218. package/dist/sublimeBidAdapter.js +1 -1
  219. package/dist/taboolaBidAdapter.js +1 -1
  220. package/dist/tagorasBidAdapter.js +1 -1
  221. package/dist/targetVideoBidAdapter.js +1 -1
  222. package/dist/teadsBidAdapter.js +1 -1
  223. package/dist/terceptAnalyticsAdapter.js +1 -1
  224. package/dist/themoneytizerBidAdapter.js +1 -1
  225. package/dist/topicsFpdModule.js +1 -1
  226. package/dist/trionBidAdapter.js +1 -1
  227. package/dist/tripleliftBidAdapter.js +1 -1
  228. package/dist/ttdBidAdapter.js +1 -1
  229. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  230. package/dist/uid2IdSystem.js +1 -1
  231. package/dist/underdogmediaBidAdapter.js +1 -1
  232. package/dist/undertoneBidAdapter.js +1 -1
  233. package/dist/unrulyBidAdapter.js +1 -1
  234. package/dist/userId.js +1 -1
  235. package/dist/viantOrtbBidAdapter.js +1 -1
  236. package/dist/vidazooBidAdapter.js +1 -1
  237. package/dist/videoModule.js +1 -1
  238. package/dist/videobyteBidAdapter.js +1 -1
  239. package/dist/visxBidAdapter.js +1 -1
  240. package/dist/vuukleBidAdapter.js +1 -1
  241. package/dist/weboramaRtdProvider.js +1 -1
  242. package/dist/widespaceBidAdapter.js +1 -1
  243. package/dist/winrBidAdapter.js +1 -1
  244. package/dist/yahoosspBidAdapter.js +1 -1
  245. package/dist/yandexAnalyticsAdapter.js +1 -1
  246. package/dist/yieldmoBidAdapter.js +1 -1
  247. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  248. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  249. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  250. package/dist/zeta_global_sspBidAdapter.js +1 -1
  251. package/gulpfile.js +9 -1
  252. package/integrationExamples/gpt/adnuntius_example.html +7 -1
  253. package/integrationExamples/gpt/azerionedgeRtdProvider_example.html +3 -3
  254. package/integrationExamples/gpt/top-level-paapi/decisionLogic.js +57 -0
  255. package/integrationExamples/gpt/top-level-paapi/tl_paapi_example.html +188 -0
  256. package/integrationExamples/gpt/x-domain/creative.html +1 -1
  257. package/integrationExamples/noadserver/jwplayerBidAdapter_sample.html +75 -0
  258. package/integrationExamples/realTimeData/jwplayerRtdProvider_example.html +7 -0
  259. package/integrationExamples/videoModule/jwplayer/bidMarkedAsUsed.html +7 -0
  260. package/integrationExamples/videoModule/jwplayer/bidRequestScheduling.html +9 -4
  261. package/integrationExamples/videoModule/jwplayer/bidsBackHandlerOverride.html +7 -0
  262. package/integrationExamples/videoModule/jwplayer/eventListeners.html +7 -0
  263. package/integrationExamples/videoModule/jwplayer/eventsUI.html +7 -0
  264. package/integrationExamples/videoModule/jwplayer/gamAdServerMediation.html +7 -0
  265. package/integrationExamples/videoModule/jwplayer/mediaMetadata.html +7 -0
  266. package/integrationExamples/videoModule/jwplayer/playlist.html +7 -0
  267. package/integrationExamples/videoModule/videojs/bidMarkedAsUsed.html +7 -0
  268. package/integrationExamples/videoModule/videojs/bidRequestScheduling.html +7 -0
  269. package/integrationExamples/videoModule/videojs/bidsBackHandlerOverride.html +7 -0
  270. package/integrationExamples/videoModule/videojs/eventListeners.html +7 -0
  271. package/integrationExamples/videoModule/videojs/eventsUI.html +7 -0
  272. package/integrationExamples/videoModule/videojs/gamAdServerMediation.html +7 -0
  273. package/integrationExamples/videoModule/videojs/mediaMetadata.html +7 -0
  274. package/integrationExamples/videoModule/videojs/playlist.html +7 -0
  275. package/libraries/analyticsAdapter/AnalyticsAdapter.js +4 -4
  276. package/libraries/creative-renderer-native/renderer.js +1 -1
  277. package/libraries/ortbConverter/processors/banner.js +2 -2
  278. package/modules/33acrossAnalyticsAdapter.js +2 -4
  279. package/modules/33acrossIdSystem.js +1 -1
  280. package/modules/adWMGAnalyticsAdapter.js +9 -11
  281. package/modules/adagioAnalyticsAdapter.js +8 -8
  282. package/modules/adgenerationBidAdapter.js +6 -10
  283. package/modules/adkernelAdnAnalyticsAdapter.js +8 -8
  284. package/modules/adkernelBidAdapter.js +9 -3
  285. package/modules/adlooxAdServerVideo.js +2 -2
  286. package/modules/adlooxAnalyticsAdapter.js +4 -4
  287. package/modules/adnuntiusBidAdapter.js +54 -31
  288. package/modules/adomikAnalyticsAdapter.js +7 -7
  289. package/modules/adpod.js +3 -3
  290. package/modules/adxcgAnalyticsAdapter.js +10 -10
  291. package/modules/adxpremiumAnalyticsAdapter.js +8 -10
  292. package/modules/agmaAnalyticsAdapter.js +2 -6
  293. package/modules/alkimiBidAdapter.js +48 -8
  294. package/modules/appierAnalyticsAdapter.js +5 -7
  295. package/modules/asteriobidAnalyticsAdapter.js +14 -14
  296. package/modules/atsAnalyticsAdapter.js +4 -4
  297. package/modules/automatadAnalyticsAdapter.js +20 -20
  298. package/modules/azerionedgeRtdProvider.md +4 -2
  299. package/modules/bidViewability.js +3 -3
  300. package/modules/bidViewabilityIO.js +3 -3
  301. package/modules/bidwatchAnalyticsAdapter.js +7 -9
  302. package/modules/brandmetricsRtdProvider.js +6 -6
  303. package/modules/browsiRtdProvider.js +3 -3
  304. package/modules/byDataAnalyticsAdapter.js +3 -3
  305. package/modules/cleanioRtdProvider.js +3 -3
  306. package/modules/concertAnalyticsAdapter.js +5 -7
  307. package/modules/confiantRtdProvider.js +2 -2
  308. package/modules/conversantAnalyticsAdapter.js +2 -4
  309. package/modules/criteoBidAdapter.js +51 -8
  310. package/modules/currency.js +7 -7
  311. package/modules/dailymotionBidAdapter.js +139 -0
  312. package/modules/dailymotionBidAdapter.md +140 -0
  313. package/modules/datawrkzBidAdapter.js +4 -4
  314. package/modules/debugging/pbsInterceptor.js +2 -2
  315. package/modules/dfpAdServerVideo.js +2 -2
  316. package/modules/dsaControl.js +5 -5
  317. package/modules/engageyaBidAdapter.js +1 -1
  318. package/modules/eplanningAnalyticsAdapter.js +8 -8
  319. package/modules/fintezaAnalyticsAdapter.js +5 -5
  320. package/modules/gdprEnforcement.js +3 -3
  321. package/modules/geoedgeRtdProvider.js +2 -2
  322. package/modules/greenbidsAnalyticsAdapter.js +13 -10
  323. package/modules/greenbidsRtdProvider.js +2 -2
  324. package/modules/growthCodeAnalyticsAdapter.js +14 -14
  325. package/modules/gumgumBidAdapter.js +1 -1
  326. package/modules/hadronAnalyticsAdapter.js +14 -14
  327. package/modules/holidBidAdapter.js +2 -2
  328. package/modules/id5AnalyticsAdapter.js +7 -9
  329. package/modules/improvedigitalBidAdapter.js +2 -1
  330. package/modules/insticatorBidAdapter.js +137 -27
  331. package/modules/instreamTracking.js +4 -4
  332. package/modules/invisiblyAnalyticsAdapter.js +15 -17
  333. package/modules/ixBidAdapter.js +3 -3
  334. package/modules/jwplayerBidAdapter.js +412 -0
  335. package/modules/jwplayerBidAdapter.md +72 -0
  336. package/modules/kargoAnalyticsAdapter.js +3 -3
  337. package/modules/kargoBidAdapter.js +5 -11
  338. package/modules/konduitAnalyticsAdapter.js +13 -13
  339. package/modules/liveIntentAnalyticsAdapter.js +2 -2
  340. package/modules/livewrappedAnalyticsAdapter.js +10 -10
  341. package/modules/magniteAnalyticsAdapter.js +25 -23
  342. package/modules/malltvAnalyticsAdapter.js +4 -6
  343. package/modules/mediafilterRtdProvider.js +2 -2
  344. package/modules/medianetAnalyticsAdapter.js +12 -12
  345. package/modules/medianetBidAdapter.js +1 -1
  346. package/modules/multibid/index.js +2 -2
  347. package/modules/neuwoRtdProvider.js +2 -2
  348. package/modules/nextMillenniumBidAdapter.js +4 -4
  349. package/modules/nobidAnalyticsAdapter.js +9 -11
  350. package/modules/ooloAnalyticsAdapter.js +2 -2
  351. package/modules/optableBidAdapter.js +42 -0
  352. package/modules/optableBidAdapter.md +41 -0
  353. package/modules/optidigitalBidAdapter.js +20 -4
  354. package/modules/oxxionAnalyticsAdapter.js +7 -9
  355. package/modules/paapi.js +20 -6
  356. package/modules/permutiveRtdProvider.js +21 -2
  357. package/modules/pgamsspBidAdapter.js +26 -3
  358. package/modules/pirIdSystem.js +62 -0
  359. package/modules/pirIdSystem.md +27 -0
  360. package/modules/prebidServerBidAdapter/index.js +8 -8
  361. package/modules/prebidServerBidAdapter/ortbConverter.js +3 -3
  362. package/modules/prebidmanagerAnalyticsAdapter.js +14 -14
  363. package/modules/priceFloors.js +10 -5
  364. package/modules/pubmaticAnalyticsAdapter.js +32 -22
  365. package/modules/pubmaticBidAdapter.js +22 -18
  366. package/modules/pubwiseAnalyticsAdapter.js +11 -11
  367. package/modules/pubxaiAnalyticsAdapter.js +6 -6
  368. package/modules/qortexRtdProvider.js +2 -2
  369. package/modules/relaidoBidAdapter.js +70 -9
  370. package/modules/roxotAnalyticsAdapter.js +8 -10
  371. package/modules/rtdModule/index.js +7 -7
  372. package/modules/scaleableAnalyticsAdapter.js +5 -5
  373. package/modules/seedtagBidAdapter.js +12 -3
  374. package/modules/sigmoidAnalyticsAdapter.js +7 -7
  375. package/modules/sirdataRtdProvider.js +33 -43
  376. package/modules/smaatoBidAdapter.js +1 -2
  377. package/modules/sonobiAnalyticsAdapter.js +10 -12
  378. package/modules/sovrnAnalyticsAdapter.js +7 -9
  379. package/modules/sovrnBidAdapter.js +1 -1
  380. package/modules/staqAnalyticsAdapter.js +9 -9
  381. package/modules/stroeerCoreBidAdapter.js +7 -5
  382. package/modules/terceptAnalyticsAdapter.js +7 -7
  383. package/modules/topicsFpdModule.js +3 -0
  384. package/modules/topicsFpdModule.md +4 -0
  385. package/modules/ucfunnelAnalyticsAdapter.js +5 -7
  386. package/modules/userId/index.js +3 -3
  387. package/modules/viantOrtbBidAdapter.js +2 -0
  388. package/modules/videoModule/index.js +4 -4
  389. package/modules/yandexAnalyticsAdapter.js +8 -2
  390. package/modules/yieldoneAnalyticsAdapter.js +7 -7
  391. package/modules/yuktamediaAnalyticsAdapter.js +9 -9
  392. package/modules/zeta_global_sspAnalyticsAdapter.js +5 -5
  393. package/modules/zeta_global_sspBidAdapter.js +8 -1
  394. package/package.json +1 -1
  395. package/src/adRendering.js +15 -15
  396. package/src/adUnits.js +9 -21
  397. package/src/adapterManager.js +23 -13
  398. package/src/adapters/bidderFactory.js +8 -8
  399. package/src/auction.js +26 -28
  400. package/src/auctionManager.js +4 -4
  401. package/src/bidderSettings.js +2 -2
  402. package/src/config.js +2 -2
  403. package/src/constants.js +190 -0
  404. package/src/events.js +3 -3
  405. package/src/native.js +6 -8
  406. package/src/prebid.js +6 -10
  407. package/src/secureCreatives.js +5 -5
  408. package/src/targeting.js +13 -13
  409. package/src/utils.js +19 -6
  410. package/test/fixtures/fixtures.js +44 -44
  411. package/test/helpers/analytics.js +6 -6
  412. package/test/spec/AnalyticsAdapter_spec.js +3 -3
  413. package/test/spec/auctionmanager_spec.js +82 -82
  414. package/test/spec/modules/33acrossAnalyticsAdapter_spec.js +1 -2
  415. package/test/spec/modules/33acrossIdSystem_spec.js +3 -3
  416. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +14 -14
  417. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +26 -26
  418. package/test/spec/modules/adgenerationBidAdapter_spec.js +6 -6
  419. package/test/spec/modules/adkernelAdnAnalytics_spec.js +6 -6
  420. package/test/spec/modules/adkernelBidAdapter_spec.js +9 -4
  421. package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
  422. package/test/spec/modules/adnuntiusBidAdapter_spec.js +26 -6
  423. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +7 -7
  424. package/test/spec/modules/adxcgAnalyticsAdapter_spec.js +7 -7
  425. package/test/spec/modules/adxpremiumAnalyticsAdapter_spec.js +7 -7
  426. package/test/spec/modules/agmaAnalyticsAdapter_spec.js +14 -14
  427. package/test/spec/modules/alkimiBidAdapter_spec.js +11 -5
  428. package/test/spec/modules/appierAnalyticsAdapter_spec.js +1 -1
  429. package/test/spec/modules/asteriobidAnalyticsAdapter_spec.js +2 -2
  430. package/test/spec/modules/atsAnalyticsAdapter_spec.js +8 -8
  431. package/test/spec/modules/automatadAnalyticsAdapter_spec.js +2 -2
  432. package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
  433. package/test/spec/modules/bidViewability_spec.js +4 -4
  434. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +7 -6
  435. package/test/spec/modules/byDataAnalyticsAdapter_spec.js +5 -4
  436. package/test/spec/modules/cleanioRtdProvider_spec.js +6 -6
  437. package/test/spec/modules/concertAnalyticsAdapter_spec.js +7 -6
  438. package/test/spec/modules/confiantRtdProvider_spec.js +2 -2
  439. package/test/spec/modules/conversantAnalyticsAdapter_spec.js +61 -61
  440. package/test/spec/modules/criteoBidAdapter_spec.js +111 -5
  441. package/test/spec/modules/currency_spec.js +6 -6
  442. package/test/spec/modules/dailymotionBidAdapter_spec.js +369 -0
  443. package/test/spec/modules/dsaControl_spec.js +4 -4
  444. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +20 -13
  445. package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +5 -5
  446. package/test/spec/modules/genericAnalyticsAdapter_spec.js +2 -2
  447. package/test/spec/modules/geoedgeRtdProvider_spec.js +37 -37
  448. package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +15 -2
  449. package/test/spec/modules/greenbidsRtdProvider_spec.js +2 -2
  450. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +2 -2
  451. package/test/spec/modules/gumgumBidAdapter_spec.js +1 -1
  452. package/test/spec/modules/hadronAnalyticsAdapter_spec.js +3 -3
  453. package/test/spec/modules/id5AnalyticsAdapter_spec.js +5 -5
  454. package/test/spec/modules/id5IdSystem_spec.js +2 -2
  455. package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -3
  456. package/test/spec/modules/insticatorBidAdapter_spec.js +275 -22
  457. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +40 -40
  458. package/test/spec/modules/jwplayerBidAdapter_spec.js +412 -0
  459. package/test/spec/modules/kargoAnalyticsAdapter_spec.js +3 -3
  460. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +13 -13
  461. package/test/spec/modules/lemmaDigitalBidAdapter_spec.js +1 -1
  462. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -3
  463. package/test/spec/modules/liveIntentIdSystem_spec.js +13 -15
  464. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +15 -20
  465. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +31 -15
  466. package/test/spec/modules/malltvAnalyticsAdapter_spec.js +3 -3
  467. package/test/spec/modules/mediafilterRtdProvider_spec.js +2 -2
  468. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +3 -3
  469. package/test/spec/modules/nobidAnalyticsAdapter_spec.js +23 -23
  470. package/test/spec/modules/ooloAnalyticsAdapter_spec.js +33 -33
  471. package/test/spec/modules/optableBidAdapter_spec.js +89 -0
  472. package/test/spec/modules/optidigitalBidAdapter_spec.js +34 -4
  473. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +0 -1
  474. package/test/spec/modules/oxxionAnalyticsAdapter_spec.js +7 -7
  475. package/test/spec/modules/paapi_spec.js +40 -14
  476. package/test/spec/modules/permutiveRtdProvider_spec.js +29 -1
  477. package/test/spec/modules/pgamsspBidAdapter_spec.js +50 -4
  478. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +9 -9
  479. package/test/spec/modules/pirIdSystem_spec.js +77 -0
  480. package/test/spec/modules/prebidServerBidAdapter_spec.js +7 -7
  481. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +2 -2
  482. package/test/spec/modules/priceFloors_spec.js +6 -5
  483. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +12 -14
  484. package/test/spec/modules/pubmaticBidAdapter_spec.js +25 -2
  485. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +0 -1
  486. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +14 -14
  487. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +7 -7
  488. package/test/spec/modules/qortexRtdProvider_spec.js +2 -2
  489. package/test/spec/modules/realTimeDataModule_spec.js +9 -9
  490. package/test/spec/modules/relaidoBidAdapter_spec.js +62 -0
  491. package/test/spec/modules/relevantAnalyticsAdapter_spec.js +3 -3
  492. package/test/spec/modules/relevantdigitalBidAdapter_spec.js +2 -2
  493. package/test/spec/modules/rivrAnalyticsAdapter_spec.js +4 -4
  494. package/test/spec/modules/roxotAnalyticsAdapter_spec.js +25 -25
  495. package/test/spec/modules/scaleableAnalyticsAdapter_spec.js +5 -5
  496. package/test/spec/modules/seedtagBidAdapter_spec.js +56 -3
  497. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +0 -1
  498. package/test/spec/modules/sonobiAnalyticsAdapter_spec.js +8 -7
  499. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +2 -2
  500. package/test/spec/modules/sovrnBidAdapter_spec.js +5 -5
  501. package/test/spec/modules/staqAnalyticsAdapter_spec.js +7 -7
  502. package/test/spec/modules/stroeerCoreBidAdapter_spec.js +21 -0
  503. package/test/spec/modules/terceptAnalyticsAdapter_spec.js +7 -7
  504. package/test/spec/modules/trionBidAdapter_spec.js +1 -1
  505. package/test/spec/modules/ucfunnelAnalyticsAdapter_spec.js +1 -1
  506. package/test/spec/modules/userId_spec.js +4 -4
  507. package/test/spec/modules/videoModule/pbVideo_spec.js +3 -3
  508. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +22 -21
  509. package/test/spec/modules/yuktamediaAnalyticsAdapter_spec.js +33 -32
  510. package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +8 -8
  511. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +1 -1
  512. package/test/spec/native_spec.js +19 -19
  513. package/test/spec/unit/adRendering_spec.js +14 -14
  514. package/test/spec/unit/adUnits_spec.js +1 -1
  515. package/test/spec/unit/core/adapterManager_spec.js +99 -59
  516. package/test/spec/unit/core/bidderFactory_spec.js +6 -6
  517. package/test/spec/unit/core/targeting_spec.js +47 -47
  518. package/test/spec/unit/pbjs_api_spec.js +81 -81
  519. package/test/spec/unit/secureCreatives_spec.js +27 -27
  520. package/test/spec/utils_spec.js +19 -3
  521. package/src/constants.json +0 -196
@@ -19,7 +19,7 @@ import {
19
19
  } from '../src/utils.js';
20
20
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
21
21
  import adapterManager from '../src/adapterManager.js';
22
- import CONSTANTS from '../src/constants.json';
22
+ import { EVENTS, REJECTION_REASON } from '../src/constants.js';
23
23
  import {ajax} from '../src/ajax.js';
24
24
  import {config} from '../src/config.js';
25
25
  import {getGlobal} from '../src/prebidGlobal.js';
@@ -34,6 +34,7 @@ const LAST_SEEN_EXPIRE_TIME = 1800000; // 30 mins
34
34
  const END_EXPIRE_TIME = 21600000; // 6 hours
35
35
  const MODULE_NAME = 'Magnite Analytics';
36
36
  const BID_REJECTED_IPF = 'rejected-ipf';
37
+ const DEFAULT_INTEGRATION = 'pbjs';
37
38
 
38
39
  // List of known rubicon aliases
39
40
  // This gets updated on auction init to account for any custom aliases present
@@ -48,21 +49,25 @@ const pbsErrorMap = {
48
49
  }
49
50
  let cookieless;
50
51
 
52
+ let browser;
53
+ let pageReferer;
54
+ let auctionIndex = 0; // count of auctions on page
55
+ let accountId;
56
+ let endpoint;
57
+
51
58
  let prebidGlobal = getGlobal();
52
59
  const {
53
- EVENTS: {
54
- AUCTION_INIT,
55
- AUCTION_END,
56
- BID_REQUESTED,
57
- BID_RESPONSE,
58
- BIDDER_DONE,
59
- BID_TIMEOUT,
60
- BID_WON,
61
- BILLABLE_EVENT,
62
- SEAT_NON_BID,
63
- BID_REJECTED
64
- }
65
- } = CONSTANTS;
60
+ AUCTION_INIT,
61
+ AUCTION_END,
62
+ BID_REQUESTED,
63
+ BID_RESPONSE,
64
+ BIDDER_DONE,
65
+ BID_TIMEOUT,
66
+ BID_WON,
67
+ BILLABLE_EVENT,
68
+ SEAT_NON_BID,
69
+ BID_REJECTED
70
+ } = EVENTS;
66
71
 
67
72
  // The saved state of rubicon specific setConfig controls
68
73
  export let rubiConf;
@@ -107,8 +112,6 @@ config.getConfig('s2sConfig', ({ s2sConfig }) => {
107
112
  serverConfig = s2sConfig;
108
113
  });
109
114
 
110
- const DEFAULT_INTEGRATION = 'pbjs';
111
-
112
115
  const adUnitIsOnlyInstream = adUnit => {
113
116
  return adUnit.mediaTypes && Object.keys(adUnit.mediaTypes).length === 1 && deepAccess(adUnit, 'mediaTypes.video.context') === 'instream';
114
117
  }
@@ -311,8 +314,6 @@ const addFloorData = floorData => {
311
314
  }
312
315
  }
313
316
 
314
- let pageReferer;
315
-
316
317
  const getTopLevelDetails = () => {
317
318
  let payload = {
318
319
  channel: 'web',
@@ -647,9 +648,6 @@ export const detectBrowserFromUa = userAgent => {
647
648
  return 'OTHER';
648
649
  }
649
650
 
650
- let accountId;
651
- let endpoint;
652
-
653
651
  let magniteAdapter = adapter({ analyticsType: 'endpoint' });
654
652
 
655
653
  magniteAdapter.originEnableAnalytics = magniteAdapter.enableAnalytics;
@@ -705,6 +703,7 @@ magniteAdapter.disableAnalytics = function () {
705
703
  magniteAdapter._oldEnable = enableMgniAnalytics;
706
704
  endpoint = undefined;
707
705
  accountId = undefined;
706
+ auctionIndex = 0;
708
707
  resetConfs();
709
708
  getHook('callPrebidCache').getHooks({ hook: callPrebidCacheHook }).remove();
710
709
  magniteAdapter.originDisableAnalytics();
@@ -793,10 +792,10 @@ const getLatencies = (args, auctionStart) => {
793
792
  }
794
793
  }
795
794
 
796
- let browser;
797
795
  magniteAdapter.track = ({ eventType, args }) => {
798
796
  switch (eventType) {
799
797
  case AUCTION_INIT:
798
+ auctionIndex += 1;
800
799
  // Update session
801
800
  cache.sessionData = storage.localStorageIsEnabled() && updateRpaCookie();
802
801
  // set the rubicon aliases
@@ -812,6 +811,7 @@ magniteAdapter.track = ({ eventType, args }) => {
812
811
  'timeout as clientTimeoutMillis',
813
812
  ]);
814
813
  auctionData.accountId = accountId;
814
+ auctionData.auctionIndex = auctionIndex;
815
815
 
816
816
  // get browser
817
817
  if (!browser) {
@@ -907,6 +907,8 @@ magniteAdapter.track = ({ eventType, args }) => {
907
907
  'source', () => bid.src === 's2s' ? 'server' : 'client',
908
908
  'status', () => 'no-bid'
909
909
  ]);
910
+ // add a pbs flag if one of the bids has a server source
911
+ if (adUnit.bids[bid.bidId].source === 'server') adUnit.pbsRequest = 1;
910
912
  // set acct site zone id on adunit
911
913
  if ((!adUnit.siteId || !adUnit.zoneId) && rubiconAliases.indexOf(bid.bidder) !== -1) {
912
914
  if (deepAccess(bid, 'params.accountId') == accountId) {
@@ -921,7 +923,7 @@ magniteAdapter.track = ({ eventType, args }) => {
921
923
  handleBidResponse(args, 'success');
922
924
  break;
923
925
  case BID_REJECTED:
924
- const bidStatus = args.rejectionReason === CONSTANTS.REJECTION_REASON.FLOOR_NOT_MET ? BID_REJECTED_IPF : 'rejected';
926
+ const bidStatus = args.rejectionReason === REJECTION_REASON.FLOOR_NOT_MET ? BID_REJECTED_IPF : 'rejected';
925
927
  handleBidResponse(args, bidStatus);
926
928
  break;
927
929
  case SEAT_NON_BID:
@@ -1,6 +1,6 @@
1
1
  import {ajax} from '../src/ajax.js'
2
2
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js'
3
- import CONSTANTS from '../src/constants.json'
3
+ import { EVENTS } from '../src/constants.js'
4
4
  import adapterManager from '../src/adapterManager.js'
5
5
  import {getGlobal} from '../src/prebidGlobal.js'
6
6
  import {logInfo, logError, deepClone} from '../src/utils.js'
@@ -10,11 +10,9 @@ export const ANALYTICS_VERSION = '1.0.0'
10
10
  export const DEFAULT_SERVER = 'https://central.mall.tv/analytics'
11
11
 
12
12
  const {
13
- EVENTS: {
14
- AUCTION_END,
15
- BID_TIMEOUT
16
- }
17
- } = CONSTANTS
13
+ AUCTION_END,
14
+ BID_TIMEOUT
15
+ } = EVENTS
18
16
 
19
17
  export const BIDDER_STATUS = {
20
18
  BID: 1,
@@ -14,7 +14,7 @@ import { submodule } from '../src/hook.js';
14
14
  import { logError, generateUUID } from '../src/utils.js';
15
15
  import { loadExternalScript } from '../src/adloader.js';
16
16
  import * as events from '../src/events.js';
17
- import CONSTANTS from '../src/constants.json';
17
+ import { EVENTS } from '../src/constants.js';
18
18
 
19
19
  /** The event type for Media Filter. */
20
20
  export const MEDIAFILTER_EVENT_TYPE = 'com.mediatrust.pbjs.';
@@ -65,7 +65,7 @@ export const MediaFilter = {
65
65
  generateEventHandler: function(configurationHash) {
66
66
  return (windowEvent) => {
67
67
  if (windowEvent.data.type === MEDIAFILTER_EVENT_TYPE.concat('.', configurationHash)) {
68
- events.emit(CONSTANTS.EVENTS.BILLABLE_EVENT, {
68
+ events.emit(EVENTS.BILLABLE_EVENT, {
69
69
  'billingId': generateUUID(),
70
70
  'configurationHash': configurationHash,
71
71
  'type': 'impression',
@@ -12,7 +12,7 @@ import {
12
12
  } from '../src/utils.js';
13
13
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
14
14
  import adapterManager from '../src/adapterManager.js';
15
- import CONSTANTS from '../src/constants.json';
15
+ import { BID_STATUS, EVENTS, TARGETING_KEYS } from '../src/constants.js';
16
16
  import {ajax} from '../src/ajax.js';
17
17
  import {getRefererInfo} from '../src/refererDetection.js';
18
18
  import {AUCTION_COMPLETED, AUCTION_IN_PROGRESS, getPriceGranularity} from '../src/auction.js';
@@ -590,7 +590,7 @@ function bidResponseHandler(bid) {
590
590
  dfpbd = bid[priceGranularityKey] || cpm;
591
591
  }
592
592
  bidObj.dfpbd = dfpbd;
593
- if (bid.status === CONSTANTS.BID_STATUS.BID_REJECTED) {
593
+ if (bid.status === BID_STATUS.BID_REJECTED) {
594
594
  bidObj.status = BID_FLOOR_REJECTED;
595
595
  } else {
596
596
  bidObj.status = BID_SUCCESS;
@@ -660,12 +660,12 @@ function setTargetingHandler(params) {
660
660
  adunitObj.targeting = params[adunit];
661
661
  auctionObj.setTargetingTime = Date.now();
662
662
  let targetingObj = Object.keys(params[adunit]).reduce((result, key) => {
663
- if (key.indexOf(CONSTANTS.TARGETING_KEYS.AD_ID) !== -1) {
663
+ if (key.indexOf(TARGETING_KEYS.AD_ID) !== -1) {
664
664
  result[key] = params[adunit][key]
665
665
  }
666
666
  return result;
667
667
  }, {});
668
- const winnerAdId = params[adunit][CONSTANTS.TARGETING_KEYS.AD_ID];
668
+ const winnerAdId = params[adunit][TARGETING_KEYS.AD_ID];
669
669
  let winningBid;
670
670
  let bidAdIds = Object.keys(targetingObj).map(k => targetingObj[k]);
671
671
  auctionObj.bidWrapper.bidObjs.filter((bid) => bidAdIds.indexOf(bid.adId) !== -1).map(function(bid) {
@@ -845,35 +845,35 @@ let medianetAnalytics = Object.assign(adapter({URL, analyticsType}), {
845
845
  logInfo(eventType, args);
846
846
  }
847
847
  switch (eventType) {
848
- case CONSTANTS.EVENTS.AUCTION_INIT: {
848
+ case EVENTS.AUCTION_INIT: {
849
849
  auctionInitHandler(args);
850
850
  break;
851
851
  }
852
- case CONSTANTS.EVENTS.BID_REQUESTED: {
852
+ case EVENTS.BID_REQUESTED: {
853
853
  bidRequestedHandler(args);
854
854
  break;
855
855
  }
856
- case CONSTANTS.EVENTS.BID_RESPONSE: {
856
+ case EVENTS.BID_RESPONSE: {
857
857
  bidResponseHandler(args);
858
858
  break;
859
859
  }
860
- case CONSTANTS.EVENTS.BID_TIMEOUT: {
860
+ case EVENTS.BID_TIMEOUT: {
861
861
  bidTimeoutHandler(args);
862
862
  break;
863
863
  }
864
- case CONSTANTS.EVENTS.NO_BID: {
864
+ case EVENTS.NO_BID: {
865
865
  noBidResponseHandler(args);
866
866
  break;
867
867
  }
868
- case CONSTANTS.EVENTS.AUCTION_END: {
868
+ case EVENTS.AUCTION_END: {
869
869
  auctionEndHandler(args);
870
870
  break;
871
871
  }
872
- case CONSTANTS.EVENTS.SET_TARGETING : {
872
+ case EVENTS.SET_TARGETING: {
873
873
  setTargetingHandler(args);
874
874
  break;
875
875
  }
876
- case CONSTANTS.EVENTS.BID_WON: {
876
+ case EVENTS.BID_WON: {
877
877
  bidWonHandler(args);
878
878
  break;
879
879
  }
@@ -57,7 +57,7 @@ mnData.urlData = {
57
57
  };
58
58
 
59
59
  const aliases = [
60
- { code: TRUSTEDSTACK_CODE },
60
+ { code: TRUSTEDSTACK_CODE, gvlid: 1288 },
61
61
  ];
62
62
 
63
63
  getGlobal().medianetGlobals = getGlobal().medianetGlobals || {};
@@ -9,7 +9,7 @@ import {
9
9
  logWarn, deepAccess, getUniqueIdentifierStr, deepSetValue, groupBy
10
10
  } from '../../src/utils.js';
11
11
  import * as events from '../../src/events.js';
12
- import CONSTANTS from '../../src/constants.json';
12
+ import { EVENTS } from '../../src/constants.js';
13
13
  import {addBidderRequests} from '../../src/auction.js';
14
14
  import {getHighestCpmBidsFromBidPool, sortByDealAndPriceBucketOrCpm} from '../../src/targeting.js';
15
15
  import {PBS, registerOrtbProcessor, REQUEST} from '../../src/pbjsORTB.js';
@@ -230,7 +230,7 @@ export const resetMultibidUnits = () => multibidUnits = {};
230
230
  */
231
231
  function init() {
232
232
  // TODO: does this reset logic make sense - what about simultaneous auctions?
233
- events.on(CONSTANTS.EVENTS.AUCTION_INIT, resetMultibidUnits);
233
+ events.on(EVENTS.AUCTION_INIT, resetMultibidUnits);
234
234
  setupBeforeHookFnOnce(addBidderRequests, adjustBidderRequestsHook);
235
235
  getHook('addBidResponse').before(addBidResponseHook, 3);
236
236
  setupBeforeHookFnOnce(getHighestCpmBidsFromBidPool, targetBidPoolHook);
@@ -3,7 +3,7 @@ import { getRefererInfo } from '../src/refererDetection.js';
3
3
  import { ajax } from '../src/ajax.js';
4
4
  import { submodule } from '../src/hook.js';
5
5
  import * as events from '../src/events.js';
6
- import CONSTANTS from '../src/constants.json';
6
+ import { EVENTS } from '../src/constants.js';
7
7
 
8
8
  export const DATA_PROVIDER = 'neuwo.ai';
9
9
  const SEGTAX_IAB = 6 // IAB - Content Taxonomy version 2
@@ -42,7 +42,7 @@ export function getBidRequestData(reqBidsConfigObj, callback, config, userConsen
42
42
  try {
43
43
  const jsonContent = JSON.parse(responseContent);
44
44
  if (jsonContent.marketing_categories) {
45
- events.emit(CONSTANTS.EVENTS.BILLABLE_EVENT, { type: 'request', billingId, vendor: neuwoRtdModule.name })
45
+ events.emit(EVENTS.BILLABLE_EVENT, { type: 'request', billingId, vendor: neuwoRtdModule.name })
46
46
  }
47
47
  injectTopics(jsonContent, reqBidsConfigObj, billingId)
48
48
  } catch (ex) {
@@ -14,7 +14,7 @@ import {
14
14
  } from '../src/utils.js';
15
15
 
16
16
  import {getGlobal} from '../src/prebidGlobal.js';
17
- import CONSTANTS from '../src/constants.json';
17
+ import { EVENTS } from '../src/constants.js';
18
18
  import {BANNER, VIDEO} from '../src/mediaTypes.js';
19
19
  import {config} from '../src/config.js';
20
20
 
@@ -139,7 +139,7 @@ export const spec = {
139
139
  auctionId,
140
140
  });
141
141
 
142
- this.getUrlPixelMetric(CONSTANTS.EVENTS.BID_REQUESTED, bid);
142
+ this.getUrlPixelMetric(EVENTS.BID_REQUESTED, bid);
143
143
  });
144
144
 
145
145
  return requests;
@@ -183,7 +183,7 @@ export const spec = {
183
183
 
184
184
  bidResponses.push(bidResponse);
185
185
 
186
- this.getUrlPixelMetric(CONSTANTS.EVENTS.BID_RESPONSE, bid);
186
+ this.getUrlPixelMetric(EVENTS.BID_RESPONSE, bid);
187
187
  });
188
188
  });
189
189
 
@@ -263,7 +263,7 @@ export const spec = {
263
263
 
264
264
  onTimeout(bids) {
265
265
  for (const bid of bids) {
266
- this.getUrlPixelMetric(CONSTANTS.EVENTS.BID_TIMEOUT, bid);
266
+ this.getUrlPixelMetric(EVENTS.BID_TIMEOUT, bid);
267
267
  };
268
268
  },
269
269
  };
@@ -2,7 +2,7 @@ import {deepClone, logError, getParameterByName} from '../src/utils.js';
2
2
  import {ajax} from '../src/ajax.js';
3
3
  import {getStorageManager} from '../src/storageManager.js';
4
4
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
5
- import CONSTANTS from '../src/constants.json';
5
+ import { EVENTS } from '../src/constants.js';
6
6
  import adapterManager from '../src/adapterManager.js';
7
7
  import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
8
8
 
@@ -17,16 +17,14 @@ const url = 'localhost:8383/event';
17
17
  const GVLID = 816;
18
18
  const storage = getStorageManager({gvlid: GVLID, moduleName: MODULE_NAME, moduleType: MODULE_TYPE_ANALYTICS});
19
19
  const {
20
- EVENTS: {
21
- AUCTION_INIT,
22
- BID_REQUESTED,
23
- BID_TIMEOUT,
24
- BID_RESPONSE,
25
- BID_WON,
26
- AUCTION_END,
27
- AD_RENDER_SUCCEEDED
28
- }
29
- } = CONSTANTS;
20
+ AUCTION_INIT,
21
+ BID_REQUESTED,
22
+ BID_TIMEOUT,
23
+ BID_RESPONSE,
24
+ BID_WON,
25
+ AUCTION_END,
26
+ AD_RENDER_SUCCEEDED
27
+ } = EVENTS;
30
28
  function log (msg) {
31
29
  // eslint-disable-next-line no-console
32
30
  console.log(`%cNoBid Analytics ${VERSION}`, 'padding: 2px 8px 2px 8px; background-color:#f50057; color: white', msg);
@@ -2,7 +2,7 @@ import { _each, deepClone, pick, deepSetValue, logError, logInfo } from '../src/
2
2
  import { getOrigin } from '../libraries/getOrigin/index.js';
3
3
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js'
4
4
  import adapterManager from '../src/adapterManager.js'
5
- import CONSTANTS from '../src/constants.json'
5
+ import { EVENTS } from '../src/constants.js'
6
6
  import { ajax } from '../src/ajax.js'
7
7
  import { config } from '../src/config.js'
8
8
 
@@ -33,7 +33,7 @@ const {
33
33
  BID_WON,
34
34
  BID_TIMEOUT,
35
35
  AD_RENDER_FAILED
36
- } = CONSTANTS.EVENTS
36
+ } = EVENTS
37
37
 
38
38
  const SERVER_EVENTS = {
39
39
  AUCTION: 'auction',
@@ -0,0 +1,42 @@
1
+ import * as utils from '../src/utils.js';
2
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
3
+ import { config } from '../src/config.js';
4
+ import { BANNER } from '../src/mediaTypes.js';
5
+ import { ortbConverter } from '../libraries/ortbConverter/converter.js'
6
+ const converter = ortbConverter({
7
+ context: { netRevenue: true, ttl: 300 },
8
+ imp(buildImp, bidRequest, context) {
9
+ const imp = buildImp(bidRequest, context);
10
+ utils.mergeDeep(imp, {
11
+ tagid: bidRequest.params.site,
12
+ });
13
+ return imp;
14
+ }
15
+ });
16
+ const BIDDER_CODE = 'optable';
17
+ const DEFAULT_REGION = 'ca'
18
+ const DEFAULT_ORIGIN = 'https://ads.optable.co'
19
+
20
+ export const spec = {
21
+ code: BIDDER_CODE,
22
+ isBidRequestValid: function(bid) { return !!bid.params?.site },
23
+ buildRequests: function(bidRequests, bidderRequest) {
24
+ const region = config.getConfig('optable.region') ?? DEFAULT_REGION
25
+ const origin = config.getConfig('optable.origin') ?? DEFAULT_ORIGIN
26
+ const requestURL = `${origin}/${region}/ortb2/v1/ssp/bid`
27
+ const data = converter.toORTB({ bidRequests, bidderRequest, context: { mediaType: BANNER } });
28
+
29
+ return { method: 'POST', url: requestURL, data }
30
+ },
31
+ interpretResponse: function(response, request) {
32
+ const bids = converter.fromORTB({ response: response.body, request: request.data }).bids
33
+ const auctionConfigs = (response.body.ext?.optable?.fledge?.auctionconfigs ?? []).map((cfg) => {
34
+ const { impid, ...config } = cfg;
35
+ return { bidId: impid, config }
36
+ })
37
+
38
+ return { bids, fledgeAuctionConfigs: auctionConfigs }
39
+ },
40
+ supportedMediaTypes: [BANNER]
41
+ }
42
+ registerBidder(spec);
@@ -0,0 +1,41 @@
1
+ # Overview
2
+
3
+ ```
4
+ Module Name: Optable Bidder Adapter
5
+ Module Type: Bidder Adapter
6
+ Maintainer: prebid@optable.co
7
+ ```
8
+
9
+ # Description
10
+
11
+ Module that connects to Optable's demand sources.
12
+
13
+ # Bid Parameters
14
+ ## Banner
15
+
16
+ | Name | Scope | Type | Description | Example
17
+ | ---- | ----- | ---- | ----------- | -------
18
+ | `site` | required | String | Optable site ID provided by your Optable representative. | "aaaaaaaa"
19
+
20
+ ## Video
21
+
22
+ Not supported at the moment.
23
+
24
+ # Example
25
+ ```javascript
26
+ var adUnits = [
27
+ {
28
+ code: 'test-div',
29
+ sizes: [[728, 90]], // a display size
30
+ mediaTypes: {'banner': {}},
31
+ bids: [
32
+ {
33
+ bidder: 'optable',
34
+ params: {
35
+ site: 'aaaaaaaa',
36
+ },
37
+ },
38
+ ],
39
+ },
40
+ ];
41
+ ```
@@ -92,12 +92,24 @@ export const spec = {
92
92
  }
93
93
  }
94
94
 
95
+ if (bidderRequest?.gppConsent?.gppString) {
96
+ payload.gpp = {
97
+ consent: bidderRequest.gppConsent.gppString,
98
+ sid: bidderRequest.gppConsent.applicableSections
99
+ }
100
+ } else if (bidderRequest?.ortb2?.regs?.gpp) {
101
+ payload.gpp = {
102
+ consent: bidderRequest.ortb2.regs.gpp,
103
+ sid: bidderRequest.ortb2.regs.gpp_sid
104
+ }
105
+ }
106
+
95
107
  if (window.location.href.indexOf('optidigitalTestMode=true') !== -1) {
96
108
  payload.testMode = true;
97
109
  }
98
110
 
99
111
  if (bidderRequest && bidderRequest.uspConsent) {
100
- payload.uspConsent = bidderRequest.uspConsent;
112
+ payload.us_privacy = bidderRequest.uspConsent;
101
113
  }
102
114
 
103
115
  if (_getEids(validBidRequests[0])) {
@@ -153,7 +165,7 @@ export const spec = {
153
165
  * @param {ServerResponse[]} serverResponses List of server's responses.
154
166
  * @return {UserSync[]} The user syncs which should be dropped.
155
167
  */
156
- getUserSyncs: function(syncOptions, serverResponses, gdprConsent, uspConsent) {
168
+ getUserSyncs: function(syncOptions, serverResponses, gdprConsent, uspConsent, gppConsent) {
157
169
  let syncurl = '';
158
170
  if (!isSynced) {
159
171
  // Attaching GDPR Consent Params in UserSync url
@@ -161,8 +173,12 @@ export const spec = {
161
173
  syncurl += '&gdpr=' + (gdprConsent.gdprApplies ? 1 : 0);
162
174
  syncurl += '&gdpr_consent=' + encodeURIComponent(gdprConsent.consentString || '');
163
175
  }
164
- if (uspConsent && uspConsent.consentString) {
165
- syncurl += `&ccpa_consent=${uspConsent.consentString}`;
176
+ if (uspConsent) {
177
+ syncurl += '&us_privacy=' + encodeURIComponent(uspConsent);
178
+ }
179
+ if (gppConsent?.gppString && gppConsent?.applicableSections?.length) {
180
+ syncurl += '&gpp=' + encodeURIComponent(gppConsent.gppString);
181
+ syncurl += '&gpp_sid=' + encodeURIComponent(gppConsent?.applicableSections?.join(','));
166
182
  }
167
183
 
168
184
  if (syncOptions.iframeEnabled) {
@@ -1,6 +1,6 @@
1
1
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
2
2
  import adapterManager from '../src/adapterManager.js';
3
- import CONSTANTS from '../src/constants.json';
3
+ import { EVENTS } from '../src/constants.js';
4
4
  import { ajax } from '../src/ajax.js';
5
5
  import { getRefererInfo } from '../src/refererDetection.js';
6
6
 
@@ -8,14 +8,12 @@ const analyticsType = 'endpoint';
8
8
  const url = 'URL_TO_SERVER_ENDPOINT';
9
9
 
10
10
  const {
11
- EVENTS: {
12
- AUCTION_END,
13
- BID_WON,
14
- BID_RESPONSE,
15
- BID_REQUESTED,
16
- BID_TIMEOUT,
17
- }
18
- } = CONSTANTS;
11
+ AUCTION_END,
12
+ BID_WON,
13
+ BID_RESPONSE,
14
+ BID_REQUESTED,
15
+ BID_TIMEOUT,
16
+ } = EVENTS;
19
17
 
20
18
  let saveEvents = {}
21
19
  let allEvents = {}
package/modules/paapi.js CHANGED
@@ -3,10 +3,10 @@
3
3
  */
4
4
  import {config} from '../src/config.js';
5
5
  import {getHook, module} from '../src/hook.js';
6
- import {deepSetValue, logInfo, logWarn, mergeDeep} from '../src/utils.js';
6
+ import {deepSetValue, logInfo, logWarn, mergeDeep, parseSizesInput} from '../src/utils.js';
7
7
  import {IMP, PBS, registerOrtbProcessor, RESPONSE} from '../src/pbjsORTB.js';
8
8
  import * as events from '../src/events.js';
9
- import CONSTANTS from '../src/constants.json';
9
+ import {EVENTS} from '../src/constants.js';
10
10
  import {currencyCompare} from '../libraries/currencyUtils/currency.js';
11
11
  import {maximum, minimum} from '../src/utils/reducers.js';
12
12
  import {auctionManager} from '../src/auctionManager.js';
@@ -67,7 +67,7 @@ export function init(cfg, configNamespace) {
67
67
 
68
68
  getHook('addComponentAuction').before(addComponentAuctionHook);
69
69
  getHook('makeBidRequests').after(markForFledge);
70
- events.on(CONSTANTS.EVENTS.AUCTION_END, onAuctionEnd);
70
+ events.on(EVENTS.AUCTION_END, onAuctionEnd);
71
71
 
72
72
  function getSlotSignals(bidsReceived = [], bidRequests = []) {
73
73
  let bidfloor, bidfloorcur;
@@ -89,19 +89,33 @@ function getSlotSignals(bidsReceived = [], bidRequests = []) {
89
89
  return cfg;
90
90
  }
91
91
 
92
- function onAuctionEnd({auctionId, bidsReceived, bidderRequests, adUnitCodes}) {
92
+ function onAuctionEnd({auctionId, bidsReceived, bidderRequests, adUnitCodes, adUnits}) {
93
+ const adUnitsByCode = Object.fromEntries(adUnits?.map(au => [au.code, au]) || [])
93
94
  const allReqs = bidderRequests?.flatMap(br => br.bids);
94
95
  const paapiConfigs = {};
95
96
  (adUnitCodes || []).forEach(au => {
96
97
  paapiConfigs[au] = null;
97
98
  !latestAuctionForAdUnit.hasOwnProperty(au) && (latestAuctionForAdUnit[au] = null);
98
- })
99
+ });
99
100
  Object.entries(pendingForAuction(auctionId) || {}).forEach(([adUnitCode, auctionConfigs]) => {
100
101
  const forThisAdUnit = (bid) => bid.adUnitCode === adUnitCode;
101
102
  const slotSignals = getSlotSignals(bidsReceived?.filter(forThisAdUnit), allReqs?.filter(forThisAdUnit));
102
103
  paapiConfigs[adUnitCode] = {
104
+ ...slotSignals,
103
105
  componentAuctions: auctionConfigs.map(cfg => mergeDeep({}, slotSignals, cfg))
104
106
  };
107
+ // TODO: need to flesh out size treatment:
108
+ // - which size should the paapi auction pick? (this uses the first one defined)
109
+ // - should we signal it to SSPs, and how?
110
+ // - what should we do if adapters pick a different one?
111
+ // - what does size mean for video and native?
112
+ const size = parseSizesInput(adUnitsByCode[adUnitCode]?.mediaTypes?.banner?.sizes)?.[0]?.split('x');
113
+ if (size) {
114
+ paapiConfigs[adUnitCode].requestedSize = {
115
+ width: size[0],
116
+ height: size[1],
117
+ };
118
+ }
105
119
  latestAuctionForAdUnit[adUnitCode] = auctionId;
106
120
  });
107
121
  configsForAuction(auctionId, paapiConfigs);
@@ -159,7 +173,7 @@ export function getPAAPIConfig({auctionId, adUnitCode} = {}, includeBlanks = fal
159
173
  output[au] = null;
160
174
  }
161
175
  }
162
- })
176
+ });
163
177
  return output;
164
178
  }
165
179