prebid.js 7.10.0 → 7.13.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 (366) hide show
  1. package/.github/PULL_REQUEST_TEMPLATE.md +16 -10
  2. package/.github/codeql/codeql-config.yml +4 -0
  3. package/.github/workflows/codeql-analysis.yml +73 -0
  4. package/.github/workflows/issue_tracker.yml +1 -1
  5. package/README.md +0 -2
  6. package/babelConfig.js +10 -4
  7. package/dist/33acrossBidAdapter.js +1 -1
  8. package/dist/acuityAdsBidAdapter.js +1 -0
  9. package/dist/adagioBidAdapter.js +1 -1
  10. package/dist/adbookpspBidAdapter.js +1 -1
  11. package/dist/adgenerationBidAdapter.js +1 -1
  12. package/dist/adkernelBidAdapter.js +1 -1
  13. package/dist/adrelevantisBidAdapter.js +1 -1
  14. package/dist/adriverBidAdapter.js +1 -1
  15. package/dist/adriverIdSystem.js +1 -1
  16. package/dist/adtelligentBidAdapter.js +1 -1
  17. package/dist/adtrgtmeBidAdapter.js +1 -0
  18. package/dist/adxcgBidAdapter.js +1 -1
  19. package/dist/adyoulikeBidAdapter.js +1 -1
  20. package/dist/ajaBidAdapter.js +1 -1
  21. package/dist/alkimiBidAdapter.js +1 -1
  22. package/dist/amxBidAdapter.js +1 -1
  23. package/dist/amxIdSystem.js +1 -1
  24. package/dist/aniviewBidAdapter.js +1 -1
  25. package/dist/aolBidAdapter.js +1 -1
  26. package/dist/appierAnalyticsAdapter.js +1 -1
  27. package/dist/appnexusBidAdapter.js +1 -1
  28. package/dist/asoBidAdapter.js +1 -1
  29. package/dist/audiencerunBidAdapter.js +1 -1
  30. package/dist/axonixBidAdapter.js +1 -1
  31. package/dist/beopBidAdapter.js +1 -1
  32. package/dist/betweenBidAdapter.js +1 -1
  33. package/dist/bidglassBidAdapter.js +1 -1
  34. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  35. package/dist/big-richmediaBidAdapter.js +1 -1
  36. package/dist/bluebillywigBidAdapter.js +1 -1
  37. package/dist/brandmetricsRtdProvider.js +1 -1
  38. package/dist/bridgewellBidAdapter.js +1 -1
  39. package/dist/brightMountainMediaBidAdapter.js +1 -1
  40. package/dist/browsiRtdProvider.js +1 -1
  41. package/dist/cleanioRtdProvider.js +1 -1
  42. package/dist/concertBidAdapter.js +1 -1
  43. package/dist/connectadBidAdapter.js +1 -1
  44. package/dist/consentManagement.js +1 -1
  45. package/dist/consentManagementUsp.js +1 -1
  46. package/dist/consumableBidAdapter.js +1 -1
  47. package/dist/conversantBidAdapter.js +1 -1
  48. package/dist/cpmstarBidAdapter.js +1 -1
  49. package/dist/craftBidAdapter.js +1 -1
  50. package/dist/criteoBidAdapter.js +1 -1
  51. package/dist/currency.js +1 -1
  52. package/dist/datawrkzBidAdapter.js +1 -0
  53. package/dist/debugging-standalone.js +1 -1
  54. package/dist/dfpAdServerVideo.js +1 -1
  55. package/dist/dgkeywordRtdProvider.js +1 -1
  56. package/dist/displayioBidAdapter.js +1 -3
  57. package/dist/dspxBidAdapter.js +1 -1
  58. package/dist/enrichmentFpdModule.js +1 -1
  59. package/dist/eplanningBidAdapter.js +1 -1
  60. package/dist/finativeBidAdapter.js +1 -1
  61. package/dist/glimpseBidAdapter.js +1 -1
  62. package/dist/gmosspBidAdapter.js +1 -1
  63. package/dist/goldbachBidAdapter.js +1 -1
  64. package/dist/gridBidAdapter.js +1 -1
  65. package/dist/gridNMBidAdapter.js +1 -1
  66. package/dist/gumgumBidAdapter.js +1 -1
  67. package/dist/h12mediaBidAdapter.js +1 -1
  68. package/dist/id5IdSystem.js +1 -1
  69. package/dist/imRtdProvider.js +1 -1
  70. package/dist/impactifyBidAdapter.js +1 -1
  71. package/dist/improvedigitalBidAdapter.js +1 -1
  72. package/dist/inmarBidAdapter.js +1 -1
  73. package/dist/insticatorBidAdapter.js +1 -1
  74. package/dist/ixBidAdapter.js +1 -1
  75. package/dist/jixieBidAdapter.js +1 -1
  76. package/dist/justpremiumBidAdapter.js +1 -1
  77. package/dist/kargoBidAdapter.js +1 -1
  78. package/dist/konduitAnalyticsAdapter.js +1 -1
  79. package/dist/kueezBidAdapter.js +1 -1
  80. package/dist/lassoBidAdapter.js +1 -1
  81. package/dist/lifestreetBidAdapter.js +1 -0
  82. package/dist/limelightDigitalBidAdapter.js +1 -1
  83. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  84. package/dist/logicadBidAdapter.js +1 -1
  85. package/dist/loglyliftBidAdapter.js +1 -1
  86. package/dist/mabidderBidAdapter.js +1 -0
  87. package/dist/malltvAnalyticsAdapter.js +1 -1
  88. package/dist/marsmediaBidAdapter.js +1 -1
  89. package/dist/mediafuseBidAdapter.js +1 -1
  90. package/dist/mediagoBidAdapter.js +1 -0
  91. package/dist/mediakeysBidAdapter.js +1 -1
  92. package/dist/mediasquareBidAdapter.js +1 -1
  93. package/dist/mgidBidAdapter.js +1 -1
  94. package/dist/minutemediaBidAdapter.js +1 -1
  95. package/dist/nextMillenniumBidAdapter.js +1 -1
  96. package/dist/not-for-prod/prebid.js +153 -147
  97. package/dist/oguryBidAdapter.js +1 -1
  98. package/dist/oneKeyIdSystem.js +1 -0
  99. package/dist/oneKeyRtdProvider.js +1 -0
  100. package/dist/onetagBidAdapter.js +1 -1
  101. package/dist/ooloAnalyticsAdapter.js +1 -1
  102. package/dist/openxAnalyticsAdapter.js +1 -1
  103. package/dist/outbrainBidAdapter.js +1 -1
  104. package/dist/parrableIdSystem.js +1 -1
  105. package/dist/permutiveRtdProvider.js +1 -1
  106. package/dist/pixfutureBidAdapter.js +1 -1
  107. package/dist/prebid-core.js +2 -2
  108. package/dist/publinkIdSystem.js +1 -1
  109. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  110. package/dist/pubmaticBidAdapter.js +1 -1
  111. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  112. package/dist/pxyzBidAdapter.js +1 -1
  113. package/dist/quantcastBidAdapter.js +1 -1
  114. package/dist/rasBidAdapter.js +1 -1
  115. package/dist/readpeakBidAdapter.js +1 -1
  116. package/dist/relaidoBidAdapter.js +1 -1
  117. package/dist/rhythmoneBidAdapter.js +1 -1
  118. package/dist/riseBidAdapter.js +1 -1
  119. package/dist/rtbhouseBidAdapter.js +1 -1
  120. package/dist/rubiconAnalyticsAdapter.js +1 -1
  121. package/dist/rubiconBidAdapter.js +1 -1
  122. package/dist/seedingAllianceBidAdapter.js +1 -1
  123. package/dist/seedtagBidAdapter.js +1 -1
  124. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  125. package/dist/sharethroughBidAdapter.js +1 -1
  126. package/dist/shinezBidAdapter.js +1 -1
  127. package/dist/smaatoBidAdapter.js +1 -1
  128. package/dist/smartadserverBidAdapter.js +1 -1
  129. package/dist/smartxBidAdapter.js +1 -1
  130. package/dist/smilewantedBidAdapter.js +1 -1
  131. package/dist/sonobiBidAdapter.js +1 -1
  132. package/dist/sovrnAnalyticsAdapter.js +1 -1
  133. package/dist/sovrnBidAdapter.js +1 -1
  134. package/dist/sspBCBidAdapter.js +1 -1
  135. package/dist/sublimeBidAdapter.js +1 -1
  136. package/dist/synacormediaBidAdapter.js +1 -1
  137. package/dist/tappxBidAdapter.js +1 -1
  138. package/dist/targetVideoBidAdapter.js +1 -1
  139. package/dist/teadsBidAdapter.js +1 -1
  140. package/dist/trionBidAdapter.js +1 -1
  141. package/dist/tripleliftBidAdapter.js +1 -1
  142. package/dist/trustpidSystem.js +1 -1
  143. package/dist/ttdBidAdapter.js +1 -1
  144. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  145. package/dist/underdogmediaBidAdapter.js +1 -1
  146. package/dist/undertoneBidAdapter.js +1 -1
  147. package/dist/userId.js +1 -1
  148. package/dist/vidazooBidAdapter.js +1 -1
  149. package/dist/videobyteBidAdapter.js +1 -1
  150. package/dist/viewability.js +1 -1
  151. package/dist/visxBidAdapter.js +1 -1
  152. package/dist/vuukleBidAdapter.js +1 -1
  153. package/dist/widespaceBidAdapter.js +1 -1
  154. package/dist/winrBidAdapter.js +1 -1
  155. package/dist/yahoosspBidAdapter.js +1 -1
  156. package/dist/yieldmoBidAdapter.js +1 -1
  157. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  158. package/dist/zeta_global_sspBidAdapter.js +1 -1
  159. package/integrationExamples/gpt/permutiveRtdProvider_example.html +1 -1
  160. package/karma.conf.maker.js +2 -13
  161. package/modules/.submodules.json +2 -0
  162. package/modules/acuityAdsBidAdapter.js +207 -0
  163. package/modules/acuityAdsBidAdapter.md +79 -0
  164. package/modules/adagioBidAdapter.js +2 -3
  165. package/modules/adgenerationBidAdapter.js +2 -2
  166. package/modules/adkernelBidAdapter.js +28 -12
  167. package/modules/admixerBidAdapter.js +1 -1
  168. package/modules/adnowBidAdapter.js +1 -1
  169. package/modules/adpod.js +1 -1
  170. package/modules/adrelevantisBidAdapter.js +2 -2
  171. package/modules/adriverBidAdapter.js +5 -12
  172. package/modules/adriverIdSystem.js +2 -1
  173. package/modules/adtargetBidAdapter.js +1 -1
  174. package/modules/adtelligentBidAdapter.js +6 -2
  175. package/modules/adtrgtmeBidAdapter.js +333 -0
  176. package/modules/adtrgtmeBidAdapter.md +69 -0
  177. package/modules/adtrueBidAdapter.js +1 -1
  178. package/modules/adxpremiumAnalyticsAdapter.js +1 -1
  179. package/modules/adyoulikeBidAdapter.js +1 -1
  180. package/modules/alkimiBidAdapter.js +2 -1
  181. package/modules/aniviewBidAdapter.js +1 -1
  182. package/modules/appnexusBidAdapter.js +13 -93
  183. package/modules/apstreamBidAdapter.js +2 -2
  184. package/modules/beopBidAdapter.js +4 -4
  185. package/modules/betweenBidAdapter.js +4 -4
  186. package/modules/bidwatchAnalyticsAdapter.js +112 -59
  187. package/modules/bizzclickBidAdapter.js +1 -1
  188. package/modules/brightMountainMediaBidAdapter.js +1 -1
  189. package/modules/browsiRtdProvider.js +24 -10
  190. package/modules/cleanmedianetBidAdapter.js +1 -1
  191. package/modules/consentManagement.js +1 -1
  192. package/modules/consentManagementUsp.js +1 -1
  193. package/modules/consumableBidAdapter.js +43 -3
  194. package/modules/cpmstarBidAdapter.js +23 -13
  195. package/modules/criteoBidAdapter.js +19 -13
  196. package/modules/currency.js +1 -0
  197. package/modules/cwireBidAdapter.js +1 -1
  198. package/modules/datablocksBidAdapter.js +1 -1
  199. package/modules/datawrkzBidAdapter.js +633 -0
  200. package/modules/datawrkzBidAdapter.md +160 -0
  201. package/modules/dfpAdServerVideo.js +2 -2
  202. package/modules/dgkeywordRtdProvider.js +10 -1
  203. package/modules/displayioBidAdapter.js +92 -97
  204. package/modules/dspxBidAdapter.js +1 -1
  205. package/modules/e_volutionBidAdapter.js +3 -3
  206. package/modules/ebdrBidAdapter.js +1 -1
  207. package/modules/emx_digitalBidAdapter.js +1 -1
  208. package/modules/enrichmentFpdModule.js +11 -0
  209. package/modules/fabrickIdSystem.js +2 -2
  210. package/modules/gamoshiBidAdapter.js +1 -1
  211. package/modules/getintentBidAdapter.js +1 -1
  212. package/modules/gjirafaBidAdapter.js +2 -2
  213. package/modules/goldbachBidAdapter.js +8 -8
  214. package/modules/gothamadsBidAdapter.js +2 -2
  215. package/modules/gumgumBidAdapter.js +3 -3
  216. package/modules/h12mediaBidAdapter.js +1 -1
  217. package/modules/id5AnalyticsAdapter.js +1 -1
  218. package/modules/id5IdSystem.js +160 -111
  219. package/modules/id5IdSystem.md +16 -14
  220. package/modules/imRtdProvider.js +20 -7
  221. package/modules/imRtdProvider.md +3 -1
  222. package/modules/impactifyBidAdapter.js +1 -1
  223. package/modules/improvedigitalBidAdapter.js +50 -28
  224. package/modules/inskinBidAdapter.js +1 -1
  225. package/modules/insticatorBidAdapter.js +1 -1
  226. package/modules/integr8BidAdapter.js +2 -2
  227. package/modules/intentIqIdSystem.js +2 -2
  228. package/modules/interactiveOffersBidAdapter.js +1 -1
  229. package/modules/iqmBidAdapter.js +1 -1
  230. package/modules/ixBidAdapter.js +21 -328
  231. package/modules/ixBidAdapter.md +1 -19
  232. package/modules/kargoBidAdapter.js +4 -5
  233. package/modules/krushmediaBidAdapter.js +2 -2
  234. package/modules/lassoBidAdapter.js +3 -3
  235. package/modules/lifestreetBidAdapter.js +143 -0
  236. package/modules/limelightDigitalBidAdapter.js +2 -1
  237. package/modules/livewrappedAnalyticsAdapter.js +3 -3
  238. package/modules/lkqdBidAdapter.js +3 -3
  239. package/modules/loganBidAdapter.js +2 -2
  240. package/modules/luponmediaBidAdapter.js +3 -3
  241. package/modules/mabidderBidAdapter.js +60 -0
  242. package/modules/mabidderBidAdapter.md +31 -0
  243. package/modules/malltvBidAdapter.js +2 -2
  244. package/modules/mediagoBidAdapter.js +462 -0
  245. package/modules/mediagoBidAdapter.md +34 -0
  246. package/modules/mediakeysBidAdapter.js +2 -2
  247. package/modules/mgidBidAdapter.js +2 -2
  248. package/modules/nextMillenniumBidAdapter.js +25 -6
  249. package/modules/nobidBidAdapter.js +2 -2
  250. package/modules/novatiqIdSystem.js +1 -1
  251. package/modules/oneKeyIdSystem.js +78 -0
  252. package/modules/oneKeyIdSystem.md +109 -0
  253. package/modules/oneKeyRtdProvider.js +98 -0
  254. package/modules/oneKeyRtdProvider.md +127 -0
  255. package/modules/open8BidAdapter.js +1 -1
  256. package/modules/openwebBidAdapter.js +1 -1
  257. package/modules/openxAnalyticsAdapter.js +5 -744
  258. package/modules/openxAnalyticsAdapter.md +4 -0
  259. package/modules/openxBidAdapter.js +3 -3
  260. package/modules/permutiveRtdProvider.js +55 -8
  261. package/modules/pixfutureBidAdapter.js +1 -1
  262. package/modules/prebidmanagerAnalyticsAdapter.js +1 -1
  263. package/modules/priceFloors.js +1 -1
  264. package/modules/pubmaticAnalyticsAdapter.js +1 -1
  265. package/modules/pubmaticBidAdapter.js +19 -1
  266. package/modules/pubwiseAnalyticsAdapter.js +1 -1
  267. package/modules/pubwiseBidAdapter.js +3 -3
  268. package/modules/pubxBidAdapter.js +1 -1
  269. package/modules/pubxaiAnalyticsAdapter.js +2 -2
  270. package/modules/quantcastIdSystem.js +1 -1
  271. package/modules/radsBidAdapter.js +1 -1
  272. package/modules/rasBidAdapter.js +8 -0
  273. package/modules/rasBidAdapter.md +14 -13
  274. package/modules/revcontentBidAdapter.js +1 -1
  275. package/modules/richaudienceBidAdapter.js +1 -1
  276. package/modules/rtbhouseBidAdapter.js +25 -1
  277. package/modules/schain.js +1 -1
  278. package/modules/seedtagBidAdapter.md +25 -56
  279. package/modules/showheroes-bsBidAdapter.js +1 -1
  280. package/modules/sizeMappingV2.js +1 -1
  281. package/modules/smaatoBidAdapter.js +2 -2
  282. package/modules/sonobiAnalyticsAdapter.js +1 -1
  283. package/modules/sonobiBidAdapter.js +4 -3
  284. package/modules/staqAnalyticsAdapter.js +1 -1
  285. package/modules/tappxBidAdapter.js +11 -2
  286. package/modules/targetVideoBidAdapter.js +1 -1
  287. package/modules/theAdxBidAdapter.js +2 -2
  288. package/modules/tpmnBidAdapter.js +1 -1
  289. package/modules/trionBidAdapter.js +2 -2
  290. package/modules/tripleliftBidAdapter.js +20 -1
  291. package/modules/trustpidSystem.js +6 -42
  292. package/modules/trustpidSystem.md +10 -10
  293. package/modules/underdogmediaBidAdapter.js +1 -1
  294. package/modules/userId/eids.js +26 -0
  295. package/modules/userId/userId.md +2 -2
  296. package/modules/vdoaiBidAdapter.js +1 -1
  297. package/modules/vidazooBidAdapter.js +7 -5
  298. package/modules/vidoomyBidAdapter.js +1 -1
  299. package/modules/viewability.js +14 -14
  300. package/modules/winrBidAdapter.js +1 -1
  301. package/modules/yahoosspBidAdapter.js +3 -3
  302. package/modules/yandexBidAdapter.js +1 -1
  303. package/modules/yieldmoBidAdapter.js +3 -3
  304. package/modules/yieldoneBidAdapter.js +2 -2
  305. package/modules/zeta_global_sspBidAdapter.js +24 -21
  306. package/package.json +3 -3
  307. package/src/Renderer.js +1 -1
  308. package/src/adloader.js +2 -1
  309. package/src/adserver.js +0 -56
  310. package/src/auction.js +60 -16
  311. package/src/bidfactory.js +1 -1
  312. package/src/native.js +75 -60
  313. package/src/refererDetection.js +12 -1
  314. package/src/sizeMapping.js +5 -7
  315. package/src/targeting.js +1 -1
  316. package/src/userSync.js +1 -1
  317. package/src/utils/promise.js +3 -1
  318. package/src/utils.js +27 -0
  319. package/src/video.js +5 -4
  320. package/src/videoCache.js +8 -2
  321. package/test/pages/instream.html +2 -2
  322. package/test/spec/modules/acuityAdsBidAdapter_spec.js +398 -0
  323. package/test/spec/modules/adagioBidAdapter_spec.js +2 -0
  324. package/test/spec/modules/adkernelBidAdapter_spec.js +11 -2
  325. package/test/spec/modules/adriverBidAdapter_spec.js +6 -13
  326. package/test/spec/modules/adriverIdSystem_spec.js +3 -8
  327. package/test/spec/modules/adtelligentBidAdapter_spec.js +2 -0
  328. package/test/spec/modules/adtrgtmeBidAdapter_spec.js +802 -0
  329. package/test/spec/modules/alkimiBidAdapter_spec.js +2 -1
  330. package/test/spec/modules/appnexusBidAdapter_spec.js +1 -0
  331. package/test/spec/modules/beopBidAdapter_spec.js +11 -0
  332. package/test/spec/modules/betweenBidAdapter_spec.js +17 -0
  333. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +28 -12
  334. package/test/spec/modules/big-richmediaBidAdapter_spec.js +1 -0
  335. package/test/spec/modules/browsiRtdProvider_spec.js +40 -1
  336. package/test/spec/modules/consumableBidAdapter_spec.js +158 -0
  337. package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
  338. package/test/spec/modules/criteoBidAdapter_spec.js +35 -26
  339. package/test/spec/modules/currency_spec.js +22 -0
  340. package/test/spec/modules/datawrkzBidAdapter_spec.js +656 -0
  341. package/test/spec/modules/dgkeywordRtdProvider_spec.js +1 -1
  342. package/test/spec/modules/displayioBidAdapter_spec.js +16 -52
  343. package/test/spec/modules/enrichmentFpdModule_spec.js +16 -1
  344. package/test/spec/modules/fpdModule_spec.js +2 -1
  345. package/test/spec/modules/id5IdSystem_spec.js +529 -172
  346. package/test/spec/modules/imRtdProvider_spec.js +10 -5
  347. package/test/spec/modules/improvedigitalBidAdapter_spec.js +9 -13
  348. package/test/spec/modules/ixBidAdapter_spec.js +216 -123
  349. package/test/spec/modules/kargoBidAdapter_spec.js +11 -2
  350. package/test/spec/modules/lifestreetBidAdapter_spec.js +232 -0
  351. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +59 -7
  352. package/test/spec/modules/mabidderBidAdapter_spec.js +125 -0
  353. package/test/spec/modules/mediagoBidAdapter_spec.js +97 -0
  354. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +2 -7
  355. package/test/spec/modules/oneKeyIdSystem_spec.js +107 -0
  356. package/test/spec/modules/oneKeyRtdProvider_spec.js +152 -0
  357. package/test/spec/modules/openxAnalyticsAdapter_spec.js +6 -638
  358. package/test/spec/modules/permutiveRtdProvider_spec.js +152 -2
  359. package/test/spec/modules/pubmaticBidAdapter_spec.js +69 -4
  360. package/test/spec/modules/rasBidAdapter_spec.js +2 -0
  361. package/test/spec/modules/tripleliftBidAdapter_spec.js +18 -0
  362. package/test/spec/modules/trustpidSystem_spec.js +27 -45
  363. package/test/spec/modules/vidazooBidAdapter_spec.js +36 -23
  364. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +59 -0
  365. package/test/spec/native_spec.js +257 -2
  366. package/test/spec/videoCache_spec.js +37 -7
@@ -145,7 +145,7 @@ function lookupIabConsent({onSuccess, onError}) {
145
145
  if (json[cmpDataPkgName] && json[cmpDataPkgName].callId) {
146
146
  const payload = json[cmpDataPkgName];
147
147
  // TODO - clean up this logic (move listeners?); we have duplicate messages responses because 2 eventlisteners are active from the 2 cmp requests running in parallel
148
- if (typeof cmpCallbacks[payload.callId] !== 'undefined') {
148
+ if (cmpCallbacks.hasOwnProperty(payload.callId)) {
149
149
  cmpCallbacks[payload.callId](payload.returnValue, payload.success);
150
150
  }
151
151
  }
@@ -150,7 +150,7 @@ function lookupUspConsent({onSuccess, onError}) {
150
150
  function readPostMessageResponse(event) {
151
151
  const res = event && event.data && event.data.__uspapiReturn;
152
152
  if (res && res.callId) {
153
- if (typeof uspapiCallbacks[res.callId] !== 'undefined') {
153
+ if (uspapiCallbacks.hasOwnProperty(res.callId)) {
154
154
  uspapiCallbacks[res.callId](res.returnValue, res.success);
155
155
  delete uspapiCallbacks[res.callId];
156
156
  }
@@ -1,6 +1,7 @@
1
- import { logWarn, createTrackPixelHtml, deepAccess, isArray, deepSetValue } from '../src/utils.js';
1
+ import { logWarn, deepAccess, isArray, deepSetValue, isFn, isPlainObject } from '../src/utils.js';
2
2
  import {config} from '../src/config.js';
3
3
  import { registerBidder } from '../src/adapters/bidderFactory.js';
4
+ import { BANNER, VIDEO } from '../src/mediaTypes.js';
4
5
 
5
6
  const BIDDER_CODE = 'consumable';
6
7
 
@@ -11,6 +12,7 @@ let bidder = 'consumable';
11
12
 
12
13
  export const spec = {
13
14
  code: BIDDER_CODE,
15
+ supportedMediaTypes: [BANNER, VIDEO],
14
16
 
15
17
  /**
16
18
  * Determines whether or not the given bid request is valid.
@@ -82,6 +84,12 @@ export const spec = {
82
84
  adTypes: bid.adTypes || getSize(sizes)
83
85
  }, bid.params);
84
86
 
87
+ placement.bidfloor = getBidFloor(bid, sizes);
88
+
89
+ if (bid.mediaTypes.video && bid.mediaTypes.video.playerSize) {
90
+ placement.video = bid.mediaTypes.video;
91
+ }
92
+
85
93
  if (placement.networkId && placement.siteId && placement.unitId && placement.unitName) {
86
94
  data.placements.push(placement);
87
95
  }
@@ -155,6 +163,13 @@ export const spec = {
155
163
 
156
164
  if (decision.mediaType) {
157
165
  bid.meta.mediaType = decision.mediaType;
166
+
167
+ if (decision.mediaType === 'video') {
168
+ bid.mediaType = 'video';
169
+ bid.vastUrl = decision.vastUrl || undefined;
170
+ bid.vastXml = decision.vastXml || undefined;
171
+ bid.videoCacheKey = decision.uuid || undefined;
172
+ }
158
173
  }
159
174
 
160
175
  bidResponses.push(bid);
@@ -240,8 +255,13 @@ function getSize(sizes) {
240
255
  }
241
256
 
242
257
  function retrieveAd(decision, unitId, unitName) {
243
- let ad = decision.contents && decision.contents[0] && decision.contents[0].body + createTrackPixelHtml(decision.impressionUrl);
244
-
258
+ let ad;
259
+ if (decision.contents && decision.contents[0]) {
260
+ ad = decision.contents[0].body;
261
+ }
262
+ if (decision.vastXml) {
263
+ ad = decision.vastXml;
264
+ }
245
265
  return ad;
246
266
  }
247
267
 
@@ -254,4 +274,24 @@ function handleEids(data, validBidRequests) {
254
274
  }
255
275
  }
256
276
 
277
+ function getBidFloor(bid, sizes) {
278
+ if (!isFn(bid.getFloor)) {
279
+ return bid.params.bidFloor ? bid.params.bidFloor : null;
280
+ }
281
+
282
+ let floor;
283
+
284
+ let floorInfo = bid.getFloor({
285
+ currency: 'USD',
286
+ mediaType: bid.mediaTypes.video ? 'video' : 'banner',
287
+ size: sizes.length === 1 ? sizes[0] : '*'
288
+ });
289
+
290
+ if (isPlainObject(floorInfo) && floorInfo.currency === 'USD' && !isNaN(parseFloat(floorInfo.floor))) {
291
+ floor = parseFloat(floorInfo.floor);
292
+ }
293
+
294
+ return floor;
295
+ }
296
+
257
297
  registerBidder(spec);
@@ -1,4 +1,5 @@
1
- import { deepAccess, getBidIdParameter, logWarn, logError } from '../src/utils.js';
1
+
2
+ import * as utils from '../src/utils.js';
2
3
  import { registerBidder } from '../src/adapters/bidderFactory.js';
3
4
  import { VIDEO, BANNER } from '../src/mediaTypes.js';
4
5
  import { config } from '../src/config.js';
@@ -25,11 +26,11 @@ export const spec = {
25
26
 
26
27
  getMediaType: function (bidRequest) {
27
28
  if (bidRequest == null) return BANNER;
28
- return !deepAccess(bidRequest, 'mediaTypes.video') ? BANNER : VIDEO;
29
+ return !utils.deepAccess(bidRequest, 'mediaTypes.video') ? BANNER : VIDEO;
29
30
  },
30
31
 
31
32
  getPlayerSize: function (bidRequest) {
32
- var playerSize = deepAccess(bidRequest, 'mediaTypes.video.playerSize');
33
+ var playerSize = utils.deepAccess(bidRequest, 'mediaTypes.video.playerSize');
33
34
  if (playerSize == null) return [640, 440];
34
35
  if (playerSize[0] != null) playerSize = playerSize[0];
35
36
  if (playerSize == null || playerSize[0] == null || playerSize[1] == null) return [640, 440];
@@ -46,15 +47,14 @@ export const spec = {
46
47
 
47
48
  for (var i = 0; i < validBidRequests.length; i++) {
48
49
  var bidRequest = validBidRequests[i];
49
- // TODO: is 'page' the right value here?
50
- var referer = encodeURIComponent(bidderRequest.refererInfo.page);
51
- var e = getBidIdParameter('endpoint', bidRequest.params);
50
+ var referer = encodeURIComponent(bidderRequest.refererInfo.referer);
51
+ var e = utils.getBidIdParameter('endpoint', bidRequest.params);
52
52
  var ENDPOINT = e == 'dev' ? ENDPOINT_DEV : e == 'staging' ? ENDPOINT_STAGING : ENDPOINT_PRODUCTION;
53
53
  var mediaType = spec.getMediaType(bidRequest);
54
54
  var playerSize = spec.getPlayerSize(bidRequest);
55
55
  var videoArgs = '&fv=0' + (playerSize ? ('&w=' + playerSize[0] + '&h=' + playerSize[1]) : '');
56
56
  var url = ENDPOINT + '?media=' + mediaType + (mediaType == VIDEO ? videoArgs : '') +
57
- '&json=c_b&mv=1&poolid=' + getBidIdParameter('placementId', bidRequest.params) +
57
+ '&json=c_b&mv=1&poolid=' + utils.getBidIdParameter('placementId', bidRequest.params) +
58
58
  '&reachedTop=' + encodeURIComponent(bidderRequest.refererInfo.reachedTop) +
59
59
  '&requestid=' + bidRequest.bidId +
60
60
  '&referer=' + encodeURIComponent(referer);
@@ -73,7 +73,7 @@ export const spec = {
73
73
  fixedEncodeURIComponent(node.name || '') + ',' +
74
74
  fixedEncodeURIComponent(node.domain || '');
75
75
  }
76
- url += '&schain=' + schainString
76
+ url += '&schain=' + schainString;
77
77
  }
78
78
 
79
79
  if (bidderRequest.gdprConsent) {
@@ -93,10 +93,20 @@ export const spec = {
93
93
  url += '&tfcd=' + (config.getConfig('coppa') ? 1 : 0);
94
94
  }
95
95
 
96
+ let body = {};
97
+ let adUnitCode = bidRequest.adUnitCode;
98
+ if (adUnitCode) {
99
+ body.adUnitCode = adUnitCode;
100
+ }
101
+ if (mediaType == VIDEO) {
102
+ body.video = utils.deepAccess(bidRequest, 'mediaTypes.video');
103
+ }
104
+
96
105
  requests.push({
97
- method: 'GET',
106
+ method: 'POST',
98
107
  url: url,
99
108
  bidRequest: bidRequest,
109
+ data: body
100
110
  });
101
111
  }
102
112
 
@@ -117,13 +127,13 @@ export const spec = {
117
127
  var raw = serverResponse.body[i];
118
128
  var rawBid = raw.creatives[0];
119
129
  if (!rawBid) {
120
- logWarn('cpmstarBidAdapter: server response failed check');
130
+ utils.logWarn('cpmstarBidAdapter: server response failed check');
121
131
  return;
122
132
  }
123
133
  var cpm = (parseFloat(rawBid.cpm) || 0);
124
134
 
125
135
  if (!cpm) {
126
- logWarn('cpmstarBidAdapter: server response failed check. Missing cpm')
136
+ utils.logWarn('cpmstarBidAdapter: server response failed check. Missing cpm');
127
137
  return;
128
138
  }
129
139
 
@@ -142,7 +152,7 @@ export const spec = {
142
152
  };
143
153
 
144
154
  if (rawBid.hasOwnProperty('dealId')) {
145
- bidResponse.dealId = rawBid.dealId
155
+ bidResponse.dealId = rawBid.dealId;
146
156
  }
147
157
 
148
158
  if (mediaType == BANNER && rawBid.code) {
@@ -156,7 +166,7 @@ export const spec = {
156
166
  bidResponse.mediaType = VIDEO;
157
167
  bidResponse.vastXml = rawBid.creativemacros.HTML5VID_VASTSTRING;
158
168
  } else {
159
- return logError('bad response', rawBid);
169
+ return utils.logError('bad response', rawBid);
160
170
  }
161
171
 
162
172
  bidResponses.push(bidResponse);
@@ -469,15 +469,20 @@ function buildCdbRequest(context, bidRequests, bidderRequest) {
469
469
  if (bidRequest.params.publisherSubId) {
470
470
  slot.publishersubid = bidRequest.params.publisherSubId;
471
471
  }
472
- if (bidRequest.params.nativeCallback || deepAccess(bidRequest, `mediaTypes.${NATIVE}`)) {
472
+
473
+ if (bidRequest.params.nativeCallback || hasNativeMediaType(bidRequest)) {
473
474
  slot.native = true;
474
475
  if (!checkNativeSendId(bidRequest)) {
475
476
  logWarn(LOG_PREFIX + 'all native assets containing URL should be sent as placeholders with sendId(icon, image, clickUrl, displayUrl, privacyLink, privacyIcon)');
476
477
  }
477
- slot.sizes = parseSizes(deepAccess(bidRequest, 'mediaTypes.banner.sizes'), parseNativeSize);
478
- } else {
478
+ }
479
+
480
+ if (hasBannerMediaType(bidRequest)) {
479
481
  slot.sizes = parseSizes(deepAccess(bidRequest, 'mediaTypes.banner.sizes'), parseSize);
482
+ } else {
483
+ slot.sizes = [];
480
484
  }
485
+
481
486
  if (hasVideoMediaType(bidRequest)) {
482
487
  const video = {
483
488
  playersizes: parseSizes(deepAccess(bidRequest, 'mediaTypes.video.playerSize'), parseSize),
@@ -554,17 +559,18 @@ function parseSize(size) {
554
559
  return size[0] + 'x' + size[1];
555
560
  }
556
561
 
557
- function parseNativeSize(size) {
558
- if (size[0] === undefined && size[1] === undefined) {
559
- return '2x2';
560
- }
561
- return size[0] + 'x' + size[1];
562
- }
563
-
564
562
  function hasVideoMediaType(bidRequest) {
565
563
  return deepAccess(bidRequest, 'mediaTypes.video') !== undefined;
566
564
  }
567
565
 
566
+ function hasBannerMediaType(bidRequest) {
567
+ return deepAccess(bidRequest, 'mediaTypes.banner') !== undefined;
568
+ }
569
+
570
+ function hasNativeMediaType(bidRequest) {
571
+ return deepAccess(bidRequest, 'mediaTypes.native') !== undefined;
572
+ }
573
+
568
574
  function hasValidVideoMediaType(bidRequest) {
569
575
  let isValid = true;
570
576
 
@@ -646,18 +652,18 @@ function enrichSlotWithFloors(slot, bidRequest) {
646
652
  if (bidRequest.mediaTypes?.banner) {
647
653
  slotFloors.banner = {};
648
654
  const bannerSizes = parseSizes(deepAccess(bidRequest, 'mediaTypes.banner.sizes'))
649
- bannerSizes.forEach(bannerSize => slotFloors.banner[parseSize(bannerSize).toString()] = bidRequest.getFloor({size: bannerSize, mediaType: BANNER}));
655
+ bannerSizes.forEach(bannerSize => slotFloors.banner[parseSize(bannerSize).toString()] = bidRequest.getFloor({ size: bannerSize, mediaType: BANNER }));
650
656
  }
651
657
 
652
658
  if (bidRequest.mediaTypes?.video) {
653
659
  slotFloors.video = {};
654
660
  const videoSizes = parseSizes(deepAccess(bidRequest, 'mediaTypes.video.playerSize'))
655
- videoSizes.forEach(videoSize => slotFloors.video[parseSize(videoSize).toString()] = bidRequest.getFloor({size: videoSize, mediaType: VIDEO}));
661
+ videoSizes.forEach(videoSize => slotFloors.video[parseSize(videoSize).toString()] = bidRequest.getFloor({ size: videoSize, mediaType: VIDEO }));
656
662
  }
657
663
 
658
664
  if (bidRequest.mediaTypes?.native) {
659
665
  slotFloors.native = {};
660
- slotFloors.native['*'] = bidRequest.getFloor({size: '*', mediaType: NATIVE});
666
+ slotFloors.native['*'] = bidRequest.getFloor({ size: '*', mediaType: NATIVE });
661
667
  }
662
668
 
663
669
  if (Object.keys(slotFloors).length > 0) {
@@ -146,6 +146,7 @@ function initCurrency(url) {
146
146
  try {
147
147
  currencyRates = JSON.parse(response);
148
148
  logInfo('currencyRates set to ' + JSON.stringify(currencyRates));
149
+ conversionCache = {};
149
150
  currencyRatesLoaded = true;
150
151
  processBidResponseQueue();
151
152
  ready.done();
@@ -303,5 +303,5 @@ export const spec = {
303
303
 
304
304
  return bidResponses;
305
305
  },
306
- }
306
+ };
307
307
  registerBidder(spec);
@@ -361,7 +361,7 @@ export const spec = {
361
361
  stack: bidderRequest.refererInfo.stack,
362
362
  timeout: config.getConfig('bidderTimeout')
363
363
  },
364
- }
364
+ };
365
365
 
366
366
  // ADD REF URL IF FOUND
367
367
  if (self === top && document.referrer) {