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
@@ -252,6 +252,13 @@ describe('freewheelSSP BidAdapter Test', () => {
252
252
  }
253
253
  ];
254
254
 
255
+ it('should return context and placement with default values', () => {
256
+ const request = spec.buildRequests(bidRequests);
257
+ const payload = request[0].data;
258
+ expect(payload.video_context).to.equal('instream'); ;
259
+ expect(payload.video_placement).to.equal(1);
260
+ });
261
+
255
262
  it('should add parameters to the tag', () => {
256
263
  const request = spec.buildRequests(bidRequests);
257
264
  const payload = request[0].data;
@@ -319,6 +326,36 @@ describe('freewheelSSP BidAdapter Test', () => {
319
326
  });
320
327
  })
321
328
 
329
+ describe('buildRequestsForVideoWithContextAndPlacement', () => {
330
+ let bidRequests = [
331
+ {
332
+ 'bidder': 'freewheel-ssp',
333
+ 'params': {
334
+ 'zoneId': '277225'
335
+ },
336
+ 'adUnitCode': 'adunit-code',
337
+ 'mediaTypes': {
338
+ 'video': {
339
+ 'context': 'outstream',
340
+ 'placement': 2,
341
+ 'playerSize': [300, 600],
342
+ }
343
+ },
344
+ 'sizes': [[300, 250], [300, 600]],
345
+ 'bidId': '30b31c1838de1e',
346
+ 'bidderRequestId': '22edbae2733bf6',
347
+ 'auctionId': '1d1a030790a475',
348
+ }
349
+ ];
350
+
351
+ it('should return input context and placement', () => {
352
+ const request = spec.buildRequests(bidRequests);
353
+ const payload = request[0].data;
354
+ expect(payload.video_context).to.equal('outstream'); ;
355
+ expect(payload.video_placement).to.equal(2);
356
+ });
357
+ })
358
+
322
359
  describe('interpretResponseForBanner', () => {
323
360
  let bidRequests = [
324
361
  {
@@ -1,26 +1,33 @@
1
1
  import {
2
2
  deviceAccessHook,
3
- setEnforcementConfig,
4
- userSyncHook,
5
- userIdHook,
6
- makeBidRequestsHook,
7
- validateRules,
3
+ enableAnalyticsHook,
8
4
  enforcementRules,
5
+ getGvlid,
6
+ getGvlidFromAnalyticsAdapter,
7
+ makeBidRequestsHook,
9
8
  purpose1Rule,
10
9
  purpose2Rule,
11
- enableAnalyticsHook,
12
- getGvlid,
13
- internal, STRICT_STORAGE_ENFORCEMENT
10
+ setEnforcementConfig,
11
+ STRICT_STORAGE_ENFORCEMENT,
12
+ userIdHook,
13
+ userSyncHook,
14
+ validateRules
14
15
  } from 'modules/gdprEnforcement.js';
15
- import { config } from 'src/config.js';
16
- import adapterManager, { gdprDataHandler } from 'src/adapterManager.js';
16
+ import {config} from 'src/config.js';
17
+ import adapterManager, {gdprDataHandler} from 'src/adapterManager.js';
17
18
  import * as utils from 'src/utils.js';
18
- import { validateStorageEnforcement } from 'src/storageManager.js';
19
+ import {
20
+ MODULE_TYPE_ANALYTICS,
21
+ MODULE_TYPE_BIDDER,
22
+ MODULE_TYPE_CORE,
23
+ MODULE_TYPE_UID
24
+ } from '../../../src/activities/modules.js';
19
25
  import * as events from 'src/events.js';
20
26
  import 'modules/appnexusBidAdapter.js'; // some tests expect this to be in the adapter registry
21
- import 'src/prebid.js'
27
+ import 'src/prebid.js';
22
28
  import {hook} from '../../../src/hook.js';
23
- import {VENDORLESS_GVLID} from '../../../src/consentHandler.js';
29
+ import {GDPR_GVLIDS, VENDORLESS_GVLID} from '../../../src/consentHandler.js';
30
+ import {validateStorageEnforcement} from '../../../src/storageManager.js';
24
31
 
25
32
  describe('gdpr enforcement', function () {
26
33
  let nextFnSpy;
@@ -100,6 +107,7 @@ describe('gdpr enforcement', function () {
100
107
  }
101
108
  }
102
109
  };
110
+ let gvlids;
103
111
 
104
112
  before(() => {
105
113
  hook.ready();
@@ -111,31 +119,28 @@ describe('gdpr enforcement', function () {
111
119
  adapterManager.makeBidRequests.getHooks({ hook: makeBidRequestsHook }).remove();
112
120
  })
113
121
 
114
- describe('deviceAccessHook', function () {
115
- let adapterManagerStub;
122
+ beforeEach(() => {
123
+ gvlids = {};
124
+ sinon.stub(GDPR_GVLIDS, 'get').callsFake((name) => ({gvlid: gvlids[name], modules: {}}));
125
+ });
116
126
 
117
- function getBidderSpec(gvlid) {
118
- return {
119
- getSpec: () => {
120
- return {
121
- gvlid
122
- }
123
- }
124
- }
125
- }
127
+ afterEach(() => {
128
+ GDPR_GVLIDS.get.restore();
129
+ });
126
130
 
131
+ describe('deviceAccessHook', function () {
127
132
  beforeEach(function () {
128
133
  nextFnSpy = sinon.spy();
129
134
  gdprDataHandlerStub = sinon.stub(gdprDataHandler, 'getConsentData');
130
135
  logWarnSpy = sinon.spy(utils, 'logWarn');
131
- adapterManagerStub = sinon.stub(adapterManager, 'getBidAdapter');
132
136
  });
137
+
133
138
  afterEach(function () {
134
139
  config.resetConfig();
135
140
  gdprDataHandler.getConsentData.restore();
136
141
  logWarnSpy.restore();
137
- adapterManagerStub.restore();
138
142
  });
143
+
139
144
  it('should not allow device access when device access flag is set to false', function () {
140
145
  config.setConfig({
141
146
  deviceAccess: false,
@@ -161,8 +166,10 @@ describe('gdpr enforcement', function () {
161
166
  });
162
167
 
163
168
  it('should only check for consent for vendor exceptions when enforcePurpose and enforceVendor are false', function () {
164
- adapterManagerStub.withArgs('appnexus').returns(getBidderSpec(1));
165
- adapterManagerStub.withArgs('rubicon').returns(getBidderSpec(5));
169
+ Object.assign(gvlids, {
170
+ appnexus: 1,
171
+ rubicon: 5
172
+ });
166
173
  setEnforcementConfig({
167
174
  gdpr: {
168
175
  rules: [{
@@ -179,14 +186,16 @@ describe('gdpr enforcement', function () {
179
186
  consentData.apiVersion = 2;
180
187
  gdprDataHandlerStub.returns(consentData);
181
188
 
182
- deviceAccessHook(nextFnSpy, 1, 'appnexus');
183
- deviceAccessHook(nextFnSpy, 5, 'rubicon');
189
+ deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus');
190
+ deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'rubicon');
184
191
  expect(logWarnSpy.callCount).to.equal(0);
185
192
  });
186
193
 
187
194
  it('should check consent for all vendors when enforcePurpose and enforceVendor are true', function () {
188
- adapterManagerStub.withArgs('appnexus').returns(getBidderSpec(1));
189
- adapterManagerStub.withArgs('rubicon').returns(getBidderSpec(3));
195
+ Object.assign(gvlids, {
196
+ appnexus: 1,
197
+ rubicon: 3
198
+ });
190
199
  setEnforcementConfig({
191
200
  gdpr: {
192
201
  rules: [{
@@ -202,13 +211,13 @@ describe('gdpr enforcement', function () {
202
211
  consentData.apiVersion = 2;
203
212
  gdprDataHandlerStub.returns(consentData);
204
213
 
205
- deviceAccessHook(nextFnSpy, 1, 'appnexus');
206
- deviceAccessHook(nextFnSpy, 3, 'rubicon');
214
+ deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus');
215
+ deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'rubicon');
207
216
  expect(logWarnSpy.callCount).to.equal(1);
208
217
  });
209
218
 
210
219
  it('should allow device access when gdprApplies is false and hasDeviceAccess flag is true', function () {
211
- adapterManagerStub.withArgs('appnexus').returns(getBidderSpec(1));
220
+ gvlids.appnexus = 1;
212
221
  setEnforcementConfig({
213
222
  gdpr: {
214
223
  rules: [{
@@ -225,13 +234,13 @@ describe('gdpr enforcement', function () {
225
234
  consentData.apiVersion = 2;
226
235
  gdprDataHandlerStub.returns(consentData);
227
236
 
228
- deviceAccessHook(nextFnSpy, 1, 'appnexus');
237
+ deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus');
229
238
  expect(nextFnSpy.calledOnce).to.equal(true);
230
239
  let result = {
231
240
  hasEnforcementHook: true,
232
241
  valid: true
233
242
  }
234
- sinon.assert.calledWith(nextFnSpy, 1, 'appnexus', result);
243
+ sinon.assert.calledWith(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus', result);
235
244
  });
236
245
 
237
246
  it('should use gvlMapping set by publisher', function() {
@@ -256,13 +265,13 @@ describe('gdpr enforcement', function () {
256
265
  consentData.apiVersion = 2;
257
266
  gdprDataHandlerStub.returns(consentData);
258
267
 
259
- deviceAccessHook(nextFnSpy, 1, 'appnexus');
268
+ deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus');
260
269
  expect(nextFnSpy.calledOnce).to.equal(true);
261
270
  let result = {
262
271
  hasEnforcementHook: true,
263
272
  valid: true
264
273
  }
265
- sinon.assert.calledWith(nextFnSpy, 4, 'appnexus', result);
274
+ sinon.assert.calledWith(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus', result);
266
275
  config.resetConfig();
267
276
  });
268
277
 
@@ -291,13 +300,13 @@ describe('gdpr enforcement', function () {
291
300
  consentData.apiVersion = 2;
292
301
  gdprDataHandlerStub.returns(consentData);
293
302
 
294
- deviceAccessHook(nextFnSpy, 1, 'appnexus');
303
+ deviceAccessHook(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus');
295
304
  expect(nextFnSpy.calledOnce).to.equal(true);
296
305
  let result = {
297
306
  hasEnforcementHook: true,
298
307
  valid: true
299
308
  }
300
- sinon.assert.calledWith(nextFnSpy, 4, 'appnexus', result);
309
+ sinon.assert.calledWith(nextFnSpy, MODULE_TYPE_BIDDER, 'appnexus', result);
301
310
  config.resetConfig();
302
311
  curBidderStub.restore();
303
312
  });
@@ -310,9 +319,9 @@ describe('gdpr enforcement', function () {
310
319
  }
311
320
  gdprDataHandlerStub.returns(consentData);
312
321
  const validate = sinon.stub().callsFake(() => false);
313
- deviceAccessHook(nextFnSpy, VENDORLESS_GVLID, 'mockModule', undefined, {validate});
322
+ deviceAccessHook(nextFnSpy, MODULE_TYPE_CORE, 'mockModule', undefined, {validate});
314
323
  sinon.assert.callCount(validate, 0);
315
- sinon.assert.calledWith(nextFnSpy, VENDORLESS_GVLID, 'mockModule', {hasEnforcementHook: true, valid: true});
324
+ sinon.assert.calledWith(nextFnSpy, MODULE_TYPE_CORE, 'mockModule', {hasEnforcementHook: true, valid: true});
316
325
  })
317
326
  });
318
327
 
@@ -354,23 +363,11 @@ describe('gdpr enforcement', function () {
354
363
  gdprDataHandlerStub.returns(consentData);
355
364
 
356
365
  curBidderStub.returns('sampleBidder1');
357
- adapterManagerStub.withArgs('sampleBidder1').returns({
358
- getSpec: function () {
359
- return {
360
- 'gvlid': 1
361
- }
362
- }
363
- });
366
+ gvlids.sampleBidder1 = 1;
364
367
  userSyncHook(nextFnSpy);
365
368
 
366
369
  curBidderStub.returns('sampleBidder2');
367
- adapterManagerStub.withArgs('sampleBidder2').returns({
368
- getSpec: function () {
369
- return {
370
- 'gvlid': 3
371
- }
372
- }
373
- });
370
+ gvlids.sampleBidder2 = 3;
374
371
  userSyncHook(nextFnSpy);
375
372
  expect(nextFnSpy.calledTwice).to.equal(true);
376
373
  });
@@ -393,23 +390,11 @@ describe('gdpr enforcement', function () {
393
390
  gdprDataHandlerStub.returns(consentData);
394
391
 
395
392
  curBidderStub.returns('sampleBidder1');
396
- adapterManagerStub.withArgs('sampleBidder1').returns({
397
- getSpec: function () {
398
- return {
399
- 'gvlid': 1
400
- }
401
- }
402
- });
393
+ gvlids.sampleBidder1 = 1;
403
394
  userSyncHook(nextFnSpy);
404
395
 
405
396
  curBidderStub.returns('sampleBidder2');
406
- adapterManagerStub.withArgs('sampleBidder2').returns({
407
- getSpec: function () {
408
- return {
409
- 'gvlid': 3
410
- }
411
- }
412
- });
397
+ gvlids.sampleBidder2 = 3;
413
398
  userSyncHook(nextFnSpy);
414
399
  expect(nextFnSpy.calledOnce).to.equal(true);
415
400
  expect(logWarnSpy.callCount).to.equal(1);
@@ -433,23 +418,11 @@ describe('gdpr enforcement', function () {
433
418
  gdprDataHandlerStub.returns(consentData);
434
419
 
435
420
  curBidderStub.returns('sampleBidder1');
436
- adapterManagerStub.withArgs('sampleBidder1').returns({
437
- getSpec: function () {
438
- return {
439
- 'gvlid': 1
440
- }
441
- }
442
- });
421
+ gvlids.sampleBidder1 = 1;
443
422
  userSyncHook(nextFnSpy);
444
423
 
445
424
  curBidderStub.returns('sampleBidder2');
446
- adapterManagerStub.withArgs('sampleBidder2').returns({
447
- getSpec: function () {
448
- return {
449
- 'gvlid': 3
450
- }
451
- }
452
- });
425
+ gvlids.sampleBidder2 = 3;
453
426
  userSyncHook(nextFnSpy);
454
427
  expect(nextFnSpy.calledTwice).to.equal(true);
455
428
  expect(logWarnSpy.callCount).to.equal(0);
@@ -486,6 +459,7 @@ describe('gdpr enforcement', function () {
486
459
  name: 'sampleUserId'
487
460
  }
488
461
  }]
462
+ gvlids.sampleUserId = 1;
489
463
  userIdHook(nextFnSpy, submodules, consentData);
490
464
  // Should pass back hasValidated flag since version 2
491
465
  const args = nextFnSpy.getCalls()[0].args;
@@ -501,6 +475,7 @@ describe('gdpr enforcement', function () {
501
475
  name: 'sampleUserId'
502
476
  }
503
477
  }];
478
+ gvlids.sampleUserId = 1;
504
479
  let consentData = null;
505
480
  userIdHook(nextFnSpy, submodules, consentData);
506
481
  // Should not pass back hasValidated flag since version 2
@@ -537,6 +512,10 @@ describe('gdpr enforcement', function () {
537
512
  name: 'sampleUserId1'
538
513
  }
539
514
  }]
515
+ Object.assign(gvlids, {
516
+ sampleUserId: 1,
517
+ sampleUserId1: 3
518
+ });
540
519
  userIdHook(nextFnSpy, submodules, consentData);
541
520
  expect(logWarnSpy.callCount).to.equal(1);
542
521
  let expectedSubmodules = [{
@@ -602,20 +581,9 @@ describe('gdpr enforcement', function () {
602
581
  consentData.gdprApplies = true;
603
582
 
604
583
  gdprDataHandlerStub.returns(consentData);
605
- adapterManagerStub.withArgs('bidder_1').returns({
606
- getSpec: function () {
607
- return { 'gvlid': 4 }
608
- }
609
- });
610
- adapterManagerStub.withArgs('bidder_2').returns({
611
- getSpec: function () {
612
- return { 'gvlid': 5 }
613
- }
614
- });
615
- adapterManagerStub.withArgs('bidder_3').returns({
616
- getSpec: function () {
617
- return { 'gvlid': undefined }
618
- }
584
+ Object.assign(gvlids, {
585
+ bidder_1: 4,
586
+ bidder_2: 5,
619
587
  });
620
588
  makeBidRequestsHook(nextFnSpy, MOCK_AD_UNITS, []);
621
589
 
@@ -660,21 +628,10 @@ describe('gdpr enforcement', function () {
660
628
  consentData.gdprApplies = true;
661
629
 
662
630
  gdprDataHandlerStub.returns(consentData);
663
- adapterManagerStub.withArgs('bidder_1').returns({
664
- getSpec: function () {
665
- return { 'gvlid': 4 }
666
- }
667
- });
668
- adapterManagerStub.withArgs('bidder_2').returns({
669
- getSpec: function () {
670
- return { 'gvlid': 5 }
671
- }
672
- });
673
- adapterManagerStub.withArgs('bidder_3').returns({
674
- getSpec: function () {
675
- return { 'gvlid': undefined }
676
- }
677
- });
631
+ Object.assign(gvlids, {
632
+ bidder_1: 4,
633
+ bidder_2: 5,
634
+ })
678
635
 
679
636
  makeBidRequestsHook(nextFnSpy, MOCK_AD_UNITS, []);
680
637
 
@@ -771,9 +728,11 @@ describe('gdpr enforcement', function () {
771
728
  consentData.gdprApplies = true;
772
729
 
773
730
  gdprDataHandlerStub.returns(consentData);
774
- adapterManagerStub.withArgs('analyticsAdapter_A').returns({ gvlid: 3 });
775
- adapterManagerStub.withArgs('analyticsAdapter_B').returns({ gvlid: 5 });
776
- adapterManagerStub.withArgs('analyticsAdapter_C').returns({ gvlid: 1 });
731
+ Object.assign(gvlids, {
732
+ analyticsAdapter_A: 3,
733
+ analyticsAdapter_B: 5,
734
+ analyticsAdapter_C: 1
735
+ });
777
736
 
778
737
  enableAnalyticsHook(nextFnSpy, MOCK_ANALYTICS_ADAPTER_CONFIG);
779
738
 
@@ -1142,13 +1101,13 @@ describe('gdpr enforcement', function () {
1142
1101
  });
1143
1102
 
1144
1103
  describe('getGvlid', function() {
1145
- let getGvlidForBidAdapterStub;
1146
- let getGvlidForUserIdModuleStub;
1147
- let getGvlidForAnalyticsAdapterStub;
1104
+ const MOCK_MODULE = 'moduleA';
1105
+ let entry;
1106
+
1148
1107
  beforeEach(function() {
1149
- getGvlidForBidAdapterStub = sandbox.stub(internal, 'getGvlidForBidAdapter');
1150
- getGvlidForUserIdModuleStub = sandbox.stub(internal, 'getGvlidForUserIdModule');
1151
- getGvlidForAnalyticsAdapterStub = sandbox.stub(internal, 'getGvlidForAnalyticsAdapter');
1108
+ entry = {modules: {}};
1109
+ GDPR_GVLIDS.get.reset();
1110
+ GDPR_GVLIDS.get.callsFake((mod) => mod === MOCK_MODULE ? entry : {modules: {}});
1152
1111
  });
1153
1112
 
1154
1113
  it('should return "null" if called without passing any argument', function() {
@@ -1156,46 +1115,63 @@ describe('gdpr enforcement', function () {
1156
1115
  expect(gvlid).to.equal(null);
1157
1116
  });
1158
1117
 
1159
- it('should return "null" if GVL ID is not defined for any of these modules: Bid adapter, UserId submodule and Analytics adapter', function() {
1160
- getGvlidForBidAdapterStub.withArgs('moduleA').returns(null);
1161
- getGvlidForUserIdModuleStub.withArgs('moduleA').returns(null);
1162
- getGvlidForAnalyticsAdapterStub.withArgs('moduleA').returns(null);
1163
-
1164
- const gvlid = getGvlid('moduleA');
1118
+ it('should return "null" if no GVL ID was registered', function() {
1119
+ const gvlid = getGvlid('type', MOCK_MODULE);
1165
1120
  expect(gvlid).to.equal(null);
1166
1121
  });
1167
1122
 
1168
- it('should return the GVL ID from gvlMapping if it is defined in setConfig', function() {
1169
- config.setConfig({
1170
- gvlMapping: {
1171
- moduleA: 1
1172
- }
1173
- });
1174
-
1175
- // Actual GVL ID for moduleA is 2, as defined on its the bidAdapter.js file.
1176
- getGvlidForBidAdapterStub.withArgs('moduleA').returns(2);
1177
-
1178
- const gvlid = getGvlid('moduleA');
1179
- expect(gvlid).to.equal(1);
1180
- });
1181
-
1182
- it('should return the GVL ID by calling getGvlidForBidAdapter -> getGvlidForUserIdModule -> getGvlidForAnalyticsAdapter in sequence', function() {
1183
- getGvlidForBidAdapterStub.withArgs('moduleA').returns(null);
1184
- getGvlidForUserIdModuleStub.withArgs('moduleA').returns(null);
1185
- getGvlidForAnalyticsAdapterStub.withArgs('moduleA').returns(7);
1123
+ it('should return null if the wrong GVL ID was registered', () => {
1124
+ entry = {gvlid: 123};
1125
+ expect(getGvlid('type', 'someOtherModule')).to.equal(null);
1126
+ })
1186
1127
 
1187
- expect(getGvlid('moduleA')).to.equal(7);
1188
- });
1128
+ Object.entries({
1129
+ 'without fallback': null,
1130
+ 'with fallback': () => 'shouldBeIgnored'
1131
+ }).forEach(([t, fallbackFn]) => {
1132
+ describe(t, () => {
1133
+ it('should return the GVL ID from gvlMapping if it is defined in setConfig', function() {
1134
+ config.setConfig({
1135
+ gvlMapping: {
1136
+ [MOCK_MODULE]: 1
1137
+ }
1138
+ });
1139
+
1140
+ entry = {gvlid: 2};
1141
+
1142
+ const gvlid = getGvlid('type', MOCK_MODULE, fallbackFn);
1143
+ expect(gvlid).to.equal(1);
1144
+ });
1145
+
1146
+ it('should return the GVL ID that was registered', function() {
1147
+ entry = {gvlid: 7};
1148
+ expect(getGvlid('type', MOCK_MODULE, fallbackFn)).to.equal(7);
1149
+ });
1150
+
1151
+ it('should return VENDORLESS_GVLID for core modules', () => {
1152
+ entry = {gvlid: 123};
1153
+ expect(getGvlid(MODULE_TYPE_CORE, MOCK_MODULE, fallbackFn)).to.equal(VENDORLESS_GVLID);
1154
+ });
1155
+
1156
+ describe('multiple GVL IDs are found', () => {
1157
+ it('should use bidder over others', () => {
1158
+ entry = {modules: {[MODULE_TYPE_BIDDER]: 123, [MODULE_TYPE_UID]: 321}};
1159
+ expect(getGvlid(MODULE_TYPE_UID, MOCK_MODULE, fallbackFn)).to.equal(123);
1160
+ });
1161
+ it('should use uid over analytics', () => {
1162
+ entry = {modules: {[MODULE_TYPE_UID]: 123, [MODULE_TYPE_ANALYTICS]: 321}};
1163
+ expect(getGvlid(MODULE_TYPE_ANALYTICS, MOCK_MODULE, fallbackFn)).to.equal(123);
1164
+ })
1165
+ })
1166
+ })
1167
+ })
1189
1168
 
1190
- it('should pass extra arguments to analytics\' getGvlid', () => {
1191
- getGvlidForAnalyticsAdapterStub.withArgs('analytics').returns(321);
1192
- const cfg = {some: 'args'};
1193
- getGvlid('analytics', cfg);
1194
- sinon.assert.calledWith(getGvlidForAnalyticsAdapterStub, 'analytics', cfg);
1169
+ it('should use fallbackFn if no other lookup produces a gvl id', () => {
1170
+ expect(getGvlid('type', MOCK_MODULE, () => 321)).to.equal(321);
1195
1171
  });
1196
1172
  });
1197
1173
 
1198
- describe('getGvlidForAnalyticsAdapter', () => {
1174
+ describe('getGvlidFromAnalyticsConfig', () => {
1199
1175
  let getAnalyticsAdapter, adapter, adapterEntry;
1200
1176
 
1201
1177
  beforeEach(() => {
@@ -1207,26 +1183,20 @@ describe('gdpr enforcement', function () {
1207
1183
  getAnalyticsAdapter.withArgs('analytics').returns(adapterEntry);
1208
1184
  });
1209
1185
 
1210
- it('should return gvlid from adapterManager if defined', () => {
1211
- adapterEntry.gvlid = 123;
1212
- adapter.gvlid = 321
1213
- expect(internal.getGvlidForAnalyticsAdapter('analytics')).to.equal(123);
1214
- });
1215
-
1216
1186
  it('should return gvlid from adapter if defined', () => {
1217
1187
  adapter.gvlid = 321;
1218
- expect(internal.getGvlidForAnalyticsAdapter('analytics')).to.equal(321);
1188
+ expect(getGvlidFromAnalyticsAdapter('analytics')).to.equal(321);
1219
1189
  });
1220
1190
 
1221
1191
  it('should invoke adapter.gvlid if it\'s a function', () => {
1222
1192
  adapter.gvlid = (cfg) => cfg.k
1223
1193
  const cfg = {k: 231};
1224
- expect(internal.getGvlidForAnalyticsAdapter('analytics', cfg)).to.eql(231);
1194
+ expect(getGvlidFromAnalyticsAdapter('analytics', cfg)).to.eql(231);
1225
1195
  });
1226
1196
 
1227
1197
  it('should not choke if adapter gvlid fn throws', () => {
1228
1198
  adapter.gvlid = () => { throw new Error(); };
1229
- expect(internal.getGvlidForAnalyticsAdapter('analytics')).to.not.be.ok;
1199
+ expect(getGvlidFromAnalyticsAdapter('analytics')).to.not.be.ok;
1230
1200
  });
1231
1201
  });
1232
1202
  })
@@ -76,7 +76,8 @@ describe('GlobalsunBidAdapter', function () {
76
76
  gdprConsent: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
77
77
  refererInfo: {
78
78
  referer: 'https://test.com'
79
- }
79
+ },
80
+ timeout: 500
80
81
  };
81
82
 
82
83
  describe('isBidRequestValid', function () {