prebid.js 5.14.0 → 5.18.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/.devcontainer/Dockerfile +11 -0
  2. package/.devcontainer/devcontainer.json +27 -0
  3. package/.devcontainer/postCreate.sh +6 -0
  4. package/allowedModules.js +2 -1
  5. package/integrationExamples/gpt/afpExample.html +242 -0
  6. package/integrationExamples/gpt/afpGamExample.html +152 -0
  7. package/integrationExamples/gpt/weboramaRtdProvider_example.html +126 -0
  8. package/modules/.submodules.json +29 -27
  9. package/modules/33acrossBidAdapter.js +23 -20
  10. package/modules/a4gBidAdapter.js +3 -3
  11. package/modules/ablidaBidAdapter.js +2 -2
  12. package/modules/adWMGBidAdapter.js +4 -4
  13. package/modules/adagioAnalyticsAdapter.js +4 -4
  14. package/modules/adagioBidAdapter.js +85 -82
  15. package/modules/adbookpspBidAdapter.js +56 -54
  16. package/modules/adfBidAdapter.js +24 -16
  17. package/modules/adgenerationBidAdapter.js +42 -18
  18. package/modules/adhashBidAdapter.js +105 -0
  19. package/modules/adhashBidAdapter.md +1 -1
  20. package/modules/adkernelAdnAnalyticsAdapter.js +6 -6
  21. package/modules/adkernelAdnBidAdapter.js +23 -23
  22. package/modules/adkernelBidAdapter.js +49 -44
  23. package/modules/adlooxAdServerVideo.js +26 -26
  24. package/modules/adlooxAnalyticsAdapter.js +38 -35
  25. package/modules/adlooxRtdProvider.js +49 -46
  26. package/modules/admanBidAdapter.js +4 -4
  27. package/modules/admixerBidAdapter.js +13 -2
  28. package/modules/admixerIdSystem.js +4 -4
  29. package/modules/adnowBidAdapter.js +4 -4
  30. package/modules/adnuntiusBidAdapter.js +6 -5
  31. package/modules/adoceanBidAdapter.js +10 -10
  32. package/modules/adpartnerBidAdapter.js +3 -3
  33. package/modules/adpod.js +45 -42
  34. package/modules/adprimeBidAdapter.js +4 -4
  35. package/modules/adqueryBidAdapter.js +204 -0
  36. package/modules/adqueryBidAdapter.md +32 -0
  37. package/modules/adrelevantisBidAdapter.js +30 -27
  38. package/modules/adriverBidAdapter.js +13 -13
  39. package/modules/adtargetBidAdapter.js +24 -24
  40. package/modules/adtelligentBidAdapter.js +29 -29
  41. package/modules/adtrueBidAdapter.js +35 -35
  42. package/modules/aduptechBidAdapter.js +10 -10
  43. package/modules/advangelistsBidAdapter.js +14 -14
  44. package/modules/adxcgAnalyticsAdapter.js +5 -5
  45. package/modules/adxcgBidAdapter.js +56 -56
  46. package/modules/adxpremiumAnalyticsAdapter.js +17 -17
  47. package/modules/adyoulikeBidAdapter.js +11 -11
  48. package/modules/afpBidAdapter.js +166 -0
  49. package/modules/afpBidAdapter.md +348 -0
  50. package/modules/ajaBidAdapter.js +12 -12
  51. package/modules/akamaiDAPIdSystem.js +9 -9
  52. package/modules/aniviewBidAdapter.js +2 -2
  53. package/modules/aolBidAdapter.js +15 -14
  54. package/modules/apacdexBidAdapter.js +16 -16
  55. package/modules/appnexusBidAdapter.js +59 -59
  56. package/modules/apstreamBidAdapter.js +5 -5
  57. package/modules/asoBidAdapter.js +30 -30
  58. package/modules/astraoneBidAdapter.js +2 -2
  59. package/modules/atsAnalyticsAdapter.js +35 -30
  60. package/modules/audiencerunBidAdapter.js +15 -15
  61. package/modules/automatadBidAdapter.js +2 -2
  62. package/modules/axonixBidAdapter.js +7 -7
  63. package/modules/beachfrontBidAdapter.js +23 -23
  64. package/modules/beopBidAdapter.js +22 -22
  65. package/modules/bidViewabilityIO.js +7 -7
  66. package/modules/bidglassBidAdapter.js +8 -8
  67. package/modules/bidscubeBidAdapter.js +3 -3
  68. package/modules/bizzclickBidAdapter.js +10 -10
  69. package/modules/bliinkBidAdapter.js +58 -32
  70. package/modules/bliinkBidAdapter.md +29 -6
  71. package/modules/bluebillywigBidAdapter.js +30 -30
  72. package/modules/boldwinBidAdapter.js +4 -4
  73. package/modules/braveBidAdapter.js +5 -5
  74. package/modules/bridgewellBidAdapter.js +5 -5
  75. package/modules/brightMountainMediaBidAdapter.js +10 -10
  76. package/modules/brightcomBidAdapter.js +18 -18
  77. package/modules/britepoolIdSystem.js +7 -7
  78. package/modules/browsiRtdProvider.js +8 -8
  79. package/modules/bucksenseBidAdapter.js +9 -9
  80. package/modules/buzzoolaBidAdapter.js +4 -4
  81. package/modules/byDataAnalyticsAdapter.js +12 -12
  82. package/modules/ccxBidAdapter.js +38 -38
  83. package/modules/cleanmedianetBidAdapter.js +9 -9
  84. package/modules/clickforceBidAdapter.js +4 -4
  85. package/modules/cointrafficBidAdapter.js +4 -4
  86. package/modules/coinzillaBidAdapter.js +2 -2
  87. package/modules/colossussspBidAdapter.js +7 -3
  88. package/modules/concertAnalyticsAdapter.js +3 -3
  89. package/modules/concertBidAdapter.js +16 -17
  90. package/modules/connectadBidAdapter.js +13 -13
  91. package/modules/consentManagement.js +29 -28
  92. package/modules/consentManagementUsp.js +14 -14
  93. package/modules/consumableBidAdapter.js +3 -3
  94. package/modules/contentexchangeBidAdapter.js +5 -5
  95. package/modules/conversantBidAdapter.js +32 -31
  96. package/modules/cpmstarBidAdapter.js +8 -9
  97. package/modules/craftBidAdapter.js +10 -10
  98. package/modules/criteoBidAdapter.js +16 -16
  99. package/modules/criteoIdSystem.js +5 -5
  100. package/modules/currency.js +18 -18
  101. package/modules/cwireBidAdapter.js +272 -0
  102. package/modules/cwireBidAdapter.md +43 -0
  103. package/modules/datablocksBidAdapter.js +12 -12
  104. package/modules/deepintentBidAdapter.js +13 -13
  105. package/modules/dgkeywordRtdProvider.js +10 -11
  106. package/modules/districtmDMXBidAdapter.js +15 -15
  107. package/modules/dmdIdSystem.js +5 -5
  108. package/modules/docereeBidAdapter.js +9 -9
  109. package/modules/dspxBidAdapter.js +5 -5
  110. package/modules/ebdrBidAdapter.js +9 -9
  111. package/modules/emx_digitalBidAdapter.js +23 -23
  112. package/modules/enrichmentFpdModule.js +10 -9
  113. package/modules/eplanningAnalyticsAdapter.js +2 -2
  114. package/modules/eplanningBidAdapter.js +10 -10
  115. package/modules/etargetBidAdapter.js +4 -4
  116. package/modules/express.js +9 -10
  117. package/modules/fabrickIdSystem.js +6 -6
  118. package/modules/feedadBidAdapter.js +5 -5
  119. package/modules/fintezaAnalyticsAdapter.js +4 -4
  120. package/modules/flocIdSystem.js +5 -5
  121. package/modules/fluctBidAdapter.js +6 -5
  122. package/modules/freewheel-sspBidAdapter.js +6 -6
  123. package/modules/gamoshiBidAdapter.js +22 -22
  124. package/modules/gdprEnforcement.js +13 -14
  125. package/modules/getintentBidAdapter.js +3 -4
  126. package/modules/glimpseBidAdapter.js +160 -48
  127. package/modules/glimpseBidAdapter.md +11 -74
  128. package/modules/gmosspBidAdapter.js +17 -17
  129. package/modules/gnetBidAdapter.js +5 -5
  130. package/modules/googleAnalyticsAdapter.js +6 -6
  131. package/modules/gothamadsBidAdapter.js +9 -9
  132. package/modules/gptPreAuction.js +7 -7
  133. package/modules/gridBidAdapter.js +15 -16
  134. package/modules/gridNMBidAdapter.js +214 -63
  135. package/modules/growadvertisingBidAdapter.js +7 -8
  136. package/modules/gumgumBidAdapter.js +19 -13
  137. package/modules/h12mediaBidAdapter.js +12 -12
  138. package/modules/haloIdSystem.js +8 -8
  139. package/modules/hybridBidAdapter.js +7 -7
  140. package/modules/iasRtdProvider.js +79 -63
  141. package/modules/id5IdSystem.js +24 -24
  142. package/modules/idImportLibrary.js +35 -35
  143. package/modules/idxIdSystem.js +3 -3
  144. package/modules/impactifyBidAdapter.js +10 -10
  145. package/modules/improvedigitalBidAdapter.js +36 -36
  146. package/modules/imuIdSystem.js +6 -6
  147. package/modules/inmarBidAdapter.js +2 -2
  148. package/modules/innityBidAdapter.js +3 -3
  149. package/modules/inskinBidAdapter.js +14 -2
  150. package/modules/inskinBidAdapter.md +5 -4
  151. package/modules/instreamTracking.js +5 -5
  152. package/modules/integr8BidAdapter.js +4 -4
  153. package/modules/intentIqIdSystem.js +7 -7
  154. package/modules/interactiveOffersBidAdapter.js +5 -5
  155. package/modules/invibesBidAdapter.js +53 -19
  156. package/modules/invisiblyAnalyticsAdapter.js +5 -5
  157. package/modules/iqmBidAdapter.js +19 -19
  158. package/modules/iqzoneBidAdapter.js +5 -5
  159. package/modules/ixBidAdapter.js +73 -73
  160. package/modules/jixieBidAdapter.js +6 -6
  161. package/modules/justpremiumBidAdapter.js +5 -1
  162. package/modules/kargoBidAdapter.js +16 -9
  163. package/modules/kargoBidAdapter.md +20 -0
  164. package/modules/kinessoIdSystem.js +8 -8
  165. package/modules/koblerBidAdapter.js +12 -12
  166. package/modules/konduitAnalyticsAdapter.js +4 -4
  167. package/modules/konduitWrapper.js +14 -14
  168. package/modules/krushmediaBidAdapter.js +4 -4
  169. package/modules/kubientBidAdapter.js +5 -5
  170. package/modules/limelightDigitalBidAdapter.js +4 -4
  171. package/modules/liveIntentIdSystem.js +4 -5
  172. package/modules/livewrappedAnalyticsAdapter.js +27 -15
  173. package/modules/livewrappedBidAdapter.js +7 -7
  174. package/modules/liveyieldAnalyticsAdapter.js +13 -13
  175. package/modules/lockerdomeBidAdapter.js +2 -2
  176. package/modules/loganBidAdapter.js +4 -4
  177. package/modules/lotamePanoramaIdSystem.js +13 -13
  178. package/modules/lunamediahbBidAdapter.js +2 -2
  179. package/modules/madvertiseBidAdapter.js +3 -3
  180. package/modules/marsmediaBidAdapter.js +26 -26
  181. package/modules/mathildeadsBidAdapter.js +5 -5
  182. package/modules/mediaforceBidAdapter.js +11 -11
  183. package/modules/mediakeysBidAdapter.js +444 -53
  184. package/modules/mediakeysBidAdapter.md +108 -0
  185. package/modules/medianetAnalyticsAdapter.js +48 -125
  186. package/modules/medianetBidAdapter.js +38 -33
  187. package/modules/medianetRtdProvider.js +7 -7
  188. package/modules/merkleIdSystem.js +19 -19
  189. package/modules/mgidBidAdapter.js +50 -50
  190. package/modules/microadBidAdapter.js +3 -3
  191. package/modules/multibid/index.js +15 -13
  192. package/modules/mwOpenLinkIdSystem.js +7 -7
  193. package/modules/mytargetBidAdapter.js +112 -0
  194. package/modules/nativoBidAdapter.js +46 -31
  195. package/modules/nativoBidAdapter.md +0 -1
  196. package/modules/naveggIdSystem.js +3 -3
  197. package/modules/nextMillenniumBidAdapter.js +6 -6
  198. package/modules/nextrollBidAdapter.js +375 -0
  199. package/modules/nobidBidAdapter.js +12 -11
  200. package/modules/novatiqIdSystem.js +8 -8
  201. package/modules/oguryBidAdapter.js +22 -6
  202. package/modules/oneVideoBidAdapter.js +20 -20
  203. package/modules/onomagicBidAdapter.js +16 -16
  204. package/modules/ooloAnalyticsAdapter.js +13 -13
  205. package/modules/openwebBidAdapter.js +26 -26
  206. package/modules/openxAnalyticsAdapter.js +33 -33
  207. package/modules/openxBidAdapter.js +29 -29
  208. package/modules/operaadsBidAdapter.js +53 -53
  209. package/modules/optimeraRtdProvider.js +9 -9
  210. package/modules/optoutBidAdapter.js +3 -3
  211. package/modules/orbidderBidAdapter.js +3 -3
  212. package/modules/outbrainBidAdapter.js +13 -13
  213. package/modules/ozoneBidAdapter.js +131 -131
  214. package/modules/padsquadBidAdapter.js +4 -4
  215. package/modules/parrableIdSystem.js +17 -17
  216. package/modules/pixfutureBidAdapter.js +45 -25
  217. package/modules/pixfutureBidAdapter.md +127 -0
  218. package/modules/prebidServerBidAdapter/index.js +109 -105
  219. package/modules/prebidmanagerAnalyticsAdapter.js +7 -7
  220. package/modules/priceFloors.js +47 -47
  221. package/modules/proxistoreBidAdapter.js +6 -8
  222. package/modules/pubCommonId.js +11 -11
  223. package/modules/pubProvidedIdSystem.js +3 -3
  224. package/modules/publinkIdSystem.js +23 -7
  225. package/modules/publinkIdSystem.md +7 -2
  226. package/modules/pubmaticAnalyticsAdapter.js +16 -16
  227. package/modules/pubmaticBidAdapter.js +109 -93
  228. package/modules/pubmaticBidAdapter.md +1 -1
  229. package/modules/pubperfAnalyticsAdapter.js +3 -3
  230. package/modules/pubwiseAnalyticsAdapter.js +6 -6
  231. package/modules/pubwiseBidAdapter.js +23 -23
  232. package/modules/pubxBidAdapter.js +2 -2
  233. package/modules/pubxaiAnalyticsAdapter.js +7 -7
  234. package/modules/pulsepointBidAdapter.js +13 -13
  235. package/modules/pxyzBidAdapter.js +7 -7
  236. package/modules/quantcastBidAdapter.js +16 -16
  237. package/modules/radsBidAdapter.js +5 -5
  238. package/modules/realvuAnalyticsAdapter.js +5 -7
  239. package/modules/reconciliationRtdProvider.js +6 -6
  240. package/modules/relaidoBidAdapter.js +44 -38
  241. package/modules/resetdigitalBidAdapter.js +3 -4
  242. package/modules/revcontentBidAdapter.js +9 -9
  243. package/modules/rhythmoneBidAdapter.js +17 -16
  244. package/modules/richaudienceBidAdapter.js +9 -9
  245. package/modules/riseBidAdapter.js +26 -26
  246. package/modules/riseBidAdapter.md +1 -3
  247. package/modules/roxotAnalyticsAdapter.js +14 -14
  248. package/modules/rtbhouseBidAdapter.js +7 -7
  249. package/modules/rtbsapeBidAdapter.js +3 -4
  250. package/modules/rtdModule/index.js +3 -3
  251. package/modules/rubiconAnalyticsAdapter.js +82 -82
  252. package/modules/rubiconBidAdapter.js +72 -68
  253. package/modules/scaleableAnalyticsAdapter.js +2 -2
  254. package/modules/seedingAllianceBidAdapter.js +231 -0
  255. package/modules/seedtagBidAdapter.js +10 -10
  256. package/modules/sharedIdSystem.js +11 -11
  257. package/modules/sharethroughAnalyticsAdapter.js +8 -8
  258. package/modules/sharethroughBidAdapter.js +20 -27
  259. package/modules/showheroes-bsBidAdapter.js +23 -23
  260. package/modules/sigmoidAnalyticsAdapter.js +4 -5
  261. package/modules/sirdataRtdProvider.js +34 -34
  262. package/modules/sizeMappingV2.js +39 -39
  263. package/modules/slimcutBidAdapter.js +121 -0
  264. package/modules/smaatoBidAdapter.js +44 -44
  265. package/modules/smartadserverBidAdapter.js +7 -7
  266. package/modules/smartxBidAdapter.js +72 -72
  267. package/modules/smartyadsBidAdapter.js +2 -2
  268. package/modules/smilewantedBidAdapter.js +6 -6
  269. package/modules/sonobiAnalyticsAdapter.js +23 -23
  270. package/modules/sortableAnalyticsAdapter.js +5 -5
  271. package/modules/sortableBidAdapter.js +28 -28
  272. package/modules/sovrnAnalyticsAdapter.js +5 -5
  273. package/modules/sovrnBidAdapter.js +22 -22
  274. package/modules/spotxBidAdapter.js +97 -83
  275. package/modules/sspBCBidAdapter.js +216 -21
  276. package/modules/sspBCBidAdapter.md +1 -1
  277. package/modules/staqAnalyticsAdapter.js +9 -9
  278. package/modules/stroeerCoreBidAdapter.js +16 -16
  279. package/modules/sublimeBidAdapter.js +6 -6
  280. package/modules/talkadsBidAdapter.js +129 -0
  281. package/modules/talkadsBidAdapter.md +60 -0
  282. package/modules/tapadIdSystem.js +3 -3
  283. package/modules/tappxBidAdapter.js +63 -64
  284. package/modules/teadsBidAdapter.js +20 -20
  285. package/modules/telariaBidAdapter.js +17 -17
  286. package/modules/temedyaBidAdapter.js +4 -4
  287. package/modules/terceptAnalyticsAdapter.js +4 -4
  288. package/modules/theAdxBidAdapter.js +16 -16
  289. package/modules/timeoutRtdProvider.js +15 -15
  290. package/modules/tpmnBidAdapter.js +3 -3
  291. package/modules/trionBidAdapter.js +15 -15
  292. package/modules/tripleliftBidAdapter.js +27 -24
  293. package/modules/truereachBidAdapter.js +4 -4
  294. package/modules/trustxBidAdapter.js +22 -18
  295. package/modules/ucfunnelBidAdapter.js +3 -3
  296. package/modules/uid2IdSystem.js +6 -6
  297. package/modules/underdogmediaBidAdapter.js +4 -4
  298. package/modules/unicornBidAdapter.js +15 -15
  299. package/modules/unifiedIdSystem.js +4 -4
  300. package/modules/unrulyBidAdapter.js +16 -16
  301. package/modules/userId/eids.js +9 -9
  302. package/modules/userId/index.js +37 -35
  303. package/modules/validationFpdModule/index.js +15 -15
  304. package/modules/vdoaiBidAdapter.js +2 -2
  305. package/modules/verizonMediaIdSystem.js +5 -5
  306. package/modules/vidazooBidAdapter.js +5 -5
  307. package/modules/videobyteBidAdapter.js +24 -24
  308. package/modules/videoreachBidAdapter.js +7 -7
  309. package/modules/vidoomyBidAdapter.js +105 -22
  310. package/modules/viewdeosDXBidAdapter.js +17 -17
  311. package/modules/visxBidAdapter.js +21 -29
  312. package/modules/voxBidAdapter.js +7 -7
  313. package/modules/vuukleBidAdapter.js +2 -2
  314. package/modules/waardexBidAdapter.js +26 -26
  315. package/modules/weboramaRtdProvider.js +174 -0
  316. package/modules/weboramaRtdProvider.md +70 -0
  317. package/modules/winrBidAdapter.js +27 -27
  318. package/modules/wipesBidAdapter.js +2 -2
  319. package/modules/yahoosspBidAdapter.js +637 -0
  320. package/modules/yahoosspBidAdapter.md +795 -0
  321. package/modules/yieldlabBidAdapter.js +57 -12
  322. package/modules/yieldlabBidAdapter.md +16 -1
  323. package/modules/yieldliftBidAdapter.js +9 -9
  324. package/modules/yieldmoBidAdapter.js +64 -50
  325. package/modules/yieldoneAnalyticsAdapter.js +6 -6
  326. package/modules/yieldoneBidAdapter.js +11 -11
  327. package/modules/yuktamediaAnalyticsAdapter.js +15 -15
  328. package/modules/zeotapIdPlusIdSystem.js +2 -2
  329. package/modules/zetaBidAdapter.js +6 -6
  330. package/modules/zeta_global_sspBidAdapter.js +14 -14
  331. package/package.json +1 -1
  332. package/src/AnalyticsAdapter.js +6 -6
  333. package/src/Renderer.js +10 -8
  334. package/src/adapterManager.js +45 -42
  335. package/src/adloader.js +6 -6
  336. package/src/ajax.js +8 -9
  337. package/src/auction.js +26 -23
  338. package/src/bidfactory.js +2 -2
  339. package/src/config.js +52 -50
  340. package/src/cpmBucketManager.js +2 -2
  341. package/src/prebid.js +85 -81
  342. package/src/storageManager.js +5 -5
  343. package/src/targeting.js +25 -26
  344. package/src/userSync.js +35 -22
  345. package/src/videoCache.js +2 -2
  346. package/test/.eslintrc.js +2 -1
  347. package/test/spec/modules/adfBidAdapter_spec.js +55 -0
  348. package/test/spec/modules/adgenerationBidAdapter_spec.js +121 -50
  349. package/test/spec/modules/adhashBidAdapter_spec.js +155 -0
  350. package/test/spec/modules/adnuntiusBidAdapter_spec.js +68 -0
  351. package/test/spec/modules/adqueryBidAdapter_spec.js +185 -0
  352. package/test/spec/modules/afpBidAdapter_spec.js +306 -0
  353. package/test/spec/modules/atsAnalyticsAdapter_spec.js +37 -2
  354. package/test/spec/modules/bliinkBidAdapter_spec.js +87 -36
  355. package/test/spec/modules/colossussspBidAdapter_spec.js +14 -6
  356. package/test/spec/modules/cwireBidAdapter_spec.js +246 -0
  357. package/test/spec/modules/eplanningBidAdapter_spec.js +3 -3
  358. package/test/spec/modules/glimpseBidAdapter_spec.js +302 -204
  359. package/test/spec/modules/gridBidAdapter_spec.js +38 -2
  360. package/test/spec/modules/gridNMBidAdapter_spec.js +121 -47
  361. package/test/spec/modules/gumgumBidAdapter_spec.js +27 -6
  362. package/test/spec/modules/iasRtdProvider_spec.js +71 -6
  363. package/test/spec/modules/inskinBidAdapter_spec.js +10 -1
  364. package/test/spec/modules/invibesBidAdapter_spec.js +114 -2
  365. package/test/spec/modules/justpremiumBidAdapter_spec.js +16 -2
  366. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +33 -7
  367. package/test/spec/modules/mediakeysBidAdapter_spec.js +406 -51
  368. package/test/spec/modules/medianetAnalyticsAdapter_spec.js +39 -7
  369. package/test/spec/modules/medianetBidAdapter_spec.js +62 -1
  370. package/test/spec/modules/mytargetBidAdapter_spec.js +199 -0
  371. package/test/spec/modules/nativoBidAdapter_spec.js +50 -3
  372. package/test/spec/modules/nextrollBidAdapter_spec.js +290 -0
  373. package/test/spec/modules/nobidBidAdapter_spec.js +65 -1
  374. package/test/spec/modules/oguryBidAdapter_spec.js +120 -7
  375. package/test/spec/modules/publinkIdSystem_spec.js +42 -12
  376. package/test/spec/modules/pubmaticBidAdapter_spec.js +217 -1
  377. package/test/spec/modules/relaidoBidAdapter_spec.js +21 -20
  378. package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +100 -81
  379. package/test/spec/modules/rubiconAnalyticsSchema.json +5 -2
  380. package/test/spec/modules/seedingAllianceAdapter_spec.js +186 -0
  381. package/test/spec/modules/sharethroughBidAdapter_spec.js +156 -136
  382. package/test/spec/modules/slimcutBidAdapter_spec.js +200 -0
  383. package/test/spec/modules/spotxBidAdapter_spec.js +36 -0
  384. package/test/spec/modules/sspBCBidAdapter_spec.js +210 -62
  385. package/test/spec/modules/talkadsBidAdapter_spec.js +231 -0
  386. package/test/spec/modules/tappxBidAdapter_spec.js +39 -3
  387. package/test/spec/modules/tripleliftBidAdapter_spec.js +2 -0
  388. package/test/spec/modules/trustxBidAdapter_spec.js +35 -2
  389. package/test/spec/modules/unicornBidAdapter_spec.js +4 -4
  390. package/test/spec/modules/visxBidAdapter_spec.js +48 -4
  391. package/test/spec/modules/weboramaRtdProvider_spec.js +288 -0
  392. package/test/spec/modules/yahoosspBidAdapter_spec.js +1332 -0
  393. package/test/spec/modules/yieldlabBidAdapter_spec.js +65 -1
  394. package/test/spec/modules/yieldmoBidAdapter_spec.js +30 -9
  395. package/test/spec/unit/pbjs_api_spec.js +4 -0
  396. package/test/spec/userSync_spec.js +30 -2
  397. package/modules/turktelekomBidAdapter.md +0 -49
@@ -1,4 +1,4 @@
1
- import * as utils from '../src/utils.js';
1
+ import { logError, deepAccess, isArray, getBidIdParameter, getDNT, deepSetValue, isEmpty, _each, logMessage, logWarn, isBoolean, isNumber, isPlainObject, isFn } from '../src/utils.js';
2
2
  import { config } from '../src/config.js';
3
3
  import { Renderer } from '../src/Renderer.js';
4
4
  import { registerBidder } from '../src/adapters/bidderFactory.js';
@@ -24,34 +24,34 @@ export const spec = {
24
24
  */
25
25
  isBidRequestValid: function(bid) {
26
26
  if (bid && typeof bid.params !== 'object') {
27
- utils.logError(BIDDER_CODE + ': params is not defined or is incorrect in the bidder settings.');
27
+ logError(BIDDER_CODE + ': params is not defined or is incorrect in the bidder settings.');
28
28
  return false;
29
29
  }
30
30
 
31
- if (!utils.deepAccess(bid, 'mediaTypes.video')) {
32
- utils.logError(BIDDER_CODE + ': mediaTypes.video is not present in the bidder settings.');
31
+ if (!deepAccess(bid, 'mediaTypes.video')) {
32
+ logError(BIDDER_CODE + ': mediaTypes.video is not present in the bidder settings.');
33
33
  return false;
34
34
  }
35
35
 
36
- const playerSize = utils.deepAccess(bid, 'mediaTypes.video.playerSize');
37
- if (!playerSize || !utils.isArray(playerSize)) {
38
- utils.logError(BIDDER_CODE + ': mediaTypes.video.playerSize is not defined in the bidder settings.');
36
+ const playerSize = deepAccess(bid, 'mediaTypes.video.playerSize');
37
+ if (!playerSize || !isArray(playerSize)) {
38
+ logError(BIDDER_CODE + ': mediaTypes.video.playerSize is not defined in the bidder settings.');
39
39
  return false;
40
40
  }
41
41
 
42
- if (!utils.getBidIdParameter('channel_id', bid.params)) {
43
- utils.logError(BIDDER_CODE + ': channel_id is not present in bidder params');
42
+ if (!getBidIdParameter('channel_id', bid.params)) {
43
+ logError(BIDDER_CODE + ': channel_id is not present in bidder params');
44
44
  return false;
45
45
  }
46
46
 
47
- if (utils.deepAccess(bid, 'mediaTypes.video.context') == 'outstream' || utils.deepAccess(bid, 'params.ad_unit') == 'outstream') {
48
- if (!utils.getBidIdParameter('outstream_function', bid.params)) {
49
- if (!utils.getBidIdParameter('outstream_options', bid.params)) {
50
- utils.logError(BIDDER_CODE + ': please define outstream_options parameter or override the default SpotX outstream rendering by defining your own Outstream function using field outstream_function.');
47
+ if (deepAccess(bid, 'mediaTypes.video.context') == 'outstream' || deepAccess(bid, 'params.ad_unit') == 'outstream') {
48
+ if (!getBidIdParameter('outstream_function', bid.params)) {
49
+ if (!getBidIdParameter('outstream_options', bid.params)) {
50
+ logError(BIDDER_CODE + ': please define outstream_options parameter or override the default SpotX outstream rendering by defining your own Outstream function using field outstream_function.');
51
51
  return false;
52
52
  }
53
- if (!utils.getBidIdParameter('slot', bid.params.outstream_options)) {
54
- utils.logError(BIDDER_CODE + ': please define parameter slot in outstream_options object in the configuration.');
53
+ if (!getBidIdParameter('slot', bid.params.outstream_options)) {
54
+ logError(BIDDER_CODE + ': please define parameter slot in outstream_options object in the configuration.');
55
55
  return false;
56
56
  }
57
57
  }
@@ -75,54 +75,54 @@ export const spec = {
75
75
  const siteId = '';
76
76
  const spotxRequests = bidRequests.map(function(bid) {
77
77
  let page;
78
- if (utils.getBidIdParameter('page', bid.params)) {
79
- page = utils.getBidIdParameter('page', bid.params);
78
+ if (getBidIdParameter('page', bid.params)) {
79
+ page = getBidIdParameter('page', bid.params);
80
80
  } else if (config.getConfig('pageUrl')) {
81
81
  page = config.getConfig('pageUrl');
82
82
  } else {
83
83
  page = referer;
84
84
  }
85
85
 
86
- const channelId = utils.getBidIdParameter('channel_id', bid.params);
86
+ const channelId = getBidIdParameter('channel_id', bid.params);
87
87
  let pubcid = null;
88
88
 
89
- const playerSize = utils.deepAccess(bid, 'mediaTypes.video.playerSize');
89
+ const playerSize = deepAccess(bid, 'mediaTypes.video.playerSize');
90
90
  const contentWidth = playerSize[0][0];
91
91
  const contentHeight = playerSize[0][1];
92
92
 
93
- const secure = isPageSecure || (utils.getBidIdParameter('secure', bid.params) ? 1 : 0);
93
+ const secure = isPageSecure || (getBidIdParameter('secure', bid.params) ? 1 : 0);
94
94
 
95
95
  const ext = {
96
96
  sdk_name: 'Prebid 1+',
97
97
  versionOrtb: ORTB_VERSION
98
98
  };
99
99
 
100
- if (utils.getBidIdParameter('hide_skin', bid.params) != '') {
101
- ext.hide_skin = +!!utils.getBidIdParameter('hide_skin', bid.params);
100
+ if (getBidIdParameter('hide_skin', bid.params) != '') {
101
+ ext.hide_skin = +!!getBidIdParameter('hide_skin', bid.params);
102
102
  }
103
103
 
104
- if (utils.getBidIdParameter('ad_volume', bid.params) != '') {
105
- ext.ad_volume = utils.getBidIdParameter('ad_volume', bid.params);
104
+ if (getBidIdParameter('ad_volume', bid.params) != '') {
105
+ ext.ad_volume = getBidIdParameter('ad_volume', bid.params);
106
106
  }
107
107
 
108
- if (utils.getBidIdParameter('ad_unit', bid.params) != '') {
109
- ext.ad_unit = utils.getBidIdParameter('ad_unit', bid.params);
108
+ if (getBidIdParameter('ad_unit', bid.params) != '') {
109
+ ext.ad_unit = getBidIdParameter('ad_unit', bid.params);
110
110
  }
111
111
 
112
- if (utils.getBidIdParameter('outstream_options', bid.params) != '') {
113
- ext.outstream_options = utils.getBidIdParameter('outstream_options', bid.params);
112
+ if (getBidIdParameter('outstream_options', bid.params) != '') {
113
+ ext.outstream_options = getBidIdParameter('outstream_options', bid.params);
114
114
  }
115
115
 
116
- if (utils.getBidIdParameter('outstream_function', bid.params) != '') {
117
- ext.outstream_function = utils.getBidIdParameter('outstream_function', bid.params);
116
+ if (getBidIdParameter('outstream_function', bid.params) != '') {
117
+ ext.outstream_function = getBidIdParameter('outstream_function', bid.params);
118
118
  }
119
119
 
120
- if (utils.getBidIdParameter('custom', bid.params) != '') {
121
- ext.custom = utils.getBidIdParameter('custom', bid.params);
120
+ if (getBidIdParameter('custom', bid.params) != '') {
121
+ ext.custom = getBidIdParameter('custom', bid.params);
122
122
  }
123
123
 
124
- if (utils.getBidIdParameter('pre_market_bids', bid.params) != '' && utils.isArray(utils.getBidIdParameter('pre_market_bids', bid.params))) {
125
- const preMarketBids = utils.getBidIdParameter('pre_market_bids', bid.params);
124
+ if (getBidIdParameter('pre_market_bids', bid.params) != '' && isArray(getBidIdParameter('pre_market_bids', bid.params))) {
125
+ const preMarketBids = getBidIdParameter('pre_market_bids', bid.params);
126
126
  ext.pre_market_bids = [];
127
127
  for (let i in preMarketBids) {
128
128
  const preMarketBid = preMarketBids[i];
@@ -150,7 +150,7 @@ export const spec = {
150
150
  }
151
151
  }
152
152
 
153
- const mimes = utils.getBidIdParameter('mimes', bid.params) || ['application/javascript', 'video/mp4', 'video/webm'];
153
+ const mimes = getBidIdParameter('mimes', bid.params) || ['application/javascript', 'video/mp4', 'video/webm'];
154
154
 
155
155
  const spotxReq = {
156
156
  id: bid.bidId,
@@ -163,24 +163,38 @@ export const spec = {
163
163
  }
164
164
  };
165
165
 
166
- if (utils.getBidIdParameter('start_delay', bid.params) != '') {
167
- spotxReq.video.startdelay = 0 + Boolean(utils.getBidIdParameter('start_delay', bid.params));
166
+ if (isFn(bid.getFloor)) {
167
+ let floorInfo = bid.getFloor({
168
+ currency: 'USD',
169
+ mediaType: 'video',
170
+ size: '*'
171
+ });
172
+
173
+ if (floorInfo.currency === 'USD') {
174
+ spotxReq.bidfloor = floorInfo.floor;
175
+ }
176
+ } else if (getBidIdParameter('price_floor', bid.params) != '') {
177
+ spotxReq.bidfloor = getBidIdParameter('price_floor', bid.params);
178
+ }
179
+
180
+ if (getBidIdParameter('start_delay', bid.params) != '') {
181
+ spotxReq.video.startdelay = 0 + Boolean(getBidIdParameter('start_delay', bid.params));
168
182
  }
169
183
 
170
- if (utils.getBidIdParameter('min_duration', bid.params) != '') {
171
- spotxReq.video.minduration = utils.getBidIdParameter('min_duration', bid.params);
184
+ if (getBidIdParameter('min_duration', bid.params) != '') {
185
+ spotxReq.video.minduration = getBidIdParameter('min_duration', bid.params);
172
186
  }
173
187
 
174
- if (utils.getBidIdParameter('max_duration', bid.params) != '') {
175
- spotxReq.video.maxduration = utils.getBidIdParameter('max_duration', bid.params);
188
+ if (getBidIdParameter('max_duration', bid.params) != '') {
189
+ spotxReq.video.maxduration = getBidIdParameter('max_duration', bid.params);
176
190
  }
177
191
 
178
- if (utils.getBidIdParameter('placement_type', bid.params) != '') {
179
- spotxReq.video.ext.placement = utils.getBidIdParameter('placement_type', bid.params);
192
+ if (getBidIdParameter('placement_type', bid.params) != '') {
193
+ spotxReq.video.ext.placement = getBidIdParameter('placement_type', bid.params);
180
194
  }
181
195
 
182
- if (utils.getBidIdParameter('position', bid.params) != '') {
183
- spotxReq.video.ext.pos = utils.getBidIdParameter('position', bid.params);
196
+ if (getBidIdParameter('position', bid.params) != '') {
197
+ spotxReq.video.ext.pos = getBidIdParameter('position', bid.params);
184
198
  }
185
199
 
186
200
  if (bid.crumbs && bid.crumbs.pubcid) {
@@ -191,7 +205,7 @@ export const spec = {
191
205
  const device = {
192
206
  h: screen.height,
193
207
  w: screen.width,
194
- dnt: utils.getDNT() ? 1 : 0,
208
+ dnt: getDNT() ? 1 : 0,
195
209
  language: navigator[language].split('-')[0],
196
210
  make: navigator.vendor ? navigator.vendor : '',
197
211
  ua: navigator.userAgent
@@ -217,13 +231,13 @@ export const spec = {
217
231
  requestPayload['ext']['wrap_response'] = 0;
218
232
  }
219
233
 
220
- if (utils.getBidIdParameter('number_of_ads', bid.params)) {
221
- requestPayload['ext']['number_of_ads'] = utils.getBidIdParameter('number_of_ads', bid.params);
234
+ if (getBidIdParameter('number_of_ads', bid.params)) {
235
+ requestPayload['ext']['number_of_ads'] = getBidIdParameter('number_of_ads', bid.params);
222
236
  }
223
237
 
224
238
  const userExt = {};
225
239
 
226
- if (utils.getBidIdParameter('spotx_all_google_consent', bid.params) == 1) {
240
+ if (getBidIdParameter('spotx_all_google_consent', bid.params) == 1) {
227
241
  userExt['consented_providers_settings'] = GOOGLE_CONSENT;
228
242
  }
229
243
 
@@ -232,16 +246,16 @@ export const spec = {
232
246
  userExt.consent = bidderRequest.gdprConsent.consentString;
233
247
 
234
248
  if (typeof bidderRequest.gdprConsent.gdprApplies !== 'undefined') {
235
- utils.deepSetValue(requestPayload, 'regs.ext.gdpr', (bidderRequest.gdprConsent.gdprApplies ? 1 : 0));
249
+ deepSetValue(requestPayload, 'regs.ext.gdpr', (bidderRequest.gdprConsent.gdprApplies ? 1 : 0));
236
250
  }
237
251
  }
238
252
 
239
253
  if (bidderRequest && bidderRequest.uspConsent) {
240
- utils.deepSetValue(requestPayload, 'regs.ext.us_privacy', bidderRequest.uspConsent);
254
+ deepSetValue(requestPayload, 'regs.ext.us_privacy', bidderRequest.uspConsent);
241
255
  }
242
256
 
243
257
  // ID5 fied
244
- if (utils.deepAccess(bid, 'userId.id5id.uid')) {
258
+ if (deepAccess(bid, 'userId.id5id.uid')) {
245
259
  userExt.eids = userExt.eids || [];
246
260
  userExt.eids.push(
247
261
  {
@@ -284,7 +298,7 @@ export const spec = {
284
298
  }
285
299
 
286
300
  // Only add the user object if it's not empty
287
- if (!utils.isEmpty(userExt)) {
301
+ if (!isEmpty(userExt)) {
288
302
  requestPayload.user = { ext: userExt };
289
303
  }
290
304
  const urlQueryParams = 'src_sys=prebid'
@@ -309,9 +323,9 @@ export const spec = {
309
323
  const bidResponses = [];
310
324
  const serverResponseBody = serverResponse.body;
311
325
 
312
- if (serverResponseBody && utils.isArray(serverResponseBody.seatbid)) {
313
- utils._each(serverResponseBody.seatbid, function(bids) {
314
- utils._each(bids.bid, function(spotxBid) {
326
+ if (serverResponseBody && isArray(serverResponseBody.seatbid)) {
327
+ _each(serverResponseBody.seatbid, function(bids) {
328
+ _each(bids.bid, function(spotxBid) {
315
329
  let currentBidRequest = {};
316
330
  for (let i in bidderRequest.bidRequest.bids) {
317
331
  if (spotxBid.impid == bidderRequest.bidRequest.bids[i].bidId) {
@@ -323,7 +337,7 @@ export const spec = {
323
337
  * Make sure currency and price are the right ones
324
338
  * TODO: what about the pre_market_bid partners sizes?
325
339
  */
326
- utils._each(currentBidRequest.params.pre_market_bids, function(pmb) {
340
+ _each(currentBidRequest.params.pre_market_bids, function(pmb) {
327
341
  if (pmb.deal_id == spotxBid.id) {
328
342
  spotxBid.price = pmb.price;
329
343
  serverResponseBody.cur = pmb.currency;
@@ -357,10 +371,10 @@ export const spec = {
357
371
  bid.meta.advertiserDomains = spotxBid.adomain;
358
372
  }
359
373
 
360
- const context1 = utils.deepAccess(currentBidRequest, 'mediaTypes.video.context');
361
- const context2 = utils.deepAccess(currentBidRequest, 'params.ad_unit');
374
+ const context1 = deepAccess(currentBidRequest, 'mediaTypes.video.context');
375
+ const context2 = deepAccess(currentBidRequest, 'params.ad_unit');
362
376
  if (context1 == 'outstream' || context2 == 'outstream') {
363
- const playersize = utils.deepAccess(currentBidRequest, 'mediaTypes.video.playerSize');
377
+ const playersize = deepAccess(currentBidRequest, 'mediaTypes.video.playerSize');
364
378
  const renderer = Renderer.install({
365
379
  id: 0,
366
380
  url: '/',
@@ -368,11 +382,11 @@ export const spec = {
368
382
  adText: 'SpotX Outstream Video Ad via Prebid.js',
369
383
  player_width: playersize[0][0],
370
384
  player_height: playersize[0][1],
371
- content_page_url: utils.deepAccess(bidderRequest, 'data.site.page'),
372
- ad_mute: +!!utils.deepAccess(currentBidRequest, 'params.ad_mute'),
373
- hide_skin: +!!utils.deepAccess(currentBidRequest, 'params.hide_skin'),
374
- outstream_options: utils.deepAccess(currentBidRequest, 'params.outstream_options'),
375
- outstream_function: utils.deepAccess(currentBidRequest, 'params.outstream_function')
385
+ content_page_url: deepAccess(bidderRequest, 'data.site.page'),
386
+ ad_mute: +!!deepAccess(currentBidRequest, 'params.ad_mute'),
387
+ hide_skin: +!!deepAccess(currentBidRequest, 'params.hide_skin'),
388
+ outstream_options: deepAccess(currentBidRequest, 'params.outstream_options'),
389
+ outstream_function: deepAccess(currentBidRequest, 'params.outstream_function')
376
390
  }
377
391
  });
378
392
 
@@ -380,17 +394,17 @@ export const spec = {
380
394
  renderer.setRender(outstreamRender);
381
395
  renderer.setEventHandlers({
382
396
  impression: function impression() {
383
- return utils.logMessage('SpotX outstream video impression event');
397
+ return logMessage('SpotX outstream video impression event');
384
398
  },
385
399
  loaded: function loaded() {
386
- return utils.logMessage('SpotX outstream video loaded event');
400
+ return logMessage('SpotX outstream video loaded event');
387
401
  },
388
402
  ended: function ended() {
389
- utils.logMessage('SpotX outstream renderer video event');
403
+ logMessage('SpotX outstream renderer video event');
390
404
  }
391
405
  });
392
406
  } catch (err) {
393
- utils.logWarn('Prebid Error calling setRender or setEventHandlers on renderer', err);
407
+ logWarn('Prebid Error calling setRender or setEventHandlers on renderer', err);
394
408
  }
395
409
  bid.renderer = renderer;
396
410
  }
@@ -405,8 +419,8 @@ export const spec = {
405
419
  }
406
420
 
407
421
  function createOutstreamScript(bid) {
408
- const slot = utils.getBidIdParameter('slot', bid.renderer.config.outstream_options);
409
- utils.logMessage('[SPOTX][renderer] Handle SpotX outstream renderer');
422
+ const slot = getBidIdParameter('slot', bid.renderer.config.outstream_options);
423
+ logMessage('[SPOTX][renderer] Handle SpotX outstream renderer');
410
424
  const script = window.document.createElement('script');
411
425
  script.type = 'text/javascript';
412
426
  script.src = 'https://js.spotx.tv/easi/v1/' + bid.channel_id + '.js';
@@ -416,8 +430,8 @@ function createOutstreamScript(bid) {
416
430
  dataSpotXParams['data-spotx_content_page_url'] = bid.renderer.config.content_page_url;
417
431
  dataSpotXParams['data-spotx_ad_unit'] = 'incontent';
418
432
 
419
- utils.logMessage('[SPOTX][renderer] Default behavior');
420
- if (utils.getBidIdParameter('ad_mute', bid.renderer.config.outstream_options)) {
433
+ logMessage('[SPOTX][renderer] Default behavior');
434
+ if (getBidIdParameter('ad_mute', bid.renderer.config.outstream_options)) {
421
435
  dataSpotXParams['data-spotx_ad_mute'] = '1';
422
436
  }
423
437
  dataSpotXParams['data-spotx_collapse'] = '0';
@@ -425,9 +439,9 @@ function createOutstreamScript(bid) {
425
439
  dataSpotXParams['data-spotx_blocked_autoplay_override_mode'] = '1';
426
440
  dataSpotXParams['data-spotx_video_slot_can_autoplay'] = '1';
427
441
 
428
- const playersizeAutoAdapt = utils.getBidIdParameter('playersize_auto_adapt', bid.renderer.config.outstream_options);
429
- if (playersizeAutoAdapt && utils.isBoolean(playersizeAutoAdapt) && playersizeAutoAdapt === true) {
430
- const ratio = bid.width && utils.isNumber(bid.width) && bid.height && utils.isNumber(bid.height) ? bid.width / bid.height : 4 / 3;
442
+ const playersizeAutoAdapt = getBidIdParameter('playersize_auto_adapt', bid.renderer.config.outstream_options);
443
+ if (playersizeAutoAdapt && isBoolean(playersizeAutoAdapt) && playersizeAutoAdapt === true) {
444
+ const ratio = bid.width && isNumber(bid.width) && bid.height && isNumber(bid.height) ? bid.width / bid.height : 4 / 3;
431
445
  const slotClientWidth = window.document.getElementById(slot).clientWidth;
432
446
  let playerWidth = bid.renderer.config.player_width;
433
447
  let playerHeight = bid.renderer.config.player_height;
@@ -449,13 +463,13 @@ function createOutstreamScript(bid) {
449
463
  dataSpotXParams['data-spotx_content_height'] = '' + contentHeight;
450
464
  }
451
465
 
452
- const customOverride = utils.getBidIdParameter('custom_override', bid.renderer.config.outstream_options);
453
- if (customOverride && utils.isPlainObject(customOverride)) {
454
- utils.logMessage('[SPOTX][renderer] Custom behavior.');
466
+ const customOverride = getBidIdParameter('custom_override', bid.renderer.config.outstream_options);
467
+ if (customOverride && isPlainObject(customOverride)) {
468
+ logMessage('[SPOTX][renderer] Custom behavior.');
455
469
  for (let name in customOverride) {
456
470
  if (customOverride.hasOwnProperty(name)) {
457
471
  if (name === 'channel_id' || name === 'vast_url' || name === 'content_page_url' || name === 'ad_unit') {
458
- utils.logWarn('[SPOTX][renderer] Custom behavior: following option cannot be overridden: ' + name);
472
+ logWarn('[SPOTX][renderer] Custom behavior: following option cannot be overridden: ' + name);
459
473
  } else {
460
474
  dataSpotXParams['data-spotx_' + name] = customOverride[name];
461
475
  }
@@ -478,7 +492,7 @@ function outstreamRender(bid) {
478
492
  bid.renderer.config.outstream_function(bid, script);
479
493
  } else {
480
494
  try {
481
- const inIframe = utils.getBidIdParameter('in_iframe', bid.renderer.config.outstream_options);
495
+ const inIframe = getBidIdParameter('in_iframe', bid.renderer.config.outstream_options);
482
496
  if (inIframe && window.document.getElementById(inIframe).nodeName == 'IFRAME') {
483
497
  const rawframe = window.document.getElementById(inIframe);
484
498
  let framedoc = rawframe.contentDocument;
@@ -487,7 +501,7 @@ function outstreamRender(bid) {
487
501
  }
488
502
  framedoc.body.appendChild(script);
489
503
  } else {
490
- const slot = utils.getBidIdParameter('slot', bid.renderer.config.outstream_options);
504
+ const slot = getBidIdParameter('slot', bid.renderer.config.outstream_options);
491
505
  if (slot && window.document.getElementById(slot)) {
492
506
  window.document.getElementById(slot).appendChild(script);
493
507
  } else {
@@ -495,7 +509,7 @@ function outstreamRender(bid) {
495
509
  }
496
510
  }
497
511
  } catch (err) {
498
- utils.logError('[SPOTX][renderer] Error:' + err.message)
512
+ logError('[SPOTX][renderer] Error:' + err.message)
499
513
  }
500
514
  }
501
515
  }