prebid.js 7.8.0 → 7.11.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 (483) hide show
  1. package/README.md +0 -2
  2. package/RELEASE_SCHEDULE.md +1 -1
  3. package/allowedModules.js +3 -0
  4. package/babelConfig.js +10 -4
  5. package/dist/33acrossBidAdapter.js +1 -1
  6. package/dist/adWMGAnalyticsAdapter.js +1 -1
  7. package/dist/adagioAnalyticsAdapter.js +1 -1
  8. package/dist/adagioBidAdapter.js +1 -1
  9. package/dist/adbookpspBidAdapter.js +1 -1
  10. package/dist/adgenerationBidAdapter.js +1 -1
  11. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  12. package/dist/adkernelBidAdapter.js +1 -1
  13. package/dist/adlooxAdServerVideo.js +1 -1
  14. package/dist/adlooxAnalyticsAdapter.js +1 -1
  15. package/dist/adlooxRtdProvider.js +1 -1
  16. package/dist/adnuntiusBidAdapter.js +1 -1
  17. package/dist/adomikAnalyticsAdapter.js +1 -1
  18. package/dist/adrelevantisBidAdapter.js +1 -1
  19. package/dist/adtelligentBidAdapter.js +1 -1
  20. package/dist/adtrgtmeBidAdapter.js +1 -0
  21. package/dist/adxcgAnalyticsAdapter.js +1 -1
  22. package/dist/adxcgBidAdapter.js +1 -1
  23. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  24. package/dist/adyoulikeBidAdapter.js +1 -1
  25. package/dist/ajaBidAdapter.js +1 -1
  26. package/dist/amxBidAdapter.js +1 -1
  27. package/dist/amxIdSystem.js +1 -1
  28. package/dist/analyticsAdapter.js +1 -0
  29. package/dist/andBeyondMediaBidAdapter.js +1 -0
  30. package/dist/aniviewBidAdapter.js +1 -1
  31. package/dist/appierAnalyticsAdapter.js +1 -1
  32. package/dist/appnexusBidAdapter.js +1 -1
  33. package/dist/asoBidAdapter.js +1 -1
  34. package/dist/atsAnalyticsAdapter.js +1 -1
  35. package/dist/audiencerunBidAdapter.js +1 -1
  36. package/dist/axonixBidAdapter.js +1 -1
  37. package/dist/bidglassBidAdapter.js +1 -1
  38. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  39. package/dist/big-richmediaBidAdapter.js +1 -1
  40. package/dist/bluebillywigBidAdapter.js +1 -1
  41. package/dist/boldwinBidAdapter.js +1 -1
  42. package/dist/bridgewellBidAdapter.js +1 -1
  43. package/dist/brightMountainMediaBidAdapter.js +1 -1
  44. package/dist/browsiRtdProvider.js +1 -1
  45. package/dist/byDataAnalyticsAdapter.js +1 -1
  46. package/dist/c1xBidAdapter.js +1 -0
  47. package/dist/cleanioRtdProvider.js +1 -1
  48. package/dist/concertAnalyticsAdapter.js +1 -1
  49. package/dist/concertBidAdapter.js +1 -1
  50. package/dist/connectadBidAdapter.js +1 -1
  51. package/dist/consentManagementUsp.js +1 -1
  52. package/dist/consumableBidAdapter.js +1 -1
  53. package/dist/conversantBidAdapter.js +1 -1
  54. package/dist/cpmstarBidAdapter.js +1 -1
  55. package/dist/craftBidAdapter.js +1 -1
  56. package/dist/criteoBidAdapter.js +1 -1
  57. package/dist/datablocksAnalyticsAdapter.js +1 -1
  58. package/dist/datawrkzBidAdapter.js +1 -0
  59. package/dist/debugging-standalone.js +1 -1
  60. package/dist/dependencies.json +171 -0
  61. package/dist/dspxBidAdapter.js +1 -1
  62. package/dist/eplanningAnalyticsAdapter.js +1 -1
  63. package/dist/eplanningBidAdapter.js +1 -1
  64. package/dist/finativeBidAdapter.js +1 -1
  65. package/dist/fintezaAnalyticsAdapter.js +1 -1
  66. package/dist/freewheel-sspBidAdapter.js +1 -1
  67. package/dist/getOrigin.js +1 -1
  68. package/dist/glimpseBidAdapter.js +1 -1
  69. package/dist/gmosspBidAdapter.js +1 -1
  70. package/dist/goldbachBidAdapter.js +1 -1
  71. package/dist/gridBidAdapter.js +1 -1
  72. package/dist/gridNMBidAdapter.js +1 -1
  73. package/dist/gumgumBidAdapter.js +1 -1
  74. package/dist/h12mediaBidAdapter.js +1 -1
  75. package/dist/hadronAnalyticsAdapter.js +1 -1
  76. package/dist/id5AnalyticsAdapter.js +1 -1
  77. package/dist/id5IdSystem.js +1 -1
  78. package/dist/impactifyBidAdapter.js +1 -1
  79. package/dist/improvedigitalBidAdapter.js +1 -1
  80. package/dist/imuIdSystem.js +1 -1
  81. package/dist/inmarBidAdapter.js +1 -1
  82. package/dist/insticatorBidAdapter.js +1 -1
  83. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  84. package/dist/ixBidAdapter.js +1 -1
  85. package/dist/jixieBidAdapter.js +1 -1
  86. package/dist/justpremiumBidAdapter.js +1 -1
  87. package/dist/kargoAnalyticsAdapter.js +1 -1
  88. package/dist/kargoBidAdapter.js +1 -1
  89. package/dist/konduitAnalyticsAdapter.js +1 -1
  90. package/dist/kueezBidAdapter.js +1 -1
  91. package/dist/lassoBidAdapter.js +1 -1
  92. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  93. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  94. package/dist/logicadBidAdapter.js +1 -1
  95. package/dist/loglyliftBidAdapter.js +1 -1
  96. package/dist/malltvAnalyticsAdapter.js +1 -1
  97. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  98. package/dist/marsmediaBidAdapter.js +1 -1
  99. package/dist/mediafuseBidAdapter.js +1 -1
  100. package/dist/mediakeysBidAdapter.js +1 -1
  101. package/dist/medianetAnalyticsAdapter.js +1 -1
  102. package/dist/mediasquareBidAdapter.js +1 -1
  103. package/dist/mgidBidAdapter.js +1 -1
  104. package/dist/minutemediaBidAdapter.js +1 -1
  105. package/dist/nextMillenniumBidAdapter.js +1 -1
  106. package/dist/nobidBidAdapter.js +1 -1
  107. package/dist/not-for-prod/prebid.js +182 -176
  108. package/dist/oguryBidAdapter.js +1 -1
  109. package/dist/onetagBidAdapter.js +1 -1
  110. package/dist/ooloAnalyticsAdapter.js +1 -1
  111. package/dist/openxAnalyticsAdapter.js +1 -1
  112. package/dist/openxBidAdapter.js +1 -1
  113. package/dist/openxOrtbBidAdapter.js +1 -1
  114. package/dist/optimonAnalyticsAdapter.js +1 -1
  115. package/dist/outbrainBidAdapter.js +1 -1
  116. package/dist/ozoneBidAdapter.js +1 -1
  117. package/dist/parrableIdSystem.js +1 -1
  118. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  119. package/dist/pixfutureBidAdapter.js +1 -1
  120. package/dist/prebid-core.js +1 -1
  121. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  122. package/dist/publinkIdSystem.js +1 -1
  123. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  124. package/dist/pubmaticBidAdapter.js +1 -1
  125. package/dist/pubperfAnalyticsAdapter.js +1 -1
  126. package/dist/pubstackAnalyticsAdapter.js +1 -1
  127. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  128. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  129. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  130. package/dist/pxyzBidAdapter.js +1 -1
  131. package/dist/quantcastBidAdapter.js +1 -1
  132. package/dist/readpeakBidAdapter.js +1 -1
  133. package/dist/realvuAnalyticsAdapter.js +1 -1
  134. package/dist/relaidoBidAdapter.js +1 -1
  135. package/dist/relevantAnalyticsAdapter.js +1 -1
  136. package/dist/rhythmoneBidAdapter.js +1 -1
  137. package/dist/riseBidAdapter.js +1 -1
  138. package/dist/rivrAnalyticsAdapter.js +1 -1
  139. package/dist/roxotAnalyticsAdapter.js +1 -1
  140. package/dist/rtbhouseBidAdapter.js +1 -1
  141. package/dist/rubiconAnalyticsAdapter.js +1 -1
  142. package/dist/rubiconBidAdapter.js +1 -1
  143. package/dist/scaleableAnalyticsAdapter.js +1 -1
  144. package/dist/seedingAllianceBidAdapter.js +1 -1
  145. package/dist/seedtagBidAdapter.js +1 -1
  146. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  147. package/dist/sharethroughBidAdapter.js +1 -1
  148. package/dist/shinezBidAdapter.js +1 -1
  149. package/dist/showheroes-bsBidAdapter.js +1 -1
  150. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  151. package/dist/smaatoBidAdapter.js +1 -1
  152. package/dist/smartadserverBidAdapter.js +1 -1
  153. package/dist/smartxBidAdapter.js +1 -1
  154. package/dist/smilewantedBidAdapter.js +1 -1
  155. package/dist/snigelBidAdapter.js +1 -0
  156. package/dist/sonobiAnalyticsAdapter.js +1 -1
  157. package/dist/sonobiBidAdapter.js +1 -1
  158. package/dist/sovrnAnalyticsAdapter.js +1 -1
  159. package/dist/sovrnBidAdapter.js +1 -1
  160. package/dist/sspBCBidAdapter.js +1 -1
  161. package/dist/staqAnalyticsAdapter.js +1 -1
  162. package/dist/sublimeBidAdapter.js +1 -1
  163. package/dist/synacormediaBidAdapter.js +1 -1
  164. package/dist/tappxBidAdapter.js +1 -1
  165. package/dist/targetVideoBidAdapter.js +1 -1
  166. package/dist/teadsBidAdapter.js +1 -1
  167. package/dist/terceptAnalyticsAdapter.js +1 -1
  168. package/dist/trionBidAdapter.js +1 -1
  169. package/dist/tripleliftBidAdapter.js +1 -1
  170. package/dist/trustpidSystem.js +1 -1
  171. package/dist/ttdBidAdapter.js +1 -1
  172. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  173. package/dist/underdogmediaBidAdapter.js +1 -1
  174. package/dist/undertoneBidAdapter.js +1 -1
  175. package/dist/userId.js +1 -1
  176. package/dist/vidazooBidAdapter.js +1 -1
  177. package/dist/videobyteBidAdapter.js +1 -1
  178. package/dist/visxBidAdapter.js +1 -1
  179. package/dist/vuukleBidAdapter.js +1 -1
  180. package/dist/widespaceBidAdapter.js +1 -1
  181. package/dist/winrBidAdapter.js +1 -1
  182. package/dist/yahoosspBidAdapter.js +1 -1
  183. package/dist/yieldmoBidAdapter.js +1 -1
  184. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  185. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  186. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  187. package/dist/zeta_global_sspBidAdapter.js +1 -1
  188. package/gulpHelpers.js +22 -55
  189. package/gulpfile.js +12 -5
  190. package/integrationExamples/gpt/1plusXRtdProviderExample.html +2 -4
  191. package/integrationExamples/gpt/airgridRtdProvider_example.html +1 -4
  192. package/integrationExamples/gpt/amp/remote.html +1 -1
  193. package/integrationExamples/gpt/blueconicRtdProvider_example.html +2 -4
  194. package/integrationExamples/gpt/hadronRtdProvider_example.html +1 -3
  195. package/integrationExamples/gpt/inskin_example.html +1 -3
  196. package/integrationExamples/gpt/permutiveRtdProvider_example.html +1 -1
  197. package/integrationExamples/gpt/prebidServer_example.html +1 -3
  198. package/integrationExamples/gpt/serverbidServer_example.html +1 -3
  199. package/integrationExamples/gpt/userId_example.html +1 -3
  200. package/integrationExamples/postbid/oas/postbid-config.js +5 -5
  201. package/karma.conf.maker.js +2 -13
  202. package/libraries/LIBRARIES.md +5 -0
  203. package/{src → libraries/analyticsAdapter}/AnalyticsAdapter.js +5 -6
  204. package/{src/adapters/analytics → libraries/analyticsAdapter/examples}/example.js +1 -1
  205. package/{src/adapters/analytics → libraries/analyticsAdapter/examples}/example2.js +1 -1
  206. package/modules/.submodules.json +0 -12
  207. package/modules/1plusXRtdProvider.js +1 -1
  208. package/modules/33acrossBidAdapter.js +3 -3
  209. package/modules/adWMGAnalyticsAdapter.js +1 -1
  210. package/modules/adagioAnalyticsAdapter.js +1 -1
  211. package/modules/adagioBidAdapter.js +3 -4
  212. package/modules/adgenerationBidAdapter.js +1 -1
  213. package/modules/adkernelAdnAnalyticsAdapter.js +1 -1
  214. package/modules/adkernelBidAdapter.js +2 -1
  215. package/modules/adlooxAnalyticsAdapter.js +1 -1
  216. package/modules/admixerBidAdapter.js +1 -1
  217. package/modules/adnowBidAdapter.js +1 -1
  218. package/modules/adnuntiusBidAdapter.js +3 -1
  219. package/modules/adomikAnalyticsAdapter.js +1 -1
  220. package/modules/adpod.js +1 -1
  221. package/modules/adrelevantisBidAdapter.js +2 -2
  222. package/modules/adriverBidAdapter.js +1 -1
  223. package/modules/adtargetBidAdapter.js +1 -1
  224. package/modules/adtelligentBidAdapter.js +4 -2
  225. package/modules/adtrgtmeBidAdapter.js +333 -0
  226. package/modules/adtrgtmeBidAdapter.md +69 -0
  227. package/modules/adtrueBidAdapter.js +1 -1
  228. package/modules/adxcgAnalyticsAdapter.js +1 -1
  229. package/modules/adxpremiumAnalyticsAdapter.js +2 -2
  230. package/modules/adyoulikeBidAdapter.js +12 -8
  231. package/modules/akamaiDapRtdProvider.js +2 -2
  232. package/modules/andBeyondMediaBidAdapter.js +202 -0
  233. package/modules/andBeyondMediaBidAdapter.md +79 -0
  234. package/modules/aniviewBidAdapter.js +2 -2
  235. package/modules/apacdexBidAdapter.js +3 -3
  236. package/modules/appierAnalyticsAdapter.js +1 -1
  237. package/modules/appnexusBidAdapter.js +9 -9
  238. package/modules/apstreamBidAdapter.js +2 -2
  239. package/modules/atsAnalyticsAdapter.js +1 -1
  240. package/modules/betweenBidAdapter.js +1 -1
  241. package/modules/bidwatchAnalyticsAdapter.js +71 -12
  242. package/modules/bizzclickBidAdapter.js +1 -1
  243. package/modules/bliinkBidAdapter.js +1 -1
  244. package/modules/boldwinBidAdapter.js +16 -7
  245. package/modules/boldwinBidAdapter.md +17 -0
  246. package/modules/brightMountainMediaBidAdapter.js +1 -1
  247. package/modules/browsiRtdProvider.js +26 -12
  248. package/modules/byDataAnalyticsAdapter.js +2 -2
  249. package/modules/c1xBidAdapter.js +209 -0
  250. package/modules/c1xBidAdapter.md +70 -0
  251. package/modules/cleanioRtdProvider.js +29 -0
  252. package/modules/cleanmedianetBidAdapter.js +1 -1
  253. package/modules/colossussspBidAdapter.js +2 -2
  254. package/modules/concertAnalyticsAdapter.js +1 -1
  255. package/modules/consentManagementUsp.js +2 -2
  256. package/modules/consumableBidAdapter.js +21 -3
  257. package/modules/cpmstarBidAdapter.js +23 -13
  258. package/modules/criteoBidAdapter.js +47 -5
  259. package/modules/cwireBidAdapter.js +1 -1
  260. package/modules/datablocksAnalyticsAdapter.js +1 -1
  261. package/modules/datablocksBidAdapter.js +1 -1
  262. package/modules/datawrkzBidAdapter.js +633 -0
  263. package/modules/datawrkzBidAdapter.md +160 -0
  264. package/modules/dfpAdServerVideo.js +2 -2
  265. package/modules/dgkeywordRtdProvider.js +1 -1
  266. package/modules/dspxBidAdapter.js +1 -1
  267. package/modules/e_volutionBidAdapter.js +3 -3
  268. package/modules/ebdrBidAdapter.js +1 -1
  269. package/modules/emx_digitalBidAdapter.js +1 -1
  270. package/modules/eplanningAnalyticsAdapter.js +1 -1
  271. package/modules/eplanningBidAdapter.js +3 -3
  272. package/modules/fabrickIdSystem.js +2 -2
  273. package/modules/fintezaAnalyticsAdapter.js +2 -2
  274. package/modules/freewheel-sspBidAdapter.js +1 -1
  275. package/modules/gamoshiBidAdapter.js +1 -1
  276. package/modules/getintentBidAdapter.js +1 -1
  277. package/modules/gjirafaBidAdapter.js +2 -2
  278. package/modules/goldbachBidAdapter.js +8 -8
  279. package/modules/gothamadsBidAdapter.js +2 -2
  280. package/modules/gridBidAdapter.js +1 -1
  281. package/modules/gridNMBidAdapter.js +1 -1
  282. package/modules/gumgumBidAdapter.js +3 -3
  283. package/modules/h12mediaBidAdapter.js +1 -1
  284. package/modules/hadronAnalyticsAdapter.js +3 -3
  285. package/modules/hadronRtdProvider.js +1 -1
  286. package/modules/id5AnalyticsAdapter.js +2 -2
  287. package/modules/impactifyBidAdapter.js +1 -1
  288. package/modules/improvedigitalBidAdapter.js +5 -2
  289. package/modules/imuIdSystem.js +40 -28
  290. package/modules/imuIdSystem.md +1 -0
  291. package/modules/inskinBidAdapter.js +1 -1
  292. package/modules/integr8BidAdapter.js +2 -2
  293. package/modules/intentIqIdSystem.js +2 -2
  294. package/modules/interactiveOffersBidAdapter.js +1 -1
  295. package/modules/invisiblyAnalyticsAdapter.js +1 -1
  296. package/modules/iqmBidAdapter.js +1 -1
  297. package/modules/ixBidAdapter.js +15 -15
  298. package/modules/kargoAnalyticsAdapter.js +1 -1
  299. package/modules/kargoBidAdapter.js +4 -5
  300. package/modules/konduitAnalyticsAdapter.js +1 -1
  301. package/modules/krushmediaBidAdapter.js +2 -2
  302. package/modules/kueezBidAdapter.js +2 -2
  303. package/modules/lassoBidAdapter.js +3 -3
  304. package/modules/livewrappedAnalyticsAdapter.js +4 -4
  305. package/modules/liveyieldAnalyticsAdapter.js +1 -1
  306. package/modules/lkqdBidAdapter.js +3 -3
  307. package/modules/loganBidAdapter.js +2 -2
  308. package/modules/luponmediaBidAdapter.js +3 -3
  309. package/modules/malltvAnalyticsAdapter.js +1 -1
  310. package/modules/malltvBidAdapter.js +2 -2
  311. package/modules/marsmediaAnalyticsAdapter.js +1 -1
  312. package/modules/mediafuseBidAdapter.js +8 -8
  313. package/modules/mediakeysBidAdapter.js +2 -2
  314. package/modules/medianetAnalyticsAdapter.js +1 -1
  315. package/modules/merkleIdSystem.js +2 -2
  316. package/modules/mgidBidAdapter.js +2 -2
  317. package/modules/microadBidAdapter.js +1 -1
  318. package/modules/mobfoxpbBidAdapter.js +2 -2
  319. package/modules/newspassidBidAdapter.js +1 -1
  320. package/modules/nextMillenniumBidAdapter.js +21 -2
  321. package/modules/nobidBidAdapter.js +3 -3
  322. package/modules/novatiqIdSystem.js +1 -1
  323. package/modules/oguryBidAdapter.js +1 -1
  324. package/modules/ooloAnalyticsAdapter.js +1 -1
  325. package/modules/open8BidAdapter.js +1 -1
  326. package/modules/openwebBidAdapter.js +1 -1
  327. package/modules/openxAnalyticsAdapter.js +6 -745
  328. package/modules/openxAnalyticsAdapter.md +4 -0
  329. package/modules/openxBidAdapter.js +3 -5
  330. package/modules/openxOrtbBidAdapter.js +8 -4
  331. package/modules/operaadsBidAdapter.js +1 -1
  332. package/modules/optimonAnalyticsAdapter.js +1 -1
  333. package/modules/ozoneBidAdapter.js +102 -271
  334. package/modules/ozoneBidAdapter.md +37 -0
  335. package/modules/pianoDmpAnalyticsAdapter.js +1 -1
  336. package/modules/pixfutureBidAdapter.js +1 -1
  337. package/modules/prebidServerBidAdapter/index.js +7 -7
  338. package/modules/prebidmanagerAnalyticsAdapter.js +2 -2
  339. package/modules/priceFloors.js +1 -1
  340. package/modules/pubmaticAnalyticsAdapter.js +2 -2
  341. package/modules/pubmaticBidAdapter.js +28 -8
  342. package/modules/pubperfAnalyticsAdapter.js +1 -1
  343. package/modules/pubstackAnalyticsAdapter.js +1 -1
  344. package/modules/pubwiseAnalyticsAdapter.js +2 -2
  345. package/modules/pubwiseBidAdapter.js +3 -3
  346. package/modules/pubxBidAdapter.js +1 -1
  347. package/modules/pubxaiAnalyticsAdapter.js +3 -3
  348. package/modules/pulsepointAnalyticsAdapter.js +1 -1
  349. package/modules/pulsepointBidAdapter.js +1 -1
  350. package/modules/quantcastIdSystem.js +1 -1
  351. package/modules/radsBidAdapter.js +1 -1
  352. package/modules/realvuAnalyticsAdapter.js +1 -1
  353. package/modules/relaidoBidAdapter.js +23 -18
  354. package/modules/relevantAnalyticsAdapter.js +1 -1
  355. package/modules/revcontentBidAdapter.js +1 -1
  356. package/modules/richaudienceBidAdapter.js +1 -1
  357. package/modules/riseBidAdapter.js +8 -5
  358. package/modules/riseBidAdapter.md +3 -1
  359. package/modules/rivrAnalyticsAdapter.js +1 -1
  360. package/modules/roxotAnalyticsAdapter.js +1 -1
  361. package/modules/rtbhouseBidAdapter.js +1 -1
  362. package/modules/rubiconAnalyticsAdapter.js +1 -1
  363. package/modules/rubiconBidAdapter.js +2 -2
  364. package/modules/scaleableAnalyticsAdapter.js +1 -1
  365. package/modules/schain.js +1 -1
  366. package/modules/sharethroughAnalyticsAdapter.js +1 -1
  367. package/modules/sharethroughBidAdapter.js +3 -3
  368. package/modules/shinezBidAdapter.js +2 -2
  369. package/modules/showheroes-bsBidAdapter.js +131 -49
  370. package/modules/showheroes-bsBidAdapter.md +49 -0
  371. package/modules/sigmoidAnalyticsAdapter.js +1 -1
  372. package/modules/sirdataRtdProvider.js +3 -3
  373. package/modules/sizeMappingV2.js +1 -1
  374. package/modules/smaatoBidAdapter.js +2 -2
  375. package/modules/smartxBidAdapter.js +2 -2
  376. package/modules/snigelBidAdapter.js +150 -0
  377. package/modules/snigelBidAdapter.md +46 -0
  378. package/modules/sonobiAnalyticsAdapter.js +2 -2
  379. package/modules/sonobiBidAdapter.js +3 -3
  380. package/modules/sovrnAnalyticsAdapter.js +1 -1
  381. package/modules/spotxBidAdapter.js +5 -5
  382. package/modules/sspBCBidAdapter.js +15 -18
  383. package/modules/staqAnalyticsAdapter.js +2 -2
  384. package/modules/synacormediaBidAdapter.js +1 -1
  385. package/modules/taboolaBidAdapter.js +1 -1
  386. package/modules/tappxBidAdapter.js +4 -4
  387. package/modules/targetVideoBidAdapter.js +1 -1
  388. package/modules/terceptAnalyticsAdapter.js +1 -1
  389. package/modules/theAdxBidAdapter.js +2 -2
  390. package/modules/tpmnBidAdapter.js +1 -1
  391. package/modules/trionBidAdapter.js +2 -2
  392. package/modules/tripleliftBidAdapter.js +46 -20
  393. package/modules/trustpidSystem.js +2 -2
  394. package/modules/ttdBidAdapter.js +41 -26
  395. package/modules/ttdBidAdapter.md +4 -10
  396. package/modules/ucfunnelAnalyticsAdapter.js +1 -1
  397. package/modules/underdogmediaBidAdapter.js +1 -1
  398. package/modules/userId/eids.js +5 -0
  399. package/modules/userId/index.js +11 -7
  400. package/modules/vdoaiBidAdapter.js +1 -1
  401. package/modules/vidazooBidAdapter.js +9 -5
  402. package/modules/videoheroesBidAdapter.js +1 -1
  403. package/modules/vidoomyBidAdapter.js +1 -1
  404. package/modules/visxBidAdapter.js +1 -1
  405. package/modules/vrtcalBidAdapter.js +1 -1
  406. package/modules/weboramaRtdProvider.js +3 -3
  407. package/modules/winrBidAdapter.js +1 -1
  408. package/modules/yahoosspBidAdapter.js +4 -3
  409. package/modules/yandexBidAdapter.js +1 -1
  410. package/modules/yieldmoBidAdapter.js +3 -3
  411. package/modules/yieldoneAnalyticsAdapter.js +1 -1
  412. package/modules/yieldoneBidAdapter.js +2 -2
  413. package/modules/yuktamediaAnalyticsAdapter.js +1 -1
  414. package/modules/zeta_global_sspAnalyticsAdapter.js +1 -1
  415. package/modules/zeta_global_sspBidAdapter.js +25 -22
  416. package/package.json +4 -3
  417. package/src/Renderer.js +1 -1
  418. package/src/adapterManager.js +3 -3
  419. package/src/adapters/bidderFactory.js +1 -0
  420. package/src/auction.js +2 -2
  421. package/src/bidfactory.js +1 -1
  422. package/src/config.js +7 -7
  423. package/src/native.js +53 -58
  424. package/src/sizeMapping.js +1 -1
  425. package/src/targeting.js +1 -1
  426. package/src/userSync.js +1 -1
  427. package/src/utils.js +1 -1
  428. package/test/mocks/analyticsStub.js +1 -1
  429. package/test/spec/AnalyticsAdapter_spec.js +1 -1
  430. package/test/spec/config_spec.js +4 -0
  431. package/test/spec/modules/adagioBidAdapter_spec.js +2 -0
  432. package/test/spec/modules/adnuntiusBidAdapter_spec.js +7 -3
  433. package/test/spec/modules/adtelligentBidAdapter_spec.js +1 -0
  434. package/test/spec/modules/adtrgtmeBidAdapter_spec.js +802 -0
  435. package/test/spec/modules/adyoulikeBidAdapter_spec.js +8 -3
  436. package/test/spec/modules/andBeyondMediaBidAdapter_spec.js +400 -0
  437. package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +17 -1
  438. package/test/spec/modules/boldwinBidAdapter_spec.js +2 -1
  439. package/test/spec/modules/browsiRtdProvider_spec.js +40 -1
  440. package/test/spec/modules/c1xBidAdapter_spec.js +189 -0
  441. package/test/spec/modules/cleanioRtdProvider_spec.js +23 -0
  442. package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -1
  443. package/test/spec/modules/consumableBidAdapter_spec.js +139 -0
  444. package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
  445. package/test/spec/modules/criteoBidAdapter_spec.js +169 -38
  446. package/test/spec/modules/datawrkzBidAdapter_spec.js +656 -0
  447. package/test/spec/modules/eids_spec.js +32 -0
  448. package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +2 -2
  449. package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +2 -1
  450. package/test/spec/modules/improvedigitalBidAdapter_spec.js +4 -4
  451. package/test/spec/modules/imuIdSystem_spec.js +20 -4
  452. package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +8 -3
  453. package/test/spec/modules/kargoBidAdapter_spec.js +11 -2
  454. package/test/spec/modules/konduitAnalyticsAdapter_spec.js +2 -1
  455. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +17 -0
  456. package/test/spec/modules/openxAnalyticsAdapter_spec.js +6 -638
  457. package/test/spec/modules/openxOrtbBidAdapter_spec.js +32 -1
  458. package/test/spec/modules/optimonAnalyticsAdapter_spec.js +2 -1
  459. package/test/spec/modules/ozoneBidAdapter_spec.js +367 -511
  460. package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -0
  461. package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +2 -1
  462. package/test/spec/modules/pubmaticBidAdapter_spec.js +111 -5
  463. package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +2 -1
  464. package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +2 -1
  465. package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +3 -3
  466. package/test/spec/modules/relaidoBidAdapter_spec.js +40 -33
  467. package/test/spec/modules/riseBidAdapter_spec.js +17 -0
  468. package/test/spec/modules/sharethroughBidAdapter_spec.js +10 -1
  469. package/test/spec/modules/showheroes-bsBidAdapter_spec.js +173 -2
  470. package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +1 -1
  471. package/test/spec/modules/snigelBidAdapter_spec.js +296 -0
  472. package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +2 -1
  473. package/test/spec/modules/sspBCBidAdapter_spec.js +2 -2
  474. package/test/spec/modules/tripleliftBidAdapter_spec.js +378 -10
  475. package/test/spec/modules/ttdBidAdapter_spec.js +113 -34
  476. package/test/spec/modules/userId_spec.js +38 -2
  477. package/test/spec/modules/vidazooBidAdapter_spec.js +39 -24
  478. package/test/spec/modules/yahoosspBidAdapter_spec.js +13 -0
  479. package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -1
  480. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +61 -2
  481. package/test/spec/native_spec.js +96 -0
  482. package/test/spec/unit/core/bidderFactory_spec.js +27 -2
  483. package/webpack.conf.js +47 -11
@@ -0,0 +1,633 @@
1
+ import { deepAccess, getBidIdParameter, isArray, getUniqueIdentifierStr, contains } from '../src/utils.js';
2
+ import { config } from '../src/config.js';
3
+ import { Renderer } from '../src/Renderer.js';
4
+ import { registerBidder } from '../src/adapters/bidderFactory.js';
5
+ import { createBid } from '../src/bidfactory.js';
6
+ import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
7
+ import CONSTANTS from '../src/constants.json';
8
+ import { OUTSTREAM, INSTREAM } from '../src/video.js';
9
+
10
+ const BIDDER_CODE = 'datawrkz';
11
+ const ALIASES = [];
12
+ const ENDPOINT_URL = 'https://at.datawrkz.com/exchange/openrtb23/';
13
+ const RENDERER_URL = 'https://js.datawrkz.com/prebid/osRenderer.min.js';
14
+ const OUTSTREAM_TYPES = ['inline', 'slider_top_left', 'slider_top_right', 'slider_bottom_left', 'slider_bottom_right', 'interstitial_close', 'listicle']
15
+ const OUTSTREAM_MIMES = ['video/mp4']
16
+ const SUPPORTED_AD_TYPES = [BANNER, NATIVE, VIDEO];
17
+
18
+ export const spec = {
19
+ code: BIDDER_CODE,
20
+ aliases: ALIASES,
21
+ supportedMediaTypes: SUPPORTED_AD_TYPES,
22
+ /**
23
+ * Determines whether or not the given bid request is valid.
24
+ *
25
+ * @param {object} bid The bid to validate.
26
+ * @return boolean True if this is a valid bid, and false otherwise.
27
+ */
28
+ isBidRequestValid: function(bid) {
29
+ return !!(bid.params && bid.params.site_id && (deepAccess(bid, 'mediaTypes.video.context') != 'adpod'));
30
+ },
31
+
32
+ /**
33
+ * Make a server request from the list of BidRequests.
34
+ *
35
+ * @param {BidRequest[]} bidRequests A non-empty list of bid requests which should be sent to the Server.
36
+ * @return ServerRequest Info describing the request to the server.
37
+ */
38
+ buildRequests: function(validBidRequests, bidderRequest) {
39
+ let requests = [];
40
+
41
+ if (validBidRequests.length > 0) {
42
+ validBidRequests.forEach(bidRequest => {
43
+ if (!bidRequest.mediaTypes) return;
44
+ if (bidRequest.mediaTypes.banner && ((bidRequest.mediaTypes.banner.sizes && bidRequest.mediaTypes.banner.sizes.length != 0) ||
45
+ (bidRequest.sizes))) {
46
+ requests.push(buildBannerRequest(bidRequest, bidderRequest));
47
+ } else if (bidRequest.mediaTypes.native) {
48
+ requests.push(buildNativeRequest(bidRequest, bidderRequest));
49
+ } else if (bidRequest.mediaTypes.video) {
50
+ requests.push(buildVideoRequest(bidRequest, bidderRequest));
51
+ }
52
+ });
53
+ }
54
+ return requests;
55
+ },
56
+
57
+ /**
58
+ * Unpack the response from the server into a list of bids.
59
+ *
60
+ * @param {*} serverResponse A successful response from the server.
61
+ * @return {Bid[]} An array of bids which were nested inside the server.
62
+ */
63
+ interpretResponse: function(serverResponse, request) {
64
+ var bidResponses = [];
65
+ let bidRequest = request.bidRequest
66
+ let bidResponse = serverResponse.body;
67
+
68
+ // valid object?
69
+ if ((!bidResponse || !bidResponse.id) || (!bidResponse.seatbid || bidResponse.seatbid.length === 0 ||
70
+ !bidResponse.seatbid[0].bid || bidResponse.seatbid[0].bid.length === 0)) {
71
+ return [];
72
+ }
73
+
74
+ if (getMediaTypeOfResponse(bidRequest) == BANNER) {
75
+ bidResponses = buildBannerResponse(bidRequest, bidResponse);
76
+ } else if (getMediaTypeOfResponse(bidRequest) == NATIVE) {
77
+ bidResponses = buildNativeResponse(bidRequest, bidResponse);
78
+ } else if (getMediaTypeOfResponse(bidRequest) == VIDEO) {
79
+ bidResponses = buildVideoResponse(bidRequest, bidResponse);
80
+ }
81
+ return bidResponses;
82
+ },
83
+ }
84
+
85
+ /* Generate bid request for banner adunit */
86
+ function buildBannerRequest(bidRequest, bidderRequest) {
87
+ let bidFloor = Number(getBidIdParameter('bidfloor', bidRequest.params));
88
+
89
+ let adW = 0;
90
+ let adH = 0;
91
+
92
+ let bannerSizes = deepAccess(bidRequest, 'mediaTypes.banner.sizes');
93
+ let bidSizes = isArray(bannerSizes) ? bannerSizes : bidRequest.sizes;
94
+ if (isArray(bidSizes)) {
95
+ if (bidSizes.length === 2 && typeof bidSizes[0] === 'number' && typeof bidSizes[1] === 'number') {
96
+ adW = parseInt(bidSizes[0]);
97
+ adH = parseInt(bidSizes[1]);
98
+ } else {
99
+ adW = parseInt(bidSizes[0][0]);
100
+ adH = parseInt(bidSizes[0][1]);
101
+ }
102
+ }
103
+
104
+ var deals = [];
105
+ if (bidRequest.params.deals && bidRequest.params.deals.length > 0) {
106
+ deals = bidRequest.params.deals;
107
+ }
108
+
109
+ const imp = [{
110
+ id: bidRequest.bidId,
111
+ banner: {
112
+ w: adW,
113
+ h: adH
114
+ },
115
+ bidfloor: bidFloor,
116
+ pmp: {
117
+ deals: deals
118
+ }
119
+ }];
120
+
121
+ bidRequest.requestedMediaType = BANNER;
122
+ const scriptUrl = generateScriptUrl(bidRequest);
123
+ const payloadString = generatePayload(imp, bidderRequest);
124
+
125
+ return {
126
+ method: 'POST',
127
+ url: scriptUrl,
128
+ data: payloadString,
129
+ bidRequest
130
+ };
131
+ }
132
+
133
+ /* Generate bid request for native adunit */
134
+ function buildNativeRequest(bidRequest, bidderRequest) {
135
+ let counter = 0;
136
+ let assets = [];
137
+
138
+ let bidFloor = Number(getBidIdParameter('bidfloor', bidRequest.params));
139
+
140
+ let title = deepAccess(bidRequest, 'mediaTypes.native.title');
141
+ if (title && title.len) {
142
+ assets.push(generateNativeTitleObj(title, ++counter));
143
+ }
144
+ let image = deepAccess(bidRequest, 'mediaTypes.native.image');
145
+ if (image) {
146
+ assets.push(generateNativeImgObj(image, 'image', ++counter));
147
+ }
148
+ let icon = deepAccess(bidRequest, 'mediaTypes.native.icon');
149
+ if (icon) {
150
+ assets.push(generateNativeImgObj(icon, 'icon', ++counter));
151
+ }
152
+ let sponsoredBy = deepAccess(bidRequest, 'mediaTypes.native.sponsoredBy');
153
+ if (sponsoredBy) {
154
+ assets.push(generateNativeDataObj(sponsoredBy, 'sponsored', ++counter));
155
+ }
156
+ let cta = deepAccess(bidRequest, 'mediaTypes.native.cta');
157
+ if (cta) {
158
+ assets.push(generateNativeDataObj(cta, 'cta', ++counter));
159
+ }
160
+ let body = deepAccess(bidRequest, 'mediaTypes.native.body');
161
+ if (body) {
162
+ assets.push(generateNativeDataObj(body, 'desc', ++counter));
163
+ }
164
+
165
+ let request = JSON.stringify({assets: assets})
166
+ const native = {
167
+ request: request
168
+ }
169
+
170
+ var deals = [];
171
+ if (bidRequest.params.deals && bidRequest.params.deals.length > 0) {
172
+ deals = bidRequest.params.deals;
173
+ }
174
+
175
+ const imp = [{
176
+ id: bidRequest.bidId,
177
+ native: native,
178
+ bidfloor: bidFloor,
179
+ pmp: {
180
+ deals: deals
181
+ }
182
+ }];
183
+
184
+ bidRequest.requestedMediaType = NATIVE;
185
+ bidRequest.assets = assets;
186
+ const scriptUrl = generateScriptUrl(bidRequest);
187
+ const payloadString = generatePayload(imp, bidderRequest);
188
+
189
+ return {
190
+ method: 'POST',
191
+ url: scriptUrl,
192
+ data: payloadString,
193
+ bidRequest
194
+ };
195
+ }
196
+
197
+ /* Generate bid request for video adunit */
198
+ function buildVideoRequest(bidRequest, bidderRequest) {
199
+ let bidFloor = Number(getBidIdParameter('bidfloor', bidRequest.params));
200
+
201
+ let sizeObj = getVideoAdUnitSize(bidRequest);
202
+
203
+ const video = {
204
+ w: sizeObj.adW,
205
+ h: sizeObj.adH,
206
+ api: deepAccess(bidRequest, 'mediaTypes.video.api'),
207
+ mimes: deepAccess(bidRequest, 'mediaTypes.video.mimes'),
208
+ protocols: deepAccess(bidRequest, 'mediaTypes.video.protocols'),
209
+ playbackmethod: deepAccess(bidRequest, 'mediaTypes.video.playbackmethod'),
210
+ minduration: deepAccess(bidRequest, 'mediaTypes.video.minduration'),
211
+ maxduration: deepAccess(bidRequest, 'mediaTypes.video.maxduration'),
212
+ startdelay: deepAccess(bidRequest, 'mediaTypes.video.startdelay'),
213
+ minbitrate: deepAccess(bidRequest, 'mediaTypes.video.minbitrate'),
214
+ maxbitrate: deepAccess(bidRequest, 'mediaTypes.video.maxbitrate'),
215
+ delivery: deepAccess(bidRequest, 'mediaTypes.video.delivery'),
216
+ linearity: deepAccess(bidRequest, 'mediaTypes.video.linearity'),
217
+ placement: deepAccess(bidRequest, 'mediaTypes.video.placement'),
218
+ skip: deepAccess(bidRequest, 'mediaTypes.video.skip'),
219
+ skipafter: deepAccess(bidRequest, 'mediaTypes.video.skipafter')
220
+ };
221
+
222
+ let context = deepAccess(bidRequest, 'mediaTypes.video.context');
223
+ if (context == 'outstream' && !bidRequest.renderer) video.mimes = OUTSTREAM_MIMES
224
+
225
+ var imp = [];
226
+ var deals = [];
227
+ if (bidRequest.params.deals && bidRequest.params.deals.length > 0) {
228
+ deals = bidRequest.params.deals;
229
+ }
230
+
231
+ if (context != 'adpod') {
232
+ imp.push({
233
+ id: bidRequest.bidId,
234
+ video: video,
235
+ bidfloor: bidFloor,
236
+ pmp: {
237
+ deals: deals
238
+ }
239
+ });
240
+ }
241
+ bidRequest.requestedMediaType = VIDEO;
242
+ const scriptUrl = generateScriptUrl(bidRequest);
243
+ const payloadString = generatePayload(imp, bidderRequest);
244
+
245
+ return {
246
+ method: 'POST',
247
+ url: scriptUrl,
248
+ data: payloadString,
249
+ bidRequest
250
+ };
251
+ }
252
+
253
+ /* Convert video player size to bid request compatible format */
254
+ function getVideoAdUnitSize(bidRequest) {
255
+ var adH = 0;
256
+ var adW = 0;
257
+ let playerSize = deepAccess(bidRequest, 'mediaTypes.video.playerSize');
258
+ if (isArray(playerSize)) {
259
+ if (playerSize.length === 2 && typeof playerSize[0] === 'number' && typeof playerSize[1] === 'number') {
260
+ adW = parseInt(playerSize[0]);
261
+ adH = parseInt(playerSize[1]);
262
+ } else {
263
+ adW = parseInt(playerSize[0][0]);
264
+ adH = parseInt(playerSize[0][1]);
265
+ }
266
+ }
267
+ return {adH: adH, adW: adW}
268
+ }
269
+
270
+ /* Get mediatype of the adunit from request */
271
+ function getMediaTypeOfResponse(bidRequest) {
272
+ if (bidRequest.requestedMediaType == BANNER) return BANNER;
273
+ else if (bidRequest.requestedMediaType == NATIVE) return NATIVE;
274
+ else if (bidRequest.requestedMediaType == VIDEO) return VIDEO;
275
+ else return '';
276
+ }
277
+
278
+ /* Generate endpoint url */
279
+ function generateScriptUrl(bidRequest) {
280
+ let queryParams = 'hb=1';
281
+ let siteId = getBidIdParameter('site_id', bidRequest.params);
282
+ return ENDPOINT_URL + siteId + '?' + queryParams;
283
+ }
284
+
285
+ /* Generate request payload for the adunit */
286
+ function generatePayload(imp, bidderRequest) {
287
+ let domain = window.location.host;
288
+ let page = window.location.host + window.location.pathname + location.search + location.hash;
289
+
290
+ const site = {
291
+ domain: domain,
292
+ page: page,
293
+ publisher: {}
294
+ };
295
+
296
+ let regs = {ext: {}}
297
+
298
+ if (bidderRequest.uspConsent) {
299
+ regs.ext.us_privacy = bidderRequest.uspConsent;
300
+ }
301
+ if (bidderRequest.gdprConsent && typeof bidderRequest.gdprConsent.gdprApplies === 'boolean') {
302
+ regs.ext.gdpr = bidderRequest.gdprConsent.gdprApplies ? '1' : '0';
303
+ }
304
+
305
+ if (config.getConfig('coppa') === true) {
306
+ regs.coppa = '1';
307
+ }
308
+
309
+ const device = {
310
+ ua: window.navigator.userAgent
311
+ };
312
+
313
+ const payload = {
314
+ id: getUniqueIdentifierStr(),
315
+ imp: imp,
316
+ site: site,
317
+ device: device,
318
+ regs: regs
319
+ };
320
+
321
+ return JSON.stringify(payload);
322
+ }
323
+
324
+ /* Generate image asset object */
325
+ function generateNativeImgObj(obj, type, id) {
326
+ let adW = 0;
327
+ let adH = 0;
328
+ let bidSizes = obj.sizes;
329
+
330
+ var typeId;
331
+ if (type == 'icon') typeId = 1;
332
+ else if (type == 'image') typeId = 3;
333
+
334
+ if (isArray(bidSizes)) {
335
+ if (bidSizes.length === 2 && typeof bidSizes[0] === 'number' && typeof bidSizes[1] === 'number') {
336
+ adW = parseInt(bidSizes[0]);
337
+ adH = parseInt(bidSizes[1]);
338
+ } else {
339
+ adW = parseInt(bidSizes[0][0]);
340
+ adH = parseInt(bidSizes[0][1]);
341
+ }
342
+ }
343
+
344
+ let required = obj.required ? 1 : 0;
345
+ let image = {
346
+ type: parseInt(typeId),
347
+ w: adW,
348
+ h: adH
349
+ }
350
+ return {
351
+ id: id,
352
+ required: required,
353
+ img: image
354
+ };
355
+ }
356
+
357
+ /* Generate title asset object */
358
+ function generateNativeTitleObj(obj, id) {
359
+ let required = obj.required ? 1 : 0;
360
+ let title = {
361
+ len: obj.len
362
+ };
363
+ return {
364
+ id: id,
365
+ required: required,
366
+ title: title
367
+ };
368
+ }
369
+
370
+ /* Generate data asset object */
371
+ function generateNativeDataObj(obj, type, id) {
372
+ var typeId;
373
+ switch (type) {
374
+ case 'sponsored': typeId = 1;
375
+ break;
376
+ case 'desc' : typeId = 2;
377
+ break;
378
+ case 'cta' : typeId = 12;
379
+ break;
380
+ }
381
+
382
+ let required = obj.required ? 1 : 0;
383
+ let data = {
384
+ type: typeId
385
+ };
386
+ if (typeId == 2 && obj.len) {
387
+ data.len = parseInt(obj.len);
388
+ }
389
+ return {
390
+ id: id,
391
+ required: required,
392
+ data: data
393
+ };
394
+ }
395
+
396
+ /* Convert banner bid response to compatible format */
397
+ function buildBannerResponse(bidRequest, bidResponse) {
398
+ const bidResponses = [];
399
+ bidResponse.seatbid[0].bid.forEach(function (bidderBid) {
400
+ let responseCPM;
401
+ let placementCode = '';
402
+
403
+ if (bidRequest) {
404
+ let bidResponse = createBid(1);
405
+ placementCode = bidRequest.placementCode;
406
+ bidRequest.status = CONSTANTS.STATUS.GOOD;
407
+ responseCPM = parseFloat(bidderBid.price);
408
+ if (responseCPM === 0 || isNaN(responseCPM)) {
409
+ let bid = createBid(2);
410
+ bid.requestId = bidRequest.bidId;
411
+ bid.bidderCode = bidRequest.bidder;
412
+ bidResponses.push(bid);
413
+ return;
414
+ }
415
+ let bidSizes = (deepAccess(bidRequest, 'mediaTypes.banner.sizes')) ? deepAccess(bidRequest, 'mediaTypes.banner.sizes') : bidRequest.sizes;
416
+ bidResponse.requestId = bidRequest.bidId
417
+ bidResponse.transactionId = bidRequest.transactionId
418
+ bidResponse.placementCode = placementCode;
419
+ bidResponse.cpm = responseCPM;
420
+ bidResponse.size = bidSizes;
421
+ bidResponse.width = parseInt(bidderBid.w);
422
+ bidResponse.height = parseInt(bidderBid.h);
423
+ let responseAd = bidderBid.adm;
424
+ let responseNurl = '<img src="' + bidderBid.nurl + '" height="0px" width="0px">';
425
+ bidResponse.ad = decodeURIComponent(responseAd + responseNurl);
426
+ bidResponse.creativeId = bidderBid.id;
427
+ bidResponse.bidderCode = bidRequest.bidder;
428
+ bidResponse.ttl = 300;
429
+ bidResponse.netRevenue = true;
430
+ bidResponse.currency = 'USD';
431
+ bidResponse.mediaType = BANNER;
432
+ bidResponses.push(bidResponse);
433
+ }
434
+ });
435
+ return bidResponses;
436
+ }
437
+
438
+ /* Convert native bid response to compatible format */
439
+ function buildNativeResponse(bidRequest, response) {
440
+ const bidResponses = [];
441
+ response.seatbid[0].bid.forEach(function (bidderBid) {
442
+ let responseCPM;
443
+ let placementCode = '';
444
+
445
+ if (bidRequest) {
446
+ let bidResponse = createBid(1);
447
+ placementCode = bidRequest.placementCode;
448
+ bidRequest.status = CONSTANTS.STATUS.GOOD;
449
+ responseCPM = parseFloat(bidderBid.price);
450
+ if (responseCPM === 0 || isNaN(responseCPM)) {
451
+ let bid = createBid(2);
452
+ bid.requestId = bidRequest.bidId;
453
+ bid.bidderCode = bidRequest.bidder;
454
+ bidResponses.push(bid);
455
+ return;
456
+ }
457
+ bidResponse.requestId = bidRequest.bidId
458
+ bidResponse.transactionId = bidRequest.transactionId
459
+ bidResponse.placementCode = placementCode;
460
+ bidResponse.cpm = responseCPM;
461
+
462
+ let nativeResponse = JSON.parse(bidderBid.adm).native;
463
+
464
+ const native = {
465
+ clickUrl: nativeResponse.link.url,
466
+ impressionTrackers: nativeResponse.imptrackers
467
+ };
468
+
469
+ nativeResponse.assets.forEach(function(asset) {
470
+ let keyVal = getNativeAssestObj(asset, bidRequest.assets);
471
+ native[keyVal.key] = keyVal.value;
472
+ });
473
+
474
+ bidResponse.creativeId = bidderBid.id;
475
+ bidResponse.bidderCode = bidRequest.bidder;
476
+ bidResponse.ttl = 300;
477
+ if (bidRequest.sizes) { bidResponse.size = bidRequest.sizes; }
478
+ bidResponse.netRevenue = true;
479
+ bidResponse.currency = 'USD';
480
+ bidResponse.native = native;
481
+ bidResponse.mediaType = NATIVE;
482
+ bidResponses.push(bidResponse);
483
+ }
484
+ });
485
+ return bidResponses;
486
+ }
487
+
488
+ /* Convert video bid response to compatible format */
489
+ function buildVideoResponse(bidRequest, response) {
490
+ const bidResponses = [];
491
+ response.seatbid[0].bid.forEach(function (bidderBid) {
492
+ let responseCPM;
493
+ let placementCode = '';
494
+
495
+ if (bidRequest) {
496
+ let bidResponse = createBid(1);
497
+ placementCode = bidRequest.placementCode;
498
+ bidRequest.status = CONSTANTS.STATUS.GOOD;
499
+ responseCPM = parseFloat(bidderBid.price);
500
+ if (responseCPM === 0 || isNaN(responseCPM)) {
501
+ let bid = createBid(2);
502
+ bid.requestId = bidRequest.bidId;
503
+ bid.bidderCode = bidRequest.bidder;
504
+ bidResponses.push(bid);
505
+ return;
506
+ }
507
+ let context = bidRequest.mediaTypes.video.context;
508
+
509
+ bidResponse.requestId = bidRequest.bidId
510
+ bidResponse.transactionId = bidRequest.transactionId
511
+ bidResponse.placementCode = placementCode;
512
+ bidResponse.cpm = responseCPM;
513
+
514
+ let vastXml = decodeURIComponent(bidderBid.adm);
515
+
516
+ bidResponse.creativeId = bidderBid.id;
517
+ bidResponse.bidderCode = bidRequest.bidder;
518
+ bidResponse.ttl = 300;
519
+ bidResponse.netRevenue = true;
520
+ bidResponse.currency = 'USD';
521
+ var ext = bidderBid.ext;
522
+ var vastUrl = '';
523
+ if (ext) {
524
+ vastUrl = ext.vast_url;
525
+ }
526
+ var adUnitCode = bidRequest.adUnitCode;
527
+ var sizeObj = getVideoAdUnitSize(bidRequest);
528
+
529
+ bidResponse.height = sizeObj.adH;
530
+ bidResponse.width = sizeObj.adW;
531
+
532
+ switch (context) {
533
+ case OUTSTREAM:
534
+ var outstreamType = contains(OUTSTREAM_TYPES, bidRequest.params.outstreamType) ? bidRequest.params.outstreamType : ''
535
+ bidResponse.outstreamType = outstreamType;
536
+ bidResponse.ad = vastXml;
537
+ if (!bidRequest.renderer) {
538
+ const renderer = Renderer.install({
539
+ id: bidderBid.id,
540
+ url: RENDERER_URL,
541
+ config: bidRequest.params.outstreamConfig || {},
542
+ loaded: false,
543
+ adUnitCode
544
+ });
545
+ renderer.setRender(outstreamRender)
546
+ bidResponse.renderer = renderer;
547
+ } else { bidResponse.adResponse = vastXml; }
548
+ break;
549
+ case INSTREAM:
550
+ bidResponse.vastUrl = vastUrl;
551
+ bidResponse.adserverTargeting = setTargeting(vastUrl);
552
+ break;
553
+ }
554
+ bidResponse.mediaType = VIDEO;
555
+ bidResponses.push(bidResponse);
556
+ }
557
+ });
558
+ return bidResponses;
559
+ }
560
+
561
+ /* Generate renderer for outstream ad unit */
562
+ function outstreamRender(bid) {
563
+ bid.renderer.push(() => {
564
+ window.osRenderer({
565
+ adResponse: bid.ad,
566
+ height: bid.height,
567
+ width: bid.width,
568
+ targetId: bid.adUnitCode, // target div id to render video
569
+ outstreamType: bid.outstreamType,
570
+ options: bid.renderer.getConfig(),
571
+ });
572
+ });
573
+ }
574
+
575
+ /* Set targeting params used for instream video that is required to generate cache url */
576
+ function setTargeting(query) {
577
+ var targeting = {};
578
+ var hash;
579
+ var hashes = query.slice(query.indexOf('?') + 1).split('&');
580
+ for (var i = 0; i < hashes.length; i++) {
581
+ hash = hashes[i].split('=');
582
+ targeting['hb_' + hash[0]] = hash[1];
583
+ }
584
+ return targeting;
585
+ }
586
+
587
+ /* Get image type with respect to the id */
588
+ function getAssetImageType(id, assets) {
589
+ for (var i = 0; i < assets.length; i++) {
590
+ if (assets[i].id == id) {
591
+ if (assets[i].img.type == 1) { return 'icon'; } else if (assets[i].img.type == 3) { return 'image'; }
592
+ }
593
+ }
594
+ return '';
595
+ }
596
+
597
+ /* Get type of data asset with respect to the id */
598
+ function getAssetDataType(id, assets) {
599
+ for (var i = 0; i < assets.length; i++) {
600
+ if (assets[i].id == id) {
601
+ if (assets[i].data.type == 1) { return 'sponsored'; } else if (assets[i].data.type == 2) { return 'desc'; } else if (assets[i].data.type == 12) { return 'cta'; }
602
+ }
603
+ }
604
+ return '';
605
+ }
606
+
607
+ /* Convert response assests to compatible format */
608
+ function getNativeAssestObj(obj, assets) {
609
+ if (obj.title) {
610
+ return {
611
+ key: 'title',
612
+ value: obj.title.text
613
+ }
614
+ }
615
+ if (obj.data) {
616
+ return {
617
+ key: getAssetDataType(obj.id, assets),
618
+ value: obj.data.value
619
+ }
620
+ }
621
+ if (obj.img) {
622
+ return {
623
+ key: getAssetImageType(obj.id, assets),
624
+ value: {
625
+ url: obj.img.url,
626
+ height: obj.img.h,
627
+ width: obj.img.w
628
+ }
629
+ }
630
+ }
631
+ }
632
+
633
+ registerBidder(spec);