prebid.js 7.43.0 → 7.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 (503) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/acuityAdsBidAdapter.js +1 -1
  4. package/dist/adagioBidAdapter.js +1 -1
  5. package/dist/adbookpspBidAdapter.js +1 -1
  6. package/dist/adgenerationBidAdapter.js +1 -1
  7. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  8. package/dist/admixerIdSystem.js +1 -1
  9. package/dist/adnuntiusBidAdapter.js +1 -1
  10. package/dist/adqueryBidAdapter.js +1 -1
  11. package/dist/adqueryIdSystem.js +1 -1
  12. package/dist/adrelevantisBidAdapter.js +1 -1
  13. package/dist/adrinoBidAdapter.js +1 -1
  14. package/dist/adriverIdSystem.js +1 -1
  15. package/dist/adsinteractiveBidAdapter.js +1 -0
  16. package/dist/adtrgtmeBidAdapter.js +1 -1
  17. package/dist/adxcgBidAdapter.js +1 -1
  18. package/dist/adyoulikeBidAdapter.js +1 -1
  19. package/dist/aidemBidAdapter.js +1 -1
  20. package/dist/airgridRtdProvider.js +1 -1
  21. package/dist/ajaBidAdapter.js +1 -1
  22. package/dist/akamaiDapRtdProvider.js +1 -1
  23. package/dist/amxBidAdapter.js +1 -1
  24. package/dist/amxIdSystem.js +1 -1
  25. package/dist/appierAnalyticsAdapter.js +1 -1
  26. package/dist/appnexusBidAdapter.js +1 -1
  27. package/dist/appushBidAdapter.js +1 -1
  28. package/dist/apstreamBidAdapter.js +1 -1
  29. package/dist/asoBidAdapter.js +1 -1
  30. package/dist/atsAnalyticsAdapter.js +1 -1
  31. package/dist/audiencerunBidAdapter.js +1 -1
  32. package/dist/axonixBidAdapter.js +1 -1
  33. package/dist/bedigitechBidAdapter.js +1 -0
  34. package/dist/beyondmediaBidAdapter.js +1 -1
  35. package/dist/bidglassBidAdapter.js +1 -1
  36. package/dist/big-richmediaBidAdapter.js +1 -1
  37. package/dist/bluebillywigBidAdapter.js +1 -1
  38. package/dist/blueconicRtdProvider.js +1 -1
  39. package/dist/braveBidAdapter.js +1 -1
  40. package/dist/bridgewellBidAdapter.js +1 -1
  41. package/dist/brightMountainMediaBidAdapter.js +1 -1
  42. package/dist/brightcomBidAdapter.js +1 -1
  43. package/dist/brightcomSSPBidAdapter.js +1 -1
  44. package/dist/browsiRtdProvider.js +1 -1
  45. package/dist/byDataAnalyticsAdapter.js +1 -1
  46. package/dist/carodaBidAdapter.js +1 -1
  47. package/dist/chtnwBidAdapter.js +1 -1
  48. package/dist/coinzillaBidAdapter.js +1 -1
  49. package/dist/compassBidAdapter.js +1 -1
  50. package/dist/concertBidAdapter.js +1 -1
  51. package/dist/connectIdSystem.js +1 -1
  52. package/dist/connectadBidAdapter.js +1 -1
  53. package/dist/consumableBidAdapter.js +1 -1
  54. package/dist/contentexchangeBidAdapter.js +1 -1
  55. package/dist/conversantAnalyticsAdapter.js +1 -1
  56. package/dist/conversantBidAdapter.js +1 -1
  57. package/dist/craftBidAdapter.js +1 -1
  58. package/dist/criteoBidAdapter.js +1 -1
  59. package/dist/criteoIdSystem.js +1 -1
  60. package/dist/cwireBidAdapter.js +1 -1
  61. package/dist/czechAdIdSystem.js +1 -1
  62. package/dist/dacIdSystem.js +1 -1
  63. package/dist/deepintentDpesIdSystem.js +1 -1
  64. package/dist/dependencies.json +15 -0
  65. package/dist/discoveryBidAdapter.js +1 -1
  66. package/dist/domainOverrideToRootDomain.js +1 -0
  67. package/dist/dspxBidAdapter.js +1 -1
  68. package/dist/eplanningBidAdapter.js +1 -1
  69. package/dist/feedadBidAdapter.js +1 -1
  70. package/dist/finativeBidAdapter.js +1 -1
  71. package/dist/fintezaAnalyticsAdapter.js +1 -1
  72. package/dist/fledgeForGpt.js +1 -1
  73. package/dist/freewheel-sspBidAdapter.js +1 -1
  74. package/dist/ftrackIdSystem.js +1 -1
  75. package/dist/gdprEnforcement.js +1 -1
  76. package/dist/glimpseBidAdapter.js +1 -1
  77. package/dist/globalsunBidAdapter.js +1 -1
  78. package/dist/gmosspBidAdapter.js +1 -1
  79. package/dist/gnetBidAdapter.js +1 -1
  80. package/dist/goldbachBidAdapter.js +1 -1
  81. package/dist/gravitoIdSystem.js +1 -1
  82. package/dist/greenbidsAnalyticsAdapter.js +1 -0
  83. package/dist/gridBidAdapter.js +1 -1
  84. package/dist/gridNMBidAdapter.js +1 -1
  85. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  86. package/dist/growthCodeIdSystem.js +1 -1
  87. package/dist/gumgumBidAdapter.js +1 -1
  88. package/dist/h12mediaBidAdapter.js +1 -1
  89. package/dist/hadronAnalyticsAdapter.js +1 -1
  90. package/dist/hadronIdSystem.js +1 -1
  91. package/dist/hadronRtdProvider.js +1 -1
  92. package/dist/id5IdSystem.js +1 -1
  93. package/dist/idWardRtdProvider.js +1 -1
  94. package/dist/identityLinkIdSystem.js +1 -1
  95. package/dist/idxIdSystem.js +1 -1
  96. package/dist/imRtdProvider.js +1 -1
  97. package/dist/impactifyBidAdapter.js +1 -1
  98. package/dist/improvedigitalBidAdapter.js +1 -1
  99. package/dist/imuIdSystem.js +1 -1
  100. package/dist/inmarBidAdapter.js +1 -1
  101. package/dist/insticatorBidAdapter.js +1 -1
  102. package/dist/intentIqIdSystem.js +1 -1
  103. package/dist/invibesBidAdapter.js +1 -1
  104. package/dist/iqzoneBidAdapter.js +1 -1
  105. package/dist/ivsBidAdapter.js +1 -0
  106. package/dist/ixBidAdapter.js +1 -1
  107. package/dist/jixieBidAdapter.js +1 -1
  108. package/dist/justpremiumBidAdapter.js +1 -1
  109. package/dist/jwplayerVideoProvider.js +1 -1
  110. package/dist/kargoBidAdapter.js +1 -1
  111. package/dist/koblerBidAdapter.js +1 -1
  112. package/dist/konduitAnalyticsAdapter.js +1 -1
  113. package/dist/kueezBidAdapter.js +1 -1
  114. package/dist/kueezRtbBidAdapter.js +1 -1
  115. package/dist/kulturemediaBidAdapter.js +1 -1
  116. package/dist/lassoBidAdapter.js +1 -1
  117. package/dist/lifestreetBidAdapter.js +1 -1
  118. package/dist/liveIntentIdSystem.js +1 -1
  119. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  120. package/dist/logicadBidAdapter.js +1 -1
  121. package/dist/loglyliftBidAdapter.js +1 -1
  122. package/dist/lotamePanoramaIdSystem.js +1 -1
  123. package/dist/luponmediaBidAdapter.js +1 -1
  124. package/dist/magniteAnalyticsAdapter.js +1 -1
  125. package/dist/malltvAnalyticsAdapter.js +1 -1
  126. package/dist/marsmediaBidAdapter.js +1 -1
  127. package/dist/mathildeadsBidAdapter.js +1 -1
  128. package/dist/mediafuseBidAdapter.js +1 -1
  129. package/dist/mediagoBidAdapter.js +1 -1
  130. package/dist/mediakeysBidAdapter.js +1 -1
  131. package/dist/medianetBidAdapter.js +1 -1
  132. package/dist/mediasquareBidAdapter.js +1 -1
  133. package/dist/merkleIdSystem.js +1 -1
  134. package/dist/mgidBidAdapter.js +1 -1
  135. package/dist/mgidRtdProvider.js +1 -1
  136. package/dist/minutemediaBidAdapter.js +1 -1
  137. package/dist/minutemediaplusBidAdapter.js +1 -1
  138. package/dist/mwOpenLinkIdSystem.js +1 -1
  139. package/dist/naveggIdSystem.js +1 -1
  140. package/dist/nexx360BidAdapter.js +1 -1
  141. package/dist/nobidBidAdapter.js +1 -1
  142. package/dist/not-for-prod/prebid.js +232 -227
  143. package/dist/novatiqIdSystem.js +1 -1
  144. package/dist/oguryBidAdapter.js +1 -1
  145. package/dist/onetagBidAdapter.js +1 -1
  146. package/dist/onomagicBidAdapter.js +1 -1
  147. package/dist/ooloAnalyticsAdapter.js +1 -1
  148. package/dist/openxBidAdapter.js +1 -1
  149. package/dist/openxOrtbBidAdapter.js +1 -1
  150. package/dist/operaadsBidAdapter.js +1 -1
  151. package/dist/optidigitalBidAdapter.js +1 -1
  152. package/dist/ortbConverter.js +1 -1
  153. package/dist/outbrainBidAdapter.js +1 -1
  154. package/dist/parrableIdSystem.js +1 -1
  155. package/dist/permutiveRtdProvider.js +1 -1
  156. package/dist/pixfutureBidAdapter.js +1 -1
  157. package/dist/prebid-core.js +1 -1
  158. package/dist/prebidServerBidAdapter.js +1 -1
  159. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  160. package/dist/pubCommonId.js +1 -1
  161. package/dist/publinkIdSystem.js +1 -1
  162. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  163. package/dist/pubmaticBidAdapter.js +1 -1
  164. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  165. package/dist/pubxBidAdapter.js +1 -1
  166. package/dist/pxyzBidAdapter.js +1 -1
  167. package/dist/quantcastBidAdapter.js +1 -1
  168. package/dist/quantcastIdSystem.js +1 -1
  169. package/dist/readpeakBidAdapter.js +1 -1
  170. package/dist/realvuAnalyticsAdapter.js +1 -1
  171. package/dist/relaidoBidAdapter.js +1 -1
  172. package/dist/rhythmoneBidAdapter.js +1 -1
  173. package/dist/riseBidAdapter.js +1 -1
  174. package/dist/roxotAnalyticsAdapter.js +1 -1
  175. package/dist/rtbhouseBidAdapter.js +1 -1
  176. package/dist/rtdModule.js +1 -1
  177. package/dist/rubiconAnalyticsAdapter.js +1 -1
  178. package/dist/rubiconBidAdapter.js +1 -1
  179. package/dist/seedingAllianceBidAdapter.js +1 -1
  180. package/dist/seedtagBidAdapter.js +1 -1
  181. package/dist/sharedIdSystem.js +1 -1
  182. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  183. package/dist/sharethroughBidAdapter.js +1 -1
  184. package/dist/shinezBidAdapter.js +1 -1
  185. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  186. package/dist/smaatoBidAdapter.js +1 -1
  187. package/dist/smartadserverBidAdapter.js +1 -1
  188. package/dist/smarthubBidAdapter.js +1 -1
  189. package/dist/smartxBidAdapter.js +1 -1
  190. package/dist/smilewantedBidAdapter.js +1 -1
  191. package/dist/sonobiBidAdapter.js +1 -1
  192. package/dist/sovrnAnalyticsAdapter.js +1 -1
  193. package/dist/sovrnBidAdapter.js +1 -1
  194. package/dist/sspBCBidAdapter.js +1 -1
  195. package/dist/staqAnalyticsAdapter.js +1 -1
  196. package/dist/stroeerCoreBidAdapter.js +1 -1
  197. package/dist/stvBidAdapter.js +1 -1
  198. package/dist/sublimeBidAdapter.js +1 -1
  199. package/dist/synacormediaBidAdapter.js +1 -1
  200. package/dist/taboolaBidAdapter.js +1 -1
  201. package/dist/targetVideoBidAdapter.js +1 -1
  202. package/dist/teadsBidAdapter.js +1 -1
  203. package/dist/teadsIdSystem.js +1 -1
  204. package/dist/trionBidAdapter.js +1 -1
  205. package/dist/tripleliftBidAdapter.js +1 -1
  206. package/dist/truereachBidAdapter.js +1 -1
  207. package/dist/trustpidSystem.js +1 -1
  208. package/dist/ttdBidAdapter.js +1 -1
  209. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  210. package/dist/uid2IdSystem.js +1 -1
  211. package/dist/underdogmediaBidAdapter.js +1 -1
  212. package/dist/undertoneBidAdapter.js +1 -1
  213. package/dist/userId.js +1 -1
  214. package/dist/validationFpdModule.js +1 -1
  215. package/dist/vidazooBidAdapter.js +1 -1
  216. package/dist/videobyteBidAdapter.js +1 -1
  217. package/dist/videoheroesBidAdapter.js +1 -1
  218. package/dist/vidoomyBidAdapter.js +1 -1
  219. package/dist/visiblemeasuresBidAdapter.js +1 -1
  220. package/dist/visxBidAdapter.js +1 -1
  221. package/dist/vrtcalBidAdapter.js +1 -1
  222. package/dist/vuukleBidAdapter.js +1 -1
  223. package/dist/weboramaRtdProvider.js +1 -1
  224. package/dist/widespaceBidAdapter.js +1 -1
  225. package/dist/winrBidAdapter.js +1 -1
  226. package/dist/yahoosspBidAdapter.js +1 -1
  227. package/dist/yieldmoBidAdapter.js +1 -1
  228. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  229. package/dist/yieldoneBidAdapter.js +1 -1
  230. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  231. package/dist/zeotapIdPlusIdSystem.js +1 -1
  232. package/dist/zeta_global_sspBidAdapter.js +1 -1
  233. package/libraries/domainOverrideToRootDomain/index.js +39 -0
  234. package/libraries/ortbConverter/converter.js +3 -2
  235. package/modules/33acrossIdSystem.js +5 -2
  236. package/modules/acuityAdsBidAdapter.js +1 -1
  237. package/modules/adagioBidAdapter.js +3 -4
  238. package/modules/adkernelAdnAnalyticsAdapter.js +4 -2
  239. package/modules/admixerIdSystem.js +4 -2
  240. package/modules/adnuntiusBidAdapter.js +1 -1
  241. package/modules/adqueryBidAdapter.js +1 -1
  242. package/modules/adqueryIdSystem.js +2 -1
  243. package/modules/adrinoBidAdapter.js +24 -16
  244. package/modules/adriverIdSystem.js +3 -2
  245. package/modules/adsinteractiveBidAdapter.js +144 -0
  246. package/modules/adsinteractiveBidAdapter.md +31 -0
  247. package/modules/adyoulikeBidAdapter.js +2 -3
  248. package/modules/aidemBidAdapter.js +5 -0
  249. package/modules/airgridRtdProvider.js +4 -2
  250. package/modules/ajaBidAdapter.js +38 -16
  251. package/modules/akamaiDapRtdProvider.js +2 -1
  252. package/modules/amxBidAdapter.js +12 -10
  253. package/modules/amxIdSystem.js +23 -20
  254. package/modules/amxIdSystem.md +7 -7
  255. package/modules/appnexusBidAdapter.js +8 -8
  256. package/modules/appushBidAdapter.js +1 -1
  257. package/modules/apstreamBidAdapter.js +1 -1
  258. package/modules/atsAnalyticsAdapter.js +4 -2
  259. package/modules/audiencerunBidAdapter.js +9 -10
  260. package/modules/bedigitechBidAdapter.js +67 -0
  261. package/modules/bedigitechBidAdapter.md +32 -0
  262. package/modules/beyondmediaBidAdapter.js +1 -1
  263. package/modules/bluebillywigBidAdapter.js +2 -4
  264. package/modules/blueconicRtdProvider.js +2 -1
  265. package/modules/braveBidAdapter.js +1 -1
  266. package/modules/brightcomBidAdapter.js +1 -2
  267. package/modules/brightcomSSPBidAdapter.js +1 -2
  268. package/modules/browsiRtdProvider.js +4 -2
  269. package/modules/byDataAnalyticsAdapter.js +6 -3
  270. package/modules/coinzillaBidAdapter.js +1 -2
  271. package/modules/compassBidAdapter.js +1 -1
  272. package/modules/concertBidAdapter.js +14 -7
  273. package/modules/connectIdSystem.js +96 -21
  274. package/modules/connectIdSystem.md +6 -5
  275. package/modules/connectadBidAdapter.js +2 -4
  276. package/modules/contentexchangeBidAdapter.js +1 -1
  277. package/modules/craftBidAdapter.js +29 -24
  278. package/modules/criteoBidAdapter.js +4 -2
  279. package/modules/criteoIdSystem.js +6 -2
  280. package/modules/czechAdIdSystem.js +3 -2
  281. package/modules/dacIdSystem.js +4 -3
  282. package/modules/deepintentDpesIdSystem.js +3 -2
  283. package/modules/discoveryBidAdapter.js +1 -1
  284. package/modules/dspxBidAdapter.js +223 -15
  285. package/modules/fintezaAnalyticsAdapter.js +5 -3
  286. package/modules/fledgeForGpt.js +54 -6
  287. package/modules/freewheel-sspBidAdapter.js +8 -0
  288. package/modules/ftrackIdSystem.js +6 -6
  289. package/modules/gdprEnforcement.js +56 -68
  290. package/modules/glimpseBidAdapter.js +2 -6
  291. package/modules/globalsunBidAdapter.js +1 -1
  292. package/modules/gnetBidAdapter.js +1 -2
  293. package/modules/gravitoIdSystem.js +5 -3
  294. package/modules/greenbidsAnalyticsAdapter.js +181 -0
  295. package/modules/greenbidsAnalyticsAdapter.md +23 -0
  296. package/modules/gridBidAdapter.js +14 -8
  297. package/modules/gridNMBidAdapter.js +1 -1
  298. package/modules/growthCodeAnalyticsAdapter.js +3 -2
  299. package/modules/growthCodeIdSystem.js +21 -17
  300. package/modules/gumgumBidAdapter.js +8 -18
  301. package/modules/hadronAnalyticsAdapter.js +5 -3
  302. package/modules/hadronIdSystem.js +3 -1
  303. package/modules/hadronRtdProvider.js +4 -2
  304. package/modules/id5IdSystem.js +4 -2
  305. package/modules/idWardRtdProvider.js +2 -1
  306. package/modules/identityLinkIdSystem.js +5 -2
  307. package/modules/idxIdSystem.js +3 -2
  308. package/modules/imRtdProvider.js +3 -1
  309. package/modules/impactifyBidAdapter.js +2 -4
  310. package/modules/imuIdSystem.js +6 -3
  311. package/modules/insticatorBidAdapter.js +1 -1
  312. package/modules/intentIqIdSystem.js +3 -2
  313. package/modules/invibesBidAdapter.js +1 -1
  314. package/modules/iqzoneBidAdapter.js +1 -1
  315. package/modules/ivsBidAdapter.js +85 -0
  316. package/modules/ivsBidAdapter.md +34 -0
  317. package/modules/ixBidAdapter.js +43 -106
  318. package/modules/jixieBidAdapter.js +3 -6
  319. package/modules/jwplayerVideoProvider.js +25 -32
  320. package/modules/kargoBidAdapter.js +1 -1
  321. package/modules/koblerBidAdapter.js +1 -2
  322. package/modules/kueezBidAdapter.js +1 -1
  323. package/modules/kueezRtbBidAdapter.js +1 -1
  324. package/modules/liveIntentIdSystem.js +11 -2
  325. package/modules/lotamePanoramaIdSystem.js +3 -2
  326. package/modules/luponmediaBidAdapter.js +1 -1
  327. package/modules/magniteAnalyticsAdapter.js +101 -9
  328. package/modules/mathildeadsBidAdapter.js +1 -1
  329. package/modules/mediafuseBidAdapter.js +1 -1
  330. package/modules/mediagoBidAdapter.js +1 -1
  331. package/modules/mediakeysBidAdapter.js +2 -3
  332. package/modules/medianetBidAdapter.js +1 -1
  333. package/modules/merkleIdSystem.js +2 -1
  334. package/modules/mgidBidAdapter.js +179 -27
  335. package/modules/mgidRtdProvider.js +3 -1
  336. package/modules/minutemediaBidAdapter.js +1 -1
  337. package/modules/minutemediaplusBidAdapter.js +1 -1
  338. package/modules/mwOpenLinkIdSystem.js +3 -2
  339. package/modules/naveggIdSystem.js +3 -2
  340. package/modules/nexx360BidAdapter.js +0 -1
  341. package/modules/nobidBidAdapter.js +1 -1
  342. package/modules/novatiqIdSystem.js +6 -3
  343. package/modules/oguryBidAdapter.js +3 -2
  344. package/modules/onetagBidAdapter.js +1 -1
  345. package/modules/onomagicBidAdapter.js +1 -2
  346. package/modules/openxBidAdapter.js +192 -563
  347. package/modules/openxBidAdapter.md +22 -20
  348. package/modules/openxOrtbBidAdapter.js +24 -10
  349. package/modules/openxOrtbBidAdapter.md +11 -8
  350. package/modules/operaadsBidAdapter.js +1 -1
  351. package/modules/parrableIdSystem.js +4 -2
  352. package/modules/permutiveRtdProvider.js +2 -1
  353. package/modules/prebidServerBidAdapter/index.js +9 -3
  354. package/modules/prebidServerBidAdapter/ortbConverter.js +12 -2
  355. package/modules/prebidmanagerAnalyticsAdapter.js +3 -2
  356. package/modules/pubCommonId.js +6 -3
  357. package/modules/publinkIdSystem.js +2 -1
  358. package/modules/pubmaticAnalyticsAdapter.js +12 -1
  359. package/modules/pubmaticBidAdapter.js +193 -223
  360. package/modules/pubwiseAnalyticsAdapter.js +5 -3
  361. package/modules/pubxBidAdapter.js +5 -2
  362. package/modules/quantcastBidAdapter.js +1 -1
  363. package/modules/quantcastIdSystem.js +5 -3
  364. package/modules/realvuAnalyticsAdapter.js +6 -3
  365. package/modules/riseBidAdapter.js +1 -1
  366. package/modules/roxotAnalyticsAdapter.js +5 -2
  367. package/modules/rtbhouseBidAdapter.js +5 -3
  368. package/modules/rtdModule/index.js +3 -0
  369. package/modules/rubiconAnalyticsAdapter.js +3 -2
  370. package/modules/rubiconBidAdapter.js +1 -0
  371. package/modules/sharedIdSystem.js +16 -36
  372. package/modules/sharethroughBidAdapter.js +2 -3
  373. package/modules/shinezBidAdapter.js +1 -1
  374. package/modules/sigmoidAnalyticsAdapter.js +4 -2
  375. package/modules/smartadserverBidAdapter.js +2 -3
  376. package/modules/smarthubBidAdapter.js +1 -1
  377. package/modules/sovrnBidAdapter.js +2 -3
  378. package/modules/staqAnalyticsAdapter.js +5 -3
  379. package/modules/stroeerCoreBidAdapter.js +3 -2
  380. package/modules/synacormediaBidAdapter.js +1 -3
  381. package/modules/taboolaBidAdapter.js +4 -2
  382. package/modules/teadsBidAdapter.js +1 -1
  383. package/modules/teadsIdSystem.js +2 -1
  384. package/modules/tripleliftBidAdapter.js +1 -1
  385. package/modules/truereachBidAdapter.js +1 -2
  386. package/modules/trustpidSystem.js +3 -2
  387. package/modules/ttdBidAdapter.js +11 -5
  388. package/modules/uid2IdSystem.js +3 -2
  389. package/modules/undertoneBidAdapter.js +1 -0
  390. package/modules/userId/eids.js +18 -0
  391. package/modules/userId/eids.md +16 -0
  392. package/modules/userId/index.js +5 -2
  393. package/modules/validationFpdModule/index.js +3 -2
  394. package/modules/vidazooBidAdapter.js +14 -5
  395. package/modules/videoheroesBidAdapter.js +1 -1
  396. package/modules/vidoomyBidAdapter.js +51 -2
  397. package/modules/visiblemeasuresBidAdapter.js +1 -1
  398. package/modules/vrtcalBidAdapter.js +1 -1
  399. package/modules/weboramaRtdProvider.js +3 -1
  400. package/modules/yieldmoBidAdapter.js +2 -3
  401. package/modules/yieldoneBidAdapter.js +1 -1
  402. package/modules/yuktamediaAnalyticsAdapter.js +4 -2
  403. package/modules/zeotapIdPlusIdSystem.js +3 -2
  404. package/modules/zeta_global_sspBidAdapter.js +3 -0
  405. package/package.json +1 -1
  406. package/plugins/eslint/validateImports.js +13 -14
  407. package/plugins/pbjsGlobals.js +3 -1
  408. package/src/Renderer.js +2 -1
  409. package/src/activities/modules.js +5 -0
  410. package/src/adapterManager.js +4 -8
  411. package/src/adapters/bidderFactory.js +30 -16
  412. package/src/consentHandler.js +42 -0
  413. package/src/native.js +5 -1
  414. package/src/refererDetection.js +39 -21
  415. package/src/secureCreatives.js +2 -2
  416. package/src/storageManager.js +33 -47
  417. package/src/userSync.js +7 -4
  418. package/test/spec/auctionmanager_spec.js +2 -2
  419. package/test/spec/libraries/domainOverrideToRootDomain/index_spec.js +77 -0
  420. package/test/spec/modules/33acrossIdSystem_spec.js +1 -1
  421. package/test/spec/modules/acuityAdsBidAdapter_spec.js +2 -1
  422. package/test/spec/modules/adagioBidAdapter_spec.js +11 -17
  423. package/test/spec/modules/admixerIdSystem_spec.js +0 -3
  424. package/test/spec/modules/adnuntiusBidAdapter_spec.js +6 -6
  425. package/test/spec/modules/adrinoBidAdapter_spec.js +65 -34
  426. package/test/spec/modules/adsinteractiveBidAdapter_spec.js +207 -0
  427. package/test/spec/modules/adyoulikeBidAdapter_spec.js +13 -11
  428. package/test/spec/modules/aidemBidAdapter_spec.js +72 -8
  429. package/test/spec/modules/amxBidAdapter_spec.js +4 -1
  430. package/test/spec/modules/amxIdSystem_spec.js +13 -26
  431. package/test/spec/modules/appushBidAdapter_spec.js +2 -1
  432. package/test/spec/modules/atsAnalyticsAdapter_spec.js +2 -2
  433. package/test/spec/modules/audiencerunBidAdapter_spec.js +8 -11
  434. package/test/spec/modules/bedigitechBidAdapter_spec.js +145 -0
  435. package/test/spec/modules/beyondmediaBidAdapter_spec.js +2 -1
  436. package/test/spec/modules/bluebillywigBidAdapter_spec.js +1 -3
  437. package/test/spec/modules/compassBidAdapter_spec.js +2 -1
  438. package/test/spec/modules/concertBidAdapter_spec.js +3 -8
  439. package/test/spec/modules/connectIdSystem_spec.js +420 -242
  440. package/test/spec/modules/connectadBidAdapter_spec.js +11 -3
  441. package/test/spec/modules/contentexchangeBidAdapter_spec.js +2 -1
  442. package/test/spec/modules/criteoBidAdapter_spec.js +29 -0
  443. package/test/spec/modules/criteoIdSystem_spec.js +38 -0
  444. package/test/spec/modules/datablocksBidAdapter_spec.js +0 -1
  445. package/test/spec/modules/dspxBidAdapter_spec.js +184 -13
  446. package/test/spec/modules/eids_spec.js +30 -0
  447. package/test/spec/modules/fledge_spec.js +173 -2
  448. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +37 -0
  449. package/test/spec/modules/gdprEnforcement_spec.js +134 -164
  450. package/test/spec/modules/globalsunBidAdapter_spec.js +2 -1
  451. package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +418 -0
  452. package/test/spec/modules/gridBidAdapter_spec.js +9 -5
  453. package/test/spec/modules/growthCodeIdSystem_spec.js +2 -1
  454. package/test/spec/modules/id5IdSystem_spec.js +41 -4
  455. package/test/spec/modules/identityLinkIdSystem_spec.js +2 -2
  456. package/test/spec/modules/improvedigitalBidAdapter_spec.js +10 -3
  457. package/test/spec/modules/iqzoneBidAdapter_spec.js +2 -1
  458. package/test/spec/modules/ivsBidAdapter_spec.js +197 -0
  459. package/test/spec/modules/ixBidAdapter_spec.js +84 -71
  460. package/test/spec/modules/jixieBidAdapter_spec.js +42 -60
  461. package/test/spec/modules/koblerBidAdapter_spec.js +0 -20
  462. package/test/spec/modules/liveIntentIdSystem_spec.js +10 -0
  463. package/test/spec/modules/luponmediaBidAdapter_spec.js +1 -1
  464. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +129 -1
  465. package/test/spec/modules/mathildeadsBidAdapter_spec.js +2 -1
  466. package/test/spec/modules/mediakeysBidAdapter_spec.js +12 -16
  467. package/test/spec/modules/mgidBidAdapter_spec.js +184 -36
  468. package/test/spec/modules/oguryBidAdapter_spec.js +19 -4
  469. package/test/spec/modules/openxBidAdapter_spec.js +1157 -1936
  470. package/test/spec/modules/openxOrtbBidAdapter_spec.js +108 -50
  471. package/test/spec/modules/prebidServerBidAdapter_spec.js +68 -2
  472. package/test/spec/modules/publinkIdSystem_spec.js +3 -2
  473. package/test/spec/modules/pubmaticBidAdapter_spec.js +67 -10
  474. package/test/spec/modules/pubxBidAdapter_spec.js +10 -2
  475. package/test/spec/modules/realTimeDataModule_spec.js +22 -0
  476. package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -1
  477. package/test/spec/modules/relaidoBidAdapter_spec.js +5 -5
  478. package/test/spec/modules/rubiconBidAdapter_spec.js +2 -1
  479. package/test/spec/modules/sharedIdSystem_spec.js +0 -46
  480. package/test/spec/modules/sharethroughBidAdapter_spec.js +99 -22
  481. package/test/spec/modules/smartadserverBidAdapter_spec.js +74 -12
  482. package/test/spec/modules/smarthubBidAdapter_spec.js +2 -1
  483. package/test/spec/modules/sovrnBidAdapter_spec.js +25 -6
  484. package/test/spec/modules/stroeerCoreBidAdapter_spec.js +13 -18
  485. package/test/spec/modules/synacormediaBidAdapter_spec.js +0 -26
  486. package/test/spec/modules/taboolaBidAdapter_spec.js +101 -0
  487. package/test/spec/modules/ttdBidAdapter_spec.js +25 -7
  488. package/test/spec/modules/userId_spec.js +68 -0
  489. package/test/spec/modules/vidazooBidAdapter_spec.js +13 -0
  490. package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +17 -4
  491. package/test/spec/modules/vidoomyBidAdapter_spec.js +68 -0
  492. package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +2 -1
  493. package/test/spec/modules/vrtcalBidAdapter_spec.js +3 -2
  494. package/test/spec/modules/yieldmoBidAdapter_spec.js +18 -2
  495. package/test/spec/modules/zeotapIdPlusIdSystem_spec.js +3 -2
  496. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +8 -0
  497. package/test/spec/refererDetection_spec.js +56 -1
  498. package/test/spec/renderer_spec.js +1 -2
  499. package/test/spec/unit/core/adapterManager_spec.js +21 -58
  500. package/test/spec/unit/core/bidderFactory_spec.js +28 -10
  501. package/test/spec/unit/core/consentHandler_spec.js +29 -1
  502. package/test/spec/unit/core/storageManager_spec.js +31 -21
  503. package/test/spec/userSync_spec.js +2 -1
@@ -46,9 +46,17 @@ describe('ConnectAd Adapter', function () {
46
46
  auctionId: 'e76cbb58-f3e1-4ad9-9f4c-718c1919d0df',
47
47
  bidderRequestId: '1c56ad30b9b8ca8',
48
48
  transactionId: 'e76cbb58-f3e1-4ad9-9f4c-718c1919d0df',
49
- userId: {
50
- tdid: '123456'
51
- }
49
+ userIdAsEids: [
50
+ {
51
+ 'source': 'pubcid.org',
52
+ 'uids': [
53
+ {
54
+ 'atype': 1,
55
+ 'id': '123456'
56
+ }
57
+ ]
58
+ }
59
+ ]
52
60
  }];
53
61
 
54
62
  bidderRequest = {
@@ -79,7 +79,8 @@ describe('ContentexchangeBidAdapter', function () {
79
79
  gdprConsent: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
80
80
  refererInfo: {
81
81
  referer: 'https://test.com'
82
- }
82
+ },
83
+ timeout: 500
83
84
  };
84
85
 
85
86
  describe('isBidRequestValid', function () {
@@ -883,6 +883,35 @@ describe('The Criteo bidding adapter', function () {
883
883
  expect(request.data.user.uspIab).to.equal('1YNY');
884
884
  });
885
885
 
886
+ it('should properly build a request with gpp consent field', function () {
887
+ const bidRequests = [
888
+ {
889
+ bidder: 'criteo',
890
+ adUnitCode: 'bid-123',
891
+ transactionId: 'transaction-123',
892
+ mediaTypes: {
893
+ banner: {
894
+ sizes: [[728, 90]]
895
+ }
896
+ },
897
+ params: {
898
+ zoneId: 123,
899
+ },
900
+ },
901
+ ];
902
+ const ortb2 = {
903
+ regs: {
904
+ gpp: 'gpp_consent_string',
905
+ gpp_sid: [0, 1, 2]
906
+ }
907
+ };
908
+
909
+ const request = spec.buildRequests(bidRequests, { ...bidderRequest, ortb2 });
910
+ expect(request.data.regs).to.not.be.null;
911
+ expect(request.data.regs.gpp).to.equal('gpp_consent_string');
912
+ expect(request.data.regs.gpp_sid).to.deep.equal([0, 1, 2]);
913
+ });
914
+
886
915
  it('should properly build a request with schain object', function () {
887
916
  const expectedSchain = {
888
917
  someProperty: 'someValue'
@@ -185,6 +185,44 @@ describe('CriteoId module', function () {
185
185
  expect(setLocalStorageStub.calledWith('cto_pixel_test', 'ok')).to.be.true;
186
186
  });
187
187
 
188
+ it('should call sync pixels and use error handler', function () {
189
+ const expirationTs = new Date(nowTimestamp + cookiesMaxAge).toString();
190
+
191
+ const result = criteoIdSubmodule.getId();
192
+ result.callback((id) => {
193
+ });
194
+
195
+ const response = {
196
+ pixels: [
197
+ {
198
+ pixelUrl: 'pixelUrlWithBundle',
199
+ writeBundleInStorage: true,
200
+ bundlePropertyName: 'abc',
201
+ storageKeyName: 'cto_pixel_test'
202
+ }
203
+ ]
204
+ };
205
+
206
+ server.requests[0].respond(
207
+ 200,
208
+ { 'Content-Type': 'application/json' },
209
+ JSON.stringify(response)
210
+ );
211
+
212
+ server.requests[1].respond(
213
+ 500,
214
+ { 'Content-Type': 'application/json' },
215
+ JSON.stringify({
216
+ abc: 'ok'
217
+ })
218
+ );
219
+
220
+ expect(triggerPixelStub.called).to.be.false;
221
+ expect(setCookieStub.calledWith('cto_pixel_test', 'ok', expirationTs, null, '.com')).to.be.false;
222
+ expect(setCookieStub.calledWith('cto_pixel_test', 'ok', expirationTs, null, '.testdev.com')).to.be.false;
223
+ expect(setLocalStorageStub.calledWith('cto_pixel_test', 'ok')).to.be.false;
224
+ });
225
+
188
226
  gdprConsentTestCases.forEach(testCase => it('should call user sync url with the gdprConsent', function () {
189
227
  let callBackSpy = sinon.spy();
190
228
  let result = criteoIdSubmodule.getId(undefined, testCase.consentData);
@@ -2,7 +2,6 @@ import { expect } from 'chai';
2
2
  import { spec } from '../../../modules/datablocksBidAdapter.js';
3
3
  import { BotClientTests } from '../../../modules/datablocksBidAdapter.js';
4
4
  import { getStorageManager } from '../../../src/storageManager.js';
5
- export let storage = getStorageManager();
6
5
 
7
6
  const bid = {
8
7
  bidId: '2dd581a2b6281d',
@@ -1,6 +1,7 @@
1
1
  import { expect } from 'chai';
2
2
  import { spec } from 'modules/dspxBidAdapter.js';
3
3
  import { newBidder } from 'src/adapters/bidderFactory.js';
4
+ import { deepClone } from '../../../src/utils';
4
5
 
5
6
  const ENDPOINT_URL = 'https://buyer.dspx.tv/request/';
6
7
  const ENDPOINT_URL_DEV = 'https://dcbuyer.dspx.tv/request/';
@@ -65,7 +66,34 @@ describe('dspxAdapter', function () {
65
66
  'adUnitCode': 'testDiv1',
66
67
  'userId': {
67
68
  'netId': '123',
68
- 'uid2': '456'
69
+ 'uid2': {'id': '456'},
70
+ 'pubcid': 'e09ab6a3-ae74-4f01-b2e8-81b141d6dc61',
71
+ 'id5id': {
72
+ 'uid': 'ID5-ZHMOcvSShIBZiIth_yYh9odjNFxVEmMQ_i5TArPfWw!ID5*dtrjfV5mPLasyya5TW2IE9oVzQZwx7xRPGyAYS4hcWkAAOoxoFef4bIoREpQys8x',
73
+ 'ext': {
74
+ 'linkType': 2
75
+ }
76
+ },
77
+ 'sharedid': {
78
+ 'id': '01EXPPGZ9C8NKG1MTXVHV98505',
79
+ 'third': '01EXPPGZ9C8NKG1MTXVHV98505'
80
+ }
81
+ },
82
+ 'crumbs': {
83
+ 'pubcid': 'e09ab6a3-ae74-4f01-b2e8-81b141d6dc61'
84
+ },
85
+ 'schain': {
86
+ 'ver': '1.0',
87
+ 'complete': 1,
88
+ 'nodes': [
89
+ {
90
+ 'asi': 'example.com',
91
+ 'sid': '0',
92
+ 'hp': 1,
93
+ 'rid': 'bidrequestid',
94
+ 'domain': 'example.com'
95
+ }
96
+ ]
69
97
  }
70
98
  },
71
99
  {
@@ -111,7 +139,10 @@ describe('dspxAdapter', function () {
111
139
  'mediaTypes': {
112
140
  'video': {
113
141
  'playerSize': [640, 480],
114
- 'context': 'instream'
142
+ 'context': 'instream',
143
+ 'protocols': [1, 2],
144
+ 'playbackmethod': [2],
145
+ 'skip': 1
115
146
  },
116
147
  'banner': {
117
148
  'sizes': [
@@ -135,14 +166,53 @@ describe('dspxAdapter', function () {
135
166
  'mediaTypes': {
136
167
  'video': {
137
168
  'playerSize': [640, 480],
138
- 'context': 'instream'
169
+ 'context': 'instream',
170
+ 'protocols': [1, 2],
171
+ 'playbackmethod': [2],
172
+ 'skip': 1,
173
+ 'renderer': {
174
+ url: 'example.com/videoRenderer.js',
175
+ render: function (bid) { alert('test'); }
176
+ }
139
177
  }
140
178
  },
141
179
  'bidId': '30b31c1838de1e41',
142
180
  'bidderRequestId': '22edbae2733bf67',
143
181
  'auctionId': '1d1a030790a478',
144
182
  'adUnitCode': 'testDiv4'
145
- }
183
+ },
184
+ {
185
+ 'bidder': 'dspx',
186
+ 'params': {
187
+ 'placement': '101',
188
+ 'devMode': true,
189
+ 'dev': {
190
+ 'endpoint': 'http://localhost',
191
+ 'placement': '107',
192
+ 'pfilter': {'test': 1}
193
+ }
194
+ },
195
+ 'mediaTypes': {
196
+ 'video': {
197
+ 'playerSize': [640, 480],
198
+ 'context': 'instream',
199
+ 'mimes': ['video/mp4'],
200
+ 'protocols': [1, 2],
201
+ 'playbackmethod': [2],
202
+ 'skip': 1
203
+ },
204
+ 'banner': {
205
+ 'sizes': [
206
+ [300, 250]
207
+ ]
208
+ }
209
+ },
210
+
211
+ 'bidId': '30b31c1838de1e4',
212
+ 'bidderRequestId': '22edbae2733bf67',
213
+ 'auctionId': '1d1a030790a478',
214
+ 'adUnitCode': 'testDiv3'
215
+ },
146
216
 
147
217
  ];
148
218
 
@@ -163,7 +233,7 @@ describe('dspxAdapter', function () {
163
233
  expect(request1.method).to.equal('GET');
164
234
  expect(request1.url).to.equal(ENDPOINT_URL);
165
235
  let data = request1.data.replace(/rnd=\d+\&/g, '').replace(/ref=.*\&bid/g, 'bid').replace(/pbver=.*?&/g, 'pbver=test&');
166
- expect(data).to.equal('_f=auto&alternative=prebid_js&inventory_item_id=6682&srw=300&srh=250&idt=100&bid_id=30b31c1838de1e1&pbver=test&pfilter%5Bfloorprice%5D=1000000&pfilter%5Bprivate_auction%5D=0&pfilter%5Bgeo%5D%5Bcountry%5D=DE&pfilter%5Bgdpr_consent%5D=BOJ%2FP2HOJ%2FP2HABABMAAAAAZ%2BA%3D%3D&pfilter%5Bgdpr%5D=true&bcat=IAB2%2CIAB4&dvt=desktop&did_netid=123&did_uid2=456&auctionId=1d1a030790a475&pbcode=testDiv1&media_types%5Bbanner%5D=300x250');
236
+ expect(data).to.equal('_f=auto&alternative=prebid_js&inventory_item_id=6682&srw=300&srh=250&idt=100&bid_id=30b31c1838de1e1&pbver=test&pfilter%5Bfloorprice%5D=1000000&pfilter%5Bprivate_auction%5D=0&pfilter%5Bgeo%5D%5Bcountry%5D=DE&pfilter%5Bgdpr_consent%5D=BOJ%2FP2HOJ%2FP2HABABMAAAAAZ%2BA%3D%3D&pfilter%5Bgdpr%5D=true&bcat=IAB2%2CIAB4&dvt=desktop&did_netid=123&did_id5=ID5-ZHMOcvSShIBZiIth_yYh9odjNFxVEmMQ_i5TArPfWw!ID5*dtrjfV5mPLasyya5TW2IE9oVzQZwx7xRPGyAYS4hcWkAAOoxoFef4bIoREpQys8x&did_id5_linktype=2&did_uid2=456&did_sharedid=01EXPPGZ9C8NKG1MTXVHV98505&did_pubcid=e09ab6a3-ae74-4f01-b2e8-81b141d6dc61&did_cpubcid=e09ab6a3-ae74-4f01-b2e8-81b141d6dc61&schain%5Bver%5D=1.0&schain%5Bcomplete%5D=1&schain%5Bnodes%5D%5B0%5D%5Basi%5D=example.com&schain%5Bnodes%5D%5B0%5D%5Bsid%5D=0&schain%5Bnodes%5D%5B0%5D%5Bhp%5D=1&schain%5Bnodes%5D%5B0%5D%5Brid%5D=bidrequestid&schain%5Bnodes%5D%5B0%5D%5Bdomain%5D=example.com&auctionId=1d1a030790a475&pbcode=testDiv1&media_types%5Bbanner%5D=300x250');
167
237
  });
168
238
 
169
239
  var request2 = spec.buildRequests([bidRequests[1]], bidderRequest)[0];
@@ -193,14 +263,61 @@ describe('dspxAdapter', function () {
193
263
  expect(request4.method).to.equal('GET');
194
264
  expect(request4.url).to.equal(ENDPOINT_URL_DEV);
195
265
  let data = request4.data.replace(/rnd=\d+\&/g, '').replace(/ref=.*\&bid/g, 'bid').replace(/pbver=.*?&/g, 'pbver=test&');
196
- expect(data).to.equal('_f=auto&alternative=prebid_js&inventory_item_id=101&srw=300&srh=250&idt=100&bid_id=30b31c1838de1e4&pbver=test&prebidDevMode=1&auctionId=1d1a030790a478&pbcode=testDiv3&media_types%5Bvideo%5D=640x480&media_types%5Bbanner%5D=300x250');
266
+ expect(data).to.equal('_f=auto&alternative=prebid_js&inventory_item_id=101&srw=300&srh=250&idt=100&bid_id=30b31c1838de1e4&pbver=test&prebidDevMode=1&auctionId=1d1a030790a478&pbcode=testDiv3&media_types%5Bvideo%5D=640x480&media_types%5Bbanner%5D=300x250&vctx=instream&vpl%5Bprotocols%5D%5B0%5D=1&vpl%5Bprotocols%5D%5B1%5D=2&vpl%5Bplaybackmethod%5D%5B0%5D=2&vpl%5Bskip%5D=1');
197
267
  });
198
268
 
199
269
  var request5 = spec.buildRequests([bidRequests[4]], bidderRequestWithoutGdpr)[0];
200
270
  it('sends bid video request to our endpoint via GET', function () {
201
271
  expect(request5.method).to.equal('GET');
202
272
  let data = request5.data.replace(/rnd=\d+\&/g, '').replace(/ref=.*\&bid/g, 'bid').replace(/pbver=.*?&/g, 'pbver=test&');
203
- expect(data).to.equal('_f=auto&alternative=prebid_js&inventory_item_id=101&srw=640&srh=480&idt=100&bid_id=30b31c1838de1e41&pbver=test&vf=vast4&prebidDevMode=1&auctionId=1d1a030790a478&pbcode=testDiv4&media_types%5Bvideo%5D=640x480');
273
+ expect(data).to.equal('_f=auto&alternative=prebid_js&inventory_item_id=101&srw=640&srh=480&idt=100&bid_id=30b31c1838de1e41&pbver=test&prebidDevMode=1&auctionId=1d1a030790a478&pbcode=testDiv4&media_types%5Bvideo%5D=640x480&vctx=instream&vf=vast4&vpl%5Bprotocols%5D%5B0%5D=1&vpl%5Bprotocols%5D%5B1%5D=2&vpl%5Bplaybackmethod%5D%5B0%5D=2&vpl%5Bskip%5D=1');
274
+ });
275
+
276
+ var request6 = spec.buildRequests([bidRequests[5]], bidderRequestWithoutGdpr)[0];
277
+ it('sends bid request without gdprConsent to our DEV endpoint with overriden DEV params via GET', function () {
278
+ expect(request6.method).to.equal('GET');
279
+ expect(request6.url).to.equal('http://localhost');
280
+ let data = request6.data.replace(/rnd=\d+\&/g, '').replace(/ref=.*\&bid/g, 'bid').replace(/pbver=.*?&/g, 'pbver=test&');
281
+ expect(data).to.equal('_f=auto&alternative=prebid_js&inventory_item_id=107&srw=300&srh=250&idt=100&bid_id=30b31c1838de1e4&pbver=test&pfilter%5Btest%5D=1&prebidDevMode=1&auctionId=1d1a030790a478&pbcode=testDiv3&media_types%5Bvideo%5D=640x480&media_types%5Bbanner%5D=300x250&vctx=instream&vpl%5Bmimes%5D%5B0%5D=video%2Fmp4&vpl%5Bprotocols%5D%5B0%5D=1&vpl%5Bprotocols%5D%5B1%5D=2&vpl%5Bplaybackmethod%5D%5B0%5D=2&vpl%5Bskip%5D=1');
282
+ });
283
+
284
+ // bidfloor tests
285
+ const getFloorResponse = {currency: 'EUR', floor: 5};
286
+ let testBidRequest = deepClone(bidRequests[1]);
287
+ let floorRequest = spec.buildRequests([testBidRequest], bidderRequestWithoutGdpr)[0];
288
+
289
+ // 1. getBidFloor not exist AND bidfloor not exist - no floorprice in request
290
+ it('bidfloor is not exists in request', function () {
291
+ expect(floorRequest.data).to.not.contain('floorprice');
292
+ });
293
+
294
+ // 2. getBidFloor not exist AND pfilter.floorprice exist - use pfilter.floorprice property
295
+ it('bidfloor is equal 0.5', function () {
296
+ testBidRequest = deepClone(bidRequests[0]);
297
+ testBidRequest.params.pfilter = {
298
+ 'floorprice': 0.5
299
+ };
300
+ floorRequest = spec.buildRequests([testBidRequest], bidderRequestWithoutGdpr)[0];
301
+ expect(floorRequest.data).to.contain('floorprice%5D=0.5');
302
+ });
303
+
304
+ // 3. getBidFloor exist AND pfilter.floorprice not exist - use getFloor method
305
+ it('bidfloor is equal 5', function () {
306
+ testBidRequest = deepClone(bidRequests[1]);
307
+ testBidRequest.getFloor = () => getFloorResponse;
308
+ floorRequest = spec.buildRequests([testBidRequest], bidderRequestWithoutGdpr)[0];
309
+ expect(floorRequest.data).to.contain('floorprice%5D=5');
310
+ });
311
+
312
+ // 4. getBidFloor exist AND pfilter.floorprice exist -> use getFloor method
313
+ it('bidfloor is equal 0.35', function () {
314
+ testBidRequest = deepClone(bidRequests[0]);
315
+ testBidRequest.getFloor = () => getFloorResponse;
316
+ testBidRequest.params.pfilter = {
317
+ 'floorprice': 0.35
318
+ };
319
+ floorRequest = spec.buildRequests([testBidRequest], bidderRequestWithoutGdpr)[0];
320
+ expect(floorRequest.data).to.contain('floorprice%5D=0.35');
204
321
  });
205
322
  });
206
323
 
@@ -212,7 +329,7 @@ describe('dspxAdapter', function () {
212
329
  'width': '300',
213
330
  'height': '250',
214
331
  'type': 'sspHTML',
215
- 'tag': '<!-- test creative -->',
332
+ 'adTag': '<!-- test creative -->',
216
333
  'requestId': '220ed41385952a',
217
334
  'currency': 'EUR',
218
335
  'ttl': 60,
@@ -233,7 +350,25 @@ describe('dspxAdapter', function () {
233
350
  'currency': 'EUR',
234
351
  'ttl': 60,
235
352
  'netRevenue': true,
236
- 'zone': '6682'
353
+ 'zone': '6682',
354
+ 'renderer': {id: 1, url: '//player.example.com', options: {}}
355
+ }
356
+ };
357
+ let serverVideoResponseVastUrl = {
358
+ 'body': {
359
+ 'cpm': 5000000,
360
+ 'crid': 100500,
361
+ 'width': '300',
362
+ 'height': '250',
363
+ 'requestId': '220ed41385952a',
364
+ 'type': 'vast2',
365
+ 'currency': 'EUR',
366
+ 'ttl': 60,
367
+ 'netRevenue': true,
368
+ 'zone': '6682',
369
+ 'vastUrl': 'https://local/vasturl1',
370
+ 'videoCacheKey': 'cache_123',
371
+ 'bid_appendix': {'someField': 'someValue'}
237
372
  }
238
373
  };
239
374
 
@@ -246,10 +381,10 @@ describe('dspxAdapter', function () {
246
381
  dealId: '',
247
382
  currency: 'EUR',
248
383
  netRevenue: true,
249
- ttl: 300,
384
+ ttl: 60,
250
385
  type: 'sspHTML',
251
386
  ad: '<!-- test creative -->',
252
- meta: {advertiserDomains: ['bdomain']}
387
+ meta: {advertiserDomains: ['bdomain']},
253
388
  }, {
254
389
  requestId: '23beaa6af6cdde',
255
390
  cpm: 0.5,
@@ -263,7 +398,24 @@ describe('dspxAdapter', function () {
263
398
  type: 'vast2',
264
399
  vastXml: '{"reason":7001,"status":"accepted"}',
265
400
  mediaType: 'video',
266
- meta: {advertiserDomains: []}
401
+ meta: {advertiserDomains: []},
402
+ renderer: {}
403
+ }, {
404
+ requestId: '23beaa6af6cdde',
405
+ cpm: 0.5,
406
+ width: 0,
407
+ height: 0,
408
+ creativeId: 100500,
409
+ dealId: '',
410
+ currency: 'EUR',
411
+ netRevenue: true,
412
+ ttl: 60,
413
+ type: 'vast2',
414
+ vastUrl: 'https://local/vasturl1',
415
+ videoCacheKey: 'cache_123',
416
+ mediaType: 'video',
417
+ meta: {advertiserDomains: []},
418
+ someField: 'someValue'
267
419
  }];
268
420
 
269
421
  it('should get the correct bid response by display ad', function () {
@@ -287,7 +439,7 @@ describe('dspxAdapter', function () {
287
439
  'mediaTypes': {
288
440
  'video': {
289
441
  'playerSize': [640, 480],
290
- 'context': 'instream'
442
+ 'context': 'outstream'
291
443
  }
292
444
  },
293
445
  'data': {
@@ -299,6 +451,25 @@ describe('dspxAdapter', function () {
299
451
  expect(result[0].meta.advertiserDomains.length).to.equal(0);
300
452
  });
301
453
 
454
+ it('should get the correct dspx video bid response by display ad (vastUrl)', function () {
455
+ let bidRequest = [{
456
+ 'method': 'GET',
457
+ 'url': ENDPOINT_URL,
458
+ 'mediaTypes': {
459
+ 'video': {
460
+ 'playerSize': [640, 480],
461
+ 'context': 'instream'
462
+ }
463
+ },
464
+ 'data': {
465
+ 'bid_id': '30b31c1838de1e'
466
+ }
467
+ }];
468
+ let result = spec.interpretResponse(serverVideoResponseVastUrl, bidRequest[0]);
469
+ expect(Object.keys(result[0])).to.have.members(Object.keys(expectedResponse[2]));
470
+ expect(result[0].meta.advertiserDomains.length).to.equal(0);
471
+ });
472
+
302
473
  it('handles empty bid response', function () {
303
474
  let response = {
304
475
  body: {}
@@ -172,6 +172,36 @@ describe('eids array generation for known sub-modules', function() {
172
172
  });
173
173
  });
174
174
 
175
+ it('bidswitch', function() {
176
+ const userId = {
177
+ bidswitch: {'id': 'sample_id'}
178
+ };
179
+ const newEids = createEidsArray(userId);
180
+ expect(newEids.length).to.equal(1);
181
+ expect(newEids[0]).to.deep.equal({
182
+ source: 'bidswitch.net',
183
+ uids: [{
184
+ id: 'sample_id',
185
+ atype: 3
186
+ }]
187
+ });
188
+ });
189
+
190
+ it('medianet', function() {
191
+ const userId = {
192
+ medianet: {'id': 'sample_id'}
193
+ };
194
+ const newEids = createEidsArray(userId);
195
+ expect(newEids.length).to.equal(1);
196
+ expect(newEids[0]).to.deep.equal({
197
+ source: 'media.net',
198
+ uids: [{
199
+ id: 'sample_id',
200
+ atype: 3
201
+ }]
202
+ });
203
+ });
204
+
175
205
  it('liveIntentId; getValue call and NO ext', function() {
176
206
  const userId = {
177
207
  lipb: {
@@ -2,6 +2,13 @@ import {
2
2
  expect
3
3
  } from 'chai';
4
4
  import * as fledge from 'modules/fledgeForGpt.js';
5
+ import {config} from '../../../src/config.js';
6
+ import adapterManager from '../../../src/adapterManager.js';
7
+ import * as utils from '../../../src/utils.js';
8
+ import {hook} from '../../../src/hook.js';
9
+ import 'modules/appnexusBidAdapter.js';
10
+ import 'modules/rubiconBidAdapter.js';
11
+ import {parseExtPrebidFledge, setImpExtAe, setResponseFledgeConfigs} from 'modules/fledgeForGpt.js';
5
12
 
6
13
  const CODE = 'sampleBidder';
7
14
  const AD_UNIT_CODE = 'mock/placement';
@@ -29,9 +36,173 @@ describe('fledgeForGpt module', function() {
29
36
  nextFnSpy = sinon.spy();
30
37
  });
31
38
 
32
- it('should call next() when a proper bidrequest and fledgeAuctionConfig are provided', function() {
33
- fledge.addComponentAuctionHook(nextFnSpy, bidRequest, fledgeAuctionConfig);
39
+ it('should call next() when a proper adUnitCode and fledgeAuctionConfig are provided', function() {
40
+ fledge.addComponentAuctionHook(nextFnSpy, bidRequest.adUnitCode, fledgeAuctionConfig);
34
41
  expect(nextFnSpy.called).to.be.true;
35
42
  });
36
43
  });
37
44
  });
45
+
46
+ describe('fledgeEnabled', function () {
47
+ const navProps = Object.fromEntries(['runAdAuction', 'joinAdInterestGroup'].map(p => [p, navigator[p]]))
48
+
49
+ before(function () {
50
+ // navigator.runAdAuction & co may not exist, so we can't stub it normally with
51
+ // sinon.stub(navigator, 'runAdAuction') or something
52
+ Object.keys(navProps).forEach(p => { navigator[p] = sinon.stub() });
53
+ hook.ready();
54
+ });
55
+
56
+ after(function() {
57
+ Object.entries(navProps).forEach(([p, orig]) => navigator[p] = orig);
58
+ })
59
+
60
+ afterEach(function () {
61
+ config.resetConfig();
62
+ });
63
+
64
+ it('should set fledgeEnabled correctly per bidder', function () {
65
+ config.setConfig({bidderSequence: 'fixed'})
66
+ config.setBidderConfig({
67
+ bidders: ['appnexus'],
68
+ config: {
69
+ fledgeEnabled: true,
70
+ }
71
+ });
72
+
73
+ const adUnits = [{
74
+ 'code': '/19968336/header-bid-tag1',
75
+ 'mediaTypes': {
76
+ 'banner': {
77
+ 'sizes': [[728, 90]]
78
+ },
79
+ },
80
+ 'bids': [
81
+ {
82
+ 'bidder': 'appnexus',
83
+ },
84
+ {
85
+ 'bidder': 'rubicon',
86
+ },
87
+ ]
88
+ }];
89
+
90
+ const bidRequests = adapterManager.makeBidRequests(
91
+ adUnits,
92
+ Date.now(),
93
+ utils.getUniqueIdentifierStr(),
94
+ function callback() {},
95
+ []
96
+ );
97
+
98
+ expect(bidRequests[0].bids[0].bidder).equals('appnexus');
99
+ expect(bidRequests[0].fledgeEnabled).to.be.true;
100
+
101
+ expect(bidRequests[1].bids[0].bidder).equals('rubicon');
102
+ expect(bidRequests[1].fledgeEnabled).to.be.undefined;
103
+ });
104
+ });
105
+
106
+ describe('ortb processors for fledge', () => {
107
+ describe('imp.ext.ae', () => {
108
+ it('should be removed if fledge is not enabled', () => {
109
+ const imp = {ext: {ae: 1}};
110
+ setImpExtAe(imp, {}, {bidderRequest: {}});
111
+ expect(imp.ext.ae).to.not.exist;
112
+ })
113
+ it('should be left intact if fledge is enabled', () => {
114
+ const imp = {ext: {ae: false}};
115
+ setImpExtAe(imp, {}, {bidderRequest: {fledgeEnabled: true}});
116
+ expect(imp.ext.ae).to.equal(false);
117
+ });
118
+ });
119
+ describe('parseExtPrebidFledge', () => {
120
+ function packageConfigs(configs) {
121
+ return {
122
+ ext: {
123
+ prebid: {
124
+ fledge: {
125
+ auctionconfigs: configs
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+
132
+ function generateImpCtx(fledgeFlags) {
133
+ return Object.fromEntries(Object.entries(fledgeFlags).map(([impid, fledgeEnabled]) => [impid, {imp: {ext: {ae: fledgeEnabled}}}]));
134
+ }
135
+
136
+ function generateCfg(impid, ...ids) {
137
+ return ids.map((id) => ({impid, config: {id}}));
138
+ }
139
+
140
+ function extractResult(ctx) {
141
+ return Object.fromEntries(
142
+ Object.entries(ctx)
143
+ .map(([impid, ctx]) => [impid, ctx.fledgeConfigs?.map(cfg => cfg.config.id)])
144
+ .filter(([_, val]) => val != null)
145
+ );
146
+ }
147
+
148
+ it('should collect fledge configs by imp', () => {
149
+ const ctx = {
150
+ impContext: generateImpCtx({e1: 1, e2: 1, d1: 0})
151
+ };
152
+ const resp = packageConfigs(
153
+ generateCfg('e1', 1, 2, 3)
154
+ .concat(generateCfg('e2', 4)
155
+ .concat(generateCfg('d1', 5, 6)))
156
+ );
157
+ parseExtPrebidFledge({}, resp, ctx);
158
+ expect(extractResult(ctx.impContext)).to.eql({
159
+ e1: [1, 2, 3],
160
+ e2: [4],
161
+ });
162
+ });
163
+ it('should not choke if fledge config references unknown imp', () => {
164
+ const ctx = {impContext: generateImpCtx({i: 1})};
165
+ const resp = packageConfigs(generateCfg('unknown', 1));
166
+ parseExtPrebidFledge({}, resp, ctx);
167
+ expect(extractResult(ctx.impContext)).to.eql({});
168
+ });
169
+ });
170
+ describe('setResponseFledgeConfigs', () => {
171
+ it('should set fledgeAuctionConfigs paired with their corresponding bid id', () => {
172
+ const ctx = {
173
+ impContext: {
174
+ 1: {
175
+ bidRequest: {bidId: 'bid1'},
176
+ fledgeConfigs: [{config: {id: 1}}, {config: {id: 2}}]
177
+ },
178
+ 2: {
179
+ bidRequest: {bidId: 'bid2'},
180
+ fledgeConfigs: [{config: {id: 3}}]
181
+ },
182
+ 3: {
183
+ bidRequest: {bidId: 'bid3'}
184
+ }
185
+ }
186
+ };
187
+ const resp = {};
188
+ setResponseFledgeConfigs(resp, {}, ctx);
189
+ expect(resp.fledgeAuctionConfigs).to.eql([
190
+ {bidId: 'bid1', config: {id: 1}},
191
+ {bidId: 'bid1', config: {id: 2}},
192
+ {bidId: 'bid2', config: {id: 3}},
193
+ ]);
194
+ });
195
+ it('should not set fledgeAuctionConfigs if none exist', () => {
196
+ const resp = {};
197
+ setResponseFledgeConfigs(resp, {}, {
198
+ impContext: {
199
+ 1: {
200
+ fledgeConfigs: []
201
+ },
202
+ 2: {}
203
+ }
204
+ });
205
+ expect(resp).to.eql({});
206
+ });
207
+ });
208
+ });