prebid.js 9.4.1 → 9.6.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 (397) hide show
  1. package/.eslintrc.js +31 -5
  2. package/.github/workflows/jscpd.yml +2 -2
  3. package/.github/workflows/linter.yml +107 -0
  4. package/creative/crossDomain.js +6 -3
  5. package/dist/33acrossAnalyticsAdapter.js +1 -1
  6. package/dist/33acrossBidAdapter.js +1 -1
  7. package/dist/33acrossIdSystem.js +1 -1
  8. package/dist/BTBidAdapter.js +1 -1
  9. package/dist/adagioAnalyticsAdapter.js +1 -1
  10. package/dist/adagioBidAdapter.js +1 -1
  11. package/dist/adagioRtdProvider.js +1 -1
  12. package/dist/adagioUtils.js +1 -1
  13. package/dist/addefendBidAdapter.js +1 -1
  14. package/dist/adgenerationBidAdapter.js +1 -1
  15. package/dist/adkernelAdnBidAdapter.js +1 -1
  16. package/dist/adkernelBidAdapter.js +1 -1
  17. package/dist/adkernelUtils.js +1 -0
  18. package/dist/adlooxRtdProvider.js +1 -1
  19. package/dist/admixerBidAdapter.js +1 -1
  20. package/dist/adqueryBidAdapter.js +1 -1
  21. package/dist/adrelevantisBidAdapter.js +1 -1
  22. package/dist/adstirBidAdapter.js +1 -1
  23. package/dist/adtrgtmeBidAdapter.js +1 -1
  24. package/dist/advRedAnalyticsAdapter.js +1 -0
  25. package/dist/adxcgAnalyticsAdapter.js +1 -1
  26. package/dist/adxcgBidAdapter.js +1 -1
  27. package/dist/adyoulikeBidAdapter.js +1 -1
  28. package/dist/agmaAnalyticsAdapter.js +1 -1
  29. package/dist/aidemBidAdapter.js +1 -1
  30. package/dist/ajaBidAdapter.js +1 -1
  31. package/dist/akamaiDapRtdProvider.js +1 -1
  32. package/dist/amxBidAdapter.js +1 -1
  33. package/dist/amxIdSystem.js +1 -1
  34. package/dist/anonymisedRtdProvider.js +1 -1
  35. package/dist/apacdexBidAdapter.js +1 -1
  36. package/dist/appierAnalyticsAdapter.js +1 -1
  37. package/dist/appnexusBidAdapter.js +1 -1
  38. package/dist/asoBidAdapter.js +1 -1
  39. package/dist/axonixBidAdapter.js +1 -1
  40. package/dist/azerionedgeRtdProvider.js +1 -1
  41. package/dist/bidglassBidAdapter.js +1 -1
  42. package/dist/big-richmediaBidAdapter.js +1 -1
  43. package/dist/bridBidAdapter.js +1 -1
  44. package/dist/bridgewellBidAdapter.js +1 -1
  45. package/dist/brightMountainMediaBidAdapter.js +1 -1
  46. package/dist/carodaBidAdapter.js +1 -1
  47. package/dist/chtnwBidAdapter.js +1 -1
  48. package/dist/chunk-core.js +1 -1
  49. package/dist/concertBidAdapter.js +1 -1
  50. package/dist/connatixBidAdapter.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/contxtfulRtdProvider.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/currencyUtils.js +1 -1
  60. package/dist/cwireBidAdapter.js +1 -1
  61. package/dist/dailymotionBidAdapter.js +1 -1
  62. package/dist/debugging-standalone.js +1 -1
  63. package/dist/dependencies.json +69 -8
  64. package/dist/dfpAdServerVideo.js +1 -1
  65. package/dist/dfpAdpod.js +1 -1
  66. package/dist/dfpUtils.js +1 -1
  67. package/dist/discoveryBidAdapter.js +1 -1
  68. package/dist/dspxBidAdapter.js +1 -1
  69. package/dist/dxkultureBidAdapter.js +1 -1
  70. package/dist/eightPodAnalyticsAdapter.js +1 -1
  71. package/dist/eightPodBidAdapter.js +1 -1
  72. package/dist/eplanningBidAdapter.js +1 -1
  73. package/dist/euidIdSystem.js +1 -1
  74. package/dist/exadsBidAdapter.js +1 -1
  75. package/dist/feedadBidAdapter.js +1 -1
  76. package/dist/finativeBidAdapter.js +1 -1
  77. package/dist/fintezaAnalyticsAdapter.js +1 -1
  78. package/dist/fpdUtils.js +1 -0
  79. package/dist/freewheel-sspBidAdapter.js +1 -1
  80. package/dist/gmosspBidAdapter.js +1 -1
  81. package/dist/goldbachBidAdapter.js +1 -1
  82. package/dist/gptPreAuction.js +1 -1
  83. package/dist/gptUtils.js +1 -1
  84. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  85. package/dist/greenbidsRtdProvider.js +1 -1
  86. package/dist/gridBidAdapter.js +1 -1
  87. package/dist/growthCodeAnalyticsAdapter.js +1 -1
  88. package/dist/growthCodeRtdProvider.js +1 -1
  89. package/dist/gumgumBidAdapter.js +1 -1
  90. package/dist/h12mediaBidAdapter.js +1 -1
  91. package/dist/hypelabBidAdapter.js +1 -1
  92. package/dist/id5AnalyticsAdapter.js +1 -1
  93. package/dist/id5IdSystem.js +1 -1
  94. package/dist/imdsBidAdapter.js +1 -1
  95. package/dist/improvedigitalBidAdapter.js +1 -1
  96. package/dist/insticatorBidAdapter.js +1 -1
  97. package/dist/intentIqAnalyticsAdapter.js +1 -0
  98. package/dist/ixBidAdapter.js +1 -1
  99. package/dist/jixieBidAdapter.js +1 -1
  100. package/dist/justpremiumBidAdapter.js +1 -1
  101. package/dist/jwplayerBidAdapter.js +1 -1
  102. package/dist/jwplayerRtdProvider.js +1 -1
  103. package/dist/kargoBidAdapter.js +1 -1
  104. package/dist/kimberliteBidAdapter.js +1 -1
  105. package/dist/konduitAnalyticsAdapter.js +1 -1
  106. package/dist/kueezBidAdapter.js +1 -1
  107. package/dist/lassoBidAdapter.js +1 -1
  108. package/dist/lifestreetBidAdapter.js +1 -1
  109. package/dist/liveIntentIdSystem.js +1 -1
  110. package/dist/logicadBidAdapter.js +1 -1
  111. package/dist/loglyliftBidAdapter.js +1 -1
  112. package/dist/luceadBidAdapter.js +1 -1
  113. package/dist/mabidderBidAdapter.js +1 -1
  114. package/dist/magniteAnalyticsAdapter.js +1 -1
  115. package/dist/malltvAnalyticsAdapter.js +1 -1
  116. package/dist/marsmediaBidAdapter.js +1 -1
  117. package/dist/mediafuseBidAdapter.js +1 -1
  118. package/dist/mediagoBidAdapter.js +1 -1
  119. package/dist/medianetAnalyticsAdapter.js +1 -1
  120. package/dist/medianetBidAdapter.js +1 -1
  121. package/dist/mediasquareBidAdapter.js +1 -1
  122. package/dist/mgidBidAdapter.js +1 -1
  123. package/dist/minutemediaBidAdapter.js +1 -1
  124. package/dist/missenaBidAdapter.js +1 -1
  125. package/dist/mobianRtdProvider.js +1 -1
  126. package/dist/nextMillenniumBidAdapter.js +1 -1
  127. package/dist/nexx360BidAdapter.js +1 -1
  128. package/dist/nobidAnalyticsAdapter.js +1 -1
  129. package/dist/nobidBidAdapter.js +1 -1
  130. package/dist/not-for-prod/prebid.js +208 -199
  131. package/dist/oguryBidAdapter.js +1 -1
  132. package/dist/onetagBidAdapter.js +1 -1
  133. package/dist/ooloAnalyticsAdapter.js +1 -1
  134. package/dist/openwebBidAdapter.js +1 -1
  135. package/dist/openxBidAdapter.js +1 -1
  136. package/dist/optidigitalBidAdapter.js +1 -1
  137. package/dist/optoutBidAdapter.js +1 -1
  138. package/dist/orbidderBidAdapter.js +1 -1
  139. package/dist/outbrainBidAdapter.js +1 -1
  140. package/dist/paapi.js +1 -1
  141. package/dist/permutiveRtdProvider.js +1 -1
  142. package/dist/pixfutureBidAdapter.js +1 -1
  143. package/dist/playdigoBidAdapter.js +1 -1
  144. package/dist/prebidServerBidAdapter.js +1 -1
  145. package/dist/programmaticaBidAdapter.js +1 -1
  146. package/dist/publinkIdSystem.js +1 -1
  147. package/dist/publirBidAdapter.js +1 -1
  148. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  149. package/dist/pubmaticBidAdapter.js +1 -1
  150. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  151. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  152. package/dist/pxyzBidAdapter.js +1 -1
  153. package/dist/quantcastBidAdapter.js +1 -1
  154. package/dist/readpeakBidAdapter.js +1 -1
  155. package/dist/relaidoBidAdapter.js +1 -1
  156. package/dist/relevatehealthBidAdapter.js +1 -1
  157. package/dist/retailspotBidAdapter.js +1 -1
  158. package/dist/rhythmoneBidAdapter.js +1 -1
  159. package/dist/ringieraxelspringerBidAdapter.js +1 -1
  160. package/dist/riseBidAdapter.js +1 -1
  161. package/dist/riseUtils.js +1 -0
  162. package/dist/rubiconBidAdapter.js +1 -1
  163. package/dist/schainSerializer.js +1 -0
  164. package/dist/seedingAllianceBidAdapter.js +1 -1
  165. package/dist/seedtagBidAdapter.js +1 -1
  166. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  167. package/dist/sharethroughBidAdapter.js +1 -1
  168. package/dist/shinezBidAdapter.js +1 -1
  169. package/dist/sizeMapping.js +1 -1
  170. package/dist/sizeUtils.js +1 -1
  171. package/dist/smaatoBidAdapter.js +1 -1
  172. package/dist/smartadserverBidAdapter.js +1 -1
  173. package/dist/smarthubBidAdapter.js +1 -1
  174. package/dist/smartxBidAdapter.js +1 -1
  175. package/dist/smilewantedBidAdapter.js +1 -1
  176. package/dist/snigelBidAdapter.js +1 -1
  177. package/dist/sonobiBidAdapter.js +1 -1
  178. package/dist/sovrnBidAdapter.js +1 -1
  179. package/dist/sspBCBidAdapter.js +1 -1
  180. package/dist/stnBidAdapter.js +1 -1
  181. package/dist/stvBidAdapter.js +1 -1
  182. package/dist/sublimeBidAdapter.js +1 -1
  183. package/dist/symitriDapRtdProvider.js +1 -0
  184. package/dist/taboolaBidAdapter.js +1 -1
  185. package/dist/tappxBidAdapter.js +1 -1
  186. package/dist/targetVideoBidAdapter.js +1 -1
  187. package/dist/targetVideoUtils.js +1 -0
  188. package/dist/teadsBidAdapter.js +1 -1
  189. package/dist/telariaBidAdapter.js +1 -1
  190. package/dist/teqblazeUtils.js +1 -1
  191. package/dist/terceptAnalyticsAdapter.js +1 -1
  192. package/dist/themoneytizerBidAdapter.js +1 -1
  193. package/dist/trionBidAdapter.js +1 -1
  194. package/dist/tripleliftBidAdapter.js +1 -1
  195. package/dist/ttdBidAdapter.js +1 -1
  196. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  197. package/dist/uid2IdSystem.js +1 -1
  198. package/dist/uid2IdSystem_shared.js +1 -1
  199. package/dist/underdogmediaBidAdapter.js +1 -1
  200. package/dist/undertoneBidAdapter.js +1 -1
  201. package/dist/unrulyBidAdapter.js +1 -1
  202. package/dist/userAgentUtils.js +1 -0
  203. package/dist/utiqIdSystem.js +1 -1
  204. package/dist/vidazooUtils.js +1 -1
  205. package/dist/videobyteBidAdapter.js +1 -1
  206. package/dist/visxBidAdapter.js +1 -1
  207. package/dist/vuukleBidAdapter.js +1 -1
  208. package/dist/widespaceBidAdapter.js +1 -1
  209. package/dist/winrBidAdapter.js +1 -1
  210. package/dist/yahooAdsBidAdapter.js +1 -1
  211. package/dist/yandexIdSystem.js +1 -1
  212. package/dist/yieldmoBidAdapter.js +1 -1
  213. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  214. package/integrationExamples/gpt/x-domain/creative.html +1 -1
  215. package/libraries/adkernelUtils/adkernelUtils.js +11 -0
  216. package/libraries/currencyUtils/floor.js +23 -0
  217. package/libraries/dfpUtils/dfpUtils.js +7 -0
  218. package/libraries/fpdUtils/deviceInfo.js +58 -0
  219. package/libraries/fpdUtils/pageInfo.js +73 -0
  220. package/libraries/gptUtils/gptUtils.js +23 -1
  221. package/libraries/riseUtils/index.js +330 -0
  222. package/libraries/schainSerializer/schainSerializer.js +24 -0
  223. package/libraries/sizeUtils/tranformSize.js +43 -0
  224. package/libraries/targetVideoUtils/bidderUtils.js +178 -0
  225. package/libraries/targetVideoUtils/constants.js +23 -0
  226. package/libraries/teqblazeUtils/bidderUtils.js +15 -11
  227. package/libraries/userAgentUtils/index.js +58 -0
  228. package/libraries/userAgentUtils/userAgentTypes.enums.js +22 -0
  229. package/modules/.submodules.json +1 -0
  230. package/modules/33acrossAnalyticsAdapter.js +2 -0
  231. package/modules/adagioAnalyticsAdapter.js +101 -84
  232. package/modules/adagioAnalyticsAdapter.md +4 -0
  233. package/modules/adagioBidAdapter.js +5 -17
  234. package/modules/adagioRtdProvider.js +18 -4
  235. package/modules/adkernelAdnBidAdapter.js +1 -12
  236. package/modules/adkernelBidAdapter.js +4 -13
  237. package/modules/adlooxAnalyticsAdapter.js +1 -0
  238. package/modules/admixerBidAdapter.js +10 -6
  239. package/modules/admixerBidAdapter.md +7 -10
  240. package/modules/adtrgtmeBidAdapter.js +1 -1
  241. package/modules/advRedAnalyticsAdapter.js +198 -0
  242. package/modules/advRedAnalyticsAdapter.md +30 -0
  243. package/modules/aidemBidAdapter.js +2 -0
  244. package/modules/akamaiDapRtdProvider.js +19 -798
  245. package/modules/anonymisedRtdProvider.js +5 -1
  246. package/modules/anonymisedRtdProvider.md +1 -1
  247. package/modules/apacdexBidAdapter.js +1 -1
  248. package/modules/appnexusBidAdapter.js +56 -2
  249. package/modules/automatadAnalyticsAdapter.js +2 -0
  250. package/modules/azerionedgeRtdProvider.js +13 -3
  251. package/modules/azerionedgeRtdProvider.md +0 -17
  252. package/modules/bridBidAdapter.js +47 -47
  253. package/modules/cleanioRtdProvider.js +1 -0
  254. package/modules/concertBidAdapter.js +1 -1
  255. package/modules/connatixBidAdapter.js +36 -8
  256. package/modules/connectIdSystem.js +6 -2
  257. package/modules/contxtfulRtdProvider.js +20 -2
  258. package/modules/contxtfulRtdProvider.md +1 -0
  259. package/modules/craftBidAdapter.js +1 -1
  260. package/modules/criteoBidAdapter.js +1 -1
  261. package/modules/cwireBidAdapter.js +5 -1
  262. package/modules/dailymotionBidAdapter.js +85 -65
  263. package/modules/debugging/debugging.js +3 -0
  264. package/modules/dfpAdServerVideo.js +15 -33
  265. package/modules/dfpAdpod.js +2 -6
  266. package/modules/dgkeywordRtdProvider.js +2 -0
  267. package/modules/discoveryBidAdapter.js +26 -210
  268. package/modules/dspxBidAdapter.js +176 -54
  269. package/modules/eightPodAnalyticsAdapter.js +28 -34
  270. package/modules/eightPodBidAdapter.js +113 -57
  271. package/modules/fintezaAnalyticsAdapter.js +9 -4
  272. package/modules/goldbachBidAdapter.js +1 -1
  273. package/modules/gptPreAuction.js +63 -4
  274. package/modules/growthCodeAnalyticsAdapter.js +1 -1
  275. package/modules/growthCodeRtdProvider.js +1 -1
  276. package/modules/gumgumBidAdapter.js +14 -10
  277. package/modules/improvedigitalBidAdapter.js +1 -1
  278. package/modules/insticatorBidAdapter.js +35 -31
  279. package/modules/intentIqAnalyticsAdapter.js +234 -0
  280. package/modules/intentIqAnalyticsAdapter.md +27 -0
  281. package/modules/intentIqIdSystem.md +0 -0
  282. package/modules/jwplayerBidAdapter.js +1 -1
  283. package/modules/jwplayerRtdProvider.js +26 -6
  284. package/modules/jwplayerVideoProvider.js +6 -0
  285. package/modules/kargoBidAdapter.js +11 -14
  286. package/modules/kimberliteBidAdapter.js +24 -7
  287. package/modules/kimberliteBidAdapter.md +30 -1
  288. package/modules/mediafuseBidAdapter.js +1 -1
  289. package/modules/mediagoBidAdapter.js +7 -176
  290. package/modules/medianetBidAdapter.js +101 -40
  291. package/modules/mgidBidAdapter.js +3 -1
  292. package/modules/minutemediaBidAdapter.js +21 -398
  293. package/modules/mobianRtdProvider.js +16 -2
  294. package/modules/nextMillenniumBidAdapter.js +1 -27
  295. package/modules/nexx360BidAdapter.js +3 -2
  296. package/modules/nobidBidAdapter.js +1 -1
  297. package/modules/openwebBidAdapter.js +18 -396
  298. package/modules/optoutBidAdapter.js +1 -1
  299. package/modules/paapi.js +48 -35
  300. package/modules/permutiveRtdProvider.js +72 -22
  301. package/modules/playdigoBidAdapter.js +4 -2
  302. package/modules/prebidServerBidAdapter/index.js +4 -2
  303. package/modules/prebidServerBidAdapter/ortbConverter.js +1 -0
  304. package/modules/programmaticaBidAdapter.js +1 -1
  305. package/modules/publirBidAdapter.js +20 -273
  306. package/modules/pubmaticBidAdapter.js +12 -0
  307. package/modules/pubxaiAnalyticsAdapter.js +306 -164
  308. package/modules/relevatehealthBidAdapter.js +2 -1
  309. package/modules/resetdigitalBidAdapter.md +54 -45
  310. package/modules/richaudienceBidAdapter.js +1 -1
  311. package/modules/riseBidAdapter.js +19 -400
  312. package/modules/rtdModule/index.js +5 -3
  313. package/modules/shinezBidAdapter.js +17 -361
  314. package/modules/sirdataRtdProvider.js +2 -0
  315. package/modules/sizeMapping.js +2 -5
  316. package/modules/smaatoBidAdapter.js +18 -1
  317. package/modules/smarthubBidAdapter.js +45 -177
  318. package/modules/smilewantedBidAdapter.js +26 -22
  319. package/modules/snigelBidAdapter.js +1 -1
  320. package/modules/sonobiBidAdapter.js +5 -10
  321. package/modules/stnBidAdapter.js +22 -398
  322. package/modules/symitriDapRtdProvider.js +812 -0
  323. package/modules/symitriDapRtdProvider.md +49 -0
  324. package/modules/targetVideoBidAdapter.js +120 -152
  325. package/modules/targetVideoBidAdapter.md +20 -3
  326. package/modules/telariaBidAdapter.js +2 -32
  327. package/modules/uid2IdSystem_shared.js +51 -39
  328. package/modules/userId/eids.js +3 -0
  329. package/modules/utiqIdSystem.js +12 -10
  330. package/modules/validationFpdModule/index.js +22 -17
  331. package/modules/videojsVideoProvider.js +3 -0
  332. package/modules/visxBidAdapter.js +1 -1
  333. package/modules/winrBidAdapter.js +2 -27
  334. package/modules/yahooAdsBidAdapter.js +1 -1
  335. package/modules/yandexIdSystem.js +1 -1
  336. package/package.json +4 -4
  337. package/plugins/eslint/index.js +73 -45
  338. package/src/adloader.js +1 -0
  339. package/src/ajax.js +15 -0
  340. package/src/config.js +0 -4
  341. package/src/debugging.js +1 -0
  342. package/src/prebid.js +4 -0
  343. package/src/secureCreatives.js +1 -1
  344. package/src/storageManager.js +62 -73
  345. package/src/targeting.js +26 -20
  346. package/src/utils.js +9 -0
  347. package/test/pages/consent_mgt_gdpr.html +1 -1
  348. package/test/spec/ajax_spec.js +11 -0
  349. package/test/spec/creative/crossDomainCreative_spec.js +26 -9
  350. package/test/spec/fpd/gdpr_spec.js +1 -1
  351. package/test/spec/libraries/userAgentUtils_spec.js +109 -0
  352. package/test/spec/modules/adagioAnalyticsAdapter_spec.js +231 -141
  353. package/test/spec/modules/adagioBidAdapter_spec.js +32 -66
  354. package/test/spec/modules/adagioRtdProvider_spec.js +72 -0
  355. package/test/spec/modules/admixerBidAdapter_spec.js +21 -17
  356. package/test/spec/modules/advRedAnalyticsAdapter_spec.js +114 -0
  357. package/test/spec/modules/adxcgBidAdapter_spec.js +1 -1
  358. package/test/spec/modules/appnexusBidAdapter_spec.js +36 -0
  359. package/test/spec/modules/azerionedgeRtdProvider_spec.js +36 -21
  360. package/test/spec/modules/connatixBidAdapter_spec.js +55 -2
  361. package/test/spec/modules/connectIdSystem_spec.js +27 -28
  362. package/test/spec/modules/consentManagement_spec.js +1 -1
  363. package/test/spec/modules/contxtfulRtdProvider_spec.js +6 -0
  364. package/test/spec/modules/dailymotionBidAdapter_spec.js +497 -4
  365. package/test/spec/modules/discoveryBidAdapter_spec.js +9 -6
  366. package/test/spec/modules/dspxBidAdapter_spec.js +188 -7
  367. package/test/spec/modules/eightPodAnalyticsAdapter_spec.js +22 -13
  368. package/test/spec/modules/gptPreAuction_spec.js +143 -1
  369. package/test/spec/modules/gumgumBidAdapter_spec.js +17 -0
  370. package/test/spec/modules/insticatorBidAdapter_spec.js +8 -1
  371. package/test/spec/modules/intentIqAnalyticsAdapter_spec.js +172 -0
  372. package/test/spec/modules/jwplayerRtdProvider_spec.js +61 -0
  373. package/test/spec/modules/kargoBidAdapter_spec.js +7 -8
  374. package/test/spec/modules/kimberliteBidAdapter_spec.js +137 -65
  375. package/test/spec/modules/mediagoBidAdapter_spec.js +34 -37
  376. package/test/spec/modules/medianetBidAdapter_spec.js +297 -16
  377. package/test/spec/modules/mgidBidAdapter_spec.js +15 -5
  378. package/test/spec/modules/mobianRtdProvider_spec.js +1 -3
  379. package/test/spec/modules/nexx360BidAdapter_spec.js +1 -1
  380. package/test/spec/modules/paapi_spec.js +177 -111
  381. package/test/spec/modules/permutiveRtdProvider_spec.js +42 -8
  382. package/test/spec/modules/prebidServerBidAdapter_spec.js +17 -3
  383. package/test/spec/modules/proxistoreBidAdapter_spec.js +1 -1
  384. package/test/spec/modules/pubmaticBidAdapter_spec.js +40 -0
  385. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +970 -603
  386. package/test/spec/modules/pulsepointBidAdapter_spec.js +4 -4
  387. package/test/spec/modules/smaatoBidAdapter_spec.js +36 -1
  388. package/test/spec/modules/smarthubBidAdapter_spec.js +6 -4
  389. package/test/spec/modules/smilewantedBidAdapter_spec.js +57 -1
  390. package/test/spec/modules/symitriDapRtdProvider_spec.js +600 -0
  391. package/test/spec/modules/targetVideoBidAdapter_spec.js +112 -11
  392. package/test/spec/modules/yandexIdSystem_spec.js +6 -1
  393. package/test/spec/schainSerializer/schainSerializer_spec.js +138 -0
  394. package/test/spec/unit/core/storageManager_spec.js +68 -51
  395. package/test/spec/unit/pbjs_api_spec.js +11 -0
  396. package/test/spec/utils_spec.js +19 -0
  397. /package/src/utils/{gpdr.js → gdpr.js} +0 -0
@@ -1,23 +1,28 @@
1
- import {deepAccess, isFn, logError, logMessage} from '../src/utils.js';
2
1
  import {registerBidder} from '../src/adapters/bidderFactory.js';
3
2
  import {BANNER, NATIVE, VIDEO} from '../src/mediaTypes.js';
4
- import {config} from '../src/config.js';
5
- import {convertOrtbRequestToProprietaryNative} from '../src/native.js';
3
+ import {
4
+ buildPlacementProcessingFunction,
5
+ buildRequestsBase,
6
+ interpretResponseBuilder,
7
+ isBidRequestValid
8
+ } from '../libraries/teqblazeUtils/bidderUtils.js';
6
9
 
7
10
  const BIDDER_CODE = 'smarthub';
8
11
  const ALIASES = [
9
12
  {code: 'markapp', skipPbsAliasing: true},
10
13
  {code: 'jdpmedia', skipPbsAliasing: true},
11
14
  {code: 'tredio', skipPbsAliasing: true},
15
+ {code: 'vimayx', skipPbsAliasing: true},
12
16
  ];
13
17
  const BASE_URLS = {
14
18
  smarthub: 'https://prebid.smart-hub.io/pbjs',
15
19
  markapp: 'https://markapp-prebid.smart-hub.io/pbjs',
16
20
  jdpmedia: 'https://jdpmedia-prebid.smart-hub.io/pbjs',
17
- tredio: 'https://tredio-prebid.smart-hub.io/pbjs'
21
+ tredio: 'https://tredio-prebid.smart-hub.io/pbjs',
22
+ vimayx: 'https://vimayx-prebid.smart-hub.io/pbjs',
18
23
  };
19
24
 
20
- function getUrl(partnerName) {
25
+ const _getUrl = (partnerName) => {
21
26
  const aliases = ALIASES.map(el => el.code);
22
27
  if (aliases.includes(partnerName)) {
23
28
  return BASE_URLS[partnerName];
@@ -26,187 +31,50 @@ function getUrl(partnerName) {
26
31
  return `${BASE_URLS[BIDDER_CODE]}?partnerName=${partnerName}`;
27
32
  }
28
33
 
29
- function isBidResponseValid(bid) {
30
- if (!bid.requestId || !bid.cpm || !bid.creativeId || !bid.ttl || !bid.currency || !bid.hasOwnProperty('netRevenue')) {
31
- return false;
32
- }
33
- switch (bid.mediaType) {
34
- case BANNER:
35
- return Boolean(bid.width && bid.height && bid.ad);
36
- case VIDEO:
37
- return Boolean(bid.width && bid.height && (bid.vastUrl || bid.vastXml));
38
- case NATIVE:
39
- return Boolean(bid.native && bid.native.impressionTrackers && bid.native.impressionTrackers.length);
40
- default:
41
- return false;
42
- }
43
- }
44
-
45
- function getPlacementReqData(bid) {
46
- const { params, bidId, mediaTypes, bidder } = bid;
47
- const schain = bid.schain || {};
48
- const { partnerName, seat, token, iabCat, minBidfloor, pos } = params;
49
- const bidfloor = getBidFloor(bid);
50
-
51
- const plcmt = {
52
- partnerName: String(partnerName || bidder).toLowerCase(),
53
- seat,
54
- token,
55
- iabCat,
56
- minBidfloor,
57
- pos,
58
- bidId,
59
- schain,
60
- bidfloor,
61
- };
62
-
63
- if (mediaTypes && mediaTypes[BANNER]) {
64
- plcmt.adFormat = BANNER;
65
- plcmt.sizes = mediaTypes[BANNER].sizes;
66
- } else if (mediaTypes && mediaTypes[VIDEO]) {
67
- plcmt.adFormat = VIDEO;
68
- plcmt.playerSize = mediaTypes[VIDEO].playerSize;
69
- plcmt.minduration = mediaTypes[VIDEO].minduration;
70
- plcmt.maxduration = mediaTypes[VIDEO].maxduration;
71
- plcmt.mimes = mediaTypes[VIDEO].mimes;
72
- plcmt.protocols = mediaTypes[VIDEO].protocols;
73
- plcmt.startdelay = mediaTypes[VIDEO].startdelay;
74
- plcmt.placement = mediaTypes[VIDEO].plcmt;
75
- plcmt.plcmt = mediaTypes[VIDEO].plcmt; // https://github.com/prebid/Prebid.js/issues/10452
76
- plcmt.skip = mediaTypes[VIDEO].skip;
77
- plcmt.skipafter = mediaTypes[VIDEO].skipafter;
78
- plcmt.minbitrate = mediaTypes[VIDEO].minbitrate;
79
- plcmt.maxbitrate = mediaTypes[VIDEO].maxbitrate;
80
- plcmt.delivery = mediaTypes[VIDEO].delivery;
81
- plcmt.playbackmethod = mediaTypes[VIDEO].playbackmethod;
82
- plcmt.api = mediaTypes[VIDEO].api;
83
- plcmt.linearity = mediaTypes[VIDEO].linearity;
84
- } else if (mediaTypes && mediaTypes[NATIVE]) {
85
- plcmt.native = mediaTypes[NATIVE];
86
- plcmt.adFormat = NATIVE;
87
- }
88
-
89
- return plcmt;
90
- }
91
-
92
- function getBidFloor(bid) {
93
- if (!isFn(bid.getFloor)) {
94
- return deepAccess(bid, 'params.bidfloor', 0);
95
- }
96
-
97
- try {
98
- const bidFloor = bid.getFloor({
99
- currency: 'USD',
100
- mediaType: '*',
101
- size: '*',
34
+ const getPartnerName = (bid) => String(bid.params?.partnerName || bid.bidder).toLowerCase();
35
+
36
+ const getPlacementReqData = buildPlacementProcessingFunction({
37
+ addPlacementType() {},
38
+ addCustomFieldsToPlacement(bid, bidderRequest, placement) {
39
+ const { seat, token, iabCat, minBidfloor, pos } = bid.params;
40
+ Object.assign(placement, {
41
+ partnerName: getPartnerName(bid),
42
+ seat,
43
+ token,
44
+ iabCat,
45
+ minBidfloor,
46
+ pos,
102
47
  });
103
- return bidFloor.floor;
104
- } catch (e) {
105
- logError(e);
106
- return 0;
107
- }
108
- }
109
-
110
- function buildRequestParams(bidderRequest = {}, placements = []) {
111
- let deviceWidth = 0;
112
- let deviceHeight = 0;
113
-
114
- let winLocation;
115
- try {
116
- const winTop = window.top;
117
- deviceWidth = winTop.screen.width;
118
- deviceHeight = winTop.screen.height;
119
- winLocation = winTop.location;
120
- } catch (e) {
121
- logMessage(e);
122
- winLocation = window.location;
123
- }
124
-
125
- const refferUrl = bidderRequest.refererInfo && bidderRequest.refererInfo.page;
126
- let refferLocation;
127
- try {
128
- refferLocation = refferUrl && new URL(refferUrl);
129
- } catch (e) {
130
- logMessage(e);
131
48
  }
132
-
133
- let location = refferLocation || winLocation;
134
- const language = (navigator && navigator.language) ? navigator.language.split('-')[0] : '';
135
- const host = location.host;
136
- const page = location.pathname;
137
- const secure = location.protocol === 'https:' ? 1 : 0;
138
- return {
139
- deviceWidth,
140
- deviceHeight,
141
- language,
142
- secure,
143
- host,
144
- page,
145
- placements,
146
- coppa: config.getConfig('coppa') === true ? 1 : 0,
147
- ccpa: bidderRequest.uspConsent || undefined,
148
- gdpr: bidderRequest.gdprConsent || undefined,
149
- tmax: bidderRequest.timeout
150
- };
49
+ })
50
+
51
+ const buildRequests = (validBidRequests = [], bidderRequest = {}) => {
52
+ const bidsByPartner = validBidRequests.reduce((bidsByPartner, bid) => {
53
+ const partner = getPartnerName(bid);
54
+ (bidsByPartner[partner] = bidsByPartner[partner] || []).push(bid);
55
+ return bidsByPartner;
56
+ }, {});
57
+ return Object.entries(bidsByPartner).map(([partner, validBidRequests]) => {
58
+ return buildRequestsBase({
59
+ adUrl: _getUrl(partner),
60
+ bidderRequest,
61
+ validBidRequests,
62
+ placementProcessingFunction: getPlacementReqData
63
+ })
64
+ })
151
65
  }
152
66
 
153
67
  export const spec = {
154
68
  code: BIDDER_CODE,
155
69
  aliases: ALIASES,
156
70
  supportedMediaTypes: [BANNER, VIDEO, NATIVE],
157
-
158
- isBidRequestValid: (bid = {}) => {
159
- const { params, bidId, mediaTypes } = bid;
160
- let valid = Boolean(bidId && params && params.seat && params.token);
161
-
162
- if (mediaTypes && mediaTypes[BANNER]) {
163
- valid = valid && Boolean(mediaTypes[BANNER] && mediaTypes[BANNER].sizes);
164
- } else if (mediaTypes && mediaTypes[VIDEO]) {
165
- valid = valid && Boolean(mediaTypes[VIDEO] && mediaTypes[VIDEO].playerSize);
166
- } else if (mediaTypes && mediaTypes[NATIVE]) {
167
- valid = valid && Boolean(mediaTypes[NATIVE]);
168
- } else {
169
- valid = false;
71
+ isBidRequestValid: isBidRequestValid(['seat', 'token'], 'every'),
72
+ buildRequests,
73
+ interpretResponse: interpretResponseBuilder({
74
+ addtlBidValidation(bid) {
75
+ return bid.hasOwnProperty('netRevenue')
170
76
  }
171
- return valid;
172
- },
173
-
174
- buildRequests: (validBidRequests = [], bidderRequest = {}) => {
175
- // convert Native ORTB definition to old-style prebid native definition
176
- validBidRequests = convertOrtbRequestToProprietaryNative(validBidRequests);
177
- const tempObj = {};
178
-
179
- const len = validBidRequests.length;
180
- for (let i = 0; i < len; i++) {
181
- const bid = validBidRequests[i];
182
- const data = getPlacementReqData(bid);
183
- tempObj[data.partnerName] = tempObj[data.partnerName] || [];
184
- tempObj[data.partnerName].push(data);
185
- }
186
-
187
- return Object.keys(tempObj).map(key => {
188
- const request = buildRequestParams(bidderRequest, tempObj[key]);
189
- return {
190
- method: 'POST',
191
- url: getUrl(key),
192
- data: request,
193
- }
194
- });
195
- },
196
-
197
- interpretResponse: (serverResponse) => {
198
- let response = [];
199
- for (let i = 0; i < serverResponse.body.length; i++) {
200
- let resItem = serverResponse.body[i];
201
- if (isBidResponseValid(resItem)) {
202
- const advertiserDomains = resItem.adomain && resItem.adomain.length ? resItem.adomain : [];
203
- resItem.meta = { ...resItem.meta, advertiserDomains };
204
-
205
- response.push(resItem);
206
- }
207
- }
208
- return response;
209
- }
77
+ })
210
78
  };
211
79
 
212
80
  registerBidder(spec);
@@ -4,6 +4,7 @@ import {config} from '../src/config.js';
4
4
  import {registerBidder} from '../src/adapters/bidderFactory.js';
5
5
  import {BANNER, NATIVE, VIDEO} from '../src/mediaTypes.js';
6
6
  import {INSTREAM, OUTSTREAM} from '../src/video.js';
7
+ import {serializeSupplyChain} from '../libraries/schainSerializer/schainSerializer.js'
7
8
  import {convertOrtbRequestToProprietaryNative, toOrtbNativeRequest, toLegacyResponse} from '../src/native.js';
8
9
 
9
10
  const BIDDER_CODE = 'smilewanted';
@@ -82,7 +83,8 @@ export const spec = {
82
83
  or from mediaTypes.banner.pos
83
84
  */
84
85
  positionType: bid.params.positionType || '',
85
- prebidVersion: '$prebid.version$'
86
+ prebidVersion: '$prebid.version$',
87
+ schain: serializeSupplyChain(bid.schain, ['asi', 'sid', 'hp', 'rid', 'name', 'domain', 'ext']),
86
88
  };
87
89
 
88
90
  const floor = getBidFloor(bid);
@@ -154,16 +156,16 @@ export const spec = {
154
156
  if (response) {
155
157
  const dealId = response.dealId || '';
156
158
  const bidResponse = {
157
- requestId: bidRequestData.bidId,
159
+ ad: response.ad,
158
160
  cpm: response.cpm,
159
- width: response.width,
160
- height: response.height,
161
161
  creativeId: response.creativeId,
162
- dealId: response.dealId,
163
162
  currency: response.currency,
163
+ dealId: response.dealId,
164
+ height: response.height,
164
165
  netRevenue: response.isNetCpm,
166
+ requestId: bidRequestData.bidId,
165
167
  ttl: response.ttl,
166
- ad: response.ad,
168
+ width: response.width,
167
169
  };
168
170
 
169
171
  if (response.formatTypeSw === 'video_instream' || response.formatTypeSw === 'video_outstream') {
@@ -209,28 +211,30 @@ export const spec = {
209
211
  * @param {Object} uspConsent The USP consent parameters
210
212
  * @return {UserSync[]} The user syncs which should be dropped.
211
213
  */
212
- getUserSyncs: function(syncOptions, responses, gdprConsent, uspConsent) {
213
- let params = '';
214
-
215
- if (gdprConsent && typeof gdprConsent.consentString === 'string') {
216
- // add 'gdpr' only if 'gdprApplies' is defined
217
- if (typeof gdprConsent.gdprApplies === 'boolean') {
218
- params += `?gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`;
219
- } else {
220
- params += `?gdpr_consent=${gdprConsent.consentString}`;
214
+ getUserSyncs: function (syncOptions, responses, gdprConsent, uspConsent) {
215
+ const syncs = [];
216
+
217
+ if (syncOptions.iframeEnabled) {
218
+ let params = [];
219
+
220
+ if (gdprConsent && typeof gdprConsent.consentString === 'string') {
221
+ // add 'gdpr' only if 'gdprApplies' is defined
222
+ if (typeof gdprConsent.gdprApplies === 'boolean') {
223
+ params.push(`gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`);
224
+ } else {
225
+ params.push(`gdpr_consent=${gdprConsent.consentString}`);
226
+ }
221
227
  }
222
- }
223
228
 
224
- if (uspConsent) {
225
- params += `${params ? '&' : '?'}us_privacy=${encodeURIComponent(uspConsent)}`;
226
- }
229
+ if (uspConsent) {
230
+ params.push(`us_privacy=${encodeURIComponent(uspConsent)}`);
231
+ }
227
232
 
228
- const syncs = []
233
+ const paramsStr = params.length > 0 ? '?' + params.join('&') : '';
229
234
 
230
- if (syncOptions.iframeEnabled) {
231
235
  syncs.push({
232
236
  type: 'iframe',
233
- url: 'https://csync.smilewanted.com' + params
237
+ url: 'https://csync.smilewanted.com' + paramsStr
234
238
  });
235
239
  }
236
240
 
@@ -2,7 +2,7 @@ import {config} from '../src/config.js';
2
2
  import {registerBidder} from '../src/adapters/bidderFactory.js';
3
3
  import {BANNER} from '../src/mediaTypes.js';
4
4
  import {deepAccess, isArray, isFn, isPlainObject, inIframe, getDNT, generateUUID} from '../src/utils.js';
5
- import {hasPurpose1Consent} from '../src/utils/gpdr.js';
5
+ import {hasPurpose1Consent} from '../src/utils/gdpr.js';
6
6
  import {getStorageManager} from '../src/storageManager.js';
7
7
 
8
8
  const BIDDER_CODE = 'snigel';
@@ -414,8 +414,6 @@ export function _getPlatform(context = window) {
414
414
  * @return {object} firstPartyData - Data object containing first party information
415
415
  */
416
416
  function loadOrCreateFirstPartyData() {
417
- var localStorageEnabled;
418
-
419
417
  var FIRST_PARTY_KEY = '_iiq_fdata';
420
418
  var tryParse = function (data) {
421
419
  try {
@@ -426,19 +424,14 @@ function loadOrCreateFirstPartyData() {
426
424
  };
427
425
  var readData = function (key) {
428
426
  if (hasLocalStorage()) {
427
+ // TODO FIX RULES VIOLATION
428
+ // eslint-disable-next-line prebid/no-global
429
429
  return window.localStorage.getItem(key);
430
430
  }
431
431
  return null;
432
432
  };
433
+ // TODO FIX RULES VIOLATION - USE STORAGE MANAGER
433
434
  var hasLocalStorage = function () {
434
- if (typeof localStorageEnabled != 'undefined') { return localStorageEnabled; } else {
435
- try {
436
- localStorageEnabled = !!window.localStorage;
437
- return localStorageEnabled;
438
- } catch (e) {
439
- localStorageEnabled = false;
440
- }
441
- }
442
435
  return false;
443
436
  };
444
437
  var generateGUID = function () {
@@ -452,6 +445,8 @@ function loadOrCreateFirstPartyData() {
452
445
  var storeData = function (key, value) {
453
446
  try {
454
447
  if (hasLocalStorage()) {
448
+ // TODO FIX RULES VIOLATION
449
+ // eslint-disable-next-line prebid/no-global
455
450
  window.localStorage.setItem(key, value);
456
451
  }
457
452
  } catch (error) {