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
@@ -48,6 +48,18 @@ const bidRequestCommonParams = {
48
48
  'auctionId': '43aa080090a47f',
49
49
  }
50
50
 
51
+ const bidRequestCommonParamsV2 = {
52
+ 'bidder': 'showheroes-bs',
53
+ 'params': {
54
+ 'unitId': 'AACBWAcof-611K4U',
55
+ },
56
+ 'adUnitCode': 'adunit-code-1',
57
+ 'sizes': [[640, 480]],
58
+ 'bidId': '38b373e1e31c18',
59
+ 'bidderRequestId': '12e3ade2543ba6',
60
+ 'auctionId': '43aa080090a47f',
61
+ }
62
+
51
63
  const bidRequestVideo = {
52
64
  ...bidRequestCommonParams,
53
65
  ...{
@@ -72,6 +84,30 @@ const bidRequestOutstream = {
72
84
  }
73
85
  }
74
86
 
87
+ const bidRequestVideoV2 = {
88
+ ...bidRequestCommonParamsV2,
89
+ ...{
90
+ 'mediaTypes': {
91
+ 'video': {
92
+ 'playerSize': [640, 480],
93
+ 'context': 'instream',
94
+ }
95
+ }
96
+ }
97
+ }
98
+
99
+ const bidRequestOutstreamV2 = {
100
+ ...bidRequestCommonParamsV2,
101
+ ...{
102
+ 'mediaTypes': {
103
+ 'video': {
104
+ 'playerSize': [640, 480],
105
+ 'context': 'outstream'
106
+ }
107
+ }
108
+ }
109
+ }
110
+
75
111
  const bidRequestVideoVpaid = {
76
112
  ...bidRequestCommonParams,
77
113
  ...{
@@ -129,12 +165,19 @@ describe('shBidAdapter', function () {
129
165
 
130
166
  describe('isBidRequestValid', function () {
131
167
  it('should return true when required params found', function () {
132
- const request = {
168
+ const requestV1 = {
133
169
  'params': {
134
170
  'playerId': '47427aa0-f11a-4d24-abca-1295a46a46cd',
135
171
  }
136
172
  }
137
- expect(spec.isBidRequestValid(request)).to.equal(true)
173
+ expect(spec.isBidRequestValid(requestV1)).to.equal(true)
174
+
175
+ const requestV2 = {
176
+ 'params': {
177
+ 'unitId': 'AACBTwsZVANd9NlB',
178
+ }
179
+ }
180
+ expect(spec.isBidRequestValid(requestV2)).to.equal(true)
138
181
  })
139
182
 
140
183
  it('should return false when required params are not passed', function () {
@@ -149,6 +192,9 @@ describe('shBidAdapter', function () {
149
192
  it('sends bid request to ENDPOINT via POST', function () {
150
193
  const request = spec.buildRequests([bidRequestVideo], bidderRequest)
151
194
  expect(request.method).to.equal('POST')
195
+
196
+ const requestV2 = spec.buildRequests([bidRequestVideoV2], bidderRequest)
197
+ expect(requestV2.method).to.equal('POST')
152
198
  })
153
199
 
154
200
  it('check sizes formats', function () {
@@ -268,6 +314,30 @@ describe('shBidAdapter', function () {
268
314
  expect(payload2).to.have.property('type', 5);
269
315
  })
270
316
 
317
+ it('should attach valid params to the payload when type is video (instream V2)', function () {
318
+ const request = spec.buildRequests([bidRequestVideoV2], bidderRequest)
319
+ const payload = request.data.bidRequests[0];
320
+ expect(payload).to.be.an('object');
321
+ expect(payload).to.have.property('unitId', 'AACBWAcof-611K4U');
322
+ expect(payload.mediaTypes).to.eql({
323
+ [VIDEO]: {
324
+ 'context': 'instream'
325
+ }
326
+ });
327
+ })
328
+
329
+ it('should attach valid params to the payload when type is video (outstream V2)', function () {
330
+ const request = spec.buildRequests([bidRequestOutstreamV2], bidderRequest)
331
+ const payload = request.data.bidRequests[0];
332
+ expect(payload).to.be.an('object');
333
+ expect(payload).to.have.property('unitId', 'AACBWAcof-611K4U');
334
+ expect(payload.mediaTypes).to.eql({
335
+ [VIDEO]: {
336
+ 'context': 'outstream'
337
+ }
338
+ });
339
+ })
340
+
271
341
  it('passes gdpr if present', function () {
272
342
  const request = spec.buildRequests([bidRequestVideo], {...bidderRequest, ...gdpr})
273
343
  const payload = request.data.requests[0];
@@ -275,6 +345,13 @@ describe('shBidAdapter', function () {
275
345
  expect(payload.gdprConsent).to.eql(gdpr.gdprConsent)
276
346
  })
277
347
 
348
+ it('passes gdpr if present (V2)', function () {
349
+ const request = spec.buildRequests([bidRequestVideoV2], {...bidderRequest, ...gdpr})
350
+ const context = request.data.context;
351
+ expect(context).to.be.an('object');
352
+ expect(context.gdprConsent).to.eql(gdpr.gdprConsent)
353
+ })
354
+
278
355
  it('passes schain object if present', function() {
279
356
  const request = spec.buildRequests([{
280
357
  ...bidRequestVideo,
@@ -284,6 +361,16 @@ describe('shBidAdapter', function () {
284
361
  expect(payload).to.be.an('object');
285
362
  expect(payload.schain).to.eql(schain.schain);
286
363
  })
364
+
365
+ it('passes schain object if present (V2)', function() {
366
+ const request = spec.buildRequests([{
367
+ ...bidRequestVideoV2,
368
+ ...schain
369
+ }], bidderRequest)
370
+ const context = request.data.context;
371
+ expect(context).to.be.an('object');
372
+ expect(context.schain).to.eql(schain.schain);
373
+ })
287
374
  })
288
375
 
289
376
  describe('interpretResponse', function () {
@@ -327,6 +414,39 @@ describe('shBidAdapter', function () {
327
414
  }],
328
415
  };
329
416
 
417
+ const basicResponseV2 = {
418
+ 'requestId': '38b373e1e31c18',
419
+ 'adUnitCode': 'adunit-code-1',
420
+ 'cpm': 1,
421
+ 'currency': 'EUR',
422
+ 'width': 640,
423
+ 'height': 480,
424
+ 'advertiserDomain': [],
425
+ 'callbacks': {
426
+ 'won': ['https://api-n729.qa.viralize.com/track/?ver=15&session_id=01ecd03ce381505ccdeb88e555b05001&category=request_session&type=event&request_session_id=01ecd03ce381505ccdeb88e555b05001&label=prebid_won&reason=ok']
427
+ },
428
+ 'mediaType': 'video',
429
+ 'adomain': adomain,
430
+ };
431
+
432
+ const vastUrl = 'https://api-n729.qa.viralize.com/vast/?zid=AACBWAcof-611K4U&u=https://example.org/?foo=bar&gdpr=0&cs=XXXXXXXXXXXXXXXXXXXX&sid=01ecd03ce381505ccdeb88e555b05001&width=300&height=200&prebidmode=1'
433
+
434
+ const responseVideoV2 = {
435
+ 'bidResponses': [{
436
+ ...basicResponseV2,
437
+ 'context': 'instream',
438
+ 'vastUrl': vastUrl,
439
+ }],
440
+ };
441
+
442
+ const responseVideoOutstreamV2 = {
443
+ 'bidResponses': [{
444
+ ...basicResponseV2,
445
+ 'context': 'outstream',
446
+ 'ad': '<script id="testScript" data-wid="auto" type="text/javascript" src="https://ads.viralize.tv/display/?zid=AACBTwsZVANd9NlB&u=https%3A%2F%2Fexample.org%2F%3Ffoo%3Dbar&gdpr=0&cs=XXXXXXXXXXXXXXXXXXXX&sid=01ececb3b4c19270d6a77ccf75433001&width=300&height=200&prebidmode=1"></script>',
447
+ }],
448
+ };
449
+
330
450
  it('should get correct bid response when type is video', function () {
331
451
  const request = spec.buildRequests([bidRequestVideo], bidderRequest)
332
452
  const expectedResponse = [
@@ -356,6 +476,31 @@ describe('shBidAdapter', function () {
356
476
  expect(result).to.deep.equal(expectedResponse)
357
477
  })
358
478
 
479
+ it('should get correct bid response when type is video (V2)', function () {
480
+ const request = spec.buildRequests([bidRequestVideoV2], bidderRequest)
481
+ const expectedResponse = [
482
+ {
483
+ 'cpm': 1,
484
+ 'creativeId': 'c_38b373e1e31c18',
485
+ 'adUnitCode': 'adunit-code-1',
486
+ 'currency': 'EUR',
487
+ 'width': 640,
488
+ 'height': 480,
489
+ 'mediaType': 'video',
490
+ 'netRevenue': true,
491
+ 'vastUrl': vastUrl,
492
+ 'requestId': '38b373e1e31c18',
493
+ 'ttl': 300,
494
+ 'meta': {
495
+ 'advertiserDomains': adomain
496
+ }
497
+ }
498
+ ]
499
+
500
+ const result = spec.interpretResponse({'body': responseVideoV2}, request)
501
+ expect(result).to.deep.equal(expectedResponse)
502
+ })
503
+
359
504
  it('should get correct bid response when type is banner', function () {
360
505
  const request = spec.buildRequests([bidRequestBanner], bidderRequest)
361
506
 
@@ -396,6 +541,32 @@ describe('shBidAdapter', function () {
396
541
  expect(spots.length).to.equal(1)
397
542
  })
398
543
 
544
+ it('should get correct bid response when type is outstream (slot V2)', function () {
545
+ const bidRequestV2 = JSON.parse(JSON.stringify(bidRequestOutstreamV2));
546
+ const slotId = 'testSlot2'
547
+ bidRequestV2.params.outstreamOptions = {
548
+ slot: slotId
549
+ }
550
+
551
+ const container = document.createElement('div')
552
+ container.setAttribute('id', slotId)
553
+ document.body.appendChild(container)
554
+
555
+ const request = spec.buildRequests([bidRequestV2], bidderRequest)
556
+
557
+ const result = spec.interpretResponse({'body': responseVideoOutstreamV2}, request)
558
+ const bid = result[0]
559
+ expect(bid).to.have.property('mediaType', VIDEO);
560
+
561
+ const renderer = bid.renderer
562
+ expect(renderer).to.be.an('object')
563
+ expect(renderer.id).to.equal(bidRequestV2.bidId)
564
+ renderer.render(bid)
565
+
566
+ const scripts = container.querySelectorAll('#testScript')
567
+ expect(scripts.length).to.equal(1)
568
+ })
569
+
399
570
  it('should get correct bid response when type is outstream (iframe)', function () {
400
571
  const bidRequest = JSON.parse(JSON.stringify(bidRequestOutstream));
401
572
  const slotId = 'testIframe'
@@ -38,7 +38,7 @@ describe('sigmoid Prebid Analytic', function () {
38
38
  events.emit(constants.EVENTS.BID_RESPONSE, {});
39
39
  events.emit(constants.EVENTS.BID_WON, {});
40
40
 
41
- sinon.assert.callCount(sigmoidAnalytic.track, 7);
41
+ sinon.assert.callCount(sigmoidAnalytic.track, 8);
42
42
  });
43
43
  });
44
44
  describe('build utm tag data', function () {
@@ -0,0 +1,296 @@
1
+ import {expect} from 'chai';
2
+ import {spec} from 'modules/snigelBidAdapter.js';
3
+ import {config} from 'src/config.js';
4
+ import {isValid} from 'src/adapters/bidderFactory.js';
5
+
6
+ const BASE_BID_REQUEST = {
7
+ adUnitCode: 'top_leaderboard',
8
+ bidId: 'bid_test',
9
+ sizes: [
10
+ [970, 90],
11
+ [728, 90],
12
+ ],
13
+ bidder: 'snigel',
14
+ params: {},
15
+ requestId: 'req_test',
16
+ transactionId: 'trans_test',
17
+ };
18
+ const makeBidRequest = function (overrides) {
19
+ return {...BASE_BID_REQUEST, ...overrides};
20
+ };
21
+
22
+ const BASE_BIDDER_REQUEST = {
23
+ bidderRequestId: 'test',
24
+ refererInfo: {
25
+ canonicalUrl: 'https://localhost',
26
+ },
27
+ };
28
+ const makeBidderRequest = function (overrides) {
29
+ return {...BASE_BIDDER_REQUEST, ...overrides};
30
+ };
31
+
32
+ const DUMMY_USP_CONSENT = '1YYN';
33
+ const DUMMY_GDPR_CONSENT_STRING =
34
+ 'BOSSotLOSSotLAPABAENBc-AAAAgR7_______9______9uz_Gv_v_f__33e8__9v_l_7_-___u_-33d4-_1vX99yfm1-7ftr3tp_86ues2_XqK_9oIiA';
35
+
36
+ describe('snigelBidAdapter', function () {
37
+ describe('isBidRequestValid', function () {
38
+ it('should return false if no placement provided', function () {
39
+ expect(spec.isBidRequestValid(BASE_BID_REQUEST)).to.equal(false);
40
+ });
41
+
42
+ it('should return true if placement provided', function () {
43
+ const bidRequest = makeBidRequest({params: {placement: 'top_leaderboard'}});
44
+ expect(spec.isBidRequestValid(bidRequest)).to.equal(true);
45
+ });
46
+ });
47
+
48
+ describe('buildRequests', function () {
49
+ afterEach(function () {
50
+ config.resetConfig();
51
+ });
52
+
53
+ it('should build a single request for every impression and its placement', function () {
54
+ const bidderRequest = Object.assign({}, BASE_BIDDER_REQUEST);
55
+ const bidRequests = [
56
+ makeBidRequest({bidId: 'a', params: {placement: 'top_leaderboard'}}),
57
+ makeBidRequest({bidId: 'b', params: {placement: 'bottom_leaderboard'}}),
58
+ ];
59
+
60
+ const request = spec.buildRequests(bidRequests, bidderRequest);
61
+ expect(request).to.be.an('object');
62
+ expect(request).to.have.property('url').and.to.equal('https://adserv.snigelweb.com/bp/v1/prebid');
63
+ expect(request).to.have.property('method').and.to.equal('POST');
64
+
65
+ expect(request).to.have.property('data');
66
+ const data = JSON.parse(request.data);
67
+ expect(data).to.have.property('id').and.to.equal('test');
68
+ expect(data).to.have.property('cur').and.to.deep.equal(['USD']);
69
+ expect(data).to.have.property('test').and.to.equal(false);
70
+ expect(data).to.have.property('page').and.to.equal('https://localhost');
71
+ expect(data).to.have.property('placements');
72
+ expect(data.placements.length).to.equal(2);
73
+ expect(data.placements[0].uuid).to.equal('a');
74
+ expect(data.placements[0].name).to.equal('top_leaderboard');
75
+ expect(data.placements[1].uuid).to.equal('b');
76
+ expect(data.placements[1].name).to.equal('bottom_leaderboard');
77
+ });
78
+
79
+ it('should forward GDPR flag and GDPR consent string if enabled', function () {
80
+ const bidderRequest = makeBidderRequest({
81
+ gdprConsent: {
82
+ gdprApplies: true,
83
+ consentString: DUMMY_GDPR_CONSENT_STRING,
84
+ },
85
+ });
86
+
87
+ const request = spec.buildRequests([], bidderRequest);
88
+ expect(request).to.have.property('data');
89
+ const data = JSON.parse(request.data);
90
+ expect(data).to.have.property('gdprApplies').and.to.equal(true);
91
+ expect(data).to.have.property('gdprConsentString').and.to.equal(DUMMY_GDPR_CONSENT_STRING);
92
+ });
93
+
94
+ it('should forward GDPR flag and no GDPR consent string if disabled', function () {
95
+ const bidderRequest = makeBidderRequest({
96
+ gdprConsent: {
97
+ gdprApplies: false,
98
+ consentString: DUMMY_GDPR_CONSENT_STRING,
99
+ },
100
+ });
101
+
102
+ const request = spec.buildRequests([], bidderRequest);
103
+ expect(request).to.have.property('data');
104
+ const data = JSON.parse(request.data);
105
+ expect(data).to.have.property('gdprApplies').and.to.equal(false);
106
+ expect(data).to.not.have.property('gdprConsentString');
107
+ });
108
+
109
+ it('should forward USP consent if set', function () {
110
+ const bidderRequest = makeBidderRequest({
111
+ uspConsent: DUMMY_USP_CONSENT,
112
+ });
113
+
114
+ const request = spec.buildRequests([], bidderRequest);
115
+ expect(request).to.have.property('data');
116
+ const data = JSON.parse(request.data);
117
+ expect(data).to.have.property('uspConsent').and.to.equal(DUMMY_USP_CONSENT);
118
+ });
119
+
120
+ it('should forward whether or not COPPA applies', function () {
121
+ config.setConfig({
122
+ 'coppa': true,
123
+ });
124
+
125
+ const request = spec.buildRequests([], BASE_BIDDER_REQUEST);
126
+ expect(request).to.have.property('data');
127
+ const data = JSON.parse(request.data);
128
+ expect(data).to.have.property('coppa').and.to.equal(true);
129
+ });
130
+ });
131
+
132
+ describe('interpretResponse', function () {
133
+ it('should not return any bids if the request failed', function () {
134
+ expect(spec.interpretResponse({}, {})).to.be.empty;
135
+ expect(spec.interpretResponse({body: 'Some error message'}, {})).to.be.empty;
136
+ });
137
+
138
+ it('should not return any bids if the request did not return any bids either', function () {
139
+ expect(spec.interpretResponse({body: {bids: []}})).to.be.empty;
140
+ });
141
+
142
+ it('should return valid bids with additional meta information', function () {
143
+ const serverResponse = {
144
+ body: {
145
+ id: BASE_BIDDER_REQUEST.bidderRequestId,
146
+ cur: 'USD',
147
+ bids: [
148
+ {
149
+ uuid: BASE_BID_REQUEST.bidId,
150
+ price: 0.0575,
151
+ ad: '<html><body><h1>Test Ad</h1></body></html>',
152
+ width: 728,
153
+ height: 90,
154
+ crid: 'test',
155
+ meta: {
156
+ advertiserDomains: ['addomain.com'],
157
+ },
158
+ },
159
+ ],
160
+ },
161
+ };
162
+
163
+ const bids = spec.interpretResponse(serverResponse, {});
164
+ expect(bids.length).to.equal(1);
165
+ const bid = bids[0];
166
+ expect(isValid(BASE_BID_REQUEST.adUnitCode, bid)).to.be.true;
167
+ expect(bid).to.have.property('meta');
168
+ expect(bid.meta).to.have.property('advertiserDomains');
169
+ expect(bid.meta.advertiserDomains).to.be.an('array');
170
+ expect(bid.meta.advertiserDomains.length).to.equal(1);
171
+ expect(bid.meta.advertiserDomains[0]).to.equal('addomain.com');
172
+ });
173
+ });
174
+
175
+ describe('getUserSyncs', function () {
176
+ it('should not return any user syncs if sync url does not exist in response', function () {
177
+ const response = {
178
+ body: {
179
+ id: BASE_BIDDER_REQUEST.bidderRequestId,
180
+ cur: 'USD',
181
+ bids: [],
182
+ },
183
+ };
184
+ const syncOptions = {
185
+ iframeEnabled: true,
186
+ };
187
+ const gdprConsent = {
188
+ gdprApplies: false,
189
+ };
190
+
191
+ const syncs = spec.getUserSyncs(syncOptions, [response], gdprConsent);
192
+ expect(syncs).to.be.undefined;
193
+ });
194
+
195
+ it('should not return any user syncs if publisher disabled iframe-based sync', function () {
196
+ const response = {
197
+ body: {
198
+ id: BASE_BIDDER_REQUEST.bidderRequestId,
199
+ cur: 'USD',
200
+ syncUrl: 'https://somesyncurl',
201
+ bids: [],
202
+ },
203
+ };
204
+ const syncOptions = {
205
+ iframeEnabled: false,
206
+ };
207
+ const gdprConsent = {
208
+ gdprApplies: false,
209
+ };
210
+
211
+ const syncs = spec.getUserSyncs(syncOptions, [response], gdprConsent);
212
+ expect(syncs).to.be.undefined;
213
+ });
214
+
215
+ it('should not return any user syncs if GDPR applies and the user did not consent to purpose one', function () {
216
+ const response = {
217
+ body: {
218
+ id: BASE_BIDDER_REQUEST.bidderRequestId,
219
+ cur: 'USD',
220
+ syncUrl: 'https://somesyncurl',
221
+ bids: [],
222
+ },
223
+ };
224
+ const syncOptions = {
225
+ iframeEnabled: true,
226
+ };
227
+ const gdprConsent = {
228
+ gdprApplies: true,
229
+ vendorData: {
230
+ purpose: {
231
+ consents: {1: false},
232
+ },
233
+ },
234
+ };
235
+
236
+ const syncs = spec.getUserSyncs(syncOptions, [response], gdprConsent);
237
+ expect(syncs).to.be.undefined;
238
+ });
239
+
240
+ it("should return an iframe specific to the publisher's property if all conditions are met", function () {
241
+ const response = {
242
+ body: {
243
+ id: BASE_BIDDER_REQUEST.bidderRequestId,
244
+ cur: 'USD',
245
+ syncUrl: 'https://somesyncurl',
246
+ bids: [],
247
+ },
248
+ };
249
+ const syncOptions = {
250
+ iframeEnabled: true,
251
+ };
252
+ const gdprConsent = {
253
+ gdprApplies: false,
254
+ };
255
+
256
+ const syncs = spec.getUserSyncs(syncOptions, [response], gdprConsent);
257
+ expect(syncs).to.be.an('array').and.of.length(1);
258
+ const sync = syncs[0];
259
+ expect(sync).to.have.property('type');
260
+ expect(sync.type).to.equal('iframe');
261
+ expect(sync).to.have.property('url');
262
+ expect(sync.url).to.equal('https://somesyncurl?gdpr=0&gdpr_consent=');
263
+ });
264
+
265
+ it('should pass GDPR applicability and consent string as query parameters', function () {
266
+ const response = {
267
+ body: {
268
+ id: BASE_BIDDER_REQUEST.bidderRequestId,
269
+ cur: 'USD',
270
+ syncUrl: 'https://somesyncurl',
271
+ bids: [],
272
+ },
273
+ };
274
+ const syncOptions = {
275
+ iframeEnabled: true,
276
+ };
277
+ const gdprConsent = {
278
+ gdprApplies: true,
279
+ consentString: DUMMY_GDPR_CONSENT_STRING,
280
+ vendorData: {
281
+ purpose: {
282
+ consents: {1: true},
283
+ },
284
+ },
285
+ };
286
+
287
+ const syncs = spec.getUserSyncs(syncOptions, [response], gdprConsent);
288
+ expect(syncs).to.be.an('array').and.of.length(1);
289
+ const sync = syncs[0];
290
+ expect(sync).to.have.property('type');
291
+ expect(sync.type).to.equal('iframe');
292
+ expect(sync).to.have.property('url');
293
+ expect(sync.url).to.equal(`https://somesyncurl?gdpr=1&gdpr_consent=${DUMMY_GDPR_CONSENT_STRING}`);
294
+ });
295
+ });
296
+ });
@@ -202,7 +202,8 @@ describe('Sovrn Analytics Adapter', function () {
202
202
  events.emit(constants.EVENTS.BID_RESPONSE, {});
203
203
  events.emit(constants.EVENTS.BID_WON, {});
204
204
 
205
- sinon.assert.callCount(sovrnAnalyticsAdapter.track, 5);
205
+ // 5 SovrnAnalytics events + 1 Clean.io event
206
+ sinon.assert.callCount(sovrnAnalyticsAdapter.track, 6);
206
207
  });
207
208
 
208
209
  it('should catch no events if no affiliate id', function () {
@@ -678,8 +678,8 @@ describe('SSPBC adapter', function () {
678
678
  });
679
679
 
680
680
  it('should send no syncs, if frame sync is not allowed', function () {
681
- expect(syncResultImage).to.have.length(0); ;
682
- expect(syncResultNone).to.have.length(0); ;
681
+ expect(syncResultImage).to.have.length(0);
682
+ expect(syncResultNone).to.have.length(0);
683
683
  });
684
684
  });
685
685