prebid.js 8.44.0 → 8.45.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 (472) 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/amxBidAdapter.js +1 -1
  33. package/dist/amxIdSystem.js +1 -1
  34. package/dist/analyticsAdapter.js +1 -1
  35. package/dist/appierAnalyticsAdapter.js +1 -1
  36. package/dist/appnexusBidAdapter.js +1 -1
  37. package/dist/asoBidAdapter.js +1 -1
  38. package/dist/asteriobidAnalyticsAdapter.js +1 -1
  39. package/dist/atsAnalyticsAdapter.js +1 -1
  40. package/dist/automatadAnalyticsAdapter.js +1 -1
  41. package/dist/axonixBidAdapter.js +1 -1
  42. package/dist/bidViewability.js +1 -1
  43. package/dist/bidViewabilityIO.js +1 -1
  44. package/dist/bidglassBidAdapter.js +1 -1
  45. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  46. package/dist/big-richmediaBidAdapter.js +1 -1
  47. package/dist/brandmetricsRtdProvider.js +1 -1
  48. package/dist/bridBidAdapter.js +1 -1
  49. package/dist/bridgewellBidAdapter.js +1 -1
  50. package/dist/brightMountainMediaBidAdapter.js +1 -1
  51. package/dist/browsiRtdProvider.js +1 -1
  52. package/dist/byDataAnalyticsAdapter.js +1 -1
  53. package/dist/carodaBidAdapter.js +1 -1
  54. package/dist/chtnwBidAdapter.js +1 -1
  55. package/dist/chunk-core.js +1 -1
  56. package/dist/chunk-paapi.js +1 -1
  57. package/dist/cleanioRtdProvider.js +1 -1
  58. package/dist/concertAnalyticsAdapter.js +1 -1
  59. package/dist/concertBidAdapter.js +1 -1
  60. package/dist/confiantRtdProvider.js +1 -1
  61. package/dist/connectadBidAdapter.js +1 -1
  62. package/dist/consentManagementUsp.js +1 -1
  63. package/dist/consumableBidAdapter.js +1 -1
  64. package/dist/conversantAnalyticsAdapter.js +1 -1
  65. package/dist/conversantBidAdapter.js +1 -1
  66. package/dist/craftBidAdapter.js +1 -1
  67. package/dist/creative-renderer-native.js +1 -1
  68. package/dist/criteoBidAdapter.js +1 -1
  69. package/dist/currency.js +1 -1
  70. package/dist/cwireBidAdapter.js +1 -1
  71. package/dist/dailymotionBidAdapter.js +1 -0
  72. package/dist/datablocksAnalyticsAdapter.js +1 -1
  73. package/dist/datawrkzBidAdapter.js +1 -1
  74. package/dist/debugging-standalone.js +1 -1
  75. package/dist/debugging.js +1 -1
  76. package/dist/dependencies.json +3 -3
  77. package/dist/dfpAdServerVideo.js +1 -1
  78. package/dist/dsaControl.js +1 -1
  79. package/dist/dspxBidAdapter.js +1 -1
  80. package/dist/dxkultureBidAdapter.js +1 -1
  81. package/dist/eplanningAnalyticsAdapter.js +1 -1
  82. package/dist/eplanningBidAdapter.js +1 -1
  83. package/dist/euidIdSystem.js +1 -1
  84. package/dist/feedadBidAdapter.js +1 -1
  85. package/dist/finativeBidAdapter.js +1 -1
  86. package/dist/fintezaAnalyticsAdapter.js +1 -1
  87. package/dist/freewheel-sspBidAdapter.js +1 -1
  88. package/dist/gdprEnforcement.js +1 -1
  89. package/dist/genericAnalyticsAdapter.js +1 -1
  90. package/dist/geoedgeRtdProvider.js +1 -1
  91. package/dist/gmosspBidAdapter.js +1 -1
  92. package/dist/goldbachBidAdapter.js +1 -1
  93. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  94. package/dist/greenbidsRtdProvider.js +1 -1
  95. package/dist/gridBidAdapter.js +1 -1
  96. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  97. package/dist/gumgumBidAdapter.js +1 -1
  98. package/dist/h12mediaBidAdapter.js +1 -1
  99. package/dist/hadronAnalyticsAdapter.js +1 -1
  100. package/dist/holidBidAdapter.js +1 -1
  101. package/dist/hypelabBidAdapter.js +1 -1
  102. package/dist/id5AnalyticsAdapter.js +1 -1
  103. package/dist/id5IdSystem.js +1 -1
  104. package/dist/illuminBidAdapter.js +1 -1
  105. package/dist/imdsBidAdapter.js +1 -1
  106. package/dist/improvedigitalBidAdapter.js +1 -1
  107. package/dist/insticatorBidAdapter.js +1 -1
  108. package/dist/instreamTracking.js +1 -1
  109. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  110. package/dist/ixBidAdapter.js +1 -1
  111. package/dist/jixieBidAdapter.js +1 -1
  112. package/dist/justpremiumBidAdapter.js +1 -1
  113. package/dist/kargoAnalyticsAdapter.js +1 -1
  114. package/dist/kargoBidAdapter.js +1 -1
  115. package/dist/kimberliteBidAdapter.js +1 -1
  116. package/dist/konduitAnalyticsAdapter.js +1 -1
  117. package/dist/kueezBidAdapter.js +1 -1
  118. package/dist/kueezRtbBidAdapter.js +1 -1
  119. package/dist/lassoBidAdapter.js +1 -1
  120. package/dist/lifestreetBidAdapter.js +1 -1
  121. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  122. package/dist/liveIntentIdSystem.js +1 -1
  123. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  124. package/dist/logicadBidAdapter.js +1 -1
  125. package/dist/loglyliftBidAdapter.js +1 -1
  126. package/dist/luceadBidAdapter.js +1 -1
  127. package/dist/magniteAnalyticsAdapter.js +1 -1
  128. package/dist/malltvAnalyticsAdapter.js +1 -1
  129. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  130. package/dist/marsmediaBidAdapter.js +1 -1
  131. package/dist/mediafilterRtdProvider.js +1 -1
  132. package/dist/mediafuseBidAdapter.js +1 -1
  133. package/dist/medianetAnalyticsAdapter.js +1 -1
  134. package/dist/medianetBidAdapter.js +1 -1
  135. package/dist/mediasquareBidAdapter.js +1 -1
  136. package/dist/mgidBidAdapter.js +1 -1
  137. package/dist/minutemediaBidAdapter.js +1 -1
  138. package/dist/minutemediaplusBidAdapter.js +1 -1
  139. package/dist/missenaBidAdapter.js +1 -1
  140. package/dist/multibid.js +1 -1
  141. package/dist/neuwoRtdProvider.js +1 -1
  142. package/dist/nextMillenniumBidAdapter.js +1 -1
  143. package/dist/nexx360BidAdapter.js +1 -1
  144. package/dist/nobidAnalyticsAdapter.js +1 -1
  145. package/dist/not-for-prod/prebid.js +237 -235
  146. package/dist/oguryBidAdapter.js +1 -1
  147. package/dist/onetagBidAdapter.js +1 -1
  148. package/dist/ooloAnalyticsAdapter.js +1 -1
  149. package/dist/openwebBidAdapter.js +1 -1
  150. package/dist/openxBidAdapter.js +1 -1
  151. package/dist/optidigitalBidAdapter.js +1 -1
  152. package/dist/optimonAnalyticsAdapter.js +1 -1
  153. package/dist/outbrainBidAdapter.js +1 -1
  154. package/dist/oxxionAnalyticsAdapter.js +1 -1
  155. package/dist/oxxionRtdProvider.js +1 -1
  156. package/dist/parrableIdSystem.js +1 -1
  157. package/dist/pbsExtensions.js +1 -1
  158. package/dist/permutiveRtdProvider.js +1 -1
  159. package/dist/pgamsspBidAdapter.js +1 -1
  160. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  161. package/dist/pirIdSystem.js +1 -0
  162. package/dist/pixfutureBidAdapter.js +1 -1
  163. package/dist/prebidServerBidAdapter.js +1 -1
  164. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  165. package/dist/priceFloors.js +1 -1
  166. package/dist/publinkIdSystem.js +1 -1
  167. package/dist/publirBidAdapter.js +1 -1
  168. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  169. package/dist/pubmaticBidAdapter.js +1 -1
  170. package/dist/pubperfAnalyticsAdapter.js +1 -1
  171. package/dist/pubstackAnalyticsAdapter.js +1 -1
  172. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  173. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  174. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  175. package/dist/pxyzBidAdapter.js +1 -1
  176. package/dist/qortexRtdProvider.js +1 -1
  177. package/dist/quantcastBidAdapter.js +1 -1
  178. package/dist/readpeakBidAdapter.js +1 -1
  179. package/dist/relaidoBidAdapter.js +1 -1
  180. package/dist/relevantAnalyticsAdapter.js +1 -1
  181. package/dist/retailspotBidAdapter.js +1 -1
  182. package/dist/rhythmoneBidAdapter.js +1 -1
  183. package/dist/riseBidAdapter.js +1 -1
  184. package/dist/rivrAnalyticsAdapter.js +1 -1
  185. package/dist/roxotAnalyticsAdapter.js +1 -1
  186. package/dist/rtdModule.js +1 -1
  187. package/dist/rubiconBidAdapter.js +1 -1
  188. package/dist/s2sTesting.js +1 -1
  189. package/dist/scaleableAnalyticsAdapter.js +1 -1
  190. package/dist/schain.js +1 -1
  191. package/dist/seedingAllianceBidAdapter.js +1 -1
  192. package/dist/seedtagBidAdapter.js +1 -1
  193. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  194. package/dist/sharethroughBidAdapter.js +1 -1
  195. package/dist/shinezBidAdapter.js +1 -1
  196. package/dist/shinezRtbBidAdapter.js +1 -1
  197. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  198. package/dist/sizeMapping.js +1 -1
  199. package/dist/smaatoBidAdapter.js +1 -1
  200. package/dist/smartadserverBidAdapter.js +1 -1
  201. package/dist/smartxBidAdapter.js +1 -1
  202. package/dist/smilewantedBidAdapter.js +1 -1
  203. package/dist/sonobiAnalyticsAdapter.js +1 -1
  204. package/dist/sonobiBidAdapter.js +1 -1
  205. package/dist/sovrnAnalyticsAdapter.js +1 -1
  206. package/dist/sovrnBidAdapter.js +1 -1
  207. package/dist/sspBCBidAdapter.js +1 -1
  208. package/dist/staqAnalyticsAdapter.js +1 -1
  209. package/dist/stnBidAdapter.js +1 -1
  210. package/dist/stvBidAdapter.js +1 -1
  211. package/dist/sublimeBidAdapter.js +1 -1
  212. package/dist/taboolaBidAdapter.js +1 -1
  213. package/dist/tagorasBidAdapter.js +1 -1
  214. package/dist/targetVideoBidAdapter.js +1 -1
  215. package/dist/teadsBidAdapter.js +1 -1
  216. package/dist/terceptAnalyticsAdapter.js +1 -1
  217. package/dist/themoneytizerBidAdapter.js +1 -1
  218. package/dist/topicsFpdModule.js +1 -1
  219. package/dist/trionBidAdapter.js +1 -1
  220. package/dist/tripleliftBidAdapter.js +1 -1
  221. package/dist/ttdBidAdapter.js +1 -1
  222. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  223. package/dist/uid2IdSystem.js +1 -1
  224. package/dist/underdogmediaBidAdapter.js +1 -1
  225. package/dist/undertoneBidAdapter.js +1 -1
  226. package/dist/unrulyBidAdapter.js +1 -1
  227. package/dist/userId.js +1 -1
  228. package/dist/vidazooBidAdapter.js +1 -1
  229. package/dist/videoModule.js +1 -1
  230. package/dist/videobyteBidAdapter.js +1 -1
  231. package/dist/visxBidAdapter.js +1 -1
  232. package/dist/vuukleBidAdapter.js +1 -1
  233. package/dist/weboramaRtdProvider.js +1 -1
  234. package/dist/widespaceBidAdapter.js +1 -1
  235. package/dist/winrBidAdapter.js +1 -1
  236. package/dist/yahoosspBidAdapter.js +1 -1
  237. package/dist/yandexAnalyticsAdapter.js +1 -1
  238. package/dist/yieldmoBidAdapter.js +1 -1
  239. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  240. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  241. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  242. package/dist/zeta_global_sspBidAdapter.js +1 -1
  243. package/gulpfile.js +9 -1
  244. package/integrationExamples/gpt/adnuntius_example.html +7 -1
  245. package/integrationExamples/gpt/azerionedgeRtdProvider_example.html +3 -3
  246. package/integrationExamples/gpt/top-level-paapi/decisionLogic.js +57 -0
  247. package/integrationExamples/gpt/top-level-paapi/tl_paapi_example.html +188 -0
  248. package/integrationExamples/gpt/x-domain/creative.html +1 -1
  249. package/libraries/analyticsAdapter/AnalyticsAdapter.js +4 -4
  250. package/libraries/creative-renderer-native/renderer.js +1 -1
  251. package/modules/33acrossAnalyticsAdapter.js +2 -4
  252. package/modules/33acrossIdSystem.js +1 -1
  253. package/modules/adWMGAnalyticsAdapter.js +9 -11
  254. package/modules/adagioAnalyticsAdapter.js +8 -8
  255. package/modules/adkernelAdnAnalyticsAdapter.js +8 -8
  256. package/modules/adkernelBidAdapter.js +9 -3
  257. package/modules/adlooxAdServerVideo.js +2 -2
  258. package/modules/adlooxAnalyticsAdapter.js +4 -4
  259. package/modules/adnuntiusBidAdapter.js +49 -31
  260. package/modules/adomikAnalyticsAdapter.js +7 -7
  261. package/modules/adpod.js +3 -3
  262. package/modules/adxcgAnalyticsAdapter.js +10 -10
  263. package/modules/adxpremiumAnalyticsAdapter.js +8 -10
  264. package/modules/agmaAnalyticsAdapter.js +2 -6
  265. package/modules/appierAnalyticsAdapter.js +5 -7
  266. package/modules/asteriobidAnalyticsAdapter.js +14 -14
  267. package/modules/atsAnalyticsAdapter.js +4 -4
  268. package/modules/automatadAnalyticsAdapter.js +20 -20
  269. package/modules/azerionedgeRtdProvider.md +4 -2
  270. package/modules/bidViewability.js +3 -3
  271. package/modules/bidViewabilityIO.js +3 -3
  272. package/modules/bidwatchAnalyticsAdapter.js +7 -9
  273. package/modules/brandmetricsRtdProvider.js +6 -6
  274. package/modules/browsiRtdProvider.js +3 -3
  275. package/modules/byDataAnalyticsAdapter.js +3 -3
  276. package/modules/cleanioRtdProvider.js +3 -3
  277. package/modules/concertAnalyticsAdapter.js +5 -7
  278. package/modules/confiantRtdProvider.js +2 -2
  279. package/modules/conversantAnalyticsAdapter.js +2 -4
  280. package/modules/criteoBidAdapter.js +51 -8
  281. package/modules/currency.js +7 -7
  282. package/modules/dailymotionBidAdapter.js +139 -0
  283. package/modules/dailymotionBidAdapter.md +140 -0
  284. package/modules/datawrkzBidAdapter.js +4 -4
  285. package/modules/debugging/pbsInterceptor.js +2 -2
  286. package/modules/dfpAdServerVideo.js +2 -2
  287. package/modules/dsaControl.js +5 -5
  288. package/modules/eplanningAnalyticsAdapter.js +8 -8
  289. package/modules/fintezaAnalyticsAdapter.js +5 -5
  290. package/modules/gdprEnforcement.js +3 -3
  291. package/modules/geoedgeRtdProvider.js +2 -2
  292. package/modules/greenbidsAnalyticsAdapter.js +13 -10
  293. package/modules/greenbidsRtdProvider.js +2 -2
  294. package/modules/growthCodeAnalyticsAdapter.js +14 -14
  295. package/modules/hadronAnalyticsAdapter.js +14 -14
  296. package/modules/holidBidAdapter.js +2 -2
  297. package/modules/id5AnalyticsAdapter.js +7 -9
  298. package/modules/improvedigitalBidAdapter.js +2 -1
  299. package/modules/insticatorBidAdapter.js +137 -27
  300. package/modules/instreamTracking.js +4 -4
  301. package/modules/invisiblyAnalyticsAdapter.js +15 -17
  302. package/modules/ixBidAdapter.js +3 -3
  303. package/modules/kargoAnalyticsAdapter.js +3 -3
  304. package/modules/kargoBidAdapter.js +5 -11
  305. package/modules/konduitAnalyticsAdapter.js +13 -13
  306. package/modules/liveIntentAnalyticsAdapter.js +2 -2
  307. package/modules/livewrappedAnalyticsAdapter.js +10 -10
  308. package/modules/magniteAnalyticsAdapter.js +25 -23
  309. package/modules/malltvAnalyticsAdapter.js +4 -6
  310. package/modules/mediafilterRtdProvider.js +2 -2
  311. package/modules/medianetAnalyticsAdapter.js +12 -12
  312. package/modules/medianetBidAdapter.js +1 -1
  313. package/modules/multibid/index.js +2 -2
  314. package/modules/neuwoRtdProvider.js +2 -2
  315. package/modules/nextMillenniumBidAdapter.js +4 -4
  316. package/modules/nobidAnalyticsAdapter.js +9 -11
  317. package/modules/ooloAnalyticsAdapter.js +2 -2
  318. package/modules/oxxionAnalyticsAdapter.js +7 -9
  319. package/modules/paapi.js +20 -6
  320. package/modules/permutiveRtdProvider.js +21 -2
  321. package/modules/pgamsspBidAdapter.js +26 -3
  322. package/modules/pirIdSystem.js +62 -0
  323. package/modules/pirIdSystem.md +27 -0
  324. package/modules/prebidServerBidAdapter/index.js +8 -8
  325. package/modules/prebidServerBidAdapter/ortbConverter.js +3 -3
  326. package/modules/prebidmanagerAnalyticsAdapter.js +14 -14
  327. package/modules/priceFloors.js +10 -5
  328. package/modules/pubmaticAnalyticsAdapter.js +32 -22
  329. package/modules/pubmaticBidAdapter.js +1 -17
  330. package/modules/pubwiseAnalyticsAdapter.js +11 -11
  331. package/modules/pubxaiAnalyticsAdapter.js +6 -6
  332. package/modules/qortexRtdProvider.js +2 -2
  333. package/modules/roxotAnalyticsAdapter.js +8 -10
  334. package/modules/rtdModule/index.js +7 -7
  335. package/modules/scaleableAnalyticsAdapter.js +5 -5
  336. package/modules/seedtagBidAdapter.js +12 -3
  337. package/modules/sigmoidAnalyticsAdapter.js +7 -7
  338. package/modules/smaatoBidAdapter.js +1 -2
  339. package/modules/sonobiAnalyticsAdapter.js +10 -12
  340. package/modules/sovrnAnalyticsAdapter.js +7 -9
  341. package/modules/sovrnBidAdapter.js +1 -1
  342. package/modules/staqAnalyticsAdapter.js +9 -9
  343. package/modules/terceptAnalyticsAdapter.js +7 -7
  344. package/modules/topicsFpdModule.js +3 -0
  345. package/modules/topicsFpdModule.md +4 -0
  346. package/modules/ucfunnelAnalyticsAdapter.js +5 -7
  347. package/modules/userId/index.js +3 -3
  348. package/modules/videoModule/index.js +4 -4
  349. package/modules/yandexAnalyticsAdapter.js +2 -2
  350. package/modules/yieldoneAnalyticsAdapter.js +7 -7
  351. package/modules/yuktamediaAnalyticsAdapter.js +9 -9
  352. package/modules/zeta_global_sspAnalyticsAdapter.js +5 -5
  353. package/modules/zeta_global_sspBidAdapter.js +8 -1
  354. package/package.json +1 -1
  355. package/src/adRendering.js +15 -15
  356. package/src/adUnits.js +9 -21
  357. package/src/adapterManager.js +23 -13
  358. package/src/adapters/bidderFactory.js +8 -8
  359. package/src/auction.js +26 -28
  360. package/src/auctionManager.js +4 -4
  361. package/src/bidderSettings.js +2 -2
  362. package/src/config.js +2 -2
  363. package/src/constants.js +190 -0
  364. package/src/events.js +3 -3
  365. package/src/native.js +6 -8
  366. package/src/prebid.js +6 -10
  367. package/src/secureCreatives.js +5 -5
  368. package/src/targeting.js +13 -13
  369. package/src/utils.js +4 -4
  370. package/test/fixtures/fixtures.js +44 -44
  371. package/test/helpers/analytics.js +6 -6
  372. package/test/spec/AnalyticsAdapter_spec.js +3 -3
  373. package/test/spec/auctionmanager_spec.js +82 -82
  374. package/test/spec/modules/33acrossAnalyticsAdapter_spec.js +1 -2
  375. package/test/spec/modules/33acrossIdSystem_spec.js +3 -3
  376. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +14 -14
  377. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +26 -26
  378. package/test/spec/modules/adkernelAdnAnalytics_spec.js +6 -6
  379. package/test/spec/modules/adkernelBidAdapter_spec.js +9 -4
  380. package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
  381. package/test/spec/modules/adnuntiusBidAdapter_spec.js +8 -5
  382. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +7 -7
  383. package/test/spec/modules/adxcgAnalyticsAdapter_spec.js +7 -7
  384. package/test/spec/modules/adxpremiumAnalyticsAdapter_spec.js +7 -7
  385. package/test/spec/modules/agmaAnalyticsAdapter_spec.js +14 -14
  386. package/test/spec/modules/appierAnalyticsAdapter_spec.js +1 -1
  387. package/test/spec/modules/asteriobidAnalyticsAdapter_spec.js +2 -2
  388. package/test/spec/modules/atsAnalyticsAdapter_spec.js +8 -8
  389. package/test/spec/modules/automatadAnalyticsAdapter_spec.js +2 -2
  390. package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
  391. package/test/spec/modules/bidViewability_spec.js +4 -4
  392. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +7 -6
  393. package/test/spec/modules/byDataAnalyticsAdapter_spec.js +5 -4
  394. package/test/spec/modules/cleanioRtdProvider_spec.js +6 -6
  395. package/test/spec/modules/concertAnalyticsAdapter_spec.js +7 -6
  396. package/test/spec/modules/confiantRtdProvider_spec.js +2 -2
  397. package/test/spec/modules/conversantAnalyticsAdapter_spec.js +61 -61
  398. package/test/spec/modules/criteoBidAdapter_spec.js +111 -5
  399. package/test/spec/modules/currency_spec.js +6 -6
  400. package/test/spec/modules/dailymotionBidAdapter_spec.js +369 -0
  401. package/test/spec/modules/dsaControl_spec.js +4 -4
  402. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +20 -13
  403. package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +5 -5
  404. package/test/spec/modules/genericAnalyticsAdapter_spec.js +2 -2
  405. package/test/spec/modules/geoedgeRtdProvider_spec.js +37 -37
  406. package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +15 -2
  407. package/test/spec/modules/greenbidsRtdProvider_spec.js +2 -2
  408. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +2 -2
  409. package/test/spec/modules/hadronAnalyticsAdapter_spec.js +3 -3
  410. package/test/spec/modules/id5AnalyticsAdapter_spec.js +5 -5
  411. package/test/spec/modules/id5IdSystem_spec.js +2 -2
  412. package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -3
  413. package/test/spec/modules/insticatorBidAdapter_spec.js +275 -22
  414. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +40 -40
  415. package/test/spec/modules/kargoAnalyticsAdapter_spec.js +3 -3
  416. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +13 -13
  417. package/test/spec/modules/lemmaDigitalBidAdapter_spec.js +1 -1
  418. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -3
  419. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +15 -20
  420. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +31 -15
  421. package/test/spec/modules/malltvAnalyticsAdapter_spec.js +3 -3
  422. package/test/spec/modules/mediafilterRtdProvider_spec.js +2 -2
  423. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +3 -3
  424. package/test/spec/modules/nobidAnalyticsAdapter_spec.js +23 -23
  425. package/test/spec/modules/ooloAnalyticsAdapter_spec.js +33 -33
  426. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +0 -1
  427. package/test/spec/modules/oxxionAnalyticsAdapter_spec.js +7 -7
  428. package/test/spec/modules/paapi_spec.js +40 -14
  429. package/test/spec/modules/permutiveRtdProvider_spec.js +29 -1
  430. package/test/spec/modules/pgamsspBidAdapter_spec.js +50 -4
  431. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +9 -9
  432. package/test/spec/modules/pirIdSystem_spec.js +77 -0
  433. package/test/spec/modules/prebidServerBidAdapter_spec.js +7 -7
  434. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +2 -2
  435. package/test/spec/modules/priceFloors_spec.js +6 -5
  436. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +12 -14
  437. package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
  438. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +0 -1
  439. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +14 -14
  440. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +7 -7
  441. package/test/spec/modules/qortexRtdProvider_spec.js +2 -2
  442. package/test/spec/modules/realTimeDataModule_spec.js +9 -9
  443. package/test/spec/modules/relevantAnalyticsAdapter_spec.js +3 -3
  444. package/test/spec/modules/relevantdigitalBidAdapter_spec.js +2 -2
  445. package/test/spec/modules/rivrAnalyticsAdapter_spec.js +4 -4
  446. package/test/spec/modules/roxotAnalyticsAdapter_spec.js +25 -25
  447. package/test/spec/modules/scaleableAnalyticsAdapter_spec.js +5 -5
  448. package/test/spec/modules/seedtagBidAdapter_spec.js +56 -3
  449. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +0 -1
  450. package/test/spec/modules/sonobiAnalyticsAdapter_spec.js +8 -7
  451. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +2 -2
  452. package/test/spec/modules/sovrnBidAdapter_spec.js +5 -5
  453. package/test/spec/modules/staqAnalyticsAdapter_spec.js +7 -7
  454. package/test/spec/modules/terceptAnalyticsAdapter_spec.js +7 -7
  455. package/test/spec/modules/trionBidAdapter_spec.js +1 -1
  456. package/test/spec/modules/ucfunnelAnalyticsAdapter_spec.js +1 -1
  457. package/test/spec/modules/userId_spec.js +4 -4
  458. package/test/spec/modules/videoModule/pbVideo_spec.js +3 -3
  459. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +22 -21
  460. package/test/spec/modules/yuktamediaAnalyticsAdapter_spec.js +33 -32
  461. package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +8 -8
  462. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +1 -1
  463. package/test/spec/native_spec.js +19 -19
  464. package/test/spec/unit/adRendering_spec.js +14 -14
  465. package/test/spec/unit/adUnits_spec.js +1 -1
  466. package/test/spec/unit/core/adapterManager_spec.js +99 -59
  467. package/test/spec/unit/core/bidderFactory_spec.js +6 -6
  468. package/test/spec/unit/core/targeting_spec.js +47 -47
  469. package/test/spec/unit/pbjs_api_spec.js +81 -81
  470. package/test/spec/unit/secureCreatives_spec.js +27 -27
  471. package/test/spec/utils_spec.js +2 -2
  472. 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',
@@ -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
 
@@ -104,6 +104,7 @@ export function setBidderRtb (bidderOrtb2, moduleConfig, segmentData) {
104
104
 
105
105
  const ssps = segmentData?.ssp?.ssps ?? []
106
106
  const sspCohorts = segmentData?.ssp?.cohorts ?? []
107
+ const topics = segmentData?.topics ?? {}
107
108
 
108
109
  const bidders = new Set([...acBidders, ...ssps])
109
110
  bidders.forEach(function (bidder) {
@@ -121,7 +122,7 @@ export function setBidderRtb (bidderOrtb2, moduleConfig, segmentData) {
121
122
  cohorts = [...new Set([...cohorts, ...sspCohorts])].slice(0, maxSegs)
122
123
  }
123
124
 
124
- const nextConfig = updateOrtbConfig(bidder, currConfig, cohorts, sspCohorts, transformationConfigs, segmentData)
125
+ const nextConfig = updateOrtbConfig(bidder, currConfig, cohorts, sspCohorts, topics, transformationConfigs, segmentData)
125
126
  bidderOrtb2[bidder] = nextConfig.ortb2
126
127
  })
127
128
  }
@@ -134,10 +135,11 @@ export function setBidderRtb (bidderOrtb2, moduleConfig, segmentData) {
134
135
  * the transformations on user data to include the ORTB2 object
135
136
  * @param {string[]} segmentIDs - Permutive segment IDs
136
137
  * @param {string[]} sspSegmentIDs - Permutive SSP segment IDs
138
+ * @param {Object} topics - Privacy Sandbox Topics, keyed by IAB taxonomy version (600, 601, etc.)
137
139
  * @param {Object} segmentData - The segments available for targeting
138
140
  * @return {Object} Merged ortb2 object
139
141
  */
140
- function updateOrtbConfig(bidder, currConfig, segmentIDs, sspSegmentIDs, transformationConfigs, segmentData) {
142
+ function updateOrtbConfig(bidder, currConfig, segmentIDs, sspSegmentIDs, topics, transformationConfigs, segmentData) {
141
143
  logger.logInfo(`Current ortb2 config`, { bidder, config: currConfig })
142
144
 
143
145
  const customCohortsData = deepAccess(segmentData, bidder) || []
@@ -161,9 +163,21 @@ function updateOrtbConfig(bidder, currConfig, segmentIDs, sspSegmentIDs, transfo
161
163
  const ortbConfig = mergeDeep({}, currConfig)
162
164
  const currentUserData = deepAccess(ortbConfig, 'ortb2.user.data') || []
163
165
 
166
+ let topicsUserData = []
167
+ for (const [k, value] of Object.entries(topics)) {
168
+ topicsUserData.push({
169
+ name,
170
+ ext: {
171
+ segtax: Number(k)
172
+ },
173
+ segment: value.map(topic => ({ id: topic.toString() })),
174
+ })
175
+ }
176
+
164
177
  const updatedUserData = currentUserData
165
178
  .filter(el => el.name !== permutiveUserData.name && el.name !== customCohortsUserData.name)
166
179
  .concat(permutiveUserData, transformedUserData, customCohortsUserData)
180
+ .concat(topicsUserData)
167
181
 
168
182
  logger.logInfo(`Updating ortb2.user.data`, { bidder, user_data: updatedUserData })
169
183
  deepSetValue(ortbConfig, 'ortb2.user.data', updatedUserData)
@@ -311,6 +325,7 @@ export function getSegments (maxSegs) {
311
325
  cohorts: [],
312
326
  ssps: []
313
327
  }),
328
+ topics: readSegments('_ppsts', {}),
314
329
  }
315
330
 
316
331
  for (const bidder in segments) {
@@ -318,6 +333,10 @@ export function getSegments (maxSegs) {
318
333
  if (segments[bidder].cohorts && Array.isArray(segments[bidder].cohorts)) {
319
334
  segments[bidder].cohorts = segments[bidder].cohorts.slice(0, maxSegs)
320
335
  }
336
+ } else if (bidder === 'topics') {
337
+ for (const taxonomy in segments[bidder]) {
338
+ segments[bidder][taxonomy] = segments[bidder][taxonomy].slice(0, maxSegs)
339
+ }
321
340
  } else {
322
341
  segments[bidder] = segments[bidder].slice(0, maxSegs)
323
342
  }
@@ -171,11 +171,27 @@ export const spec = {
171
171
  page,
172
172
  placements,
173
173
  coppa: config.getConfig('coppa') === true ? 1 : 0,
174
- ccpa: bidderRequest.uspConsent || undefined,
175
- gdpr: bidderRequest.gdprConsent || undefined,
176
174
  tmax: bidderRequest.timeout
177
175
  };
178
176
 
177
+ if (bidderRequest.uspConsent) {
178
+ request.ccpa = bidderRequest.uspConsent;
179
+ }
180
+
181
+ if (bidderRequest.gdprConsent) {
182
+ request.gdpr = {
183
+ consentString: bidderRequest.gdprConsent.consentString
184
+ };
185
+ }
186
+
187
+ if (bidderRequest.gppConsent) {
188
+ request.gpp = bidderRequest.gppConsent.gppString;
189
+ request.gpp_sid = bidderRequest.gppConsent.applicableSections;
190
+ } else if (bidderRequest.ortb2?.regs?.gpp) {
191
+ request.gpp = bidderRequest.ortb2.regs.gpp;
192
+ request.gpp_sid = bidderRequest.ortb2.regs.gpp_sid;
193
+ }
194
+
179
195
  const len = validBidRequests.length;
180
196
  for (let i = 0; i < len; i++) {
181
197
  const bid = validBidRequests[i];
@@ -203,9 +219,10 @@ export const spec = {
203
219
  return response;
204
220
  },
205
221
 
206
- getUserSyncs: (syncOptions, serverResponses, gdprConsent, uspConsent) => {
222
+ getUserSyncs: (syncOptions, serverResponses, gdprConsent, uspConsent, gppConsent) => {
207
223
  let syncType = syncOptions.iframeEnabled ? 'iframe' : 'image';
208
224
  let syncUrl = SYNC_URL + `/${syncType}?pbjs=1`;
225
+
209
226
  if (gdprConsent && gdprConsent.consentString) {
210
227
  if (typeof gdprConsent.gdprApplies === 'boolean') {
211
228
  syncUrl += `&gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`;
@@ -213,10 +230,16 @@ export const spec = {
213
230
  syncUrl += `&gdpr=0&gdpr_consent=${gdprConsent.consentString}`;
214
231
  }
215
232
  }
233
+
216
234
  if (uspConsent && uspConsent.consentString) {
217
235
  syncUrl += `&ccpa_consent=${uspConsent.consentString}`;
218
236
  }
219
237
 
238
+ if (gppConsent?.gppString && gppConsent?.applicableSections?.length) {
239
+ syncUrl += '&gpp=' + gppConsent.gppString;
240
+ syncUrl += '&gpp_sid=' + gppConsent.applicableSections.join(',');
241
+ }
242
+
220
243
  const coppa = config.getConfig('coppa') ? 1 : 0;
221
244
  syncUrl += `&coppa=${coppa}`;
222
245
 
@@ -0,0 +1,62 @@
1
+ /**
2
+ * This module adds pirId to the User ID module
3
+ * The {@link module:modules/userId} module is required
4
+ * @module modules/pirId
5
+ * @requires module:modules/userId
6
+ */
7
+
8
+ import { MODULE_TYPE_UID } from '../src/activities/modules.js';
9
+ import { getStorageManager } from '../src/storageManager.js';
10
+ import { submodule } from '../src/hook.js';
11
+ import {domainOverrideToRootDomain} from '../libraries/domainOverrideToRootDomain/index.js';
12
+
13
+ /**
14
+ * @typedef {import('../modules/userId/index.js').Submodule} Submodule
15
+ * @typedef {import('../modules/userId/index.js').IdResponse} IdResponse
16
+ */
17
+
18
+ const MODULE_NAME = 'pirId';
19
+ const ID_TOKEN = 'WPxid';
20
+ export const storage = getStorageManager({ moduleName: MODULE_NAME, moduleType: MODULE_TYPE_UID });
21
+
22
+ /**
23
+ * Reads the ID token from local storage or cookies.
24
+ * @returns {string|undefined} The ID token, or undefined if not found.
25
+ */
26
+ export const readId = () => storage.getDataFromLocalStorage(ID_TOKEN) || storage.getCookie(ID_TOKEN);
27
+
28
+ /** @type {Submodule} */
29
+ export const pirIdSubmodule = {
30
+ name: MODULE_NAME,
31
+ gvlid: 676,
32
+
33
+ /**
34
+ * decode the stored id value for passing to bid requests
35
+ * @function decode
36
+ * @param {string} value
37
+ * @returns {(Object|undefined)}
38
+ */
39
+ decode(value) {
40
+ return typeof value === 'string' ? { 'pirId': value } : undefined;
41
+ },
42
+
43
+ /**
44
+ * performs action to obtain id and return a value
45
+ * @function
46
+ * @returns {(IdResponse|undefined)}
47
+ */
48
+ getId() {
49
+ const pirIdToken = readId();
50
+
51
+ return pirIdToken ? { id: pirIdToken } : undefined;
52
+ },
53
+ domainOverride: domainOverrideToRootDomain(storage, MODULE_NAME),
54
+ eids: {
55
+ 'pirId': {
56
+ source: 'pir.wp.pl',
57
+ atype: 1
58
+ },
59
+ },
60
+ };
61
+
62
+ submodule('userId', pirIdSubmodule);