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,6 +1,11 @@
1
1
  import Adapter from '../../src/adapter.js';
2
2
  import { createBid } from '../../src/bidfactory.js';
3
- import * as utils from '../../src/utils.js';
3
+ import {
4
+ getPrebidInternal, logError, isStr, isPlainObject, logWarn, generateUUID, bind, logMessage,
5
+ triggerPixel, insertUserSyncIframe, deepAccess, mergeDeep, deepSetValue, cleanObj, parseSizesInput,
6
+ getBidRequest, getDefinedParams, createTrackPixelHtml, pick, deepClone, uniques, flatten, isNumber,
7
+ isEmpty, isArray, logInfo
8
+ } from '../../src/utils.js';
4
9
  import CONSTANTS from '../../src/constants.json';
5
10
  import adapterManager from '../../src/adapterManager.js';
6
11
  import { config } from '../../src/config.js';
@@ -12,7 +17,6 @@ import includes from 'core-js-pure/features/array/includes.js';
12
17
  import { S2S_VENDORS } from './config.js';
13
18
  import { ajax } from '../../src/ajax.js';
14
19
  import find from 'core-js-pure/features/array/find.js';
15
- import { getPrebidInternal } from '../../src/utils.js';
16
20
 
17
21
  const getConfig = config.getConfig;
18
22
 
@@ -100,7 +104,7 @@ function updateConfigDefaultVendor(option) {
100
104
  }
101
105
  });
102
106
  } else {
103
- utils.logError('Incorrect or unavailable prebid server default vendor option: ' + vendor);
107
+ logError('Incorrect or unavailable prebid server default vendor option: ' + vendor);
104
108
  return false;
105
109
  }
106
110
  }
@@ -116,7 +120,7 @@ function validateConfigRequiredProps(option) {
116
120
  const keys = Object.keys(option);
117
121
  if (['accountId', 'bidders', 'endpoint'].filter(key => {
118
122
  if (!includes(keys, key)) {
119
- utils.logError(key + ' missing in server to server config');
123
+ logError(key + ' missing in server to server config');
120
124
  return true;
121
125
  }
122
126
  return false;
@@ -129,14 +133,14 @@ function validateConfigRequiredProps(option) {
129
133
  // could be removed later as part of a major release, if we decide to not support the old format
130
134
  function formatUrlParams(option) {
131
135
  ['endpoint', 'syncEndpoint'].forEach((prop) => {
132
- if (utils.isStr(option[prop])) {
136
+ if (isStr(option[prop])) {
133
137
  let temp = option[prop];
134
138
  option[prop] = { p1Consent: temp, noP1Consent: temp };
135
139
  }
136
- if (utils.isPlainObject(option[prop]) && (!option[prop].p1Consent || !option[prop].noP1Consent)) {
140
+ if (isPlainObject(option[prop]) && (!option[prop].p1Consent || !option[prop].noP1Consent)) {
137
141
  ['p1Consent', 'noP1Consent'].forEach((conUrl) => {
138
142
  if (!option[prop][conUrl]) {
139
- utils.logWarn(`s2sConfig.${prop}.${conUrl} not defined. PBS request will be skipped in some P1 scenarios.`);
143
+ logWarn(`s2sConfig.${prop}.${conUrl} not defined. PBS request will be skipped in some P1 scenarios.`);
140
144
  }
141
145
  });
142
146
  }
@@ -171,7 +175,7 @@ function setS2sConfig(options) {
171
175
  return true;
172
176
  }
173
177
  }
174
- utils.logWarn('prebidServer: s2s config is disabled');
178
+ logWarn('prebidServer: s2s config is disabled');
175
179
  return false;
176
180
  });
177
181
 
@@ -198,13 +202,13 @@ function queueSync(bidderCodes, gdprConsent, uspConsent, s2sConfig) {
198
202
  _syncCount++;
199
203
 
200
204
  const payload = {
201
- uuid: utils.generateUUID(),
205
+ uuid: generateUUID(),
202
206
  bidders: bidderCodes,
203
207
  account: s2sConfig.accountId
204
208
  };
205
209
 
206
210
  let userSyncLimit = s2sConfig.userSyncLimit;
207
- if (utils.isNumber(userSyncLimit) && userSyncLimit > 0) {
211
+ if (isNumber(userSyncLimit) && userSyncLimit > 0) {
208
212
  payload['limit'] = userSyncLimit;
209
213
  }
210
214
 
@@ -232,7 +236,7 @@ function queueSync(bidderCodes, gdprConsent, uspConsent, s2sConfig) {
232
236
  response = JSON.parse(response);
233
237
  doAllSyncs(response.bidder_status, s2sConfig);
234
238
  } catch (e) {
235
- utils.logError(e);
239
+ logError(e);
236
240
  }
237
241
  },
238
242
  jsonPayload,
@@ -252,7 +256,7 @@ function doAllSyncs(bidders, s2sConfig) {
252
256
 
253
257
  // if PBS reports this bidder doesn't have an ID, then call the sync and recurse to the next sync entry
254
258
  if (thisSync.no_cookie) {
255
- doPreBidderSync(thisSync.usersync.type, thisSync.usersync.url, thisSync.bidder, utils.bind.call(doAllSyncs, null, bidders, s2sConfig), s2sConfig);
259
+ doPreBidderSync(thisSync.usersync.type, thisSync.usersync.url, thisSync.bidder, bind.call(doAllSyncs, null, bidders, s2sConfig), s2sConfig);
256
260
  } else {
257
261
  // bidder already has an ID, so just recurse to the next sync entry
258
262
  doAllSyncs(bidders, s2sConfig);
@@ -287,16 +291,16 @@ function doPreBidderSync(type, url, bidder, done, s2sConfig) {
287
291
  */
288
292
  function doBidderSync(type, url, bidder, done) {
289
293
  if (!url) {
290
- utils.logError(`No sync url for bidder "${bidder}": ${url}`);
294
+ logError(`No sync url for bidder "${bidder}": ${url}`);
291
295
  done();
292
296
  } else if (type === 'image' || type === 'redirect') {
293
- utils.logMessage(`Invoking image pixel user sync for bidder: "${bidder}"`);
294
- utils.triggerPixel(url, done);
297
+ logMessage(`Invoking image pixel user sync for bidder: "${bidder}"`);
298
+ triggerPixel(url, done);
295
299
  } else if (type == 'iframe') {
296
- utils.logMessage(`Invoking iframe user sync for bidder: "${bidder}"`);
297
- utils.insertUserSyncIframe(url, done);
300
+ logMessage(`Invoking iframe user sync for bidder: "${bidder}"`);
301
+ insertUserSyncIframe(url, done);
298
302
  } else {
299
- utils.logError(`User sync type "${type}" not supported for bidder: "${bidder}"`);
303
+ logError(`User sync type "${type}" not supported for bidder: "${bidder}"`);
300
304
  done();
301
305
  }
302
306
  }
@@ -312,7 +316,7 @@ function doClientSideSyncs(bidders, gdprConsent, uspConsent) {
312
316
  if (clientAdapter && clientAdapter.registerSyncs) {
313
317
  config.runWithBidder(
314
318
  bidder,
315
- utils.bind.call(
319
+ bind.call(
316
320
  clientAdapter.registerSyncs,
317
321
  clientAdapter,
318
322
  [],
@@ -333,12 +337,12 @@ function _appendSiteAppDevice(request, pageUrl, accountId) {
333
337
  request.app.publisher = {id: accountId}
334
338
  } else {
335
339
  request.site = {};
336
- if (utils.isPlainObject(config.getConfig('site'))) {
340
+ if (isPlainObject(config.getConfig('site'))) {
337
341
  request.site = config.getConfig('site');
338
342
  }
339
343
  // set publisher.id if not already defined
340
- if (!utils.deepAccess(request.site, 'publisher.id')) {
341
- utils.deepSetValue(request.site, 'publisher.id', accountId);
344
+ if (!deepAccess(request.site, 'publisher.id')) {
345
+ deepSetValue(request.site, 'publisher.id', accountId);
342
346
  }
343
347
  // set site.page if not already defined
344
348
  if (!request.site.page) {
@@ -364,7 +368,7 @@ function addBidderFirstPartyDataToRequest(request) {
364
368
  const fpdConfigs = Object.keys(bidderConfig).reduce((acc, bidder) => {
365
369
  const currBidderConfig = bidderConfig[bidder];
366
370
  if (currBidderConfig.ortb2) {
367
- const ortb2 = utils.mergeDeep({}, currBidderConfig.ortb2);
371
+ const ortb2 = mergeDeep({}, currBidderConfig.ortb2);
368
372
 
369
373
  acc.push({
370
374
  bidders: [ bidder ],
@@ -375,7 +379,7 @@ function addBidderFirstPartyDataToRequest(request) {
375
379
  }, []);
376
380
 
377
381
  if (fpdConfigs.length) {
378
- utils.deepSetValue(request, 'ext.prebid.bidderconfig', fpdConfigs);
382
+ deepSetValue(request, 'ext.prebid.bidderconfig', fpdConfigs);
379
383
  }
380
384
  }
381
385
 
@@ -442,13 +446,13 @@ let wurlMap = {};
442
446
  * @param {string} wurl events.winurl passed from prebidServer as wurl
443
447
  */
444
448
  function addWurl(auctionId, adId, wurl) {
445
- if ([auctionId, adId].every(utils.isStr)) {
449
+ if ([auctionId, adId].every(isStr)) {
446
450
  wurlMap[`${auctionId}${adId}`] = wurl;
447
451
  }
448
452
  }
449
453
 
450
454
  function getPbsResponseData(bidderRequests, response, pbsName, pbjsName) {
451
- const bidderValues = utils.deepAccess(response, `ext.${pbsName}`);
455
+ const bidderValues = deepAccess(response, `ext.${pbsName}`);
452
456
  if (bidderValues) {
453
457
  Object.keys(bidderValues).forEach(bidder => {
454
458
  let biddersReq = find(bidderRequests, bidderReq => bidderReq.bidderCode === bidder);
@@ -464,7 +468,7 @@ function getPbsResponseData(bidderRequests, response, pbsName, pbjsName) {
464
468
  * @param {string} adId generated value set to bidObject.adId by bidderFactory Bid()
465
469
  */
466
470
  function removeWurl(auctionId, adId) {
467
- if ([auctionId, adId].every(utils.isStr)) {
471
+ if ([auctionId, adId].every(isStr)) {
468
472
  wurlMap[`${auctionId}${adId}`] = undefined;
469
473
  }
470
474
  }
@@ -474,7 +478,7 @@ function removeWurl(auctionId, adId) {
474
478
  * @return {(string|undefined)} events.winurl which was passed as wurl
475
479
  */
476
480
  function getWurl(auctionId, adId) {
477
- if ([auctionId, adId].every(utils.isStr)) {
481
+ if ([auctionId, adId].every(isStr)) {
478
482
  return wurlMap[`${auctionId}${adId}`];
479
483
  }
480
484
  }
@@ -506,7 +510,7 @@ const OPEN_RTB_PROTOCOL = {
506
510
  }
507
511
  impIds.add(impressionId);
508
512
 
509
- const nativeParams = processNativeAdUnitParams(utils.deepAccess(adUnit, 'mediaTypes.native'));
513
+ const nativeParams = processNativeAdUnitParams(deepAccess(adUnit, 'mediaTypes.native'));
510
514
  let nativeAssets;
511
515
  if (nativeParams) {
512
516
  try {
@@ -516,19 +520,19 @@ const OPEN_RTB_PROTOCOL = {
516
520
  function newAsset(obj) {
517
521
  return Object.assign({
518
522
  required: params.required ? 1 : 0
519
- }, obj ? utils.cleanObj(obj) : {});
523
+ }, obj ? cleanObj(obj) : {});
520
524
  }
521
525
 
522
526
  switch (type) {
523
527
  case 'image':
524
528
  case 'icon':
525
529
  let imgTypeId = nativeImgIdMap[type];
526
- let asset = utils.cleanObj({
530
+ let asset = cleanObj({
527
531
  type: imgTypeId,
528
- w: utils.deepAccess(params, 'sizes.0'),
529
- h: utils.deepAccess(params, 'sizes.1'),
530
- wmin: utils.deepAccess(params, 'aspect_ratios.0.min_width'),
531
- hmin: utils.deepAccess(params, 'aspect_ratios.0.min_height')
532
+ w: deepAccess(params, 'sizes.0'),
533
+ h: deepAccess(params, 'sizes.1'),
534
+ wmin: deepAccess(params, 'aspect_ratios.0.min_width'),
535
+ hmin: deepAccess(params, 'aspect_ratios.0.min_height')
532
536
  });
533
537
  if (!((asset.w && asset.h) || (asset.hmin && asset.wmin))) {
534
538
  throw 'invalid img sizes (must provide sizes or min_height & min_width if using aspect_ratios)';
@@ -569,11 +573,11 @@ const OPEN_RTB_PROTOCOL = {
569
573
  return assets;
570
574
  }, []);
571
575
  } catch (e) {
572
- utils.logError('error creating native request: ' + String(e))
576
+ logError('error creating native request: ' + String(e))
573
577
  }
574
578
  }
575
- const videoParams = utils.deepAccess(adUnit, 'mediaTypes.video');
576
- const bannerParams = utils.deepAccess(adUnit, 'mediaTypes.banner');
579
+ const videoParams = deepAccess(adUnit, 'mediaTypes.video');
580
+ const bannerParams = deepAccess(adUnit, 'mediaTypes.banner');
577
581
 
578
582
  adUnit.bids.forEach(bid => {
579
583
  // OpenRTB response contains imp.id and bidder name. These are
@@ -592,7 +596,7 @@ const OPEN_RTB_PROTOCOL = {
592
596
 
593
597
  let mediaTypes = {};
594
598
  if (bannerParams && bannerParams.sizes) {
595
- const sizes = utils.parseSizesInput(bannerParams.sizes);
599
+ const sizes = parseSizesInput(bannerParams.sizes);
596
600
 
597
601
  // get banner sizes in form [{ w: <int>, h: <int> }, ...]
598
602
  const format = sizes.map(size => {
@@ -607,10 +611,10 @@ const OPEN_RTB_PROTOCOL = {
607
611
  if (bannerParams.pos) mediaTypes['banner'].pos = bannerParams.pos;
608
612
  }
609
613
 
610
- if (!utils.isEmpty(videoParams)) {
614
+ if (!isEmpty(videoParams)) {
611
615
  if (videoParams.context === 'outstream' && !videoParams.renderer && !adUnit.renderer) {
612
616
  // Don't push oustream w/o renderer to request object.
613
- utils.logError('Outstream bid without renderer cannot be sent to Prebid Server.');
617
+ logError('Outstream bid without renderer cannot be sent to Prebid Server.');
614
618
  } else {
615
619
  if (videoParams.context === 'instream' && !videoParams.hasOwnProperty('placement')) {
616
620
  videoParams.placement = 1;
@@ -619,8 +623,8 @@ const OPEN_RTB_PROTOCOL = {
619
623
  mediaTypes['video'] = Object.keys(videoParams).filter(param => param !== 'context')
620
624
  .reduce((result, param) => {
621
625
  if (param === 'playerSize') {
622
- result.w = utils.deepAccess(videoParams, `${param}.0.0`);
623
- result.h = utils.deepAccess(videoParams, `${param}.0.1`);
626
+ result.w = deepAccess(videoParams, `${param}.0.0`);
627
+ result.h = deepAccess(videoParams, `${param}.0.1`);
624
628
  } else {
625
629
  result[param] = videoParams[param];
626
630
  }
@@ -646,7 +650,7 @@ const OPEN_RTB_PROTOCOL = {
646
650
  ver: '1.2'
647
651
  }
648
652
  } catch (e) {
649
- utils.logError('error creating native request: ' + String(e))
653
+ logError('error creating native request: ' + String(e))
650
654
  }
651
655
  }
652
656
 
@@ -659,11 +663,11 @@ const OPEN_RTB_PROTOCOL = {
659
663
  }
660
664
  acc[bid.bidder] = (s2sConfig.adapterOptions && s2sConfig.adapterOptions[bid.bidder]) ? Object.assign({}, bid.params, s2sConfig.adapterOptions[bid.bidder]) : bid.params;
661
665
  return acc;
662
- }, {...utils.deepAccess(adUnit, 'ortb2Imp.ext')});
666
+ }, {...deepAccess(adUnit, 'ortb2Imp.ext')});
663
667
 
664
668
  const imp = { id: impressionId, ext, secure: s2sConfig.secure };
665
669
 
666
- const ortb2 = {...utils.deepAccess(adUnit, 'ortb2Imp.ext.data')};
670
+ const ortb2 = {...deepAccess(adUnit, 'ortb2Imp.ext.data')};
667
671
  Object.keys(ortb2).forEach(prop => {
668
672
  /**
669
673
  * Prebid AdSlot
@@ -671,7 +675,7 @@ const OPEN_RTB_PROTOCOL = {
671
675
  */
672
676
  if (prop === 'pbadslot') {
673
677
  if (typeof ortb2[prop] === 'string' && ortb2[prop]) {
674
- utils.deepSetValue(imp, 'ext.data.pbadslot', ortb2[prop]);
678
+ deepSetValue(imp, 'ext.data.pbadslot', ortb2[prop]);
675
679
  } else {
676
680
  // remove pbadslot property if it doesn't meet the spec
677
681
  delete imp.ext.data.pbadslot;
@@ -682,13 +686,13 @@ const OPEN_RTB_PROTOCOL = {
682
686
  */
683
687
  ['name', 'adslot'].forEach(name => {
684
688
  /** @type {(string|undefined)} */
685
- const value = utils.deepAccess(ortb2, `adserver.${name}`);
689
+ const value = deepAccess(ortb2, `adserver.${name}`);
686
690
  if (typeof value === 'string' && value) {
687
- utils.deepSetValue(imp, `ext.data.adserver.${name.toLowerCase()}`, value);
691
+ deepSetValue(imp, `ext.data.adserver.${name.toLowerCase()}`, value);
688
692
  }
689
693
  });
690
694
  } else {
691
- utils.deepSetValue(imp, `ext.data.${prop}`, ortb2[prop]);
695
+ deepSetValue(imp, `ext.data.${prop}`, ortb2[prop]);
692
696
  }
693
697
  });
694
698
 
@@ -697,7 +701,7 @@ const OPEN_RTB_PROTOCOL = {
697
701
  // if storedAuctionResponse has been set, pass SRID
698
702
  const storedAuctionResponseBid = find(firstBidRequest.bids, bid => (bid.adUnitCode === adUnit.code && bid.storedAuctionResponse));
699
703
  if (storedAuctionResponseBid) {
700
- utils.deepSetValue(imp, 'ext.prebid.storedauctionresponse.id', storedAuctionResponseBid.storedAuctionResponse.toString());
704
+ deepSetValue(imp, 'ext.prebid.storedauctionresponse.id', storedAuctionResponseBid.storedAuctionResponse.toString());
701
705
  }
702
706
 
703
707
  const getFloorBid = find(firstBidRequest.bids, bid => bid.adUnitCode === adUnit.code && typeof bid.getFloor === 'function');
@@ -709,7 +713,7 @@ const OPEN_RTB_PROTOCOL = {
709
713
  currency: config.getConfig('currency.adServerCurrency') || DEFAULT_S2S_CURRENCY,
710
714
  });
711
715
  } catch (e) {
712
- utils.logError('PBS: getFloor threw an error: ', e);
716
+ logError('PBS: getFloor threw an error: ', e);
713
717
  }
714
718
  if (floorInfo && floorInfo.currency && !isNaN(parseFloat(floorInfo.floor))) {
715
719
  imp.bidfloor = parseFloat(floorInfo.floor);
@@ -723,7 +727,7 @@ const OPEN_RTB_PROTOCOL = {
723
727
  });
724
728
 
725
729
  if (!imps.length) {
726
- utils.logError('Request to Prebid Server rejected due to invalid media type(s) in adUnit.');
730
+ logError('Request to Prebid Server rejected due to invalid media type(s) in adUnit.');
727
731
  return;
728
732
  }
729
733
  const request = {
@@ -775,36 +779,36 @@ const OPEN_RTB_PROTOCOL = {
775
779
  _appendSiteAppDevice(request, bidRequests[0].refererInfo.referer, s2sConfig.accountId);
776
780
 
777
781
  // pass schain object if it is present
778
- const schain = utils.deepAccess(bidRequests, '0.bids.0.schain');
782
+ const schain = deepAccess(bidRequests, '0.bids.0.schain');
779
783
  if (schain) {
780
784
  request.source.ext = {
781
785
  schain: schain
782
786
  };
783
787
  }
784
788
 
785
- if (!utils.isEmpty(aliases)) {
789
+ if (!isEmpty(aliases)) {
786
790
  request.ext.prebid.aliases = {...request.ext.prebid.aliases, ...aliases};
787
791
  }
788
792
 
789
- const bidUserIdAsEids = utils.deepAccess(bidRequests, '0.bids.0.userIdAsEids');
790
- if (utils.isArray(bidUserIdAsEids) && bidUserIdAsEids.length > 0) {
791
- utils.deepSetValue(request, 'user.ext.eids', bidUserIdAsEids);
793
+ const bidUserIdAsEids = deepAccess(bidRequests, '0.bids.0.userIdAsEids');
794
+ if (isArray(bidUserIdAsEids) && bidUserIdAsEids.length > 0) {
795
+ deepSetValue(request, 'user.ext.eids', bidUserIdAsEids);
792
796
  }
793
797
 
794
- if (utils.isArray(eidPermissions) && eidPermissions.length > 0) {
795
- if (requestedBidders && utils.isArray(requestedBidders)) {
798
+ if (isArray(eidPermissions) && eidPermissions.length > 0) {
799
+ if (requestedBidders && isArray(requestedBidders)) {
796
800
  eidPermissions.forEach(i => {
797
801
  if (i.bidders) {
798
- i.bidders = i.bidders.filter(bidder => requestedBidders.includes(bidder))
802
+ i.bidders = i.bidders.filter(bidder => includes(requestedBidders, bidder))
799
803
  }
800
804
  });
801
805
  }
802
- utils.deepSetValue(request, 'ext.prebid.data.eidpermissions', eidPermissions);
806
+ deepSetValue(request, 'ext.prebid.data.eidpermissions', eidPermissions);
803
807
  }
804
808
 
805
809
  const multibid = config.getConfig('multibid');
806
810
  if (multibid) {
807
- utils.deepSetValue(request, 'ext.prebid.multibid', multibid.reduce((result, i) => {
811
+ deepSetValue(request, 'ext.prebid.multibid', multibid.reduce((result, i) => {
808
812
  let obj = {};
809
813
 
810
814
  Object.keys(i).forEach(key => {
@@ -824,25 +828,25 @@ const OPEN_RTB_PROTOCOL = {
824
828
  if (typeof firstBidRequest.gdprConsent.gdprApplies === 'boolean') {
825
829
  gdprApplies = firstBidRequest.gdprConsent.gdprApplies ? 1 : 0;
826
830
  }
827
- utils.deepSetValue(request, 'regs.ext.gdpr', gdprApplies);
828
- utils.deepSetValue(request, 'user.ext.consent', firstBidRequest.gdprConsent.consentString);
831
+ deepSetValue(request, 'regs.ext.gdpr', gdprApplies);
832
+ deepSetValue(request, 'user.ext.consent', firstBidRequest.gdprConsent.consentString);
829
833
  if (firstBidRequest.gdprConsent.addtlConsent && typeof firstBidRequest.gdprConsent.addtlConsent === 'string') {
830
- utils.deepSetValue(request, 'user.ext.ConsentedProvidersSettings.consented_providers', firstBidRequest.gdprConsent.addtlConsent);
834
+ deepSetValue(request, 'user.ext.ConsentedProvidersSettings.consented_providers', firstBidRequest.gdprConsent.addtlConsent);
831
835
  }
832
836
  }
833
837
 
834
838
  // US Privacy (CCPA) support
835
839
  if (firstBidRequest.uspConsent) {
836
- utils.deepSetValue(request, 'regs.ext.us_privacy', firstBidRequest.uspConsent);
840
+ deepSetValue(request, 'regs.ext.us_privacy', firstBidRequest.uspConsent);
837
841
  }
838
842
  }
839
843
 
840
844
  if (getConfig('coppa') === true) {
841
- utils.deepSetValue(request, 'regs.coppa', 1);
845
+ deepSetValue(request, 'regs.coppa', 1);
842
846
  }
843
847
 
844
848
  const commonFpd = getConfig('ortb2') || {};
845
- utils.mergeDeep(request, commonFpd);
849
+ mergeDeep(request, commonFpd);
846
850
 
847
851
  addBidderFirstPartyDataToRequest(request);
848
852
 
@@ -862,7 +866,7 @@ const OPEN_RTB_PROTOCOL = {
862
866
  let bidRequest;
863
867
  let key = `${bid.impid}${seatbid.seat}`;
864
868
  if (bidIdMap[key]) {
865
- bidRequest = utils.getBidRequest(
869
+ bidRequest = getBidRequest(
866
870
  bidIdMap[key],
867
871
  bidderRequests
868
872
  );
@@ -879,31 +883,31 @@ const OPEN_RTB_PROTOCOL = {
879
883
 
880
884
  // temporarily leaving attaching it to each bidResponse so no breaking change
881
885
  // BUT: this is a flat map, so it should be only attached to bidderRequest, a the change above does
882
- let serverResponseTimeMs = utils.deepAccess(response, ['ext', 'responsetimemillis', seatbid.seat].join('.'));
886
+ let serverResponseTimeMs = deepAccess(response, ['ext', 'responsetimemillis', seatbid.seat].join('.'));
883
887
  if (bidRequest && serverResponseTimeMs) {
884
888
  bidRequest.serverResponseTimeMs = serverResponseTimeMs;
885
889
  }
886
890
 
887
891
  // Look for seatbid[].bid[].ext.prebid.bidid and place it in the bidResponse object for use in analytics adapters as 'pbsBidId'
888
- const bidId = utils.deepAccess(bid, 'ext.prebid.bidid');
889
- if (utils.isStr(bidId)) {
892
+ const bidId = deepAccess(bid, 'ext.prebid.bidid');
893
+ if (isStr(bidId)) {
890
894
  bidObject.pbsBidId = bidId;
891
895
  }
892
896
 
893
897
  // store wurl by auctionId and adId so it can be accessed from the BID_WON event handler
894
- if (utils.isStr(utils.deepAccess(bid, 'ext.prebid.events.win'))) {
895
- addWurl(bidRequest.auctionId, bidObject.adId, utils.deepAccess(bid, 'ext.prebid.events.win'));
898
+ if (isStr(deepAccess(bid, 'ext.prebid.events.win'))) {
899
+ addWurl(bidRequest.auctionId, bidObject.adId, deepAccess(bid, 'ext.prebid.events.win'));
896
900
  }
897
901
 
898
- let extPrebidTargeting = utils.deepAccess(bid, 'ext.prebid.targeting');
902
+ let extPrebidTargeting = deepAccess(bid, 'ext.prebid.targeting');
899
903
 
900
904
  // If ext.prebid.targeting exists, add it as a property value named 'adserverTargeting'
901
905
  // The removal of hb_winurl and hb_bidid targeting values is temporary
902
906
  // once we get through the transition, this block will be removed.
903
- if (utils.isPlainObject(extPrebidTargeting)) {
907
+ if (isPlainObject(extPrebidTargeting)) {
904
908
  // If wurl exists, remove hb_winurl and hb_bidid targeting attributes
905
- if (utils.isStr(utils.deepAccess(bid, 'ext.prebid.events.win'))) {
906
- extPrebidTargeting = utils.getDefinedParams(extPrebidTargeting, Object.keys(extPrebidTargeting)
909
+ if (isStr(deepAccess(bid, 'ext.prebid.events.win'))) {
910
+ extPrebidTargeting = getDefinedParams(extPrebidTargeting, Object.keys(extPrebidTargeting)
907
911
  .filter(i => (i.indexOf('hb_winurl') === -1 && i.indexOf('hb_bidid') === -1)));
908
912
  }
909
913
  bidObject.adserverTargeting = extPrebidTargeting;
@@ -911,7 +915,7 @@ const OPEN_RTB_PROTOCOL = {
911
915
 
912
916
  bidObject.seatBidId = bid.id;
913
917
 
914
- if (utils.deepAccess(bid, 'ext.prebid.type') === VIDEO) {
918
+ if (deepAccess(bid, 'ext.prebid.type') === VIDEO) {
915
919
  bidObject.mediaType = VIDEO;
916
920
  let sizes = bidRequest.sizes && bidRequest.sizes[0];
917
921
  bidObject.playerWidth = sizes[0];
@@ -930,7 +934,7 @@ const OPEN_RTB_PROTOCOL = {
930
934
 
931
935
  if (bid.adm) { bidObject.vastXml = bid.adm; }
932
936
  if (!bidObject.vastUrl && bid.nurl) { bidObject.vastUrl = bid.nurl; }
933
- } else if (utils.deepAccess(bid, 'ext.prebid.type') === NATIVE) {
937
+ } else if (deepAccess(bid, 'ext.prebid.type') === NATIVE) {
934
938
  bidObject.mediaType = NATIVE;
935
939
  let adm;
936
940
  if (typeof bid.adm === 'string') {
@@ -956,18 +960,18 @@ const OPEN_RTB_PROTOCOL = {
956
960
  });
957
961
  }
958
962
 
959
- if (utils.isPlainObject(adm) && Array.isArray(adm.assets)) {
963
+ if (isPlainObject(adm) && Array.isArray(adm.assets)) {
960
964
  let origAssets = nativeAssetCache[bid.impid];
961
- bidObject.native = utils.cleanObj(adm.assets.reduce((native, asset) => {
965
+ bidObject.native = cleanObj(adm.assets.reduce((native, asset) => {
962
966
  let origAsset = origAssets[asset.id];
963
- if (utils.isPlainObject(asset.img)) {
964
- native[origAsset.img.type ? nativeImgIdMap[origAsset.img.type] : 'image'] = utils.pick(
967
+ if (isPlainObject(asset.img)) {
968
+ native[origAsset.img.type ? nativeImgIdMap[origAsset.img.type] : 'image'] = pick(
965
969
  asset.img,
966
970
  ['url', 'w as width', 'h as height']
967
971
  );
968
- } else if (utils.isPlainObject(asset.title)) {
972
+ } else if (isPlainObject(asset.title)) {
969
973
  native['title'] = asset.title.text
970
- } else if (utils.isPlainObject(asset.data)) {
974
+ } else if (isPlainObject(asset.data)) {
971
975
  nativeDataNames.forEach(dataType => {
972
976
  if (nativeDataIdMap[dataType] === origAsset.data.type) {
973
977
  native[dataType] = asset.data.value;
@@ -975,19 +979,19 @@ const OPEN_RTB_PROTOCOL = {
975
979
  });
976
980
  }
977
981
  return native;
978
- }, utils.cleanObj({
982
+ }, cleanObj({
979
983
  clickUrl: adm.link,
980
- clickTrackers: utils.deepAccess(adm, 'link.clicktrackers'),
984
+ clickTrackers: deepAccess(adm, 'link.clicktrackers'),
981
985
  impressionTrackers: trackers[nativeEventTrackerMethodMap.img],
982
986
  javascriptTrackers: trackers[nativeEventTrackerMethodMap.js]
983
987
  })));
984
988
  } else {
985
- utils.logError('prebid server native response contained no assets');
989
+ logError('prebid server native response contained no assets');
986
990
  }
987
991
  } else { // banner
988
992
  if (bid.adm && bid.nurl) {
989
993
  bidObject.ad = bid.adm;
990
- bidObject.ad += utils.createTrackPixelHtml(decodeURIComponent(bid.nurl));
994
+ bidObject.ad += createTrackPixelHtml(decodeURIComponent(bid.nurl));
991
995
  } else if (bid.adm) {
992
996
  bidObject.ad = bid.adm;
993
997
  } else if (bid.nurl) {
@@ -1004,8 +1008,8 @@ const OPEN_RTB_PROTOCOL = {
1004
1008
  if (bid.burl) { bidObject.burl = bid.burl; }
1005
1009
  bidObject.currency = (response.cur) ? response.cur : DEFAULT_S2S_CURRENCY;
1006
1010
  bidObject.meta = {};
1007
- let extPrebidMeta = utils.deepAccess(bid, 'ext.prebid.meta');
1008
- if (extPrebidMeta && utils.isPlainObject(extPrebidMeta)) { bidObject.meta = utils.deepClone(extPrebidMeta); }
1011
+ let extPrebidMeta = deepAccess(bid, 'ext.prebid.meta');
1012
+ if (extPrebidMeta && isPlainObject(extPrebidMeta)) { bidObject.meta = deepClone(extPrebidMeta); }
1009
1013
  if (bid.adomain) { bidObject.meta.advertiserDomains = bid.adomain; }
1010
1014
 
1011
1015
  // the OpenRTB location for "TTL" as understood by Prebid.js is "exp" (expiration).
@@ -1028,9 +1032,9 @@ const OPEN_RTB_PROTOCOL = {
1028
1032
  */
1029
1033
  function bidWonHandler(bid) {
1030
1034
  const wurl = getWurl(bid.auctionId, bid.adId);
1031
- if (utils.isStr(wurl)) {
1032
- utils.logMessage(`Invoking image pixel for wurl on BID_WIN: "${wurl}"`);
1033
- utils.triggerPixel(wurl);
1035
+ if (isStr(wurl)) {
1036
+ logMessage(`Invoking image pixel for wurl on BID_WIN: "${wurl}"`);
1037
+ triggerPixel(wurl);
1034
1038
 
1035
1039
  // remove from wurl cache, since the wurl url was called
1036
1040
  removeWurl(bid.auctionId, bid.adId);
@@ -1041,7 +1045,7 @@ function hasPurpose1Consent(gdprConsent) {
1041
1045
  let result = true;
1042
1046
  if (gdprConsent) {
1043
1047
  if (gdprConsent.gdprApplies && gdprConsent.apiVersion === 2) {
1044
- result = !!(utils.deepAccess(gdprConsent, 'vendorData.purpose.consents.1') === true);
1048
+ result = !!(deepAccess(gdprConsent, 'vendorData.purpose.consents.1') === true);
1045
1049
  }
1046
1050
  }
1047
1051
  return result;
@@ -1068,7 +1072,7 @@ export function PrebidServer() {
1068
1072
 
1069
1073
  /* Prebid executes this function when the page asks to send out bid requests */
1070
1074
  baseAdapter.callBids = function(s2sBidRequest, bidRequests, addBidResponse, done, ajax) {
1071
- const adUnits = utils.deepClone(s2sBidRequest.ad_units);
1075
+ const adUnits = deepClone(s2sBidRequest.ad_units);
1072
1076
  let { gdprConsent, uspConsent } = getConsentData(bidRequests);
1073
1077
 
1074
1078
  // at this point ad units should have a size array either directly or mapped so filter for that
@@ -1078,9 +1082,9 @@ export function PrebidServer() {
1078
1082
 
1079
1083
  // in case config.bidders contains invalid bidders, we only process those we sent requests for
1080
1084
  const requestedBidders = validAdUnits
1081
- .map(adUnit => adUnit.bids.map(bid => bid.bidder).filter(utils.uniques))
1082
- .reduce(utils.flatten)
1083
- .filter(utils.uniques);
1085
+ .map(adUnit => adUnit.bids.map(bid => bid.bidder).filter(uniques))
1086
+ .reduce(flatten)
1087
+ .filter(uniques);
1084
1088
 
1085
1089
  if (Array.isArray(_s2sConfigs)) {
1086
1090
  if (s2sBidRequest.s2sConfig && s2sBidRequest.s2sConfig.syncEndpoint && getMatchingConsentUrl(s2sBidRequest.s2sConfig.syncEndpoint, gdprConsent)) {
@@ -1093,7 +1097,7 @@ export function PrebidServer() {
1093
1097
 
1094
1098
  const request = OPEN_RTB_PROTOCOL.buildRequest(s2sBidRequest, bidRequests, validAdUnits, s2sBidRequest.s2sConfig, requestedBidders);
1095
1099
  const requestJson = request && JSON.stringify(request);
1096
- utils.logInfo('BidRequest: ' + requestJson);
1100
+ logInfo('BidRequest: ' + requestJson);
1097
1101
  const endpointUrl = getMatchingConsentUrl(s2sBidRequest.s2sConfig.endpoint, gdprConsent);
1098
1102
  if (request && requestJson && endpointUrl) {
1099
1103
  ajax(
@@ -1106,7 +1110,7 @@ export function PrebidServer() {
1106
1110
  { contentType: 'text/plain', withCredentials: true }
1107
1111
  );
1108
1112
  } else {
1109
- utils.logError('PBS request not made. Check endpoints.');
1113
+ logError('PBS request not made. Check endpoints.');
1110
1114
  }
1111
1115
  }
1112
1116
  };
@@ -1134,11 +1138,11 @@ export function PrebidServer() {
1134
1138
 
1135
1139
  bidderRequests.forEach(bidderRequest => events.emit(CONSTANTS.EVENTS.BIDDER_DONE, bidderRequest));
1136
1140
  } catch (error) {
1137
- utils.logError(error);
1141
+ logError(error);
1138
1142
  }
1139
1143
 
1140
1144
  if (!result || (result.status && includes(result.status, 'Error'))) {
1141
- utils.logError('error parsing response: ', result.status);
1145
+ logError('error parsing response: ', result.status);
1142
1146
  }
1143
1147
 
1144
1148
  done();