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 { logWarn, _each, isBoolean, isStr, isArray, inIframe, mergeDeep, deepAccess, isNumber, deepSetValue, logInfo, logError, deepClone, convertTypes } from '../src/utils.js';
2
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
3
3
  import { BANNER, VIDEO, NATIVE } from '../src/mediaTypes.js';
4
4
  import {config} from '../src/config.js';
@@ -17,6 +17,7 @@ const DEFAULT_HEIGHT = 0;
17
17
  const PREBID_NATIVE_HELP_LINK = 'http://prebid.org/dev-docs/show-native-ads.html';
18
18
  const PUBLICATION = 'pubmatic'; // Your publication on Blue Billywig, potentially with environment (e.g. publication.bbvms.com or publication.test.bbvms.com)
19
19
  const RENDERER_URL = 'https://pubmatic.bbvms.com/r/'.concat('$RENDERER', '.js'); // URL of the renderer application
20
+ const MSG_VIDEO_PLACEMENT_MISSING = 'Video.Placement param missing';
20
21
  const CUSTOM_PARAMS = {
21
22
  'kadpageurl': '', // Custom page url
22
23
  'gender': '', // User gender
@@ -124,7 +125,7 @@ const BB_RENDERER = {
124
125
  else if (bid.vastUrl) config.vastUrl = bid.vastUrl;
125
126
 
126
127
  if (!bid.vastXml && !bid.vastUrl) {
127
- utils.logWarn(`${LOG_WARN_PREFIX}: No vastXml or vastUrl on bid, bailing...`);
128
+ logWarn(`${LOG_WARN_PREFIX}: No vastXml or vastUrl on bid, bailing...`);
128
129
  return;
129
130
  }
130
131
 
@@ -142,7 +143,7 @@ const BB_RENDERER = {
142
143
  }
143
144
 
144
145
  if (renderer) renderer.bootstrap(config, ele);
145
- else utils.logWarn(`${LOG_WARN_PREFIX}: Couldn't find a renderer with ${rendererId}`);
146
+ else logWarn(`${LOG_WARN_PREFIX}: Couldn't find a renderer with ${rendererId}`);
146
147
  },
147
148
  newRenderer: function(rendererCode, adUnitCode) {
148
149
  var rendererUrl = RENDERER_URL.replace('$RENDERER', rendererCode);
@@ -155,7 +156,7 @@ const BB_RENDERER = {
155
156
  try {
156
157
  renderer.setRender(BB_RENDERER.outstreamRender);
157
158
  } catch (err) {
158
- utils.logWarn(`${LOG_WARN_PREFIX}: Error tying to setRender on renderer`, err);
159
+ logWarn(`${LOG_WARN_PREFIX}: Error tying to setRender on renderer`, err);
159
160
  }
160
161
 
161
162
  return renderer;
@@ -180,9 +181,9 @@ let NATIVE_ASSET_ID_TO_KEY_MAP = {};
180
181
  let NATIVE_ASSET_KEY_TO_ASSET_MAP = {};
181
182
 
182
183
  // loading NATIVE_ASSET_ID_TO_KEY_MAP
183
- utils._each(NATIVE_ASSETS, anAsset => { NATIVE_ASSET_ID_TO_KEY_MAP[anAsset.ID] = anAsset.KEY });
184
+ _each(NATIVE_ASSETS, anAsset => { NATIVE_ASSET_ID_TO_KEY_MAP[anAsset.ID] = anAsset.KEY });
184
185
  // loading NATIVE_ASSET_KEY_TO_ASSET_MAP
185
- utils._each(NATIVE_ASSETS, anAsset => { NATIVE_ASSET_KEY_TO_ASSET_MAP[anAsset.KEY] = anAsset });
186
+ _each(NATIVE_ASSETS, anAsset => { NATIVE_ASSET_KEY_TO_ASSET_MAP[anAsset.KEY] = anAsset });
186
187
 
187
188
  function _getDomainFromURL(url) {
188
189
  let anchor = document.createElement('a');
@@ -191,8 +192,8 @@ function _getDomainFromURL(url) {
191
192
  }
192
193
 
193
194
  function _parseSlotParam(paramName, paramValue) {
194
- if (!utils.isStr(paramValue)) {
195
- paramValue && utils.logWarn(LOG_WARN_PREFIX + 'Ignoring param key: ' + paramName + ', expects string-value, found ' + typeof paramValue);
195
+ if (!isStr(paramValue)) {
196
+ paramValue && logWarn(LOG_WARN_PREFIX + 'Ignoring param key: ' + paramName + ', expects string-value, found ' + typeof paramValue);
196
197
  return UNDEFINED;
197
198
  }
198
199
 
@@ -213,11 +214,11 @@ function _parseSlotParam(paramName, paramValue) {
213
214
  }
214
215
 
215
216
  function _cleanSlot(slotName) {
216
- if (utils.isStr(slotName)) {
217
+ if (isStr(slotName)) {
217
218
  return slotName.replace(/^\s+/g, '').replace(/\s+$/g, '');
218
219
  }
219
220
  if (slotName) {
220
- utils.logWarn(BIDDER_CODE + ': adSlot must be a string. Ignoring adSlot');
221
+ logWarn(BIDDER_CODE + ': adSlot must be a string. Ignoring adSlot');
221
222
  }
222
223
  return '';
223
224
  }
@@ -243,7 +244,7 @@ function _parseAdSlot(bid) {
243
244
  // i.e size is specified in adslot, so consider that and ignore sizes array
244
245
  splits = splits[1].split('x');
245
246
  if (splits.length != 2) {
246
- utils.logWarn(LOG_WARN_PREFIX + 'AdSlot Error: adSlot not in required format');
247
+ logWarn(LOG_WARN_PREFIX + 'AdSlot Error: adSlot not in required format');
247
248
  return;
248
249
  }
249
250
  bid.params.width = parseInt(splits[0], 10);
@@ -294,10 +295,10 @@ function _handleCustomParams(params, conf) {
294
295
  value = entry.f(value, conf);
295
296
  }
296
297
 
297
- if (utils.isStr(value)) {
298
+ if (isStr(value)) {
298
299
  conf[key] = value;
299
300
  } else {
300
- utils.logWarn(LOG_WARN_PREFIX + 'Ignoring param : ' + key + ' with value : ' + CUSTOM_PARAMS[key] + ', expects string-value, found ' + typeof value);
301
+ logWarn(LOG_WARN_PREFIX + 'Ignoring param : ' + key + ' with value : ' + CUSTOM_PARAMS[key] + ', expects string-value, found ' + typeof value);
301
302
  }
302
303
  }
303
304
  }
@@ -334,22 +335,22 @@ function _checkParamDataType(key, value, datatype) {
334
335
  var functionToExecute;
335
336
  switch (datatype) {
336
337
  case DATA_TYPES.BOOLEAN:
337
- functionToExecute = utils.isBoolean;
338
+ functionToExecute = isBoolean;
338
339
  break;
339
340
  case DATA_TYPES.NUMBER:
340
- functionToExecute = utils.isNumber;
341
+ functionToExecute = isNumber;
341
342
  break;
342
343
  case DATA_TYPES.STRING:
343
- functionToExecute = utils.isStr;
344
+ functionToExecute = isStr;
344
345
  break;
345
346
  case DATA_TYPES.ARRAY:
346
- functionToExecute = utils.isArray;
347
+ functionToExecute = isArray;
347
348
  break;
348
349
  }
349
350
  if (functionToExecute(value)) {
350
351
  return value;
351
352
  }
352
- utils.logWarn(LOG_WARN_PREFIX + errMsg);
353
+ logWarn(LOG_WARN_PREFIX + errMsg);
353
354
  return UNDEFINED;
354
355
  }
355
356
 
@@ -386,7 +387,7 @@ function _createNativeRequest(params) {
386
387
  }
387
388
  };
388
389
  } else {
389
- utils.logWarn(LOG_WARN_PREFIX + 'Error: Title Length is required for native ad: ' + JSON.stringify(params));
390
+ logWarn(LOG_WARN_PREFIX + 'Error: Title Length is required for native ad: ' + JSON.stringify(params));
390
391
  }
391
392
  break;
392
393
  case NATIVE_ASSETS.IMAGE.KEY:
@@ -405,7 +406,7 @@ function _createNativeRequest(params) {
405
406
  }
406
407
  };
407
408
  } else {
408
- utils.logWarn(LOG_WARN_PREFIX + 'Error: Image sizes is required for native ad: ' + JSON.stringify(params));
409
+ logWarn(LOG_WARN_PREFIX + 'Error: Image sizes is required for native ad: ' + JSON.stringify(params));
409
410
  }
410
411
  break;
411
412
  case NATIVE_ASSETS.ICON.KEY:
@@ -420,7 +421,7 @@ function _createNativeRequest(params) {
420
421
  }
421
422
  };
422
423
  } else {
423
- utils.logWarn(LOG_WARN_PREFIX + 'Error: Icon sizes is required for native ad: ' + JSON.stringify(params));
424
+ logWarn(LOG_WARN_PREFIX + 'Error: Icon sizes is required for native ad: ' + JSON.stringify(params));
424
425
  };
425
426
  break;
426
427
  case NATIVE_ASSETS.VIDEO.KEY:
@@ -500,13 +501,13 @@ function _createBannerRequest(bid) {
500
501
  var sizes = bid.mediaTypes.banner.sizes;
501
502
  var format = [];
502
503
  var bannerObj;
503
- if (sizes !== UNDEFINED && utils.isArray(sizes)) {
504
+ if (sizes !== UNDEFINED && isArray(sizes)) {
504
505
  bannerObj = {};
505
506
  if (!bid.params.width && !bid.params.height) {
506
507
  if (sizes.length === 0) {
507
508
  // i.e. since bid.params does not have width or height, and length of sizes is 0, need to ignore this banner imp
508
509
  bannerObj = UNDEFINED;
509
- utils.logWarn(LOG_WARN_PREFIX + 'Error: mediaTypes.banner.size missing for adunit: ' + bid.params.adUnit + '. Ignoring the banner impression in the adunit.');
510
+ logWarn(LOG_WARN_PREFIX + 'Error: mediaTypes.banner.size missing for adunit: ' + bid.params.adUnit + '. Ignoring the banner impression in the adunit.');
510
511
  return bannerObj;
511
512
  } else {
512
513
  bannerObj.w = parseInt(sizes[0][0], 10);
@@ -529,36 +530,44 @@ function _createBannerRequest(bid) {
529
530
  }
530
531
  }
531
532
  bannerObj.pos = 0;
532
- bannerObj.topframe = utils.inIframe() ? 0 : 1;
533
+ bannerObj.topframe = inIframe() ? 0 : 1;
533
534
  } else {
534
- utils.logWarn(LOG_WARN_PREFIX + 'Error: mediaTypes.banner.size missing for adunit: ' + bid.params.adUnit + '. Ignoring the banner impression in the adunit.');
535
+ logWarn(LOG_WARN_PREFIX + 'Error: mediaTypes.banner.size missing for adunit: ' + bid.params.adUnit + '. Ignoring the banner impression in the adunit.');
535
536
  bannerObj = UNDEFINED;
536
537
  }
537
538
  return bannerObj;
538
539
  }
539
540
 
541
+ export function checkVideoPlacement(videoData, adUnitCode) {
542
+ // Check for video.placement property. If property is missing display log message.
543
+ if (!deepAccess(videoData, 'placement')) {
544
+ logWarn(MSG_VIDEO_PLACEMENT_MISSING + ' for ' + adUnitCode);
545
+ };
546
+ }
547
+
540
548
  function _createVideoRequest(bid) {
541
- var videoData = utils.mergeDeep(utils.deepAccess(bid.mediaTypes, 'video'), bid.params.video);
549
+ var videoData = mergeDeep(deepAccess(bid.mediaTypes, 'video'), bid.params.video);
542
550
  var videoObj;
543
551
 
544
552
  if (videoData !== UNDEFINED) {
545
553
  videoObj = {};
554
+ checkVideoPlacement(videoData, bid.adUnitCode);
546
555
  for (var key in VIDEO_CUSTOM_PARAMS) {
547
556
  if (videoData.hasOwnProperty(key)) {
548
557
  videoObj[key] = _checkParamDataType(key, videoData[key], VIDEO_CUSTOM_PARAMS[key]);
549
558
  }
550
559
  }
551
560
  // read playersize and assign to h and w.
552
- if (utils.isArray(bid.mediaTypes.video.playerSize[0])) {
561
+ if (isArray(bid.mediaTypes.video.playerSize[0])) {
553
562
  videoObj.w = parseInt(bid.mediaTypes.video.playerSize[0][0], 10);
554
563
  videoObj.h = parseInt(bid.mediaTypes.video.playerSize[0][1], 10);
555
- } else if (utils.isNumber(bid.mediaTypes.video.playerSize[0])) {
564
+ } else if (isNumber(bid.mediaTypes.video.playerSize[0])) {
556
565
  videoObj.w = parseInt(bid.mediaTypes.video.playerSize[0], 10);
557
566
  videoObj.h = parseInt(bid.mediaTypes.video.playerSize[1], 10);
558
567
  }
559
568
  } else {
560
569
  videoObj = UNDEFINED;
561
- utils.logWarn(LOG_WARN_PREFIX + 'Error: Video config params missing for adunit: ' + bid.params.adUnit + ' with mediaType set as video. Ignoring video impression in the adunit.');
570
+ logWarn(LOG_WARN_PREFIX + 'Error: Video config params missing for adunit: ' + bid.params.adUnit + ' with mediaType set as video. Ignoring video impression in the adunit.');
562
571
  }
563
572
  return videoObj;
564
573
  }
@@ -566,19 +575,19 @@ function _createVideoRequest(bid) {
566
575
  // support for PMP deals
567
576
  function _addPMPDealsInImpression(impObj, bid) {
568
577
  if (bid.params.deals) {
569
- if (utils.isArray(bid.params.deals)) {
578
+ if (isArray(bid.params.deals)) {
570
579
  bid.params.deals.forEach(function(dealId) {
571
- if (utils.isStr(dealId) && dealId.length > 3) {
580
+ if (isStr(dealId) && dealId.length > 3) {
572
581
  if (!impObj.pmp) {
573
582
  impObj.pmp = { private_auction: 0, deals: [] };
574
583
  }
575
584
  impObj.pmp.deals.push({ id: dealId });
576
585
  } else {
577
- utils.logWarn(LOG_WARN_PREFIX + 'Error: deal-id present in array bid.params.deals should be a strings with more than 3 charaters length, deal-id ignored: ' + dealId);
586
+ logWarn(LOG_WARN_PREFIX + 'Error: deal-id present in array bid.params.deals should be a strings with more than 3 charaters length, deal-id ignored: ' + dealId);
578
587
  }
579
588
  });
580
589
  } else {
581
- utils.logWarn(LOG_WARN_PREFIX + 'Error: bid.params.deals should be an array of strings.');
590
+ logWarn(LOG_WARN_PREFIX + 'Error: bid.params.deals should be an array of strings.');
582
591
  }
583
592
  }
584
593
  }
@@ -588,7 +597,7 @@ function _addDealCustomTargetings(imp, bid) {
588
597
  var dctrLen;
589
598
  if (bid.params.dctr) {
590
599
  dctr = bid.params.dctr;
591
- if (utils.isStr(dctr) && dctr.length > 0) {
600
+ if (isStr(dctr) && dctr.length > 0) {
592
601
  var arr = dctr.split('|');
593
602
  dctr = '';
594
603
  arr.forEach(val => {
@@ -600,12 +609,12 @@ function _addDealCustomTargetings(imp, bid) {
600
609
  }
601
610
  imp.ext['key_val'] = dctr.trim()
602
611
  } else {
603
- utils.logWarn(LOG_WARN_PREFIX + 'Ignoring param : dctr with value : ' + dctr + ', expects string-value, found empty or non-string value');
612
+ logWarn(LOG_WARN_PREFIX + 'Ignoring param : dctr with value : ' + dctr + ', expects string-value, found empty or non-string value');
604
613
  }
605
614
  }
606
615
  }
607
616
 
608
- function _addJWPlayerSegmentData(imp, bid) {
617
+ function _addJWPlayerSegmentData(imp, bid, isS2S) {
609
618
  var jwSegData = (bid.rtd && bid.rtd.jwplayer && bid.rtd.jwplayer.targeting) || undefined;
610
619
  var jwPlayerData = '';
611
620
  const jwMark = 'jw-';
@@ -619,10 +628,15 @@ function _addJWPlayerSegmentData(imp, bid) {
619
628
  for (var i = 0; i < maxLength; i++) {
620
629
  jwPlayerData += '|' + jwMark + jwSegData.segments[i] + '=1';
621
630
  }
622
- const ext = imp.ext;
623
- (ext && ext.key_val === undefined)
624
- ? ext.key_val = jwPlayerData
625
- : ext.key_val += '|' + jwPlayerData;
631
+
632
+ var ext;
633
+
634
+ if (isS2S) {
635
+ (imp.dctr === undefined || imp.dctr.length == 0) ? imp.dctr = jwPlayerData : imp.dctr += '|' + jwPlayerData;
636
+ } else {
637
+ ext = imp.ext;
638
+ ext && ext.key_val === undefined ? ext.key_val = jwPlayerData : ext.key_val += '|' + jwPlayerData;
639
+ }
626
640
  }
627
641
 
628
642
  function _createImpressionObject(bid, conf) {
@@ -662,7 +676,7 @@ function _createImpressionObject(bid, conf) {
662
676
  if (!isInvalidNativeRequest) {
663
677
  impObj.native = nativeObj;
664
678
  } else {
665
- utils.logWarn(LOG_WARN_PREFIX + 'Error: Error in Native adunit ' + bid.params.adUnit + '. Ignoring the adunit. Refer to ' + PREBID_NATIVE_HELP_LINK + ' for more details.');
679
+ logWarn(LOG_WARN_PREFIX + 'Error: Error in Native adunit ' + bid.params.adUnit + '. Ignoring the adunit. Refer to ' + PREBID_NATIVE_HELP_LINK + ' for more details.');
666
680
  }
667
681
  break;
668
682
  case VIDEO:
@@ -680,9 +694,9 @@ function _createImpressionObject(bid, conf) {
680
694
  pos: 0,
681
695
  w: bid.params.width,
682
696
  h: bid.params.height,
683
- topframe: utils.inIframe() ? 0 : 1
697
+ topframe: inIframe() ? 0 : 1
684
698
  };
685
- if (utils.isArray(sizes) && sizes.length > 1) {
699
+ if (isArray(sizes) && sizes.length > 1) {
686
700
  sizes = sizes.splice(1, sizes.length - 1);
687
701
  sizes.forEach(size => {
688
702
  format.push({
@@ -705,31 +719,31 @@ function _createImpressionObject(bid, conf) {
705
719
  }
706
720
 
707
721
  function _addImpressionFPD(imp, bid) {
708
- const ortb2 = {...utils.deepAccess(bid, 'ortb2Imp.ext.data')};
722
+ const ortb2 = {...deepAccess(bid, 'ortb2Imp.ext.data')};
709
723
  Object.keys(ortb2).forEach(prop => {
710
724
  /**
711
725
  * Prebid AdSlot
712
726
  * @type {(string|undefined)}
713
727
  */
714
728
  if (prop === 'pbadslot') {
715
- if (typeof ortb2[prop] === 'string' && ortb2[prop]) utils.deepSetValue(imp, 'ext.data.pbadslot', ortb2[prop]);
729
+ if (typeof ortb2[prop] === 'string' && ortb2[prop]) deepSetValue(imp, 'ext.data.pbadslot', ortb2[prop]);
716
730
  } else if (prop === 'adserver') {
717
731
  /**
718
732
  * Copy GAM AdUnit and Name to imp
719
733
  */
720
734
  ['name', 'adslot'].forEach(name => {
721
735
  /** @type {(string|undefined)} */
722
- const value = utils.deepAccess(ortb2, `adserver.${name}`);
736
+ const value = deepAccess(ortb2, `adserver.${name}`);
723
737
  if (typeof value === 'string' && value) {
724
- utils.deepSetValue(imp, `ext.data.adserver.${name.toLowerCase()}`, value);
738
+ deepSetValue(imp, `ext.data.adserver.${name.toLowerCase()}`, value);
725
739
  // copy GAM ad unit id as imp[].ext.dfp_ad_unit_code
726
740
  if (name === 'adslot') {
727
- utils.deepSetValue(imp, `ext.dfp_ad_unit_code`, value);
741
+ deepSetValue(imp, `ext.dfp_ad_unit_code`, value);
728
742
  }
729
743
  }
730
744
  });
731
745
  } else {
732
- utils.deepSetValue(imp, `ext.data.${prop}`, ortb2[prop]);
746
+ deepSetValue(imp, `ext.data.${prop}`, ortb2[prop]);
733
747
  }
734
748
  });
735
749
  }
@@ -746,7 +760,7 @@ function _addFloorFromFloorModule(impObj, bid) {
746
760
  if (impObj[mediaType].w && impObj[mediaType].h) {
747
761
  sizesArray.push([impObj[mediaType].w, impObj[mediaType].h]);
748
762
  }
749
- if (utils.isArray(impObj[mediaType].format)) {
763
+ if (isArray(impObj[mediaType].format)) {
750
764
  impObj[mediaType].format.forEach(size => sizesArray.push([size.w, size.h]));
751
765
  }
752
766
  }
@@ -757,16 +771,16 @@ function _addFloorFromFloorModule(impObj, bid) {
757
771
 
758
772
  sizesArray.forEach(size => {
759
773
  let floorInfo = bid.getFloor({ currency: impObj.bidfloorcur, mediaType: mediaType, size: size });
760
- utils.logInfo(LOG_WARN_PREFIX, 'floor from floor module returned for mediatype:', mediaType, ' and size:', size, ' is: currency', floorInfo.currency, 'floor', floorInfo.floor);
774
+ logInfo(LOG_WARN_PREFIX, 'floor from floor module returned for mediatype:', mediaType, ' and size:', size, ' is: currency', floorInfo.currency, 'floor', floorInfo.floor);
761
775
  if (typeof floorInfo === 'object' && floorInfo.currency === impObj.bidfloorcur && !isNaN(parseInt(floorInfo.floor))) {
762
776
  let mediaTypeFloor = parseFloat(floorInfo.floor);
763
- utils.logInfo(LOG_WARN_PREFIX, 'floor from floor module:', mediaTypeFloor, 'previous floor value', bidFloor, 'Min:', Math.min(mediaTypeFloor, bidFloor));
777
+ logInfo(LOG_WARN_PREFIX, 'floor from floor module:', mediaTypeFloor, 'previous floor value', bidFloor, 'Min:', Math.min(mediaTypeFloor, bidFloor));
764
778
  if (bidFloor === -1) {
765
779
  bidFloor = mediaTypeFloor;
766
780
  } else {
767
781
  bidFloor = Math.min(mediaTypeFloor, bidFloor)
768
782
  }
769
- utils.logInfo(LOG_WARN_PREFIX, 'new floor value:', bidFloor);
783
+ logInfo(LOG_WARN_PREFIX, 'new floor value:', bidFloor);
770
784
  }
771
785
  });
772
786
  }
@@ -775,18 +789,18 @@ function _addFloorFromFloorModule(impObj, bid) {
775
789
  // get highest from impObj.bidfllor and floor from floor module
776
790
  // as we are using Math.max, it is ok if we have not got any floor from floorModule, then value of bidFloor will be -1
777
791
  if (impObj.bidfloor) {
778
- utils.logInfo(LOG_WARN_PREFIX, 'floor from floor module:', bidFloor, 'impObj.bidfloor', impObj.bidfloor, 'Max:', Math.max(bidFloor, impObj.bidfloor));
792
+ logInfo(LOG_WARN_PREFIX, 'floor from floor module:', bidFloor, 'impObj.bidfloor', impObj.bidfloor, 'Max:', Math.max(bidFloor, impObj.bidfloor));
779
793
  bidFloor = Math.max(bidFloor, impObj.bidfloor)
780
794
  }
781
795
 
782
796
  // assign value only if bidFloor is > 0
783
797
  impObj.bidfloor = ((!isNaN(bidFloor) && bidFloor > 0) ? bidFloor : UNDEFINED);
784
- utils.logInfo(LOG_WARN_PREFIX, 'new impObj.bidfloor value:', impObj.bidfloor);
798
+ logInfo(LOG_WARN_PREFIX, 'new impObj.bidfloor value:', impObj.bidfloor);
785
799
  }
786
800
 
787
801
  function _getFlocId(validBidRequests, flocFormat) {
788
802
  var flocIdObject = null;
789
- var flocId = utils.deepAccess(validBidRequests, '0.userId.flocId');
803
+ var flocId = deepAccess(validBidRequests, '0.userId.flocId');
790
804
  if (flocId && flocId.id) {
791
805
  switch (flocFormat) {
792
806
  case FLOC_FORMAT.SEGMENT:
@@ -837,7 +851,7 @@ function _handleFlocId(payload, validBidRequests) {
837
851
  }
838
852
 
839
853
  function _handleEids(payload, validBidRequests) {
840
- let bidUserIdAsEids = utils.deepAccess(validBidRequests, '0.userIdAsEids');
854
+ let bidUserIdAsEids = deepAccess(validBidRequests, '0.userIdAsEids');
841
855
  let flocObject = _getFlocId(validBidRequests, FLOC_FORMAT.EID);
842
856
  if (flocObject) {
843
857
  if (!bidUserIdAsEids) {
@@ -845,8 +859,8 @@ function _handleEids(payload, validBidRequests) {
845
859
  }
846
860
  bidUserIdAsEids.push(flocObject);
847
861
  }
848
- if (utils.isArray(bidUserIdAsEids) && bidUserIdAsEids.length > 0) {
849
- utils.deepSetValue(payload, 'user.eids', bidUserIdAsEids);
862
+ if (isArray(bidUserIdAsEids) && bidUserIdAsEids.length > 0) {
863
+ deepSetValue(payload, 'user.eids', bidUserIdAsEids);
850
864
  }
851
865
  }
852
866
 
@@ -855,7 +869,7 @@ function _checkMediaType(bid, newBid) {
855
869
  if (bid.ext && bid.ext['BidType'] != undefined) {
856
870
  newBid.mediaType = MEDIATYPE[bid.ext.BidType];
857
871
  } else {
858
- utils.logInfo(LOG_WARN_PREFIX + 'bid.ext.BidType does not exist, checking alternatively for mediaType')
872
+ logInfo(LOG_WARN_PREFIX + 'bid.ext.BidType does not exist, checking alternatively for mediaType')
859
873
  var adm = bid.adm;
860
874
  var admStr = '';
861
875
  var videoRegex = new RegExp(/VAST\s+version/);
@@ -870,7 +884,7 @@ function _checkMediaType(bid, newBid) {
870
884
  newBid.mediaType = NATIVE;
871
885
  }
872
886
  } catch (e) {
873
- utils.logWarn(LOG_WARN_PREFIX + 'Error: Cannot parse native reponse for ad response: ' + adm);
887
+ logWarn(LOG_WARN_PREFIX + 'Error: Cannot parse native reponse for ad response: ' + adm);
874
888
  }
875
889
  }
876
890
  }
@@ -883,7 +897,7 @@ function _parseNativeResponse(bid, newBid) {
883
897
  try {
884
898
  adm = JSON.parse(bid.adm.replace(/\\/g, ''));
885
899
  } catch (ex) {
886
- utils.logWarn(LOG_WARN_PREFIX + 'Error: Cannot parse native reponse for ad response: ' + newBid.adm);
900
+ logWarn(LOG_WARN_PREFIX + 'Error: Cannot parse native reponse for ad response: ' + newBid.adm);
887
901
  return;
888
902
  }
889
903
  if (adm && adm.native && adm.native.assets && adm.native.assets.length > 0) {
@@ -943,7 +957,7 @@ function _blockedIabCategoriesValidation(payload, blockedIabCategories) {
943
957
  if (typeof category === 'string') { // only strings
944
958
  return true;
945
959
  } else {
946
- utils.logWarn(LOG_WARN_PREFIX + 'bcat: Each category should be a string, ignoring category: ' + category);
960
+ logWarn(LOG_WARN_PREFIX + 'bcat: Each category should be a string, ignoring category: ' + category);
947
961
  return false;
948
962
  }
949
963
  })
@@ -952,11 +966,11 @@ function _blockedIabCategoriesValidation(payload, blockedIabCategories) {
952
966
  if (category.length > 3) {
953
967
  return arr.indexOf(category) === index; // unique value only
954
968
  } else {
955
- utils.logWarn(LOG_WARN_PREFIX + 'bcat: Each category should have a value of a length of more than 3 characters, ignoring category: ' + category)
969
+ logWarn(LOG_WARN_PREFIX + 'bcat: Each category should have a value of a length of more than 3 characters, ignoring category: ' + category)
956
970
  }
957
971
  });
958
972
  if (blockedIabCategories.length > 0) {
959
- utils.logWarn(LOG_WARN_PREFIX + 'bcat: Selected: ', blockedIabCategories);
973
+ logWarn(LOG_WARN_PREFIX + 'bcat: Selected: ', blockedIabCategories);
960
974
  payload.bcat = blockedIabCategories;
961
975
  }
962
976
  }
@@ -979,7 +993,7 @@ function _assignRenderer(newBid, request) {
979
993
  }
980
994
 
981
995
  function isNonEmptyArray(test) {
982
- if (utils.isArray(test) === true) {
996
+ if (isArray(test) === true) {
983
997
  if (test.length > 0) {
984
998
  return true;
985
999
  }
@@ -999,27 +1013,27 @@ export const spec = {
999
1013
  */
1000
1014
  isBidRequestValid: bid => {
1001
1015
  if (bid && bid.params) {
1002
- if (!utils.isStr(bid.params.publisherId)) {
1003
- utils.logWarn(LOG_WARN_PREFIX + 'Error: publisherId is mandatory and cannot be numeric (wrap it in quotes in your config). Call to OpenBid will not be sent for ad unit: ' + JSON.stringify(bid));
1016
+ if (!isStr(bid.params.publisherId)) {
1017
+ logWarn(LOG_WARN_PREFIX + 'Error: publisherId is mandatory and cannot be numeric (wrap it in quotes in your config). Call to OpenBid will not be sent for ad unit: ' + JSON.stringify(bid));
1004
1018
  return false;
1005
1019
  }
1006
1020
  // video ad validation
1007
1021
  if (bid.hasOwnProperty('mediaTypes') && bid.mediaTypes.hasOwnProperty(VIDEO)) {
1008
1022
  // bid.mediaTypes.video.mimes OR bid.params.video.mimes should be present and must be a non-empty array
1009
- let mediaTypesVideoMimes = utils.deepAccess(bid.mediaTypes, 'video.mimes');
1010
- let paramsVideoMimes = utils.deepAccess(bid, 'params.video.mimes');
1023
+ let mediaTypesVideoMimes = deepAccess(bid.mediaTypes, 'video.mimes');
1024
+ let paramsVideoMimes = deepAccess(bid, 'params.video.mimes');
1011
1025
  if (isNonEmptyArray(mediaTypesVideoMimes) === false && isNonEmptyArray(paramsVideoMimes) === false) {
1012
- utils.logWarn(LOG_WARN_PREFIX + 'Error: For video ads, bid.mediaTypes.video.mimes OR bid.params.video.mimes should be present and must be a non-empty array. Call to OpenBid will not be sent for ad unit:' + JSON.stringify(bid));
1026
+ logWarn(LOG_WARN_PREFIX + 'Error: For video ads, bid.mediaTypes.video.mimes OR bid.params.video.mimes should be present and must be a non-empty array. Call to OpenBid will not be sent for ad unit:' + JSON.stringify(bid));
1013
1027
  return false;
1014
1028
  }
1015
1029
 
1016
1030
  if (!bid.mediaTypes[VIDEO].hasOwnProperty('context')) {
1017
- utils.logError(`${LOG_WARN_PREFIX}: no context specified in bid. Rejecting bid: `, bid);
1031
+ logError(`${LOG_WARN_PREFIX}: no context specified in bid. Rejecting bid: `, bid);
1018
1032
  return false;
1019
1033
  }
1020
1034
 
1021
1035
  if (bid.mediaTypes[VIDEO].context === 'outstream' &&
1022
- !utils.isStr(bid.params.outstreamAU) &&
1036
+ !isStr(bid.params.outstreamAU) &&
1023
1037
  !bid.hasOwnProperty('renderer') &&
1024
1038
  !bid.mediaTypes[VIDEO].hasOwnProperty('renderer')) {
1025
1039
  // we are here since outstream ad-unit is provided without outstreamAU and renderer
@@ -1029,10 +1043,10 @@ export const spec = {
1029
1043
 
1030
1044
  if (bid.mediaTypes.hasOwnProperty(BANNER) || bid.mediaTypes.hasOwnProperty(NATIVE)) {
1031
1045
  delete bid.mediaTypes[VIDEO];
1032
- utils.logWarn(`${LOG_WARN_PREFIX}: for "outstream" bids either outstreamAU parameter must be provided or ad unit supplied renderer is required. Rejecting mediatype Video of bid: `, bid);
1046
+ logWarn(`${LOG_WARN_PREFIX}: for "outstream" bids either outstreamAU parameter must be provided or ad unit supplied renderer is required. Rejecting mediatype Video of bid: `, bid);
1033
1047
  return true;
1034
1048
  } else {
1035
- utils.logError(`${LOG_WARN_PREFIX}: for "outstream" bids either outstreamAU parameter must be provided or ad unit supplied renderer is required. Rejecting bid: `, bid);
1049
+ logError(`${LOG_WARN_PREFIX}: for "outstream" bids either outstreamAU parameter must be provided or ad unit supplied renderer is required. Rejecting bid: `, bid);
1036
1050
  return false;
1037
1051
  }
1038
1052
  }
@@ -1061,7 +1075,7 @@ export const spec = {
1061
1075
  var blockedIabCategories = [];
1062
1076
 
1063
1077
  validBidRequests.forEach(originalBid => {
1064
- bid = utils.deepClone(originalBid);
1078
+ bid = deepClone(originalBid);
1065
1079
  bid.params.adSlot = bid.params.adSlot || '';
1066
1080
  _parseAdSlot(bid);
1067
1081
  if (bid.params.hasOwnProperty('video')) {
@@ -1070,7 +1084,7 @@ export const spec = {
1070
1084
  // If we have a native mediaType configured alongside banner, its ok if the banner size is not set in width and height
1071
1085
  // The corresponding banner imp object will not be generated, but we still want the native object to be sent, hence the following check
1072
1086
  if (!(bid.hasOwnProperty('mediaTypes') && bid.mediaTypes.hasOwnProperty(NATIVE)) && bid.params.width === 0 && bid.params.height === 0) {
1073
- utils.logWarn(LOG_WARN_PREFIX + 'Skipping the non-standard adslot: ', bid.params.adSlot, JSON.stringify(bid));
1087
+ logWarn(LOG_WARN_PREFIX + 'Skipping the non-standard adslot: ', bid.params.adSlot, JSON.stringify(bid));
1074
1088
  return;
1075
1089
  }
1076
1090
  }
@@ -1080,14 +1094,14 @@ export const spec = {
1080
1094
  if (bidCurrency === '') {
1081
1095
  bidCurrency = bid.params.currency || UNDEFINED;
1082
1096
  } else if (bid.params.hasOwnProperty('currency') && bidCurrency !== bid.params.currency) {
1083
- utils.logWarn(LOG_WARN_PREFIX + 'Currency specifier ignored. Only one currency permitted.');
1097
+ logWarn(LOG_WARN_PREFIX + 'Currency specifier ignored. Only one currency permitted.');
1084
1098
  }
1085
1099
  bid.params.currency = bidCurrency;
1086
1100
  // check if dctr is added to more than 1 adunit
1087
- if (bid.params.hasOwnProperty('dctr') && utils.isStr(bid.params.dctr)) {
1101
+ if (bid.params.hasOwnProperty('dctr') && isStr(bid.params.dctr)) {
1088
1102
  dctrArr.push(bid.params.dctr);
1089
1103
  }
1090
- if (bid.params.hasOwnProperty('bcat') && utils.isArray(bid.params.bcat)) {
1104
+ if (bid.params.hasOwnProperty('bcat') && isArray(bid.params.bcat)) {
1091
1105
  blockedIabCategories = blockedIabCategories.concat(bid.params.bcat);
1092
1106
  }
1093
1107
  var impObj = _createImpressionObject(bid, conf);
@@ -1130,7 +1144,7 @@ export const spec = {
1130
1144
  }
1131
1145
 
1132
1146
  // passing transactionId in source.tid
1133
- utils.deepSetValue(payload, 'source.tid', conf.transactionId);
1147
+ deepSetValue(payload, 'source.tid', conf.transactionId);
1134
1148
 
1135
1149
  // test bids
1136
1150
  if (window.location.href.indexOf('pubmaticTest=true') !== -1) {
@@ -1139,23 +1153,23 @@ export const spec = {
1139
1153
 
1140
1154
  // adding schain object
1141
1155
  if (validBidRequests[0].schain) {
1142
- utils.deepSetValue(payload, 'source.ext.schain', validBidRequests[0].schain);
1156
+ deepSetValue(payload, 'source.ext.schain', validBidRequests[0].schain);
1143
1157
  }
1144
1158
 
1145
1159
  // Attaching GDPR Consent Params
1146
1160
  if (bidderRequest && bidderRequest.gdprConsent) {
1147
- utils.deepSetValue(payload, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
1148
- utils.deepSetValue(payload, 'regs.ext.gdpr', (bidderRequest.gdprConsent.gdprApplies ? 1 : 0));
1161
+ deepSetValue(payload, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
1162
+ deepSetValue(payload, 'regs.ext.gdpr', (bidderRequest.gdprConsent.gdprApplies ? 1 : 0));
1149
1163
  }
1150
1164
 
1151
1165
  // CCPA
1152
1166
  if (bidderRequest && bidderRequest.uspConsent) {
1153
- utils.deepSetValue(payload, 'regs.ext.us_privacy', bidderRequest.uspConsent);
1167
+ deepSetValue(payload, 'regs.ext.us_privacy', bidderRequest.uspConsent);
1154
1168
  }
1155
1169
 
1156
1170
  // coppa compliance
1157
1171
  if (config.getConfig('coppa') === true) {
1158
- utils.deepSetValue(payload, 'regs.coppa', 1);
1172
+ deepSetValue(payload, 'regs.coppa', 1);
1159
1173
  }
1160
1174
 
1161
1175
  _handleEids(payload, validBidRequests);
@@ -1164,10 +1178,10 @@ export const spec = {
1164
1178
  // First Party Data
1165
1179
  const commonFpd = config.getConfig('ortb2') || {};
1166
1180
  if (commonFpd.site) {
1167
- utils.mergeDeep(payload, {site: commonFpd.site});
1181
+ mergeDeep(payload, {site: commonFpd.site});
1168
1182
  }
1169
1183
  if (commonFpd.user) {
1170
- utils.mergeDeep(payload, {user: commonFpd.user});
1184
+ mergeDeep(payload, {user: commonFpd.user});
1171
1185
  }
1172
1186
 
1173
1187
  // Note: Do not move this block up
@@ -1205,12 +1219,12 @@ export const spec = {
1205
1219
  let parsedRequest = JSON.parse(request.data);
1206
1220
  let parsedReferrer = parsedRequest.site && parsedRequest.site.ref ? parsedRequest.site.ref : '';
1207
1221
  try {
1208
- if (response.body && response.body.seatbid && utils.isArray(response.body.seatbid)) {
1222
+ if (response.body && response.body.seatbid && isArray(response.body.seatbid)) {
1209
1223
  // Supporting multiple bid responses for same adSize
1210
1224
  respCur = response.body.cur || respCur;
1211
1225
  response.body.seatbid.forEach(seatbidder => {
1212
1226
  seatbidder.bid &&
1213
- utils.isArray(seatbidder.bid) &&
1227
+ isArray(seatbidder.bid) &&
1214
1228
  seatbidder.bid.forEach(bid => {
1215
1229
  let newBid = {
1216
1230
  requestId: bid.impid,
@@ -1276,7 +1290,7 @@ export const spec = {
1276
1290
  });
1277
1291
  }
1278
1292
  } catch (error) {
1279
- utils.logError(error);
1293
+ logError(error);
1280
1294
  }
1281
1295
  return bidResponses;
1282
1296
  },
@@ -1322,8 +1336,10 @@ export const spec = {
1322
1336
  * @param {Boolean} isOpenRtb boolean to check openrtb2 protocol
1323
1337
  * @return {Object} params bid params
1324
1338
  */
1325
- transformBidParams: function (params, isOpenRtb) {
1326
- return utils.convertTypes({
1339
+
1340
+ transformBidParams: function (params, isOpenRtb, adUnit, bidRequests) {
1341
+ _addJWPlayerSegmentData(params, adUnit.bids[0], true);
1342
+ return convertTypes({
1327
1343
  'publisherId': 'string',
1328
1344
  'adSlot': 'string'
1329
1345
  }, params);
@@ -25,7 +25,7 @@ var adUnits = [
25
25
  bidder: 'pubmatic',
26
26
  params: {
27
27
  publisherId: '156209', // required, must be a string, not an integer or other js type.
28
- oustreamAU: 'renderer_test_pubmatic', // required if mediaTypes-> video-> context is 'outstream' and optional if renderer is defined in adUnits or in mediaType video. This value can be get by BlueBillyWig Team.
28
+ outstreamAU: 'renderer_test_pubmatic', // required if mediaTypes-> video-> context is 'outstream' and optional if renderer is defined in adUnits or in mediaType video. This value can be get by BlueBillyWig Team.
29
29
  adSlot: 'pubmatic_test2', // optional, must be a string, not an integer or other js type.
30
30
  pmzoneid: 'zone1, zone11', // optional
31
31
  lat: '40.712775', // optional