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, parseGPTSingleSizeArray, inIframe, deepClone, logError, logWarn, isFn, contains, isInteger, isArray, deepSetValue, parseQueryStringParameters, isEmpty, mergeDeep, convertTypes } from '../src/utils.js';
2
2
  import { BANNER, VIDEO } from '../src/mediaTypes.js';
3
3
  import { config } from '../src/config.js';
4
4
  import find from 'core-js-pure/features/array/find.js';
@@ -83,17 +83,17 @@ const VIDEO_PARAMS_ALLOW_LIST = [
83
83
  function bidToBannerImp(bid) {
84
84
  const imp = bidToImp(bid);
85
85
  imp.banner = {};
86
- const impSize = utils.deepAccess(bid, 'params.size');
86
+ const impSize = deepAccess(bid, 'params.size');
87
87
  if (impSize) {
88
88
  imp.banner.w = impSize[0];
89
89
  imp.banner.h = impSize[1];
90
90
  // populate sid with size if not id
91
- if (!utils.deepAccess(imp, 'ext.sid')) {
92
- imp.ext.sid = utils.parseGPTSingleSizeArray(impSize);
91
+ if (!deepAccess(imp, 'ext.sid')) {
92
+ imp.ext.sid = parseGPTSingleSizeArray(impSize);
93
93
  }
94
94
  }
95
95
 
96
- imp.banner.topframe = utils.inIframe() ? 0 : 1;
96
+ imp.banner.topframe = inIframe() ? 0 : 1;
97
97
 
98
98
  _applyFloor(bid, imp, BANNER);
99
99
 
@@ -108,14 +108,14 @@ function bidToBannerImp(bid) {
108
108
  */
109
109
  function bidToVideoImp(bid) {
110
110
  const imp = bidToImp(bid);
111
- const videoAdUnitRef = utils.deepAccess(bid, 'mediaTypes.video');
112
- const videoParamRef = utils.deepAccess(bid, 'params.video');
111
+ const videoAdUnitRef = deepAccess(bid, 'mediaTypes.video');
112
+ const videoParamRef = deepAccess(bid, 'params.video');
113
113
  const videoParamErrors = checkVideoParams(videoAdUnitRef, videoParamRef);
114
114
  if (videoParamErrors.length) {
115
115
  return {};
116
116
  }
117
117
 
118
- imp.video = videoParamRef ? utils.deepClone(bid.params.video) : {};
118
+ imp.video = videoParamRef ? deepClone(bid.params.video) : {};
119
119
 
120
120
  // copy all video properties to imp object
121
121
  for (const adUnitProperty in videoAdUnitRef) {
@@ -125,7 +125,7 @@ function bidToVideoImp(bid) {
125
125
  }
126
126
 
127
127
  if (imp.video.minduration > imp.video.maxduration) {
128
- utils.logError(`IX Bid Adapter: video minduration [${imp.video.minduration}] cannot be greater than video maxduration [${imp.video.maxduration}]`);
128
+ logError(`IX Bid Adapter: video minduration [${imp.video.minduration}] cannot be greater than video maxduration [${imp.video.maxduration}]`);
129
129
  return {};
130
130
  }
131
131
 
@@ -138,21 +138,21 @@ function bidToVideoImp(bid) {
138
138
  } else if (context === OUTSTREAM) {
139
139
  imp.video.placement = 4;
140
140
  } else {
141
- utils.logWarn(`IX Bid Adapter: Video context '${context}' is not supported`);
141
+ logWarn(`IX Bid Adapter: Video context '${context}' is not supported`);
142
142
  }
143
143
  }
144
144
 
145
145
  if (!(imp.video.w && imp.video.h)) {
146
146
  // Getting impression Size
147
- const impSize = getFirstSize(utils.deepAccess(imp, 'video.playerSize')) || getFirstSize(utils.deepAccess(bid, 'params.size'));
147
+ const impSize = getFirstSize(deepAccess(imp, 'video.playerSize')) || getFirstSize(deepAccess(bid, 'params.size'));
148
148
  if (impSize) {
149
149
  imp.video.w = impSize[0];
150
150
  imp.video.h = impSize[1];
151
- if (!(utils.deepAccess(imp, 'ext.sid'))) {
152
- imp.ext.sid = utils.parseGPTSingleSizeArray(impSize);
151
+ if (!(deepAccess(imp, 'ext.sid'))) {
152
+ imp.ext.sid = parseGPTSingleSizeArray(impSize);
153
153
  }
154
154
  } else {
155
- utils.logWarn('IX Bid Adapter: Video size is missing in [mediaTypes.video] missing');
155
+ logWarn('IX Bid Adapter: Video size is missing in [mediaTypes.video] missing');
156
156
  return {};
157
157
  }
158
158
  }
@@ -180,7 +180,7 @@ function bidToImp(bid) {
180
180
  imp.ext.sid = String(bid.params.id);
181
181
  }
182
182
 
183
- const dfpAdUnitCode = utils.deepAccess(bid, 'ortb2Imp.ext.data.adserver.adslot');
183
+ const dfpAdUnitCode = deepAccess(bid, 'ortb2Imp.ext.data.adserver.adslot');
184
184
  if (dfpAdUnitCode) {
185
185
  imp.ext.dfp_ad_unit_code = dfpAdUnitCode;
186
186
  }
@@ -202,11 +202,11 @@ function _applyFloor(bid, imp, mediaType) {
202
202
  adapterFloor = { floor: bid.params.bidFloor, currency: bid.params.bidFloorCur };
203
203
  }
204
204
 
205
- if (utils.isFn(bid.getFloor)) {
205
+ if (isFn(bid.getFloor)) {
206
206
  let _mediaType = '*';
207
207
  let _size = '*';
208
208
 
209
- if (mediaType && utils.contains(SUPPORTED_AD_TYPES, mediaType)) {
209
+ if (mediaType && contains(SUPPORTED_AD_TYPES, mediaType)) {
210
210
  const { w: width, h: height } = imp[mediaType];
211
211
  _mediaType = mediaType;
212
212
  _size = [width, height];
@@ -218,7 +218,7 @@ function _applyFloor(bid, imp, mediaType) {
218
218
  });
219
219
  } catch (err) {
220
220
  // continue with no module floors
221
- utils.logWarn('priceFloors module call getFloor failed, error : ', err);
221
+ logWarn('priceFloors module call getFloor failed, error : ', err);
222
222
  }
223
223
  }
224
224
 
@@ -243,8 +243,8 @@ function _applyFloor(bid, imp, mediaType) {
243
243
  */
244
244
  function parseBid(rawBid, currency, bidRequest) {
245
245
  const bid = {};
246
- const isValidExpiry = !!((utils.deepAccess(rawBid, 'exp') && utils.isInteger(rawBid.exp)));
247
- const dealID = utils.deepAccess(rawBid, 'dealid') || utils.deepAccess(rawBid, 'ext.dealid');
246
+ const isValidExpiry = !!((deepAccess(rawBid, 'exp') && isInteger(rawBid.exp)));
247
+ const dealID = deepAccess(rawBid, 'dealid') || deepAccess(rawBid, 'ext.dealid');
248
248
 
249
249
  if (PRICE_TO_DOLLAR_FACTOR.hasOwnProperty(currency)) {
250
250
  bid.cpm = rawBid.price / PRICE_TO_DOLLAR_FACTOR[currency];
@@ -263,7 +263,7 @@ function parseBid(rawBid, currency, bidRequest) {
263
263
  bid.creativeId = rawBid.hasOwnProperty('crid') ? rawBid.crid : '-';
264
264
 
265
265
  // in the event of a video
266
- if (utils.deepAccess(rawBid, 'ext.vasturl')) {
266
+ if (deepAccess(rawBid, 'ext.vasturl')) {
267
267
  bid.vastUrl = rawBid.ext.vasturl
268
268
  bid.width = bidRequest.video.w;
269
269
  bid.height = bidRequest.video.h;
@@ -279,9 +279,9 @@ function parseBid(rawBid, currency, bidRequest) {
279
279
  }
280
280
 
281
281
  bid.meta = {};
282
- bid.meta.networkId = utils.deepAccess(rawBid, 'ext.dspid');
283
- bid.meta.brandId = utils.deepAccess(rawBid, 'ext.advbrandid');
284
- bid.meta.brandName = utils.deepAccess(rawBid, 'ext.advbrand');
282
+ bid.meta.networkId = deepAccess(rawBid, 'ext.dspid');
283
+ bid.meta.brandId = deepAccess(rawBid, 'ext.advbrandid');
284
+ bid.meta.brandName = deepAccess(rawBid, 'ext.advbrand');
285
285
  if (rawBid.adomain && rawBid.adomain.length > 0) {
286
286
  bid.meta.advertiserDomains = rawBid.adomain;
287
287
  }
@@ -296,7 +296,7 @@ function parseBid(rawBid, currency, bidRequest) {
296
296
  * @return {boolean} True if this is a valid size format, and false otherwise.
297
297
  */
298
298
  function isValidSize(size) {
299
- return Array.isArray(size) && size.length === 2 && utils.isInteger(size[0]) && utils.isInteger(size[1]);
299
+ return Array.isArray(size) && size.length === 2 && isInteger(size[0]) && isInteger(size[1]);
300
300
  }
301
301
 
302
302
  /**
@@ -330,7 +330,7 @@ function checkVideoParams(mediaTypeVideoRef, paramsVideoRef) {
330
330
  const errorList = [];
331
331
 
332
332
  if (!mediaTypeVideoRef) {
333
- utils.logWarn('IX Bid Adapter: mediaTypes.video is the preferred location for video params in ad unit');
333
+ logWarn('IX Bid Adapter: mediaTypes.video is the preferred location for video params in ad unit');
334
334
  }
335
335
 
336
336
  for (let property of REQUIRED_VIDEO_PARAMS) {
@@ -416,9 +416,9 @@ function getBidRequest(id, impressions, validBidRequests) {
416
416
  function getEidInfo(allEids, flocData) {
417
417
  let toSend = [];
418
418
  let seenSources = {};
419
- if (utils.isArray(allEids)) {
419
+ if (isArray(allEids)) {
420
420
  for (const eid of allEids) {
421
- if (SOURCE_RTI_MAPPING[eid.source] && utils.deepAccess(eid, 'uids.0')) {
421
+ if (SOURCE_RTI_MAPPING[eid.source] && deepAccess(eid, 'uids.0')) {
422
422
  seenSources[eid.source] = true;
423
423
  eid.uids[0].ext = {
424
424
  rtiPartner: SOURCE_RTI_MAPPING[eid.source]
@@ -454,7 +454,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
454
454
  // Always use secure HTTPS protocol.
455
455
  let baseUrl = SECURE_BID_URL;
456
456
  // Get ids from Prebid User ID Modules
457
- let eidInfo = getEidInfo(utils.deepAccess(validBidRequests, '0.userIdAsEids'), utils.deepAccess(validBidRequests, '0.userId.flocId'));
457
+ let eidInfo = getEidInfo(deepAccess(validBidRequests, '0.userIdAsEids'), deepAccess(validBidRequests, '0.userId.flocId'));
458
458
  let userEids = eidInfo.toSend;
459
459
 
460
460
  // RTI ids will be included in the bid request if the function getIdentityInfo() is loaded
@@ -543,7 +543,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
543
543
  }
544
544
 
545
545
  if (bidderRequest.uspConsent) {
546
- utils.deepSetValue(r, 'regs.ext.us_privacy', bidderRequest.uspConsent);
546
+ deepSetValue(r, 'regs.ext.us_privacy', bidderRequest.uspConsent);
547
547
  }
548
548
 
549
549
  if (bidderRequest.refererInfo) {
@@ -552,7 +552,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
552
552
  }
553
553
 
554
554
  if (config.getConfig('coppa')) {
555
- utils.deepSetValue(r, 'regs.coppa', 1);
555
+ deepSetValue(r, 'regs.coppa', 1);
556
556
  }
557
557
 
558
558
  const payload = {};
@@ -572,10 +572,10 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
572
572
  const requests = [];
573
573
  let requestSequenceNumber = 0;
574
574
  const transactionIds = Object.keys(impressions);
575
- const baseRequestSize = `${baseUrl}${utils.parseQueryStringParameters({ ...payload, r: JSON.stringify(r) })}`.length;
575
+ const baseRequestSize = `${baseUrl}${parseQueryStringParameters({ ...payload, r: JSON.stringify(r) })}`.length;
576
576
 
577
577
  if (baseRequestSize > MAX_REQUEST_SIZE) {
578
- utils.logError('ix bidder: Base request size has exceeded maximum request size.');
578
+ logError('ix bidder: Base request size has exceeded maximum request size.');
579
579
  return requests;
580
580
  }
581
581
 
@@ -605,7 +605,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
605
605
  }
606
606
  currentRequestSize += fpdRequestSize;
607
607
  } else {
608
- utils.logError('ix bidder: IX config FPD request size has exceeded maximum request size.');
608
+ logError('ix bidder: IX config FPD request size has exceeded maximum request size.');
609
609
  }
610
610
  }
611
611
 
@@ -638,7 +638,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
638
638
 
639
639
  let currentImpressionSize = encodeURIComponent(JSON.stringify({ impressionObjects })).length;
640
640
 
641
- while (currentImpressionSize > remainingRequestSize) {
641
+ while (impressionObjects.length && currentImpressionSize > remainingRequestSize) {
642
642
  wasAdUnitImpressionsTrimmed = true;
643
643
  impressionObjects.pop();
644
644
  currentImpressionSize = encodeURIComponent(JSON.stringify({ impressionObjects })).length;
@@ -673,7 +673,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
673
673
 
674
674
  const fpd = config.getConfig('ortb2') || {};
675
675
 
676
- if (!utils.isEmpty(fpd) && !isFpdAdded) {
676
+ if (!isEmpty(fpd) && !isFpdAdded) {
677
677
  r.ext.ixdiag.fpd = true;
678
678
 
679
679
  const site = { ...(fpd.site || fpd.context) };
@@ -692,28 +692,28 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
692
692
  }
693
693
  });
694
694
 
695
- const clonedRObject = utils.deepClone(r);
695
+ const clonedRObject = deepClone(r);
696
696
 
697
- clonedRObject.site = utils.mergeDeep({}, clonedRObject.site, site);
698
- clonedRObject.user = utils.mergeDeep({}, clonedRObject.user, user);
697
+ clonedRObject.site = mergeDeep({}, clonedRObject.site, site);
698
+ clonedRObject.user = mergeDeep({}, clonedRObject.user, user);
699
699
 
700
- const requestSize = `${baseUrl}${utils.parseQueryStringParameters({ ...payload, r: JSON.stringify(clonedRObject) })}`.length;
700
+ const requestSize = `${baseUrl}${parseQueryStringParameters({ ...payload, r: JSON.stringify(clonedRObject) })}`.length;
701
701
 
702
702
  if (requestSize < MAX_REQUEST_SIZE) {
703
- r.site = utils.mergeDeep({}, r.site, site);
704
- r.user = utils.mergeDeep({}, r.user, user);
703
+ r.site = mergeDeep({}, r.site, site);
704
+ r.user = mergeDeep({}, r.user, user);
705
705
  isFpdAdded = true;
706
706
  const fpdRequestSize = encodeURIComponent(JSON.stringify({ ...site, ...user })).length;
707
707
  currentRequestSize += fpdRequestSize;
708
708
  } else {
709
- utils.logError('ix bidder: FPD request size has exceeded maximum request size.');
709
+ logError('ix bidder: FPD request size has exceeded maximum request size.');
710
710
  }
711
711
  }
712
712
 
713
713
  const isLastAdUnit = adUnitIndex === transactionIds.length - 1;
714
714
 
715
715
  if (wasAdUnitImpressionsTrimmed || isLastAdUnit) {
716
- const clonedPayload = utils.deepClone(payload);
716
+ const clonedPayload = deepClone(payload);
717
717
  if (!isLastAdUnit || requestSequenceNumber) {
718
718
  r.ext.ixdiag.sn = requestSequenceNumber;
719
719
  clonedPayload.sn = requestSequenceNumber;
@@ -778,30 +778,30 @@ function buildIXDiag(validBidRequests) {
778
778
  for (let i = 0; i < adUnitMap.length; i++) {
779
779
  var bid = validBidRequests.filter(bidRequest => bidRequest.transactionId === adUnitMap[i])[0];
780
780
 
781
- if (utils.deepAccess(bid, 'mediaTypes')) {
781
+ if (deepAccess(bid, 'mediaTypes')) {
782
782
  if (Object.keys(bid.mediaTypes).length > 1) {
783
783
  ixdiag.mfu++;
784
784
  }
785
785
 
786
- if (utils.deepAccess(bid, 'mediaTypes.native')) {
786
+ if (deepAccess(bid, 'mediaTypes.native')) {
787
787
  ixdiag.nu++;
788
788
  }
789
789
 
790
- if (utils.deepAccess(bid, 'mediaTypes.banner')) {
790
+ if (deepAccess(bid, 'mediaTypes.banner')) {
791
791
  ixdiag.bu++;
792
792
  }
793
793
 
794
- if (utils.deepAccess(bid, 'mediaTypes.video.context') === 'outstream') {
794
+ if (deepAccess(bid, 'mediaTypes.video.context') === 'outstream') {
795
795
  ixdiag.ou++;
796
796
  // renderer only needed for outstream
797
797
 
798
- const hasRenderer = typeof (utils.deepAccess(bid, 'renderer') || utils.deepAccess(bid, 'mediaTypes.video.renderer')) === 'object';
798
+ const hasRenderer = typeof (deepAccess(bid, 'renderer') || deepAccess(bid, 'mediaTypes.video.renderer')) === 'object';
799
799
 
800
800
  // if any one ad unit is missing renderer, set ren status to false in diag
801
- ixdiag.ren = ixdiag.ren && hasRenderer ? (utils.deepAccess(ixdiag, 'ren')) : hasRenderer;
801
+ ixdiag.ren = ixdiag.ren && hasRenderer ? (deepAccess(ixdiag, 'ren')) : hasRenderer;
802
802
  }
803
803
 
804
- if (utils.deepAccess(bid, 'mediaTypes.video.context') === 'instream') {
804
+ if (deepAccess(bid, 'mediaTypes.video.context') === 'instream') {
805
805
  ixdiag.iu++;
806
806
  }
807
807
 
@@ -860,7 +860,7 @@ function createBannerImps(validBidRequest, missingBannerSizes, bannerImps) {
860
860
 
861
861
  let imp = bidToBannerImp(validBidRequest);
862
862
 
863
- const bannerSizeDefined = includesSize(utils.deepAccess(validBidRequest, 'mediaTypes.banner.sizes'), utils.deepAccess(validBidRequest, 'params.size'));
863
+ const bannerSizeDefined = includesSize(deepAccess(validBidRequest, 'mediaTypes.banner.sizes'), deepAccess(validBidRequest, 'params.size'));
864
864
 
865
865
  // Create IX imps from params.size
866
866
  if (bannerSizeDefined) {
@@ -884,7 +884,7 @@ function createBannerImps(validBidRequest, missingBannerSizes, bannerImps) {
884
884
  * @returns {string}
885
885
  */
886
886
  function detectParamsType(validBidRequest) {
887
- if (utils.deepAccess(validBidRequest, 'params.video') && utils.deepAccess(validBidRequest, 'mediaTypes.video')) {
887
+ if (deepAccess(validBidRequest, 'params.video') && deepAccess(validBidRequest, 'mediaTypes.video')) {
888
888
  return VIDEO;
889
889
  }
890
890
 
@@ -909,8 +909,8 @@ function updateMissingSizes(validBidRequest, missingBannerSizes, imp) {
909
909
  missingBannerSizes[transactionID].missingSizes = currentSizeList;
910
910
  } else {
911
911
  // New Ad Unit
912
- if (utils.deepAccess(validBidRequest, 'mediaTypes.banner.sizes')) {
913
- let sizeList = utils.deepClone(validBidRequest.mediaTypes.banner.sizes);
912
+ if (deepAccess(validBidRequest, 'mediaTypes.banner.sizes')) {
913
+ let sizeList = deepClone(validBidRequest.mediaTypes.banner.sizes);
914
914
  removeFromSizes(sizeList, validBidRequest.params.size);
915
915
  let newAdUnitEntry = {
916
916
  'missingSizes': sizeList,
@@ -928,8 +928,8 @@ function updateMissingSizes(validBidRequest, missingBannerSizes, imp) {
928
928
  * @return {object} newImp Updated impression object
929
929
  */
930
930
  function createMissingBannerImp(bid, imp, newSize) {
931
- const newImp = utils.deepClone(imp);
932
- newImp.ext.sid = utils.parseGPTSingleSizeArray(newSize);
931
+ const newImp = deepClone(imp);
932
+ newImp.ext.sid = parseGPTSingleSizeArray(newSize);
933
933
  newImp.banner.w = newSize[0];
934
934
  newImp.banner.h = newSize[1];
935
935
 
@@ -969,7 +969,7 @@ function createRenderer (id) {
969
969
  try {
970
970
  renderer.setRender(outstreamRenderer);
971
971
  } catch (err) {
972
- utils.logWarn('Prebid Error calling setRender on renderer', err);
972
+ logWarn('Prebid Error calling setRender on renderer', err);
973
973
  }
974
974
 
975
975
  return renderer;
@@ -993,19 +993,19 @@ export const spec = {
993
993
  * @return {boolean} True if this is a valid bid, and false otherwise.
994
994
  */
995
995
  isBidRequestValid: function (bid) {
996
- const paramsVideoRef = utils.deepAccess(bid, 'params.video');
997
- const paramsSize = utils.deepAccess(bid, 'params.size');
998
- const mediaTypeBannerSizes = utils.deepAccess(bid, 'mediaTypes.banner.sizes');
999
- const mediaTypeVideoRef = utils.deepAccess(bid, 'mediaTypes.video');
1000
- const mediaTypeVideoPlayerSize = utils.deepAccess(bid, 'mediaTypes.video.playerSize');
996
+ const paramsVideoRef = deepAccess(bid, 'params.video');
997
+ const paramsSize = deepAccess(bid, 'params.size');
998
+ const mediaTypeBannerSizes = deepAccess(bid, 'mediaTypes.banner.sizes');
999
+ const mediaTypeVideoRef = deepAccess(bid, 'mediaTypes.video');
1000
+ const mediaTypeVideoPlayerSize = deepAccess(bid, 'mediaTypes.video.playerSize');
1001
1001
  const hasBidFloor = bid.params.hasOwnProperty('bidFloor');
1002
1002
  const hasBidFloorCur = bid.params.hasOwnProperty('bidFloorCur');
1003
1003
 
1004
- if (bid.hasOwnProperty('mediaType') && !(utils.contains(SUPPORTED_AD_TYPES, bid.mediaType))) {
1004
+ if (bid.hasOwnProperty('mediaType') && !(contains(SUPPORTED_AD_TYPES, bid.mediaType))) {
1005
1005
  return false;
1006
1006
  }
1007
1007
 
1008
- if (utils.deepAccess(bid, 'mediaTypes.banner') && !mediaTypeBannerSizes) {
1008
+ if (deepAccess(bid, 'mediaTypes.banner') && !mediaTypeBannerSizes) {
1009
1009
  return false;
1010
1010
  }
1011
1011
 
@@ -1013,26 +1013,26 @@ export const spec = {
1013
1013
  // since there is an ix bidder level size, make sure its valid
1014
1014
  const ixSize = getFirstSize(paramsSize);
1015
1015
  if (!ixSize) {
1016
- utils.logError('ix bidder params: size has invalid format.');
1016
+ logError('ix bidder params: size has invalid format.');
1017
1017
  return false;
1018
1018
  }
1019
1019
  // check if the ix bidder level size, is present in ad unit level
1020
1020
  if (!includesSize(bid.sizes, ixSize) &&
1021
1021
  !(includesSize(mediaTypeVideoPlayerSize, ixSize)) &&
1022
1022
  !(includesSize(mediaTypeBannerSizes, ixSize))) {
1023
- utils.logError('ix bidder params: bid size is not included in ad unit sizes or player size.');
1023
+ logError('ix bidder params: bid size is not included in ad unit sizes or player size.');
1024
1024
  return false;
1025
1025
  }
1026
1026
  }
1027
1027
 
1028
1028
  if (typeof bid.params.siteId !== 'string' && typeof bid.params.siteId !== 'number') {
1029
- utils.logError('ix bidder params: siteId must be string or number value.');
1029
+ logError('ix bidder params: siteId must be string or number value.');
1030
1030
  return false;
1031
1031
  }
1032
1032
 
1033
1033
  if (hasBidFloor || hasBidFloorCur) {
1034
1034
  if (!(hasBidFloor && hasBidFloorCur && isValidBidFloorParams(bid.params.bidFloor, bid.params.bidFloorCur))) {
1035
- utils.logError('ix bidder params: bidFloor / bidFloorCur parameter has invalid format.');
1035
+ logError('ix bidder params: bidFloor / bidFloorCur parameter has invalid format.');
1036
1036
  return false;
1037
1037
  }
1038
1038
  }
@@ -1041,7 +1041,7 @@ export const spec = {
1041
1041
  const errorList = checkVideoParams(mediaTypeVideoRef, paramsVideoRef);
1042
1042
  if (errorList.length) {
1043
1043
  errorList.forEach((err) => {
1044
- utils.logError(err);
1044
+ logError(err);
1045
1045
  });
1046
1046
  return false;
1047
1047
  }
@@ -1065,7 +1065,7 @@ export const spec = {
1065
1065
 
1066
1066
  // Step 1: Create impresssions from IX params
1067
1067
  validBidRequests.forEach((validBidRequest) => {
1068
- const adUnitMediaTypes = Object.keys(utils.deepAccess(validBidRequest, 'mediaTypes', {}))
1068
+ const adUnitMediaTypes = Object.keys(deepAccess(validBidRequest, 'mediaTypes', {}))
1069
1069
 
1070
1070
  switch (detectParamsType(validBidRequest)) {
1071
1071
  case BANNER:
@@ -1156,7 +1156,7 @@ export const spec = {
1156
1156
  const bidRequest = getBidRequest(innerBids[j].impid, requestBid.imp, bidderRequest.validBidRequests);
1157
1157
  bid = parseBid(innerBids[j], responseBody.cur, bidRequest);
1158
1158
 
1159
- if (!utils.deepAccess(bid, 'mediaTypes.video.renderer') && utils.deepAccess(bid, 'mediaTypes.video.context') === 'outstream') {
1159
+ if (!deepAccess(bid, 'mediaTypes.video.renderer') && deepAccess(bid, 'mediaTypes.video.context') === 'outstream') {
1160
1160
  bid.mediaTypes.video.renderer = createRenderer(innerBids[j].bidId);
1161
1161
  }
1162
1162
 
@@ -1174,7 +1174,7 @@ export const spec = {
1174
1174
  * @return {Object} params bid params
1175
1175
  */
1176
1176
  transformBidParams: function (params, isOpenRtb) {
1177
- return utils.convertTypes({
1177
+ return convertTypes({
1178
1178
  'siteID': 'number'
1179
1179
  }, params);
1180
1180
  },
@@ -1,4 +1,4 @@
1
- import * as utils from '../src/utils.js';
1
+ import { logWarn, parseUrl, deepAccess, isArray } from '../src/utils.js';
2
2
  import { config } from '../src/config.js';
3
3
  import { registerBidder } from '../src/adapters/bidderFactory.js';
4
4
  import { getStorageManager } from '../src/storageManager.js';
@@ -95,7 +95,7 @@ function createRenderer_(bidAd, scriptUrl, createFcn) {
95
95
  try {
96
96
  renderer.setRender(createFcn);
97
97
  } catch (err) {
98
- utils.logWarn('Prebid Error calling setRender on renderer', err);
98
+ logWarn('Prebid Error calling setRender on renderer', err);
99
99
  }
100
100
  return renderer;
101
101
  }
@@ -110,7 +110,7 @@ function getMiscDims_() {
110
110
  let refererInfo_ = getRefererInfo();
111
111
  let url_ = ((refererInfo_ && refererInfo_.referer) ? refererInfo_.referer : window.location.href);
112
112
  ret.pageurl = url_;
113
- ret.domain = utils.parseUrl(url_).host;
113
+ ret.domain = parseUrl(url_).host;
114
114
  ret.device = getDevice_();
115
115
  } catch (error) {}
116
116
  return ret;
@@ -194,8 +194,8 @@ export const spec = {
194
194
  device: miscDims.device,
195
195
  pageurl: encodeURIComponent(miscDims.pageurl),
196
196
  domain: encodeURIComponent(miscDims.domain),
197
- auctionid: utils.deepAccess(timeoutData, '0.auctionId'),
198
- timeout: utils.deepAccess(timeoutData, '0.timeout'),
197
+ auctionid: deepAccess(timeoutData, '0.auctionId'),
198
+ timeout: deepAccess(timeoutData, '0.timeout'),
199
199
  count: timeoutData.length
200
200
  });
201
201
  },
@@ -224,7 +224,7 @@ export const spec = {
224
224
  },
225
225
 
226
226
  interpretResponse: function(response, bidRequest) {
227
- if (response && response.body && utils.isArray(response.body.bids)) {
227
+ if (response && response.body && isArray(response.body.bids)) {
228
228
  const bidResponses = [];
229
229
  response.body.bids.forEach(function(oneBid) {
230
230
  let bnd = {};
@@ -4,7 +4,7 @@ import { deepAccess } from '../src/utils.js';
4
4
  const BIDDER_CODE = 'justpremium'
5
5
  const GVLID = 62
6
6
  const ENDPOINT_URL = 'https://pre.ads.justpremium.com/v/2.0/t/xhr'
7
- const JP_ADAPTER_VERSION = '1.7'
7
+ const JP_ADAPTER_VERSION = '1.8'
8
8
  const pixels = []
9
9
 
10
10
  export const spec = {
@@ -65,6 +65,10 @@ export const spec = {
65
65
  jp_adapter: JP_ADAPTER_VERSION
66
66
  }
67
67
 
68
+ if (validBidRequests[0].schain) {
69
+ payload.schain = validBidRequests[0].schain;
70
+ }
71
+
68
72
  const payloadString = JSON.stringify(payload)
69
73
 
70
74
  return {
@@ -1,13 +1,15 @@
1
- import * as utils from '../src/utils.js';
2
- import {config} from '../src/config.js';
3
- import {registerBidder} from '../src/adapters/bidderFactory.js';
1
+ import { _each } from '../src/utils.js';
2
+ import { config } from '../src/config.js';
3
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
4
4
  import { getStorageManager } from '../src/storageManager.js';
5
+ import { BANNER, VIDEO } from '../src/mediaTypes.js';
5
6
 
6
7
  const BIDDER_CODE = 'kargo';
7
8
  const HOST = 'https://krk.kargo.com';
8
9
  const SYNC = 'https://crb.kargo.com/api/v1/initsyncrnd/{UUID}?seed={SEED}&idx={INDEX}&gdpr={GDPR}&gdpr_consent={GDPR_CONSENT}&us_privacy={US_PRIVACY}';
9
10
  const SYNC_COUNT = 5;
10
11
  const GVLID = 972;
12
+ const SUPPORTED_MEDIA_TYPES = [BANNER, VIDEO]
11
13
  const storage = getStorageManager(GVLID, BIDDER_CODE);
12
14
 
13
15
  let sessionId,
@@ -21,34 +23,38 @@ export const spec = {
21
23
  if (!bid || !bid.params) {
22
24
  return false;
23
25
  }
26
+
24
27
  return !!bid.params.placementId;
25
28
  },
26
29
  buildRequests: function(validBidRequests, bidderRequest) {
27
30
  const currencyObj = config.getConfig('currency');
28
31
  const currency = (currencyObj && currencyObj.adServerCurrency) || 'USD';
29
- const bidIds = {};
32
+ const bidIDs = {};
30
33
  const bidSizes = {};
31
- utils._each(validBidRequests, bid => {
32
- bidIds[bid.bidId] = bid.params.placementId;
34
+
35
+ _each(validBidRequests, bid => {
36
+ bidIDs[bid.bidId] = bid.params.placementId;
33
37
  bidSizes[bid.bidId] = bid.sizes;
34
38
  });
39
+
35
40
  let tdid;
36
41
  if (validBidRequests.length > 0 && validBidRequests[0].userId && validBidRequests[0].userId.tdid) {
37
42
  tdid = validBidRequests[0].userId.tdid;
38
43
  }
44
+
39
45
  const transformedParams = Object.assign({}, {
40
46
  sessionId: spec._getSessionId(),
41
47
  requestCount: spec._getRequestCount(),
42
48
  timeout: bidderRequest.timeout,
43
- currency: currency,
49
+ currency,
44
50
  cpmGranularity: 1,
45
51
  timestamp: (new Date()).getTime(),
46
52
  cpmRange: {
47
53
  floor: 0,
48
54
  ceil: 20
49
55
  },
50
- bidIDs: bidIds,
51
- bidSizes: bidSizes,
56
+ bidIDs,
57
+ bidSizes,
52
58
  prebidRawBidRequests: validBidRequests
53
59
  }, spec._getAllMetadata(tdid, bidderRequest.uspConsent, bidderRequest.gdprConsent));
54
60
  const encodedParams = encodeURIComponent(JSON.stringify(transformedParams));
@@ -111,6 +117,7 @@ export const spec = {
111
117
  }
112
118
  return syncs;
113
119
  },
120
+ supportedMediaTypes: SUPPORTED_MEDIA_TYPES,
114
121
 
115
122
  // PRIVATE
116
123
  _readCookie(name) {
@@ -19,5 +19,25 @@ Please use `kargo` as the bidder code. Also, you *must* test on a mobile device,
19
19
  placementId: '_m1Xt2E5dez'
20
20
  }
21
21
  }]
22
+ },{
23
+ code: 'div-gpt-ad-video-1',
24
+ sizes: [[640,480]],
25
+ mediaTypes: {
26
+ video: {
27
+ playerSize: [640, 480],
28
+ context: 'instream'
29
+ }
30
+ },
31
+ bids: [{
32
+ bidder: 'kargo',
33
+ params: {
34
+ placementId: '_bLIt2QMYee',
35
+ video: {
36
+ skipppable: true,
37
+ playback_method: ['auto_play_sound_off'],
38
+ mimes: ['video/mp4']
39
+ }
40
+ }
41
+ }]
22
42
  }];
23
43
  ```
@@ -5,7 +5,7 @@
5
5
  * @requires module:modules/userId
6
6
  */
7
7
 
8
- import * as utils from '../src/utils.js'
8
+ import { logError, logInfo } from '../src/utils.js';
9
9
  import {ajax} from '../src/ajax.js';
10
10
  import {submodule} from '../src/hook.js';
11
11
  import {coppaDataHandler, uspDataHandler} from '../src/adapterManager.js';
@@ -111,7 +111,7 @@ function encodeTime(now, len) {
111
111
  * @returns {Error}
112
112
  */
113
113
  function createError(message) {
114
- utils.logError(message);
114
+ logError(message);
115
115
  const err = new Error(message);
116
116
  err.source = 'kinessoId';
117
117
  return err;
@@ -147,10 +147,10 @@ function detectPrng(root) {
147
147
  function syncId(storedId) {
148
148
  return {
149
149
  success: function (responseBody) {
150
- utils.logInfo('KinessoId: id to be synced: ' + storedId);
150
+ logInfo('KinessoId: id to be synced: ' + storedId);
151
151
  },
152
152
  error: function () {
153
- utils.logInfo('KinessoId: Sync error for id : ' + storedId);
153
+ logInfo('KinessoId: Sync error for id : ' + storedId);
154
154
  }
155
155
  }
156
156
  }
@@ -165,7 +165,7 @@ function encodeId(value) {
165
165
  const knssoId = (value && typeof value === 'string') ? value : undefined;
166
166
  if (knssoId) {
167
167
  result.kpuid = knssoId;
168
- utils.logInfo('KinessoId: Decoded value ' + JSON.stringify(result));
168
+ logInfo('KinessoId: Decoded value ' + JSON.stringify(result));
169
169
  return result;
170
170
  }
171
171
  return knssoId;
@@ -217,17 +217,17 @@ export const kinessoIdSubmodule = {
217
217
  getId(config, consentData) {
218
218
  const configParams = (config && config.params) || {};
219
219
  if (!configParams || typeof configParams.accountid !== 'number') {
220
- utils.logError('User ID - KinessoId submodule requires a valid accountid to be defined');
220
+ logError('User ID - KinessoId submodule requires a valid accountid to be defined');
221
221
  return;
222
222
  }
223
223
  const coppa = coppaDataHandler.getCoppa();
224
224
  if (coppa) {
225
- utils.logInfo('KinessoId: IDs not provided for coppa requests, exiting KinessoId');
225
+ logInfo('KinessoId: IDs not provided for coppa requests, exiting KinessoId');
226
226
  return;
227
227
  }
228
228
  const accountId = configParams.accountid;
229
229
  const knnsoId = id();
230
- utils.logInfo('KinessoId: generated id ' + knnsoId);
230
+ logInfo('KinessoId: generated id ' + knnsoId);
231
231
  const kinessoIdPayload = {};
232
232
  kinessoIdPayload.id = knnsoId;
233
233
  const payloadString = JSON.stringify(kinessoIdPayload);