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
@@ -80,7 +80,7 @@ export const spec = {
80
80
  domain: parseUrl(page).hostname,
81
81
  page: page,
82
82
  },
83
- tmax: bidderRequest.timeout || config.getConfig('bidderTimeout') || 500,
83
+ tmax: bidderRequest.timeout,
84
84
  imp
85
85
  };
86
86
 
@@ -46,6 +46,54 @@ const isBidRequestValid = bid => {
46
46
  return true;
47
47
  };
48
48
 
49
+ /**
50
+ * Schain Object needed encodes URI Component with exlamation mark
51
+ * @param {String} str
52
+ * @returns {String}
53
+ */
54
+ function encodeURIComponentWithExlamation(str) {
55
+ return encodeURIComponent(str).replace(/!/g, '%21');
56
+ }
57
+
58
+ /**
59
+ * Serializes the supply chain object based on IAB standards
60
+ * @see https://github.com/InteractiveAdvertisingBureau/openrtb/blob/master/supplychainobject.md
61
+ * @param {Object} schainObj supply chain object
62
+ * @returns {string} serialized supply chain value
63
+ */
64
+ function serializeSupplyChainObj(schainObj) {
65
+ if (!schainObj || !schainObj.nodes) {
66
+ return '';
67
+ }
68
+ const nodeProps = ['asi', 'sid', 'hp', 'rid', 'name', 'domain'];
69
+ const serializedNodes = schainObj.nodes.map(node =>
70
+ nodeProps.map(prop => encodeURIComponentWithExlamation(node[prop] || '')).join(',')
71
+ ).join('!');
72
+
73
+ const serializedSchain = `${schainObj.ver},${schainObj.complete}!${serializedNodes}`;
74
+ return serializedSchain;
75
+ }
76
+
77
+ /**
78
+ * Gets highest floor between getFloor.floor and params.bidfloor
79
+ * @param {Object} bid
80
+ * @param {Object} mediaType
81
+ * @param {Array} sizes
82
+ * @param {Number} bidfloor
83
+ * @returns {Number} floor
84
+ */
85
+ function getBidFloor(bid, mediaType, sizes, bidfloor) {
86
+ let floor = bidfloor;
87
+ var size = sizes && sizes.length > 0 ? sizes[0] : '*';
88
+ if (typeof bid.getFloor === 'function') {
89
+ const floorInfo = bid.getFloor({currency: 'USD', mediaType, size});
90
+ if (typeof floorInfo === 'object' && floorInfo.currency === 'USD' && !isNaN(parseFloat(floorInfo.floor))) {
91
+ floor = Math.max(bidfloor, parseFloat(floorInfo.floor));
92
+ }
93
+ }
94
+ return floor;
95
+ }
96
+
49
97
  const isBidResponseValid = bid => {
50
98
  if (!bid || !bid.requestId || !bid.cpm || !bid.ttl || !bid.currency) {
51
99
  return false;
@@ -78,6 +126,7 @@ const buildRequests = (validBidRequests, bidderRequest) => {
78
126
 
79
127
  const videoContext = deepAccess(bid, 'mediaTypes.video.context');
80
128
  const bidfloor = deepAccess(bid, `params.bidfloor`, 0);
129
+ const floor = getBidFloor(bid, adType, sizes, bidfloor);
81
130
 
82
131
  const queryParams = {
83
132
  id: bid.params.id,
@@ -91,8 +140,8 @@ const buildRequests = (validBidRequests, bidderRequest) => {
91
140
  dt: /Mobi/.test(navigator.userAgent) ? 2 : 1,
92
141
  pid: bid.params.pid,
93
142
  requestId: bid.bidId,
94
- schain: bid.schain || '',
95
- bidfloor,
143
+ schain: serializeSupplyChainObj(bid.schain) || '',
144
+ bidfloor: floor,
96
145
  d: getDomainWithoutSubdomain(hostname), // 'vidoomy.com',
97
146
  // TODO: does the fallback make sense here?
98
147
  sp: encodeURIComponent(bidderRequest.refererInfo.page || bidderRequest.refererInfo.topmostLocation),
@@ -155,7 +155,7 @@ export const spec = {
155
155
  coppa: config.getConfig('coppa') === true ? 1 : 0,
156
156
  ccpa: bidderRequest.uspConsent || undefined,
157
157
  gdpr: bidderRequest.gdprConsent || undefined,
158
- tmax: config.getConfig('bidderTimeout')
158
+ tmax: bidderRequest.timeout
159
159
  };
160
160
 
161
161
  const len = validBidRequests.length;
@@ -46,7 +46,7 @@ export const spec = {
46
46
  coppa = 1;
47
47
  }
48
48
 
49
- tmax = config.getConfig('bidderTimeout');
49
+ tmax = bid.timeout;
50
50
 
51
51
  const params = {
52
52
  prebidJS: 1,
@@ -122,6 +122,7 @@ import {
122
122
  getStorageManager
123
123
  } from '../src/storageManager.js';
124
124
  import adapterManager from '../src/adapterManager.js';
125
+ import {MODULE_TYPE_RTD} from '../src/activities/modules.js';
125
126
 
126
127
  /** @type {string} */
127
128
  const MODULE_NAME = 'realTimeData';
@@ -153,7 +154,7 @@ const SFBX_LITE_DATA_SOURCE_LABEL = 'lite';
153
154
  const GVLID = 284;
154
155
 
155
156
  export const storage = getStorageManager({
156
- gvlid: GVLID,
157
+ moduleType: MODULE_TYPE_RTD,
157
158
  moduleName: SUBMODULE_NAME
158
159
  });
159
160
 
@@ -180,6 +181,7 @@ export const storage = getStorageManager({
180
181
  class WeboramaRtdProvider {
181
182
  #components;
182
183
  name = SUBMODULE_NAME;
184
+ gvlid = GVLID;
183
185
  /**
184
186
  * @param {Components} components
185
187
  */
@@ -17,7 +17,6 @@ import {BANNER, VIDEO} from '../src/mediaTypes.js';
17
17
  import {registerBidder} from '../src/adapters/bidderFactory.js';
18
18
  import {Renderer} from '../src/Renderer.js';
19
19
  import {find, includes} from '../src/polyfill.js';
20
- import {createEidsArray} from './userId/eids.js';
21
20
 
22
21
  const BIDDER_CODE = 'yieldmo';
23
22
  const GVLID = 173;
@@ -652,8 +651,8 @@ function shortcutProperty(extraCharacters, target, propertyName) {
652
651
  * @return array of eids objects
653
652
  */
654
653
  function getEids(bidRequest) {
655
- if (deepAccess(bidRequest, 'userId')) {
656
- return createEidsArray(bidRequest.userId) || [];
654
+ if (deepAccess(bidRequest, 'userIdAsEids')) {
655
+ return bidRequest.userIdAsEids || [];
657
656
  }
658
657
  };
659
658
 
@@ -53,7 +53,7 @@ export const spec = {
53
53
  const bidId = bidRequest.bidId;
54
54
  const transactionId = bidRequest.transactionId;
55
55
  const unitCode = bidRequest.adUnitCode;
56
- const timeout = config.getConfig('bidderTimeout');
56
+ const timeout = bidderRequest.timeout;
57
57
  const language = window.navigator.language;
58
58
  const screenSize = window.screen.width + 'x' + window.screen.height;
59
59
  const payload = {
@@ -7,8 +7,10 @@ import {getStorageManager} from '../src/storageManager.js';
7
7
  import {getRefererInfo} from '../src/refererDetection.js';
8
8
  import {includes as strIncludes} from '../src/polyfill.js';
9
9
  import {getGlobal} from '../src/prebidGlobal.js';
10
+ import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
10
11
 
11
- const storage = getStorageManager();
12
+ const MODULE_CODE = 'yuktamedia';
13
+ const storage = getStorageManager({moduleType: MODULE_TYPE_ANALYTICS, moduleName: MODULE_CODE});
12
14
  const yuktamediaAnalyticsVersion = 'v3.1.0';
13
15
 
14
16
  let initOptions;
@@ -261,7 +263,7 @@ yuktamediaAnalyticsAdapter.enableAnalytics = function (config) {
261
263
 
262
264
  adapterManager.registerAnalyticsAdapter({
263
265
  adapter: yuktamediaAnalyticsAdapter,
264
- code: 'yuktamedia'
266
+ code: MODULE_CODE,
265
267
  });
266
268
 
267
269
  export default yuktamediaAnalyticsAdapter;
@@ -6,7 +6,8 @@
6
6
  */
7
7
  import { isStr, isPlainObject } from '../src/utils.js';
8
8
  import {submodule} from '../src/hook.js';
9
- import { getStorageManager } from '../src/storageManager.js';
9
+ import {getStorageManager} from '../src/storageManager.js';
10
+ import {MODULE_TYPE_UID} from '../src/activities/modules.js';
10
11
 
11
12
  const ZEOTAP_COOKIE_NAME = 'IDP';
12
13
  const ZEOTAP_VENDOR_ID = 301;
@@ -21,7 +22,7 @@ function readFromLocalStorage() {
21
22
  }
22
23
 
23
24
  export function getStorage() {
24
- return getStorageManager({gvlid: ZEOTAP_VENDOR_ID, moduleName: ZEOTAP_MODULE_NAME});
25
+ return getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: ZEOTAP_MODULE_NAME});
25
26
  }
26
27
 
27
28
  export const storage = getStorage();
@@ -77,6 +77,9 @@ export const spec = {
77
77
  id: request.bidId,
78
78
  secure: secure
79
79
  };
80
+ if (params.tagid) {
81
+ impData.tagid = params.tagid;
82
+ }
80
83
  if (request.mediaTypes) {
81
84
  for (const mediaType in request.mediaTypes) {
82
85
  switch (mediaType) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prebid.js",
3
- "version": "7.43.0",
3
+ "version": "7.45.0",
4
4
  "description": "Header Bidding Management Library",
5
5
  "main": "src/prebid.js",
6
6
  "scripts": {
@@ -1,11 +1,17 @@
1
1
 
2
- let path = require('path');
3
- let _ = require('lodash');
4
- let resolveFrom = require('resolve-from');
2
+ const path = require('path');
3
+ const _ = require('lodash');
4
+ const resolveFrom = require('resolve-from');
5
+ const MODULES_PATH = path.resolve(__dirname, '../../modules');
6
+
7
+ function isInDirectory(filename, dir) {
8
+ const rel = path.relative(dir, filename);
9
+ return rel && !rel.startsWith('..') && !path.isAbsolute(rel);
10
+ }
5
11
 
6
12
  function flagErrors(context, node, importPath) {
7
13
  let absFileDir = path.dirname(context.getFilename());
8
- let absImportPath = path.resolve(absFileDir, importPath);
14
+ let absImportPath = importPath.startsWith('.') ? path.resolve(absFileDir, importPath) : require.resolve(importPath);
9
15
 
10
16
  try {
11
17
  resolveFrom(absFileDir, importPath);
@@ -20,16 +26,9 @@ function flagErrors(context, node, importPath) {
20
26
  ) {
21
27
  context.report(node, `import "${importPath}" not in import whitelist`);
22
28
  } else {
23
- let absModulePath = path.resolve(__dirname, '../../modules');
24
-
25
- // don't allow import of any files directly within modules folder or index.js files within modules' sub-folders
26
- if (
27
- path.dirname(absImportPath) === absModulePath || (
28
- absImportPath.startsWith(absModulePath) &&
29
- path.basename(absImportPath) === 'index.js'
30
- )
31
- ) {
32
- context.report(node, `import "${importPath}" cannot require module entry point`);
29
+ // do not allow cross-module imports
30
+ if (isInDirectory(absImportPath, MODULES_PATH) && (!isInDirectory(absImportPath, absFileDir) || absFileDir === MODULES_PATH)) {
31
+ context.report(node, `import "${importPath}": importing from modules is not allowed`);
33
32
  }
34
33
 
35
34
  // don't allow extension-less local imports
@@ -42,9 +42,11 @@ module.exports = function(api, options) {
42
42
  ];
43
43
 
44
44
  const PREBID_ROOT = path.resolve(__dirname, '..');
45
+ // on Windows, require paths are not filesystem paths
46
+ const SEP_PAT = new RegExp(path.sep.replace(/\\/g, '\\\\'), 'g')
45
47
 
46
48
  function relPath(from, toRelToProjectRoot) {
47
- return path.relative(path.dirname(from), path.join(PREBID_ROOT, toRelToProjectRoot));
49
+ return path.relative(path.dirname(from), path.join(PREBID_ROOT, toRelToProjectRoot)).replace(SEP_PAT, '/');
48
50
  }
49
51
 
50
52
  function getModuleName(filename) {
package/src/Renderer.js CHANGED
@@ -22,6 +22,7 @@ export function Renderer(options) {
22
22
  this.config = config;
23
23
  this.handlers = {};
24
24
  this.id = id;
25
+ this.renderNow = renderNow;
25
26
 
26
27
  // a renderer may push to the command queue to delay rendering until the
27
28
  // render function is loaded by loadExternalScript, at which point the the command
@@ -110,7 +111,7 @@ Renderer.prototype.process = function() {
110
111
  * @returns {Boolean}
111
112
  */
112
113
  export function isRendererRequired(renderer) {
113
- return !!(renderer && renderer.url);
114
+ return !!(renderer && (renderer.url || renderer.renderNow));
114
115
  }
115
116
 
116
117
  /**
@@ -0,0 +1,5 @@
1
+ export const MODULE_TYPE_CORE = 'core';
2
+ export const MODULE_TYPE_BIDDER = 'bidder';
3
+ export const MODULE_TYPE_UID = 'userId';
4
+ export const MODULE_TYPE_RTD = 'rtd';
5
+ export const MODULE_TYPE_ANALYTICS = 'analytics';
@@ -31,11 +31,12 @@ import {hook} from './hook.js';
31
31
  import {find, includes} from './polyfill.js';
32
32
  import {adunitCounter} from './adUnits.js';
33
33
  import {getRefererInfo} from './refererDetection.js';
34
- import {GdprConsentHandler, UspConsentHandler, GppConsentHandler} from './consentHandler.js';
34
+ import {GdprConsentHandler, UspConsentHandler, GppConsentHandler, GDPR_GVLIDS} from './consentHandler.js';
35
35
  import * as events from './events.js';
36
36
  import CONSTANTS from './constants.json';
37
37
  import {useMetrics} from './utils/perfMetrics.js';
38
38
  import {auctionManager} from './auctionManager.js';
39
+ import {MODULE_TYPE_ANALYTICS, MODULE_TYPE_BIDDER} from './activities/modules.js';
39
40
 
40
41
  export const PARTITIONS = {
41
42
  CLIENT: 'client',
@@ -338,13 +339,6 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
338
339
  }
339
340
  });
340
341
 
341
- bidRequests.forEach(bidRequest => {
342
- config.runWithBidder(bidRequest.bidderCode, () => {
343
- const fledgeEnabledFromConfig = config.getConfig('fledgeEnabled');
344
- bidRequest['fledgeEnabled'] = navigator.runAdAuction && fledgeEnabledFromConfig
345
- });
346
- });
347
-
348
342
  return bidRequests;
349
343
  }, 'makeBidRequests');
350
344
 
@@ -470,6 +464,7 @@ adapterManager.registerBidAdapter = function (bidAdapter, bidderCode, {supported
470
464
  if (bidAdapter && bidderCode) {
471
465
  if (typeof bidAdapter.callBids === 'function') {
472
466
  _bidderRegistry[bidderCode] = bidAdapter;
467
+ GDPR_GVLIDS.register(MODULE_TYPE_BIDDER, bidderCode, bidAdapter.getSpec?.().gvlid);
473
468
 
474
469
  if (FEATURES.VIDEO && includes(supportedMediaTypes, 'video')) {
475
470
  adapterManager.videoAdapters.push(bidderCode);
@@ -539,6 +534,7 @@ adapterManager.registerAnalyticsAdapter = function ({adapter, code, gvlid}) {
539
534
  if (typeof adapter.enableAnalytics === 'function') {
540
535
  adapter.code = code;
541
536
  _analyticsRegistry[code] = { adapter, gvlid };
537
+ GDPR_GVLIDS.register(MODULE_TYPE_ANALYTICS, code, gvlid);
542
538
  } else {
543
539
  logError(`Prebid Error: Analytics adaptor error for analytics "${code}"
544
540
  analytics adapter must implement an enableAnalytics() function`);
@@ -1,20 +1,32 @@
1
1
  import Adapter from '../adapter.js';
2
2
  import adapterManager from '../adapterManager.js';
3
- import { config } from '../config.js';
4
- import { createBid } from '../bidfactory.js';
5
- import { userSync } from '../userSync.js';
6
- import { nativeBidIsValid } from '../native.js';
7
- import { isValidVideoBid } from '../video.js';
3
+ import {config} from '../config.js';
4
+ import {createBid} from '../bidfactory.js';
5
+ import {userSync} from '../userSync.js';
6
+ import {nativeBidIsValid} from '../native.js';
7
+ import {isValidVideoBid} from '../video.js';
8
8
  import CONSTANTS from '../constants.json';
9
9
  import * as events from '../events.js';
10
10
  import {includes} from '../polyfill.js';
11
- import { ajax } from '../ajax.js';
12
- import { logWarn, logInfo, logError, parseQueryStringParameters, delayExecution, parseSizesInput, flatten, uniques, timestamp, deepAccess, isArray, isPlainObject } from '../utils.js';
13
- import { ADPOD } from '../mediaTypes.js';
14
- import { getHook, hook } from '../hook.js';
15
- import { getCoreStorageManager } from '../storageManager.js';
11
+ import {ajax} from '../ajax.js';
12
+ import {
13
+ deepAccess,
14
+ delayExecution,
15
+ flatten,
16
+ isArray,
17
+ isPlainObject,
18
+ logError,
19
+ logWarn,
20
+ parseQueryStringParameters,
21
+ parseSizesInput,
22
+ timestamp,
23
+ uniques
24
+ } from '../utils.js';
25
+ import {ADPOD} from '../mediaTypes.js';
26
+ import {getHook, hook} from '../hook.js';
27
+ import {getCoreStorageManager} from '../storageManager.js';
16
28
  import {auctionManager} from '../auctionManager.js';
17
- import { bidderSettings } from '../bidderSettings.js';
29
+ import {bidderSettings} from '../bidderSettings.js';
18
30
  import {useMetrics} from '../utils/perfMetrics.js';
19
31
 
20
32
  export const storage = getCoreStorageManager('bidderFactory');
@@ -187,7 +199,7 @@ export function registerBidder(spec) {
187
199
  export function newBidder(spec) {
188
200
  return Object.assign(new Adapter(spec.code), {
189
201
  getSpec: function() {
190
- return Object.freeze(spec);
202
+ return Object.freeze(Object.assign({}, spec));
191
203
  },
192
204
  registerSyncs,
193
205
  callBids: function(bidderRequest, addBidResponse, done, ajax, onTimelyResponse, configEnabledCallback) {
@@ -247,7 +259,9 @@ export function newBidder(spec) {
247
259
  fledgeAuctionConfigs.forEach((fledgeAuctionConfig) => {
248
260
  const bidRequest = bidRequestMap[fledgeAuctionConfig.bidId];
249
261
  if (bidRequest) {
250
- addComponentAuction(bidRequest, fledgeAuctionConfig);
262
+ addComponentAuction(bidRequest.adUnitCode, fledgeAuctionConfig.config);
263
+ } else {
264
+ logWarn('Received fledge auction configuration for an unknown bidId', fledgeAuctionConfig);
251
265
  }
252
266
  });
253
267
  },
@@ -463,13 +477,13 @@ export const registerSyncInner = hook('async', function(spec, responses, gdprCon
463
477
  syncs.forEach((sync) => {
464
478
  userSync.registerSync(sync.type, spec.code, sync.url)
465
479
  });
480
+ userSync.bidderDone(spec.code);
466
481
  }
467
482
  }
468
483
  }, 'registerSyncs')
469
484
 
470
- export const addComponentAuction = hook('sync', (_bidRequest, fledgeAuctionConfig) => {
471
- logInfo(`bidderFactory.addComponentAuction`, fledgeAuctionConfig);
472
- }, 'addComponentAuction')
485
+ export const addComponentAuction = hook('sync', (adUnitCode, fledgeAuctionConfig) => {
486
+ }, 'addComponentAuction');
473
487
 
474
488
  export function preloadBidderMappingFile(fn, adUnits) {
475
489
  if (FEATURES.VIDEO) {
@@ -118,3 +118,45 @@ export class GppConsentHandler extends ConsentHandler {
118
118
  }
119
119
  }
120
120
  }
121
+
122
+ export function gvlidRegistry() {
123
+ const registry = {};
124
+ const flat = {};
125
+ const none = {};
126
+ return {
127
+ /**
128
+ * Register a module's GVL ID.
129
+ * @param {string} moduleType defined in `activities/modules.js`
130
+ * @param {string} moduleName
131
+ * @param {number} gvlid
132
+ */
133
+ register(moduleType, moduleName, gvlid) {
134
+ if (gvlid) {
135
+ (registry[moduleName] = registry[moduleName] || {})[moduleType] = gvlid;
136
+ if (flat.hasOwnProperty(moduleName)) {
137
+ if (flat[moduleName] !== gvlid) flat[moduleName] = none;
138
+ } else {
139
+ flat[moduleName] = gvlid;
140
+ }
141
+ }
142
+ },
143
+ /**
144
+ * Get a module's GVL ID(s).
145
+ *
146
+ * @param {string} moduleName
147
+ * @return {{modules: {[moduleType]: number}, gvlid?: number}} an object where:
148
+ * `modules` is a map from module type to that module's GVL ID;
149
+ * `gvlid` is the single GVL ID for this family of modules (only defined
150
+ * if all modules with this name declared the same ID).
151
+ */
152
+ get(moduleName) {
153
+ const result = {modules: registry[moduleName] || {}};
154
+ if (flat.hasOwnProperty(moduleName) && flat[moduleName] !== none) {
155
+ result.gvlid = flat[moduleName];
156
+ }
157
+ return result;
158
+ }
159
+ }
160
+ }
161
+
162
+ export const GDPR_GVLIDS = gvlidRegistry();
package/src/native.js CHANGED
@@ -750,7 +750,11 @@ export function toLegacyResponse(ortbResponse, ortbRequest) {
750
750
  if (asset.title) {
751
751
  legacyResponse.title = asset.title.text;
752
752
  } else if (asset.img) {
753
- legacyResponse[requestAsset.img.type === NATIVE_IMAGE_TYPES.MAIN ? 'image' : 'icon'] = asset.img.url;
753
+ legacyResponse[requestAsset.img.type === NATIVE_IMAGE_TYPES.MAIN ? 'image' : 'icon'] = {
754
+ url: asset.img.url,
755
+ width: asset.img.w,
756
+ height: asset.img.h
757
+ };
754
758
  } else if (asset.data) {
755
759
  legacyResponse[PREBID_NATIVE_DATA_KEYS_TO_ORTB_INVERSE[NATIVE_ASSET_TYPES_INVERSE[requestAsset.data.type]]] = asset.data.value;
756
760
  }
@@ -51,6 +51,26 @@ export function parseDomain(url, {noLeadingWww = false, noPort = false} = {}) {
51
51
  return url;
52
52
  }
53
53
 
54
+ /**
55
+ * This function returns canonical URL which refers to an HTML link element, with the attribute of rel="canonical", found in the <head> element of your webpage
56
+ *
57
+ * @param {Object} doc document
58
+ * @returns {string|null}
59
+ */
60
+ function getCanonicalUrl(doc) {
61
+ try {
62
+ const element = doc.querySelector("link[rel='canonical']");
63
+
64
+ if (element !== null) {
65
+ return element.href;
66
+ }
67
+ } catch (e) {
68
+ // Ignore error
69
+ }
70
+
71
+ return null;
72
+ }
73
+
54
74
  /**
55
75
  * @param {Window} win Window
56
76
  * @returns {Function}
@@ -75,26 +95,6 @@ export function detectReferer(win) {
75
95
  }
76
96
  }
77
97
 
78
- /**
79
- * This function returns canonical URL which refers to an HTML link element, with the attribute of rel="canonical", found in the <head> element of your webpage
80
- *
81
- * @param {Object} doc document
82
- * @returns {string|null}
83
- */
84
- function getCanonicalUrl(doc) {
85
- try {
86
- const element = doc.querySelector("link[rel='canonical']");
87
-
88
- if (element !== null) {
89
- return element.href;
90
- }
91
- } catch (e) {
92
- // Ignore error
93
- }
94
-
95
- return null;
96
- }
97
-
98
98
  // TODO: the meaning of "reachedTop" seems to be intentionally ambiguous - best to leave them out of
99
99
  // the typedef for now. (for example, unit tests enforce that "reachedTop" should be false in some situations where we
100
100
  // happily provide a location for the top).
@@ -260,7 +260,25 @@ export function detectReferer(win) {
260
260
  return refererInfo;
261
261
  }
262
262
 
263
+ // cache result of fn (= referer info) as long as:
264
+ // - we are the top window
265
+ // - canonical URL tag and window location have not changed
266
+ export function cacheWithLocation(fn, win = window) {
267
+ if (win.top !== win) return fn;
268
+ let canonical, href, value;
269
+ return function () {
270
+ const newCanonical = getCanonicalUrl(win.document);
271
+ const newHref = win.location.href;
272
+ if (canonical !== newCanonical || newHref !== href) {
273
+ canonical = newCanonical;
274
+ href = newHref;
275
+ value = fn();
276
+ }
277
+ return value;
278
+ }
279
+ }
280
+
263
281
  /**
264
282
  * @type {function(): refererInfo}
265
283
  */
266
- export const getRefererInfo = detectReferer(window);
284
+ export const getRefererInfo = cacheWithLocation(detectReferer(window));
@@ -73,7 +73,7 @@ function handleRenderRequest(reply, data, adObject) {
73
73
  if (adObject == null) {
74
74
  emitAdRenderFail({
75
75
  reason: constants.AD_RENDER_FAILED_REASON.CANNOT_FIND_AD,
76
- message: `Cannot find ad '${data.adId}' for cross-origin render request`,
76
+ message: `Cannot find ad for cross-origin render request: '${data.adId}'`,
77
77
  id: data.adId
78
78
  });
79
79
  return;
@@ -111,7 +111,7 @@ function handleNativeRequest(reply, data, adObject) {
111
111
  // adId: '%%PATTERN:hb_adid%%'
112
112
  // }), '*');
113
113
  if (adObject == null) {
114
- logError(`Cannot find ad '${data.adId}' for x-origin event request`);
114
+ logError(`Cannot find ad for x-origin event request: '${data.adId}'`);
115
115
  return;
116
116
  }
117
117