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
@@ -0,0 +1,129 @@
1
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
2
+ import { NATIVE, BANNER } from '../src/mediaTypes.js';
3
+ import * as utils from '../src/utils.js';
4
+ import {ajax} from '../src/ajax.js';
5
+
6
+ const CURRENCY = 'EUR';
7
+ const BIDDER_CODE = 'talkads';
8
+
9
+ export const spec = {
10
+ code: BIDDER_CODE,
11
+ supportedMediaTypes: [ NATIVE, BANNER ],
12
+ params: null,
13
+
14
+ /**
15
+ * Determines whether or not the given bid request is valid.
16
+ *
17
+ * @param poBid The bid params to validate.
18
+ * @return boolean True if this is a valid bid, and false otherwise.
19
+ */
20
+ isBidRequestValid: (poBid) => {
21
+ utils.logInfo('isBidRequestValid : ', poBid);
22
+ if (poBid.params === undefined) {
23
+ utils.logError('VALIDATION FAILED : the parameters must be defined');
24
+ return false;
25
+ }
26
+ if (poBid.params.tag_id === undefined) {
27
+ utils.logError('VALIDATION FAILED : the parameter "tag_id" must be defined');
28
+ return false;
29
+ }
30
+ if (poBid.params.bidder_url === undefined) {
31
+ utils.logError('VALIDATION FAILED : the parameter "bidder_url" must be defined');
32
+ return false;
33
+ }
34
+ this.params = poBid.params;
35
+ return !!(poBid.nativeParams || poBid.sizes);
36
+ }, // isBidRequestValid
37
+
38
+ /**
39
+ * Make a server request from the list of BidRequests.
40
+ *
41
+ * @param paValidBidRequests An array of bids
42
+ * @param poBidderRequest
43
+ * @return ServerRequest Info describing the request to the server.
44
+ */
45
+ buildRequests: (paValidBidRequests, poBidderRequest) => {
46
+ utils.logInfo('buildRequests : ', paValidBidRequests, poBidderRequest);
47
+ const laBids = paValidBidRequests.map((poBid, piId) => {
48
+ const loOne = { id: piId, ad_unit: poBid.adUnitCode, bid_id: poBid.bidId, type: '', size: [] };
49
+ if (poBid.nativeParams) {
50
+ loOne.type = 'native';
51
+ } else {
52
+ loOne.type = 'banner';
53
+ loOne.size = poBid.sizes;
54
+ }
55
+ return loOne;
56
+ });
57
+ const loServerRequest = {
58
+ cur: CURRENCY,
59
+ timeout: poBidderRequest.timeout,
60
+ auction_id: paValidBidRequests[0].auctionId,
61
+ transaction_id: paValidBidRequests[0].transactionId,
62
+ bids: laBids,
63
+ gdpr: { applies: false, consent: false },
64
+ };
65
+ if (poBidderRequest && poBidderRequest.gdprConsent) {
66
+ const loGdprConsent = poBidderRequest.gdprConsent;
67
+ if ((typeof loGdprConsent.gdprApplies === 'boolean') && loGdprConsent.gdprApplies) {
68
+ loServerRequest.gdpr.applies = true;
69
+ }
70
+ if ((typeof loGdprConsent.consentString === 'string') && loGdprConsent.consentString) {
71
+ loServerRequest.gdpr.consent = poBidderRequest.gdprConsent.consentString;
72
+ }
73
+ }
74
+ const lsUrl = this.params.bidder_url + '/' + this.params.tag_id;
75
+ return {
76
+ method: 'POST',
77
+ url: lsUrl,
78
+ data: JSON.stringify(loServerRequest),
79
+ };
80
+ }, // buildRequests
81
+
82
+ /**
83
+ * Unpack the response from the server into a list of bids.
84
+ *
85
+ * @param poServerResponse A successful response from the server.
86
+ * @param poPidRequest Request original server request
87
+ * @return An array of bids which were nested inside the server.
88
+ */
89
+ interpretResponse: (poServerResponse, poPidRequest) => {
90
+ utils.logInfo('interpretResponse : ', poServerResponse);
91
+ if (!poServerResponse.body) {
92
+ return [];
93
+ }
94
+ let laResponse = [];
95
+ if (poServerResponse.body.status !== 'ok') {
96
+ utils.logInfo('Error : ', poServerResponse.body.error);
97
+ return laResponse;
98
+ }
99
+ poServerResponse.body.bids.forEach((poResponse) => {
100
+ laResponse[laResponse.length] = {
101
+ requestId: poResponse.requestId,
102
+ cpm: poResponse.cpm,
103
+ currency: poResponse.currency,
104
+ width: poResponse.width,
105
+ height: poResponse.height,
106
+ ad: poResponse.ad,
107
+ ttl: poResponse.ttl,
108
+ creativeId: poResponse.creativeId,
109
+ netRevenue: poResponse.netRevenue,
110
+ pbid: poServerResponse.body.pbid,
111
+ };
112
+ });
113
+ return laResponse;
114
+ }, // interpretResponse
115
+
116
+ /**
117
+ * Register bidder specific code, which will execute if a bid from this bidder won the auction.
118
+ *
119
+ * @param poBid The bid that won the auction
120
+ */
121
+ onBidWon: (poBid) => {
122
+ utils.logInfo('onBidWon : ', poBid);
123
+ if (poBid.pbid) {
124
+ ajax(this.params.bidder_url + 'won/' + poBid.pbid);
125
+ }
126
+ }, // onBidWon
127
+ };
128
+
129
+ registerBidder(spec);
@@ -0,0 +1,60 @@
1
+ # Overview
2
+
3
+ ```
4
+ Module Name: TalkAds Adapter
5
+ Module Type: Bidder Adapter
6
+ Maintainer: technical_team@natexo.com
7
+ ```
8
+
9
+ # Description
10
+
11
+ Module that connects to TalkAds bidder to fetch bids.
12
+ Both native and banner formats are supported but not at the same time.
13
+ The only currently supported currency is EUR.
14
+
15
+ This adapter requires setup and approval from the Natexo programmatic team.
16
+
17
+ # Configuration
18
+
19
+
20
+
21
+
22
+ # Test parameters
23
+
24
+ ## Test banner Parameters
25
+
26
+ ```
27
+ var adUnits = [
28
+ code: 'prebid_banner_test',
29
+ mediaTypes: {
30
+ banner: {
31
+ sizes: [[300, 250], [300, 600]],
32
+ }
33
+ },
34
+ bids: [{
35
+ bidder: 'talkads',
36
+ params: {
37
+ tag_id: 0,
38
+ bidder_url: 'https://d.natexo-programmatic.com/tad/tag/testbid',
39
+ },
40
+ }]
41
+ ];
42
+ ```
43
+
44
+ ## Test native parameters
45
+
46
+ ```
47
+ var adUnits = [
48
+ code: 'prebid_native_test',
49
+ mediaTypes: {
50
+ native: {}
51
+ },
52
+ bids: [{
53
+ bidder: 'talkads',
54
+ params: {
55
+ tag_id: 0,
56
+ bidder_url: 'https://d.natexo-programmatic.com/tad/tag/testbid',
57
+ },
58
+ }]
59
+ ];
60
+ ```
@@ -1,7 +1,7 @@
1
+ import { logMessage } from '../src/utils.js';
1
2
  import { uspDataHandler } from '../src/adapterManager.js';
2
3
  import { submodule } from '../src/hook.js';
3
4
  import * as ajax from '../src/ajax.js'
4
- import * as utils from '../src/utils.js';
5
5
 
6
6
  export const graphUrl = 'https://rtga.tapad.com/v1/graph';
7
7
 
@@ -30,7 +30,7 @@ export const tapadIdSubmodule = {
30
30
  const configParams = config.params || {};
31
31
 
32
32
  if (configParams.companyId == null || isNaN(Number(configParams.companyId))) {
33
- utils.logMessage('Please provide a valid Company Id. Contact prebid@tapad.com for assistance.');
33
+ logMessage('Please provide a valid Company Id. Contact prebid@tapad.com for assistance.');
34
34
  }
35
35
 
36
36
  return {
@@ -49,7 +49,7 @@ export const tapadIdSubmodule = {
49
49
  complete(undefined);
50
50
  }
51
51
  if (e.status === 403) {
52
- utils.logMessage('Invalid Company Id. Contact prebid@tapad.com for assistance.');
52
+ logMessage('Invalid Company Id. Contact prebid@tapad.com for assistance.');
53
53
  }
54
54
  }
55
55
  }
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- import * as utils from '../src/utils.js';
3
+ import { logWarn, deepAccess, isFn, isPlainObject, getDNT, isBoolean, isNumber, isStr, isArray } from '../src/utils.js';
4
4
  import { registerBidder } from '../src/adapters/bidderFactory.js';
5
5
  import { BANNER, VIDEO } from '../src/mediaTypes.js';
6
6
  import { config } from '../src/config.js';
@@ -9,7 +9,7 @@ import { Renderer } from '../src/Renderer.js';
9
9
  const BIDDER_CODE = 'tappx';
10
10
  const TTL = 360;
11
11
  const CUR = 'USD';
12
- const TAPPX_BIDDER_VERSION = '0.1.0818';
12
+ const TAPPX_BIDDER_VERSION = '0.1.1004';
13
13
  const TYPE_CNN = 'prebidjs';
14
14
  const LOG_PREFIX = '[TAPPX]: ';
15
15
  const VIDEO_SUPPORT = ['instream', 'outstream'];
@@ -79,7 +79,7 @@ export const spec = {
79
79
  interpretResponse: function(serverResponse, originalRequest) {
80
80
  const responseBody = serverResponse.body;
81
81
  if (!serverResponse.body) {
82
- utils.logWarn(LOG_PREFIX, 'Empty response body HTTP 204, no bids');
82
+ logWarn(LOG_PREFIX, 'Empty response body HTTP 204, no bids');
83
83
  return [];
84
84
  }
85
85
 
@@ -131,17 +131,17 @@ export const spec = {
131
131
 
132
132
  function validBasic(bid) {
133
133
  if (bid.params == null) {
134
- utils.logWarn(LOG_PREFIX, 'Please review the mandatory Tappx parameters.');
134
+ logWarn(LOG_PREFIX, 'Please review the mandatory Tappx parameters.');
135
135
  return false;
136
136
  }
137
137
 
138
138
  if (bid.params.tappxkey == null) {
139
- utils.logWarn(LOG_PREFIX, 'Please review the mandatory Tappxkey parameter.');
139
+ logWarn(LOG_PREFIX, 'Please review the mandatory Tappxkey parameter.');
140
140
  return false;
141
141
  }
142
142
 
143
143
  if (bid.params.host == null) {
144
- utils.logWarn(LOG_PREFIX, 'Please review the mandatory Host parameter.');
144
+ logWarn(LOG_PREFIX, 'Please review the mandatory Host parameter.');
145
145
  return false;
146
146
  }
147
147
 
@@ -151,7 +151,7 @@ function validBasic(bid) {
151
151
  }
152
152
 
153
153
  if (classicEndpoint && bid.params.endpoint == null) {
154
- utils.logWarn(LOG_PREFIX, 'Please review the mandatory endpoint Tappx parameters.');
154
+ logWarn(LOG_PREFIX, 'Please review the mandatory endpoint Tappx parameters.');
155
155
  return false;
156
156
  }
157
157
 
@@ -159,16 +159,16 @@ function validBasic(bid) {
159
159
  }
160
160
 
161
161
  function validMediaType(bid) {
162
- const video = utils.deepAccess(bid, 'mediaTypes.video');
162
+ const video = deepAccess(bid, 'mediaTypes.video');
163
163
 
164
164
  // Video validations
165
165
  if (typeof video !== 'undefined') {
166
166
  if (VIDEO_SUPPORT.indexOf(video.context) === -1) {
167
- utils.logWarn(LOG_PREFIX, 'Please review the mandatory Tappx parameters for Video. Video context not supported.');
167
+ logWarn(LOG_PREFIX, 'Please review the mandatory Tappx parameters for Video. Video context not supported.');
168
168
  return false;
169
169
  }
170
170
  if (typeof video.mimes == 'undefined') {
171
- utils.logWarn(LOG_PREFIX, 'Please review the mandatory Tappx parameters for Video. Mimes param is mandatory.');
171
+ logWarn(LOG_PREFIX, 'Please review the mandatory Tappx parameters for Video. Mimes param is mandatory.');
172
172
  return false;
173
173
  }
174
174
  }
@@ -195,6 +195,9 @@ function interpretBid(serverBid, request) {
195
195
  }
196
196
 
197
197
  if (typeof serverBid.dealId !== 'undefined') { bidReturned.dealId = serverBid.dealId }
198
+ if (typeof serverBid.lurl != 'undefined') { bidReturned.lurl = serverBid.lurl }
199
+ if (typeof serverBid.nurl != 'undefined') { bidReturned.nurl = serverBid.nurl }
200
+ if (typeof serverBid.burl != 'undefined') { bidReturned.burl = serverBid.burl }
198
201
 
199
202
  if (typeof request.bids.mediaTypes !== 'undefined' && typeof request.bids.mediaTypes.video !== 'undefined') {
200
203
  bidReturned.vastXml = serverBid.adm;
@@ -207,7 +210,7 @@ function interpretBid(serverBid, request) {
207
210
  if (request.bids.mediaTypes.video.context === 'outstream') {
208
211
  const url = (serverBid.ext.purl) ? serverBid.ext.purl : false;
209
212
  if (typeof url === 'undefined') {
210
- utils.logWarn(LOG_PREFIX, 'Error getting player outstream from tappx');
213
+ logWarn(LOG_PREFIX, 'Error getting player outstream from tappx');
211
214
  return false;
212
215
  }
213
216
  bidReturned.renderer = createRenderer(bidReturned, request, url);
@@ -236,12 +239,12 @@ function buildOneRequest(validBidRequests, bidderRequest) {
236
239
  const ENDPOINT = hostInfo.endpoint;
237
240
  hostDomain = hostInfo.domain;
238
241
 
239
- const TAPPXKEY = utils.deepAccess(validBidRequests, 'params.tappxkey');
240
- const MKTAG = utils.deepAccess(validBidRequests, 'params.mktag');
241
- const BIDFLOOR = utils.deepAccess(validBidRequests, 'params.bidfloor');
242
- const BIDEXTRA = utils.deepAccess(validBidRequests, 'params.ext');
243
- const bannerMediaType = utils.deepAccess(validBidRequests, 'mediaTypes.banner');
244
- const videoMediaType = utils.deepAccess(validBidRequests, 'mediaTypes.video');
242
+ const TAPPXKEY = deepAccess(validBidRequests, 'params.tappxkey');
243
+ const MKTAG = deepAccess(validBidRequests, 'params.mktag');
244
+ const BIDFLOOR = deepAccess(validBidRequests, 'params.bidfloor');
245
+ const BIDEXTRA = deepAccess(validBidRequests, 'params.ext');
246
+ const bannerMediaType = deepAccess(validBidRequests, 'mediaTypes.banner');
247
+ const videoMediaType = deepAccess(validBidRequests, 'mediaTypes.video');
245
248
 
246
249
  // let requests = [];
247
250
  let payload = {};
@@ -250,16 +253,16 @@ function buildOneRequest(validBidRequests, bidderRequest) {
250
253
  let api = {};
251
254
 
252
255
  // > App/Site object
253
- if (utils.deepAccess(validBidRequests, 'params.app')) {
256
+ if (deepAccess(validBidRequests, 'params.app')) {
254
257
  let app = {};
255
- app.name = utils.deepAccess(validBidRequests, 'params.app.name');
256
- app.bundle = utils.deepAccess(validBidRequests, 'params.app.bundle');
257
- app.domain = utils.deepAccess(validBidRequests, 'params.app.domain');
258
- publisher.name = utils.deepAccess(validBidRequests, 'params.app.publisher.name');
259
- publisher.domain = utils.deepAccess(validBidRequests, 'params.app.publisher.domain');
258
+ app.name = deepAccess(validBidRequests, 'params.app.name');
259
+ app.bundle = deepAccess(validBidRequests, 'params.app.bundle');
260
+ app.domain = deepAccess(validBidRequests, 'params.app.domain');
261
+ publisher.name = deepAccess(validBidRequests, 'params.app.publisher.name');
262
+ publisher.domain = deepAccess(validBidRequests, 'params.app.publisher.domain');
260
263
  tagid = `${app.name}_typeAdBanVid_${getOs()}`;
261
264
  payload.app = app;
262
- api[0] = utils.deepAccess(validBidRequests, 'params.api') ? utils.deepAccess(validBidRequests, 'params.api') : [3, 5];
265
+ api[0] = deepAccess(validBidRequests, 'params.api') ? deepAccess(validBidRequests, 'params.api') : [3, 5];
263
266
  } else {
264
267
  let bundle = _extractPageUrl(validBidRequests, bidderRequest);
265
268
  let site = {};
@@ -305,7 +308,7 @@ function buildOneRequest(validBidRequests, bidderRequest) {
305
308
  if (typeof videoMediaType !== 'undefined') {
306
309
  let video = {};
307
310
 
308
- let videoParams = utils.deepAccess(validBidRequests, 'params.video');
311
+ let videoParams = deepAccess(validBidRequests, 'params.video');
309
312
  if (typeof videoParams !== 'undefined') {
310
313
  for (var key in VIDEO_CUSTOM_PARAMS) {
311
314
  if (videoParams.hasOwnProperty(key)) {
@@ -324,6 +327,12 @@ function buildOneRequest(validBidRequests, bidderRequest) {
324
327
 
325
328
  video.mimes = videoMediaType.mimes;
326
329
 
330
+ let videoExt = {};
331
+ if ((typeof videoMediaType.rewarded !== 'undefined') && videoMediaType.rewarded == 1) {
332
+ videoExt.rewarded = videoMediaType.rewarded;
333
+ }
334
+ video.ext = videoExt;
335
+
327
336
  imp.video = video;
328
337
  }
329
338
 
@@ -331,22 +340,22 @@ function buildOneRequest(validBidRequests, bidderRequest) {
331
340
  imp.tagid = tagid;
332
341
  imp.secure = 1;
333
342
 
334
- imp.bidfloor = utils.deepAccess(validBidRequests, 'params.bidfloor');
335
- if (utils.isFn(validBidRequests.getFloor)) {
343
+ imp.bidfloor = deepAccess(validBidRequests, 'params.bidfloor');
344
+ if (isFn(validBidRequests.getFloor)) {
336
345
  try {
337
346
  let floor = validBidRequests.getFloor({
338
347
  currency: CUR,
339
348
  mediaType: '*',
340
349
  size: '*'
341
350
  });
342
- if (utils.isPlainObject(floor) && !isNaN(floor.floor) && floor.currency === 'USD') {
351
+ if (isPlainObject(floor) && !isNaN(floor.floor) && floor.currency === 'USD') {
343
352
  imp.bidfloor = floor.floor;
344
353
  } else {
345
- utils.logWarn(LOG_PREFIX, 'Currency not valid. Use only USD with Tappx.');
354
+ logWarn(LOG_PREFIX, 'Currency not valid. Use only USD with Tappx.');
346
355
  }
347
356
  } catch (e) {
348
- utils.logWarn(LOG_PREFIX, e);
349
- imp.bidfloor = utils.deepAccess(validBidRequests, 'params.bidfloor'); // Be sure that we have an imp.bidfloor
357
+ logWarn(LOG_PREFIX, e);
358
+ imp.bidfloor = deepAccess(validBidRequests, 'params.bidfloor'); // Be sure that we have an imp.bidfloor
350
359
  }
351
360
  }
352
361
 
@@ -371,12 +380,12 @@ function buildOneRequest(validBidRequests, bidderRequest) {
371
380
  // Optional
372
381
  device.h = screen.height;
373
382
  device.w = screen.width;
374
- device.dnt = utils.getDNT() ? 1 : 0;
383
+ device.dnt = getDNT() ? 1 : 0;
375
384
  device.language = getLanguage();
376
385
  device.make = navigator.vendor ? navigator.vendor : '';
377
386
 
378
387
  let geo = {};
379
- geo.country = utils.deepAccess(validBidRequests, 'params.geo.country');
388
+ geo.country = deepAccess(validBidRequests, 'params.geo.country');
380
389
  // < Device object
381
390
 
382
391
  // > GDPR
@@ -384,7 +393,7 @@ function buildOneRequest(validBidRequests, bidderRequest) {
384
393
  user.ext = {};
385
394
 
386
395
  // Universal ID
387
- let eidsArr = utils.deepAccess(validBidRequests, 'userIdAsEids');
396
+ let eidsArr = deepAccess(validBidRequests, 'userIdAsEids');
388
397
  if (typeof eidsArr !== 'undefined') {
389
398
  eidsArr = eidsArr.filter(
390
399
  uuid =>
@@ -420,8 +429,8 @@ function buildOneRequest(validBidRequests, bidderRequest) {
420
429
  payloadExt.bidder = {};
421
430
  payloadExt.bidder.tappxkey = TAPPXKEY;
422
431
  payloadExt.bidder.mktag = MKTAG;
423
- payloadExt.bidder.bcid = utils.deepAccess(validBidRequests, 'params.bcid');
424
- payloadExt.bidder.bcrid = utils.deepAccess(validBidRequests, 'params.bcrid');
432
+ payloadExt.bidder.bcid = deepAccess(validBidRequests, 'params.bcid');
433
+ payloadExt.bidder.bcrid = deepAccess(validBidRequests, 'params.bcrid');
425
434
  payloadExt.bidder.ext = (typeof BIDEXTRA == 'object') ? BIDEXTRA : {};
426
435
  if (typeof videoMediaType !== 'undefined') {
427
436
  payloadExt.bidder.ext.pbvidtype = videoMediaType.context;
@@ -430,7 +439,7 @@ function buildOneRequest(validBidRequests, bidderRequest) {
430
439
 
431
440
  // > Payload
432
441
  payload.id = validBidRequests.auctionId;
433
- payload.test = utils.deepAccess(validBidRequests, 'params.test') ? 1 : 0;
442
+ payload.test = deepAccess(validBidRequests, 'params.test') ? 1 : 0;
434
443
  payload.at = 1;
435
444
  payload.tmax = bidderRequest.timeout ? bidderRequest.timeout : 600;
436
445
  payload.bidder = BIDDER_CODE;
@@ -464,8 +473,8 @@ function getOs() {
464
473
 
465
474
  export function _getHostInfo(validBidRequests) {
466
475
  let domainInfo = {};
467
- let endpoint = utils.deepAccess(validBidRequests, 'params.endpoint');
468
- let hostParam = utils.deepAccess(validBidRequests, 'params.host');
476
+ let endpoint = deepAccess(validBidRequests, 'params.endpoint');
477
+ let hostParam = deepAccess(validBidRequests, 'params.host');
469
478
 
470
479
  domainInfo.domain = hostParam.split('/', 1)[0];
471
480
 
@@ -486,14 +495,16 @@ export function _getHostInfo(validBidRequests) {
486
495
  }
487
496
 
488
497
  function outstreamRender(bid, request) {
498
+ let rendererOptions = {};
499
+ rendererOptions = (typeof bid.params[0].video != 'undefined') ? bid.params[0].video : {};
500
+ rendererOptions.content = bid.vastXml;
501
+
489
502
  bid.renderer.push(() => {
490
503
  window.tappxOutstream.renderAd({
491
504
  sizes: [bid.width, bid.height],
492
505
  targetId: bid.adUnitCode,
493
506
  adResponse: bid.adResponse,
494
- rendererOptions: {
495
- content: bid.vastXml
496
- }
507
+ rendererOptions: rendererOptions
497
508
  });
498
509
  });
499
510
  }
@@ -508,7 +519,7 @@ function createRenderer(bid, request, url) {
508
519
  try {
509
520
  rendererInst.setRender(outstreamRender);
510
521
  } catch (err) {
511
- utils.logWarn(LOG_PREFIX, 'Prebid Error calling setRender on renderer');
522
+ logWarn(LOG_PREFIX, 'Prebid Error calling setRender on renderer');
512
523
  }
513
524
 
514
525
  return rendererInst;
@@ -519,39 +530,31 @@ export function _checkParamDataType(key, value, datatype) {
519
530
  var functionToExecute;
520
531
  switch (datatype) {
521
532
  case DATA_TYPES.BOOLEAN:
522
- functionToExecute = utils.isBoolean;
533
+ functionToExecute = isBoolean;
523
534
  break;
524
535
  case DATA_TYPES.NUMBER:
525
- functionToExecute = utils.isNumber;
536
+ functionToExecute = isNumber;
526
537
  break;
527
538
  case DATA_TYPES.STRING:
528
- functionToExecute = utils.isStr;
539
+ functionToExecute = isStr;
529
540
  break;
530
541
  case DATA_TYPES.ARRAY:
531
- functionToExecute = utils.isArray;
542
+ functionToExecute = isArray;
532
543
  break;
533
544
  }
534
545
  if (functionToExecute(value)) {
535
546
  return value;
536
547
  }
537
- utils.logWarn(LOG_PREFIX, errMsg);
548
+ logWarn(LOG_PREFIX, errMsg);
538
549
  return undefined;
539
550
  }
540
551
 
541
552
  export function _extractPageUrl(validBidRequests, bidderRequest) {
542
- let domainUrl = utils.deepAccess(validBidRequests, 'params.domainUrl');
553
+ let referrer = deepAccess(bidderRequest, 'refererInfo.referer');
554
+ let page = deepAccess(bidderRequest, 'refererInfo.canonicalUrl') || deepAccess(window, 'location.href');
555
+ let paramUrl = deepAccess(validBidRequests, 'params.domainUrl') || config.getConfig('pageUrl');
543
556
 
544
- if (typeof domainUrl == 'undefined' || domainUrl == null) {
545
- domainUrl = config.getConfig('pageUrl') || utils.deepAccess(bidderRequest, 'refererInfo.canonicalUrl');
546
- }
547
-
548
- if (typeof domainUrl == 'undefined' || domainUrl == null) {
549
- try {
550
- domainUrl = window.top.document.head.querySelector('link[rel="canonical"][href]').getAttribute('href');
551
- } catch (error) {
552
- domainUrl = undefined;
553
- }
554
- }
557
+ let domainUrl = referrer || page || paramUrl;
555
558
 
556
559
  try {
557
560
  domainUrl = domainUrl.match(/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n?]+)/img)[0].replace(/^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?/img, '');
@@ -559,10 +562,6 @@ export function _extractPageUrl(validBidRequests, bidderRequest) {
559
562
  domainUrl = undefined;
560
563
  }
561
564
 
562
- if (typeof domainUrl == 'undefined' || domainUrl == null) {
563
- domainUrl = window.location.hostname;
564
- }
565
-
566
565
  return domainUrl;
567
566
  }
568
567
 
@@ -1,6 +1,6 @@
1
+ import { getValue, logError, deepAccess, getBidIdParameter, parseSizesInput, isArray } from '../src/utils.js';
1
2
  import {registerBidder} from '../src/adapters/bidderFactory.js';
2
3
  import {getStorageManager} from '../src/storageManager.js';
3
- import * as utils from '../src/utils.js';
4
4
 
5
5
  const BIDDER_CODE = 'teads';
6
6
  const GVL_ID = 132;
@@ -27,13 +27,13 @@ export const spec = {
27
27
  isBidRequestValid: function(bid) {
28
28
  let isValid = false;
29
29
  if (typeof bid.params !== 'undefined') {
30
- let isValidPlacementId = _validateId(utils.getValue(bid.params, 'placementId'));
31
- let isValidPageId = _validateId(utils.getValue(bid.params, 'pageId'));
30
+ let isValidPlacementId = _validateId(getValue(bid.params, 'placementId'));
31
+ let isValidPageId = _validateId(getValue(bid.params, 'pageId'));
32
32
  isValid = isValidPlacementId && isValidPageId;
33
33
  }
34
34
 
35
35
  if (!isValid) {
36
- utils.logError('Teads placementId and pageId parameters are required. Bid aborted.');
36
+ logError('Teads placementId and pageId parameters are required. Bid aborted.');
37
37
  }
38
38
  return isValid;
39
39
  },
@@ -54,8 +54,8 @@ export const spec = {
54
54
  data: bids,
55
55
  deviceWidth: screen.width,
56
56
  hb_version: '$prebid.version$',
57
- ...getFLoCParameters(utils.deepAccess(validBidRequests, '0.userId.flocId')),
58
- ...getUnifiedId2Parameter(utils.deepAccess(validBidRequests, '0.userId.uid2')),
57
+ ...getFLoCParameters(deepAccess(validBidRequests, '0.userId.flocId')),
58
+ ...getUnifiedId2Parameter(deepAccess(validBidRequests, '0.userId.uid2')),
59
59
  ...getFirstPartyTeadsIdParameter()
60
60
  };
61
61
 
@@ -188,35 +188,35 @@ function isGlobalConsent(gdprData, apiVersion) {
188
188
 
189
189
  function buildRequestObject(bid) {
190
190
  const reqObj = {};
191
- let placementId = utils.getValue(bid.params, 'placementId');
192
- let pageId = utils.getValue(bid.params, 'pageId');
191
+ let placementId = getValue(bid.params, 'placementId');
192
+ let pageId = getValue(bid.params, 'pageId');
193
193
 
194
194
  reqObj.sizes = getSizes(bid);
195
- reqObj.bidId = utils.getBidIdParameter('bidId', bid);
196
- reqObj.bidderRequestId = utils.getBidIdParameter('bidderRequestId', bid);
195
+ reqObj.bidId = getBidIdParameter('bidId', bid);
196
+ reqObj.bidderRequestId = getBidIdParameter('bidderRequestId', bid);
197
197
  reqObj.placementId = parseInt(placementId, 10);
198
198
  reqObj.pageId = parseInt(pageId, 10);
199
- reqObj.adUnitCode = utils.getBidIdParameter('adUnitCode', bid);
200
- reqObj.auctionId = utils.getBidIdParameter('auctionId', bid);
201
- reqObj.transactionId = utils.getBidIdParameter('transactionId', bid);
199
+ reqObj.adUnitCode = getBidIdParameter('adUnitCode', bid);
200
+ reqObj.auctionId = getBidIdParameter('auctionId', bid);
201
+ reqObj.transactionId = getBidIdParameter('transactionId', bid);
202
202
  return reqObj;
203
203
  }
204
204
 
205
205
  function getSizes(bid) {
206
- return utils.parseSizesInput(concatSizes(bid));
206
+ return parseSizesInput(concatSizes(bid));
207
207
  }
208
208
 
209
209
  function concatSizes(bid) {
210
- let playerSize = utils.deepAccess(bid, 'mediaTypes.video.playerSize');
211
- let videoSizes = utils.deepAccess(bid, 'mediaTypes.video.sizes');
212
- let bannerSizes = utils.deepAccess(bid, 'mediaTypes.banner.sizes');
210
+ let playerSize = deepAccess(bid, 'mediaTypes.video.playerSize');
211
+ let videoSizes = deepAccess(bid, 'mediaTypes.video.sizes');
212
+ let bannerSizes = deepAccess(bid, 'mediaTypes.banner.sizes');
213
213
 
214
- if (utils.isArray(bannerSizes) || utils.isArray(playerSize) || utils.isArray(videoSizes)) {
214
+ if (isArray(bannerSizes) || isArray(playerSize) || isArray(videoSizes)) {
215
215
  let mediaTypesSizes = [bannerSizes, videoSizes, playerSize];
216
216
  return mediaTypesSizes
217
217
  .reduce(function(acc, currSize) {
218
- if (utils.isArray(currSize)) {
219
- if (utils.isArray(currSize[0])) {
218
+ if (isArray(currSize)) {
219
+ if (isArray(currSize[0])) {
220
220
  currSize.forEach(function (childSize) {
221
221
  acc.push(childSize);
222
222
  })