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
package/src/targeting.js CHANGED
@@ -1,4 +1,7 @@
1
- import { uniques, isGptPubadsDefined, getHighestCpm, getOldestHighestCpmBid, groupBy, isAdUnitCodeMatchingSlot, timestamp, deepAccess, deepClone, logError, logWarn, logInfo } from './utils.js';
1
+ import {
2
+ uniques, isGptPubadsDefined, getHighestCpm, getOldestHighestCpmBid, groupBy, isAdUnitCodeMatchingSlot, timestamp,
3
+ deepAccess, deepClone, logError, logWarn, logInfo, isFn, isArray, logMessage, isStr
4
+ } from './utils.js';
2
5
  import { config } from './config.js';
3
6
  import { NATIVE_TARGETING_KEYS } from './native.js';
4
7
  import { auctionManager } from './auctionManager.js';
@@ -8,7 +11,6 @@ import { hook } from './hook.js';
8
11
  import includes from 'core-js-pure/features/array/includes.js';
9
12
  import find from 'core-js-pure/features/array/find.js';
10
13
 
11
- const utils = require('./utils.js');
12
14
  var CONSTANTS = require('./constants.json');
13
15
 
14
16
  var pbTargetingKeys = [];
@@ -122,13 +124,13 @@ export function newTargeting(auctionManager) {
122
124
  const adUnitCodes = getAdUnitCodes(adUnitCode);
123
125
  const adUnits = auctionManager.getAdUnits().filter(adUnit => includes(adUnitCodes, adUnit.code));
124
126
  window.googletag.pubads().getSlots().forEach(slot => {
125
- let customSlotMatchingFunc = utils.isFn(customSlotMatching) && customSlotMatching(slot);
127
+ let customSlotMatchingFunc = isFn(customSlotMatching) && customSlotMatching(slot);
126
128
  pbTargetingKeys.forEach(function(key) {
127
129
  // reset only registered adunits
128
130
  adUnits.forEach(function(unit) {
129
131
  if (unit.code === slot.getAdUnitPath() ||
130
132
  unit.code === slot.getSlotElementId() ||
131
- (utils.isFn(customSlotMatchingFunc) && customSlotMatchingFunc(unit.code))) {
133
+ (isFn(customSlotMatchingFunc) && customSlotMatchingFunc(unit.code))) {
132
134
  slot.setTargeting(key, null);
133
135
  }
134
136
  });
@@ -160,7 +162,7 @@ export function newTargeting(auctionManager) {
160
162
  */
161
163
  function bidShouldBeAddedToTargeting(bid, adUnitCodes) {
162
164
  return bid.adserverTargeting && adUnitCodes &&
163
- ((utils.isArray(adUnitCodes) && includes(adUnitCodes, bid.adUnitCode)) ||
165
+ ((isArray(adUnitCodes) && includes(adUnitCodes, bid.adUnitCode)) ||
164
166
  (typeof adUnitCodes === 'string' && bid.adUnitCode === adUnitCodes));
165
167
  };
166
168
 
@@ -379,21 +381,18 @@ export function newTargeting(auctionManager) {
379
381
  targeting.setTargetingForGPT = function(targetingConfig, customSlotMatching) {
380
382
  window.googletag.pubads().getSlots().forEach(slot => {
381
383
  Object.keys(targetingConfig).filter(customSlotMatching ? customSlotMatching(slot) : isAdUnitCodeMatchingSlot(slot))
382
- .forEach(targetId =>
384
+ .forEach(targetId => {
383
385
  Object.keys(targetingConfig[targetId]).forEach(key => {
384
- let valueArr = targetingConfig[targetId][key];
385
- if (typeof valueArr === 'string') {
386
- valueArr = valueArr.split(',');
386
+ let value = targetingConfig[targetId][key];
387
+ if (typeof value === 'string' && value.indexOf(',') !== -1) {
388
+ // due to the check the array will be formed only if string has ',' else plain string will be assigned as value
389
+ value = value.split(',');
387
390
  }
388
- valueArr = (valueArr.length > 1) ? [valueArr] : valueArr;
389
- valueArr.map((value) => {
390
- utils.logMessage(`Attempting to set key value for slot: ${slot.getSlotElementId()} key: ${key} value: ${value}`);
391
- return value;
392
- }).forEach(value => {
393
- slot.setTargeting(key, value);
394
- });
395
- })
396
- )
391
+ targetingConfig[targetId][key] = value;
392
+ });
393
+ logMessage(`Attempting to set targeting-map for slot: ${slot.getSlotElementId()} with targeting-map:`, targetingConfig[targetId]);
394
+ slot.updateTargetingFromMap(targetingConfig[targetId])
395
+ })
397
396
  })
398
397
  };
399
398
 
@@ -405,7 +404,7 @@ export function newTargeting(auctionManager) {
405
404
  function getAdUnitCodes(adUnitCode) {
406
405
  if (typeof adUnitCode === 'string') {
407
406
  return [adUnitCode];
408
- } else if (utils.isArray(adUnitCode)) {
407
+ } else if (isArray(adUnitCode)) {
409
408
  return adUnitCode;
410
409
  }
411
410
  return auctionManager.getAdUnitCodes() || [];
@@ -455,14 +454,14 @@ export function newTargeting(auctionManager) {
455
454
  try {
456
455
  targeting.resetPresetTargetingAST(adUnitCodes);
457
456
  } catch (e) {
458
- utils.logError('unable to reset targeting for AST' + e)
457
+ logError('unable to reset targeting for AST' + e)
459
458
  }
460
459
 
461
460
  Object.keys(astTargeting).forEach(targetId =>
462
461
  Object.keys(astTargeting[targetId]).forEach(key => {
463
- utils.logMessage(`Attempting to set targeting for targetId: ${targetId} key: ${key} value: ${astTargeting[targetId][key]}`);
462
+ logMessage(`Attempting to set targeting for targetId: ${targetId} key: ${key} value: ${astTargeting[targetId][key]}`);
464
463
  // setKeywords supports string and array as value
465
- if (utils.isStr(astTargeting[targetId][key]) || utils.isArray(astTargeting[targetId][key])) {
464
+ if (isStr(astTargeting[targetId][key]) || isArray(astTargeting[targetId][key])) {
466
465
  let keywordsObj = {};
467
466
  let regex = /pt[0-9]/;
468
467
  if (key.search(regex) < 0) {
@@ -527,7 +526,7 @@ export function newTargeting(auctionManager) {
527
526
  function mergeAdServerTargeting(acc, bid, index, arr) {
528
527
  function concatTargetingValue(key) {
529
528
  return function(currentBidElement) {
530
- if (!utils.isArray(currentBidElement.adserverTargeting[key])) {
529
+ if (!isArray(currentBidElement.adserverTargeting[key])) {
531
530
  currentBidElement.adserverTargeting[key] = [currentBidElement.adserverTargeting[key]];
532
531
  }
533
532
  currentBidElement.adserverTargeting[key] = currentBidElement.adserverTargeting[key].concat(bid.adserverTargeting[key]).filter(uniques);
@@ -634,8 +633,8 @@ export function newTargeting(auctionManager) {
634
633
 
635
634
  return Object.keys(aut)
636
635
  .map(function(key) {
637
- if (utils.isStr(aut[key])) aut[key] = aut[key].split(',').map(s => s.trim());
638
- if (!utils.isArray(aut[key])) aut[key] = [ aut[key] ];
636
+ if (isStr(aut[key])) aut[key] = aut[key].split(',').map(s => s.trim());
637
+ if (!isArray(aut[key])) aut[key] = [ aut[key] ];
639
638
  return { [key]: aut[key] };
640
639
  });
641
640
  }
@@ -648,7 +647,7 @@ export function newTargeting(auctionManager) {
648
647
  }
649
648
 
650
649
  targeting.isApntagDefined = function() {
651
- if (window.apntag && utils.isFn(window.apntag.setKeywords)) {
650
+ if (window.apntag && isFn(window.apntag.setKeywords)) {
652
651
  return true;
653
652
  }
654
653
  };
package/src/userSync.js CHANGED
@@ -1,4 +1,7 @@
1
- import * as utils from './utils.js';
1
+ import {
2
+ deepClone, isPlainObject, logError, shuffle, logMessage, triggerPixel, insertUserSyncIframe, isArray,
3
+ logWarn, isStr, isSafariBrowser
4
+ } from './utils.js';
2
5
  import { config } from './config.js';
3
6
  import includes from 'core-js-pure/features/array/includes.js';
4
7
  import { getCoreStorageManager } from './storageManager.js';
@@ -18,7 +21,7 @@ export const USERSYNC_DEFAULT_CONFIG = {
18
21
 
19
22
  // Set userSync default values
20
23
  config.setDefaults({
21
- 'userSync': utils.deepClone(USERSYNC_DEFAULT_CONFIG)
24
+ 'userSync': deepClone(USERSYNC_DEFAULT_CONFIG)
22
25
  });
23
26
 
24
27
  const storage = getCoreStorageManager('usersync');
@@ -54,7 +57,7 @@ export function newUserSync(userSyncDependencies) {
54
57
  // if userSync.filterSettings does not contain image/all configs, merge in default image config to ensure image pixels are fired
55
58
  if (conf.userSync) {
56
59
  let fs = conf.userSync.filterSettings;
57
- if (utils.isPlainObject(fs)) {
60
+ if (isPlainObject(fs)) {
58
61
  if (!fs.image && !fs.all) {
59
62
  conf.userSync.filterSettings.image = {
60
63
  bidders: '*',
@@ -91,12 +94,12 @@ export function newUserSync(userSyncDependencies) {
91
94
  }
92
95
 
93
96
  try {
94
- // Image pixels
95
- fireImagePixels();
96
97
  // Iframe syncs
97
98
  loadIframes();
99
+ // Image pixels
100
+ fireImagePixels();
98
101
  } catch (e) {
99
- return utils.logError('Error firing user syncs', e);
102
+ return logError('Error firing user syncs', e);
100
103
  }
101
104
  // Reset the user sync queue
102
105
  queue = getDefaultQueue();
@@ -106,7 +109,7 @@ export function newUserSync(userSyncDependencies) {
106
109
  // Randomize the order of the pixels before firing
107
110
  // This is to avoid giving any bidder who has registered multiple syncs
108
111
  // any preferential treatment and balancing them out
109
- utils.shuffle(queue).forEach((sync) => {
112
+ shuffle(queue).forEach((sync) => {
110
113
  fn(sync);
111
114
  hasFiredBidder.add(sync[0]);
112
115
  });
@@ -123,9 +126,9 @@ export function newUserSync(userSyncDependencies) {
123
126
  }
124
127
  forEachFire(queue.image, (sync) => {
125
128
  let [bidderName, trackingPixelUrl] = sync;
126
- utils.logMessage(`Invoking image pixel user sync for bidder: ${bidderName}`);
129
+ logMessage(`Invoking image pixel user sync for bidder: ${bidderName}`);
127
130
  // Create image object and add the src url
128
- utils.triggerPixel(trackingPixelUrl);
131
+ triggerPixel(trackingPixelUrl);
129
132
  });
130
133
  }
131
134
 
@@ -138,11 +141,21 @@ export function newUserSync(userSyncDependencies) {
138
141
  if (!(permittedPixels.iframe)) {
139
142
  return;
140
143
  }
144
+
141
145
  forEachFire(queue.iframe, (sync) => {
142
146
  let [bidderName, iframeUrl] = sync;
143
- utils.logMessage(`Invoking iframe user sync for bidder: ${bidderName}`);
147
+ logMessage(`Invoking iframe user sync for bidder: ${bidderName}`);
144
148
  // Insert iframe into DOM
145
- utils.insertUserSyncIframe(iframeUrl);
149
+ insertUserSyncIframe(iframeUrl);
150
+ // for a bidder, if iframe sync is present then remove image pixel
151
+ removeImagePixelsForBidder(queue, bidderName);
152
+ });
153
+ }
154
+
155
+ function removeImagePixelsForBidder(queue, iframeSyncBidderName) {
156
+ queue.image = queue.image.filter(imageSync => {
157
+ let imageSyncBidderName = imageSync[0];
158
+ return imageSyncBidderName !== iframeSyncBidderName
146
159
  });
147
160
  }
148
161
 
@@ -177,21 +190,21 @@ export function newUserSync(userSyncDependencies) {
177
190
  */
178
191
  publicApi.registerSync = (type, bidder, url) => {
179
192
  if (hasFiredBidder.has(bidder)) {
180
- return utils.logMessage(`already fired syncs for "${bidder}", ignoring registerSync call`);
193
+ return logMessage(`already fired syncs for "${bidder}", ignoring registerSync call`);
181
194
  }
182
- if (!usConfig.syncEnabled || !utils.isArray(queue[type])) {
183
- return utils.logWarn(`User sync type "${type}" not supported`);
195
+ if (!usConfig.syncEnabled || !isArray(queue[type])) {
196
+ return logWarn(`User sync type "${type}" not supported`);
184
197
  }
185
198
  if (!bidder) {
186
- return utils.logWarn(`Bidder is required for registering sync`);
199
+ return logWarn(`Bidder is required for registering sync`);
187
200
  }
188
201
  if (usConfig.syncsPerBidder !== 0 && Number(numAdapterBids[bidder]) >= usConfig.syncsPerBidder) {
189
- return utils.logWarn(`Number of user syncs exceeded for "${bidder}"`);
202
+ return logWarn(`Number of user syncs exceeded for "${bidder}"`);
190
203
  }
191
204
 
192
205
  const canBidderRegisterSync = publicApi.canBidderRegisterSync(type, bidder);
193
206
  if (!canBidderRegisterSync) {
194
- return utils.logWarn(`Bidder "${bidder}" not permitted to register their "${type}" userSync pixels.`);
207
+ return logWarn(`Bidder "${bidder}" not permitted to register their "${type}" userSync pixels.`);
195
208
  }
196
209
 
197
210
  // the bidder's pixel has passed all checks and is allowed to register
@@ -238,7 +251,7 @@ export function newUserSync(userSyncDependencies) {
238
251
  */
239
252
  function isFilterConfigValid(filterConfig, type) {
240
253
  if (filterConfig.all && filterConfig[type]) {
241
- utils.logWarn(`Detected presence of the "filterSettings.all" and "filterSettings.${type}" in userSync config. You cannot mix "all" with "iframe/image" configs; they are mutually exclusive.`);
254
+ logWarn(`Detected presence of the "filterSettings.all" and "filterSettings.${type}" in userSync config. You cannot mix "all" with "iframe/image" configs; they are mutually exclusive.`);
242
255
  return false;
243
256
  }
244
257
 
@@ -255,12 +268,12 @@ export function newUserSync(userSyncDependencies) {
255
268
  let biddersField = activeConfig.bidders;
256
269
 
257
270
  if (filterField && filterField !== 'include' && filterField !== 'exclude') {
258
- utils.logWarn(`UserSync "filterSettings.${activeConfigName}.filter" setting '${filterField}' is not a valid option; use either 'include' or 'exclude'.`);
271
+ logWarn(`UserSync "filterSettings.${activeConfigName}.filter" setting '${filterField}' is not a valid option; use either 'include' or 'exclude'.`);
259
272
  return false;
260
273
  }
261
274
 
262
- if (biddersField !== '*' && !(Array.isArray(biddersField) && biddersField.length > 0 && biddersField.every(bidderInList => utils.isStr(bidderInList) && bidderInList !== '*'))) {
263
- utils.logWarn(`Detected an invalid setup in userSync "filterSettings.${activeConfigName}.bidders"; use either '*' (to represent all bidders) or an array of bidders.`);
275
+ if (biddersField !== '*' && !(Array.isArray(biddersField) && biddersField.length > 0 && biddersField.every(bidderInList => isStr(bidderInList) && bidderInList !== '*'))) {
276
+ logWarn(`Detected an invalid setup in userSync "filterSettings.${activeConfigName}.bidders"; use either '*' (to represent all bidders) or an array of bidders.`);
264
277
  return false;
265
278
  }
266
279
 
@@ -302,7 +315,7 @@ export function newUserSync(userSyncDependencies) {
302
315
  return publicApi;
303
316
  }
304
317
 
305
- const browserSupportsCookies = !utils.isSafariBrowser() && storage.cookiesAreEnabled();
318
+ const browserSupportsCookies = !isSafariBrowser() && storage.cookiesAreEnabled();
306
319
 
307
320
  export const userSync = newUserSync({
308
321
  config: config.getConfig('userSync'),
package/src/videoCache.js CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  import { ajax } from './ajax.js';
13
13
  import { config } from './config.js';
14
- import * as utils from './utils.js';
14
+ import { isPlainObject } from './utils.js';
15
15
 
16
16
  /**
17
17
  * @typedef {object} CacheableUrlBid
@@ -73,7 +73,7 @@ function toStorageRequest(bid) {
73
73
  payload.bidid = bid.requestId;
74
74
  payload.aid = bid.auctionId;
75
75
  // function has a thisArg set to bidderRequest for accessing the auctionStart
76
- if (utils.isPlainObject(this) && this.hasOwnProperty('auctionStart')) {
76
+ if (isPlainObject(this) && this.hasOwnProperty('auctionStart')) {
77
77
  payload.timestamp = this.auctionStart;
78
78
  }
79
79
  }
package/test/.eslintrc.js CHANGED
@@ -8,7 +8,8 @@ module.exports = {
8
8
  '$$PREBID_GLOBAL$$': false
9
9
  },
10
10
  parserOptions: {
11
- sourceType: 'module'
11
+ sourceType: 'module',
12
+ ecmaVersion: 2018
12
13
  },
13
14
  rules: {
14
15
  'comma-dangle': 'off',
@@ -331,6 +331,61 @@ describe('Adf adapter', function () {
331
331
  }
332
332
  });
333
333
 
334
+ describe('price floors', function () {
335
+ it('should not add if floors module not configured', function () {
336
+ const validBidRequests = [{ bidId: 'bidId', params: {mid: 1000}, mediaTypes: {video: {}} }];
337
+ let imp = getRequestImps(validBidRequests)[0];
338
+
339
+ assert.equal(imp.bidfloor, undefined);
340
+ assert.equal(imp.bidfloorcur, undefined);
341
+ });
342
+
343
+ it('should not add if floor price not defined', function () {
344
+ const validBidRequests = [ getBidWithFloor() ];
345
+ let imp = getRequestImps(validBidRequests)[0];
346
+
347
+ assert.equal(imp.bidfloor, undefined);
348
+ assert.equal(imp.bidfloorcur, 'USD');
349
+ });
350
+
351
+ it('should request floor price in adserver currency', function () {
352
+ config.setConfig({ currency: { adServerCurrency: 'DKK' } });
353
+ const validBidRequests = [ getBidWithFloor() ];
354
+ let imp = getRequestImps(validBidRequests)[0];
355
+
356
+ assert.equal(imp.bidfloor, undefined);
357
+ assert.equal(imp.bidfloorcur, 'DKK');
358
+ });
359
+
360
+ it('should add correct floor values', function () {
361
+ const expectedFloors = [ 1, 1.3, 0.5 ];
362
+ const validBidRequests = expectedFloors.map(getBidWithFloor);
363
+ let imps = getRequestImps(validBidRequests);
364
+
365
+ expectedFloors.forEach((floor, index) => {
366
+ assert.equal(imps[index].bidfloor, floor);
367
+ assert.equal(imps[index].bidfloorcur, 'USD');
368
+ });
369
+ });
370
+
371
+ function getBidWithFloor(floor) {
372
+ return {
373
+ params: { mid: 1 },
374
+ mediaTypes: { video: {} },
375
+ getFloor: ({ currency }) => {
376
+ return {
377
+ currency: currency,
378
+ floor
379
+ }
380
+ }
381
+ };
382
+ }
383
+
384
+ function getRequestImps(validBidRequests) {
385
+ return JSON.parse(spec.buildRequests(validBidRequests, { refererInfo: { referer: 'page' } }).data).imp;
386
+ }
387
+ });
388
+
334
389
  describe('multiple media types', function () {
335
390
  it('should use single media type for bidding', function () {
336
391
  let validBidRequests = [{