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,5 +1,5 @@
1
+ import { _each, deepAccess, isPlainObject, isArray, isStr, logInfo, parseUrl, isEmpty, triggerPixel, logWarn, getBidIdParameter, isFn, isNumber } from '../src/utils.js';
1
2
  import {registerBidder} from '../src/adapters/bidderFactory.js';
2
- import * as utils from '../src/utils.js';
3
3
  import {BANNER, NATIVE} from '../src/mediaTypes.js';
4
4
  import {config} from '../src/config.js';
5
5
  import { getStorageManager } from '../src/storageManager.js';
@@ -58,9 +58,9 @@ let _NATIVE_ASSET_ID_TO_KEY_MAP = {};
58
58
  let _NATIVE_ASSET_KEY_TO_ASSET_MAP = {};
59
59
 
60
60
  // loading _NATIVE_ASSET_ID_TO_KEY_MAP
61
- utils._each(NATIVE_ASSETS, anAsset => { _NATIVE_ASSET_ID_TO_KEY_MAP[anAsset.ID] = anAsset.KEY });
61
+ _each(NATIVE_ASSETS, anAsset => { _NATIVE_ASSET_ID_TO_KEY_MAP[anAsset.ID] = anAsset.KEY });
62
62
  // loading _NATIVE_ASSET_KEY_TO_ASSET_MAP
63
- utils._each(NATIVE_ASSETS, anAsset => { _NATIVE_ASSET_KEY_TO_ASSET_MAP[anAsset.KEY] = anAsset });
63
+ _each(NATIVE_ASSETS, anAsset => { _NATIVE_ASSET_KEY_TO_ASSET_MAP[anAsset.KEY] = anAsset });
64
64
 
65
65
  export const spec = {
66
66
  VERSION: '1.5',
@@ -76,20 +76,20 @@ export const spec = {
76
76
  * @return boolean True if this is a valid bid, and false otherwise.
77
77
  */
78
78
  isBidRequestValid: (bid) => {
79
- const banner = utils.deepAccess(bid, 'mediaTypes.banner');
80
- const native = utils.deepAccess(bid, 'mediaTypes.native');
81
- let nativeOk = utils.isPlainObject(native);
79
+ const banner = deepAccess(bid, 'mediaTypes.banner');
80
+ const native = deepAccess(bid, 'mediaTypes.native');
81
+ let nativeOk = isPlainObject(native);
82
82
  if (nativeOk) {
83
- const nativeParams = utils.deepAccess(bid, 'nativeParams');
83
+ const nativeParams = deepAccess(bid, 'nativeParams');
84
84
  let assetsCount = 0;
85
- if (utils.isPlainObject(nativeParams)) {
85
+ if (isPlainObject(nativeParams)) {
86
86
  for (let k in nativeParams) {
87
87
  let v = nativeParams[k];
88
88
  const supportProp = spec.NATIVE_ASSET_KEY_TO_ASSET_MAP.hasOwnProperty(k);
89
89
  if (supportProp) {
90
90
  assetsCount++
91
91
  }
92
- if (!utils.isPlainObject(v) || (!supportProp && utils.deepAccess(v, 'required'))) {
92
+ if (!isPlainObject(v) || (!supportProp && deepAccess(v, 'required'))) {
93
93
  nativeOk = false;
94
94
  break;
95
95
  }
@@ -97,17 +97,17 @@ export const spec = {
97
97
  }
98
98
  nativeOk = nativeOk && (assetsCount > 0);
99
99
  }
100
- let bannerOk = utils.isPlainObject(banner);
100
+ let bannerOk = isPlainObject(banner);
101
101
  if (bannerOk) {
102
- const sizes = utils.deepAccess(banner, 'sizes');
103
- bannerOk = utils.isArray(sizes) && sizes.length > 0;
102
+ const sizes = deepAccess(banner, 'sizes');
103
+ bannerOk = isArray(sizes) && sizes.length > 0;
104
104
  for (let f = 0; bannerOk && f < sizes.length; f++) {
105
105
  bannerOk = sizes[f].length === 2;
106
106
  }
107
107
  }
108
108
  let acc = Number(bid.params.accountId);
109
109
  let plcmt = Number(bid.params.placementId);
110
- return (bannerOk || nativeOk) && utils.isPlainObject(bid.params) && !!bid.adUnitCode && utils.isStr(bid.adUnitCode) && (plcmt > 0 ? bid.params.placementId.toString().search(spec.reId) === 0 : true) &&
110
+ return (bannerOk || nativeOk) && isPlainObject(bid.params) && !!bid.adUnitCode && isStr(bid.adUnitCode) && (plcmt > 0 ? bid.params.placementId.toString().search(spec.reId) === 0 : true) &&
111
111
  !!acc && acc > 0 && bid.params.accountId.toString().search(spec.reId) === 0;
112
112
  },
113
113
  /**
@@ -117,25 +117,25 @@ export const spec = {
117
117
  * @return ServerRequest Info describing the request to the server.
118
118
  */
119
119
  buildRequests: (validBidRequests, bidderRequest) => {
120
- utils.logInfo(LOG_INFO_PREFIX + `buildRequests`);
120
+ logInfo(LOG_INFO_PREFIX + `buildRequests`);
121
121
  if (validBidRequests.length === 0) {
122
122
  return;
123
123
  }
124
124
  const info = pageInfo();
125
- const page = info.location || utils.deepAccess(bidderRequest, 'refererInfo.referer') || utils.deepAccess(bidderRequest, 'refererInfo.canonicalUrl');
126
- const hostname = utils.parseUrl(page).hostname;
125
+ const page = info.location || deepAccess(bidderRequest, 'refererInfo.referer') || deepAccess(bidderRequest, 'refererInfo.canonicalUrl');
126
+ const hostname = parseUrl(page).hostname;
127
127
  let domain = extractDomainFromHost(hostname) || hostname;
128
128
  const accountId = setOnAny(validBidRequests, 'params.accountId');
129
129
  const muid = getLocalStorageSafely('mgMuidn');
130
130
  let url = (setOnAny(validBidRequests, 'params.bidUrl') || ENDPOINT_URL) + accountId;
131
- if (utils.isStr(muid) && muid.length > 0) {
131
+ if (isStr(muid) && muid.length > 0) {
132
132
  url += '?muid=' + muid;
133
133
  }
134
134
  const cur = setOnAny(validBidRequests, 'params.currency') || setOnAny(validBidRequests, 'params.cur') || config.getConfig('currency.adServerCurrency') || DEFAULT_CUR;
135
135
  const secure = window.location.protocol === 'https:' ? 1 : 0;
136
136
  let imp = [];
137
137
  validBidRequests.forEach(bid => {
138
- let tagid = utils.deepAccess(bid, 'params.placementId') || 0;
138
+ let tagid = deepAccess(bid, 'params.placementId') || 0;
139
139
  tagid = !tagid ? bid.adUnitCode : tagid + '/' + bid.adUnitCode;
140
140
  let impObj = {
141
141
  id: bid.bidId,
@@ -173,7 +173,7 @@ export const spec = {
173
173
  }
174
174
 
175
175
  let request = {
176
- id: utils.deepAccess(bidderRequest, 'bidderRequestId'),
176
+ id: deepAccess(bidderRequest, 'bidderRequestId'),
177
177
  site: {domain, page},
178
178
  cur: [cur],
179
179
  geo: {utcoffset: info.timeOffset},
@@ -195,7 +195,7 @@ export const spec = {
195
195
  if (info.referrer) {
196
196
  request.site.ref = info.referrer
197
197
  }
198
- utils.logInfo(LOG_INFO_PREFIX + `buildRequest:`, request);
198
+ logInfo(LOG_INFO_PREFIX + `buildRequest:`, request);
199
199
  return {
200
200
  method: 'POST',
201
201
  url: url,
@@ -209,36 +209,36 @@ export const spec = {
209
209
  * @return {Bid[]} An array of bids which were nested inside the server.
210
210
  */
211
211
  interpretResponse: (serverResponse, bidRequests) => {
212
- utils.logInfo(LOG_INFO_PREFIX + `interpretResponse`, serverResponse);
213
- if (serverResponse == null || serverResponse.body == null || serverResponse.body === '' || !utils.isArray(serverResponse.body.seatbid) || !serverResponse.body.seatbid.length) {
212
+ logInfo(LOG_INFO_PREFIX + `interpretResponse`, serverResponse);
213
+ if (serverResponse == null || serverResponse.body == null || serverResponse.body === '' || !isArray(serverResponse.body.seatbid) || !serverResponse.body.seatbid.length) {
214
214
  return;
215
215
  }
216
216
  const returnedBids = [];
217
- const muidn = utils.deepAccess(serverResponse.body, 'ext.muidn')
218
- if (utils.isStr(muidn) && muidn.length > 0) {
217
+ const muidn = deepAccess(serverResponse.body, 'ext.muidn')
218
+ if (isStr(muidn) && muidn.length > 0) {
219
219
  setLocalStorageSafely('mgMuidn', muidn)
220
220
  }
221
221
  serverResponse.body.seatbid.forEach((bids) => {
222
222
  bids.bid.forEach((bid) => {
223
223
  const pbid = prebidBid(bid, serverResponse.body.cur);
224
- if (pbid.mediaType === NATIVE && utils.isEmpty(pbid.native)) {
224
+ if (pbid.mediaType === NATIVE && isEmpty(pbid.native)) {
225
225
  return;
226
226
  }
227
227
  returnedBids.push(pbid);
228
228
  })
229
229
  });
230
230
 
231
- utils.logInfo(LOG_INFO_PREFIX + `interpretedResponse`, returnedBids);
231
+ logInfo(LOG_INFO_PREFIX + `interpretedResponse`, returnedBids);
232
232
  return returnedBids;
233
233
  },
234
234
  onBidWon: (bid) => {
235
- const cpm = utils.deepAccess(bid, 'adserverTargeting.hb_pb') || '';
236
- if (utils.isStr(bid.nurl) && bid.nurl !== '') {
235
+ const cpm = deepAccess(bid, 'adserverTargeting.hb_pb') || '';
236
+ if (isStr(bid.nurl) && bid.nurl !== '') {
237
237
  bid.nurl = bid.nurl.replace(
238
238
  /\${AUCTION_PRICE}/,
239
239
  cpm
240
240
  );
241
- utils.triggerPixel(bid.nurl);
241
+ triggerPixel(bid.nurl);
242
242
  }
243
243
  if (bid.isBurl) {
244
244
  if (bid.mediaType === BANNER) {
@@ -251,13 +251,13 @@ export const spec = {
251
251
  /\${AUCTION_PRICE}/,
252
252
  cpm
253
253
  );
254
- utils.triggerPixel(bid.burl);
254
+ triggerPixel(bid.burl);
255
255
  }
256
256
  }
257
- utils.logInfo(LOG_INFO_PREFIX + `onBidWon`);
257
+ logInfo(LOG_INFO_PREFIX + `onBidWon`);
258
258
  },
259
259
  getUserSyncs: (syncOptions, serverResponses) => {
260
- utils.logInfo(LOG_INFO_PREFIX + `getUserSyncs`);
260
+ logInfo(LOG_INFO_PREFIX + `getUserSyncs`);
261
261
  }
262
262
  };
263
263
 
@@ -265,7 +265,7 @@ registerBidder(spec);
265
265
 
266
266
  function setOnAny(collection, key) {
267
267
  for (let i = 0, result; i < collection.length; i++) {
268
- result = utils.deepAccess(collection[i], key);
268
+ result = deepAccess(collection[i], key);
269
269
  if (result) {
270
270
  return result;
271
271
  }
@@ -278,7 +278,7 @@ function setOnAny(collection, key) {
278
278
  * @return Bid
279
279
  */
280
280
  function prebidBid(serverBid, cur) {
281
- if (!utils.isStr(cur) || cur === '') {
281
+ if (!isStr(cur) || cur === '') {
282
282
  cur = DEFAULT_CUR;
283
283
  }
284
284
  const bid = {
@@ -295,8 +295,8 @@ function prebidBid(serverBid, cur) {
295
295
  ttl: serverBid.ttl || 300,
296
296
  nurl: serverBid.nurl || '',
297
297
  burl: serverBid.burl || '',
298
- isBurl: utils.isStr(serverBid.burl) && serverBid.burl.length > 0,
299
- meta: { advertiserDomains: (utils.isArray(serverBid.adomain) && serverBid.adomain.length > 0 ? serverBid.adomain : []) },
298
+ isBurl: isStr(serverBid.burl) && serverBid.burl.length > 0,
299
+ meta: { advertiserDomains: (isArray(serverBid.adomain) && serverBid.adomain.length > 0 ? serverBid.adomain : []) },
300
300
  };
301
301
  setMediaType(serverBid, bid);
302
302
  switch (bid.mediaType) {
@@ -310,7 +310,7 @@ function prebidBid(serverBid, cur) {
310
310
  }
311
311
 
312
312
  function setMediaType(bid, newBid) {
313
- if (utils.deepAccess(bid, 'ext.crtype') === 'native') {
313
+ if (deepAccess(bid, 'ext.crtype') === 'native') {
314
314
  newBid.mediaType = NATIVE;
315
315
  } else {
316
316
  newBid.mediaType = BANNER;
@@ -364,7 +364,7 @@ function setLocalStorageSafely(key, val) {
364
364
  }
365
365
 
366
366
  function createBannerRequest(bid) {
367
- const sizes = utils.deepAccess(bid, 'mediaTypes.banner.sizes');
367
+ const sizes = deepAccess(bid, 'mediaTypes.banner.sizes');
368
368
  let format = [];
369
369
  if (sizes.length > 1) {
370
370
  for (let f = 0; f < sizes.length; f++) {
@@ -380,7 +380,7 @@ function createBannerRequest(bid) {
380
380
  if (format.length) {
381
381
  r.format = format
382
382
  }
383
- const pos = utils.deepAccess(bid, 'mediaTypes.banner.pos') || 0
383
+ const pos = deepAccess(bid, 'mediaTypes.banner.pos') || 0
384
384
  if (pos) {
385
385
  r.pos = pos
386
386
  }
@@ -407,15 +407,15 @@ function createNativeRequest(params) {
407
407
  };
408
408
  break;
409
409
  case NATIVE_ASSETS.IMAGE.KEY:
410
- const wmin = params[key].wmin || params[key].minimumWidth || (utils.isArray(params[key].minsizes) && params[key].minsizes.length > 0 ? params[key].minsizes[0] : 0);
411
- const hmin = params[key].hmin || params[key].minimumHeight || (utils.isArray(params[key].minsizes) && params[key].minsizes.length > 1 ? params[key].minsizes[1] : 0);
410
+ const wmin = params[key].wmin || params[key].minimumWidth || (isArray(params[key].minsizes) && params[key].minsizes.length > 0 ? params[key].minsizes[0] : 0);
411
+ const hmin = params[key].hmin || params[key].minimumHeight || (isArray(params[key].minsizes) && params[key].minsizes.length > 1 ? params[key].minsizes[1] : 0);
412
412
  assetObj = {
413
413
  id: NATIVE_ASSETS.IMAGE.ID,
414
414
  required: params[key].required ? 1 : 0,
415
415
  img: {
416
416
  type: NATIVE_ASSET_IMAGE_TYPE.IMAGE,
417
- w: params[key].w || params[key].width || (utils.isArray(params[key].sizes) && params[key].sizes.length > 0 ? params[key].sizes[0] : 0),
418
- h: params[key].h || params[key].height || (utils.isArray(params[key].sizes) && params[key].sizes.length > 1 ? params[key].sizes[1] : 0),
417
+ w: params[key].w || params[key].width || (isArray(params[key].sizes) && params[key].sizes.length > 0 ? params[key].sizes[0] : 0),
418
+ h: params[key].h || params[key].height || (isArray(params[key].sizes) && params[key].sizes.length > 1 ? params[key].sizes[1] : 0),
419
419
  mimes: params[key].mimes,
420
420
  ext: params[key].ext,
421
421
  }
@@ -439,8 +439,8 @@ function createNativeRequest(params) {
439
439
  required: params[key].required ? 1 : 0,
440
440
  img: {
441
441
  type: NATIVE_ASSET_IMAGE_TYPE.ICON,
442
- w: params[key].w || params[key].width || (utils.isArray(params[key].sizes) && params[key].sizes.length > 0 ? params[key].sizes[0] : 0),
443
- h: params[key].h || params[key].height || (utils.isArray(params[key].sizes) && params[key].sizes.length > 0 ? params[key].sizes[1] : 0),
442
+ w: params[key].w || params[key].width || (isArray(params[key].sizes) && params[key].sizes.length > 0 ? params[key].sizes[0] : 0),
443
+ h: params[key].h || params[key].height || (isArray(params[key].sizes) && params[key].sizes.length > 0 ? params[key].sizes[1] : 0),
444
444
  }
445
445
  };
446
446
  if (!assetObj.img.w) {
@@ -485,7 +485,7 @@ function createNativeRequest(params) {
485
485
  break;
486
486
  } else {
487
487
  if (ele.id === 4 && nativeRequestObject.assets[i].id === 11) {
488
- if (utils.deepAccess(nativeRequestObject.assets[i], 'data.type') === ele.data.type) {
488
+ if (deepAccess(nativeRequestObject.assets[i], 'data.type') === ele.data.type) {
489
489
  presentrequiredAssetCount++;
490
490
  break;
491
491
  }
@@ -517,7 +517,7 @@ function parseNativeResponse(bid, newBid) {
517
517
  try {
518
518
  adm = JSON.parse(bid.adm);
519
519
  } catch (ex) {
520
- utils.logWarn(LOG_WARN_PREFIX + 'Error: Cannot parse native response for ad response: ' + newBid.adm);
520
+ logWarn(LOG_WARN_PREFIX + 'Error: Cannot parse native response for ad response: ' + newBid.adm);
521
521
  return;
522
522
  }
523
523
  if (adm && adm.native && adm.native.assets && adm.native.assets.length > 0) {
@@ -591,16 +591,16 @@ function pageInfo() {
591
591
  * @returns {*|number} floor price
592
592
  */
593
593
  function getBidFloor(bid, cur) {
594
- let bidFloor = utils.getBidIdParameter('bidfloor', bid.params) || utils.getBidIdParameter('bidFloor', bid.params) || 0;
594
+ let bidFloor = getBidIdParameter('bidfloor', bid.params) || getBidIdParameter('bidFloor', bid.params) || 0;
595
595
  const reqCur = cur
596
596
 
597
- if (!bidFloor && utils.isFn(bid.getFloor)) {
597
+ if (!bidFloor && isFn(bid.getFloor)) {
598
598
  const floorObj = bid.getFloor({
599
599
  currency: '*',
600
600
  mediaType: '*',
601
601
  size: '*'
602
602
  });
603
- if (utils.isPlainObject(floorObj) && utils.isNumber(floorObj.floor)) {
603
+ if (isPlainObject(floorObj) && isNumber(floorObj.floor)) {
604
604
  if (!floorObj.currency && reqCur !== DEFAULT_CUR) {
605
605
  floorObj.currency = DEFAULT_CUR
606
606
  }
@@ -1,6 +1,6 @@
1
+ import { deepAccess, isEmpty, isStr } from '../src/utils.js';
1
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
2
3
  import { BANNER } from '../src/mediaTypes.js';
3
- import * as utils from '../src/utils.js';
4
4
 
5
5
  const BIDDER_CODE = 'microad';
6
6
 
@@ -82,8 +82,8 @@ export const spec = {
82
82
  }
83
83
  }
84
84
 
85
- const idlEnv = utils.deepAccess(bid, 'userId.idl_env')
86
- if (!utils.isEmpty(idlEnv) && utils.isStr(idlEnv)) {
85
+ const idlEnv = deepAccess(bid, 'userId.idl_env')
86
+ if (!isEmpty(idlEnv) && isStr(idlEnv)) {
87
87
  params['idl_env'] = idlEnv
88
88
  }
89
89
 
@@ -5,7 +5,9 @@
5
5
 
6
6
  import {config} from '../../src/config.js';
7
7
  import {setupBeforeHookFnOnce, getHook} from '../../src/hook.js';
8
- import * as utils from '../../src/utils.js';
8
+ import {
9
+ logWarn, deepAccess, getUniqueIdentifierStr, deepSetValue, groupBy
10
+ } from '../../src/utils.js';
9
11
  import events from '../../src/events.js';
10
12
  import CONSTANTS from '../../src/constants.json';
11
13
  import {addBidderRequests} from '../../src/auction.js';
@@ -50,7 +52,7 @@ export function validateMultibid(conf) {
50
52
  let duplicate = conf.filter(entry => {
51
53
  // Check if entry.bidder is not defined or typeof string, filter entry and reset configuration
52
54
  if ((!entry.bidder || typeof entry.bidder !== 'string') && (!entry.bidders || !Array.isArray(entry.bidders))) {
53
- utils.logWarn('Filtering multibid entry. Missing required bidder or bidders property.');
55
+ logWarn('Filtering multibid entry. Missing required bidder or bidders property.');
54
56
  check = false;
55
57
  return false;
56
58
  }
@@ -97,26 +99,26 @@ export function adjustBidderRequestsHook(fn, bidderRequests) {
97
99
  * @param {Object} bid object
98
100
  */
99
101
  export function addBidResponseHook(fn, adUnitCode, bid) {
100
- let floor = utils.deepAccess(bid, 'floorData.floorValue');
102
+ let floor = deepAccess(bid, 'floorData.floorValue');
101
103
 
102
104
  if (!config.getConfig('multibid')) resetMultiConfig();
103
105
  // Checks if multiconfig exists and bid bidderCode exists within config and is an adpod bid
104
106
  // Else checks if multiconfig exists and bid bidderCode exists within config
105
107
  // Else continue with no modifications
106
- if (hasMultibid && multiConfig[bid.bidderCode] && utils.deepAccess(bid, 'video.context') === 'adpod') {
108
+ if (hasMultibid && multiConfig[bid.bidderCode] && deepAccess(bid, 'video.context') === 'adpod') {
107
109
  fn.call(this, adUnitCode, bid);
108
110
  } else if (hasMultibid && multiConfig[bid.bidderCode]) {
109
111
  // Set property multibidPrefix on bid
110
112
  if (multiConfig[bid.bidderCode].prefix) bid.multibidPrefix = multiConfig[bid.bidderCode].prefix;
111
113
  bid.originalBidder = bid.bidderCode;
112
114
  // Check if stored bids for auction include adUnitCode.bidder and max limit not reach for ad unit
113
- if (utils.deepAccess(multibidUnits, `${adUnitCode}.${bid.bidderCode}`)) {
115
+ if (deepAccess(multibidUnits, `${adUnitCode}.${bid.bidderCode}`)) {
114
116
  // Store request id under new property originalRequestId, create new unique bidId,
115
117
  // and push bid into multibid stored bids for auction if max not reached and bid cpm above floor
116
118
  if (!multibidUnits[adUnitCode][bid.bidderCode].maxReached && (!floor || floor <= bid.cpm)) {
117
119
  bid.originalRequestId = bid.requestId;
118
120
 
119
- bid.requestId = utils.getUniqueIdentifierStr();
121
+ bid.requestId = getUniqueIdentifierStr();
120
122
  multibidUnits[adUnitCode][bid.bidderCode].ads.push(bid);
121
123
 
122
124
  let length = multibidUnits[adUnitCode][bid.bidderCode].ads.length;
@@ -126,12 +128,12 @@ export function addBidResponseHook(fn, adUnitCode, bid) {
126
128
 
127
129
  fn.call(this, adUnitCode, bid);
128
130
  } else {
129
- utils.logWarn(`Filtering multibid received from bidder ${bid.bidderCode}: ` + ((multibidUnits[adUnitCode][bid.bidderCode].maxReached) ? `Maximum bid limit reached for ad unit code ${adUnitCode}` : 'Bid cpm under floors value.'));
131
+ logWarn(`Filtering multibid received from bidder ${bid.bidderCode}: ` + ((multibidUnits[adUnitCode][bid.bidderCode].maxReached) ? `Maximum bid limit reached for ad unit code ${adUnitCode}` : 'Bid cpm under floors value.'));
130
132
  }
131
133
  } else {
132
- if (utils.deepAccess(bid, 'floorData.floorValue')) utils.deepSetValue(multibidUnits, `${adUnitCode}.${bid.bidderCode}`, {floor: utils.deepAccess(bid, 'floorData.floorValue')});
134
+ if (deepAccess(bid, 'floorData.floorValue')) deepSetValue(multibidUnits, `${adUnitCode}.${bid.bidderCode}`, {floor: deepAccess(bid, 'floorData.floorValue')});
133
135
 
134
- utils.deepSetValue(multibidUnits, `${adUnitCode}.${bid.bidderCode}`, {ads: [bid]});
136
+ deepSetValue(multibidUnits, `${adUnitCode}.${bid.bidderCode}`, {ads: [bid]});
135
137
  if (multibidUnits[adUnitCode][bid.bidderCode].ads.length === multiConfig[bid.bidderCode].maxbids) multibidUnits[adUnitCode][bid.bidderCode].maxReached = true;
136
138
 
137
139
  fn.call(this, adUnitCode, bid);
@@ -170,11 +172,11 @@ export function targetBidPoolHook(fn, bidsReceived, highestCpmCallback, adUnitBi
170
172
  if (hasMultibid) {
171
173
  const dealPrioritization = config.getConfig('sendBidsControl.dealPrioritization');
172
174
  let modifiedBids = [];
173
- let buckets = utils.groupBy(bidsReceived, 'adUnitCode');
175
+ let buckets = groupBy(bidsReceived, 'adUnitCode');
174
176
  let bids = [].concat.apply([], Object.keys(buckets).reduce((result, slotId) => {
175
177
  let bucketBids = [];
176
178
  // Get bids and group by property originalBidder
177
- let bidsByBidderName = utils.groupBy(buckets[slotId], 'originalBidder');
179
+ let bidsByBidderName = groupBy(buckets[slotId], 'originalBidder');
178
180
  let adjustedBids = [].concat.apply([], Object.keys(bidsByBidderName).map(key => {
179
181
  // Reset all bidderCodes to original bidder values and sort by CPM
180
182
  return bidsByBidderName[key].sort((bidA, bidB) => {
@@ -183,7 +185,7 @@ export function targetBidPoolHook(fn, bidsReceived, highestCpmCallback, adUnitBi
183
185
  return bidA.cpm > bidB.cpm ? -1 : (bidA.cpm < bidB.cpm ? 1 : 0);
184
186
  }).map((bid, index) => {
185
187
  // For each bid (post CPM sort), set dynamic bidderCode using prefix and index if less than maxbid amount
186
- if (utils.deepAccess(multiConfig, `${bid.bidderCode}.prefix`) && index !== 0 && index < multiConfig[bid.bidderCode].maxbids) {
188
+ if (deepAccess(multiConfig, `${bid.bidderCode}.prefix`) && index !== 0 && index < multiConfig[bid.bidderCode].maxbids) {
187
189
  bid.bidderCode = multiConfig[bid.bidderCode].prefix + (index + 1);
188
190
  }
189
191
 
@@ -191,7 +193,7 @@ export function targetBidPoolHook(fn, bidsReceived, highestCpmCallback, adUnitBi
191
193
  })
192
194
  }));
193
195
  // Get adjustedBids by bidderCode and reduce using highestCpmCallback
194
- let bidsByBidderCode = utils.groupBy(adjustedBids, 'bidderCode');
196
+ let bidsByBidderCode = groupBy(adjustedBids, 'bidderCode');
195
197
  Object.keys(bidsByBidderCode).forEach(key => bucketBids.push(bidsByBidderCode[key].reduce(highestCpmCallback)));
196
198
  // if adUnitBidLimit is set, pass top N number bids
197
199
  if (adUnitBidLimit > 0) {
@@ -5,7 +5,7 @@
5
5
  * @requires module:modules/userId
6
6
  */
7
7
 
8
- import * as utils from '../src/utils.js';
8
+ import { timestamp, logError, deepClone, generateUUID, isPlainObject } from '../src/utils.js';
9
9
  import { ajax } from '../src/ajax.js';
10
10
  import { submodule } from '../src/hook.js';
11
11
  import { getStorageManager } from '../src/storageManager.js';
@@ -18,20 +18,20 @@ const openLinkID = {
18
18
  const storage = getStorageManager();
19
19
 
20
20
  function getExpirationDate() {
21
- return (new Date(utils.timestamp() + openLinkID.cookie_expiration)).toGMTString();
21
+ return (new Date(timestamp() + openLinkID.cookie_expiration)).toGMTString();
22
22
  }
23
23
 
24
24
  function isValidConfig(configParams) {
25
25
  if (!configParams) {
26
- utils.logError('User ID - mwOlId submodule requires configParams');
26
+ logError('User ID - mwOlId submodule requires configParams');
27
27
  return false;
28
28
  }
29
29
  if (!configParams.accountId) {
30
- utils.logError('User ID - mwOlId submodule requires accountId to be defined');
30
+ logError('User ID - mwOlId submodule requires accountId to be defined');
31
31
  return false;
32
32
  }
33
33
  if (!configParams.partnerId) {
34
- utils.logError('User ID - mwOlId submodule requires partnerId to be defined');
34
+ logError('User ID - mwOlId submodule requires partnerId to be defined');
35
35
  return false;
36
36
  }
37
37
  return true;
@@ -96,7 +96,7 @@ function register(configParams, olid) {
96
96
  function setID(configParams) {
97
97
  if (!isValidConfig(configParams)) return undefined;
98
98
  const mwOlId = readCookie();
99
- const newMwOlId = mwOlId ? utils.deepClone(mwOlId) : {eid: utils.generateUUID()};
99
+ const newMwOlId = mwOlId ? deepClone(mwOlId) : {eid: generateUUID()};
100
100
  writeCookie(newMwOlId);
101
101
  register(configParams, newMwOlId.eid);
102
102
  return {
@@ -122,7 +122,7 @@ export const mwOpenLinkIdSubModule = {
122
122
  * @return {(Object|undefined}
123
123
  */
124
124
  decode(mwOlId) {
125
- const id = mwOlId && utils.isPlainObject(mwOlId) ? mwOlId.eid : undefined;
125
+ const id = mwOlId && isPlainObject(mwOlId) ? mwOlId.eid : undefined;
126
126
  return id ? { 'mwOpenLinkId': id } : undefined;
127
127
  },
128
128
 
@@ -0,0 +1,112 @@
1
+ import { _map } from '../src/utils.js';
2
+ import { config } from '../src/config.js';
3
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
4
+
5
+ const BIDDER_CODE = 'mytarget';
6
+ const BIDDER_URL = '//ad.mail.ru/hbid_prebid/';
7
+ const DEFAULT_CURRENCY = 'RUB';
8
+ const DEFAULT_TTL = 180;
9
+
10
+ function buildPlacement(bidRequest) {
11
+ let { bidId, params } = bidRequest;
12
+ let { placementId, position, response, bidfloor } = params;
13
+ let placement = {
14
+ placementId,
15
+ id: bidId,
16
+ position: position || 0,
17
+ response: response || 0
18
+ };
19
+
20
+ if (typeof bidfloor !== 'undefined') {
21
+ placement.bidfloor = bidfloor;
22
+ }
23
+
24
+ return placement;
25
+ }
26
+
27
+ function getSiteName(referrer) {
28
+ let sitename = config.getConfig('mytarget.sitename');
29
+
30
+ if (!sitename) {
31
+ const parsed = document.createElement('a');
32
+ parsed.href = decodeURIComponent(referrer);
33
+ sitename = parsed.hostname;
34
+ }
35
+
36
+ return sitename;
37
+ }
38
+
39
+ function generateRandomId() {
40
+ return Math.random().toString(16).substring(2);
41
+ }
42
+
43
+ export const spec = {
44
+ code: BIDDER_CODE,
45
+
46
+ isBidRequestValid: function(bid) {
47
+ return !!bid.params.placementId;
48
+ },
49
+
50
+ buildRequests: function(validBidRequests, bidderRequest) {
51
+ let referrer = '';
52
+
53
+ if (bidderRequest && bidderRequest.refererInfo) {
54
+ referrer = bidderRequest.refererInfo.referer;
55
+ }
56
+
57
+ const payload = {
58
+ places: _map(validBidRequests, buildPlacement),
59
+ site: {
60
+ sitename: getSiteName(referrer),
61
+ page: referrer
62
+ },
63
+ settings: {
64
+ currency: DEFAULT_CURRENCY,
65
+ windowSize: {
66
+ width: window.screen.width,
67
+ height: window.screen.height
68
+ }
69
+ }
70
+ };
71
+
72
+ return {
73
+ method: 'POST',
74
+ url: BIDDER_URL,
75
+ data: payload,
76
+ };
77
+ },
78
+
79
+ interpretResponse: function(serverResponse, bidRequest) {
80
+ let { body } = serverResponse;
81
+
82
+ if (body.bids) {
83
+ return _map(body.bids, (bid) => {
84
+ let bidResponse = {
85
+ requestId: bid.id,
86
+ cpm: bid.price,
87
+ width: bid.size.width,
88
+ height: bid.size.height,
89
+ ttl: bid.ttl || DEFAULT_TTL,
90
+ currency: bid.currency || DEFAULT_CURRENCY,
91
+ creativeId: bid.creativeId || generateRandomId(),
92
+ netRevenue: true,
93
+ meta: {
94
+ advertiserDomains: bid.adomain && bid.adomain.length > 0 ? bid.adomain : [],
95
+ }
96
+ }
97
+
98
+ if (bid.adm) {
99
+ bidResponse.ad = bid.adm;
100
+ } else {
101
+ bidResponse.adUrl = bid.displayUrl;
102
+ }
103
+
104
+ return bidResponse;
105
+ });
106
+ }
107
+
108
+ return [];
109
+ }
110
+ }
111
+
112
+ registerBidder(spec);