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
@@ -5,6 +5,10 @@
5
5
 
6
6
  ---
7
7
 
8
+ # NOTE: OPENX NO LONGER OFFERS ANALYTICS
9
+ # THIS ADAPTER NO LONGER FUNCTIONS AND
10
+ # WILL BE REMOVED IN PREBID 8
11
+
8
12
  # About this Guide
9
13
  This implementation guide walks through the flow of onboarding an alpha Publisher to test OpenX’s new Analytics Adapter.
10
14
 
@@ -353,7 +353,7 @@ function appendUserIdsToQueryParams(queryParams, userIds) {
353
353
  case 'lipb':
354
354
  queryParams[key] = userIdObjectOrValue.lipbid;
355
355
  if (Array.isArray(userIdObjectOrValue.segments) && userIdObjectOrValue.segments.length > 0) {
356
- const liveIntentSegments = 'liveintent:' + userIdObjectOrValue.segments.join('|')
356
+ const liveIntentSegments = 'liveintent:' + userIdObjectOrValue.segments.join('|');
357
357
  queryParams.sm = `${queryParams.sm ? queryParams.sm + ',' : ''}${liveIntentSegments}`;
358
358
  }
359
359
  break;
@@ -502,7 +502,7 @@ function generateVideoParameters(bid, bidderRequest) {
502
502
  video: openRtbParams
503
503
  }
504
504
  ]
505
- }
505
+ };
506
506
 
507
507
  queryParams['openrtb'] = JSON.stringify(openRtbReq);
508
508
 
@@ -525,7 +525,7 @@ function generateVideoParameters(bid, bidderRequest) {
525
525
 
526
526
  let gpid = deepAccess(bid, 'ortb2Imp.ext.data.pbadslot');
527
527
  if (gpid) {
528
- queryParams.aucs = encodeURIComponent(gpid)
528
+ queryParams.aucs = encodeURIComponent(gpid);
529
529
  }
530
530
 
531
531
  // each video bid makes a separate request
@@ -8,14 +8,18 @@
8
8
  import {getGlobal} from '../src/prebidGlobal.js';
9
9
  import {submodule} from '../src/hook.js';
10
10
  import {getStorageManager} from '../src/storageManager.js';
11
- import {deepAccess, deepSetValue, isFn, logError, mergeDeep} from '../src/utils.js';
11
+ import {deepAccess, deepSetValue, isFn, logError, mergeDeep, isPlainObject, safeJSONParse} from '../src/utils.js';
12
12
  import {includes} from '../src/polyfill.js';
13
13
 
14
14
  const MODULE_NAME = 'permutive'
15
15
 
16
+ export const PERMUTIVE_SUBMODULE_CONFIG_KEY = 'permutive-prebid-rtd'
17
+
16
18
  export const storage = getStorageManager({gvlid: null, moduleName: MODULE_NAME})
17
19
 
18
- function init (moduleConfig, userConsent) {
20
+ function init(moduleConfig, userConsent) {
21
+ readPermutiveModuleConfigFromCache()
22
+
19
23
  return true
20
24
  }
21
25
 
@@ -43,20 +47,63 @@ export function initSegments (reqBidsConfigObj, callback, customModuleConfig) {
43
47
  }
44
48
  }
45
49
 
50
+ function liftIntoParams(params) {
51
+ return isPlainObject(params) ? { params } : {}
52
+ }
53
+
54
+ let cachedPermutiveModuleConfig = {}
55
+
46
56
  /**
47
- * Merges segments into existing bidder config
57
+ * Access the submodules RTD params that are cached to LocalStorage by the Permutive SDK. This lets the RTD submodule
58
+ * apply publisher defined params set in the Permutive platform, so they may still be applied if the Permutive SDK has
59
+ * not initialised before this submodule is initialised.
60
+ */
61
+ function readPermutiveModuleConfigFromCache() {
62
+ const params = safeJSONParse(storage.getDataFromLocalStorage(PERMUTIVE_SUBMODULE_CONFIG_KEY))
63
+ return cachedPermutiveModuleConfig = liftIntoParams(params)
64
+ }
65
+
66
+ /**
67
+ * Access the submodules RTD params attached to the Permutive SDK.
68
+ *
69
+ * @return The Permutive config available by the Permutive SDK or null if the operation errors.
70
+ */
71
+ function getParamsFromPermutive() {
72
+ try {
73
+ return liftIntoParams(window.permutive.addons.prebid.getPermutiveRtdConfig())
74
+ } catch (e) {
75
+ return null
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Merges segments into existing bidder config in reverse priority order. The highest priority is 1.
81
+ *
82
+ * 1. customModuleConfig <- set by publisher with pbjs.setConfig
83
+ * 2. permutiveRtdConfig <- set by the publisher using the Permutive platform
84
+ * 3. defaultConfig
85
+ *
86
+ * As items with a higher priority will be deeply merged into the previous config, deep merges are performed by
87
+ * reversing the priority order.
88
+ *
48
89
  * @param {Object} customModuleConfig - Publisher config for module
49
- * @return {Object} Merged defatul and custom config
90
+ * @return {Object} Deep merges of the default, Permutive and custom config.
50
91
  */
51
- function getModuleConfig (customModuleConfig) {
92
+ export function getModuleConfig(customModuleConfig) {
93
+ // Use the params from Permutive if available, otherwise fallback to the cached value set by Permutive.
94
+ const permutiveModuleConfig = getParamsFromPermutive() || cachedPermutiveModuleConfig
95
+
52
96
  return mergeDeep({
53
97
  waitForIt: false,
54
98
  params: {
55
99
  maxSegs: 500,
56
100
  acBidders: [],
57
- overwrites: {}
58
- }
59
- }, customModuleConfig)
101
+ overwrites: {},
102
+ },
103
+ },
104
+ permutiveModuleConfig,
105
+ customModuleConfig,
106
+ )
60
107
  }
61
108
 
62
109
  /**
@@ -211,7 +211,7 @@ function bidToTag(bid) {
211
211
  tag.code = bid.params.invCode;
212
212
  }
213
213
  tag.allow_smaller_sizes = bid.params.allowSmallerSizes || false;
214
- tag.use_pmt_rule = bid.params.usePaymentRule || false
214
+ tag.use_pmt_rule = bid.params.usePaymentRule || false;
215
215
  tag.prebid = true;
216
216
  tag.disable_psa = true;
217
217
  let bidFloor = getBidFloor(bid);
@@ -9,7 +9,7 @@ import CONSTANTS from '../src/constants.json';
9
9
  * prebidmanagerAnalyticsAdapter.js - analytics adapter for prebidmanager
10
10
  */
11
11
  export const storage = getStorageManager({gvlid: undefined, moduleName: 'prebidmanager'});
12
- const DEFAULT_EVENT_URL = 'https://endpoint.prebidmanager.com/endpoint'
12
+ const DEFAULT_EVENT_URL = 'https://endpoint.prebidmanager.com/endpoint';
13
13
  const analyticsType = 'endpoint';
14
14
  const analyticsName = 'Prebid Manager Analytics: ';
15
15
 
@@ -700,7 +700,7 @@ export function addBidResponseHook(fn, adUnitCode, bid) {
700
700
  return fn.call(this, adUnitCode, bid);
701
701
  }
702
702
 
703
- const matchingBidRequest = auctionManager.index.getBidRequest(bid)
703
+ const matchingBidRequest = auctionManager.index.getBidRequest(bid);
704
704
 
705
705
  // get the matching rule
706
706
  let floorInfo = getFirstMatchingFloor(floorData.data, matchingBidRequest, {...bid, size: [bid.width, bid.height]});
@@ -382,7 +382,7 @@ function bidResponseHandler(args) {
382
382
  return;
383
383
  }
384
384
 
385
- if (bid.bidder && args.bidderCode && bid.bidder !== args.bidderCode) {
385
+ if ((bid.bidder && args.bidderCode && bid.bidder !== args.bidderCode) || (bid.bidder === args.bidderCode && bid.status === SUCCESS)) {
386
386
  bid = copyRequiredBidDetails(args);
387
387
  cache.auctions[args.auctionId].adUnitCodes[args.adUnitCode].bids[args.requestId].push(bid);
388
388
  }
@@ -185,7 +185,7 @@ _each(NATIVE_ASSETS, anAsset => { NATIVE_ASSET_ID_TO_KEY_MAP[anAsset.ID] = anAss
185
185
  // loading NATIVE_ASSET_KEY_TO_ASSET_MAP
186
186
  _each(NATIVE_ASSETS, anAsset => { NATIVE_ASSET_KEY_TO_ASSET_MAP[anAsset.KEY] = anAsset });
187
187
 
188
- function _getDomainFromURL(url) {
188
+ export function _getDomainFromURL(url) {
189
189
  let anchor = document.createElement('a');
190
190
  anchor.href = url;
191
191
  return anchor.hostname;
@@ -1162,7 +1162,11 @@ export const spec = {
1162
1162
  // First Party Data
1163
1163
  const commonFpd = (bidderRequest && bidderRequest.ortb2) || {};
1164
1164
  if (commonFpd.site) {
1165
+ const { page, domain, ref } = payload.site;
1165
1166
  mergeDeep(payload, {site: commonFpd.site});
1167
+ payload.site.page = page;
1168
+ payload.site.domain = domain;
1169
+ payload.site.ref = ref;
1166
1170
  }
1167
1171
  if (commonFpd.user) {
1168
1172
  mergeDeep(payload, {user: commonFpd.user});
@@ -1170,6 +1174,7 @@ export const spec = {
1170
1174
  if (commonFpd.bcat) {
1171
1175
  blockedIabCategories = blockedIabCategories.concat(commonFpd.bcat);
1172
1176
  }
1177
+
1173
1178
  if (commonFpd.ext?.prebid?.bidderparams?.[bidderRequest.bidderCode]?.acat) {
1174
1179
  const acatParams = commonFpd.ext.prebid.bidderparams[bidderRequest.bidderCode].acat;
1175
1180
  _allowedIabCategoriesValidation(payload, acatParams);
@@ -1177,6 +1182,19 @@ export const spec = {
1177
1182
  _allowedIabCategoriesValidation(payload, allowedIabCategories);
1178
1183
  }
1179
1184
  _blockedIabCategoriesValidation(payload, blockedIabCategories);
1185
+
1186
+ // Check if bidderRequest has timeout property if present send timeout as tmax value to translator request
1187
+ // bidderRequest has timeout property if publisher sets during calling requestBids function from page
1188
+ // if not bidderRequest contains global value set by Prebid
1189
+ if (bidderRequest?.timeout) {
1190
+ payload.tmax = bidderRequest.timeout || config.getConfig('bidderTimeout');
1191
+ } else {
1192
+ payload.tmax = window?.PWT?.versionDetails?.timeout;
1193
+ }
1194
+
1195
+ // Sending epoch timestamp in request.ext object
1196
+ payload.ext.epoch = new Date().getTime();
1197
+
1180
1198
  // Note: Do not move this block up
1181
1199
  // if site object is set in Prebid config then we need to copy required fields from site into app and unset the site object
1182
1200
  if (typeof config.getConfig('app') === 'object') {
@@ -295,7 +295,7 @@ pubwiseAnalytics.handleEvent = function(eventType, data) {
295
295
  if (eventType === CONSTANTS.EVENTS.AUCTION_END || eventType === CONSTANTS.EVENTS.BID_WON) {
296
296
  flushEvents();
297
297
  }
298
- }
298
+ };
299
299
 
300
300
  pubwiseAnalytics.storeSessionID = function (userSessID) {
301
301
  storage.setDataInLocalStorage(localStorageSessName(), userSessID);
@@ -161,7 +161,7 @@ export const spec = {
161
161
  }
162
162
 
163
163
  if (bid.params.isTest) {
164
- payload.test = Number(bid.params.isTest) // should be 1 or 0
164
+ payload.test = Number(bid.params.isTest); // should be 1 or 0
165
165
  }
166
166
  payload.site.publisher.id = bid.params.siteId.trim();
167
167
  payload.user.gender = (conf.gender ? conf.gender.trim() : UNDEFINED);
@@ -207,7 +207,7 @@ export const spec = {
207
207
  deepSetValue(payload, 'regs.coppa', 1);
208
208
  }
209
209
 
210
- var options = {contentType: 'text/plain'}
210
+ var options = {contentType: 'text/plain'};
211
211
 
212
212
  _logInfo('buildRequests payload', payload);
213
213
  _logInfo('buildRequests bidderRequest', bidderRequest);
@@ -463,7 +463,7 @@ function _createImpressionObject(bid, conf) {
463
463
  }
464
464
  }
465
465
  } else {
466
- _logWarn('MediaTypes are Required for all Adunit Configs', bid)
466
+ _logWarn('MediaTypes are Required for all Adunit Configs', bid);
467
467
  }
468
468
 
469
469
  _addFloorFromFloorModule(impObj, bid);
@@ -76,7 +76,7 @@ export const spec = {
76
76
  } else {
77
77
  kwString = kwContents;
78
78
  }
79
- kwEnc = encodeURIComponent(kwString)
79
+ kwEnc = encodeURIComponent(kwString);
80
80
  } else { }
81
81
  if (titleContent) {
82
82
  if (titleContent.length > 30) {
@@ -140,7 +140,7 @@ export function getOS() {
140
140
  // add sampling rate
141
141
  pubxaiAnalyticsAdapter.shouldFireEventRequest = function (samplingRate = 1) {
142
142
  return (Math.floor((Math.random() * samplingRate + 1)) === parseInt(samplingRate));
143
- }
143
+ };
144
144
 
145
145
  function send(data, status) {
146
146
  if (pubxaiAnalyticsAdapter.shouldFireEventRequest(initOptions.samplingRate)) {
@@ -158,7 +158,7 @@ function send(data, status) {
158
158
  data.initOptions.auctionId = data.auctionInit.auctionId;
159
159
  delete data.auctionInit;
160
160
 
161
- data.pmcDetail = {}
161
+ data.pmcDetail = {};
162
162
  Object.assign(data.pmcDetail, {
163
163
  bidDensity: storage ? storage.getItem('pbx:dpbid') : null,
164
164
  maxBid: storage ? storage.getItem('pbx:mxbid') : null,
@@ -211,7 +211,7 @@ export const quantcastIdSubmodule = {
211
211
  });
212
212
  }
213
213
 
214
- return { id: fpa ? { quantcastId: fpa } : undefined }
214
+ return { id: fpa ? { quantcastId: fpa } : undefined };
215
215
  }
216
216
  };
217
217
 
@@ -65,7 +65,7 @@ export const spec = {
65
65
  method: 'GET',
66
66
  url: endpoint,
67
67
  data: objectToQueryString(payload),
68
- }
68
+ };
69
69
  });
70
70
  },
71
71
  interpretResponse: function(serverResponse, bidRequest) {
@@ -1,3 +1,4 @@
1
+ import * as utils from '../src/utils.js';
1
2
  import { registerBidder } from '../src/adapters/bidderFactory.js';
2
3
  import { BANNER } from '../src/mediaTypes.js';
3
4
  import { isEmpty, getAdUnitSizes, parseSizesInput, deepAccess } from '../src/utils.js';
@@ -92,11 +93,18 @@ const getSlots = (bidRequests) => {
92
93
  const batchSize = bidRequests.length;
93
94
  for (let i = 0; i < batchSize; i++) {
94
95
  const adunit = bidRequests[i];
96
+ const slotSequence = utils.deepAccess(adunit, 'params.slotSequence');
97
+
95
98
  const sizes = parseSizesInput(getAdUnitSizes(adunit)).join(',');
99
+
96
100
  queryString += `&slot${i}=${encodeURIComponent(adunit.params.slot)}&id${i}=${encodeURIComponent(adunit.bidId)}&composition${i}=CHILD`;
101
+
97
102
  if (sizes.length) {
98
103
  queryString += `&iusizes${i}=${encodeURIComponent(sizes)}`;
99
104
  }
105
+ if (slotSequence !== undefined) {
106
+ queryString += `&pos${i}=${encodeURIComponent(slotSequence)}`;
107
+ }
100
108
  }
101
109
  return queryString;
102
110
  };
@@ -34,17 +34,18 @@ var adUnits = [{
34
34
 
35
35
  # Parameters
36
36
 
37
- | Name | Scope | Type | Description | Example
38
- | --- | --- | --- | --- | ---
39
- | network | required | String | Specific identifier provided by RAS | `"4178463"`
40
- | site | required | String | Specific identifier name (case-insensitive) that is associated with this ad unit and provided by RAS | `"example_com"`
41
- | area | required | String | Ad unit category name; only case-insensitive alphanumeric with underscores and hyphens are allowed | `"sport"`
42
- | slot | required | String | Ad unit placement name (case-insensitive) provided by RAS | `"slot"`
43
- | pageContext | optional | Object | Web page context data | `{}`
44
- | pageContext.dr | optional | String | Document referrer URL address | `"https://example.com/"`
45
- | pageContext.du | optional | String | Document URL address | `"https://example.com/sport/football/article.html?id=932016a5-02fc-4d5c-b643-fafc2f270f06"`
37
+ | Name | Scope | Type | Description | Example
38
+ | --- | --- | --- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ---
39
+ | network | required | String | Specific identifier provided by RAS | `"4178463"`
40
+ | site | required | String | Specific identifier name (case-insensitive) that is associated with this ad unit and provided by RAS | `"example_com"`
41
+ | area | required | String | Ad unit category name; only case-insensitive alphanumeric with underscores and hyphens are allowed | `"sport"`
42
+ | slot | required | String | Ad unit placement name (case-insensitive) provided by RAS | `"slot"`
43
+ | slotSequence | optional | Number | Ad unit sequence position provided by RAS | `1`
44
+ | pageContext | optional | Object | Web page context data | `{}`
45
+ | pageContext.dr | optional | String | Document referrer URL address | `"https://example.com/"`
46
+ | pageContext.du | optional | String | Document URL address | `"https://example.com/sport/football/article.html?id=932016a5-02fc-4d5c-b643-fafc2f270f06"`
46
47
  | pageContext.dv | optional | String | Document virtual address as slash-separated path that may consist of any number of parts (case-insensitive alphanumeric with underscores and hyphens); first part should be the same as `site` value and second as `area` value; next parts may reflect website navigation | `"example_com/sport/football"`
47
- | pageContext.keyWords | optional | String[] | List of keywords associated with this ad unit; only case-insensitive alphanumeric with underscores and hyphens are allowed | `["euro", "lewandowski"]`
48
- | pageContext.keyValues | optional | Object | Key-values associated with this ad unit (case-insensitive); following characters are not allowed in the values: `" ' = ! + # * ~ ; ^ ( ) < > [ ] & @` | `{}`
49
- | pageContext.keyValues.ci | optional | String | Content unique identifier | `"932016a5-02fc-4d5c-b643-fafc2f270f06"`
50
- | pageContext.keyValues.adunit | optional | String | Ad unit name | `"example_com/sport"`
48
+ | pageContext.keyWords | optional | String[] | List of keywords associated with this ad unit; only case-insensitive alphanumeric with underscores and hyphens are allowed | `["euro", "lewandowski"]`
49
+ | pageContext.keyValues | optional | Object | Key-values associated with this ad unit (case-insensitive); following characters are not allowed in the values: `" ' = ! + # * ~ ; ^ ( ) < > [ ] & @` | `{}`
50
+ | pageContext.keyValues.ci | optional | String | Content unique identifier | `"932016a5-02fc-4d5c-b643-fafc2f270f06"`
51
+ | pageContext.keyValues.adunit | optional | String | Ad unit name | `"example_com/sport"`
@@ -232,7 +232,7 @@ function buildImp(bid, id) {
232
232
  w: sizes[0][0],
233
233
  h: sizes[0][1],
234
234
  format: sizes.map(wh => parseGPTSingleSizeArrayToRtbSize(wh)),
235
- }
235
+ };
236
236
  } else if (nativeReq) {
237
237
  const assets = _map(bid.nativeParams, (bidParams, key) => {
238
238
  const props = NATIVE_PARAMS[key];
@@ -132,7 +132,7 @@ export const spec = {
132
132
 
133
133
  bidResponses.push(bidResponse);
134
134
  }
135
- return bidResponses
135
+ return bidResponses;
136
136
  },
137
137
  /***
138
138
  * User Syncs
@@ -68,7 +68,7 @@ export const spec = {
68
68
  if (schain) {
69
69
  request.ext = {
70
70
  schain: schain,
71
- }
71
+ };
72
72
  }
73
73
  }
74
74
 
@@ -81,6 +81,30 @@ export const spec = {
81
81
  }
82
82
  }
83
83
 
84
+ const ortb2Params = bidderRequest && bidderRequest.ortb2;
85
+ if (ortb2Params?.user) {
86
+ request.user = {
87
+ ...request.user,
88
+ ...(ortb2Params.user.data && {
89
+ data: { ...request.user?.data, ...ortb2Params.user.data },
90
+ }),
91
+ ...(ortb2Params.user.ext && {
92
+ ext: { ...request.user?.ext, ...ortb2Params.user.ext },
93
+ }),
94
+ };
95
+ }
96
+ if (ortb2Params?.site) {
97
+ request.site = {
98
+ ...request.site,
99
+ ...(ortb2Params.site.content && {
100
+ content: { ...request.site?.content, ...ortb2Params.site.content },
101
+ }),
102
+ ...(ortb2Params.site.ext && {
103
+ ext: { ...request.site?.ext, ...ortb2Params.site.ext },
104
+ }),
105
+ };
106
+ }
107
+
84
108
  return {
85
109
  method: 'POST',
86
110
  url: 'https://' + validBidRequests[0].params.region + '.' + ENDPOINT_URL,
package/modules/schain.js CHANGED
@@ -19,7 +19,7 @@ _each(MODE, mode => MODES.push(mode));
19
19
 
20
20
  // validate the supply chain object
21
21
  export function isSchainObjectValid(schainObject, returnOnError) {
22
- let failPrefix = 'Detected something wrong within an schain config:'
22
+ let failPrefix = 'Detected something wrong within an schain config:';
23
23
  let failMsg = '';
24
24
 
25
25
  function appendFailMsg(msg) {
@@ -8,19 +8,18 @@ Maintainer: prebid@seedtag.com
8
8
 
9
9
  # Description
10
10
 
11
- Module that connects to Seedtag demand sources to fetch bids.
11
+ Prebidjs seedtag bidder
12
12
 
13
- # Test Parameters
14
-
15
- ## Sample Banner Ad Unit
13
+ # Sample integration
16
14
 
15
+ ## InScreen
17
16
  ```js
18
17
  const adUnits = [
19
18
  {
20
- code: '/21804003197/prebid_test_300x250',
19
+ code: '/21804003197/prebid_test_320x100',
21
20
  mediaTypes: {
22
21
  banner: {
23
- sizes: [[300, 250]]
22
+ sizes: [[320, 100]]
24
23
  }
25
24
  },
26
25
  bids: [
@@ -29,8 +28,7 @@ const adUnits = [
29
28
  params: {
30
29
  publisherId: '0000-0000-01', // required
31
30
  adUnitId: '0000', // required
32
- placement: 'banner', // required
33
- adPosition: 0 // optional
31
+ placement: 'inScreen', // required
34
32
  }
35
33
  }
36
34
  ]
@@ -38,55 +36,26 @@ const adUnits = [
38
36
  ]
39
37
  ```
40
38
 
41
- ## Sample inStream Video Ad Unit
42
-
39
+ ## InArticle
43
40
  ```js
44
- var adUnits = [{
45
- code: 'video',
46
- mediaTypes: {
47
- video: {
48
- context: 'instream', // required
49
- playerSize: [600, 300], // required
50
- mimes: ['video/mp4'], // recommended
51
- minduration: 5, // optional
52
- maxduration: 60, // optional
53
- boxingallowed: 1, // optional
54
- skip: 1, // optional
55
- startdelay: 1, // optional
56
- linearity: 1, // optional
57
- battr: [1, 2], // optional
58
- maxbitrate: 10, // optional
59
- playbackmethod: [1], // optional
60
- delivery: [1], // optional
61
- placement: 1, // optional
62
- }
63
- },
64
- bids: [
65
- {
66
- bidder: 'seedtag',
67
- params: {
68
- publisherId: '0000-0000-01', // required
69
- adUnitId: '0000', // required
70
- placement: 'video', // required
71
- adPosition: 0, // optional
72
- video: { // optional
73
- context: 'instream', // optional
74
- playerSize: [600, 300], // optional
75
- mimes: ['video/mp4'], // optional
76
- minduration: 5, // optional
77
- maxduration: 60, // optional
78
- boxingallowed: 1, // optional
79
- skip: 1, // optional
80
- startdelay: 1, // optional
81
- linearity: 1, // optional
82
- battr: [1, 2], // optional
83
- maxbitrate: 10, // optional
84
- playbackmethod: [1], // optional
85
- delivery: [1], // optional
86
- placement: 1, // optional
41
+ const adUnits = [
42
+ {
43
+ code: '/21804003197/prebid_test_300x250',
44
+ mediaTypes: {
45
+ banner: {
46
+ sizes: [[300, 250], [1, 1]]
47
+ }
48
+ },
49
+ bids: [
50
+ {
51
+ bidder: 'seedtag',
52
+ params: {
53
+ publisherId: '0000-0000-01', // required
54
+ adUnitId: '0000', // required
55
+ placement: 'inArticle', // required
87
56
  }
88
57
  }
89
- }
90
- ]
91
- }];
58
+ ]
59
+ }
60
+ ]
92
61
  ```
@@ -314,7 +314,7 @@ function outstreamRender(bid) {
314
314
  logError('[ShowHeroes][renderer] Error: spot not found');
315
315
  }
316
316
  } catch (err) {
317
- logError('[ShowHeroes][renderer] Error:' + err.message)
317
+ logError('[ShowHeroes][renderer] Error:' + err.message);
318
318
  }
319
319
  }
320
320
  }
@@ -98,7 +98,7 @@ export function checkAdUnitSetupHook(adUnits) {
98
98
  */
99
99
  if (!isArrayOfNums(config.minViewPort, 2)) {
100
100
  logError(`Ad unit ${adUnitCode}: Invalid declaration of 'minViewPort' in 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
101
- isValid = false
101
+ isValid = false;
102
102
  return;
103
103
  }
104
104
  /*
@@ -63,7 +63,7 @@ const buildOpenRtbBidRequest = (bidRequest, bidderRequest) => {
63
63
  if (deepAccess(bidRequest, 'params.app')) {
64
64
  const geo = deepAccess(bidRequest, 'params.app.geo');
65
65
  deepSetValue(requestTemplate, 'device.geo', geo);
66
- const ifa = deepAccess(bidRequest, 'params.app.ifa')
66
+ const ifa = deepAccess(bidRequest, 'params.app.ifa');
67
67
  deepSetValue(requestTemplate, 'device.ifa', ifa);
68
68
  }
69
69
 
@@ -210,7 +210,7 @@ export const spec = {
210
210
  }
211
211
  };
212
212
 
213
- const videoContext = deepAccess(JSON.parse(bidRequest.data).imp[0], 'video.ext.context')
213
+ const videoContext = deepAccess(JSON.parse(bidRequest.data).imp[0], 'video.ext.context');
214
214
  if (videoContext === ADPOD) {
215
215
  resultingBid.vastXml = bid.adm;
216
216
  resultingBid.mediaType = VIDEO;
@@ -255,7 +255,7 @@ sonobiAdapter.sendData = function (auction, data) {
255
255
  contentType: 'text/plain'
256
256
  }
257
257
  );
258
- }
258
+ };
259
259
 
260
260
  function _logInfo(message, meta) {
261
261
  logInfo(buildLogMessage(message), meta);
@@ -11,6 +11,7 @@ const OUTSTREAM_REDNERER_URL = 'https://mtrx.go.sonobi.com/sbi_outstream_rendere
11
11
 
12
12
  export const spec = {
13
13
  code: BIDDER_CODE,
14
+ gvlid: 104,
14
15
  supportedMediaTypes: [BANNER, VIDEO],
15
16
  /**
16
17
  * Determines whether or not the given bid request is valid.
@@ -129,7 +130,7 @@ export const spec = {
129
130
  }
130
131
 
131
132
  if (validBidRequests[0].schain) {
132
- payload.schain = JSON.stringify(validBidRequests[0].schain)
133
+ payload.schain = JSON.stringify(validBidRequests[0].schain);
133
134
  }
134
135
  if (deepAccess(validBidRequests[0], 'userId') && Object.keys(validBidRequests[0].userId).length > 0) {
135
136
  const userIds = deepClone(validBidRequests[0].userId);
@@ -217,7 +218,7 @@ export const spec = {
217
218
  ] = bid.sbi_size.split('x');
218
219
  let aDomains = [];
219
220
  if (bid.sbi_adomain) {
220
- aDomains = [bid.sbi_adomain]
221
+ aDomains = [bid.sbi_adomain];
221
222
  }
222
223
  const bids = {
223
224
  requestId: bidId,
@@ -255,7 +256,7 @@ export const spec = {
255
256
  ));
256
257
  let videoSize = deepAccess(bidRequest, 'params.sizes');
257
258
  if (Array.isArray(videoSize) && Array.isArray(videoSize[0])) { // handle case of multiple sizes
258
- videoSize = videoSize[0] // Only take the first size for outstream
259
+ videoSize = videoSize[0]; // Only take the first size for outstream
259
260
  }
260
261
  if (videoSize) {
261
262
  bids.width = videoSize[0];
@@ -21,7 +21,7 @@ const STAQ_EVENTS = {
21
21
  BID_WON: 'bidWon',
22
22
  AUCTION_END: 'auctionEnd',
23
23
  TIMEOUT: 'adapterTimedOut'
24
- }
24
+ };
25
25
 
26
26
  function buildRequestTemplate(connId) {
27
27
  // TODO: what should these pick from refererInfo?