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 { deepAccess, isArray, logWarn, triggerPixel, buildUrl, logInfo, getValue, getBidIdParameter } from '../src/utils.js';
2
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
3
3
  import { config } from '../src/config.js';
4
4
  const BIDDER_CODE = 'beop';
@@ -36,7 +36,7 @@ export const spec = {
36
36
  */
37
37
  buildRequests: function(validBidRequests, bidderRequest) {
38
38
  const slots = validBidRequests.map(beOpRequestSlotsMaker);
39
- let pageUrl = utils.deepAccess(bidderRequest, 'refererInfo.canonicalUrl') || config.getConfig('pageUrl') || utils.deepAccess(window, 'location.href');
39
+ let pageUrl = deepAccess(bidderRequest, 'refererInfo.canonicalUrl') || config.getConfig('pageUrl') || deepAccess(window, 'location.href');
40
40
  let fpd = config.getLegacyFpd(config.getConfig('ortb2'));
41
41
  let gdpr = bidderRequest.gdprConsent;
42
42
  let firstSlot = slots[0];
@@ -50,7 +50,7 @@ export const spec = {
50
50
  kwds: (fpd && fpd.site && fpd.site.keywords) || [],
51
51
  dbg: false,
52
52
  slts: slots,
53
- is_amp: utils.deepAccess(bidderRequest, 'referrerInfo.isAmp'),
53
+ is_amp: deepAccess(bidderRequest, 'referrerInfo.isAmp'),
54
54
  tc_string: (gdpr && gdpr.gdprApplies) ? gdpr.consentString : null,
55
55
  };
56
56
  const payloadString = JSON.stringify(payloadObject);
@@ -61,7 +61,7 @@ export const spec = {
61
61
  }
62
62
  },
63
63
  interpretResponse: function(serverResponse, request) {
64
- if (serverResponse && serverResponse.body && utils.isArray(serverResponse.body.bids) && serverResponse.body.bids.length > 0) {
64
+ if (serverResponse && serverResponse.body && isArray(serverResponse.body.bids) && serverResponse.body.bids.length > 0) {
65
65
  return serverResponse.body.bids;
66
66
  }
67
67
  return [];
@@ -73,8 +73,8 @@ export const spec = {
73
73
 
74
74
  let trackingParams = buildTrackingParams(timeoutData, 'timeout', timeoutData.timeout);
75
75
 
76
- utils.logWarn(BIDDER_CODE + ': timed out request');
77
- utils.triggerPixel(utils.buildUrl({
76
+ logWarn(BIDDER_CODE + ': timed out request');
77
+ triggerPixel(buildUrl({
78
78
  protocol: 'https',
79
79
  hostname: 't.beop.io',
80
80
  pathname: '/bid',
@@ -87,8 +87,8 @@ export const spec = {
87
87
  }
88
88
  let trackingParams = buildTrackingParams(bid, 'won', bid.cpm);
89
89
 
90
- utils.logInfo(BIDDER_CODE + ': won request');
91
- utils.triggerPixel(utils.buildUrl({
90
+ logInfo(BIDDER_CODE + ': won request');
91
+ triggerPixel(buildUrl({
92
92
  protocol: 'https',
93
93
  hostname: 't.beop.io',
94
94
  pathname: '/bid',
@@ -113,8 +113,8 @@ function buildTrackingParams(data, info, value) {
113
113
  }
114
114
 
115
115
  function beOpRequestSlotsMaker(bid) {
116
- const bannerSizes = utils.deepAccess(bid, 'mediaTypes.banner.sizes');
117
- const publisherCurrency = config.getConfig('currency.adServerCurrency') || utils.getValue(bid.params, 'currency') || 'EUR';
116
+ const bannerSizes = deepAccess(bid, 'mediaTypes.banner.sizes');
117
+ const publisherCurrency = config.getConfig('currency.adServerCurrency') || getValue(bid.params, 'currency') || 'EUR';
118
118
  let floor;
119
119
  if (typeof bid.getFloor === 'function') {
120
120
  const floorInfo = bid.getFloor({currency: publisherCurrency, mediaType: 'banner', size: [1, 1]});
@@ -123,19 +123,19 @@ function beOpRequestSlotsMaker(bid) {
123
123
  }
124
124
  }
125
125
  return {
126
- sizes: utils.isArray(bannerSizes) ? bannerSizes : bid.sizes,
126
+ sizes: isArray(bannerSizes) ? bannerSizes : bid.sizes,
127
127
  flr: floor,
128
- pid: utils.getValue(bid.params, 'accountId'),
129
- nid: utils.getValue(bid.params, 'networkId'),
130
- nptnid: utils.getValue(bid.params, 'networkPartnerId'),
131
- bid: utils.getBidIdParameter('bidId', bid),
132
- brid: utils.getBidIdParameter('bidderRequestId', bid),
133
- name: utils.getBidIdParameter('adUnitCode', bid),
134
- aid: utils.getBidIdParameter('auctionId', bid),
135
- tid: utils.getBidIdParameter('transactionId', bid),
136
- brc: utils.getBidIdParameter('bidRequestsCount', bid),
137
- bdrc: utils.getBidIdParameter('bidderRequestCount', bid),
138
- bwc: utils.getBidIdParameter('bidderWinsCount', bid),
128
+ pid: getValue(bid.params, 'accountId'),
129
+ nid: getValue(bid.params, 'networkId'),
130
+ nptnid: getValue(bid.params, 'networkPartnerId'),
131
+ bid: getBidIdParameter('bidId', bid),
132
+ brid: getBidIdParameter('bidderRequestId', bid),
133
+ name: getBidIdParameter('adUnitCode', bid),
134
+ aid: getBidIdParameter('auctionId', bid),
135
+ tid: getBidIdParameter('transactionId', bid),
136
+ brc: getBidIdParameter('bidRequestsCount', bid),
137
+ bdrc: getBidIdParameter('bidderRequestCount', bid),
138
+ bwc: getBidIdParameter('bidderWinsCount', bid),
139
139
  }
140
140
  }
141
141
 
@@ -1,7 +1,7 @@
1
+ import { logMessage } from '../src/utils.js';
1
2
  import { config } from '../src/config.js';
2
3
  import * as events from '../src/events.js';
3
4
  import { EVENTS } from '../src/constants.json';
4
- import * as utils from '../src/utils.js';
5
5
 
6
6
  const MODULE_NAME = 'bidViewabilityIO';
7
7
  const CONFIG_ENABLED = 'enabled';
@@ -23,8 +23,8 @@ export let isSupportedMediaType = (bid) => {
23
23
  return supportedMediaTypes.indexOf(bid.mediaType) > -1;
24
24
  }
25
25
 
26
- let logMessage = (message) => {
27
- return utils.logMessage(`${MODULE_NAME}: ${message}`);
26
+ let _logMessage = (message) => {
27
+ return logMessage(`${MODULE_NAME}: ${message}`);
28
28
  }
29
29
 
30
30
  // returns options for the iO that detects if the ad is viewable
@@ -43,7 +43,7 @@ export let markViewed = (bid, entry, observer) => {
43
43
  return () => {
44
44
  observer.unobserve(entry.target);
45
45
  events.emit(EVENTS.BID_VIEWABLE, bid);
46
- logMessage(`id: ${entry.target.getAttribute('id')} code: ${bid.adUnitCode} was viewed`);
46
+ _logMessage(`id: ${entry.target.getAttribute('id')} code: ${bid.adUnitCode} was viewed`);
47
47
  }
48
48
  }
49
49
 
@@ -59,13 +59,13 @@ export let viewCallbackFactory = (bid) => {
59
59
  return (entries, observer) => {
60
60
  entries.forEach(entry => {
61
61
  if (entry.isIntersecting) {
62
- logMessage(`viewable timer starting for id: ${entry.target.getAttribute('id')} code: ${bid.adUnitCode}`);
62
+ _logMessage(`viewable timer starting for id: ${entry.target.getAttribute('id')} code: ${bid.adUnitCode}`);
63
63
  entry.target.view_tracker = setTimeout(markViewed(bid, entry, observer), IAB_VIEWABLE_DISPLAY_TIME);
64
64
  } else {
65
- logMessage(`id: ${entry.target.getAttribute('id')} code: ${bid.adUnitCode} is out of view`);
65
+ _logMessage(`id: ${entry.target.getAttribute('id')} code: ${bid.adUnitCode} is out of view`);
66
66
  if (entry.target.view_tracker) {
67
67
  clearTimeout(entry.target.view_tracker);
68
- logMessage(`viewable timer stopped for id: ${entry.target.getAttribute('id')} code: ${bid.adUnitCode}`);
68
+ _logMessage(`viewable timer stopped for id: ${entry.target.getAttribute('id')} code: ${bid.adUnitCode}`);
69
69
  }
70
70
  }
71
71
  });
@@ -1,4 +1,4 @@
1
- import * as utils from '../src/utils.js';
1
+ import { _each, isArray, getBidIdParameter, deepClone, getUniqueIdentifierStr } from '../src/utils.js';
2
2
  // import {config} from 'src/config.js';
3
3
  import {registerBidder} from '../src/adapters/bidderFactory.js';
4
4
 
@@ -69,12 +69,12 @@ export const spec = {
69
69
 
70
70
  let bidglass = window['bidglass'];
71
71
 
72
- utils._each(validBidRequests, function(bid) {
73
- bid.sizes = ((utils.isArray(bid.sizes) && utils.isArray(bid.sizes[0])) ? bid.sizes : [bid.sizes]);
74
- bid.sizes = bid.sizes.filter(size => utils.isArray(size));
72
+ _each(validBidRequests, function(bid) {
73
+ bid.sizes = ((isArray(bid.sizes) && isArray(bid.sizes[0])) ? bid.sizes : [bid.sizes]);
74
+ bid.sizes = bid.sizes.filter(size => isArray(size));
75
75
 
76
- var adUnitId = utils.getBidIdParameter('adUnitId', bid.params);
77
- var options = utils.deepClone(bid.params);
76
+ var adUnitId = getBidIdParameter('adUnitId', bid.params);
77
+ var options = deepClone(bid.params);
78
78
 
79
79
  delete options.adUnitId;
80
80
 
@@ -96,7 +96,7 @@ export const spec = {
96
96
 
97
97
  // Stuff to send: page URL
98
98
  const bidReq = {
99
- reqId: utils.getUniqueIdentifierStr(),
99
+ reqId: getUniqueIdentifierStr(),
100
100
  imps: imps,
101
101
  ref: getReferer(),
102
102
  ori: getOrigins()
@@ -125,7 +125,7 @@ export const spec = {
125
125
  interpretResponse: function(serverResponse) {
126
126
  const bidResponses = [];
127
127
 
128
- utils._each(serverResponse.body.bidResponses, function(serverBid) {
128
+ _each(serverResponse.body.bidResponses, function(serverBid) {
129
129
  const bidResponse = {
130
130
  requestId: serverBid.requestId,
131
131
  cpm: parseFloat(serverBid.cpm),
@@ -1,6 +1,6 @@
1
+ import { logMessage, getWindowLocation } from '../src/utils.js';
1
2
  import { registerBidder } from '../src/adapters/bidderFactory.js'
2
3
  import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js'
3
- import * as utils from '../src/utils.js'
4
4
 
5
5
  const BIDDER_CODE = 'bidscube'
6
6
  const URL = 'https://supply.bidscube.com/?c=o&m=multi'
@@ -20,9 +20,9 @@ export const spec = {
20
20
  try {
21
21
  window.top.location.toString()
22
22
  winTop = window.top
23
- } catch (e) { utils.logMessage(e) }
23
+ } catch (e) { logMessage(e) }
24
24
 
25
- const location = utils.getWindowLocation()
25
+ const location = getWindowLocation()
26
26
  const placements = []
27
27
 
28
28
  for (let i = 0; i < validBidRequests.length; i++) {
@@ -1,6 +1,6 @@
1
+ import { logMessage, getDNT, deepSetValue, deepAccess, _map, logWarn } from '../src/utils.js';
1
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
2
3
  import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
3
- import * as utils from '../src/utils.js';
4
4
  import {config} from '../src/config.js';
5
5
  const BIDDER_CODE = 'bizzclick';
6
6
  const ACCOUNTID_MACROS = '[account_id]';
@@ -67,7 +67,7 @@ export const spec = {
67
67
  winTop = window.top;
68
68
  } catch (e) {
69
69
  location = winTop.location;
70
- utils.logMessage(e);
70
+ logMessage(e);
71
71
  };
72
72
  let bids = [];
73
73
  for (let bidRequest of validBidRequests) {
@@ -80,7 +80,7 @@ export const spec = {
80
80
  device: {
81
81
  w: winTop.screen.width,
82
82
  h: winTop.screen.height,
83
- dnt: utils.getDNT() ? 1 : 0,
83
+ dnt: getDNT() ? 1 : 0,
84
84
  language: (navigator && navigator.language) ? navigator.language.indexOf('-') != -1 ? navigator.language.split('-')[0] : navigator.language : '',
85
85
  },
86
86
  site: {
@@ -124,12 +124,12 @@ export const spec = {
124
124
  }
125
125
  if (bidRequest) {
126
126
  if (bidRequest.gdprConsent && bidRequest.gdprConsent.gdprApplies) {
127
- utils.deepSetValue(data, 'regs.ext.gdpr', bidRequest.gdprConsent.gdprApplies ? 1 : 0);
128
- utils.deepSetValue(data, 'user.ext.consent', bidRequest.gdprConsent.consentString);
127
+ deepSetValue(data, 'regs.ext.gdpr', bidRequest.gdprConsent.gdprApplies ? 1 : 0);
128
+ deepSetValue(data, 'user.ext.consent', bidRequest.gdprConsent.consentString);
129
129
  }
130
130
 
131
131
  if (bidRequest.uspConsent !== undefined) {
132
- utils.deepSetValue(data, 'regs.ext.us_privacy', bidRequest.uspConsent);
132
+ deepSetValue(data, 'regs.ext.us_privacy', bidRequest.uspConsent);
133
133
  }
134
134
  }
135
135
  bids.push(data)
@@ -194,7 +194,7 @@ export const spec = {
194
194
  * @returns {boolean}
195
195
  */
196
196
  const checkRequestType = (bidRequest, type) => {
197
- return (typeof utils.deepAccess(bidRequest, `mediaTypes.${type}`) !== 'undefined');
197
+ return (typeof deepAccess(bidRequest, `mediaTypes.${type}`) !== 'undefined');
198
198
  }
199
199
  const parseNative = admObject => {
200
200
  const { assets, link, imptrackers, jstracker } = admObject.native;
@@ -240,7 +240,7 @@ const addNativeParameters = bidRequest => {
240
240
  id: bidRequest.transactionId,
241
241
  ver: NATIVE_VERSION,
242
242
  };
243
- const assets = utils._map(bidRequest.mediaTypes.native, (bidParams, key) => {
243
+ const assets = _map(bidRequest.mediaTypes.native, (bidParams, key) => {
244
244
  const props = NATIVE_PARAMS[key];
245
245
  const asset = {
246
246
  required: bidParams.required & 1,
@@ -286,7 +286,7 @@ const parseSizes = (bid, mediaType) => {
286
286
  mediaTypes.video.w,
287
287
  mediaTypes.video.h
288
288
  ];
289
- } else if (Array.isArray(utils.deepAccess(bid, 'mediaTypes.video.playerSize')) && bid.mediaTypes.video.playerSize.length === 1) {
289
+ } else if (Array.isArray(deepAccess(bid, 'mediaTypes.video.playerSize')) && bid.mediaTypes.video.playerSize.length === 1) {
290
290
  size = bid.mediaTypes.video.playerSize[0];
291
291
  } else if (Array.isArray(bid.sizes) && bid.sizes.length > 0 && Array.isArray(bid.sizes[0]) && bid.sizes[0].length > 1) {
292
292
  size = bid.sizes[0];
@@ -299,7 +299,7 @@ const parseSizes = (bid, mediaType) => {
299
299
  } else if (Array.isArray(bid.sizes) && bid.sizes.length > 0) {
300
300
  sizes = bid.sizes
301
301
  } else {
302
- utils.logWarn('no sizes are setup or found');
302
+ logWarn('no sizes are setup or found');
303
303
  }
304
304
  return sizes
305
305
  }
@@ -10,10 +10,9 @@ export const META_KEYWORDS = 'keywords'
10
10
  export const META_DESCRIPTION = 'description'
11
11
 
12
12
  const VIDEO = 'video'
13
- const NATIVE = 'native'
14
13
  const BANNER = 'banner'
15
14
 
16
- const supportedMediaTypes = [BANNER, VIDEO, NATIVE]
15
+ const supportedMediaTypes = [BANNER, VIDEO]
17
16
  const aliasBidderCode = ['bk']
18
17
 
19
18
  export function getMetaList(name) {
@@ -90,7 +89,11 @@ export const parseXML = (content) => {
90
89
  if (typeof content !== 'string' || content.length === 0) return null
91
90
 
92
91
  const parser = new DOMParser()
93
- const xml = parser.parseFromString(content, 'text/xml')
92
+ let xml;
93
+
94
+ try {
95
+ xml = parser.parseFromString(content, 'text/xml')
96
+ } catch (e) {}
94
97
 
95
98
  if (xml &&
96
99
  xml.getElementsByTagName('VAST')[0] &&
@@ -104,19 +107,19 @@ export const parseXML = (content) => {
104
107
  /**
105
108
  * @param bidRequest
106
109
  * @param bliinkCreative
107
- * @return {{cpm, netRevenue: boolean, ad: string, requestId, width: number, currency: string, mediaType: string, vastXml, ttl: number, height: number}|null}
110
+ * @return {{cpm, netRevenue: boolean, requestId, width: (*|number), currency, ttl: number, creativeId, height: (*|number)} & {mediaType: string, vastXml}}
108
111
  */
109
112
  export const buildBid = (bidRequest, bliinkCreative) => {
110
113
  if (!bidRequest && !bliinkCreative) return null
111
114
 
112
115
  const body = {
113
116
  requestId: bidRequest.bidId,
117
+ currency: bliinkCreative.currency,
114
118
  cpm: bliinkCreative.price,
115
119
  creativeId: bliinkCreative.creativeId,
116
- currency: 'EUR',
120
+ width: (bidRequest.sizes && bidRequest.sizes[0][0]) || 1,
121
+ height: (bidRequest.sizes && bidRequest.sizes[0][1]) || 1,
117
122
  netRevenue: false,
118
- width: 1,
119
- height: 1,
120
123
  ttl: 3600,
121
124
  }
122
125
 
@@ -131,14 +134,20 @@ export const buildBid = (bidRequest, bliinkCreative) => {
131
134
 
132
135
  delete bidRequest['bids']
133
136
 
134
- return Object.assign(body, {
135
- currency: bliinkCreative.currency,
136
- width: 1,
137
- height: 1,
138
- mediaType: VIDEO,
139
- ad: '<html lang="en"></html>',
140
- vastXml: bliinkCreative.content,
141
- })
137
+ switch (bliinkCreative.media_type) {
138
+ case VIDEO:
139
+ return Object.assign(body, {
140
+ mediaType: VIDEO,
141
+ vastXml: bliinkCreative.content,
142
+ })
143
+ case BANNER:
144
+ return Object.assign(body, {
145
+ mediaType: BANNER,
146
+ ad: (bliinkCreative && bliinkCreative.content && bliinkCreative.content.creative && bliinkCreative.content.creative.adm) || '',
147
+ })
148
+ default:
149
+ break;
150
+ }
142
151
  }
143
152
 
144
153
  /**
@@ -209,7 +218,7 @@ export const buildRequests = (_, bidderRequest) => {
209
218
  * @return
210
219
  */
211
220
  const interpretResponse = (serverResponse, request) => {
212
- if ((serverResponse && serverResponse.mode === 'no-ad') && (!request.params)) {
221
+ if ((serverResponse && serverResponse.mode === 'no-ad')) {
213
222
  return []
214
223
  }
215
224
 
@@ -218,23 +227,40 @@ const interpretResponse = (serverResponse, request) => {
218
227
 
219
228
  const xml = parseXML(body)
220
229
 
221
- if (xml) {
222
- const price = xml.getElementsByTagName('Price') && xml.getElementsByTagName('Price')[0]
223
- const currency = xml.getElementsByTagName('Currency') && xml.getElementsByTagName('Currency')[0]
224
- const creativeId = xml.getElementsByTagName('CreativeId') && xml.getElementsByTagName('CreativeId')[0]
225
-
226
- const creative = {
227
- content: body,
228
- price: (price && price.textContent) || 0,
229
- currency: (currency && currency.textContent) || 'EUR',
230
- creativeId: creativeId || 0,
231
- media_type: 'video',
232
- }
233
-
234
- return buildBid(serverBody.bids[0], creative);
230
+ let creative;
231
+
232
+ switch (serverBody.bids[0].params.placement) {
233
+ case xml && VIDEO:
234
+ const price = xml.getElementsByTagName('Price') && xml.getElementsByTagName('Price')[0]
235
+ const currency = xml.getElementsByTagName('Currency') && xml.getElementsByTagName('Currency')[0]
236
+ const creativeId = xml.getElementsByTagName('CreativeId') && xml.getElementsByTagName('CreativeId')[0]
237
+
238
+ creative = {
239
+ content: body,
240
+ price: (price && price.textContent) || 0,
241
+ currency: (currency && currency.textContent) || 'EUR',
242
+ creativeId: creativeId || 0,
243
+ media_type: 'video',
244
+ }
245
+
246
+ return buildBid(serverBody.bids[0], creative)
247
+ case BANNER:
248
+ if (body) {
249
+ creative = {
250
+ content: body,
251
+ price: body.price,
252
+ currency: body.currency,
253
+ creativeId: 0,
254
+ media_type: 'banner',
255
+ }
256
+
257
+ return buildBid(serverBody.bids[0], creative)
258
+ }
259
+
260
+ break
261
+ default:
262
+ break
235
263
  }
236
-
237
- return []
238
264
  }
239
265
 
240
266
  /**
@@ -31,7 +31,7 @@ const adUnits = [
31
31
  bidder: 'bliink',
32
32
  params: {
33
33
  placement: 'banner',
34
- tagId: '14f30eca-85d2-11e8-9eed-0242ac120007'
34
+ tagId: '41'
35
35
  }
36
36
  }
37
37
  ]
@@ -50,11 +50,34 @@ const adUnits = [
50
50
  mediaTypes: {
51
51
  video: {
52
52
  context: 'instream',
53
- playerSize: [640, 480],
54
- mimes: ['video/mp4'],
55
- protocols: [1, 2, 3, 4, 5, 6, 7, 8],
56
- playbackmethod: [2],
57
- skip: 1
53
+ playerSize: [[640,480]],
54
+ }
55
+ },
56
+ bids: [
57
+ {
58
+ bidder: 'bliink',
59
+ params: {
60
+ tagId: '41',
61
+ placement: 'video',
62
+ }
63
+ }
64
+ ]
65
+ }
66
+ ]
67
+ ```
68
+
69
+ ## Sample outstream Video Ad Unit
70
+
71
+ ```js
72
+ const adUnits = [
73
+ {
74
+ code: '/19968336/prebid_cache_video_adunit',
75
+ sizes: [[640,480]],
76
+ mediaType: 'video',
77
+ mediaTypes: {
78
+ video: {
79
+ context: 'outstream',
80
+ playerSize: [[640,480]],
58
81
  }
59
82
  },
60
83
  bids: [
@@ -1,4 +1,4 @@
1
- import * as utils from '../src/utils.js';
1
+ import { deepAccess, deepSetValue, deepClone, logWarn, logError } from '../src/utils.js';
2
2
  import find from 'core-js-pure/features/array/find.js';
3
3
  import { registerBidder } from '../src/adapters/bidderFactory.js';
4
4
  import { VIDEO } from '../src/mediaTypes.js';
@@ -43,7 +43,7 @@ const BB_HELPERS = {
43
43
  if (!request.device.h) request.device.h = window.innerHeight;
44
44
  },
45
45
  addSchain: function(request, validBidRequests) {
46
- const schain = utils.deepAccess(validBidRequests, '0.schain');
46
+ const schain = deepAccess(validBidRequests, '0.schain');
47
47
  if (schain) request.source.ext = { schain: schain };
48
48
  },
49
49
  addCurrency: function(request) {
@@ -52,11 +52,11 @@ const BB_HELPERS = {
52
52
  else if (Array.isArray(adServerCur) && adServerCur.length) request.cur = [adServerCur[0]];
53
53
  },
54
54
  addUserIds: function(request, validBidRequests) {
55
- const bidUserId = utils.deepAccess(validBidRequests, '0.userId');
55
+ const bidUserId = deepAccess(validBidRequests, '0.userId');
56
56
  const eids = createEidsArray(bidUserId);
57
57
 
58
58
  if (eids.length) {
59
- utils.deepSetValue(request, 'user.ext.eids', eids);
59
+ deepSetValue(request, 'user.ext.eids', eids);
60
60
  }
61
61
  },
62
62
  substituteUrl: function (url, publication, renderer) {
@@ -72,7 +72,7 @@ const BB_HELPERS = {
72
72
  return BB_HELPERS.substituteUrl(BB_CONSTANTS.RENDERER_URL, publication, renderer);
73
73
  },
74
74
  transformVideoParams: function(videoParams, videoParamsExt) {
75
- videoParams = utils.deepClone(videoParams);
75
+ videoParams = deepClone(videoParams);
76
76
 
77
77
  let playerSize = videoParams.playerSize || [BB_CONSTANTS.DEFAULT_WIDTH, BB_CONSTANTS.DEFAULT_HEIGHT];
78
78
  if (Array.isArray(playerSize[0])) playerSize = playerSize[0];
@@ -105,8 +105,8 @@ const BB_HELPERS = {
105
105
  ttl: BB_CONSTANTS.DEFAULT_TTL
106
106
  };
107
107
 
108
- const extPrebidTargeting = utils.deepAccess(bid, 'ext.prebid.targeting');
109
- const extPrebidCache = utils.deepAccess(bid, 'ext.prebid.cache');
108
+ const extPrebidTargeting = deepAccess(bid, 'ext.prebid.targeting');
109
+ const extPrebidCache = deepAccess(bid, 'ext.prebid.cache');
110
110
 
111
111
  if (extPrebidCache && typeof extPrebidCache.vastXml === 'object' && extPrebidCache.vastXml.cacheId && extPrebidCache.vastXml.url) {
112
112
  bidObject.videoCacheKey = extPrebidCache.vastXml.cacheId;
@@ -139,12 +139,12 @@ const BB_RENDERER = {
139
139
  else if (bid.vastUrl) config.vastUrl = bid.vastUrl;
140
140
 
141
141
  if (!bid.vastXml && !bid.vastUrl) {
142
- utils.logWarn(`${BB_CONSTANTS.BIDDER_CODE}: No vastXml or vastUrl on bid, bailing...`);
142
+ logWarn(`${BB_CONSTANTS.BIDDER_CODE}: No vastXml or vastUrl on bid, bailing...`);
143
143
  return;
144
144
  }
145
145
 
146
146
  if (!(window.bluebillywig && window.bluebillywig.renderers)) {
147
- utils.logWarn(`${BB_CONSTANTS.BIDDER_CODE}: renderer code failed to initialize...`);
147
+ logWarn(`${BB_CONSTANTS.BIDDER_CODE}: renderer code failed to initialize...`);
148
148
  return;
149
149
  }
150
150
 
@@ -153,7 +153,7 @@ const BB_RENDERER = {
153
153
  const renderer = find(window.bluebillywig.renderers, r => r._id === rendererId);
154
154
 
155
155
  if (renderer) renderer.bootstrap(config, ele, bid.rendererSettings || {});
156
- else utils.logWarn(`${BB_CONSTANTS.BIDDER_CODE}: Couldn't find a renderer with ${rendererId}`);
156
+ else logWarn(`${BB_CONSTANTS.BIDDER_CODE}: Couldn't find a renderer with ${rendererId}`);
157
157
  },
158
158
  newRenderer: function(rendererUrl, adUnitCode) {
159
159
  const renderer = Renderer.install({
@@ -165,7 +165,7 @@ const BB_RENDERER = {
165
165
  try {
166
166
  renderer.setRender(BB_RENDERER.outstreamRender);
167
167
  } catch (err) {
168
- utils.logWarn(`${BB_CONSTANTS.BIDDER_CODE}: Error tying to setRender on renderer`, err);
168
+ logWarn(`${BB_CONSTANTS.BIDDER_CODE}: Error tying to setRender on renderer`, err);
169
169
  }
170
170
 
171
171
  return renderer;
@@ -189,70 +189,70 @@ export const spec = {
189
189
  const rendererRegex = /^[\w+_]+$/;
190
190
 
191
191
  if (!bid.params) {
192
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: no params set on bid. Rejecting bid: `, bid);
192
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: no params set on bid. Rejecting bid: `, bid);
193
193
  return false;
194
194
  }
195
195
 
196
196
  if (!bid.params.hasOwnProperty('publicationName') || typeof bid.params.publicationName !== 'string') {
197
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: no publicationName specified in bid params, or it's not a string. Rejecting bid: `, bid);
197
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: no publicationName specified in bid params, or it's not a string. Rejecting bid: `, bid);
198
198
  return false;
199
199
  } else if (!publicationNameRegex.test(bid.params.publicationName)) {
200
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: publicationName must be in format 'publication' or 'publication.environment'. Rejecting bid: `, bid);
200
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: publicationName must be in format 'publication' or 'publication.environment'. Rejecting bid: `, bid);
201
201
  return false;
202
202
  }
203
203
 
204
204
  if ((!bid.params.hasOwnProperty('rendererCode') || typeof bid.params.rendererCode !== 'string')) {
205
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: no rendererCode was specified in bid params. Rejecting bid: `, bid);
205
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: no rendererCode was specified in bid params. Rejecting bid: `, bid);
206
206
  return false;
207
207
  } else if (!rendererRegex.test(bid.params.rendererCode)) {
208
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: rendererCode must be alphanumeric, including underscores. Rejecting bid: `, bid);
208
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: rendererCode must be alphanumeric, including underscores. Rejecting bid: `, bid);
209
209
  return false;
210
210
  }
211
211
 
212
212
  if (!bid.params.accountId) {
213
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: no accountId specified in bid params. Rejecting bid: `, bid);
213
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: no accountId specified in bid params. Rejecting bid: `, bid);
214
214
  return false;
215
215
  }
216
216
 
217
217
  if (bid.params.hasOwnProperty('connections')) {
218
218
  if (!Array.isArray(bid.params.connections)) {
219
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: connections is not of type array. Rejecting bid: `, bid);
219
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: connections is not of type array. Rejecting bid: `, bid);
220
220
  return false;
221
221
  } else {
222
222
  for (let i = 0; i < bid.params.connections.length; i++) {
223
223
  if (!bid.params.hasOwnProperty(bid.params.connections[i])) {
224
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: connection specified in params.connections, but not configured in params. Rejecting bid: `, bid);
224
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: connection specified in params.connections, but not configured in params. Rejecting bid: `, bid);
225
225
  return false;
226
226
  }
227
227
  }
228
228
  }
229
229
  } else {
230
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: no connections specified in bid. Rejecting bid: `, bid);
230
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: no connections specified in bid. Rejecting bid: `, bid);
231
231
  return false;
232
232
  }
233
233
 
234
234
  if (bid.params.hasOwnProperty('video') && (bid.params.video === null || typeof bid.params.video !== 'object')) {
235
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: params.video must be of type object. Rejecting bid: `, bid);
235
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: params.video must be of type object. Rejecting bid: `, bid);
236
236
  return false;
237
237
  }
238
238
 
239
239
  if (bid.params.hasOwnProperty('rendererSettings') && (bid.params.rendererSettings === null || typeof bid.params.rendererSettings !== 'object')) {
240
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: params.rendererSettings must be of type object. Rejecting bid: `, bid);
240
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: params.rendererSettings must be of type object. Rejecting bid: `, bid);
241
241
  return false;
242
242
  }
243
243
 
244
244
  if (bid.hasOwnProperty('mediaTypes') && bid.mediaTypes.hasOwnProperty(VIDEO)) {
245
245
  if (!bid.mediaTypes[VIDEO].hasOwnProperty('context')) {
246
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: no context specified in bid. Rejecting bid: `, bid);
246
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: no context specified in bid. Rejecting bid: `, bid);
247
247
  return false;
248
248
  }
249
249
 
250
250
  if (bid.mediaTypes[VIDEO].context !== 'outstream') {
251
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: video.context is invalid, must be "outstream". Rejecting bid: `, bid);
251
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: video.context is invalid, must be "outstream". Rejecting bid: `, bid);
252
252
  return false;
253
253
  }
254
254
  } else {
255
- utils.logError(`${BB_CONSTANTS.BIDDER_CODE}: mediaTypes or mediaTypes.video is not specified. Rejecting bid: `, bid);
255
+ logError(`${BB_CONSTANTS.BIDDER_CODE}: mediaTypes or mediaTypes.video is not specified. Rejecting bid: `, bid);
256
256
  return false;
257
257
  }
258
258
 
@@ -273,7 +273,7 @@ export const spec = {
273
273
  return extBuilder;
274
274
  }, {});
275
275
 
276
- const videoParams = BB_HELPERS.transformVideoParams(utils.deepAccess(validBidRequest, 'mediaTypes.video'), utils.deepAccess(validBidRequest, 'params.video'));
276
+ const videoParams = BB_HELPERS.transformVideoParams(deepAccess(validBidRequest, 'mediaTypes.video'), deepAccess(validBidRequest, 'params.video'));
277
277
  imps.push({ id: validBidRequest.bidId, ext, secure: window.location.protocol === 'https' ? 1 : 0, video: videoParams });
278
278
  });
279
279
 
@@ -294,16 +294,16 @@ export const spec = {
294
294
  if (bidderRequest.gdprConsent) {
295
295
  let gdprApplies = 0;
296
296
  if (typeof bidderRequest.gdprConsent.gdprApplies === 'boolean') gdprApplies = bidderRequest.gdprConsent.gdprApplies ? 1 : 0;
297
- utils.deepSetValue(request, 'regs.ext.gdpr', gdprApplies);
298
- utils.deepSetValue(request, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
297
+ deepSetValue(request, 'regs.ext.gdpr', gdprApplies);
298
+ deepSetValue(request, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
299
299
  }
300
300
 
301
301
  if (bidderRequest.uspConsent) {
302
- utils.deepSetValue(request, 'regs.ext.us_privacy', bidderRequest.uspConsent);
302
+ deepSetValue(request, 'regs.ext.us_privacy', bidderRequest.uspConsent);
303
303
  this.syncStore.uspConsent = bidderRequest.uspConsent;
304
304
  }
305
305
 
306
- if (getConfig('coppa') == true) utils.deepSetValue(request, 'regs.coppa', 1);
306
+ if (getConfig('coppa') == true) deepSetValue(request, 'regs.coppa', 1);
307
307
 
308
308
  // Enrich the request with any external data we may have
309
309
  BB_HELPERS.addSiteAppDevice(request, bidderRequest.refererInfo && bidderRequest.refererInfo.referer);