prebid.js 8.43.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 (501) 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/discoveryBidAdapter.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/eplanningAnalyticsAdapter.js +1 -1
  83. package/dist/eplanningBidAdapter.js +1 -1
  84. package/dist/euidIdSystem.js +1 -1
  85. package/dist/feedadBidAdapter.js +1 -1
  86. package/dist/finativeBidAdapter.js +1 -1
  87. package/dist/fintezaAnalyticsAdapter.js +1 -1
  88. package/dist/freewheel-sspBidAdapter.js +1 -1
  89. package/dist/gdprEnforcement.js +1 -1
  90. package/dist/genericAnalyticsAdapter.js +1 -1
  91. package/dist/geoedgeRtdProvider.js +1 -1
  92. package/dist/gmosspBidAdapter.js +1 -1
  93. package/dist/goldbachBidAdapter.js +1 -1
  94. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  95. package/dist/greenbidsRtdProvider.js +1 -1
  96. package/dist/gridBidAdapter.js +1 -1
  97. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  98. package/dist/gumgumBidAdapter.js +1 -1
  99. package/dist/h12mediaBidAdapter.js +1 -1
  100. package/dist/hadronAnalyticsAdapter.js +1 -1
  101. package/dist/holidBidAdapter.js +1 -1
  102. package/dist/hypelabBidAdapter.js +1 -1
  103. package/dist/id5AnalyticsAdapter.js +1 -1
  104. package/dist/id5IdSystem.js +1 -1
  105. package/dist/illuminBidAdapter.js +1 -1
  106. package/dist/imdsBidAdapter.js +1 -1
  107. package/dist/improvedigitalBidAdapter.js +1 -1
  108. package/dist/insticatorBidAdapter.js +1 -1
  109. package/dist/instreamTracking.js +1 -1
  110. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  111. package/dist/ixBidAdapter.js +1 -1
  112. package/dist/jixieBidAdapter.js +1 -1
  113. package/dist/justpremiumBidAdapter.js +1 -1
  114. package/dist/jwplayerRtdProvider.js +1 -1
  115. package/dist/kargoAnalyticsAdapter.js +1 -1
  116. package/dist/kargoBidAdapter.js +1 -1
  117. package/dist/kimberliteBidAdapter.js +1 -1
  118. package/dist/konduitAnalyticsAdapter.js +1 -1
  119. package/dist/kueezBidAdapter.js +1 -1
  120. package/dist/kueezRtbBidAdapter.js +1 -1
  121. package/dist/lassoBidAdapter.js +1 -1
  122. package/dist/lifestreetBidAdapter.js +1 -1
  123. package/dist/limelightDigitalBidAdapter.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/loyalBidAdapter.js +1 -0
  130. package/dist/luceadBidAdapter.js +1 -1
  131. package/dist/magniteAnalyticsAdapter.js +1 -1
  132. package/dist/malltvAnalyticsAdapter.js +1 -1
  133. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  134. package/dist/marsmediaBidAdapter.js +1 -1
  135. package/dist/mediafilterRtdProvider.js +1 -1
  136. package/dist/mediafuseBidAdapter.js +1 -1
  137. package/dist/medianetAnalyticsAdapter.js +1 -1
  138. package/dist/medianetBidAdapter.js +1 -1
  139. package/dist/mediasquareBidAdapter.js +1 -1
  140. package/dist/mgidBidAdapter.js +1 -1
  141. package/dist/minutemediaBidAdapter.js +1 -1
  142. package/dist/minutemediaplusBidAdapter.js +1 -1
  143. package/dist/missenaBidAdapter.js +1 -1
  144. package/dist/multibid.js +1 -1
  145. package/dist/neuwoRtdProvider.js +1 -1
  146. package/dist/nextMillenniumBidAdapter.js +1 -1
  147. package/dist/nexx360BidAdapter.js +1 -1
  148. package/dist/nobidAnalyticsAdapter.js +1 -1
  149. package/dist/not-for-prod/prebid.js +242 -239
  150. package/dist/oguryBidAdapter.js +1 -1
  151. package/dist/onetagBidAdapter.js +1 -1
  152. package/dist/ooloAnalyticsAdapter.js +1 -1
  153. package/dist/openwebBidAdapter.js +1 -1
  154. package/dist/openxBidAdapter.js +1 -1
  155. package/dist/optidigitalBidAdapter.js +1 -1
  156. package/dist/optimonAnalyticsAdapter.js +1 -1
  157. package/dist/outbrainBidAdapter.js +1 -1
  158. package/dist/oxxionAnalyticsAdapter.js +1 -1
  159. package/dist/oxxionRtdProvider.js +1 -1
  160. package/dist/parrableIdSystem.js +1 -1
  161. package/dist/pbsExtensions.js +1 -1
  162. package/dist/permutiveRtdProvider.js +1 -1
  163. package/dist/pgamsspBidAdapter.js +1 -1
  164. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  165. package/dist/pirIdSystem.js +1 -0
  166. package/dist/pixfutureBidAdapter.js +1 -1
  167. package/dist/prebidServerBidAdapter.js +1 -1
  168. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  169. package/dist/priceFloors.js +1 -1
  170. package/dist/publinkIdSystem.js +1 -1
  171. package/dist/publirBidAdapter.js +1 -1
  172. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  173. package/dist/pubmaticBidAdapter.js +1 -1
  174. package/dist/pubperfAnalyticsAdapter.js +1 -1
  175. package/dist/pubstackAnalyticsAdapter.js +1 -1
  176. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  177. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  178. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  179. package/dist/pxyzBidAdapter.js +1 -1
  180. package/dist/qortexRtdProvider.js +1 -1
  181. package/dist/quantcastBidAdapter.js +1 -1
  182. package/dist/readpeakBidAdapter.js +1 -1
  183. package/dist/relaidoBidAdapter.js +1 -1
  184. package/dist/relevantAnalyticsAdapter.js +1 -1
  185. package/dist/retailspotBidAdapter.js +1 -1
  186. package/dist/rhythmoneBidAdapter.js +1 -1
  187. package/dist/riseBidAdapter.js +1 -1
  188. package/dist/rivrAnalyticsAdapter.js +1 -1
  189. package/dist/roxotAnalyticsAdapter.js +1 -1
  190. package/dist/rtdModule.js +1 -1
  191. package/dist/rubiconBidAdapter.js +1 -1
  192. package/dist/s2sTesting.js +1 -1
  193. package/dist/scaleableAnalyticsAdapter.js +1 -1
  194. package/dist/schain.js +1 -1
  195. package/dist/seedingAllianceBidAdapter.js +1 -1
  196. package/dist/seedtagBidAdapter.js +1 -1
  197. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  198. package/dist/sharethroughBidAdapter.js +1 -1
  199. package/dist/shinezBidAdapter.js +1 -1
  200. package/dist/shinezRtbBidAdapter.js +1 -1
  201. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  202. package/dist/sirdataRtdProvider.js +1 -1
  203. package/dist/sizeMapping.js +1 -1
  204. package/dist/smaatoBidAdapter.js +1 -1
  205. package/dist/smartadserverBidAdapter.js +1 -1
  206. package/dist/smartxBidAdapter.js +1 -1
  207. package/dist/smilewantedBidAdapter.js +1 -1
  208. package/dist/sonobiAnalyticsAdapter.js +1 -1
  209. package/dist/sonobiBidAdapter.js +1 -1
  210. package/dist/sovrnAnalyticsAdapter.js +1 -1
  211. package/dist/sovrnBidAdapter.js +1 -1
  212. package/dist/sspBCBidAdapter.js +1 -1
  213. package/dist/staqAnalyticsAdapter.js +1 -1
  214. package/dist/stnBidAdapter.js +1 -1
  215. package/dist/stvBidAdapter.js +1 -1
  216. package/dist/sublimeBidAdapter.js +1 -1
  217. package/dist/taboolaBidAdapter.js +1 -1
  218. package/dist/tagorasBidAdapter.js +1 -1
  219. package/dist/targetVideoBidAdapter.js +1 -1
  220. package/dist/teadsBidAdapter.js +1 -1
  221. package/dist/terceptAnalyticsAdapter.js +1 -1
  222. package/dist/themoneytizerBidAdapter.js +1 -1
  223. package/dist/topicsFpdModule.js +1 -1
  224. package/dist/trionBidAdapter.js +1 -1
  225. package/dist/tripleliftBidAdapter.js +1 -1
  226. package/dist/ttdBidAdapter.js +1 -1
  227. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  228. package/dist/uid2IdSystem.js +1 -1
  229. package/dist/underdogmediaBidAdapter.js +1 -1
  230. package/dist/undertoneBidAdapter.js +1 -1
  231. package/dist/unrulyBidAdapter.js +1 -1
  232. package/dist/userId.js +1 -1
  233. package/dist/vidazooBidAdapter.js +1 -1
  234. package/dist/videoModule.js +1 -1
  235. package/dist/videobyteBidAdapter.js +1 -1
  236. package/dist/visxBidAdapter.js +1 -1
  237. package/dist/vuukleBidAdapter.js +1 -1
  238. package/dist/weboramaRtdProvider.js +1 -1
  239. package/dist/widespaceBidAdapter.js +1 -1
  240. package/dist/winrBidAdapter.js +1 -1
  241. package/dist/yahoosspBidAdapter.js +1 -1
  242. package/dist/yandexAnalyticsAdapter.js +1 -1
  243. package/dist/yieldmoBidAdapter.js +1 -1
  244. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  245. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  246. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  247. package/dist/zeta_global_sspBidAdapter.js +1 -1
  248. package/gulpfile.js +9 -1
  249. package/integrationExamples/gpt/adnuntius_example.html +7 -1
  250. package/integrationExamples/gpt/azerionedgeRtdProvider_example.html +3 -3
  251. package/integrationExamples/gpt/top-level-paapi/decisionLogic.js +57 -0
  252. package/integrationExamples/gpt/top-level-paapi/tl_paapi_example.html +188 -0
  253. package/integrationExamples/gpt/x-domain/creative.html +1 -1
  254. package/integrationExamples/{gpt → realTimeData}/jwplayerRtdProvider_example.html +28 -42
  255. package/libraries/analyticsAdapter/AnalyticsAdapter.js +4 -4
  256. package/libraries/creative-renderer-native/renderer.js +1 -1
  257. package/modules/33acrossAnalyticsAdapter.js +2 -4
  258. package/modules/33acrossIdSystem.js +1 -1
  259. package/modules/adWMGAnalyticsAdapter.js +9 -11
  260. package/modules/adagioAnalyticsAdapter.js +49 -46
  261. package/modules/adkernelAdnAnalyticsAdapter.js +8 -8
  262. package/modules/adkernelBidAdapter.js +23 -102
  263. package/modules/adlooxAdServerVideo.js +2 -2
  264. package/modules/adlooxAnalyticsAdapter.js +4 -4
  265. package/modules/adnuntiusBidAdapter.js +50 -32
  266. package/modules/adomikAnalyticsAdapter.js +7 -7
  267. package/modules/adpod.js +3 -3
  268. package/modules/adxcgAnalyticsAdapter.js +10 -10
  269. package/modules/adxpremiumAnalyticsAdapter.js +8 -10
  270. package/modules/agmaAnalyticsAdapter.js +6 -7
  271. package/modules/appierAnalyticsAdapter.js +5 -7
  272. package/modules/appnexusBidAdapter.js +1 -0
  273. package/modules/asteriobidAnalyticsAdapter.js +14 -14
  274. package/modules/atsAnalyticsAdapter.js +4 -4
  275. package/modules/automatadAnalyticsAdapter.js +20 -20
  276. package/modules/azerionedgeRtdProvider.md +4 -2
  277. package/modules/bidViewability.js +3 -3
  278. package/modules/bidViewabilityIO.js +3 -3
  279. package/modules/bidwatchAnalyticsAdapter.js +7 -9
  280. package/modules/brandmetricsRtdProvider.js +6 -6
  281. package/modules/browsiRtdProvider.js +3 -3
  282. package/modules/byDataAnalyticsAdapter.js +3 -3
  283. package/modules/cleanioRtdProvider.js +3 -3
  284. package/modules/concertAnalyticsAdapter.js +5 -7
  285. package/modules/confiantRtdProvider.js +2 -2
  286. package/modules/conversantAnalyticsAdapter.js +2 -4
  287. package/modules/criteoBidAdapter.js +53 -10
  288. package/modules/currency.js +7 -7
  289. package/modules/dailymotionBidAdapter.js +139 -0
  290. package/modules/dailymotionBidAdapter.md +140 -0
  291. package/modules/datawrkzBidAdapter.js +4 -4
  292. package/modules/debugging/pbsInterceptor.js +2 -2
  293. package/modules/dfpAdServerVideo.js +2 -2
  294. package/modules/discoveryBidAdapter.js +21 -0
  295. package/modules/dsaControl.js +5 -5
  296. package/modules/eplanningAnalyticsAdapter.js +8 -8
  297. package/modules/fintezaAnalyticsAdapter.js +5 -5
  298. package/modules/gdprEnforcement.js +3 -3
  299. package/modules/geoedgeRtdProvider.js +2 -2
  300. package/modules/greenbidsAnalyticsAdapter.js +13 -10
  301. package/modules/greenbidsRtdProvider.js +2 -2
  302. package/modules/gridBidAdapter.js +2 -2
  303. package/modules/growthCodeAnalyticsAdapter.js +14 -14
  304. package/modules/gumgumBidAdapter.js +4 -1
  305. package/modules/hadronAnalyticsAdapter.js +14 -14
  306. package/modules/holidBidAdapter.js +2 -2
  307. package/modules/id5AnalyticsAdapter.js +7 -9
  308. package/modules/improvedigitalBidAdapter.js +2 -1
  309. package/modules/insticatorBidAdapter.js +137 -27
  310. package/modules/instreamTracking.js +4 -4
  311. package/modules/invisiblyAnalyticsAdapter.js +15 -17
  312. package/modules/ixBidAdapter.js +3 -3
  313. package/modules/jwplayerRtdProvider.js +93 -26
  314. package/modules/jwplayerRtdProvider.md +23 -2
  315. package/modules/kargoAnalyticsAdapter.js +3 -3
  316. package/modules/kargoBidAdapter.js +26 -31
  317. package/modules/konduitAnalyticsAdapter.js +13 -13
  318. package/modules/lassoBidAdapter.js +11 -2
  319. package/modules/limelightDigitalBidAdapter.js +2 -1
  320. package/modules/liveIntentAnalyticsAdapter.js +2 -2
  321. package/modules/livewrappedAnalyticsAdapter.js +10 -10
  322. package/modules/loyalBidAdapter.js +190 -0
  323. package/modules/loyalBidAdapter.md +79 -0
  324. package/modules/magniteAnalyticsAdapter.js +25 -23
  325. package/modules/malltvAnalyticsAdapter.js +4 -6
  326. package/modules/mediafilterRtdProvider.js +2 -2
  327. package/modules/medianetAnalyticsAdapter.js +12 -12
  328. package/modules/medianetBidAdapter.js +1 -1
  329. package/modules/multibid/index.js +2 -2
  330. package/modules/neuwoRtdProvider.js +2 -2
  331. package/modules/nextMillenniumBidAdapter.js +4 -4
  332. package/modules/nobidAnalyticsAdapter.js +9 -11
  333. package/modules/ooloAnalyticsAdapter.js +2 -2
  334. package/modules/oxxionAnalyticsAdapter.js +7 -9
  335. package/modules/paapi.js +20 -6
  336. package/modules/permutiveRtdProvider.js +21 -2
  337. package/modules/pgamsspBidAdapter.js +26 -3
  338. package/modules/pirIdSystem.js +62 -0
  339. package/modules/pirIdSystem.md +27 -0
  340. package/modules/prebidServerBidAdapter/index.js +8 -8
  341. package/modules/prebidServerBidAdapter/ortbConverter.js +3 -3
  342. package/modules/prebidmanagerAnalyticsAdapter.js +14 -14
  343. package/modules/priceFloors.js +10 -5
  344. package/modules/pubmaticAnalyticsAdapter.js +32 -22
  345. package/modules/pubmaticBidAdapter.js +1 -17
  346. package/modules/pubwiseAnalyticsAdapter.js +11 -11
  347. package/modules/pubxaiAnalyticsAdapter.js +6 -6
  348. package/modules/qortexRtdProvider.js +2 -2
  349. package/modules/roxotAnalyticsAdapter.js +8 -10
  350. package/modules/rtdModule/index.js +7 -7
  351. package/modules/scaleableAnalyticsAdapter.js +5 -5
  352. package/modules/seedtagBidAdapter.js +12 -3
  353. package/modules/sigmoidAnalyticsAdapter.js +7 -7
  354. package/modules/sirdataRtdProvider.js +2 -0
  355. package/modules/smaatoBidAdapter.js +1 -2
  356. package/modules/sonobiAnalyticsAdapter.js +10 -12
  357. package/modules/sonobiBidAdapter.js +2 -5
  358. package/modules/sovrnAnalyticsAdapter.js +7 -9
  359. package/modules/sovrnBidAdapter.js +1 -1
  360. package/modules/staqAnalyticsAdapter.js +9 -9
  361. package/modules/teadsBidAdapter.js +2 -0
  362. package/modules/terceptAnalyticsAdapter.js +7 -7
  363. package/modules/topicsFpdModule.js +3 -0
  364. package/modules/topicsFpdModule.md +4 -0
  365. package/modules/ucfunnelAnalyticsAdapter.js +5 -7
  366. package/modules/userId/index.js +3 -3
  367. package/modules/videoModule/index.js +4 -4
  368. package/modules/yandexAnalyticsAdapter.js +2 -2
  369. package/modules/yieldoneAnalyticsAdapter.js +7 -7
  370. package/modules/yuktamediaAnalyticsAdapter.js +9 -9
  371. package/modules/zeta_global_sspAnalyticsAdapter.js +5 -5
  372. package/modules/zeta_global_sspBidAdapter.js +8 -1
  373. package/package.json +1 -1
  374. package/src/adRendering.js +15 -15
  375. package/src/adUnits.js +9 -21
  376. package/src/adapterManager.js +23 -13
  377. package/src/adapters/bidderFactory.js +8 -8
  378. package/src/auction.js +26 -28
  379. package/src/auctionManager.js +4 -4
  380. package/src/bidderSettings.js +2 -2
  381. package/src/config.js +2 -2
  382. package/src/constants.js +190 -0
  383. package/src/events.js +3 -3
  384. package/src/native.js +6 -8
  385. package/src/prebid.js +6 -10
  386. package/src/secureCreatives.js +5 -5
  387. package/src/targeting.js +13 -13
  388. package/src/utils.js +4 -4
  389. package/test/fixtures/fixtures.js +44 -44
  390. package/test/helpers/analytics.js +6 -6
  391. package/test/spec/AnalyticsAdapter_spec.js +3 -3
  392. package/test/spec/auctionmanager_spec.js +82 -82
  393. package/test/spec/modules/33acrossAnalyticsAdapter_spec.js +1 -2
  394. package/test/spec/modules/33acrossIdSystem_spec.js +3 -3
  395. package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +14 -14
  396. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +79 -55
  397. package/test/spec/modules/adkernelAdnAnalytics_spec.js +6 -6
  398. package/test/spec/modules/adkernelBidAdapter_spec.js +63 -24
  399. package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
  400. package/test/spec/modules/adnuntiusBidAdapter_spec.js +10 -7
  401. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +7 -7
  402. package/test/spec/modules/adxcgAnalyticsAdapter_spec.js +7 -7
  403. package/test/spec/modules/adxpremiumAnalyticsAdapter_spec.js +7 -7
  404. package/test/spec/modules/agmaAnalyticsAdapter_spec.js +18 -14
  405. package/test/spec/modules/appierAnalyticsAdapter_spec.js +1 -1
  406. package/test/spec/modules/asteriobidAnalyticsAdapter_spec.js +2 -2
  407. package/test/spec/modules/atsAnalyticsAdapter_spec.js +8 -8
  408. package/test/spec/modules/automatadAnalyticsAdapter_spec.js +2 -2
  409. package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
  410. package/test/spec/modules/bidViewability_spec.js +4 -4
  411. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +7 -6
  412. package/test/spec/modules/byDataAnalyticsAdapter_spec.js +5 -4
  413. package/test/spec/modules/cleanioRtdProvider_spec.js +6 -6
  414. package/test/spec/modules/concertAnalyticsAdapter_spec.js +7 -6
  415. package/test/spec/modules/confiantRtdProvider_spec.js +2 -2
  416. package/test/spec/modules/conversantAnalyticsAdapter_spec.js +61 -61
  417. package/test/spec/modules/criteoBidAdapter_spec.js +112 -6
  418. package/test/spec/modules/currency_spec.js +6 -6
  419. package/test/spec/modules/dailymotionBidAdapter_spec.js +369 -0
  420. package/test/spec/modules/discoveryBidAdapter_spec.js +35 -1
  421. package/test/spec/modules/dsaControl_spec.js +4 -4
  422. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +20 -13
  423. package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +5 -5
  424. package/test/spec/modules/genericAnalyticsAdapter_spec.js +2 -2
  425. package/test/spec/modules/geoedgeRtdProvider_spec.js +37 -37
  426. package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +15 -2
  427. package/test/spec/modules/greenbidsRtdProvider_spec.js +2 -2
  428. package/test/spec/modules/gridBidAdapter_spec.js +3 -1
  429. package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +2 -2
  430. package/test/spec/modules/gumgumBidAdapter_spec.js +23 -0
  431. package/test/spec/modules/hadronAnalyticsAdapter_spec.js +3 -3
  432. package/test/spec/modules/id5AnalyticsAdapter_spec.js +5 -5
  433. package/test/spec/modules/id5IdSystem_spec.js +2 -2
  434. package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -3
  435. package/test/spec/modules/insticatorBidAdapter_spec.js +275 -22
  436. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +40 -40
  437. package/test/spec/modules/jwplayerRtdProvider_spec.js +672 -29
  438. package/test/spec/modules/kargoAnalyticsAdapter_spec.js +3 -3
  439. package/test/spec/modules/kargoBidAdapter_spec.js +36 -0
  440. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +13 -13
  441. package/test/spec/modules/lassoBidAdapter_spec.js +1 -0
  442. package/test/spec/modules/lemmaDigitalBidAdapter_spec.js +1 -1
  443. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +16 -1
  444. package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -3
  445. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +15 -20
  446. package/test/spec/modules/loyalBidAdapter_spec .js +375 -0
  447. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +31 -15
  448. package/test/spec/modules/malltvAnalyticsAdapter_spec.js +3 -3
  449. package/test/spec/modules/mediafilterRtdProvider_spec.js +2 -2
  450. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +3 -3
  451. package/test/spec/modules/nobidAnalyticsAdapter_spec.js +23 -23
  452. package/test/spec/modules/ooloAnalyticsAdapter_spec.js +33 -33
  453. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +0 -1
  454. package/test/spec/modules/oxxionAnalyticsAdapter_spec.js +7 -7
  455. package/test/spec/modules/paapi_spec.js +40 -14
  456. package/test/spec/modules/permutiveRtdProvider_spec.js +29 -1
  457. package/test/spec/modules/pgamsspBidAdapter_spec.js +50 -4
  458. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +9 -9
  459. package/test/spec/modules/pirIdSystem_spec.js +77 -0
  460. package/test/spec/modules/prebidServerBidAdapter_spec.js +7 -7
  461. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +2 -2
  462. package/test/spec/modules/priceFloors_spec.js +6 -5
  463. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +12 -14
  464. package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
  465. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +0 -1
  466. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +14 -14
  467. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +7 -7
  468. package/test/spec/modules/qortexRtdProvider_spec.js +2 -2
  469. package/test/spec/modules/realTimeDataModule_spec.js +9 -9
  470. package/test/spec/modules/relevantAnalyticsAdapter_spec.js +3 -3
  471. package/test/spec/modules/relevantdigitalBidAdapter_spec.js +2 -2
  472. package/test/spec/modules/rivrAnalyticsAdapter_spec.js +4 -4
  473. package/test/spec/modules/roxotAnalyticsAdapter_spec.js +25 -25
  474. package/test/spec/modules/scaleableAnalyticsAdapter_spec.js +5 -5
  475. package/test/spec/modules/seedtagBidAdapter_spec.js +56 -3
  476. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +0 -1
  477. package/test/spec/modules/sonobiAnalyticsAdapter_spec.js +8 -7
  478. package/test/spec/modules/sonobiBidAdapter_spec.js +4 -6
  479. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +2 -2
  480. package/test/spec/modules/sovrnBidAdapter_spec.js +5 -5
  481. package/test/spec/modules/staqAnalyticsAdapter_spec.js +7 -7
  482. package/test/spec/modules/teadsBidAdapter_spec.js +35 -0
  483. package/test/spec/modules/terceptAnalyticsAdapter_spec.js +7 -7
  484. package/test/spec/modules/trionBidAdapter_spec.js +1 -1
  485. package/test/spec/modules/ucfunnelAnalyticsAdapter_spec.js +1 -1
  486. package/test/spec/modules/userId_spec.js +4 -4
  487. package/test/spec/modules/videoModule/pbVideo_spec.js +3 -3
  488. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +22 -21
  489. package/test/spec/modules/yuktamediaAnalyticsAdapter_spec.js +33 -32
  490. package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +8 -8
  491. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +1 -1
  492. package/test/spec/native_spec.js +19 -19
  493. package/test/spec/unit/adRendering_spec.js +14 -14
  494. package/test/spec/unit/adUnits_spec.js +1 -1
  495. package/test/spec/unit/core/adapterManager_spec.js +99 -59
  496. package/test/spec/unit/core/bidderFactory_spec.js +6 -6
  497. package/test/spec/unit/core/targeting_spec.js +47 -47
  498. package/test/spec/unit/pbjs_api_spec.js +81 -81
  499. package/test/spec/unit/secureCreatives_spec.js +27 -27
  500. package/test/spec/utils_spec.js +2 -2
  501. package/src/constants.json +0 -196
@@ -23,7 +23,7 @@ import {getStorageManager} from '../src/storageManager.js';
23
23
  import {find, includes} from '../src/polyfill.js';
24
24
  import {getGlobal} from '../src/prebidGlobal.js';
25
25
  import * as events from '../src/events.js';
26
- import CONSTANTS from '../src/constants.json';
26
+ import {EVENTS} from '../src/constants.js';
27
27
  import {MODULE_TYPE_RTD} from '../src/activities/modules.js';
28
28
 
29
29
  /**
@@ -67,7 +67,7 @@ export function addBrowsiTag(data) {
67
67
  export function sendPageviewEvent(eventType) {
68
68
  if (eventType === 'PAGEVIEW') {
69
69
  window.addEventListener('browsi_pageview', () => {
70
- events.emit(CONSTANTS.EVENTS.BILLABLE_EVENT, {
70
+ events.emit(EVENTS.BILLABLE_EVENT, {
71
71
  vendor: 'browsi',
72
72
  type: 'pageview',
73
73
  billingId: generateUUID()
@@ -363,7 +363,7 @@ function getTargetingData(uc, c, us, a) {
363
363
  }
364
364
  if (sendAdRequestEvent) {
365
365
  const transactionId = a.adUnits.find(adUnit => adUnit.code === auc).transactionId;
366
- events.emit(CONSTANTS.EVENTS.BILLABLE_EVENT, {
366
+ events.emit(EVENTS.BILLABLE_EVENT, {
367
367
  vendor: 'browsi',
368
368
  type: 'adRequest',
369
369
  billingId: generateUUID(),
@@ -3,7 +3,7 @@ import Base64 from 'crypto-js/enc-base64';
3
3
  import hmacSHA512 from 'crypto-js/hmac-sha512';
4
4
  import enc from 'crypto-js/enc-utf8';
5
5
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
6
- import CONSTANTS from '../src/constants.json';
6
+ import { EVENTS, BID_STATUS } from '../src/constants.js';
7
7
  import adapterManager from '../src/adapterManager.js';
8
8
  import {getStorageManager} from '../src/storageManager.js';
9
9
  import { auctionManager } from '../src/auctionManager.js';
@@ -12,7 +12,7 @@ import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
12
12
 
13
13
  const versionCode = '4.4.1'
14
14
  const secretKey = 'bydata@123456'
15
- const { EVENTS: { NO_BID, BID_TIMEOUT, AUCTION_END, AUCTION_INIT, BID_WON } } = CONSTANTS
15
+ const { NO_BID, BID_TIMEOUT, AUCTION_END, AUCTION_INIT, BID_WON } = EVENTS
16
16
  const DEFAULT_EVENT_URL = 'https://pbjs-stream.bydata.com/topics/prebid'
17
17
  const analyticsType = 'endpoint'
18
18
  const isBydata = isKeyInUrl('bydata_debug')
@@ -342,7 +342,7 @@ ascAdapter.dataProcess = function (t) {
342
342
  })
343
343
  });
344
344
 
345
- var prebidWinningBids = auctionManager.getBidsReceived().filter(bid => bid.status === CONSTANTS.BID_STATUS.BID_TARGETING_SET);
345
+ var prebidWinningBids = auctionManager.getBidsReceived().filter(bid => bid.status === BID_STATUS.BID_TARGETING_SET);
346
346
  prebidWinningBids && prebidWinningBids.length > 0 && prebidWinningBids.forEach(pbbid => {
347
347
  payload['auctionData'] && payload['auctionData'].forEach(rwData => {
348
348
  if (rwData['bid'] === pbbid.requestId && rwData['brs'] === pbbid.size) {
@@ -10,7 +10,7 @@ import { submodule } from '../src/hook.js';
10
10
  import { loadExternalScript } from '../src/adloader.js';
11
11
  import { logError, generateUUID, insertElement } from '../src/utils.js';
12
12
  import * as events from '../src/events.js';
13
- import CONSTANTS from '../src/constants.json';
13
+ import { EVENTS } from '../src/constants.js';
14
14
 
15
15
  /**
16
16
  * @typedef {import('../modules/rtdModule/index.js').RtdSubmodule} RtdSubmodule
@@ -158,8 +158,8 @@ function readConfig(config) {
158
158
  let startBillableEvents = function() {
159
159
  // Upon clean.io submodule initialization, every winner bid is considered to be protected
160
160
  // and therefore, subjected to billing
161
- events.on(CONSTANTS.EVENTS.BID_WON, winnerBidResponse => {
162
- events.emit(CONSTANTS.EVENTS.BILLABLE_EVENT, {
161
+ events.on(EVENTS.BID_WON, winnerBidResponse => {
162
+ events.emit(EVENTS.BILLABLE_EVENT, {
163
163
  vendor: 'clean.io',
164
164
  billingId: generateUUID(),
165
165
  type: 'impression',
@@ -1,7 +1,7 @@
1
1
  import { logMessage } from '../src/utils.js';
2
2
  import {ajax} from '../src/ajax.js';
3
3
  import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
4
- import CONSTANTS from '../src/constants.json';
4
+ import { EVENTS } from '../src/constants.js';
5
5
  import adapterManager from '../src/adapterManager.js';
6
6
 
7
7
  const analyticsType = 'endpoint';
@@ -13,12 +13,10 @@ const pageIncludedInSample = sampleAnalytics();
13
13
  const url = 'https://bids.concert.io/analytics';
14
14
 
15
15
  const {
16
- EVENTS: {
17
- BID_RESPONSE,
18
- BID_WON,
19
- AUCTION_END
20
- }
21
- } = CONSTANTS;
16
+ BID_RESPONSE,
17
+ BID_WON,
18
+ AUCTION_END
19
+ } = EVENTS;
22
20
 
23
21
  let queue = [];
24
22
 
@@ -12,7 +12,7 @@ import { submodule } from '../src/hook.js';
12
12
  import { logError, generateUUID } from '../src/utils.js';
13
13
  import { loadExternalScript } from '../src/adloader.js';
14
14
  import * as events from '../src/events.js';
15
- import CONSTANTS from '../src/constants.json';
15
+ import { EVENTS } from '../src/constants.js';
16
16
 
17
17
  /**
18
18
  * Injects the Confiant Inc. configuration script into the page, based on proprtyId provided
@@ -89,7 +89,7 @@ function setUpMutationObserver() {
89
89
  function getEventHandlerFunction(propertyId) {
90
90
  return function reportBillableEvent(e) {
91
91
  if (e.data.type.indexOf('cnft:reportBillableEvent:' + propertyId) > -1) {
92
- events.emit(CONSTANTS.EVENTS.BILLABLE_EVENT, {
92
+ events.emit(EVENTS.BILLABLE_EVENT, {
93
93
  auctionId: e.data.auctionId,
94
94
  billingId: generateUUID(),
95
95
  transactionId: e.data.transactionId,
@@ -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 {getGlobal} from '../src/prebidGlobal.js';
5
5
  import adapterManager from '../src/adapterManager.js';
6
6
  import {logInfo, logWarn, logError, logMessage, deepAccess, isInteger} from '../src/utils.js';
@@ -8,9 +8,7 @@ import {getRefererInfo} from '../src/refererDetection.js';
8
8
 
9
9
  // Maintainer: mediapsr@epsilon.com
10
10
 
11
- const {
12
- EVENTS: { AUCTION_END, AD_RENDER_FAILED, BID_TIMEOUT, BID_WON, BIDDER_ERROR }
13
- } = CONSTANTS;
11
+ const { AUCTION_END, AD_RENDER_FAILED, BID_TIMEOUT, BID_WON, BIDDER_ERROR } = EVENTS;
14
12
  // STALE_RENDER, TCF2_ENFORCEMENT would need to add extra calls for these as they likely occur after AUCTION_END?
15
13
  const GVLID = 24;
16
14
  const ANALYTICS_TYPE = 'endpoint';
@@ -55,16 +55,18 @@ export const spec = {
55
55
  gvlid: GVLID,
56
56
  supportedMediaTypes: [BANNER, VIDEO, NATIVE],
57
57
 
58
- getUserSyncs: function (syncOptions, _, gdprConsent, uspConsent) {
59
- const fastBidVersion = config.getConfig('criteo.fastBidVersion');
60
- if (canFastBid(fastBidVersion)) {
61
- return [];
62
- }
63
-
64
- const refererInfo = getRefererInfo();
65
- const origin = 'criteoPrebidAdapter';
58
+ getUserSyncs: function (syncOptions, _, gdprConsent, uspConsent, gppConsent = {}) {
59
+ let { gppString = '', applicableSections = [] } = gppConsent;
66
60
 
67
61
  if (syncOptions.iframeEnabled && hasPurpose1Consent(gdprConsent)) {
62
+ const fastBidVersion = config.getConfig('criteo.fastBidVersion');
63
+ if (canFastBid(fastBidVersion)) {
64
+ return [];
65
+ }
66
+
67
+ const refererInfo = getRefererInfo();
68
+ const origin = 'criteoPrebidAdapter';
69
+
68
70
  const queryParams = [];
69
71
  queryParams.push(`origin=${origin}`);
70
72
  queryParams.push(`topUrl=${refererInfo.domain}`);
@@ -79,6 +81,12 @@ export const spec = {
79
81
  if (uspConsent) {
80
82
  queryParams.push(`us_privacy=${uspConsent}`);
81
83
  }
84
+ queryParams.push(`gpp=${gppString}`);
85
+ if (Array.isArray(applicableSections)) {
86
+ for (const applicableSection of applicableSections) {
87
+ queryParams.push(`gpp_sid=${applicableSection}`);
88
+ }
89
+ }
82
90
 
83
91
  const requestId = Math.random().toString();
84
92
 
@@ -126,6 +134,32 @@ export const spec = {
126
134
  type: 'iframe',
127
135
  url: `https://gum.criteo.com/syncframe?${queryParams.join('&')}#${jsonHashSerialized}`
128
136
  }];
137
+ } else if (syncOptions.pixelEnabled && hasPurpose1Consent(gdprConsent)) {
138
+ const queryParams = [];
139
+ queryParams.push(`profile=207`);
140
+ if (gdprConsent) {
141
+ if (gdprConsent.gdprApplies === true) {
142
+ queryParams.push(`gdprapplies=true`);
143
+ }
144
+ if (gdprConsent.consentString) {
145
+ queryParams.push(`gdpr=${gdprConsent.consentString}`);
146
+ }
147
+ }
148
+ if (uspConsent) {
149
+ queryParams.push(`ccpa=${uspConsent}`);
150
+ }
151
+ queryParams.push(`gpp=${gppString}`);
152
+ if (Array.isArray(applicableSections)) {
153
+ for (const applicableSection of applicableSections) {
154
+ queryParams.push(`gpp_sid=${applicableSection}`);
155
+ }
156
+ }
157
+ // gpp
158
+ // gpp_sid
159
+ return [{
160
+ type: 'image',
161
+ url: `https://ssp-sync.criteo.com/user-sync/redirect?${queryParams.join('&')}`
162
+ }];
129
163
  }
130
164
  return [];
131
165
  },
@@ -255,8 +289,8 @@ export const spec = {
255
289
  if (slot.ext?.meta?.networkName) {
256
290
  bid.meta = Object.assign({}, bid.meta, { networkName: slot.ext.meta.networkName })
257
291
  }
258
- if (slot.ext?.dsa?.adrender) {
259
- bid.meta = Object.assign({}, bid.meta, { adrender: slot.ext.dsa.adrender })
292
+ if (slot.ext?.dsa) {
293
+ bid.meta = Object.assign({}, bid.meta, { dsa: slot.ext.dsa })
260
294
  }
261
295
  if (slot.native) {
262
296
  if (bidRequest.params.nativeCallback) {
@@ -473,6 +507,7 @@ function checkNativeSendId(bidRequest) {
473
507
  */
474
508
  function buildCdbRequest(context, bidRequests, bidderRequest) {
475
509
  let networkId;
510
+ let pubid;
476
511
  let schain;
477
512
  let userIdAsEids;
478
513
  let regs = Object.assign({}, {
@@ -490,6 +525,7 @@ function buildCdbRequest(context, bidRequests, bidderRequest) {
490
525
  userIdAsEids = bidRequest.userIdAsEids;
491
526
  }
492
527
  networkId = bidRequest.params.networkId || networkId;
528
+ pubid = bidRequest.params.pubid || pubid;
493
529
  schain = bidRequest.schain || schain;
494
530
  const slot = {
495
531
  slotid: bidRequest.bidId,
@@ -513,6 +549,10 @@ function buildCdbRequest(context, bidRequests, bidderRequest) {
513
549
  if (bidRequest.nativeOrtbRequest?.assets) {
514
550
  slot.ext = Object.assign({}, slot.ext, { assets: bidRequest.nativeOrtbRequest.assets });
515
551
  }
552
+ if (bidRequest.params.uid) {
553
+ slot.ext = Object.assign({}, slot.ext, { bidder: { uid: bidRequest.params.uid } });
554
+ }
555
+
516
556
  if (bidRequest.params.publisherSubId) {
517
557
  slot.publishersubid = bidRequest.params.publisherSubId;
518
558
  }
@@ -581,6 +621,9 @@ function buildCdbRequest(context, bidRequests, bidderRequest) {
581
621
  if (networkId) {
582
622
  request.publisher.networkid = networkId;
583
623
  }
624
+ if (pubid) {
625
+ request.publisher.id = pubid;
626
+ }
584
627
 
585
628
  request.source = {
586
629
  tid: bidderRequest.ortb2?.source?.tid
@@ -1,6 +1,6 @@
1
1
  import {logError, logInfo, logMessage, logWarn} from '../src/utils.js';
2
2
  import {getGlobal} from '../src/prebidGlobal.js';
3
- import CONSTANTS from '../src/constants.json';
3
+ import { EVENTS, REJECTION_REASON } from '../src/constants.js';
4
4
  import {ajax} from '../src/ajax.js';
5
5
  import {config} from '../src/config.js';
6
6
  import {getHook} from '../src/hook.js';
@@ -163,8 +163,8 @@ function initCurrency() {
163
163
  getGlobal().convertCurrency = (cpm, fromCurrency, toCurrency) => parseFloat(cpm) * getCurrencyConversion(fromCurrency, toCurrency);
164
164
  getHook('addBidResponse').before(addBidResponseHook, 100);
165
165
  getHook('responsesReady').before(responsesReadyHook);
166
- onEvent(CONSTANTS.EVENTS.AUCTION_TIMEOUT, rejectOnAuctionTimeout);
167
- onEvent(CONSTANTS.EVENTS.AUCTION_INIT, loadRates);
166
+ onEvent(EVENTS.AUCTION_TIMEOUT, rejectOnAuctionTimeout);
167
+ onEvent(EVENTS.AUCTION_INIT, loadRates);
168
168
  loadRates();
169
169
  }
170
170
 
@@ -173,8 +173,8 @@ function resetCurrency() {
173
173
 
174
174
  getHook('addBidResponse').getHooks({hook: addBidResponseHook}).remove();
175
175
  getHook('responsesReady').getHooks({hook: responsesReadyHook}).remove();
176
- offEvent(CONSTANTS.EVENTS.AUCTION_TIMEOUT, rejectOnAuctionTimeout);
177
- offEvent(CONSTANTS.EVENTS.AUCTION_INIT, loadRates);
176
+ offEvent(EVENTS.AUCTION_TIMEOUT, rejectOnAuctionTimeout);
177
+ offEvent(EVENTS.AUCTION_INIT, loadRates);
178
178
  delete getGlobal().convertCurrency;
179
179
 
180
180
  adServerCurrency = 'USD';
@@ -230,7 +230,7 @@ export const addBidResponseHook = timedBidResponseHook('currency', function addB
230
230
  function rejectOnAuctionTimeout({auctionId}) {
231
231
  bidResponseQueue = bidResponseQueue.filter(([fn, ctx, adUnitCode, bid, reject]) => {
232
232
  if (bid.auctionId === auctionId) {
233
- reject(CONSTANTS.REJECTION_REASON.CANNOT_CONVERT_CURRENCY)
233
+ reject(REJECTION_REASON.CANNOT_CONVERT_CURRENCY)
234
234
  } else {
235
235
  return true;
236
236
  }
@@ -250,7 +250,7 @@ function processBidResponseQueue() {
250
250
  }
251
251
  } catch (e) {
252
252
  logWarn('getCurrencyConversion threw error: ', e);
253
- reject(CONSTANTS.REJECTION_REASON.CANNOT_CONVERT_CURRENCY);
253
+ reject(REJECTION_REASON.CANNOT_CONVERT_CURRENCY);
254
254
  continue;
255
255
  }
256
256
  }
@@ -0,0 +1,139 @@
1
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
2
+ import { VIDEO } from '../src/mediaTypes.js';
3
+ import { deepAccess } from '../src/utils.js';
4
+
5
+ /**
6
+ * Get video metadata from bid request
7
+ *
8
+ * @param {BidRequest} bidRequest A valid bid requests that should be sent to the Server.
9
+ * @return video metadata
10
+ */
11
+ function getVideoMetadata(bidRequest, bidderRequest) {
12
+ const videoAdUnit = deepAccess(bidRequest, 'mediaTypes.video', {});
13
+ const videoBidderParams = deepAccess(bidRequest, 'params.video', {});
14
+
15
+ const videoParams = {
16
+ ...videoAdUnit,
17
+ ...videoBidderParams, // Bidder Specific overrides
18
+ };
19
+
20
+ // Store as object keys to ensure uniqueness
21
+ const iabcat1 = {};
22
+ const iabcat2 = {};
23
+
24
+ deepAccess(bidderRequest, 'ortb2.site.content.data', []).forEach((data) => {
25
+ if ([4, 5, 6, 7].includes(data?.ext?.segtax)) {
26
+ (Array.isArray(data.segment) ? data.segment : []).forEach((segment) => {
27
+ if (typeof segment.id === 'string') {
28
+ // See https://docs.prebid.org/features/firstPartyData.html#segments-and-taxonomy
29
+ // Only take IAB cats of taxonomy V1
30
+ if (data.ext.segtax === 4) iabcat1[segment.id] = 1;
31
+ // Only take IAB cats of taxonomy V2 or higher
32
+ if ([5, 6, 7].includes(data.ext.segtax)) iabcat2[segment.id] = 1;
33
+ }
34
+ });
35
+ }
36
+ });
37
+
38
+ const videoMetadata = {
39
+ description: videoParams.description || '',
40
+ duration: videoParams.duration || 0,
41
+ iabcat1: Object.keys(iabcat1),
42
+ iabcat2: Array.isArray(videoParams.iabcat2)
43
+ ? videoParams.iabcat2
44
+ : Object.keys(iabcat2),
45
+ id: videoParams.id || '',
46
+ lang: videoParams.lang || '',
47
+ private: videoParams.private || false,
48
+ tags: videoParams.tags || '',
49
+ title: videoParams.title || '',
50
+ topics: videoParams.topics || '',
51
+ xid: videoParams.xid || '',
52
+ };
53
+
54
+ return videoMetadata;
55
+ }
56
+
57
+ export const spec = {
58
+ code: 'dailymotion',
59
+ gvlid: 573,
60
+ supportedMediaTypes: [VIDEO],
61
+
62
+ /**
63
+ * Determines whether or not the given bid request is valid.
64
+ * The only mandatory parameter for a bid to be valid is the API key.
65
+ * Other parameters are optional.
66
+ *
67
+ * @return boolean True if this is a valid bid, and false otherwise.
68
+ */
69
+ isBidRequestValid: function (bid) {
70
+ return typeof bid?.params?.apiKey === 'string' && bid.params.apiKey.length > 10;
71
+ },
72
+
73
+ /**
74
+ * Make a server request from the list of valid BidRequests (that already passed the isBidRequestValid call)
75
+ *
76
+ * @param {BidRequest[]} validBidRequests A non-empty list of valid bid requests that should be sent to the Server.
77
+ * @param {BidderRequest} bidderRequest
78
+ * @return ServerRequest Info describing the request to the server.
79
+ */
80
+ buildRequests: (validBidRequests = [], bidderRequest) => validBidRequests.map(bid => ({
81
+ method: 'POST',
82
+ url: 'https://pb.dmxleo.com',
83
+ data: {
84
+ bidder_request: {
85
+ gdprConsent: {
86
+ apiVersion: bidderRequest?.gdprConsent?.apiVersion || 1,
87
+ consentString: bidderRequest?.gdprConsent?.consentString || '',
88
+ // Cast boolean in any case (eg: if value is int) to ensure type
89
+ gdprApplies: !!bidderRequest?.gdprConsent?.gdprApplies,
90
+ },
91
+ refererInfo: {
92
+ page: bidderRequest?.refererInfo?.page || '',
93
+ },
94
+ uspConsent: bidderRequest?.uspConsent || '',
95
+ gppConsent: {
96
+ gppString: deepAccess(bidderRequest, 'gppConsent.gppString') ||
97
+ deepAccess(bidderRequest, 'ortb2.regs.gpp', ''),
98
+ applicableSections: deepAccess(bidderRequest, 'gppConsent.applicableSections') ||
99
+ deepAccess(bidderRequest, 'ortb2.regs.gpp_sid', []),
100
+ },
101
+ },
102
+ config: {
103
+ api_key: bid.params.apiKey
104
+ },
105
+ // Cast boolean in any case (value should be 0 or 1) to ensure type
106
+ coppa: !!deepAccess(bidderRequest, 'ortb2.regs.coppa'),
107
+ request: {
108
+ adUnitCode: bid.adUnitCode || '',
109
+ auctionId: bid.auctionId || '',
110
+ bidId: bid.bidId || '',
111
+ mediaTypes: {
112
+ video: {
113
+ playerSize: bid.mediaTypes?.[VIDEO]?.playerSize || [],
114
+ api: bid.mediaTypes?.[VIDEO]?.api || [],
115
+ startDelay: bid.mediaTypes?.[VIDEO]?.startdelay || 0,
116
+ },
117
+ },
118
+ sizes: bid.sizes || [],
119
+ },
120
+ video_metadata: getVideoMetadata(bid, bidderRequest),
121
+ },
122
+ options: {
123
+ withCredentials: true,
124
+ crossOrigin: true,
125
+ },
126
+ })),
127
+
128
+ /**
129
+ * Map the response from the server into a list of bids.
130
+ * As dailymotion prebid server returns an entry with the correct Prebid structure,
131
+ * we directly include it as the only bid in the response.
132
+ *
133
+ * @param {*} serverResponse A successful response from the server.
134
+ * @return {Bid[]} An array of bids which were nested inside the server.
135
+ */
136
+ interpretResponse: serverResponse => serverResponse?.body ? [serverResponse.body] : [],
137
+ };
138
+
139
+ registerBidder(spec);
@@ -0,0 +1,140 @@
1
+ # Overview
2
+
3
+ ```
4
+ Module Name: Dailymotion Bid Adapter
5
+ Module Type: Bidder Adapter
6
+ Maintainer: ad-leo-engineering@dailymotion.com
7
+ ```
8
+
9
+ # Description
10
+
11
+ Dailymotion prebid adapter.
12
+
13
+ # Configuration options
14
+
15
+ Before calling this adapter, you need to set at least the API key in the bid parameters:
16
+
17
+ ```javascript
18
+ const adUnits = [
19
+ {
20
+ bids: [{
21
+ bidder: 'dailymotion',
22
+ params: {
23
+ apiKey: 'fake_api_key'
24
+ }
25
+ }]
26
+ }
27
+ ];
28
+ ```
29
+
30
+ `apiKey` is your publisher API key. For testing purpose, you can use "dailymotion-testing".
31
+
32
+ # Test Parameters
33
+
34
+ By setting the following bid parameters, you'll get a constant response to any request, to validate your adapter integration:
35
+
36
+ ```javascript
37
+ const adUnits = [
38
+ {
39
+ bids: [{
40
+ bidder: 'dailymotion',
41
+ params: {
42
+ apiKey: 'dailymotion-testing'
43
+ }
44
+ }]
45
+ }
46
+ ];
47
+ ```
48
+
49
+ Please note that failing to set these will result in the adapter not bidding at all.
50
+
51
+ # Sample video AdUnit
52
+
53
+ To allow better targeting, you should provide as much context about the video as possible.
54
+ There are two ways of doing this depending on if you're using Dailymotion player or a third party one.
55
+
56
+ If you are using the Dailymotion player, you should only provide the video `xid` in your ad unit, example:
57
+
58
+ ```javascript
59
+ const adUnits = [
60
+ {
61
+ bids: [{
62
+ bidder: 'dailymotion',
63
+ params: {
64
+ apiKey: 'dailymotion-testing'
65
+ }
66
+ }],
67
+ code: 'test-ad-unit',
68
+ mediaTypes: {
69
+ video: {
70
+ api: [2, 7],
71
+ context: 'instream',
72
+ playerSize: [ [1280, 720] ],
73
+ startDelay: 0,
74
+ xid: 'x123456' // Dailymotion infrastructure unique video ID
75
+ },
76
+ }
77
+ }
78
+ ];
79
+ ```
80
+
81
+ This will automatically fetch the most up-to-date information about the video.
82
+ If you provide any other metadata in addition to the `xid`, they will be ignored.
83
+
84
+ If you are using a third party video player, you should not provide any `xid` and instead fill the following members:
85
+
86
+ ```javascript
87
+ const adUnits = [
88
+ {
89
+ bids: [{
90
+ bidder: 'dailymotion',
91
+ params: {
92
+ apiKey: 'dailymotion-testing',
93
+ video: {
94
+ description: 'overriden video description'
95
+ }
96
+ }
97
+ }],
98
+ code: 'test-ad-unit',
99
+ mediaTypes: {
100
+ video: {
101
+ api: [2, 7],
102
+ context: 'instream',
103
+ description: 'this is a video description',
104
+ duration: 556,
105
+ iabcat2: ['6', '17'],
106
+ id: '54321',
107
+ lang: 'FR',
108
+ playerSize: [ [1280, 720] ],
109
+ private: false,
110
+ startDelay: 0,
111
+ tags: 'tag_1,tag_2,tag_3',
112
+ title: 'test video',
113
+ topics: 'topic_1, topic_2',
114
+ },
115
+ }
116
+ }
117
+ ];
118
+ ```
119
+
120
+ Each of the following video metadata fields can be added in mediaTypes.video or bids.params.video.
121
+ If a field exists in both places, it will be overridden by bids.params.video.
122
+
123
+ * `description` - Video description
124
+ * `duration` - Video duration in seconds
125
+ * `iabcat2` - List of IAB category IDs from the [2.0 taxonomy](https://github.com/InteractiveAdvertisingBureau/Taxonomies/blob/main/Content%20Taxonomies/Content%20Taxonomy%202.0.tsv)
126
+ * `id` - Video unique ID in host video infrastructure
127
+ * `lang` - ISO 639-1 code for main language used in the video
128
+ * `private` - True if video is not publicly available
129
+ * `tags` - Tags for the video, comma separated
130
+ * `title` - Video title
131
+ * `topics` - Main topics for the video, comma separated
132
+ * `xid` - Dailymotion video identifier (only applicable if using the Dailymotion player)
133
+
134
+ # Integrating the adapter
135
+
136
+ To use the adapter with any non-test request, you first need to ask an API key from Dailymotion. Please contact us through **DailymotionPrebid.js@dailymotion.com**.
137
+
138
+ You will then be able to use it within the bid parameters before making a bid request.
139
+
140
+ This API key will ensure proper identification of your inventory and allow you to get real bids.
@@ -12,7 +12,7 @@ import { Renderer } from '../src/Renderer.js';
12
12
  import { registerBidder } from '../src/adapters/bidderFactory.js';
13
13
  import { createBid } from '../src/bidfactory.js';
14
14
  import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
15
- import CONSTANTS from '../src/constants.json';
15
+ import { STATUS } from '../src/constants.js';
16
16
  import { OUTSTREAM, INSTREAM } from '../src/video.js';
17
17
 
18
18
  /**
@@ -416,7 +416,7 @@ function buildBannerResponse(bidRequest, bidResponse) {
416
416
  if (bidRequest) {
417
417
  let bidResponse = createBid(1);
418
418
  placementCode = bidRequest.placementCode;
419
- bidRequest.status = CONSTANTS.STATUS.GOOD;
419
+ bidRequest.status = STATUS.GOOD;
420
420
  responseCPM = parseFloat(bidderBid.price);
421
421
  if (responseCPM === 0 || isNaN(responseCPM)) {
422
422
  let bid = createBid(2);
@@ -457,7 +457,7 @@ function buildNativeResponse(bidRequest, response) {
457
457
  if (bidRequest) {
458
458
  let bidResponse = createBid(1);
459
459
  placementCode = bidRequest.placementCode;
460
- bidRequest.status = CONSTANTS.STATUS.GOOD;
460
+ bidRequest.status = STATUS.GOOD;
461
461
  responseCPM = parseFloat(bidderBid.price);
462
462
  if (responseCPM === 0 || isNaN(responseCPM)) {
463
463
  let bid = createBid(2);
@@ -506,7 +506,7 @@ function buildVideoResponse(bidRequest, response) {
506
506
  if (bidRequest) {
507
507
  let bidResponse = createBid(1);
508
508
  placementCode = bidRequest.placementCode;
509
- bidRequest.status = CONSTANTS.STATUS.GOOD;
509
+ bidRequest.status = STATUS.GOOD;
510
510
  responseCPM = parseFloat(bidderBid.price);
511
511
  if (responseCPM === 0 || isNaN(responseCPM)) {
512
512
  let bid = createBid(2);
@@ -1,5 +1,5 @@
1
1
  import {deepClone, delayExecution} from '../../src/utils.js';
2
- import CONSTANTS from '../../src/constants.json';
2
+ import { STATUS } from '../../src/constants.js';
3
3
 
4
4
  export function makePbsInterceptor({createBid}) {
5
5
  return function pbsBidInterceptor(next, interceptBids, s2sBidRequest, bidRequests, ajax, {
@@ -17,7 +17,7 @@ export function makePbsInterceptor({createBid}) {
17
17
  function addBid(bid, bidRequest) {
18
18
  onBid({
19
19
  adUnit: bidRequest.adUnitCode,
20
- bid: Object.assign(createBid(CONSTANTS.STATUS.GOOD, bidRequest), bid)
20
+ bid: Object.assign(createBid(STATUS.GOOD, bidRequest), bid)
21
21
  })
22
22
  }
23
23
  bidRequests = bidRequests
@@ -20,7 +20,7 @@ import {getHook, submodule} from '../src/hook.js';
20
20
  import {auctionManager} from '../src/auctionManager.js';
21
21
  import {gdprDataHandler} from '../src/adapterManager.js';
22
22
  import * as events from '../src/events.js';
23
- import CONSTANTS from '../src/constants.json';
23
+ import { EVENTS } from '../src/constants.js';
24
24
  import {getPPID} from '../src/adserver.js';
25
25
  import {getRefererInfo} from '../src/refererDetection.js';
26
26
  import {CLIENT_SECTIONS} from '../src/fpd/oneClient.js';
@@ -360,7 +360,7 @@ function getCustParams(bid, options, urlCustParams) {
360
360
  );
361
361
 
362
362
  // TODO: WTF is this? just firing random events, guessing at the argument, hoping noone notices?
363
- events.emit(CONSTANTS.EVENTS.SET_TARGETING, {[adUnit.code]: prebidTargetingSet});
363
+ events.emit(EVENTS.SET_TARGETING, {[adUnit.code]: prebidTargetingSet});
364
364
 
365
365
  // merge the prebid + publisher targeting sets
366
366
  const publisherTargetingSet = deepAccess(options, 'params.cust_params');