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 { isEmpty, deepAccess, logError, parseGPTSingleSizeArrayToRtbSize, generateUUID, logWarn } from '../src/utils.js';
2
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
3
3
  import { Renderer } from '../src/Renderer.js';
4
4
  import { VIDEO, BANNER } from '../src/mediaTypes.js';
@@ -103,7 +103,7 @@ export const spec = {
103
103
  impObj.ext.gpid = ortb2Imp.ext.data.pbadslot && ortb2Imp.ext.data.pbadslot.toString();
104
104
  }
105
105
  }
106
- if (!utils.isEmpty(keywords)) {
106
+ if (!isEmpty(keywords)) {
107
107
  if (!pageKeywords) {
108
108
  pageKeywords = keywords;
109
109
  }
@@ -197,8 +197,8 @@ export const spec = {
197
197
  request.user = user;
198
198
  }
199
199
 
200
- const userKeywords = utils.deepAccess(config.getConfig('ortb2.user'), 'keywords') || null;
201
- const siteKeywords = utils.deepAccess(config.getConfig('ortb2.site'), 'keywords') || null;
200
+ const userKeywords = deepAccess(config.getConfig('ortb2.user'), 'keywords') || null;
201
+ const siteKeywords = deepAccess(config.getConfig('ortb2.site'), 'keywords') || null;
202
202
 
203
203
  if (userKeywords) {
204
204
  pageKeywords = pageKeywords || {};
@@ -283,7 +283,7 @@ export const spec = {
283
283
  _addBidResponse(_getBidFromResponse(respItem), bidRequest, bidResponses);
284
284
  });
285
285
  }
286
- if (errorMessage) utils.logError(errorMessage);
286
+ if (errorMessage) logError(errorMessage);
287
287
  return bidResponses;
288
288
  },
289
289
  getUserSyncs: function (syncOptions, responses, gdprConsent, uspConsent) {
@@ -339,11 +339,11 @@ function _getFloor (mediaTypes, bid) {
339
339
 
340
340
  function _getBidFromResponse(respItem) {
341
341
  if (!respItem) {
342
- utils.logError(LOG_ERROR_MESS.emptySeatbid);
342
+ logError(LOG_ERROR_MESS.emptySeatbid);
343
343
  } else if (!respItem.bid) {
344
- utils.logError(LOG_ERROR_MESS.hasNoArrayOfBids + JSON.stringify(respItem));
344
+ logError(LOG_ERROR_MESS.hasNoArrayOfBids + JSON.stringify(respItem));
345
345
  } else if (!respItem.bid[0]) {
346
- utils.logError(LOG_ERROR_MESS.noBid);
346
+ logError(LOG_ERROR_MESS.noBid);
347
347
  }
348
348
  return respItem && respItem.bid && respItem.bid[0];
349
349
  }
@@ -382,8 +382,7 @@ function _addBidResponse(serverBid, bidRequest, bidResponses) {
382
382
  bidResponse.adResponse = {
383
383
  content: bidResponse.vastXml
384
384
  };
385
- }
386
- if (serverBid.nurl) {
385
+ } else if (serverBid.nurl) {
387
386
  bidResponse.vastUrl = serverBid.nurl;
388
387
  }
389
388
  bidResponse.mediaType = VIDEO;
@@ -401,7 +400,7 @@ function _addBidResponse(serverBid, bidRequest, bidResponses) {
401
400
  }
402
401
  }
403
402
  if (errorMessage) {
404
- utils.logError(errorMessage);
403
+ logError(errorMessage);
405
404
  }
406
405
  }
407
406
 
@@ -410,7 +409,7 @@ function createVideoRequest(bid, mediaType) {
410
409
  const size = (playerSize || bid.sizes || [])[0];
411
410
  if (!size) return;
412
411
 
413
- let result = utils.parseGPTSingleSizeArrayToRtbSize(size);
412
+ let result = parseGPTSingleSizeArrayToRtbSize(size);
414
413
 
415
414
  if (mimes) {
416
415
  result.mimes = mimes;
@@ -432,8 +431,8 @@ function createBannerRequest(bid, mediaType) {
432
431
  const sizes = mediaType.sizes || bid.sizes;
433
432
  if (!sizes || !sizes.length) return;
434
433
 
435
- let format = sizes.map((size) => utils.parseGPTSingleSizeArrayToRtbSize(size));
436
- let result = utils.parseGPTSingleSizeArrayToRtbSize(sizes[0]);
434
+ let format = sizes.map((size) => parseGPTSingleSizeArrayToRtbSize(size));
435
+ let result = parseGPTSingleSizeArrayToRtbSize(sizes[0]);
437
436
 
438
437
  if (format.length) {
439
438
  result.format = format
@@ -443,7 +442,7 @@ function createBannerRequest(bid, mediaType) {
443
442
 
444
443
  function makeNewUserIdInFPDStorage() {
445
444
  if (config.getConfig('localStorageWriteAllowed')) {
446
- const value = utils.generateUUID().replace(/-/g, '');
445
+ const value = generateUUID().replace(/-/g, '');
447
446
 
448
447
  storage.setDataInLocalStorage(USER_ID_KEY, value);
449
448
  return value;
@@ -519,7 +518,7 @@ function createRenderer (bid, rendererParams) {
519
518
  try {
520
519
  renderer.setRender(outstreamRender);
521
520
  } catch (err) {
522
- utils.logWarn('Prebid Error calling setRender on renderer', err);
521
+ logWarn('Prebid Error calling setRender on renderer', err);
523
522
  }
524
523
 
525
524
  return renderer;
@@ -1,10 +1,11 @@
1
- import * as utils from '../src/utils.js';
2
- import {registerBidder} from '../src/adapters/bidderFactory.js';
1
+ import { isStr, deepAccess, isArray, isNumber, logError, logWarn, parseGPTSingleSizeArrayToRtbSize } from '../src/utils.js';
2
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
3
3
  import { Renderer } from '../src/Renderer.js';
4
4
  import { VIDEO } from '../src/mediaTypes.js';
5
+ import { config } from '../src/config.js';
5
6
 
6
7
  const BIDDER_CODE = 'gridNM';
7
- const ENDPOINT_URL = 'https://grid.bidswitch.net/hbnm';
8
+ const ENDPOINT_URL = 'https://grid.bidswitch.net/hbjson';
8
9
  const SYNC_URL = 'https://x.bidswitch.net/sync?ssp=themediagrid';
9
10
  const TIME_TO_LIVE = 360;
10
11
  const RENDERER_URL = 'https://acdn.adnxs.com/video/outstream/ANOutstreamVideo.js';
@@ -37,19 +38,19 @@ export const spec = {
37
38
  */
38
39
  isBidRequestValid: function(bid) {
39
40
  let invalid =
40
- !bid.params.source || !utils.isStr(bid.params.source) ||
41
- !bid.params.secid || !utils.isStr(bid.params.secid) ||
42
- !bid.params.pubid || !utils.isStr(bid.params.pubid);
41
+ !bid.params.source || !isStr(bid.params.source) ||
42
+ !bid.params.secid || !isStr(bid.params.secid) ||
43
+ !bid.params.pubid || !isStr(bid.params.pubid);
43
44
 
44
- const video = utils.deepAccess(bid, 'mediaTypes.video') || {};
45
- const { protocols = video.protocols, mimes = video.mimes } = utils.deepAccess(bid, 'params.video') || {};
45
+ const video = deepAccess(bid, 'mediaTypes.video') || {};
46
+ const { protocols = video.protocols, mimes = video.mimes } = deepAccess(bid, 'params.video') || {};
46
47
  if (!invalid) {
47
48
  invalid = !protocols || !mimes;
48
49
  }
49
50
  if (!invalid) {
50
- invalid = !utils.isArray(mimes) || !mimes.length || mimes.filter((it) => !(it && utils.isStr(it))).length;
51
+ invalid = !isArray(mimes) || !mimes.length || mimes.filter((it) => !(it && isStr(it))).length;
51
52
  if (!invalid) {
52
- invalid = !utils.isArray(protocols) || !protocols.length || protocols.filter((it) => !(utils.isNumber(it) && it > 0 && !(it % 1))).length;
53
+ invalid = !isArray(protocols) || !protocols.length || protocols.filter((it) => !(isNumber(it) && it > 0 && !(it % 1))).length;
53
54
  }
54
55
  }
55
56
  return !invalid;
@@ -64,62 +65,146 @@ export const spec = {
64
65
  buildRequests: function(validBidRequests, bidderRequest) {
65
66
  const bids = validBidRequests || [];
66
67
  const requests = [];
68
+ let { bidderRequestId, auctionId, gdprConsent, uspConsent, timeout, refererInfo } = bidderRequest || {};
69
+
70
+ const referer = refererInfo ? encodeURIComponent(refererInfo.referer) : '';
67
71
 
68
72
  bids.forEach(bid => {
69
- const { params, bidderRequestId, sizes } = bid;
70
- const payload = {
71
- sizes: utils.parseSizesInput(sizes).join(','),
72
- r: bidderRequestId,
73
- wrapperType: 'Prebid_js',
74
- wrapperVersion: '$prebid.version$'
75
- };
73
+ let user;
74
+ let userExt;
76
75
 
77
- if (bidderRequest) {
78
- if (bidderRequest.refererInfo && bidderRequest.refererInfo.referer) {
79
- payload.u = bidderRequest.refererInfo.referer;
80
- }
81
- if (bidderRequest.timeout) {
82
- payload.wtimeout = bidderRequest.timeout;
83
- }
84
- if (bidderRequest.gdprConsent) {
85
- if (bidderRequest.gdprConsent.consentString) {
86
- payload.gdpr_consent = bidderRequest.gdprConsent.consentString;
87
- }
88
- payload.gdpr_applies =
89
- (typeof bidderRequest.gdprConsent.gdprApplies === 'boolean')
90
- ? Number(bidderRequest.gdprConsent.gdprApplies) : 1;
76
+ const schain = bid.schain;
77
+ const userIdAsEids = bid.userIdAsEids;
78
+
79
+ if (!bidderRequestId) {
80
+ bidderRequestId = bid.bidderRequestId;
81
+ }
82
+ if (!auctionId) {
83
+ auctionId = bid.auctionId;
84
+ }
85
+ const {
86
+ params: { floorcpm, pubdata, source, secid, pubid, content, video },
87
+ mediaTypes, bidId, adUnitCode, rtd, ortb2Imp, sizes
88
+ } = bid;
89
+
90
+ const bidFloor = _getFloor(mediaTypes || {}, bid, isNumber(floorcpm) && floorcpm);
91
+ const jwTargeting = rtd && rtd.jwplayer && rtd.jwplayer.targeting;
92
+ const jwpseg = (pubdata && pubdata.jwpseg) || (jwTargeting && jwTargeting.segments);
93
+
94
+ const siteContent = content || (jwTargeting && jwTargeting.content);
95
+
96
+ const impObj = {
97
+ id: bidId.toString(),
98
+ tagid: secid.toString(),
99
+ video: createVideoForImp(video, sizes, mediaTypes && mediaTypes.video),
100
+ ext: {
101
+ divid: adUnitCode.toString()
91
102
  }
92
- if (bidderRequest.uspConsent) {
93
- payload.us_privacy = bidderRequest.uspConsent;
103
+ };
104
+
105
+ if (ortb2Imp && ortb2Imp.ext && ortb2Imp.ext.data) {
106
+ impObj.ext.data = ortb2Imp.ext.data;
107
+ if (impObj.ext.data.adserver && impObj.ext.data.adserver.adslot) {
108
+ impObj.ext.gpid = impObj.ext.data.adserver.adslot.toString();
109
+ } else {
110
+ impObj.ext.gpid = ortb2Imp.ext.data.pbadslot && ortb2Imp.ext.data.pbadslot.toString();
94
111
  }
95
112
  }
96
113
 
97
- const video = utils.deepAccess(bid, 'mediaTypes.video') || {};
98
- const paramsVideo = Object.assign({}, params.video);
99
- VIDEO_KEYS.forEach((key) => {
100
- if (!(key in paramsVideo) && key in video) {
101
- paramsVideo[key] = video[key];
114
+ if (bidFloor) {
115
+ impObj.bidfloor = bidFloor;
116
+ }
117
+
118
+ const imp = [impObj];
119
+
120
+ const reqSource = {
121
+ tid: auctionId && auctionId.toString(),
122
+ ext: {
123
+ wrapper: 'Prebid_js',
124
+ wrapper_version: '$prebid.version$'
102
125
  }
103
- });
126
+ };
127
+
128
+ if (schain) {
129
+ reqSource.ext.schain = schain;
130
+ }
131
+
132
+ const bidderTimeout = config.getConfig('bidderTimeout') || timeout;
133
+ const tmax = timeout ? Math.min(bidderTimeout, timeout) : bidderTimeout;
134
+
135
+ const request = {
136
+ id: bidderRequestId && bidderRequestId.toString(),
137
+ site: {
138
+ page: referer,
139
+ publisher: {
140
+ id: pubid,
141
+ },
142
+ },
143
+ source: reqSource,
144
+ tmax,
145
+ imp,
146
+ };
147
+
148
+ if (siteContent) {
149
+ request.site.content = siteContent;
150
+ }
151
+
152
+ if (jwpseg && jwpseg.length) {
153
+ user = {
154
+ data: [{
155
+ name: 'iow_labs_pub_data',
156
+ segment: jwpseg.map((seg) => {
157
+ return {name: 'jwpseg', value: seg};
158
+ })
159
+ }]
160
+ };
161
+ }
162
+
163
+ if (gdprConsent && gdprConsent.consentString) {
164
+ userExt = { consent: gdprConsent.consentString };
165
+ }
166
+
167
+ if (userIdAsEids && userIdAsEids.length) {
168
+ userExt = userExt || {};
169
+ userExt.eids = [...userIdAsEids];
170
+ }
171
+
172
+ if (userExt && Object.keys(userExt).length) {
173
+ user = user || {};
174
+ user.ext = userExt;
175
+ }
104
176
 
105
- if (!paramsVideo.size && video.playerSize && video.playerSize.length === 2) {
106
- paramsVideo.size = video.playerSize.join('x');
177
+ if (user) {
178
+ request.user = user;
107
179
  }
108
180
 
109
- if (!('mind' in paramsVideo) && 'minduration' in video) {
110
- paramsVideo.mind = video.minduration;
181
+ if (gdprConsent && gdprConsent.gdprApplies) {
182
+ request.regs = {
183
+ ext: {
184
+ gdpr: gdprConsent.gdprApplies ? 1 : 0
185
+ }
186
+ }
111
187
  }
112
- if (!('maxd' in paramsVideo) && 'maxduration' in video) {
113
- paramsVideo.maxd = video.maxduration;
188
+
189
+ if (uspConsent) {
190
+ if (!request.regs) {
191
+ request.regs = { ext: {} };
192
+ }
193
+ request.regs.ext.us_privacy = uspConsent;
114
194
  }
115
195
 
116
- const paramsToSend = Object.assign({}, params, {video: paramsVideo});
196
+ if (config.getConfig('coppa') === true) {
197
+ if (!request.regs) {
198
+ request.regs = {};
199
+ }
200
+ request.regs.coppa = 1;
201
+ }
117
202
 
118
203
  requests.push({
119
204
  method: 'POST',
120
- url: ENDPOINT_URL + '?' + utils.parseQueryStringParameters(payload).replace(/\&$/, ''),
205
+ url: ENDPOINT_URL + '?no_mapping=1&sp=' + source,
121
206
  bid: bid,
122
- data: paramsToSend // content
207
+ data: request
123
208
  });
124
209
  });
125
210
 
@@ -146,16 +231,11 @@ export const spec = {
146
231
  if (!errorMessage && serverResponse.seatbid) {
147
232
  const serverBid = _getBidFromResponse(serverResponse.seatbid[0]);
148
233
  if (serverBid) {
149
- if (!serverBid.adm) errorMessage = LOG_ERROR_MESS.noAdm + JSON.stringify(serverBid);
234
+ if (!serverBid.adm && !serverBid.nurl) errorMessage = LOG_ERROR_MESS.noAdm + JSON.stringify(serverBid);
150
235
  else if (!serverBid.price) errorMessage = LOG_ERROR_MESS.noPrice + JSON.stringify(serverBid);
151
236
  else if (serverBid.content_type !== 'video') errorMessage = LOG_ERROR_MESS.wrongContentType + serverBid.content_type;
152
237
  if (!errorMessage) {
153
238
  const bid = bidRequest.bid;
154
- if (!serverBid.w || !serverBid.h) {
155
- const size = utils.parseSizesInput(bid.sizes)[0].split('x');
156
- serverBid.w = size[0];
157
- serverBid.h = size[1];
158
- }
159
239
  const bidResponse = {
160
240
  requestId: bid.bidId,
161
241
  cpm: serverBid.price,
@@ -166,16 +246,21 @@ export const spec = {
166
246
  netRevenue: true,
167
247
  ttl: TIME_TO_LIVE,
168
248
  dealId: serverBid.dealid,
169
- vastXml: serverBid.adm,
170
249
  mediaType: VIDEO,
171
250
  meta: {
172
251
  advertiserDomains: serverBid.adomain ? serverBid.adomain : []
173
- },
174
- adResponse: {
175
- content: serverBid.adm
176
252
  }
177
253
  };
178
254
 
255
+ if (serverBid.adm) {
256
+ bidResponse.vastXml = serverBid.adm;
257
+ bidResponse.adResponse = {
258
+ content: bidResponse.vastXml
259
+ };
260
+ } else if (serverBid.nurl) {
261
+ bidResponse.vastUrl = serverBid.nurl;
262
+ }
263
+
179
264
  if (!bid.renderer && (!bid.mediaTypes || !bid.mediaTypes.video || bid.mediaTypes.video.context === 'outstream')) {
180
265
  bidResponse.renderer = createRenderer(bidResponse, {
181
266
  id: bid.bidId,
@@ -186,7 +271,7 @@ export const spec = {
186
271
  }
187
272
  }
188
273
  }
189
- if (errorMessage) utils.logError(errorMessage);
274
+ if (errorMessage) logError(errorMessage);
190
275
  return bidResponses;
191
276
  },
192
277
  getUserSyncs: function (syncOptions, responses, gdprConsent, uspConsent) {
@@ -213,13 +298,40 @@ export const spec = {
213
298
  }
214
299
  };
215
300
 
301
+ /**
302
+ * Gets bidfloor
303
+ * @param {Object} mediaTypes
304
+ * @param {Object} bid
305
+ * @param {Number} floor
306
+ * @returns {Number} floor
307
+ */
308
+ function _getFloor (mediaTypes, bid, floor) {
309
+ const curMediaType = mediaTypes.video ? 'video' : 'banner';
310
+
311
+ if (typeof bid.getFloor === 'function') {
312
+ const floorInfo = bid.getFloor({
313
+ currency: 'USD',
314
+ mediaType: curMediaType,
315
+ size: bid.sizes.map(([w, h]) => ({w, h}))
316
+ });
317
+
318
+ if (typeof floorInfo === 'object' &&
319
+ floorInfo.currency === 'USD' &&
320
+ !isNaN(parseFloat(floorInfo.floor))) {
321
+ floor = Math.max(floor, parseFloat(floorInfo.floor));
322
+ }
323
+ }
324
+
325
+ return floor;
326
+ }
327
+
216
328
  function _getBidFromResponse(respItem) {
217
329
  if (!respItem) {
218
- utils.logError(LOG_ERROR_MESS.emptySeatbid);
330
+ logError(LOG_ERROR_MESS.emptySeatbid);
219
331
  } else if (!respItem.bid) {
220
- utils.logError(LOG_ERROR_MESS.hasNoArrayOfBids + JSON.stringify(respItem));
332
+ logError(LOG_ERROR_MESS.hasNoArrayOfBids + JSON.stringify(respItem));
221
333
  } else if (!respItem.bid[0]) {
222
- utils.logError(LOG_ERROR_MESS.noBid);
334
+ logError(LOG_ERROR_MESS.noBid);
223
335
  }
224
336
  return respItem && respItem.bid && respItem.bid[0];
225
337
  }
@@ -243,12 +355,51 @@ function createRenderer (bid, rendererParams) {
243
355
  try {
244
356
  renderer.setRender(outstreamRender);
245
357
  } catch (err) {
246
- utils.logWarn('Prebid Error calling setRender on renderer', err);
358
+ logWarn('Prebid Error calling setRender on renderer', err);
247
359
  }
248
360
 
249
361
  return renderer;
250
362
  }
251
363
 
364
+ function createVideoForImp({ mind, maxd, size, ...paramsVideo }, bidSizes, bidVideo = {}) {
365
+ VIDEO_KEYS.forEach((key) => {
366
+ if (!(key in paramsVideo) && key in bidVideo) {
367
+ paramsVideo[key] = bidVideo[key];
368
+ }
369
+ });
370
+
371
+ if (size && isStr(size)) {
372
+ const sizeArray = size.split('x');
373
+ if (sizeArray.length === 2 && parseInt(sizeArray[0]) && parseInt(sizeArray[1])) {
374
+ paramsVideo.w = parseInt(sizeArray[0]);
375
+ paramsVideo.h = parseInt(sizeArray[1]);
376
+ }
377
+ }
378
+
379
+ if (!paramsVideo.w || !paramsVideo.h) {
380
+ const playerSizes = bidVideo.playerSize && bidVideo.playerSize.length === 2 ? bidVideo.playerSize : bidSizes;
381
+ if (playerSizes) {
382
+ const playerSize = playerSizes[0];
383
+ if (playerSize) {
384
+ Object.assign(paramsVideo, parseGPTSingleSizeArrayToRtbSize(playerSize));
385
+ }
386
+ }
387
+ }
388
+
389
+ const durationRangeSec = bidVideo.durationRangeSec || [];
390
+ const minDur = mind || durationRangeSec[0] || bidVideo.minduration;
391
+ const maxDur = maxd || durationRangeSec[1] || bidVideo.maxduration;
392
+
393
+ if (minDur) {
394
+ paramsVideo.minduration = minDur;
395
+ }
396
+ if (maxDur) {
397
+ paramsVideo.maxduration = maxDur;
398
+ }
399
+
400
+ return paramsVideo;
401
+ }
402
+
252
403
  export function resetUserSync() {
253
404
  hasSynced = false;
254
405
  }
@@ -1,9 +1,8 @@
1
1
  'use strict';
2
2
 
3
- import * as utils from '../src/utils.js';
3
+ import { getBidIdParameter, deepAccess, _each, triggerPixel } from '../src/utils.js';
4
4
  import {registerBidder} from '../src/adapters/bidderFactory.js';
5
5
  import {BANNER, NATIVE} from '../src/mediaTypes.js';
6
- import {triggerPixel} from '../src/utils.js';
7
6
 
8
7
  const BIDDER_CODE = 'growads';
9
8
 
@@ -23,8 +22,8 @@ export const spec = {
23
22
  const zoneCounters = {};
24
23
 
25
24
  return validBidRequests.map(bidRequest => {
26
- zoneId = utils.getBidIdParameter('zoneId', bidRequest.params);
27
- domain = utils.getBidIdParameter('domain', bidRequest.params);
25
+ zoneId = getBidIdParameter('zoneId', bidRequest.params);
26
+ domain = getBidIdParameter('domain', bidRequest.params);
28
27
 
29
28
  if (!(zoneId in zoneCounters)) {
30
29
  zoneCounters[zoneId] = 0;
@@ -77,8 +76,8 @@ export const spec = {
77
76
  width = parseInt(response.width);
78
77
  height = parseInt(response.height);
79
78
 
80
- minCPM = utils.getBidIdParameter('minCPM', request.params);
81
- maxCPM = utils.getBidIdParameter('maxCPM', request.params);
79
+ minCPM = getBidIdParameter('minCPM', request.params);
80
+ maxCPM = getBidIdParameter('maxCPM', request.params);
82
81
  width = parseInt(response.width);
83
82
  height = parseInt(response.height);
84
83
 
@@ -102,7 +101,7 @@ export const spec = {
102
101
  netRevenue: true,
103
102
  ttl: response.ttl,
104
103
  adUnitCode: request.adUnitCode,
105
- referrer: utils.deepAccess(request, 'refererInfo.referer')
104
+ referrer: deepAccess(request, 'refererInfo.referer')
106
105
  };
107
106
 
108
107
  if (response.hasOwnProperty(NATIVE)) {
@@ -137,7 +136,7 @@ export const spec = {
137
136
  bid.ad = response.ad;
138
137
  bid.mediaType = BANNER;
139
138
  // Ensure that response ad matches one of the placement sizes.
140
- utils._each(utils.deepAccess(request, 'mediaTypes.banner.sizes', []), function (size) {
139
+ _each(deepAccess(request, 'mediaTypes.banner.sizes', []), function (size) {
141
140
  if (width === size[0] && height === size[1]) {
142
141
  isCorrectSize = true;
143
142
  }
@@ -1,6 +1,5 @@
1
- import * as utils from '../src/utils.js'
2
-
3
1
  import { BANNER, VIDEO } from '../src/mediaTypes.js';
2
+ import { _each, deepAccess, logError, logWarn, parseSizesInput } from '../src/utils.js';
4
3
 
5
4
  import { config } from '../src/config.js'
6
5
  import { getStorageManager } from '../src/storageManager.js';
@@ -51,7 +50,7 @@ function _getBrowserParams(topWindowUrl) {
51
50
  topScreen = topWindow.screen;
52
51
  topUrl = topWindowUrl || '';
53
52
  } catch (error) {
54
- utils.logError(error);
53
+ logError(error);
55
54
  return browserParams
56
55
  }
57
56
 
@@ -131,7 +130,7 @@ function isBidRequestValid(bid) {
131
130
  const id = legacyParamID || params.slot || params.native || params.zone || params.pubID;
132
131
 
133
132
  if (invalidRequestIds[id]) {
134
- utils.logWarn(`[GumGum] Please check the implementation for ${id} for the placement ${adUnitCode}`);
133
+ logWarn(`[GumGum] Please check the implementation for ${id} for the placement ${adUnitCode}`);
135
134
  return false;
136
135
  }
137
136
 
@@ -146,12 +145,12 @@ function isBidRequestValid(bid) {
146
145
  case !!(params.inVideo): break;
147
146
  case !!(params.videoPubID): break;
148
147
  default:
149
- utils.logWarn(`[GumGum] No product selected for the placement ${adUnitCode}, please check your implementation.`);
148
+ logWarn(`[GumGum] No product selected for the placement ${adUnitCode}, please check your implementation.`);
150
149
  return false;
151
150
  }
152
151
 
153
152
  if (params.bidfloor && !(typeof params.bidfloor === 'number' && isFinite(params.bidfloor))) {
154
- utils.logWarn('[GumGum] bidfloor must be a Number');
153
+ logWarn('[GumGum] bidfloor must be a Number');
155
154
  return false;
156
155
  }
157
156
 
@@ -173,7 +172,7 @@ function _getVidParams(attributes) {
173
172
  protocols = [],
174
173
  playerSize = []
175
174
  } = attributes;
176
- const sizes = utils.parseSizesInput(playerSize);
175
+ const sizes = parseSizesInput(playerSize);
177
176
  const [viw, vih] = sizes[0] && sizes[0].split('x');
178
177
  let pr = '';
179
178
 
@@ -279,7 +278,7 @@ function buildRequests(validBidRequests, bidderRequest) {
279
278
  const uspConsent = bidderRequest && bidderRequest.uspConsent;
280
279
  const timeout = config.getConfig('bidderTimeout');
281
280
  const topWindowUrl = bidderRequest && bidderRequest.refererInfo && bidderRequest.refererInfo.referer;
282
- utils._each(validBidRequests, bidRequest => {
281
+ _each(validBidRequests, bidRequest => {
283
282
  const {
284
283
  bidId,
285
284
  mediaTypes = {},
@@ -298,8 +297,10 @@ function buildRequests(validBidRequests, bidderRequest) {
298
297
  // ADTS-134 Retrieve ID envelopes
299
298
  for (const eid in eids) data[eid] = eids[eid];
300
299
 
301
- // ADJS-1024
302
- if (utils.deepAccess(ortb2Imp, 'ext.data.adserver.name')) {
300
+ // ADJS-1024 & ADSS-1297
301
+ if (deepAccess(ortb2Imp, 'ext.data.pbadslot')) {
302
+ gpid = deepAccess(ortb2Imp, 'ext.data.pbadslot')
303
+ } else if (deepAccess(ortb2Imp, 'ext.data.adserver.name')) {
303
304
  gpid = ortb2Imp.ext.data.adserver.adslot
304
305
  }
305
306
 
@@ -433,7 +434,7 @@ function interpretResponse(serverResponse, bidRequest) {
433
434
  setTimeout(() => {
434
435
  !!invalidRequestIds[id] && delete invalidRequestIds[id];
435
436
  }, delayTime);
436
- utils.logWarn(`[GumGum] Please check the implementation for ${id}`);
437
+ logWarn(`[GumGum] Please check the implementation for ${id}`);
437
438
  }
438
439
 
439
440
  const defaultResponse = {
@@ -481,14 +482,19 @@ function interpretResponse(serverResponse, bidRequest) {
481
482
  advertiserDomains: advertiserDomains || [],
482
483
  mediaType: type || mediaType
483
484
  };
484
- let sizes = utils.parseSizesInput(bidRequest.sizes);
485
+ let sizes = parseSizesInput(bidRequest.sizes);
485
486
 
486
487
  if (maxw && maxh) {
487
488
  sizes = [`${maxw}x${maxh}`];
488
489
  } else if (product === 5 && includes(sizes, '1x1')) {
489
490
  sizes = ['1x1'];
490
491
  } else if (product === 2 && includes(sizes, '1x1')) {
491
- sizes = responseWidth && responseHeight ? [`${responseWidth}x${responseHeight}`] : utils.parseSizesInput(bidRequest.sizes)
492
+ const requestSizesThatMatchResponse = (bidRequest.sizes && bidRequest.sizes.reduce((result, current) => {
493
+ const [ width, height ] = current;
494
+ if (responseWidth === width || responseHeight === height) result.push(current.join('x'));
495
+ return result
496
+ }, [])) || [];
497
+ sizes = requestSizesThatMatchResponse.length ? requestSizesThatMatchResponse : parseSizesInput(bidRequest.sizes)
492
498
  }
493
499
 
494
500
  let [width, height] = sizes[0].split('x');