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 { logInfo, logError, deepAccess, logWarn, deepSetValue, isArray, contains, isStr, mergeDeep } from '../src/utils.js';
2
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
3
3
  import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
4
4
  import {config} from '../src/config.js';
@@ -41,7 +41,7 @@ export const spec = {
41
41
  this.propertyBag.whitelabel.logId = bidder.toUpperCase();
42
42
  this.propertyBag.whitelabel.bidder = bidder;
43
43
  let bidderConfig = config.getConfig(bidder) || {};
44
- utils.logInfo('got bidderConfig: ', JSON.parse(JSON.stringify(bidderConfig)));
44
+ logInfo('got bidderConfig: ', JSON.parse(JSON.stringify(bidderConfig)));
45
45
  if (bidderConfig.kvpPrefix) {
46
46
  this.propertyBag.whitelabel.keyPrefix = bidderConfig.kvpPrefix;
47
47
  }
@@ -71,15 +71,15 @@ export const spec = {
71
71
  }
72
72
  try {
73
73
  if (arr.hasOwnProperty('auction') && arr.auction === 'dev') {
74
- utils.logInfo('GET: auction=dev');
74
+ logInfo('GET: auction=dev');
75
75
  this.propertyBag.whitelabel.auctionUrl = ORIGIN_DEV + AUCTIONURI;
76
76
  }
77
77
  if (arr.hasOwnProperty('cookiesync') && arr.cookiesync === 'dev') {
78
- utils.logInfo('GET: cookiesync=dev');
78
+ logInfo('GET: cookiesync=dev');
79
79
  this.propertyBag.whitelabel.cookieSyncUrl = ORIGIN_DEV + OZONECOOKIESYNC;
80
80
  }
81
81
  } catch (e) {}
82
- utils.logInfo('set propertyBag.whitelabel to', this.propertyBag.whitelabel);
82
+ logInfo('set propertyBag.whitelabel to', this.propertyBag.whitelabel);
83
83
  },
84
84
  getAuctionUrl() {
85
85
  return this.propertyBag.whitelabel.auctionUrl;
@@ -97,62 +97,62 @@ export const spec = {
97
97
  */
98
98
  isBidRequestValid(bid) {
99
99
  this.loadWhitelabelData(bid);
100
- utils.logInfo('isBidRequestValid : ', config.getConfig(), bid);
100
+ logInfo('isBidRequestValid : ', config.getConfig(), bid);
101
101
  let adUnitCode = bid.adUnitCode; // adunit[n].code
102
102
 
103
103
  if (!(bid.params.hasOwnProperty('placementId'))) {
104
- utils.logError('VALIDATION FAILED : missing placementId : siteId, placementId and publisherId are REQUIRED', adUnitCode);
104
+ logError('VALIDATION FAILED : missing placementId : siteId, placementId and publisherId are REQUIRED', adUnitCode);
105
105
  return false;
106
106
  }
107
107
  if (!this.isValidPlacementId(bid.params.placementId)) {
108
- utils.logError('VALIDATION FAILED : placementId must be exactly 10 numeric characters', adUnitCode);
108
+ logError('VALIDATION FAILED : placementId must be exactly 10 numeric characters', adUnitCode);
109
109
  return false;
110
110
  }
111
111
  if (!(bid.params.hasOwnProperty('publisherId'))) {
112
- utils.logError('VALIDATION FAILED : missing publisherId : siteId, placementId and publisherId are REQUIRED', adUnitCode);
112
+ logError('VALIDATION FAILED : missing publisherId : siteId, placementId and publisherId are REQUIRED', adUnitCode);
113
113
  return false;
114
114
  }
115
115
  if (!(bid.params.publisherId).toString().match(/^[a-zA-Z0-9\-]{12}$/)) {
116
- utils.logError('VALIDATION FAILED : publisherId must be exactly 12 alphanumieric characters including hyphens', adUnitCode);
116
+ logError('VALIDATION FAILED : publisherId must be exactly 12 alphanumieric characters including hyphens', adUnitCode);
117
117
  return false;
118
118
  }
119
119
  if (!(bid.params.hasOwnProperty('siteId'))) {
120
- utils.logError('VALIDATION FAILED : missing siteId : siteId, placementId and publisherId are REQUIRED', adUnitCode);
120
+ logError('VALIDATION FAILED : missing siteId : siteId, placementId and publisherId are REQUIRED', adUnitCode);
121
121
  return false;
122
122
  }
123
123
  if (!(bid.params.siteId).toString().match(/^[0-9]{10}$/)) {
124
- utils.logError('VALIDATION FAILED : siteId must be exactly 10 numeric characters', adUnitCode);
124
+ logError('VALIDATION FAILED : siteId must be exactly 10 numeric characters', adUnitCode);
125
125
  return false;
126
126
  }
127
127
  if (bid.params.hasOwnProperty('customParams')) {
128
- utils.logError('VALIDATION FAILED : customParams should be renamed to customData', adUnitCode);
128
+ logError('VALIDATION FAILED : customParams should be renamed to customData', adUnitCode);
129
129
  return false;
130
130
  }
131
131
  if (bid.params.hasOwnProperty('customData')) {
132
132
  if (!Array.isArray(bid.params.customData)) {
133
- utils.logError('VALIDATION FAILED : customData is not an Array', adUnitCode);
133
+ logError('VALIDATION FAILED : customData is not an Array', adUnitCode);
134
134
  return false;
135
135
  }
136
136
  if (bid.params.customData.length < 1) {
137
- utils.logError('VALIDATION FAILED : customData is an array but does not contain any elements', adUnitCode);
137
+ logError('VALIDATION FAILED : customData is an array but does not contain any elements', adUnitCode);
138
138
  return false;
139
139
  }
140
140
  if (!(bid.params.customData[0]).hasOwnProperty('targeting')) {
141
- utils.logError('VALIDATION FAILED : customData[0] does not contain "targeting"', adUnitCode);
141
+ logError('VALIDATION FAILED : customData[0] does not contain "targeting"', adUnitCode);
142
142
  return false;
143
143
  }
144
144
  if (typeof bid.params.customData[0]['targeting'] != 'object') {
145
- utils.logError('VALIDATION FAILED : customData[0] targeting is not an object', adUnitCode);
145
+ logError('VALIDATION FAILED : customData[0] targeting is not an object', adUnitCode);
146
146
  return false;
147
147
  }
148
148
  }
149
149
  if (bid.hasOwnProperty('mediaTypes') && bid.mediaTypes.hasOwnProperty(VIDEO)) {
150
150
  if (!bid.mediaTypes[VIDEO].hasOwnProperty('context')) {
151
- utils.logError('No video context key/value in bid. Rejecting bid: ', bid);
151
+ logError('No video context key/value in bid. Rejecting bid: ', bid);
152
152
  return false;
153
153
  }
154
154
  if (bid.mediaTypes[VIDEO].context !== 'instream' && bid.mediaTypes[VIDEO].context !== 'outstream') {
155
- utils.logError('video.context is invalid. Only instream/outstream video is supported. Rejecting bid: ', bid);
155
+ logError('video.context is invalid. Only instream/outstream video is supported. Rejecting bid: ', bid);
156
156
  return false;
157
157
  }
158
158
  }
@@ -172,7 +172,7 @@ export const spec = {
172
172
  this.propertyBag.buildRequestsStart = new Date().getTime();
173
173
  let whitelabelBidder = this.propertyBag.whitelabel.bidder; // by default = ozone
174
174
  let whitelabelPrefix = this.propertyBag.whitelabel.keyPrefix;
175
- utils.logInfo(`buildRequests time: ${this.propertyBag.buildRequestsStart} v ${OZONEVERSION} validBidRequests`, JSON.parse(JSON.stringify(validBidRequests)), 'bidderRequest', JSON.parse(JSON.stringify(bidderRequest)));
175
+ logInfo(`buildRequests time: ${this.propertyBag.buildRequestsStart} v ${OZONEVERSION} validBidRequests`, JSON.parse(JSON.stringify(validBidRequests)), 'bidderRequest', JSON.parse(JSON.stringify(bidderRequest)));
176
176
  // First check - is there any config to block this request?
177
177
  if (this.blockTheRequest()) {
178
178
  return [];
@@ -180,21 +180,21 @@ export const spec = {
180
180
  let htmlParams = {'publisherId': '', 'siteId': ''};
181
181
  if (validBidRequests.length > 0) {
182
182
  this.cookieSyncBag.userIdObject = Object.assign(this.cookieSyncBag.userIdObject, this.findAllUserIds(validBidRequests[0]));
183
- this.cookieSyncBag.siteId = utils.deepAccess(validBidRequests[0], 'params.siteId');
184
- this.cookieSyncBag.publisherId = utils.deepAccess(validBidRequests[0], 'params.publisherId');
183
+ this.cookieSyncBag.siteId = deepAccess(validBidRequests[0], 'params.siteId');
184
+ this.cookieSyncBag.publisherId = deepAccess(validBidRequests[0], 'params.publisherId');
185
185
  htmlParams = validBidRequests[0].params;
186
186
  }
187
- utils.logInfo('cookie sync bag', this.cookieSyncBag);
187
+ logInfo('cookie sync bag', this.cookieSyncBag);
188
188
  let singleRequest = this.getWhitelabelConfigItem('ozone.singleRequest');
189
189
  singleRequest = singleRequest !== false; // undefined & true will be true
190
- utils.logInfo(`config ${whitelabelBidder}.singleRequest : `, singleRequest);
190
+ logInfo(`config ${whitelabelBidder}.singleRequest : `, singleRequest);
191
191
  let ozoneRequest = {}; // we only want to set specific properties on this, not validBidRequests[0].params
192
192
  delete ozoneRequest.test; // don't allow test to be set in the config - ONLY use $_GET['pbjs_debug']
193
193
 
194
194
  // First party data module : look for ortb2 in setconfig & set the User object. NOTE THAT this should happen before we set the consentString
195
195
  let fpd = config.getConfig('ortb2');
196
- if (fpd && utils.deepAccess(fpd, 'user')) {
197
- utils.logInfo('added FPD user object');
196
+ if (fpd && deepAccess(fpd, 'user')) {
197
+ logInfo('added FPD user object');
198
198
  ozoneRequest.user = fpd.user;
199
199
  }
200
200
 
@@ -214,53 +214,53 @@ export const spec = {
214
214
  let arrBannerSizes = [];
215
215
  if (!ozoneBidRequest.hasOwnProperty('mediaTypes')) {
216
216
  if (ozoneBidRequest.hasOwnProperty('sizes')) {
217
- utils.logInfo('no mediaTypes detected - will use the sizes array in the config root');
217
+ logInfo('no mediaTypes detected - will use the sizes array in the config root');
218
218
  arrBannerSizes = ozoneBidRequest.sizes;
219
219
  } else {
220
- utils.logInfo('no mediaTypes detected, no sizes array in the config root either. Cannot set sizes for banner type');
220
+ logInfo('no mediaTypes detected, no sizes array in the config root either. Cannot set sizes for banner type');
221
221
  }
222
222
  } else {
223
223
  if (ozoneBidRequest.mediaTypes.hasOwnProperty(BANNER)) {
224
224
  arrBannerSizes = ozoneBidRequest.mediaTypes[BANNER].sizes; /* Note - if there is a sizes element in the config root it will be pushed into here */
225
- utils.logInfo('setting banner size from the mediaTypes.banner element for bidId ' + obj.id + ': ', arrBannerSizes);
225
+ logInfo('setting banner size from the mediaTypes.banner element for bidId ' + obj.id + ': ', arrBannerSizes);
226
226
  }
227
227
  if (ozoneBidRequest.mediaTypes.hasOwnProperty(VIDEO)) {
228
- utils.logInfo('openrtb 2.5 compliant video');
228
+ logInfo('openrtb 2.5 compliant video');
229
229
  // examine all the video attributes in the config, and either put them into obj.video if allowed by IAB2.5 or else in to obj.video.ext
230
230
  if (typeof ozoneBidRequest.mediaTypes[VIDEO] == 'object') {
231
- let childConfig = utils.deepAccess(ozoneBidRequest, 'params.video', {});
231
+ let childConfig = deepAccess(ozoneBidRequest, 'params.video', {});
232
232
  obj.video = this.unpackVideoConfigIntoIABformat(ozoneBidRequest.mediaTypes[VIDEO], childConfig);
233
233
  obj.video = this.addVideoDefaults(obj.video, ozoneBidRequest.mediaTypes[VIDEO], childConfig);
234
234
  }
235
235
  // we need to duplicate some of the video values
236
236
  let wh = getWidthAndHeightFromVideoObject(obj.video);
237
- utils.logInfo('setting video object from the mediaTypes.video element: ' + obj.id + ':', obj.video, 'wh=', wh);
237
+ logInfo('setting video object from the mediaTypes.video element: ' + obj.id + ':', obj.video, 'wh=', wh);
238
238
  if (wh && typeof wh === 'object') {
239
239
  obj.video.w = wh['w'];
240
240
  obj.video.h = wh['h'];
241
241
  if (playerSizeIsNestedArray(obj.video)) { // this should never happen; it was in the original spec for this change though.
242
- utils.logInfo('setting obj.video.format to be an array of objects');
242
+ logInfo('setting obj.video.format to be an array of objects');
243
243
  obj.video.ext.format = [wh];
244
244
  } else {
245
- utils.logInfo('setting obj.video.format to be an object');
245
+ logInfo('setting obj.video.format to be an object');
246
246
  obj.video.ext.format = wh;
247
247
  }
248
248
  } else {
249
- utils.logWarn('cannot set w, h & format values for video; the config is not right');
249
+ logWarn('cannot set w, h & format values for video; the config is not right');
250
250
  }
251
251
  }
252
252
  // Native integration is not complete yet
253
253
  if (ozoneBidRequest.mediaTypes.hasOwnProperty(NATIVE)) {
254
254
  obj.native = ozoneBidRequest.mediaTypes[NATIVE];
255
- utils.logInfo('setting native object from the mediaTypes.native element: ' + obj.id + ':', obj.native);
255
+ logInfo('setting native object from the mediaTypes.native element: ' + obj.id + ':', obj.native);
256
256
  }
257
257
  // is the publisher specifying floors, and is the floors module enabled?
258
258
  if (ozoneBidRequest.hasOwnProperty('getFloor')) {
259
- utils.logInfo('This bidRequest object has property: getFloor');
259
+ logInfo('This bidRequest object has property: getFloor');
260
260
  obj.floor = this.getFloorObjectForAuction(ozoneBidRequest);
261
- utils.logInfo('obj.floor is : ', obj.floor);
261
+ logInfo('obj.floor is : ', obj.floor);
262
262
  } else {
263
- utils.logInfo('This bidRequest object DOES NOT have property: getFloor');
263
+ logInfo('This bidRequest object DOES NOT have property: getFloor');
264
264
  }
265
265
  }
266
266
  if (arrBannerSizes.length > 0) {
@@ -277,7 +277,7 @@ export const spec = {
277
277
  // these 3 MUST exist - we check them in the validation method
278
278
  obj.placementId = placementId;
279
279
  // build the imp['ext'] object - NOTE - Dont obliterate anything that' already in obj.ext
280
- utils.deepSetValue(obj, 'ext.prebid', {'storedrequest': {'id': placementId}});
280
+ deepSetValue(obj, 'ext.prebid', {'storedrequest': {'id': placementId}});
281
281
  // obj.ext = {'prebid': {'storedrequest': {'id': placementId}}};
282
282
  obj.ext[whitelabelBidder] = {};
283
283
  obj.ext[whitelabelBidder].adUnitCode = ozoneBidRequest.adUnitCode; // eg. 'mpu'
@@ -285,9 +285,9 @@ export const spec = {
285
285
  if (ozoneBidRequest.params.hasOwnProperty('customData')) {
286
286
  obj.ext[whitelabelBidder].customData = ozoneBidRequest.params.customData;
287
287
  }
288
- utils.logInfo(`obj.ext.${whitelabelBidder} is `, obj.ext[whitelabelBidder]);
288
+ logInfo(`obj.ext.${whitelabelBidder} is `, obj.ext[whitelabelBidder]);
289
289
  if (isTestMode != null) {
290
- utils.logInfo('setting isTestMode to ', isTestMode);
290
+ logInfo('setting isTestMode to ', isTestMode);
291
291
  if (obj.ext[whitelabelBidder].hasOwnProperty('customData')) {
292
292
  for (let i = 0; i < obj.ext[whitelabelBidder].customData.length; i++) {
293
293
  obj.ext[whitelabelBidder].customData[i]['targeting'][wlOztestmodeKey] = isTestMode;
@@ -297,17 +297,17 @@ export const spec = {
297
297
  obj.ext[whitelabelBidder].customData[0].targeting[wlOztestmodeKey] = isTestMode;
298
298
  }
299
299
  }
300
- if (fpd && utils.deepAccess(fpd, 'site')) {
300
+ if (fpd && deepAccess(fpd, 'site')) {
301
301
  // attach the site fpd into exactly : imp[n].ext.[whitelabel].customData.0.targeting
302
- utils.logInfo('added FPD site object');
303
- if (utils.deepAccess(obj, 'ext.' + whitelabelBidder + '.customData.0.targeting', false)) {
302
+ logInfo('added FPD site object');
303
+ if (deepAccess(obj, 'ext.' + whitelabelBidder + '.customData.0.targeting', false)) {
304
304
  obj.ext[whitelabelBidder].customData[0].targeting = Object.assign(obj.ext[whitelabelBidder].customData[0].targeting, fpd.site);
305
- // let keys = utils.getKeys(fpd.site);
305
+ // let keys = getKeys(fpd.site);
306
306
  // for (let i = 0; i < keys.length; i++) {
307
307
  // obj.ext[whitelabelBidder].customData[0].targeting[keys[i]] = fpd.site[keys[i]];
308
308
  // }
309
309
  } else {
310
- utils.deepSetValue(obj, 'ext.' + whitelabelBidder + '.customData.0.targeting', fpd.site);
310
+ deepSetValue(obj, 'ext.' + whitelabelBidder + '.customData.0.targeting', fpd.site);
311
311
  }
312
312
  }
313
313
  return obj;
@@ -327,17 +327,17 @@ export const spec = {
327
327
  }
328
328
  extObj[whitelabelBidder].pv = this.getPageId(); // attach the page ID that will be common to all auciton calls for this page if refresh() is called
329
329
  let ozOmpFloorDollars = this.getWhitelabelConfigItem('ozone.oz_omp_floor'); // valid only if a dollar value (typeof == 'number')
330
- utils.logInfo(`${whitelabelPrefix}_omp_floor dollar value = `, ozOmpFloorDollars);
330
+ logInfo(`${whitelabelPrefix}_omp_floor dollar value = `, ozOmpFloorDollars);
331
331
  if (typeof ozOmpFloorDollars === 'number') {
332
332
  extObj[whitelabelBidder][whitelabelPrefix + '_omp_floor'] = ozOmpFloorDollars;
333
333
  } else if (typeof ozOmpFloorDollars !== 'undefined') {
334
- utils.logError(`${whitelabelPrefix}_omp_floor is invalid - IF SET then this must be a number, representing dollar value eg. ${whitelabelPrefix}_omp_floor: 1.55. You have it set as a ` + (typeof ozOmpFloorDollars));
334
+ logError(`${whitelabelPrefix}_omp_floor is invalid - IF SET then this must be a number, representing dollar value eg. ${whitelabelPrefix}_omp_floor: 1.55. You have it set as a ` + (typeof ozOmpFloorDollars));
335
335
  }
336
336
  let ozWhitelistAdserverKeys = this.getWhitelabelConfigItem('ozone.oz_whitelist_adserver_keys');
337
- let useOzWhitelistAdserverKeys = utils.isArray(ozWhitelistAdserverKeys) && ozWhitelistAdserverKeys.length > 0;
337
+ let useOzWhitelistAdserverKeys = isArray(ozWhitelistAdserverKeys) && ozWhitelistAdserverKeys.length > 0;
338
338
  extObj[whitelabelBidder][whitelabelPrefix + '_kvp_rw'] = useOzWhitelistAdserverKeys ? 1 : 0;
339
339
  if (whitelabelBidder != 'ozone') {
340
- utils.logInfo('setting aliases object');
340
+ logInfo('setting aliases object');
341
341
  extObj.prebid = {aliases: {'ozone': whitelabelBidder}};
342
342
  }
343
343
  // 20210413 - adding a set of GET params to pass to auction
@@ -359,53 +359,53 @@ export const spec = {
359
359
 
360
360
  // this should come as late as possible so it overrides any user.ext.consent value
361
361
  if (bidderRequest && bidderRequest.gdprConsent) {
362
- utils.logInfo('ADDING GDPR info');
363
- let apiVersion = utils.deepAccess(bidderRequest, 'gdprConsent.apiVersion', 1);
362
+ logInfo('ADDING GDPR info');
363
+ let apiVersion = deepAccess(bidderRequest, 'gdprConsent.apiVersion', 1);
364
364
  ozoneRequest.regs = {ext: {gdpr: bidderRequest.gdprConsent.gdprApplies ? 1 : 0, apiVersion: apiVersion}};
365
- if (utils.deepAccess(ozoneRequest, 'regs.ext.gdpr')) {
366
- utils.deepSetValue(ozoneRequest, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
365
+ if (deepAccess(ozoneRequest, 'regs.ext.gdpr')) {
366
+ deepSetValue(ozoneRequest, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
367
367
  } else {
368
- utils.logInfo('**** Strange CMP info: bidderRequest.gdprConsent exists BUT bidderRequest.gdprConsent.gdprApplies is false. See bidderRequest logged above. ****');
368
+ logInfo('**** Strange CMP info: bidderRequest.gdprConsent exists BUT bidderRequest.gdprConsent.gdprApplies is false. See bidderRequest logged above. ****');
369
369
  }
370
370
  } else {
371
- utils.logInfo('WILL NOT ADD GDPR info; no bidderRequest.gdprConsent object');
371
+ logInfo('WILL NOT ADD GDPR info; no bidderRequest.gdprConsent object');
372
372
  }
373
373
  if (bidderRequest && bidderRequest.uspConsent) {
374
- utils.logInfo('ADDING CCPA info');
375
- utils.deepSetValue(ozoneRequest, 'user.ext.uspConsent', bidderRequest.uspConsent);
374
+ logInfo('ADDING CCPA info');
375
+ deepSetValue(ozoneRequest, 'user.ext.uspConsent', bidderRequest.uspConsent);
376
376
  } else {
377
- utils.logInfo('WILL NOT ADD CCPA info; no bidderRequest.uspConsent.');
377
+ logInfo('WILL NOT ADD CCPA info; no bidderRequest.uspConsent.');
378
378
  }
379
379
 
380
380
  // this is for 2.2.1
381
381
  // coppa compliance
382
382
  if (config.getConfig('coppa') === true) {
383
- utils.deepSetValue(ozoneRequest, 'regs.coppa', 1);
383
+ deepSetValue(ozoneRequest, 'regs.coppa', 1);
384
384
  }
385
385
 
386
386
  // return the single request object OR the array:
387
387
  if (singleRequest) {
388
- utils.logInfo('buildRequests starting to generate response for a single request');
388
+ logInfo('buildRequests starting to generate response for a single request');
389
389
  ozoneRequest.id = bidderRequest.auctionId; // Unique ID of the bid request, provided by the exchange.
390
390
  ozoneRequest.auctionId = bidderRequest.auctionId; // not sure if this should be here?
391
391
  ozoneRequest.imp = tosendtags;
392
392
  ozoneRequest.ext = extObj;
393
393
  ozoneRequest.source = {'tid': bidderRequest.auctionId}; // RTB 2.5 : tid is Transaction ID that must be common across all participants in this bid request (e.g., potentially multiple exchanges).
394
- utils.deepSetValue(ozoneRequest, 'user.ext.eids', userExtEids);
394
+ deepSetValue(ozoneRequest, 'user.ext.eids', userExtEids);
395
395
  var ret = {
396
396
  method: 'POST',
397
397
  url: this.getAuctionUrl(),
398
398
  data: JSON.stringify(ozoneRequest),
399
399
  bidderRequest: bidderRequest
400
400
  };
401
- utils.logInfo('buildRequests request data for single = ', JSON.parse(JSON.stringify(ozoneRequest)));
401
+ logInfo('buildRequests request data for single = ', JSON.parse(JSON.stringify(ozoneRequest)));
402
402
  this.propertyBag.buildRequestsEnd = new Date().getTime();
403
- utils.logInfo(`buildRequests going to return for single at time ${this.propertyBag.buildRequestsEnd} (took ${this.propertyBag.buildRequestsEnd - this.propertyBag.buildRequestsStart}ms): `, ret);
403
+ logInfo(`buildRequests going to return for single at time ${this.propertyBag.buildRequestsEnd} (took ${this.propertyBag.buildRequestsEnd - this.propertyBag.buildRequestsStart}ms): `, ret);
404
404
  return ret;
405
405
  }
406
406
  // not single request - pull apart the tosendtags array & return an array of objects each containing one element in the imp array.
407
407
  let arrRet = tosendtags.map(imp => {
408
- utils.logInfo('buildRequests starting to generate non-single response, working on imp : ', imp);
408
+ logInfo('buildRequests starting to generate non-single response, working on imp : ', imp);
409
409
  let ozoneRequestSingle = Object.assign({}, ozoneRequest);
410
410
  imp.ext[whitelabelBidder].pageAuctionId = bidderRequest['auctionId']; // make a note in the ext object of what the original auctionId was, in the bidderRequest object
411
411
  ozoneRequestSingle.id = imp.ext[whitelabelBidder].transactionId; // Unique ID of the bid request, provided by the exchange.
@@ -413,8 +413,8 @@ export const spec = {
413
413
  ozoneRequestSingle.imp = [imp];
414
414
  ozoneRequestSingle.ext = extObj;
415
415
  ozoneRequestSingle.source = {'tid': imp.ext[whitelabelBidder].transactionId};
416
- utils.deepSetValue(ozoneRequestSingle, 'user.ext.eids', userExtEids);
417
- utils.logInfo('buildRequests RequestSingle (for non-single) = ', ozoneRequestSingle);
416
+ deepSetValue(ozoneRequestSingle, 'user.ext.eids', userExtEids);
417
+ logInfo('buildRequests RequestSingle (for non-single) = ', ozoneRequestSingle);
418
418
  return {
419
419
  method: 'POST',
420
420
  url: this.getAuctionUrl(),
@@ -423,7 +423,7 @@ export const spec = {
423
423
  };
424
424
  });
425
425
  this.propertyBag.buildRequestsEnd = new Date().getTime();
426
- utils.logInfo(`buildRequests going to return for non-single at time ${this.propertyBag.buildRequestsEnd} (took ${this.propertyBag.buildRequestsEnd - this.propertyBag.buildRequestsStart}ms): `, arrRet);
426
+ logInfo(`buildRequests going to return for non-single at time ${this.propertyBag.buildRequestsEnd} (took ${this.propertyBag.buildRequestsEnd - this.propertyBag.buildRequestsStart}ms): `, arrRet);
427
427
  return arrRet;
428
428
  },
429
429
  /**
@@ -441,11 +441,11 @@ export const spec = {
441
441
  */
442
442
  getFloorObjectForAuction(bidRequestRef) {
443
443
  const mediaTypesSizes = {
444
- banner: utils.deepAccess(bidRequestRef, 'mediaTypes.banner.sizes', null),
445
- video: utils.deepAccess(bidRequestRef, 'mediaTypes.video.playerSize', null),
446
- native: utils.deepAccess(bidRequestRef, 'mediaTypes.native.image.sizes', null)
444
+ banner: deepAccess(bidRequestRef, 'mediaTypes.banner.sizes', null),
445
+ video: deepAccess(bidRequestRef, 'mediaTypes.video.playerSize', null),
446
+ native: deepAccess(bidRequestRef, 'mediaTypes.native.image.sizes', null)
447
447
  }
448
- utils.logInfo('getFloorObjectForAuction mediaTypesSizes : ', mediaTypesSizes);
448
+ logInfo('getFloorObjectForAuction mediaTypesSizes : ', mediaTypesSizes);
449
449
  let ret = {};
450
450
  if (mediaTypesSizes.banner) {
451
451
  ret.banner = bidRequestRef.getFloor({mediaType: 'banner', currency: 'USD', size: mediaTypesSizes.banner});
@@ -456,7 +456,7 @@ export const spec = {
456
456
  if (mediaTypesSizes.native) {
457
457
  ret.native = bidRequestRef.getFloor({mediaType: 'native', currency: 'USD', size: mediaTypesSizes.native});
458
458
  }
459
- utils.logInfo('getFloorObjectForAuction returning : ', JSON.parse(JSON.stringify(ret)));
459
+ logInfo('getFloorObjectForAuction returning : ', JSON.parse(JSON.stringify(ret)));
460
460
  return ret;
461
461
  },
462
462
  /**
@@ -474,8 +474,8 @@ export const spec = {
474
474
  let startTime = new Date().getTime();
475
475
  let whitelabelBidder = this.propertyBag.whitelabel.bidder; // by default = ozone
476
476
  let whitelabelPrefix = this.propertyBag.whitelabel.keyPrefix;
477
- utils.logInfo(`interpretResponse time: ${startTime} . Time between buildRequests done and interpretResponse start was ${startTime - this.propertyBag.buildRequestsEnd}ms`);
478
- utils.logInfo(`serverResponse, request`, JSON.parse(JSON.stringify(serverResponse)), JSON.parse(JSON.stringify(request)));
477
+ logInfo(`interpretResponse time: ${startTime} . Time between buildRequests done and interpretResponse start was ${startTime - this.propertyBag.buildRequestsEnd}ms`);
478
+ logInfo(`serverResponse, request`, JSON.parse(JSON.stringify(serverResponse)), JSON.parse(JSON.stringify(request)));
479
479
  serverResponse = serverResponse.body || {};
480
480
  // note that serverResponse.id value is the auction_id we might want to use for reporting reasons.
481
481
  if (!serverResponse.hasOwnProperty('seatbid')) {
@@ -486,11 +486,11 @@ export const spec = {
486
486
  }
487
487
  let arrAllBids = [];
488
488
  let enhancedAdserverTargeting = this.getWhitelabelConfigItem('ozone.enhancedAdserverTargeting');
489
- utils.logInfo('enhancedAdserverTargeting', enhancedAdserverTargeting);
489
+ logInfo('enhancedAdserverTargeting', enhancedAdserverTargeting);
490
490
  if (typeof enhancedAdserverTargeting == 'undefined') {
491
491
  enhancedAdserverTargeting = true;
492
492
  }
493
- utils.logInfo('enhancedAdserverTargeting', enhancedAdserverTargeting);
493
+ logInfo('enhancedAdserverTargeting', enhancedAdserverTargeting);
494
494
 
495
495
  // 2021-03-05 - comment this out for a build without adding adid to the response
496
496
  serverResponse.seatbid = injectAdIdsIntoAllBidResponses(serverResponse.seatbid); // we now make sure that each bid in the bidresponse has a unique (within page) adId attribute.
@@ -499,38 +499,38 @@ export const spec = {
499
499
  let ozOmpFloorDollars = this.getWhitelabelConfigItem('ozone.oz_omp_floor'); // valid only if a dollar value (typeof == 'number')
500
500
  let addOzOmpFloorDollars = typeof ozOmpFloorDollars === 'number';
501
501
  let ozWhitelistAdserverKeys = this.getWhitelabelConfigItem('ozone.oz_whitelist_adserver_keys');
502
- let useOzWhitelistAdserverKeys = utils.isArray(ozWhitelistAdserverKeys) && ozWhitelistAdserverKeys.length > 0;
502
+ let useOzWhitelistAdserverKeys = isArray(ozWhitelistAdserverKeys) && ozWhitelistAdserverKeys.length > 0;
503
503
 
504
504
  for (let i = 0; i < serverResponse.seatbid.length; i++) {
505
505
  let sb = serverResponse.seatbid[i];
506
506
  for (let j = 0; j < sb.bid.length; j++) {
507
507
  let thisRequestBid = this.getBidRequestForBidId(sb.bid[j].impid, request.bidderRequest.bids);
508
- utils.logInfo(`seatbid:${i}, bid:${j} Going to set default w h for seatbid/bidRequest`, sb.bid[j], thisRequestBid);
508
+ logInfo(`seatbid:${i}, bid:${j} Going to set default w h for seatbid/bidRequest`, sb.bid[j], thisRequestBid);
509
509
  const {defaultWidth, defaultHeight} = defaultSize(thisRequestBid);
510
510
  let thisBid = ozoneAddStandardProperties(sb.bid[j], defaultWidth, defaultHeight);
511
511
  // prebid 4.0 compliance
512
512
  thisBid.meta = {advertiserDomains: thisBid.adomain || []};
513
513
  let videoContext = null;
514
514
  let isVideo = false;
515
- let bidType = utils.deepAccess(thisBid, 'ext.prebid.type');
516
- utils.logInfo(`this bid type is : ${bidType}`, j);
515
+ let bidType = deepAccess(thisBid, 'ext.prebid.type');
516
+ logInfo(`this bid type is : ${bidType}`, j);
517
517
  if (bidType === VIDEO) {
518
518
  isVideo = true;
519
519
  videoContext = this.getVideoContextForBidId(thisBid.bidId, request.bidderRequest.bids); // should be instream or outstream (or null if error)
520
520
  if (videoContext === 'outstream') {
521
- utils.logInfo('going to attach a renderer to OUTSTREAM video : ', j);
521
+ logInfo('going to attach a renderer to OUTSTREAM video : ', j);
522
522
  thisBid.renderer = newRenderer(thisBid.bidId);
523
523
  } else {
524
- utils.logInfo('bid is not an outstream video, will not attach a renderer: ', j);
524
+ logInfo('bid is not an outstream video, will not attach a renderer: ', j);
525
525
  }
526
526
  }
527
527
  let adserverTargeting = {};
528
528
  if (enhancedAdserverTargeting) {
529
529
  let allBidsForThisBidid = ozoneGetAllBidsForBidId(thisBid.bidId, serverResponse.seatbid);
530
530
  // add all the winning & non-winning bids for this bidId:
531
- utils.logInfo('Going to iterate allBidsForThisBidId', allBidsForThisBidid);
531
+ logInfo('Going to iterate allBidsForThisBidId', allBidsForThisBidid);
532
532
  Object.keys(allBidsForThisBidid).forEach((bidderName, index, ar2) => {
533
- utils.logInfo(`adding adserverTargeting for ${bidderName} for bidId ${thisBid.bidId}`);
533
+ logInfo(`adding adserverTargeting for ${bidderName} for bidId ${thisBid.bidId}`);
534
534
  // let bidderName = bidderNameWH.split('_')[0];
535
535
  adserverTargeting[whitelabelPrefix + '_' + bidderName] = bidderName;
536
536
  adserverTargeting[whitelabelPrefix + '_' + bidderName + '_crid'] = String(allBidsForThisBidid[bidderName].crid);
@@ -546,11 +546,11 @@ export const spec = {
546
546
  if (isVideo) {
547
547
  adserverTargeting[whitelabelPrefix + '_' + bidderName + '_vid'] = videoContext; // outstream or instream
548
548
  }
549
- let flr = utils.deepAccess(allBidsForThisBidid[bidderName], `ext.bidder.${whitelabelBidder}.floor`, null);
549
+ let flr = deepAccess(allBidsForThisBidid[bidderName], `ext.bidder.${whitelabelBidder}.floor`, null);
550
550
  if (flr != null) {
551
551
  adserverTargeting[whitelabelPrefix + '_' + bidderName + '_flr'] = flr;
552
552
  }
553
- let rid = utils.deepAccess(allBidsForThisBidid[bidderName], `ext.bidder.${whitelabelBidder}.ruleId`, null);
553
+ let rid = deepAccess(allBidsForThisBidid[bidderName], `ext.bidder.${whitelabelBidder}.ruleId`, null);
554
554
  if (rid != null) {
555
555
  adserverTargeting[whitelabelPrefix + '_' + bidderName + '_rid'] = rid;
556
556
  }
@@ -560,9 +560,9 @@ export const spec = {
560
560
  });
561
561
  } else {
562
562
  if (useOzWhitelistAdserverKeys) {
563
- utils.logWarn(`You have set a whitelist of adserver keys but this will be ignored because ${whitelabelBidder}.enhancedAdserverTargeting is set to false. No per-bid keys will be sent to adserver.`);
563
+ logWarn(`You have set a whitelist of adserver keys but this will be ignored because ${whitelabelBidder}.enhancedAdserverTargeting is set to false. No per-bid keys will be sent to adserver.`);
564
564
  } else {
565
- utils.logInfo(`${whitelabelBidder}.enhancedAdserverTargeting is set to false, so no per-bid keys will be sent to adserver.`);
565
+ logInfo(`${whitelabelBidder}.enhancedAdserverTargeting is set to false, so no per-bid keys will be sent to adserver.`);
566
566
  }
567
567
  }
568
568
  // also add in the winning bid, to be sent to dfp
@@ -580,7 +580,7 @@ export const spec = {
580
580
  adserverTargeting[whitelabelPrefix + '_size'] = `${winningBid.width}x${winningBid.height}`;
581
581
  }
582
582
  if (useOzWhitelistAdserverKeys) { // delete any un-whitelisted keys
583
- utils.logInfo('Going to filter out adserver targeting keys not in the whitelist: ', ozWhitelistAdserverKeys);
583
+ logInfo('Going to filter out adserver targeting keys not in the whitelist: ', ozWhitelistAdserverKeys);
584
584
  Object.keys(adserverTargeting).forEach(function(key) { if (ozWhitelistAdserverKeys.indexOf(key) === -1) { delete adserverTargeting[key]; } });
585
585
  }
586
586
  thisBid.adserverTargeting = adserverTargeting;
@@ -588,7 +588,7 @@ export const spec = {
588
588
  }
589
589
  }
590
590
  let endTime = new Date().getTime();
591
- utils.logInfo(`interpretResponse going to return at time ${endTime} (took ${endTime - startTime}ms) Time from buildRequests Start -> interpretRequests End = ${endTime - this.propertyBag.buildRequestsStart}ms`, arrAllBids);
591
+ logInfo(`interpretResponse going to return at time ${endTime} (took ${endTime - startTime}ms) Time from buildRequests Start -> interpretRequests End = ${endTime - this.propertyBag.buildRequestsStart}ms`, arrAllBids);
592
592
  return arrAllBids;
593
593
  },
594
594
  /**
@@ -616,7 +616,7 @@ export const spec = {
616
616
  var bidIds = [];
617
617
  for (let j = 0; j < sb.bid.length; j++) {
618
618
  var candidate = sb.bid[j];
619
- if (utils.contains(bidIds, candidate.impid)) {
619
+ if (contains(bidIds, candidate.impid)) {
620
620
  continue; // we've already fully assessed this impid, found the highest bid from this seat for it
621
621
  }
622
622
  bidIds.push(candidate.impid);
@@ -634,7 +634,7 @@ export const spec = {
634
634
  // see http://prebid.org/dev-docs/bidder-adaptor.html#registering-user-syncs
635
635
  // us privacy: https://docs.prebid.org/dev-docs/modules/consentManagementUsp.html
636
636
  getUserSyncs(optionsType, serverResponse, gdprConsent, usPrivacy) {
637
- utils.logInfo('getUserSyncs optionsType', optionsType, 'serverResponse', serverResponse, 'gdprConsent', gdprConsent, 'usPrivacy', usPrivacy, 'cookieSyncBag', this.cookieSyncBag);
637
+ logInfo('getUserSyncs optionsType', optionsType, 'serverResponse', serverResponse, 'gdprConsent', gdprConsent, 'usPrivacy', usPrivacy, 'cookieSyncBag', this.cookieSyncBag);
638
638
  if (!serverResponse || serverResponse.length === 0) {
639
639
  return [];
640
640
  }
@@ -643,8 +643,8 @@ export const spec = {
643
643
  if (document.location.search.match(/pbjs_debug=true/)) {
644
644
  arrQueryString.push('pbjs_debug=true');
645
645
  }
646
- arrQueryString.push('gdpr=' + (utils.deepAccess(gdprConsent, 'gdprApplies', false) ? '1' : '0'));
647
- arrQueryString.push('gdpr_consent=' + utils.deepAccess(gdprConsent, 'consentString', ''));
646
+ arrQueryString.push('gdpr=' + (deepAccess(gdprConsent, 'gdprApplies', false) ? '1' : '0'));
647
+ arrQueryString.push('gdpr_consent=' + deepAccess(gdprConsent, 'consentString', ''));
648
648
  arrQueryString.push('usp_consent=' + (usPrivacy || ''));
649
649
  // var objKeys = Object.getOwnPropertyNames(this.cookieSyncBag.userIdObject);
650
650
  // for (let idx in objKeys) {
@@ -663,7 +663,7 @@ export const spec = {
663
663
  if (strQueryString.length > 0) {
664
664
  strQueryString = '?' + strQueryString;
665
665
  }
666
- utils.logInfo('getUserSyncs going to return cookie sync url : ' + this.getCookieSyncUrl() + strQueryString);
666
+ logInfo('getUserSyncs going to return cookie sync url : ' + this.getCookieSyncUrl() + strQueryString);
667
667
  return [{
668
668
  type: 'iframe',
669
669
  url: this.getCookieSyncUrl() + strQueryString
@@ -693,7 +693,7 @@ export const spec = {
693
693
  getVideoContextForBidId(bidId, arrBids) {
694
694
  let requestBid = this.getBidRequestForBidId(bidId, arrBids);
695
695
  if (requestBid != null) {
696
- return utils.deepAccess(requestBid, 'mediaTypes.video.context', 'unknown')
696
+ return deepAccess(requestBid, 'mediaTypes.video.context', 'unknown')
697
697
  }
698
698
  return null;
699
699
  },
@@ -715,37 +715,37 @@ export const spec = {
715
715
  if (typeof (bidRequest.userId[key]) == 'string') {
716
716
  ret[key] = bidRequest.userId[key];
717
717
  } else if (typeof (bidRequest.userId[key]) == 'object') {
718
- utils.logError(`WARNING: findAllUserIds had to use first key in user object to get value for bid.userId key: ${key}. Prebid adapter should be updated.`);
718
+ logError(`WARNING: findAllUserIds had to use first key in user object to get value for bid.userId key: ${key}. Prebid adapter should be updated.`);
719
719
  // fallback - get the value of the first key in the object; this is NOT desirable behaviour
720
720
  ret[key] = bidRequest.userId[key][Object.keys(bidRequest.userId[key])[0]]; // cannot use Object.values
721
721
  } else {
722
- utils.logError(`failed to get string key value for userId : ${key}`);
722
+ logError(`failed to get string key value for userId : ${key}`);
723
723
  }
724
724
  }
725
725
  }
726
- let lipbid = utils.deepAccess(bidRequest.userId, 'lipb.lipbid');
726
+ let lipbid = deepAccess(bidRequest.userId, 'lipb.lipbid');
727
727
  if (lipbid) {
728
728
  ret['lipb'] = {'lipbid': lipbid};
729
729
  }
730
- let id5id = utils.deepAccess(bidRequest.userId, 'id5id.uid');
730
+ let id5id = deepAccess(bidRequest.userId, 'id5id.uid');
731
731
  if (id5id) {
732
732
  ret['id5id'] = id5id;
733
733
  }
734
- let parrableId = utils.deepAccess(bidRequest.userId, 'parrableId.eid');
734
+ let parrableId = deepAccess(bidRequest.userId, 'parrableId.eid');
735
735
  if (parrableId) {
736
736
  ret['parrableId'] = parrableId;
737
737
  }
738
- let sharedid = utils.deepAccess(bidRequest.userId, 'sharedid.id');
738
+ let sharedid = deepAccess(bidRequest.userId, 'sharedid.id');
739
739
  if (sharedid) {
740
740
  ret['sharedid'] = sharedid;
741
741
  }
742
- let sharedidthird = utils.deepAccess(bidRequest.userId, 'sharedid.third');
742
+ let sharedidthird = deepAccess(bidRequest.userId, 'sharedid.third');
743
743
  if (sharedidthird) {
744
744
  ret['sharedidthird'] = sharedidthird;
745
745
  }
746
746
  }
747
747
  if (!ret.hasOwnProperty('pubcid')) {
748
- let pubcid = utils.deepAccess(bidRequest, 'crumbs.pubcid');
748
+ let pubcid = deepAccess(bidRequest, 'crumbs.pubcid');
749
749
  if (pubcid) {
750
750
  ret['pubcid'] = pubcid; // if built with old pubCommonId module
751
751
  }
@@ -771,10 +771,10 @@ export const spec = {
771
771
  let arr = this.getGetParametersAsObject();
772
772
  if (arr.hasOwnProperty(whitelabelPrefix + 'storedrequest')) {
773
773
  if (this.isValidPlacementId(arr[whitelabelPrefix + 'storedrequest'])) {
774
- utils.logInfo(`using GET ${whitelabelPrefix}storedrequest ` + arr[whitelabelPrefix + 'storedrequest'] + ' to replace placementId');
774
+ logInfo(`using GET ${whitelabelPrefix}storedrequest ` + arr[whitelabelPrefix + 'storedrequest'] + ' to replace placementId');
775
775
  return arr[whitelabelPrefix + 'storedrequest'];
776
776
  } else {
777
- utils.logError(`GET ${whitelabelPrefix}storedrequest FAILED VALIDATION - will not use it`);
777
+ logError(`GET ${whitelabelPrefix}storedrequest FAILED VALIDATION - will not use it`);
778
778
  }
779
779
  }
780
780
  return null;
@@ -797,9 +797,9 @@ export const spec = {
797
797
  handleTTDId(eids, validBidRequests) {
798
798
  let ttdId = null;
799
799
  let adsrvrOrgId = config.getConfig('adsrvrOrgId');
800
- if (utils.isStr(utils.deepAccess(validBidRequests, '0.userId.tdid'))) {
800
+ if (isStr(deepAccess(validBidRequests, '0.userId.tdid'))) {
801
801
  ttdId = validBidRequests[0].userId.tdid;
802
- } else if (adsrvrOrgId && utils.isStr(adsrvrOrgId.TDID)) {
802
+ } else if (adsrvrOrgId && isStr(adsrvrOrgId.TDID)) {
803
803
  ttdId = adsrvrOrgId.TDID;
804
804
  }
805
805
  if (ttdId !== null) {
@@ -834,7 +834,7 @@ export const spec = {
834
834
  // if there is an ozone.oz_request = false then quit now.
835
835
  let ozRequest = this.getWhitelabelConfigItem('ozone.oz_request');
836
836
  if (typeof ozRequest == 'boolean' && !ozRequest) {
837
- utils.logWarn(`Will not allow auction : ${this.propertyBag.whitelabel.keyPrefix}one.${this.propertyBag.whitelabel.keyPrefix}_request is set to false`);
837
+ logWarn(`Will not allow auction : ${this.propertyBag.whitelabel.keyPrefix}one.${this.propertyBag.whitelabel.keyPrefix}_request is set to false`);
838
838
  return true;
839
839
  }
840
840
  return false;
@@ -885,7 +885,7 @@ export const spec = {
885
885
  // handle ext separately, if it exists; we have probably built up an ext object already
886
886
  if (objConfig.hasOwnProperty('ext') && typeof objConfig.ext === 'object') {
887
887
  if (objConfig.hasOwnProperty('ext')) {
888
- ret.ext = utils.mergeDeep(ret.ext, objConfig.ext);
888
+ ret.ext = mergeDeep(ret.ext, objConfig.ext);
889
889
  } else {
890
890
  ret.ext = objConfig.ext;
891
891
  }
@@ -907,13 +907,13 @@ export const spec = {
907
907
  */
908
908
  _addVideoDefaults(objRet, objConfig, addIfMissing) {
909
909
  // add inferred values & any default values we want.
910
- let context = utils.deepAccess(objConfig, 'context');
910
+ let context = deepAccess(objConfig, 'context');
911
911
  if (context === 'outstream') {
912
912
  objRet.placement = 3;
913
913
  } else if (context === 'instream') {
914
914
  objRet.placement = 1;
915
915
  }
916
- let skippable = utils.deepAccess(objConfig, 'skippable', null);
916
+ let skippable = deepAccess(objConfig, 'skippable', null);
917
917
  if (skippable == null) {
918
918
  if (addIfMissing && !objRet.hasOwnProperty('skip')) {
919
919
  objRet.skip = skippable ? 1 : 0;
@@ -932,7 +932,7 @@ export const spec = {
932
932
  * @returns seatbid object
933
933
  */
934
934
  export function injectAdIdsIntoAllBidResponses(seatbid) {
935
- utils.logInfo('injectAdIdsIntoAllBidResponses', seatbid);
935
+ logInfo('injectAdIdsIntoAllBidResponses', seatbid);
936
936
  for (let i = 0; i < seatbid.length; i++) {
937
937
  let sb = seatbid[i];
938
938
  for (let j = 0; j < sb.bid.length; j++) {
@@ -958,7 +958,7 @@ export function checkDeepArray(Arr) {
958
958
 
959
959
  export function defaultSize(thebidObj) {
960
960
  if (!thebidObj) {
961
- utils.logInfo('defaultSize received empty bid obj! going to return fixed default size');
961
+ logInfo('defaultSize received empty bid obj! going to return fixed default size');
962
962
  return {
963
963
  'defaultHeight': 250,
964
964
  'defaultWidth': 300
@@ -1036,14 +1036,14 @@ export function getRoundedBid(price, mediaType) {
1036
1036
  let theConfigObject = getGranularityObject(mediaType, mediaTypeGranularity, strBuckets, objBuckets);
1037
1037
  let theConfigKey = getGranularityKeyName(mediaType, mediaTypeGranularity, strBuckets);
1038
1038
 
1039
- utils.logInfo('getRoundedBid. price:', price, 'mediaType:', mediaType, 'configkey:', theConfigKey, 'configObject:', theConfigObject, 'mediaTypeGranularity:', mediaTypeGranularity, 'strBuckets:', strBuckets);
1039
+ logInfo('getRoundedBid. price:', price, 'mediaType:', mediaType, 'configkey:', theConfigKey, 'configObject:', theConfigObject, 'mediaTypeGranularity:', mediaTypeGranularity, 'strBuckets:', strBuckets);
1040
1040
 
1041
1041
  let priceStringsObj = getPriceBucketString(
1042
1042
  price,
1043
1043
  theConfigObject,
1044
1044
  config.getConfig('currency.granularityMultiplier')
1045
1045
  );
1046
- utils.logInfo('priceStringsObj', priceStringsObj);
1046
+ logInfo('priceStringsObj', priceStringsObj);
1047
1047
  // by default, without any custom granularity set, you get granularity name : 'medium'
1048
1048
  let granularityNamePriceStringsKeyMapping = {
1049
1049
  'medium': 'med',
@@ -1054,7 +1054,7 @@ export function getRoundedBid(price, mediaType) {
1054
1054
  };
1055
1055
  if (granularityNamePriceStringsKeyMapping.hasOwnProperty(theConfigKey)) {
1056
1056
  let priceStringsKey = granularityNamePriceStringsKeyMapping[theConfigKey];
1057
- utils.logInfo('getRoundedBid: looking for priceStringsKey:', priceStringsKey);
1057
+ logInfo('getRoundedBid: looking for priceStringsKey:', priceStringsKey);
1058
1058
  return priceStringsObj[priceStringsKey];
1059
1059
  }
1060
1060
  return priceStringsObj['auto'];
@@ -1123,15 +1123,15 @@ export function getWidthAndHeightFromVideoObject(objVideo) {
1123
1123
  return null;
1124
1124
  }
1125
1125
  if (playerSize[0] && typeof playerSize[0] === 'object') {
1126
- utils.logInfo('getWidthAndHeightFromVideoObject found nested array inside playerSize.', playerSize[0]);
1126
+ logInfo('getWidthAndHeightFromVideoObject found nested array inside playerSize.', playerSize[0]);
1127
1127
  playerSize = playerSize[0];
1128
1128
  if (typeof playerSize[0] !== 'number' && typeof playerSize[0] !== 'string') {
1129
- utils.logInfo('getWidthAndHeightFromVideoObject found non-number/string type inside the INNER array in playerSize. This is totally wrong - cannot continue.', playerSize[0]);
1129
+ logInfo('getWidthAndHeightFromVideoObject found non-number/string type inside the INNER array in playerSize. This is totally wrong - cannot continue.', playerSize[0]);
1130
1130
  return null;
1131
1131
  }
1132
1132
  }
1133
1133
  if (playerSize.length !== 2) {
1134
- utils.logInfo('getWidthAndHeightFromVideoObject found playerSize with length of ' + playerSize.length + '. This is totally wrong - cannot continue.');
1134
+ logInfo('getWidthAndHeightFromVideoObject found playerSize with length of ' + playerSize.length + '. This is totally wrong - cannot continue.');
1135
1135
  return null;
1136
1136
  }
1137
1137
  return ({'w': playerSize[0], 'h': playerSize[1]});
@@ -1158,17 +1158,17 @@ export function playerSizeIsNestedArray(objVideo) {
1158
1158
  * @returns {*}
1159
1159
  */
1160
1160
  function getPlayerSizeFromObject(objVideo) {
1161
- utils.logInfo('getPlayerSizeFromObject received object', objVideo);
1162
- let playerSize = utils.deepAccess(objVideo, 'playerSize');
1161
+ logInfo('getPlayerSizeFromObject received object', objVideo);
1162
+ let playerSize = deepAccess(objVideo, 'playerSize');
1163
1163
  if (!playerSize) {
1164
- playerSize = utils.deepAccess(objVideo, 'ext.playerSize');
1164
+ playerSize = deepAccess(objVideo, 'ext.playerSize');
1165
1165
  }
1166
1166
  if (!playerSize) {
1167
- utils.logError('getPlayerSizeFromObject FAILED: no playerSize in video object or ext', objVideo);
1167
+ logError('getPlayerSizeFromObject FAILED: no playerSize in video object or ext', objVideo);
1168
1168
  return null;
1169
1169
  }
1170
1170
  if (typeof playerSize !== 'object') {
1171
- utils.logError('getPlayerSizeFromObject FAILED: playerSize is not an object/array', objVideo);
1171
+ logError('getPlayerSizeFromObject FAILED: playerSize is not an object/array', objVideo);
1172
1172
  return null;
1173
1173
  }
1174
1174
  return playerSize;
@@ -1179,7 +1179,7 @@ function getPlayerSizeFromObject(objVideo) {
1179
1179
  */
1180
1180
  function newRenderer(adUnitCode, rendererOptions = {}) {
1181
1181
  let isLoaded = window.ozoneVideo;
1182
- utils.logInfo(`newRenderer going to set loaded to ${isLoaded ? 'true' : 'false'}`);
1182
+ logInfo(`newRenderer going to set loaded to ${isLoaded ? 'true' : 'false'}`);
1183
1183
  const renderer = Renderer.install({
1184
1184
  url: spec.getRendererUrl(),
1185
1185
  config: rendererOptions,
@@ -1189,12 +1189,12 @@ function newRenderer(adUnitCode, rendererOptions = {}) {
1189
1189
  try {
1190
1190
  renderer.setRender(outstreamRender);
1191
1191
  } catch (err) {
1192
- utils.logError('Prebid Error when calling setRender on renderer', JSON.parse(JSON.stringify(renderer)), err);
1192
+ logError('Prebid Error when calling setRender on renderer', JSON.parse(JSON.stringify(renderer)), err);
1193
1193
  }
1194
1194
  return renderer;
1195
1195
  }
1196
1196
  function outstreamRender(bid) {
1197
- utils.logInfo('outstreamRender called. Going to push the call to window.ozoneVideo.outstreamRender(bid) bid =', JSON.parse(JSON.stringify(bid)));
1197
+ logInfo('outstreamRender called. Going to push the call to window.ozoneVideo.outstreamRender(bid) bid =', JSON.parse(JSON.stringify(bid)));
1198
1198
  // push to render queue because ozoneVideo may not be loaded yet
1199
1199
  bid.renderer.push(() => {
1200
1200
  window.ozoneVideo.outstreamRender(bid);
@@ -1202,4 +1202,4 @@ function outstreamRender(bid) {
1202
1202
  }
1203
1203
 
1204
1204
  registerBidder(spec);
1205
- utils.logInfo(`*BidAdapter ${OZONEVERSION} was loaded`);
1205
+ logInfo(`*BidAdapter ${OZONEVERSION} was loaded`);