prebid.js 9.0.0 → 9.2.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 (307) hide show
  1. package/.nvmrc +1 -1
  2. package/browsers.json +3 -3
  3. package/dist/33acrossAnalyticsAdapter.js +1 -1
  4. package/dist/33acrossBidAdapter.js +1 -1
  5. package/dist/33acrossIdSystem.js +1 -1
  6. package/dist/BTBidAdapter.js +1 -1
  7. package/dist/acuityadsBidAdapter.js +1 -1
  8. package/dist/adagioAnalyticsAdapter.js +1 -1
  9. package/dist/adagioBidAdapter.js +1 -1
  10. package/dist/adagioRtdProvider.js +1 -1
  11. package/dist/adagioUtils.js +1 -0
  12. package/dist/adgenerationBidAdapter.js +1 -1
  13. package/dist/admanBidAdapter.js +1 -1
  14. package/dist/adpod.js +1 -1
  15. package/dist/adprimeBidAdapter.js +1 -1
  16. package/dist/adqueryBidAdapter.js +1 -1
  17. package/dist/adrelevantisBidAdapter.js +1 -1
  18. package/dist/adstirBidAdapter.js +1 -1
  19. package/dist/adtrgtmeBidAdapter.js +1 -1
  20. package/dist/adxcgBidAdapter.js +1 -1
  21. package/dist/adyoulikeBidAdapter.js +1 -1
  22. package/dist/agmaAnalyticsAdapter.js +1 -1
  23. package/dist/ajaBidAdapter.js +1 -1
  24. package/dist/amxBidAdapter.js +1 -1
  25. package/dist/amxIdSystem.js +1 -1
  26. package/dist/appierAnalyticsAdapter.js +1 -1
  27. package/dist/appnexusBidAdapter.js +1 -1
  28. package/dist/appnexusUtils.js +1 -1
  29. package/dist/asoBidAdapter.js +1 -1
  30. package/dist/autoplayDetection.js +1 -1
  31. package/dist/axisBidAdapter.js +1 -1
  32. package/dist/axonixBidAdapter.js +1 -1
  33. package/dist/beyondmediaBidAdapter.js +1 -1
  34. package/dist/bidglassBidAdapter.js +1 -1
  35. package/dist/big-richmediaBidAdapter.js +1 -1
  36. package/dist/bliinkBidAdapter.js +1 -1
  37. package/dist/boldwinBidAdapter.js +1 -1
  38. package/dist/bridBidAdapter.js +1 -1
  39. package/dist/bridgewellBidAdapter.js +1 -1
  40. package/dist/brightMountainMediaBidAdapter.js +1 -1
  41. package/dist/carodaBidAdapter.js +1 -1
  42. package/dist/chtnwBidAdapter.js +1 -1
  43. package/dist/chunk-core.js +1 -1
  44. package/dist/compassBidAdapter.js +1 -1
  45. package/dist/concertBidAdapter.js +1 -1
  46. package/dist/connectadBidAdapter.js +1 -1
  47. package/dist/consumableBidAdapter.js +1 -1
  48. package/dist/contentexchangeBidAdapter.js +1 -1
  49. package/dist/conversantAnalyticsAdapter.js +1 -1
  50. package/dist/conversantBidAdapter.js +1 -1
  51. package/dist/craftBidAdapter.js +1 -1
  52. package/dist/criteoBidAdapter.js +1 -1
  53. package/dist/cwireBidAdapter.js +1 -1
  54. package/dist/dailymotionBidAdapter.js +1 -1
  55. package/dist/dependencies.json +83 -4
  56. package/dist/dspxBidAdapter.js +1 -1
  57. package/dist/dxkultureBidAdapter.js +1 -1
  58. package/dist/e_volutionBidAdapter.js +1 -1
  59. package/dist/emtvBidAdapter.js +1 -1
  60. package/dist/eplanningBidAdapter.js +1 -1
  61. package/dist/euidIdSystem.js +1 -1
  62. package/dist/exadsBidAdapter.js +1 -1
  63. package/dist/feedadBidAdapter.js +1 -1
  64. package/dist/finativeBidAdapter.js +1 -1
  65. package/dist/freewheel-sspBidAdapter.js +1 -1
  66. package/dist/globalsunBidAdapter.js +1 -1
  67. package/dist/gmosspBidAdapter.js +1 -1
  68. package/dist/goldbachBidAdapter.js +1 -1
  69. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  70. package/dist/greenbidsRtdProvider.js +1 -1
  71. package/dist/gridBidAdapter.js +1 -1
  72. package/dist/gumgumBidAdapter.js +1 -1
  73. package/dist/h12mediaBidAdapter.js +1 -1
  74. package/dist/hypelabBidAdapter.js +1 -1
  75. package/dist/id5IdSystem.js +1 -1
  76. package/dist/illuminBidAdapter.js +1 -1
  77. package/dist/imdsBidAdapter.js +1 -1
  78. package/dist/improvedigitalBidAdapter.js +1 -1
  79. package/dist/insticatorBidAdapter.js +1 -1
  80. package/dist/iqzoneBidAdapter.js +1 -1
  81. package/dist/ixBidAdapter.js +1 -1
  82. package/dist/jixieBidAdapter.js +1 -1
  83. package/dist/justpremiumBidAdapter.js +1 -1
  84. package/dist/kargoBidAdapter.js +1 -1
  85. package/dist/kimberliteBidAdapter.js +1 -1
  86. package/dist/kiviadsBidAdapter.js +1 -1
  87. package/dist/konduitAnalyticsAdapter.js +1 -1
  88. package/dist/krushmediaBidAdapter.js +1 -1
  89. package/dist/kueezBidAdapter.js +1 -1
  90. package/dist/kueezRtbBidAdapter.js +1 -1
  91. package/dist/lassoBidAdapter.js +1 -1
  92. package/dist/lifestreetBidAdapter.js +1 -1
  93. package/dist/liveIntentIdSystem.js +1 -1
  94. package/dist/logicadBidAdapter.js +1 -1
  95. package/dist/loglyliftBidAdapter.js +1 -1
  96. package/dist/loyalBidAdapter.js +1 -1
  97. package/dist/luceadBidAdapter.js +1 -1
  98. package/dist/lunamediahbBidAdapter.js +1 -1
  99. package/dist/magniteAnalyticsAdapter.js +1 -1
  100. package/dist/malltvAnalyticsAdapter.js +1 -1
  101. package/dist/marsmediaBidAdapter.js +1 -1
  102. package/dist/mathildeadsBidAdapter.js +1 -1
  103. package/dist/mediafuseBidAdapter.js +1 -1
  104. package/dist/mediasquareBidAdapter.js +1 -1
  105. package/dist/mgidBidAdapter.js +1 -1
  106. package/dist/mgidXBidAdapter.js +1 -1
  107. package/dist/minutemediaBidAdapter.js +1 -1
  108. package/dist/missenaBidAdapter.js +1 -1
  109. package/dist/mobfoxpbBidAdapter.js +1 -1
  110. package/dist/mobianRtdProvider.js +1 -0
  111. package/dist/nexx360BidAdapter.js +1 -1
  112. package/dist/nobidAnalyticsAdapter.js +1 -1
  113. package/dist/nobidBidAdapter.js +1 -1
  114. package/dist/not-for-prod/prebid.js +190 -186
  115. package/dist/oguryBidAdapter.js +1 -1
  116. package/dist/onetagBidAdapter.js +1 -1
  117. package/dist/ooloAnalyticsAdapter.js +1 -1
  118. package/dist/openwebBidAdapter.js +1 -1
  119. package/dist/openxBidAdapter.js +1 -1
  120. package/dist/optidigitalBidAdapter.js +1 -1
  121. package/dist/ortbConverter.js +1 -1
  122. package/dist/outbrainBidAdapter.js +1 -1
  123. package/dist/ozoneBidAdapter.js +1 -1
  124. package/dist/paapi.js +1 -1
  125. package/dist/pgamsspBidAdapter.js +1 -1
  126. package/dist/pixfutureBidAdapter.js +1 -1
  127. package/dist/playdigoBidAdapter.js +1 -1
  128. package/dist/prebidServerBidAdapter.js +1 -1
  129. package/dist/pubCircleBidAdapter.js +1 -1
  130. package/dist/publinkIdSystem.js +1 -1
  131. package/dist/publirBidAdapter.js +1 -1
  132. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  133. package/dist/pubmaticBidAdapter.js +1 -1
  134. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  135. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  136. package/dist/pxyzBidAdapter.js +1 -1
  137. package/dist/qtBidAdapter.js +1 -1
  138. package/dist/quantcastBidAdapter.js +1 -1
  139. package/dist/raynRtdProvider.js +1 -1
  140. package/dist/readpeakBidAdapter.js +1 -1
  141. package/dist/relaidoBidAdapter.js +1 -1
  142. package/dist/retailspotBidAdapter.js +1 -1
  143. package/dist/rhythmoneBidAdapter.js +1 -1
  144. package/dist/richaudienceBidAdapter.js +1 -0
  145. package/dist/ringieraxelspringerBidAdapter.js +1 -1
  146. package/dist/riseBidAdapter.js +1 -1
  147. package/dist/rubiconBidAdapter.js +1 -1
  148. package/dist/seedingAllianceBidAdapter.js +1 -1
  149. package/dist/seedtagBidAdapter.js +1 -1
  150. package/dist/setupadBidAdapter.js +1 -1
  151. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  152. package/dist/sharethroughBidAdapter.js +1 -1
  153. package/dist/shinezBidAdapter.js +1 -1
  154. package/dist/shinezRtbBidAdapter.js +1 -1
  155. package/dist/smaatoBidAdapter.js +1 -1
  156. package/dist/smartadserverBidAdapter.js +1 -1
  157. package/dist/smartxBidAdapter.js +1 -1
  158. package/dist/smartytechBidAdapter.js +1 -1
  159. package/dist/smilewantedBidAdapter.js +1 -1
  160. package/dist/sonobiBidAdapter.js +1 -1
  161. package/dist/sovrnBidAdapter.js +1 -1
  162. package/dist/sspBCBidAdapter.js +1 -1
  163. package/dist/stnBidAdapter.js +1 -1
  164. package/dist/stvBidAdapter.js +1 -1
  165. package/dist/sublimeBidAdapter.js +1 -1
  166. package/dist/taboolaBidAdapter.js +1 -1
  167. package/dist/tagorasBidAdapter.js +1 -1
  168. package/dist/targetVideoBidAdapter.js +1 -1
  169. package/dist/teadsBidAdapter.js +1 -1
  170. package/dist/teqblazeUtils.js +1 -0
  171. package/dist/themoneytizerBidAdapter.js +1 -1
  172. package/dist/topicsFpdModule.js +1 -1
  173. package/dist/trionBidAdapter.js +1 -1
  174. package/dist/tripleliftBidAdapter.js +1 -1
  175. package/dist/ttdBidAdapter.js +1 -1
  176. package/dist/twistDigitalBidAdapter.js +1 -1
  177. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  178. package/dist/uid2IdSystem.js +1 -1
  179. package/dist/underdogmediaBidAdapter.js +1 -1
  180. package/dist/undertoneBidAdapter.js +1 -1
  181. package/dist/unrulyBidAdapter.js +1 -1
  182. package/dist/vidazooBidAdapter.js +1 -1
  183. package/dist/videobyteBidAdapter.js +1 -1
  184. package/dist/visiblemeasuresBidAdapter.js +1 -1
  185. package/dist/visxBidAdapter.js +1 -1
  186. package/dist/vuukleBidAdapter.js +1 -1
  187. package/dist/widespaceBidAdapter.js +1 -1
  188. package/dist/winrBidAdapter.js +1 -1
  189. package/dist/yahooAdsBidAdapter.js +1 -1
  190. package/dist/yieldmoBidAdapter.js +1 -1
  191. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  192. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  193. package/integrationExamples/gpt/raynRtdProvider_example.html +1 -0
  194. package/libraries/adagioUtils/adagioUtils.js +35 -0
  195. package/libraries/appnexusUtils/anUtils.js +1 -0
  196. package/libraries/autoplayDetection/autoplay.js +8 -1
  197. package/libraries/ortbConverter/converter.js +1 -1
  198. package/libraries/teqblazeUtils/bidderUtils.js +253 -0
  199. package/modules/.submodules.json +1 -0
  200. package/modules/acuityadsBidAdapter.js +5 -203
  201. package/modules/adagioBidAdapter.js +1 -17
  202. package/modules/adagioRtdProvider.js +41 -51
  203. package/modules/adagioRtdProvider.md +1 -0
  204. package/modules/admanBidAdapter.js +31 -188
  205. package/modules/adprimeBidAdapter.js +28 -165
  206. package/modules/axisBidAdapter.js +33 -165
  207. package/modules/beyondmediaBidAdapter.js +5 -189
  208. package/modules/bliinkBidAdapter.js +3 -31
  209. package/modules/boldwinBidAdapter.js +21 -159
  210. package/modules/ceeIdSystem.js +1 -1
  211. package/modules/compassBidAdapter.js +5 -198
  212. package/modules/contentexchangeBidAdapter.js +5 -200
  213. package/modules/conversantBidAdapter.js +1 -0
  214. package/modules/dailymotionBidAdapter.js +1 -1
  215. package/modules/e_volutionBidAdapter.js +4 -186
  216. package/modules/emtvBidAdapter.js +5 -198
  217. package/modules/globalsunBidAdapter.js +5 -199
  218. package/modules/id5IdSystem.js +31 -2
  219. package/modules/id5IdSystem.md +67 -2
  220. package/modules/iqzoneBidAdapter.js +5 -224
  221. package/modules/kiviadsBidAdapter.js +5 -199
  222. package/modules/krushmediaBidAdapter.js +25 -143
  223. package/modules/loyalBidAdapter.js +4 -178
  224. package/modules/lunamediahbBidAdapter.js +5 -118
  225. package/modules/mathildeadsBidAdapter.js +5 -198
  226. package/modules/mgidXBidAdapter.js +14 -209
  227. package/modules/mobfoxpbBidAdapter.js +4 -135
  228. package/modules/mobianRtdProvider.js +52 -0
  229. package/modules/mobianRtdProvider.md +11 -0
  230. package/modules/nobidAnalyticsAdapter.js +2 -3
  231. package/modules/novatiqIdSystem.md +2 -3
  232. package/modules/ozoneBidAdapter.js +117 -58
  233. package/modules/paapi.js +2 -1
  234. package/modules/pgamsspBidAdapter.js +5 -240
  235. package/modules/playdigoBidAdapter.js +4 -186
  236. package/modules/prebidServerBidAdapter/index.js +9 -2
  237. package/modules/pubCircleBidAdapter.js +5 -218
  238. package/modules/pubmaticAnalyticsAdapter.js +21 -8
  239. package/modules/pubxaiAnalyticsAdapter.js +1 -5
  240. package/modules/qtBidAdapter.js +5 -224
  241. package/modules/raynRtdProvider.js +36 -3
  242. package/modules/richaudienceBidAdapter.js +375 -0
  243. package/modules/richaudienceBidAdapter.md +1 -1
  244. package/modules/seedtagBidAdapter.js +1 -0
  245. package/modules/setupadBidAdapter.js +76 -153
  246. package/modules/setupadBidAdapter.md +1 -1
  247. package/modules/smaatoBidAdapter.js +17 -6
  248. package/modules/smartytechBidAdapter.js +7 -2
  249. package/modules/topicsFpdModule.js +1 -1
  250. package/modules/uid2IdSystem.js +0 -1
  251. package/modules/uid2IdSystem_shared.js +0 -1
  252. package/modules/visiblemeasuresBidAdapter.js +5 -199
  253. package/modules/zeta_global_sspAnalyticsAdapter.js +8 -4
  254. package/package.json +1 -1
  255. package/src/auction.js +5 -63
  256. package/src/utils/focusTimeout.js +41 -0
  257. package/src/utils/ttlCollection.js +2 -1
  258. package/src/utils.js +42 -0
  259. package/src/videoCache.js +72 -0
  260. package/test/mocks/videoCacheStub.js +1 -1
  261. package/test/spec/auctionmanager_spec.js +16 -1
  262. package/test/spec/libraries/teqblazeUtils/bidderUtils_spec.js +519 -0
  263. package/test/spec/modules/acuityadsBidAdapter_spec.js +79 -43
  264. package/test/spec/modules/adagioRtdProvider_spec.js +62 -1
  265. package/test/spec/modules/admanBidAdapter_spec.js +370 -247
  266. package/test/spec/modules/adprimeBidAdapter_spec.js +225 -78
  267. package/test/spec/modules/axisBidAdapter_spec.js +78 -14
  268. package/test/spec/modules/beyondmediaBidAdapter_spec.js +80 -18
  269. package/test/spec/modules/bliinkBidAdapter_spec.js +8 -2
  270. package/test/spec/modules/boldwinBidAdapter_spec.js +221 -75
  271. package/test/spec/modules/compassBidAdapter_spec.js +130 -16
  272. package/test/spec/modules/contentexchangeBidAdapter_spec.js +134 -21
  273. package/test/spec/modules/conversantBidAdapter_spec.js +7 -0
  274. package/test/spec/modules/dailymotionBidAdapter_spec.js +3 -3
  275. package/test/spec/modules/e_volutionBidAdapter_spec.js +65 -3
  276. package/test/spec/modules/emtvBidAdapter_spec.js +131 -16
  277. package/test/spec/modules/globalsunBidAdapter_spec.js +130 -16
  278. package/test/spec/modules/id5IdSystem_spec.js +79 -3
  279. package/test/spec/modules/iqzoneBidAdapter_spec.js +66 -12
  280. package/test/spec/modules/kiviadsBidAdapter_spec.js +131 -20
  281. package/test/spec/modules/krushmediaBidAdapter_spec.js +272 -90
  282. package/test/spec/modules/loyalBidAdapter_spec.js +114 -14
  283. package/test/spec/modules/lunamediahbBidAdapter_spec.js +221 -87
  284. package/test/spec/modules/mathildeadsBidAdapter_spec.js +87 -18
  285. package/test/spec/modules/mgidXBidAdapter_spec.js +11 -3
  286. package/test/spec/modules/mobfoxpbBidAdapter_spec.js +229 -91
  287. package/test/spec/modules/mobianRtdProvider_spec.js +107 -0
  288. package/test/spec/modules/ozoneBidAdapter_spec.js +192 -22
  289. package/test/spec/modules/paapi_spec.js +5 -5
  290. package/test/spec/modules/pgamsspBidAdapter_spec.js +83 -16
  291. package/test/spec/modules/playdigoBidAdapter_spec.js +38 -9
  292. package/test/spec/modules/prebidServerBidAdapter_spec.js +14 -0
  293. package/test/spec/modules/pubCircleBidAdapter_spec.js +82 -17
  294. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +52 -5
  295. package/test/spec/modules/qtBidAdapter_spec.js +15 -3
  296. package/test/spec/modules/raynRtdProvider_spec.js +25 -0
  297. package/test/spec/modules/richaudienceBidAdapter_spec.js +1304 -0
  298. package/test/spec/modules/seedtagBidAdapter_spec.js +2 -0
  299. package/test/spec/modules/setupadBidAdapter_spec.js +139 -97
  300. package/test/spec/modules/smaatoBidAdapter_spec.js +27 -0
  301. package/test/spec/modules/smartytechBidAdapter_spec.js +5 -1
  302. package/test/spec/modules/topicsFpdModule_spec.js +43 -59
  303. package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +130 -16
  304. package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +4 -0
  305. package/test/spec/ortbConverter/converter_spec.js +7 -3
  306. package/test/spec/unit/utils/focusTimeout_spec.js +60 -0
  307. package/test/spec/videoCache_spec.js +56 -53
@@ -3,9 +3,19 @@ import { spec } from '../../../modules/compassBidAdapter.js';
3
3
  import { BANNER, VIDEO, NATIVE } from '../../../src/mediaTypes.js';
4
4
  import { getUniqueIdentifierStr } from '../../../src/utils.js';
5
5
 
6
- const bidder = 'compass'
6
+ const bidder = 'compass';
7
7
 
8
8
  describe('CompassBidAdapter', function () {
9
+ const userIdAsEids = [{
10
+ source: 'test.org',
11
+ uids: [{
12
+ id: '01**********',
13
+ atype: 1,
14
+ ext: {
15
+ third: '01***********'
16
+ }
17
+ }]
18
+ }];
9
19
  const bids = [
10
20
  {
11
21
  bidId: getUniqueIdentifierStr(),
@@ -16,8 +26,9 @@ describe('CompassBidAdapter', function () {
16
26
  }
17
27
  },
18
28
  params: {
19
- placementId: 'testBanner',
20
- }
29
+ placementId: 'testBanner'
30
+ },
31
+ userIdAsEids
21
32
  },
22
33
  {
23
34
  bidId: getUniqueIdentifierStr(),
@@ -30,8 +41,9 @@ describe('CompassBidAdapter', function () {
30
41
  }
31
42
  },
32
43
  params: {
33
- placementId: 'testVideo',
34
- }
44
+ placementId: 'testVideo'
45
+ },
46
+ userIdAsEids
35
47
  },
36
48
  {
37
49
  bidId: getUniqueIdentifierStr(),
@@ -53,8 +65,9 @@ describe('CompassBidAdapter', function () {
53
65
  }
54
66
  },
55
67
  params: {
56
- placementId: 'testNative',
57
- }
68
+ placementId: 'testNative'
69
+ },
70
+ userIdAsEids
58
71
  }
59
72
  ];
60
73
 
@@ -73,9 +86,20 @@ describe('CompassBidAdapter', function () {
73
86
 
74
87
  const bidderRequest = {
75
88
  uspConsent: '1---',
76
- gdprConsent: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
89
+ gdprConsent: {
90
+ consentString: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
91
+ vendorData: {}
92
+ },
77
93
  refererInfo: {
78
- referer: 'https://test.com'
94
+ referer: 'https://test.com',
95
+ page: 'https://test.com'
96
+ },
97
+ ortb2: {
98
+ device: {
99
+ w: 1512,
100
+ h: 982,
101
+ language: 'en-UK'
102
+ }
79
103
  },
80
104
  timeout: 500
81
105
  };
@@ -129,7 +153,7 @@ describe('CompassBidAdapter', function () {
129
153
  expect(data.host).to.be.a('string');
130
154
  expect(data.page).to.be.a('string');
131
155
  expect(data.coppa).to.be.a('number');
132
- expect(data.gdpr).to.be.a('string');
156
+ expect(data.gdpr).to.be.a('object');
133
157
  expect(data.ccpa).to.be.a('string');
134
158
  expect(data.tmax).to.be.a('number');
135
159
  expect(data.placements).to.have.lengthOf(3);
@@ -145,6 +169,56 @@ describe('CompassBidAdapter', function () {
145
169
  expect(placement.schain).to.be.an('object');
146
170
  expect(placement.bidfloor).to.exist.and.to.equal(0);
147
171
  expect(placement.type).to.exist.and.to.equal('publisher');
172
+ expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
173
+
174
+ if (placement.adFormat === BANNER) {
175
+ expect(placement.sizes).to.be.an('array');
176
+ }
177
+ switch (placement.adFormat) {
178
+ case BANNER:
179
+ expect(placement.sizes).to.be.an('array');
180
+ break;
181
+ case VIDEO:
182
+ expect(placement.playerSize).to.be.an('array');
183
+ expect(placement.minduration).to.be.an('number');
184
+ expect(placement.maxduration).to.be.an('number');
185
+ break;
186
+ case NATIVE:
187
+ expect(placement.native).to.be.an('object');
188
+ break;
189
+ }
190
+ }
191
+ });
192
+
193
+ it('Returns valid endpoints', function () {
194
+ const bids = [
195
+ {
196
+ bidId: getUniqueIdentifierStr(),
197
+ bidder: bidder,
198
+ mediaTypes: {
199
+ [BANNER]: {
200
+ sizes: [[300, 250]]
201
+ }
202
+ },
203
+ params: {
204
+ endpointId: 'testBanner',
205
+ },
206
+ userIdAsEids
207
+ }
208
+ ];
209
+
210
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
211
+
212
+ const { placements } = serverRequest.data;
213
+ for (let i = 0, len = placements.length; i < len; i++) {
214
+ const placement = placements[i];
215
+ expect(placement.endpointId).to.be.oneOf(['testBanner', 'testVideo', 'testNative']);
216
+ expect(placement.adFormat).to.be.oneOf([BANNER, VIDEO, NATIVE]);
217
+ expect(placement.bidId).to.be.a('string');
218
+ expect(placement.schain).to.be.an('object');
219
+ expect(placement.bidfloor).to.exist.and.to.equal(0);
220
+ expect(placement.type).to.exist.and.to.equal('network');
221
+ expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
148
222
 
149
223
  if (placement.adFormat === BANNER) {
150
224
  expect(placement.sizes).to.be.an('array');
@@ -170,8 +244,10 @@ describe('CompassBidAdapter', function () {
170
244
  serverRequest = spec.buildRequests(bids, bidderRequest);
171
245
  let data = serverRequest.data;
172
246
  expect(data.gdpr).to.exist;
173
- expect(data.gdpr).to.be.a('string');
174
- expect(data.gdpr).to.equal(bidderRequest.gdprConsent);
247
+ expect(data.gdpr).to.be.a('object');
248
+ expect(data.gdpr).to.have.property('consentString');
249
+ expect(data.gdpr).to.not.have.property('vendorData');
250
+ expect(data.gdpr.consentString).to.equal(bidderRequest.gdprConsent.consentString);
175
251
  expect(data.ccpa).to.not.exist;
176
252
  delete bidderRequest.gdprConsent;
177
253
  });
@@ -186,12 +262,38 @@ describe('CompassBidAdapter', function () {
186
262
  expect(data.ccpa).to.equal(bidderRequest.uspConsent);
187
263
  expect(data.gdpr).to.not.exist;
188
264
  });
265
+ });
266
+
267
+ describe('gpp consent', function () {
268
+ it('bidderRequest.gppConsent', () => {
269
+ bidderRequest.gppConsent = {
270
+ gppString: 'abc123',
271
+ applicableSections: [8]
272
+ };
189
273
 
190
- it('Returns empty data if no valid requests are passed', function () {
191
- serverRequest = spec.buildRequests([], bidderRequest);
274
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
192
275
  let data = serverRequest.data;
193
- expect(data.placements).to.be.an('array').that.is.empty;
194
- });
276
+ expect(data).to.be.an('object');
277
+ expect(data).to.have.property('gpp');
278
+ expect(data).to.have.property('gpp_sid');
279
+
280
+ delete bidderRequest.gppConsent;
281
+ })
282
+
283
+ it('bidderRequest.ortb2.regs.gpp', () => {
284
+ bidderRequest.ortb2 = bidderRequest.ortb2 || {};
285
+ bidderRequest.ortb2.regs = bidderRequest.ortb2.regs || {};
286
+ bidderRequest.ortb2.regs.gpp = 'abc123';
287
+ bidderRequest.ortb2.regs.gpp_sid = [8];
288
+
289
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
290
+ let data = serverRequest.data;
291
+ expect(data).to.be.an('object');
292
+ expect(data).to.have.property('gpp');
293
+ expect(data).to.have.property('gpp_sid');
294
+
295
+ bidderRequest.ortb2;
296
+ })
195
297
  });
196
298
 
197
299
  describe('interpretResponse', function () {
@@ -395,5 +497,17 @@ describe('CompassBidAdapter', function () {
395
497
  expect(syncData[0].url).to.be.a('string')
396
498
  expect(syncData[0].url).to.equal('https://sa-cs.deliverimp.com/image?pbjs=1&ccpa_consent=1---&coppa=0')
397
499
  });
500
+ it('Should return array of objects with proper sync config , include GPP', function() {
501
+ const syncData = spec.getUserSyncs({}, {}, {}, {}, {
502
+ gppString: 'abc123',
503
+ applicableSections: [8]
504
+ });
505
+ expect(syncData).to.be.an('array').which.is.not.empty;
506
+ expect(syncData[0]).to.be.an('object')
507
+ expect(syncData[0].type).to.be.a('string')
508
+ expect(syncData[0].type).to.equal('image')
509
+ expect(syncData[0].url).to.be.a('string')
510
+ expect(syncData[0].url).to.equal('https://sa-cs.deliverimp.com/image?pbjs=1&gpp=abc123&gpp_sid=8&coppa=0')
511
+ });
398
512
  });
399
513
  });
@@ -3,9 +3,19 @@ import { spec } from '../../../modules/contentexchangeBidAdapter.js';
3
3
  import { BANNER, VIDEO, NATIVE } from '../../../src/mediaTypes.js';
4
4
  import { getUniqueIdentifierStr } from '../../../src/utils.js';
5
5
 
6
- const bidder = 'contentexchange'
6
+ const bidder = 'contentexchange';
7
7
 
8
8
  describe('ContentexchangeBidAdapter', function () {
9
+ const userIdAsEids = [{
10
+ source: 'test.org',
11
+ uids: [{
12
+ id: '01**********',
13
+ atype: 1,
14
+ ext: {
15
+ third: '01***********'
16
+ }
17
+ }]
18
+ }];
9
19
  const bids = [
10
20
  {
11
21
  bidId: getUniqueIdentifierStr(),
@@ -16,9 +26,9 @@ describe('ContentexchangeBidAdapter', function () {
16
26
  }
17
27
  },
18
28
  params: {
19
- placementId: 'test',
20
- adFormat: BANNER
21
- }
29
+ placementId: 'testBanner'
30
+ },
31
+ userIdAsEids
22
32
  },
23
33
  {
24
34
  bidId: getUniqueIdentifierStr(),
@@ -31,9 +41,9 @@ describe('ContentexchangeBidAdapter', function () {
31
41
  }
32
42
  },
33
43
  params: {
34
- placementId: 'test',
35
- adFormat: VIDEO
36
- }
44
+ placementId: 'testVideo'
45
+ },
46
+ userIdAsEids
37
47
  },
38
48
  {
39
49
  bidId: getUniqueIdentifierStr(),
@@ -55,9 +65,9 @@ describe('ContentexchangeBidAdapter', function () {
55
65
  }
56
66
  },
57
67
  params: {
58
- placementId: 'test',
59
- adFormat: NATIVE
60
- }
68
+ placementId: 'testNative'
69
+ },
70
+ userIdAsEids
61
71
  }
62
72
  ];
63
73
 
@@ -70,15 +80,26 @@ describe('ContentexchangeBidAdapter', function () {
70
80
  }
71
81
  },
72
82
  params: {
73
- adFormat: BANNER
83
+
74
84
  }
75
85
  }
76
86
 
77
87
  const bidderRequest = {
78
88
  uspConsent: '1---',
79
- gdprConsent: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
89
+ gdprConsent: {
90
+ consentString: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
91
+ vendorData: {}
92
+ },
80
93
  refererInfo: {
81
- referer: 'https://test.com'
94
+ referer: 'https://test.com',
95
+ page: 'https://test.com'
96
+ },
97
+ ortb2: {
98
+ device: {
99
+ w: 1512,
100
+ h: 982,
101
+ language: 'en-UK'
102
+ }
82
103
  },
83
104
  timeout: 500
84
105
  };
@@ -132,7 +153,7 @@ describe('ContentexchangeBidAdapter', function () {
132
153
  expect(data.host).to.be.a('string');
133
154
  expect(data.page).to.be.a('string');
134
155
  expect(data.coppa).to.be.a('number');
135
- expect(data.gdpr).to.be.a('string');
156
+ expect(data.gdpr).to.be.a('object');
136
157
  expect(data.ccpa).to.be.a('string');
137
158
  expect(data.tmax).to.be.a('number');
138
159
  expect(data.placements).to.have.lengthOf(3);
@@ -142,11 +163,62 @@ describe('ContentexchangeBidAdapter', function () {
142
163
  const { placements } = serverRequest.data;
143
164
  for (let i = 0, len = placements.length; i < len; i++) {
144
165
  const placement = placements[i];
145
- expect(placement.placementId).to.be.equal('test');
166
+ expect(placement.placementId).to.be.oneOf(['testBanner', 'testVideo', 'testNative']);
146
167
  expect(placement.adFormat).to.be.oneOf([BANNER, VIDEO, NATIVE]);
147
168
  expect(placement.bidId).to.be.a('string');
148
169
  expect(placement.schain).to.be.an('object');
149
170
  expect(placement.bidfloor).to.exist.and.to.equal(0);
171
+ expect(placement.type).to.exist.and.to.equal('publisher');
172
+ expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
173
+
174
+ if (placement.adFormat === BANNER) {
175
+ expect(placement.sizes).to.be.an('array');
176
+ }
177
+ switch (placement.adFormat) {
178
+ case BANNER:
179
+ expect(placement.sizes).to.be.an('array');
180
+ break;
181
+ case VIDEO:
182
+ expect(placement.playerSize).to.be.an('array');
183
+ expect(placement.minduration).to.be.an('number');
184
+ expect(placement.maxduration).to.be.an('number');
185
+ break;
186
+ case NATIVE:
187
+ expect(placement.native).to.be.an('object');
188
+ break;
189
+ }
190
+ }
191
+ });
192
+
193
+ it('Returns valid endpoints', function () {
194
+ const bids = [
195
+ {
196
+ bidId: getUniqueIdentifierStr(),
197
+ bidder: bidder,
198
+ mediaTypes: {
199
+ [BANNER]: {
200
+ sizes: [[300, 250]]
201
+ }
202
+ },
203
+ params: {
204
+ endpointId: 'testBanner',
205
+ },
206
+ userIdAsEids
207
+ }
208
+ ];
209
+
210
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
211
+
212
+ const { placements } = serverRequest.data;
213
+ for (let i = 0, len = placements.length; i < len; i++) {
214
+ const placement = placements[i];
215
+ expect(placement.endpointId).to.be.oneOf(['testBanner', 'testVideo', 'testNative']);
216
+ expect(placement.adFormat).to.be.oneOf([BANNER, VIDEO, NATIVE]);
217
+ expect(placement.bidId).to.be.a('string');
218
+ expect(placement.schain).to.be.an('object');
219
+ expect(placement.bidfloor).to.exist.and.to.equal(0);
220
+ expect(placement.type).to.exist.and.to.equal('network');
221
+ expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
150
222
 
151
223
  if (placement.adFormat === BANNER) {
152
224
  expect(placement.sizes).to.be.an('array');
@@ -172,8 +244,10 @@ describe('ContentexchangeBidAdapter', function () {
172
244
  serverRequest = spec.buildRequests(bids, bidderRequest);
173
245
  let data = serverRequest.data;
174
246
  expect(data.gdpr).to.exist;
175
- expect(data.gdpr).to.be.a('string');
176
- expect(data.gdpr).to.equal(bidderRequest.gdprConsent);
247
+ expect(data.gdpr).to.be.a('object');
248
+ expect(data.gdpr).to.have.property('consentString');
249
+ expect(data.gdpr).to.not.have.property('vendorData');
250
+ expect(data.gdpr.consentString).to.equal(bidderRequest.gdprConsent.consentString);
177
251
  expect(data.ccpa).to.not.exist;
178
252
  delete bidderRequest.gdprConsent;
179
253
  });
@@ -188,12 +262,38 @@ describe('ContentexchangeBidAdapter', function () {
188
262
  expect(data.ccpa).to.equal(bidderRequest.uspConsent);
189
263
  expect(data.gdpr).to.not.exist;
190
264
  });
265
+ });
266
+
267
+ describe('gpp consent', function () {
268
+ it('bidderRequest.gppConsent', () => {
269
+ bidderRequest.gppConsent = {
270
+ gppString: 'abc123',
271
+ applicableSections: [8]
272
+ };
191
273
 
192
- it('Returns empty data if no valid requests are passed', function () {
193
- serverRequest = spec.buildRequests([], bidderRequest);
274
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
194
275
  let data = serverRequest.data;
195
- expect(data.placements).to.be.an('array').that.is.empty;
196
- });
276
+ expect(data).to.be.an('object');
277
+ expect(data).to.have.property('gpp');
278
+ expect(data).to.have.property('gpp_sid');
279
+
280
+ delete bidderRequest.gppConsent;
281
+ })
282
+
283
+ it('bidderRequest.ortb2.regs.gpp', () => {
284
+ bidderRequest.ortb2 = bidderRequest.ortb2 || {};
285
+ bidderRequest.ortb2.regs = bidderRequest.ortb2.regs || {};
286
+ bidderRequest.ortb2.regs.gpp = 'abc123';
287
+ bidderRequest.ortb2.regs.gpp_sid = [8];
288
+
289
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
290
+ let data = serverRequest.data;
291
+ expect(data).to.be.an('object');
292
+ expect(data).to.have.property('gpp');
293
+ expect(data).to.have.property('gpp_sid');
294
+
295
+ bidderRequest.ortb2;
296
+ })
197
297
  });
198
298
 
199
299
  describe('interpretResponse', function () {
@@ -372,6 +472,7 @@ describe('ContentexchangeBidAdapter', function () {
372
472
  expect(serverResponses).to.be.an('array').that.is.empty;
373
473
  });
374
474
  });
475
+
375
476
  describe('getUserSyncs', function() {
376
477
  it('Should return array of objects with proper sync config , include GDPR', function() {
377
478
  const syncData = spec.getUserSyncs({}, {}, {
@@ -396,5 +497,17 @@ describe('ContentexchangeBidAdapter', function () {
396
497
  expect(syncData[0].url).to.be.a('string')
397
498
  expect(syncData[0].url).to.equal('https://sync2.adnetwork.agency/image?pbjs=1&ccpa_consent=1---&coppa=0')
398
499
  });
500
+ it('Should return array of objects with proper sync config , include GPP', function() {
501
+ const syncData = spec.getUserSyncs({}, {}, {}, {}, {
502
+ gppString: 'abc123',
503
+ applicableSections: [8]
504
+ });
505
+ expect(syncData).to.be.an('array').which.is.not.empty;
506
+ expect(syncData[0]).to.be.an('object')
507
+ expect(syncData[0].type).to.be.a('string')
508
+ expect(syncData[0].type).to.equal('image')
509
+ expect(syncData[0].url).to.be.a('string')
510
+ expect(syncData[0].url).to.equal('https://sync2.adnetwork.agency/image?pbjs=1&gpp=abc123&gpp_sid=8&coppa=0')
511
+ });
399
512
  });
400
513
  });
@@ -441,6 +441,13 @@ describe('Conversant adapter tests', function() {
441
441
  expect(payload.site.content).to.have.property('title');
442
442
  });
443
443
 
444
+ it('Verify currency', () => {
445
+ const bidderRequest = { timeout: 9999, ortb2: {cur: ['EUR']} };
446
+ const request = spec.buildRequests(bidRequests, bidderRequest);
447
+ const payload = request.data;
448
+ expect(payload.cur).deep.equal(['USD']);
449
+ })
450
+
444
451
  it('Verify supply chain data', () => {
445
452
  const bidderRequest = {refererInfo: {page: 'http://test.com?a=b&c=123'}};
446
453
  const schain = {complete: 1, ver: '1.0', nodes: [{asi: 'bidderA.com', sid: '00001', hp: 1}]};
@@ -196,7 +196,7 @@ describe('dailymotionBidAdapterTests', () => {
196
196
  livestream: !!bidRequestData[0].params.video.livestream,
197
197
  isCreatedForKids: bidRequestData[0].params.video.isCreatedForKids,
198
198
  context: {
199
- siteOrAppCat: '',
199
+ siteOrAppCat: [],
200
200
  videoViewsInSession: bidRequestData[0].params.video.videoViewsInSession,
201
201
  autoplay: bidRequestData[0].params.video.autoplay,
202
202
  playerVolume: bidRequestData[0].params.video.playerVolume,
@@ -342,7 +342,7 @@ describe('dailymotionBidAdapterTests', () => {
342
342
  livestream: !!bidRequestData[0].params.video.livestream,
343
343
  isCreatedForKids: null,
344
344
  context: {
345
- siteOrAppCat: '',
345
+ siteOrAppCat: [],
346
346
  videoViewsInSession: null,
347
347
  autoplay: null,
348
348
  playerVolume: null,
@@ -588,7 +588,7 @@ describe('dailymotionBidAdapterTests', () => {
588
588
  livestream: false,
589
589
  isCreatedForKids: null,
590
590
  context: {
591
- siteOrAppCat: '',
591
+ siteOrAppCat: [],
592
592
  videoViewsInSession: null,
593
593
  autoplay: null,
594
594
  playerVolume: null,
@@ -26,7 +26,7 @@ describe('EvolutionTechBidAdapter', function () {
26
26
  }
27
27
  },
28
28
  params: {
29
- placementId: 'testBanner',
29
+ placementId: 'testBanner'
30
30
  },
31
31
  userIdAsEids
32
32
  },
@@ -41,7 +41,7 @@ describe('EvolutionTechBidAdapter', function () {
41
41
  }
42
42
  },
43
43
  params: {
44
- placementId: 'testVideo',
44
+ placementId: 'testVideo'
45
45
  },
46
46
  userIdAsEids
47
47
  },
@@ -91,7 +91,15 @@ describe('EvolutionTechBidAdapter', function () {
91
91
  vendorData: {}
92
92
  },
93
93
  refererInfo: {
94
- referer: 'https://test.com'
94
+ referer: 'https://test.com',
95
+ page: 'https://test.com'
96
+ },
97
+ ortb2: {
98
+ device: {
99
+ w: 1512,
100
+ h: 982,
101
+ language: 'en-UK'
102
+ }
95
103
  },
96
104
  timeout: 500
97
105
  };
@@ -119,6 +127,10 @@ describe('EvolutionTechBidAdapter', function () {
119
127
  expect(serverRequest.method).to.equal('POST');
120
128
  });
121
129
 
130
+ it('Returns valid URL', function () {
131
+ expect(serverRequest.url).to.equal('https://service.e-volution.ai/?c=o&m=multi');
132
+ });
133
+
122
134
  it('Returns general data valid', function () {
123
135
  let data = serverRequest.data;
124
136
  expect(data).to.be.an('object');
@@ -156,6 +168,56 @@ describe('EvolutionTechBidAdapter', function () {
156
168
  expect(placement.bidId).to.be.a('string');
157
169
  expect(placement.schain).to.be.an('object');
158
170
  expect(placement.bidfloor).to.exist.and.to.equal(0);
171
+ expect(placement.type).to.exist.and.to.equal('publisher');
172
+ expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
173
+
174
+ if (placement.adFormat === BANNER) {
175
+ expect(placement.sizes).to.be.an('array');
176
+ }
177
+ switch (placement.adFormat) {
178
+ case BANNER:
179
+ expect(placement.sizes).to.be.an('array');
180
+ break;
181
+ case VIDEO:
182
+ expect(placement.playerSize).to.be.an('array');
183
+ expect(placement.minduration).to.be.an('number');
184
+ expect(placement.maxduration).to.be.an('number');
185
+ break;
186
+ case NATIVE:
187
+ expect(placement.native).to.be.an('object');
188
+ break;
189
+ }
190
+ }
191
+ });
192
+
193
+ it('Returns valid endpoints', function () {
194
+ const bids = [
195
+ {
196
+ bidId: getUniqueIdentifierStr(),
197
+ bidder: bidder,
198
+ mediaTypes: {
199
+ [BANNER]: {
200
+ sizes: [[300, 250]]
201
+ }
202
+ },
203
+ params: {
204
+ endpointId: 'testBanner',
205
+ },
206
+ userIdAsEids
207
+ }
208
+ ];
209
+
210
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
211
+
212
+ const { placements } = serverRequest.data;
213
+ for (let i = 0, len = placements.length; i < len; i++) {
214
+ const placement = placements[i];
215
+ expect(placement.endpointId).to.be.oneOf(['testBanner', 'testVideo', 'testNative']);
216
+ expect(placement.adFormat).to.be.oneOf([BANNER, VIDEO, NATIVE]);
217
+ expect(placement.bidId).to.be.a('string');
218
+ expect(placement.schain).to.be.an('object');
219
+ expect(placement.bidfloor).to.exist.and.to.equal(0);
220
+ expect(placement.type).to.exist.and.to.equal('network');
159
221
  expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
160
222
 
161
223
  if (placement.adFormat === BANNER) {