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,656 @@
1
+ import { expect } from 'chai';
2
+ import { config } from 'src/config.js';
3
+ import { spec } from 'modules/datawrkzBidAdapter.js';
4
+ import { newBidder } from 'src/adapters/bidderFactory.js';
5
+
6
+ const BIDDER_CODE = 'datawrkz';
7
+ const ENDPOINT_URL = 'https://at.datawrkz.com/exchange/openrtb23/';
8
+ const SITE_ID = 'site_id';
9
+ const FINAL_URL = ENDPOINT_URL + SITE_ID + '?hb=1';
10
+
11
+ describe('datawrkzAdapterTests', function () {
12
+ const adapter = newBidder(spec);
13
+
14
+ describe('inherited functions', function () {
15
+ it('exists and is a function', function () {
16
+ expect(adapter.callBids).to.exist.and.to.be.a('function');
17
+ });
18
+ });
19
+
20
+ describe('isBidRequestValid', function () {
21
+ let bid = {
22
+ 'bidder': BIDDER_CODE,
23
+ 'params': {
24
+ 'site_id': SITE_ID,
25
+ 'bidfloor': '1.0'
26
+ },
27
+ 'adUnitCode': 'adunit-code',
28
+ 'sizes': [[300, 250], [300, 600]],
29
+ 'bidId': '30b31c1838de1e',
30
+ 'bidderRequestId': '22edbae2733bf6',
31
+ 'auctionId': '1d1a030790a475',
32
+ };
33
+
34
+ it('should return true when required params found', function () {
35
+ expect(spec.isBidRequestValid(bid)).to.equal(true);
36
+ });
37
+
38
+ it('should return false when params not found', function () {
39
+ let bid = Object.assign({}, bid);
40
+ delete bid.params;
41
+ expect(spec.isBidRequestValid(bid)).to.equal(false);
42
+ });
43
+
44
+ it('should return false when required site_id param not found', function () {
45
+ let bid = Object.assign({}, bid);
46
+ bid.params = {'bidfloor': '1.0'}
47
+ expect(spec.isBidRequestValid(bid)).to.equal(false);
48
+ });
49
+
50
+ it('should return false when adunit is adpod video', function () {
51
+ let bid = Object.assign({}, bid);
52
+ bid.params = {'bidfloor': '1.0', 'site_id': SITE_ID};
53
+ bid.mediaTypes = {
54
+ 'video': {
55
+ 'context': 'adpod'
56
+ }
57
+ }
58
+ expect(spec.isBidRequestValid(bid)).to.equal(false);
59
+ });
60
+ });
61
+
62
+ describe('buildRequests', function () {
63
+ const consentString = '1YA-';
64
+ const bidderRequest = {
65
+ 'bidderCode': 'datawrkz',
66
+ 'auctionId': '1d1a030790a475',
67
+ 'bidderRequestId': '22edbae2733bf6',
68
+ 'timeout': 3000,
69
+ 'uspConsent': consentString,
70
+ 'gdprConsent': {'gdprApplies': true},
71
+ };
72
+ const bannerBidRequests = [{
73
+ 'bidder': BIDDER_CODE,
74
+ 'params': {'site_id': SITE_ID, 'bidfloor': 1.00},
75
+ 'mediaTypes': {'banner': {'sizes': [[300, 250], [300, 600]]}},
76
+ 'adUnitCode': 'adUnitCode',
77
+ 'transactionId': 'transactionId',
78
+ 'sizes': [[300, 250], [300, 600]],
79
+ 'bidId': 'bidId',
80
+ 'bidderRequestId': 'bidderRequestId',
81
+ 'auctionId': 'auctionId',
82
+ }];
83
+ const bannerBidRequestsSingleArraySlotAndDeals = [{
84
+ 'bidder': BIDDER_CODE,
85
+ 'params': {'site_id': SITE_ID, 'bidfloor': 1.00, 'deals': [{id: 'deal_1'}, {id: 'deal_2'}]},
86
+ 'mediaTypes': {'banner': {}},
87
+ 'adUnitCode': 'adUnitCode',
88
+ 'transactionId': 'transactionId',
89
+ 'sizes': [300, 250],
90
+ 'bidId': 'bidId',
91
+ 'bidderRequestId': 'bidderRequestId',
92
+ 'auctionId': 'auctionId',
93
+ }];
94
+ const nativeBidRequests = [{
95
+ 'bidder': BIDDER_CODE,
96
+ 'params': {'site_id': SITE_ID, 'bidfloor': 1.00},
97
+ 'mediaTypes': {'native': {
98
+ 'title': {'required': true, 'len': 80},
99
+ 'image': {'required': true, 'sizes': [[300, 250]]},
100
+ 'icon': {'required': true, 'sizes': [[50, 50]]},
101
+ 'sponsoredBy': {'required': true},
102
+ 'cta': {'required': true},
103
+ 'body': {'required': true, 'len': 100}
104
+ }},
105
+ 'adUnitCode': 'adUnitCode',
106
+ 'transactionId': 'transactionId',
107
+ 'bidId': 'bidId',
108
+ 'bidderRequestId': 'bidderRequestId',
109
+ 'auctionId': 'auctionId',
110
+ }];
111
+ const nativeBidRequestsSingleArraySlotAndDeals = [{
112
+ 'bidder': BIDDER_CODE,
113
+ 'params': {'site_id': SITE_ID, 'bidfloor': 1.00, 'deals': [{id: 'deal_1'}, {id: 'deal_2'}]},
114
+ 'mediaTypes': {'native': {
115
+ 'title': {'len': 80},
116
+ 'image': {'sizes': [300, 250]},
117
+ 'icon': {'sizes': [50, 50]},
118
+ 'sponsoredBy': {},
119
+ 'cta': {},
120
+ 'body': {'len': 100}
121
+ }},
122
+ 'adUnitCode': 'adUnitCode',
123
+ 'transactionId': 'transactionId',
124
+ 'bidId': 'bidId',
125
+ 'bidderRequestId': 'bidderRequestId',
126
+ 'auctionId': 'auctionId',
127
+ }];
128
+ const instreamVideoBidRequests = [{
129
+ 'bidder': BIDDER_CODE,
130
+ 'params': {'site_id': SITE_ID, 'bidfloor': 1.00},
131
+ 'mediaTypes': {'video': {'context': 'instream', 'playerSize': [[640, 480]]}},
132
+ 'adUnitCode': 'adUnitCode',
133
+ 'transactionId': 'transactionId',
134
+ 'bidId': 'bidId',
135
+ 'bidderRequestId': 'bidderRequestId',
136
+ 'auctionId': 'auctionId',
137
+ }];
138
+ const instreamVideoBidRequestsSingleArraySlotAndDeals = [{
139
+ 'bidder': BIDDER_CODE,
140
+ 'params': {'site_id': SITE_ID, 'bidfloor': 1.00, 'deals': [{id: 'deal_1'}, {id: 'deal_2'}]},
141
+ 'mediaTypes': {'video': {'context': 'instream', 'playerSize': [640, 480]}},
142
+ 'adUnitCode': 'adUnitCode',
143
+ 'transactionId': 'transactionId',
144
+ 'bidId': 'bidId',
145
+ 'bidderRequestId': 'bidderRequestId',
146
+ 'auctionId': 'auctionId',
147
+ }];
148
+ const outstreamVideoBidRequests = [{
149
+ 'bidder': BIDDER_CODE,
150
+ 'params': {'site_id': SITE_ID, 'bidfloor': 1.00},
151
+ 'mediaTypes': {'video': {'context': 'outstream', 'playerSize': [[640, 480]], 'mimes': ['video/mp4', 'video/x-flv']}},
152
+ 'adUnitCode': 'adUnitCode',
153
+ 'transactionId': 'transactionId',
154
+ 'bidId': 'bidId',
155
+ 'bidderRequestId': 'bidderRequestId',
156
+ 'auctionId': 'auctionId',
157
+ }];
158
+ const outstreamVideoBidRequestsSingleArraySlotAndDeals = [{
159
+ 'bidder': BIDDER_CODE,
160
+ 'params': {'site_id': SITE_ID, 'bidfloor': 1.00, 'deals': [{id: 'deal_1'}, {id: 'deal_2'}]},
161
+ 'mediaTypes': {'video': {'context': 'outstream', 'playerSize': [640, 480], 'mimes': ['video/mp4', 'video/x-flv']}},
162
+ 'adUnitCode': 'adUnitCode',
163
+ 'transactionId': 'transactionId',
164
+ 'bidId': 'bidId',
165
+ 'bidderRequestId': 'bidderRequestId',
166
+ 'auctionId': 'auctionId',
167
+ }];
168
+ const bidRequestsWithNoMediaType = [{
169
+ 'bidder': BIDDER_CODE,
170
+ 'params': {'site_id': SITE_ID, 'bidfloor': 1.00},
171
+ 'adUnitCode': 'adUnitCode',
172
+ 'transactionId': 'transactionId',
173
+ 'bidId': 'bidId',
174
+ 'bidderRequestId': 'bidderRequestId',
175
+ 'auctionId': 'auctionId',
176
+ }];
177
+
178
+ it('empty bid requests', function () {
179
+ const requests = spec.buildRequests([], bidderRequest);
180
+ assert.lengthOf(requests, 0);
181
+ });
182
+
183
+ it('mediaTypes missing in bid request', function () {
184
+ const requests = spec.buildRequests(bidRequestsWithNoMediaType, bidderRequest);
185
+ assert.lengthOf(requests, 0);
186
+ });
187
+
188
+ it('invalid media type in bid request', function () {
189
+ bidRequestsWithNoMediaType[0].mediaTypes = {'test': {}};
190
+ const requests = spec.buildRequests(bidRequestsWithNoMediaType, bidderRequest);
191
+ assert.lengthOf(requests, 0);
192
+ });
193
+
194
+ it('size missing in bid request for banner', function () {
195
+ delete bidRequestsWithNoMediaType[0].mediaTypes.test;
196
+ bidRequestsWithNoMediaType[0].mediaTypes.banner = {};
197
+ const requests = spec.buildRequests(bidRequestsWithNoMediaType, bidderRequest);
198
+ assert.lengthOf(requests, 0);
199
+ });
200
+
201
+ it('size array empty in bid request for banner', function () {
202
+ bidRequestsWithNoMediaType[0].mediaTypes.banner.sizes = [];
203
+ const requests = spec.buildRequests(bidRequestsWithNoMediaType, bidderRequest);
204
+ assert.lengthOf(requests, 0);
205
+ });
206
+
207
+ it('banner bidRequest with slot size as 2 dimensional array', function () {
208
+ sinon.stub(config, 'getConfig').withArgs('coppa').returns(true);
209
+ const requests = spec.buildRequests(bannerBidRequests, bidderRequest);
210
+ config.getConfig.restore();
211
+ const payload = JSON.parse(requests[0].data);
212
+ expect(requests[0].method).to.equal('POST');
213
+ expect(requests[0].url).to.equal(FINAL_URL);
214
+ expect(payload.imp).to.exist;
215
+ expect(payload).to.nested.include({'imp[0].banner.w': 300});
216
+ expect(payload).to.nested.include({'imp[0].banner.h': 250});
217
+ expect(payload).to.nested.include({'regs.ext.us_privacy': consentString});
218
+ expect(payload).to.nested.include({'regs.ext.gdpr': '1'});
219
+ expect(payload).to.nested.include({'regs.coppa': '1'});
220
+ expect(requests[0].bidRequest).to.exist;
221
+ expect(requests[0].bidRequest.requestedMediaType).to.equal('banner');
222
+ });
223
+
224
+ it('banner bidRequest with deals and slot size as 1 dimensional array', function () {
225
+ const requests = spec.buildRequests(bannerBidRequestsSingleArraySlotAndDeals, bidderRequest);
226
+ const payload = JSON.parse(requests[0].data);
227
+ expect(requests[0].method).to.equal('POST');
228
+ expect(requests[0].url).to.equal(FINAL_URL);
229
+ expect(payload.imp).to.exist;
230
+ expect(payload).to.nested.include({'imp[0].banner.w': 300});
231
+ expect(payload).to.nested.include({'imp[0].banner.h': 250});
232
+ expect(payload).to.nested.include({'imp[0].pmp.deals[0].id': 'deal_1'});
233
+ expect(payload).to.nested.include({'imp[0].pmp.deals[1].id': 'deal_2'});
234
+ expect(requests[0].bidRequest).to.exist;
235
+ expect(requests[0].bidRequest.requestedMediaType).to.equal('banner');
236
+ });
237
+
238
+ it('native bidRequest fields with slot size as 2 dimensional array', function () {
239
+ sinon.stub(config, 'getConfig').withArgs('coppa').returns(true);
240
+ const requests = spec.buildRequests(nativeBidRequests, bidderRequest);
241
+ config.getConfig.restore();
242
+ const payload = JSON.parse(requests[0].data);
243
+ expect(requests[0].method).to.equal('POST');
244
+ expect(requests[0].url).to.equal(FINAL_URL);
245
+ expect(payload.imp[0].native.request).to.exist;
246
+ expect(payload).to.nested.include({'regs.ext.us_privacy': consentString});
247
+ expect(payload).to.nested.include({'regs.ext.gdpr': '1'});
248
+ expect(payload).to.nested.include({'regs.coppa': '1'});
249
+ expect(requests[0].bidRequest).to.exist;
250
+ expect(requests[0].bidRequest.requestedMediaType).to.equal('native');
251
+ });
252
+
253
+ it('native bidRequest fields with deals and slot size as 1 dimensional array', function () {
254
+ const requests = spec.buildRequests(nativeBidRequestsSingleArraySlotAndDeals, bidderRequest);
255
+ const payload = JSON.parse(requests[0].data);
256
+ expect(requests[0].method).to.equal('POST');
257
+ expect(requests[0].url).to.equal(FINAL_URL);
258
+ expect(payload.imp).to.exist;
259
+ expect(payload.imp[0].native.request).to.exist;
260
+ expect(payload).to.nested.include({'imp[0].pmp.deals[0].id': 'deal_1'});
261
+ expect(payload).to.nested.include({'imp[0].pmp.deals[1].id': 'deal_2'});
262
+ expect(requests[0].bidRequest).to.exist;
263
+ expect(requests[0].bidRequest.requestedMediaType).to.equal('native');
264
+ });
265
+
266
+ it('instream video bidRequest fields with slot size as 2 dimensional array', function () {
267
+ sinon.stub(config, 'getConfig').withArgs('coppa').returns(true);
268
+ const requests = spec.buildRequests(instreamVideoBidRequests, bidderRequest);
269
+ config.getConfig.restore();
270
+ const payload = JSON.parse(requests[0].data);
271
+ expect(requests[0].method).to.equal('POST');
272
+ expect(requests[0].url).to.equal(FINAL_URL);
273
+ expect(payload).to.nested.include({'regs.ext.us_privacy': consentString});
274
+ expect(payload).to.nested.include({'regs.ext.gdpr': '1'});
275
+ expect(payload).to.nested.include({'regs.coppa': '1'});
276
+ expect(requests[0].bidRequest).to.exist;
277
+ expect(requests[0].bidRequest.requestedMediaType).to.equal('video');
278
+ });
279
+
280
+ it('instream video bidRequest with deals and slot size as 1 dimensional array', function () {
281
+ const requests = spec.buildRequests(instreamVideoBidRequestsSingleArraySlotAndDeals, bidderRequest);
282
+ const payload = JSON.parse(requests[0].data);
283
+ expect(requests[0].method).to.equal('POST');
284
+ expect(requests[0].url).to.equal(FINAL_URL);
285
+ expect(requests[0].bidRequest).to.exist;
286
+ expect(requests[0].bidRequest.requestedMediaType).to.equal('video');
287
+ });
288
+
289
+ it('outstream video bidRequest fields with slot size as 2 dimensional array', function () {
290
+ sinon.stub(config, 'getConfig').withArgs('coppa').returns(true);
291
+ const requests = spec.buildRequests(outstreamVideoBidRequests, bidderRequest);
292
+ config.getConfig.restore();
293
+ const payload = JSON.parse(requests[0].data);
294
+ expect(requests[0].method).to.equal('POST');
295
+ expect(requests[0].url).to.equal(FINAL_URL);
296
+ expect(payload).to.nested.include({'imp[0].video.w': 640});
297
+ expect(payload).to.nested.include({'imp[0].video.h': 480});
298
+ expect(payload).to.nested.include({'regs.ext.us_privacy': consentString});
299
+ expect(payload).to.nested.include({'regs.ext.gdpr': '1'});
300
+ expect(payload).to.nested.include({'regs.coppa': '1'});
301
+ expect(requests[0].bidRequest).to.exist;
302
+ expect(requests[0].bidRequest.requestedMediaType).to.equal('video');
303
+ });
304
+
305
+ it('outstream video bidRequest fields with deals and slot size as 1 dimensional array', function () {
306
+ const requests = spec.buildRequests(outstreamVideoBidRequestsSingleArraySlotAndDeals, bidderRequest);
307
+ const payload = JSON.parse(requests[0].data);
308
+ expect(requests[0].method).to.equal('POST');
309
+ expect(requests[0].url).to.equal(FINAL_URL);
310
+ expect(payload).to.nested.include({'imp[0].video.w': 640});
311
+ expect(payload).to.nested.include({'imp[0].video.h': 480});
312
+ expect(payload).to.nested.include({'imp[0].pmp.deals[0].id': 'deal_1'});
313
+ expect(payload).to.nested.include({'imp[0].pmp.deals[1].id': 'deal_2'});
314
+ expect(requests[0].bidRequest).to.exist;
315
+ expect(requests[0].bidRequest.requestedMediaType).to.equal('video');
316
+ });
317
+ });
318
+
319
+ describe('interpretResponse', function () {
320
+ const bidRequest = {
321
+ 'bidder': BIDDER_CODE,
322
+ 'params': {'site_id': SITE_ID, 'bidfloor': 1.00},
323
+ 'mediaTypes': {'banner': {'sizes': [[300, 250], [300, 600]]}},
324
+ 'adUnitCode': 'adUnitCode',
325
+ 'transactionId': 'transactionId',
326
+ 'sizes': [[300, 250], [300, 600]],
327
+ 'bidId': 'bidId',
328
+ 'bidderRequestId': 'bidderRequestId',
329
+ 'auctionId': 'auctionId',
330
+ 'requestedMediaType': 'banner'
331
+ };
332
+ const nativeBidRequest = {
333
+ 'bidder': BIDDER_CODE,
334
+ 'params': {'site_id': SITE_ID, 'bidfloor': 1.00},
335
+ 'mediaTypes': {'native': {
336
+ 'title': {'required': true, 'len': 80},
337
+ 'image': {'required': true, 'sizes': [300, 250]},
338
+ 'icon': {'required': true, 'sizes': [50, 50]},
339
+ 'sponsoredBy': {'required': true},
340
+ 'cta': {'required': true},
341
+ 'body': {'required': true}
342
+ }},
343
+ 'adUnitCode': 'adUnitCode',
344
+ 'transactionId': 'transactionId',
345
+ 'bidId': 'bidId',
346
+ 'bidderRequestId': 'bidderRequestId',
347
+ 'auctionId': 'auctionId',
348
+ 'requestedMediaType': 'native',
349
+ 'assets': [
350
+ {'id': 1, 'required': 1, 'title': {'len': 80}},
351
+ {'id': 2, 'required': 1, 'img': {'type': 3, 'w': 300, 'h': 250}},
352
+ {'id': 3, 'required': 1, 'img': {'type': 1, 'w': 50, 'h': 50}},
353
+ {'id': 4, 'required': 1, 'data': {'type': 1}},
354
+ {'id': 5, 'required': 1, 'data': {'type': 12}},
355
+ {'id': 6, 'required': 1, 'data': {'type': 2, 'len': 100}}
356
+ ]
357
+ };
358
+ const instreamVideoBidRequest = {
359
+ 'bidder': BIDDER_CODE,
360
+ 'params': {'site_id': SITE_ID, 'bidfloor': 1.00},
361
+ 'mediaTypes': {'video': {'context': 'instream', 'playerSize': [640, 480]}},
362
+ 'adUnitCode': 'adUnitCode',
363
+ 'transactionId': 'transactionId',
364
+ 'bidId': 'bidId',
365
+ 'bidderRequestId': 'bidderRequestId',
366
+ 'auctionId': 'auctionId',
367
+ 'requestedMediaType': 'video'
368
+ };
369
+ const outstreamVideoBidRequest = {
370
+ 'bidder': BIDDER_CODE,
371
+ 'params': {'site_id': SITE_ID,
372
+ 'bidfloor': 1.00,
373
+ 'outstreamType': 'slider_top_left',
374
+ 'outstreamConfig':
375
+ {'ad_unit_audio': 1, 'show_player_close_button_after': 5, 'hide_player_control': 0}},
376
+ 'mediaTypes': {'video': {'context': 'outstream', 'playerSize': [640, 480]}},
377
+ 'adUnitCode': 'adUnitCode',
378
+ 'transactionId': 'transactionId',
379
+ 'bidId': 'bidId',
380
+ 'bidderRequestId': 'bidderRequestId',
381
+ 'auctionId': 'auctionId',
382
+ 'requestedMediaType': 'video'
383
+ };
384
+ const request = {
385
+ 'method': 'POST',
386
+ 'url': FINAL_URL,
387
+ 'data': '',
388
+ bidRequest
389
+ };
390
+
391
+ it('check empty response', function () {
392
+ const result = spec.interpretResponse({}, request);
393
+ expect(result).to.deep.equal([]);
394
+ });
395
+
396
+ it('check if id missing in response', function () {
397
+ const serverResponse = {'body': {'seatbid': [{}]}, 'headers': {}};
398
+ const result = spec.interpretResponse(serverResponse, request);
399
+ expect(result).to.deep.equal([]);
400
+ });
401
+
402
+ it('check if seatbid present in response', function () {
403
+ const serverResponse = {'body': {'id': 'id'}, 'headers': {}};
404
+ const result = spec.interpretResponse(serverResponse, request);
405
+ expect(result).to.deep.equal([]);
406
+ });
407
+
408
+ it('check empty array response seatbid', function () {
409
+ const serverResponse = {'body': {'id': 'id', 'seatbid': []}, 'headers': {}};
410
+ const result = spec.interpretResponse(serverResponse, request);
411
+ expect(result).to.deep.equal([]);
412
+ });
413
+
414
+ it('check bid present in seatbid', function () {
415
+ const serverResponse = {'body': {'id': 'id', 'seatbid': [{}]}, 'headers': {}};
416
+ const result = spec.interpretResponse(serverResponse, request);
417
+ expect(result).to.have.lengthOf(0);
418
+ });
419
+
420
+ it('check empty array bid in seatbid', function () {
421
+ const serverResponse = {'body': {'id': 'id', 'seatbid': [{'bid': []}]}, 'headers': {}};
422
+ const result = spec.interpretResponse(serverResponse, request);
423
+ expect(result).to.have.lengthOf(0);
424
+ });
425
+
426
+ it('banner response missing bid price', function () {
427
+ const serverResponse = {'body': {'id': 'id', 'seatbid': [{'bid': [{'id': 1}]}]}, 'headers': {}};
428
+ const result = spec.interpretResponse(serverResponse, request);
429
+ expect(result).to.have.lengthOf(1);
430
+ expect(result[0].requestId).to.equal('bidId');
431
+ expect(result[0].bidderCode).to.equal(request.bidRequest.bidder);
432
+ });
433
+
434
+ it('banner response', function () {
435
+ const serverResponse = {
436
+ 'body': {
437
+ 'id': 'id',
438
+ 'seatbid': [
439
+ {
440
+ 'bid': [
441
+ {
442
+ 'id': '1',
443
+ 'price': 1,
444
+ 'w': 300,
445
+ 'h': 250,
446
+ 'adm': 'test adm',
447
+ 'nurl': 'url'
448
+ }
449
+ ]
450
+ }
451
+ ]
452
+ },
453
+ 'headers': {}
454
+ };
455
+ const result = spec.interpretResponse(serverResponse, request);
456
+ expect(result).to.have.lengthOf(1);
457
+ expect(result[0].requestId).to.equal('bidId');
458
+ expect(result[0].cpm).to.equal(1);
459
+ expect(result[0].size).to.equal(bidRequest.mediaTypes.banner.sizes);
460
+ expect(result[0].width).to.equal(300);
461
+ expect(result[0].height).to.equal(250);
462
+ expect(result[0].ad).to.equal(decodeURIComponent(serverResponse.body.seatbid[0].bid[0].adm + '<img src="' + serverResponse.body.seatbid[0].bid[0].nurl + '" height="0px" width="0px">'));
463
+ expect(result[0].creativeId).to.equal('1');
464
+ expect(result[0].bidderCode).to.equal(request.bidRequest.bidder);
465
+ expect(result[0].transactionId).to.equal(request.bidRequest.transactionId);
466
+ expect(result[0].mediaType).to.equal('banner');
467
+ });
468
+
469
+ it('native response missing bid price', function () {
470
+ request.bidRequest = nativeBidRequest;
471
+ const serverResponse = {
472
+ 'body': {
473
+ 'id': 'id',
474
+ 'seatbid': [
475
+ {
476
+ 'bid': [
477
+ {
478
+ 'id': '1',
479
+ 'w': 300,
480
+ 'h': 250,
481
+ 'adm': '{"native": {"link": {"url": "test_url"}, "imptrackers": [], "assets": [' +
482
+ '{"id": 1, "title": {"text": "Test title"}},' +
483
+ '{"id": 2, "img": {"type": 3,"url": "https://test/image", "w": 300, "h": 250}},' +
484
+ '{"id": 3, "img": {"type": 1, "url": "https://test/icon", "w": 50, "h": 50}},' +
485
+ '{"id": 4, "data": {"type": 1, "value": "Test sponsored by"}},' +
486
+ '{"id": 5, "data": {"type": 12, "value": "Test CTA"}},' +
487
+ '{"id": 6, "data": {"type": 2, "value": "Test body"}}]}}'
488
+ }
489
+ ]
490
+ }
491
+ ]
492
+ },
493
+ 'headers': {}
494
+ };
495
+ const result = spec.interpretResponse(serverResponse, request);
496
+ expect(result).to.have.lengthOf(1);
497
+ expect(result[0].requestId).to.equal('bidId');
498
+ expect(result[0].bidderCode).to.equal(request.bidRequest.bidder);
499
+ });
500
+
501
+ it('native response', function () {
502
+ request.bidRequest = nativeBidRequest;
503
+ const serverResponse = {
504
+ 'body': {
505
+ 'id': 'id',
506
+ 'seatbid': [
507
+ {
508
+ 'bid': [
509
+ {
510
+ 'id': '1',
511
+ 'price': 1,
512
+ 'w': 300,
513
+ 'h': 250,
514
+ 'adm': '{"native": {"link": {"url": "test_url"}, "imptrackers": ["tracker1", "tracker2"], "assets": [' +
515
+ '{"id": 1, "title": {"text": "Test title"}},' +
516
+ '{"id": 2, "img": {"type": 3,"url": "https://test/image", "w": 300, "h": 250}},' +
517
+ '{"id": 3, "img": {"type": 1, "url": "https://test/icon", "w": 50, "h": 50}},' +
518
+ '{"id": 4, "data": {"type": 1, "value": "Test sponsored by"}},' +
519
+ '{"id": 5, "data": {"type": 12, "value": "Test CTA"}},' +
520
+ '{"id": 6, "data": {"type": 2, "value": "Test body"}}]}}'
521
+ }
522
+ ]
523
+ }
524
+ ]
525
+ },
526
+ 'headers': {}
527
+ };
528
+
529
+ const result = spec.interpretResponse(serverResponse, request);
530
+ expect(result).to.have.lengthOf(1);
531
+ expect(result[0].requestId).to.equal('bidId');
532
+ expect(result[0].cpm).to.equal(1);
533
+ expect(result[0].native.clickUrl).to.equal('test_url');
534
+ expect(result[0].native.impressionTrackers).to.have.lengthOf(2);
535
+ expect(result[0].native.title).to.equal('Test title');
536
+ expect(result[0].native.image.url).to.equal('https://test/image');
537
+ expect(result[0].native.icon.url).to.equal('https://test/icon');
538
+ expect(result[0].native.sponsored).to.equal('Test sponsored by');
539
+ expect(result[0].native.cta).to.equal('Test CTA');
540
+ expect(result[0].native.desc).to.equal('Test body');
541
+ expect(result[0].creativeId).to.equal('1');
542
+ expect(result[0].bidderCode).to.equal(request.bidRequest.bidder);
543
+ expect(result[0].transactionId).to.equal(request.bidRequest.transactionId);
544
+ expect(result[0].mediaType).to.equal('native');
545
+ });
546
+
547
+ it('video response missing bid price', function () {
548
+ request.bidRequest = instreamVideoBidRequest;
549
+ const serverResponse = {
550
+ 'body': {
551
+ 'id': 'id',
552
+ 'seatbid': [
553
+ {
554
+ 'bid': [
555
+ {
556
+ 'id': '1',
557
+ 'w': 640,
558
+ 'h': 480,
559
+ 'adm': '<VAST></VAST>',
560
+ 'ext': {
561
+ 'vast_url': 'vast_url'
562
+ }
563
+ }
564
+ ]
565
+ }
566
+ ]
567
+ },
568
+ 'headers': {}
569
+ };
570
+ const result = spec.interpretResponse(serverResponse, request);
571
+ expect(result).to.have.lengthOf(1);
572
+ expect(result[0].requestId).to.equal('bidId');
573
+ expect(result[0].bidderCode).to.equal(request.bidRequest.bidder);
574
+ });
575
+
576
+ it('instream video response', function () {
577
+ request.bidRequest = instreamVideoBidRequest;
578
+ const serverResponse = {
579
+ 'body': {
580
+ 'id': 'id',
581
+ 'seatbid': [
582
+ {
583
+ 'bid': [
584
+ {
585
+ 'id': '1',
586
+ 'price': 1,
587
+ 'w': 640,
588
+ 'h': 480,
589
+ 'adm': '<VAST></VAST>',
590
+ 'ext': {
591
+ 'vast_url': 'test_vast_url?kcid=123&kaid=12&protocol=3'
592
+ }
593
+ }
594
+ ]
595
+ }
596
+ ]
597
+ },
598
+ 'headers': {}
599
+ };
600
+
601
+ const result = spec.interpretResponse(serverResponse, request);
602
+ expect(result).to.have.lengthOf(1);
603
+ expect(result[0].requestId).to.equal('bidId');
604
+ expect(result[0].cpm).to.equal(1);
605
+ expect(result[0].width).to.equal(640);
606
+ expect(result[0].height).to.equal(480);
607
+ expect(result[0].vastUrl).to.equal('test_vast_url?kcid=123&kaid=12&protocol=3');
608
+ expect(result[0].adserverTargeting.hb_kcid).to.equal('123');
609
+ expect(result[0].adserverTargeting.hb_kaid).to.equal('12');
610
+ expect(result[0].adserverTargeting.hb_protocol).to.equal('3');
611
+ expect(result[0].creativeId).to.equal('1');
612
+ expect(result[0].bidderCode).to.equal(request.bidRequest.bidder);
613
+ expect(result[0].transactionId).to.equal(request.bidRequest.transactionId);
614
+ expect(result[0].mediaType).to.equal('video');
615
+ });
616
+
617
+ it('outstream video response', function () {
618
+ request.bidRequest = outstreamVideoBidRequest;
619
+ const serverResponse = {
620
+ 'body': {
621
+ 'id': 'id',
622
+ 'seatbid': [
623
+ {
624
+ 'bid': [
625
+ {
626
+ 'id': '1',
627
+ 'price': 1,
628
+ 'w': 640,
629
+ 'h': 480,
630
+ 'adm': '<VAST></VAST>',
631
+ 'ext': {
632
+ 'vast_url': 'vast_url'
633
+ }
634
+ }
635
+ ]
636
+ }
637
+ ]
638
+ },
639
+ 'headers': {}
640
+ };
641
+ const result = spec.interpretResponse(serverResponse, request);
642
+ expect(result).to.have.lengthOf(1);
643
+ expect(result[0].requestId).to.equal('bidId');
644
+ expect(result[0].cpm).to.equal(1);
645
+ expect(result[0].width).to.equal(640);
646
+ expect(result[0].height).to.equal(480);
647
+ expect(result[0].outstreamType).to.equal('slider_top_left');
648
+ expect(result[0].ad).to.equal('<VAST></VAST>');
649
+ expect(result[0].renderer).to.exist;
650
+ expect(result[0].creativeId).to.equal('1');
651
+ expect(result[0].bidderCode).to.equal(request.bidRequest.bidder);
652
+ expect(result[0].transactionId).to.equal(request.bidRequest.transactionId);
653
+ expect(result[0].mediaType).to.equal('video');
654
+ });
655
+ });
656
+ });