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/beyondmediaBidAdapter.js';
3
3
  import { BANNER, VIDEO, NATIVE } from '../../../src/mediaTypes.js';
4
4
  import { getUniqueIdentifierStr } from '../../../src/utils.js';
5
5
 
6
- const bidder = 'beyondmedia'
6
+ const bidder = 'beyondmedia';
7
7
 
8
8
  describe('AndBeyondMediaBidAdapter', 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('AndBeyondMediaBidAdapter', 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('AndBeyondMediaBidAdapter', 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('AndBeyondMediaBidAdapter', 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('AndBeyondMediaBidAdapter', 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
  };
@@ -83,8 +107,6 @@ describe('AndBeyondMediaBidAdapter', function () {
83
107
  describe('isBidRequestValid', function () {
84
108
  it('Should return true if there are bidId, params and key parameters present', function () {
85
109
  expect(spec.isBidRequestValid(bids[0])).to.be.true;
86
- expect(spec.isBidRequestValid(bids[1])).to.be.true;
87
- expect(spec.isBidRequestValid(bids[2])).to.be.true;
88
110
  });
89
111
  it('Should return false if at least one of parameters is not present', function () {
90
112
  expect(spec.isBidRequestValid(invalidBid)).to.be.false;
@@ -131,7 +153,7 @@ describe('AndBeyondMediaBidAdapter', function () {
131
153
  expect(data.host).to.be.a('string');
132
154
  expect(data.page).to.be.a('string');
133
155
  expect(data.coppa).to.be.a('number');
134
- expect(data.gdpr).to.be.a('string');
156
+ expect(data.gdpr).to.be.a('object');
135
157
  expect(data.ccpa).to.be.a('string');
136
158
  expect(data.tmax).to.be.a('number');
137
159
  expect(data.placements).to.have.lengthOf(3);
@@ -172,8 +194,10 @@ describe('AndBeyondMediaBidAdapter', function () {
172
194
  serverRequest = spec.buildRequests(bids, bidderRequest);
173
195
  let data = serverRequest.data;
174
196
  expect(data.gdpr).to.exist;
175
- expect(data.gdpr).to.be.a('string');
176
- expect(data.gdpr).to.equal(bidderRequest.gdprConsent);
197
+ expect(data.gdpr).to.be.a('object');
198
+ expect(data.gdpr).to.have.property('consentString');
199
+ expect(data.gdpr).to.not.have.property('vendorData');
200
+ expect(data.gdpr.consentString).to.equal(bidderRequest.gdprConsent.consentString);
177
201
  expect(data.ccpa).to.not.exist;
178
202
  delete bidderRequest.gdprConsent;
179
203
  });
@@ -188,12 +212,38 @@ describe('AndBeyondMediaBidAdapter', function () {
188
212
  expect(data.ccpa).to.equal(bidderRequest.uspConsent);
189
213
  expect(data.gdpr).to.not.exist;
190
214
  });
215
+ });
191
216
 
192
- it('Returns empty data if no valid requests are passed', function () {
193
- serverRequest = spec.buildRequests([], bidderRequest);
217
+ describe('gpp consent', function () {
218
+ it('bidderRequest.gppConsent', () => {
219
+ bidderRequest.gppConsent = {
220
+ gppString: 'abc123',
221
+ applicableSections: [8]
222
+ };
223
+
224
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
194
225
  let data = serverRequest.data;
195
- expect(data.placements).to.be.an('array').that.is.empty;
196
- });
226
+ expect(data).to.be.an('object');
227
+ expect(data).to.have.property('gpp');
228
+ expect(data).to.have.property('gpp_sid');
229
+
230
+ delete bidderRequest.gppConsent;
231
+ })
232
+
233
+ it('bidderRequest.ortb2.regs.gpp', () => {
234
+ bidderRequest.ortb2 = bidderRequest.ortb2 || {};
235
+ bidderRequest.ortb2.regs = bidderRequest.ortb2.regs || {};
236
+ bidderRequest.ortb2.regs.gpp = 'abc123';
237
+ bidderRequest.ortb2.regs.gpp_sid = [8];
238
+
239
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
240
+ let data = serverRequest.data;
241
+ expect(data).to.be.an('object');
242
+ expect(data).to.have.property('gpp');
243
+ expect(data).to.have.property('gpp_sid');
244
+
245
+ bidderRequest.ortb2;
246
+ })
197
247
  });
198
248
 
199
249
  describe('interpretResponse', function () {
@@ -397,5 +447,17 @@ describe('AndBeyondMediaBidAdapter', function () {
397
447
  expect(syncData[0].url).to.be.a('string')
398
448
  expect(syncData[0].url).to.equal('https://cookies.andbeyond.media/image?pbjs=1&ccpa_consent=1---&coppa=0')
399
449
  });
450
+ it('Should return array of objects with proper sync config , include GPP', function() {
451
+ const syncData = spec.getUserSyncs({}, {}, {}, {}, {
452
+ gppString: 'abc123',
453
+ applicableSections: [8]
454
+ });
455
+ expect(syncData).to.be.an('array').which.is.not.empty;
456
+ expect(syncData[0]).to.be.an('object')
457
+ expect(syncData[0].type).to.be.a('string')
458
+ expect(syncData[0].type).to.equal('image')
459
+ expect(syncData[0].url).to.be.a('string')
460
+ expect(syncData[0].url).to.equal('https://cookies.andbeyond.media/image?pbjs=1&gpp=abc123&gpp_sid=8&coppa=0')
461
+ });
400
462
  });
401
463
  });
@@ -7,9 +7,14 @@ import {
7
7
  BLIINK_ENDPOINT_COOKIE_SYNC_IFRAME,
8
8
  getEffectiveConnectionType,
9
9
  getUserIds,
10
- getDomLoadingDuration,
11
10
  GVL_ID,
12
11
  } from 'modules/bliinkBidAdapter.js';
12
+ import {
13
+ canAccessWindowTop,
14
+ getDomLoadingDuration,
15
+ getWindowSelf,
16
+ getWindowTop
17
+ } from 'src/utils.js';
13
18
  import { config } from 'src/config.js';
14
19
 
15
20
  /**
@@ -32,8 +37,9 @@ import { config } from 'src/config.js';
32
37
  * ortb2Imp: {ext: {data: {pbadslot: string}}}}}
33
38
  */
34
39
 
40
+ const w = (canAccessWindowTop()) ? getWindowTop() : getWindowSelf();
35
41
  const connectionType = getEffectiveConnectionType();
36
- const domLoadingDuration = getDomLoadingDuration().toString();
42
+ const domLoadingDuration = getDomLoadingDuration(w).toString();
37
43
  const getConfigBid = (placement) => {
38
44
  return {
39
45
  adUnitCode: '/19968336/test',
@@ -1,115 +1,220 @@
1
- import {expect} from 'chai';
2
- import {spec} from '../../../modules/boldwinBidAdapter.js';
3
- import { BANNER, VIDEO } from '../../../src/mediaTypes.js';
1
+ import { expect } from 'chai';
2
+ import { spec } from '../../../modules/boldwinBidAdapter.js';
3
+ import { BANNER, VIDEO, NATIVE } from '../../../src/mediaTypes.js';
4
+ import { getUniqueIdentifierStr } from '../../../src/utils.js';
5
+
6
+ const bidder = 'boldwin';
4
7
 
5
8
  describe('BoldwinBidAdapter', function () {
6
- const bid = {
7
- bidId: '23fhj33i987f',
8
- bidder: 'boldwin',
9
+ const userIdAsEids = [{
10
+ source: 'test.org',
11
+ uids: [{
12
+ id: '01**********',
13
+ atype: 1,
14
+ ext: {
15
+ third: '01***********'
16
+ }
17
+ }]
18
+ }];
19
+ const bids = [
20
+ {
21
+ bidId: getUniqueIdentifierStr(),
22
+ bidder: bidder,
23
+ mediaTypes: {
24
+ [BANNER]: {
25
+ sizes: [[300, 250]]
26
+ }
27
+ },
28
+ params: {
29
+ placementId: 'testBanner'
30
+ },
31
+ userIdAsEids
32
+ },
33
+ {
34
+ bidId: getUniqueIdentifierStr(),
35
+ bidder: bidder,
36
+ mediaTypes: {
37
+ [VIDEO]: {
38
+ playerSize: [[300, 300]],
39
+ minduration: 5,
40
+ maxduration: 60
41
+ }
42
+ },
43
+ params: {
44
+ placementId: 'testVideo'
45
+ },
46
+ userIdAsEids
47
+ },
48
+ {
49
+ bidId: getUniqueIdentifierStr(),
50
+ bidder: bidder,
51
+ mediaTypes: {
52
+ [NATIVE]: {
53
+ native: {
54
+ title: {
55
+ required: true
56
+ },
57
+ body: {
58
+ required: true
59
+ },
60
+ icon: {
61
+ required: true,
62
+ size: [64, 64]
63
+ }
64
+ }
65
+ }
66
+ },
67
+ params: {
68
+ placementId: 'testNative'
69
+ },
70
+ userIdAsEids
71
+ }
72
+ ];
73
+
74
+ const invalidBid = {
75
+ bidId: getUniqueIdentifierStr(),
76
+ bidder: bidder,
9
77
  mediaTypes: {
10
- banner: {
11
- sizes: [ [300, 250], [320, 50] ],
78
+ [BANNER]: {
79
+ sizes: [[300, 250]]
12
80
  }
13
81
  },
14
82
  params: {
15
- placementId: 'testBanner',
83
+
16
84
  }
17
- };
85
+ }
18
86
 
19
87
  const bidderRequest = {
88
+ uspConsent: '1---',
89
+ gdprConsent: {
90
+ consentString: 'COvFyGBOvFyGBAbAAAENAPCAAOAAAAAAAAAAAEEUACCKAAA.IFoEUQQgAIQwgIwQABAEAAAAOIAACAIAAAAQAIAgEAACEAAAAAgAQBAAAAAAAGBAAgAAAAAAAFAAECAAAgAAQARAEQAAAAAJAAIAAgAAAYQEAAAQmAgBC3ZAYzUw',
91
+ vendorData: {}
92
+ },
20
93
  refererInfo: {
21
- referer: 'test.com'
94
+ referer: 'https://test.com',
95
+ page: 'https://test.com'
22
96
  },
23
- ortb2: {}
97
+ ortb2: {
98
+ device: {
99
+ w: 1512,
100
+ h: 982,
101
+ language: 'en-UK'
102
+ }
103
+ },
104
+ timeout: 500
24
105
  };
25
106
 
26
107
  describe('isBidRequestValid', function () {
27
- it('Should return true if there are bidId, params and placementId parameters present', function () {
28
- expect(spec.isBidRequestValid(bid)).to.be.true;
108
+ it('Should return true if there are bidId, params and key parameters present', function () {
109
+ expect(spec.isBidRequestValid(bids[0])).to.be.true;
29
110
  });
30
111
  it('Should return false if at least one of parameters is not present', function () {
31
- delete bid.params.placementId;
32
- expect(spec.isBidRequestValid(bid)).to.be.false;
112
+ expect(spec.isBidRequestValid(invalidBid)).to.be.false;
33
113
  });
34
114
  });
35
115
 
36
116
  describe('buildRequests', function () {
37
- let serverRequest = spec.buildRequests([bid], bidderRequest);
117
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
118
+
38
119
  it('Creates a ServerRequest object with method, URL and data', function () {
39
120
  expect(serverRequest).to.exist;
40
121
  expect(serverRequest.method).to.exist;
41
122
  expect(serverRequest.url).to.exist;
42
123
  expect(serverRequest.data).to.exist;
43
124
  });
125
+
44
126
  it('Returns POST method', function () {
45
127
  expect(serverRequest.method).to.equal('POST');
46
128
  });
129
+
47
130
  it('Returns valid URL', function () {
48
131
  expect(serverRequest.url).to.equal('https://ssp.videowalldirect.com/pbjs');
49
132
  });
50
- it('Returns valid data if array of bids is valid', function () {
133
+
134
+ it('Returns general data valid', function () {
51
135
  let data = serverRequest.data;
52
136
  expect(data).to.be.an('object');
53
- expect(data).to.have.all.keys('deviceWidth', 'deviceHeight', 'language', 'secure', 'host', 'page', 'placements');
137
+ expect(data).to.have.all.keys('deviceWidth',
138
+ 'deviceHeight',
139
+ 'language',
140
+ 'secure',
141
+ 'host',
142
+ 'page',
143
+ 'placements',
144
+ 'coppa',
145
+ 'ccpa',
146
+ 'gdpr',
147
+ 'tmax'
148
+ );
54
149
  expect(data.deviceWidth).to.be.a('number');
55
150
  expect(data.deviceHeight).to.be.a('number');
56
151
  expect(data.language).to.be.a('string');
57
152
  expect(data.secure).to.be.within(0, 1);
58
153
  expect(data.host).to.be.a('string');
59
154
  expect(data.page).to.be.a('string');
60
- expect(data.gdpr).to.not.exist;
61
- expect(data.ccpa).to.not.exist;
62
- let placement = data['placements'][0];
63
- expect(placement).to.have.keys('placementId', 'bidId', 'adFormat', 'sizes', 'hPlayer', 'wPlayer', 'schain', 'bidFloor', 'type');
64
- expect(placement.placementId).to.equal('testBanner');
65
- expect(placement.bidId).to.equal('23fhj33i987f');
66
- expect(placement.adFormat).to.equal(BANNER);
67
- expect(placement.schain).to.be.an('object');
68
- expect(placement.type).to.exist.and.to.equal('publisher');
155
+ expect(data.coppa).to.be.a('number');
156
+ expect(data.gdpr).to.be.a('object');
157
+ expect(data.ccpa).to.be.a('string');
158
+ expect(data.tmax).to.be.a('number');
159
+ expect(data.placements).to.have.lengthOf(3);
69
160
  });
70
161
 
71
- it('Returns valid data for mediatype video', function () {
72
- const playerSize = [300, 300];
73
- bid.mediaTypes = {};
74
- bid.mediaTypes[VIDEO] = {
75
- playerSize
76
- };
77
- serverRequest = spec.buildRequests([bid], bidderRequest);
78
- let data = serverRequest.data;
79
- expect(data).to.be.an('object');
80
- let placement = data['placements'][0];
81
- expect(placement).to.be.an('object');
82
- expect(placement.adFormat).to.equal(VIDEO);
83
- expect(placement.wPlayer).to.equal(playerSize[0]);
84
- expect(placement.hPlayer).to.equal(playerSize[1]);
162
+ it('Returns valid placements', function () {
163
+ const { placements } = serverRequest.data;
164
+
165
+ for (let i = 0, len = placements.length; i < len; i++) {
166
+ const placement = placements[i];
167
+ expect(placement.placementId).to.be.oneOf(['testBanner', 'testVideo', 'testNative']);
168
+ expect(placement.adFormat).to.be.oneOf([BANNER, VIDEO, NATIVE]);
169
+ expect(placement.bidId).to.be.a('string');
170
+ expect(placement.schain).to.be.an('object');
171
+ expect(placement.bidfloor).to.exist.and.to.equal(0);
172
+ expect(placement.type).to.exist.and.to.equal('publisher');
173
+ expect(placement.eids).to.exist.and.to.be.deep.equal(userIdAsEids);
174
+
175
+ if (placement.adFormat === BANNER) {
176
+ expect(placement.sizes).to.be.an('array');
177
+ }
178
+ switch (placement.adFormat) {
179
+ case BANNER:
180
+ expect(placement.sizes).to.be.an('array');
181
+ break;
182
+ case VIDEO:
183
+ expect(placement.wPlayer).to.be.an('number');
184
+ expect(placement.hPlayer).to.be.an('number');
185
+ expect(placement.minduration).to.be.an('number');
186
+ expect(placement.maxduration).to.be.an('number');
187
+ break;
188
+ case NATIVE:
189
+ expect(placement.native).to.be.an('object');
190
+ break;
191
+ }
192
+ }
85
193
  });
86
194
 
87
195
  it('Returns data with gdprConsent and without uspConsent', function () {
88
- bidderRequest.gdprConsent = 'test';
89
- serverRequest = spec.buildRequests([bid], bidderRequest);
196
+ delete bidderRequest.uspConsent;
197
+ serverRequest = spec.buildRequests(bids, bidderRequest);
90
198
  let data = serverRequest.data;
91
199
  expect(data.gdpr).to.exist;
92
- expect(data.gdpr).to.be.a('string');
93
- expect(data.gdpr).to.equal(bidderRequest.gdprConsent);
200
+ expect(data.gdpr).to.be.a('object');
201
+ expect(data.gdpr).to.have.property('consentString');
202
+ expect(data.gdpr).to.not.have.property('vendorData');
203
+ expect(data.gdpr.consentString).to.equal(bidderRequest.gdprConsent.consentString);
94
204
  expect(data.ccpa).to.not.exist;
95
205
  delete bidderRequest.gdprConsent;
96
206
  });
97
207
 
98
208
  it('Returns data with uspConsent and without gdprConsent', function () {
99
- bidderRequest.uspConsent = 'test';
100
- serverRequest = spec.buildRequests([bid], bidderRequest);
209
+ bidderRequest.uspConsent = '1---';
210
+ delete bidderRequest.gdprConsent;
211
+ serverRequest = spec.buildRequests(bids, bidderRequest);
101
212
  let data = serverRequest.data;
102
213
  expect(data.ccpa).to.exist;
103
214
  expect(data.ccpa).to.be.a('string');
104
215
  expect(data.ccpa).to.equal(bidderRequest.uspConsent);
105
216
  expect(data.gdpr).to.not.exist;
106
217
  });
107
-
108
- it('Returns empty data if no valid requests are passed', function () {
109
- serverRequest = spec.buildRequests([]);
110
- let data = serverRequest.data;
111
- expect(data.placements).to.be.an('array').that.is.empty;
112
- });
113
218
  });
114
219
 
115
220
  describe('gpp consent', function () {
@@ -119,7 +224,7 @@ describe('BoldwinBidAdapter', function () {
119
224
  applicableSections: [8]
120
225
  };
121
226
 
122
- let serverRequest = spec.buildRequests([bid], bidderRequest);
227
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
123
228
  let data = serverRequest.data;
124
229
  expect(data).to.be.an('object');
125
230
  expect(data).to.have.property('gpp');
@@ -129,15 +234,18 @@ describe('BoldwinBidAdapter', function () {
129
234
  })
130
235
 
131
236
  it('bidderRequest.ortb2.regs.gpp', () => {
237
+ bidderRequest.ortb2 = bidderRequest.ortb2 || {};
132
238
  bidderRequest.ortb2.regs = bidderRequest.ortb2.regs || {};
133
239
  bidderRequest.ortb2.regs.gpp = 'abc123';
134
240
  bidderRequest.ortb2.regs.gpp_sid = [8];
135
241
 
136
- let serverRequest = spec.buildRequests([bid], bidderRequest);
242
+ let serverRequest = spec.buildRequests(bids, bidderRequest);
137
243
  let data = serverRequest.data;
138
244
  expect(data).to.be.an('object');
139
245
  expect(data).to.have.property('gpp');
140
246
  expect(data).to.have.property('gpp_sid');
247
+
248
+ bidderRequest.ortb2;
141
249
  })
142
250
  });
143
251
 
@@ -155,7 +263,11 @@ describe('BoldwinBidAdapter', function () {
155
263
  creativeId: '2',
156
264
  netRevenue: true,
157
265
  currency: 'USD',
158
- dealId: '1'
266
+ dealId: '1',
267
+ meta: {
268
+ advertiserDomains: ['google.com'],
269
+ advertiserId: 1234
270
+ }
159
271
  }]
160
272
  };
161
273
  let bannerResponses = spec.interpretResponse(banner);
@@ -163,18 +275,17 @@ describe('BoldwinBidAdapter', function () {
163
275
  let dataItem = bannerResponses[0];
164
276
  expect(dataItem).to.have.all.keys('requestId', 'cpm', 'width', 'height', 'ad', 'ttl', 'creativeId',
165
277
  'netRevenue', 'currency', 'dealId', 'mediaType', 'meta');
166
- expect(dataItem.requestId).to.equal('23fhj33i987f');
167
- expect(dataItem.cpm).to.equal(0.4);
168
- expect(dataItem.width).to.equal(300);
169
- expect(dataItem.height).to.equal(250);
170
- expect(dataItem.ad).to.equal('Test');
171
- expect(dataItem.ttl).to.equal(120);
172
- expect(dataItem.creativeId).to.equal('2');
278
+ expect(dataItem.requestId).to.equal(banner.body[0].requestId);
279
+ expect(dataItem.cpm).to.equal(banner.body[0].cpm);
280
+ expect(dataItem.width).to.equal(banner.body[0].width);
281
+ expect(dataItem.height).to.equal(banner.body[0].height);
282
+ expect(dataItem.ad).to.equal(banner.body[0].ad);
283
+ expect(dataItem.ttl).to.equal(banner.body[0].ttl);
284
+ expect(dataItem.creativeId).to.equal(banner.body[0].creativeId);
173
285
  expect(dataItem.netRevenue).to.be.true;
174
- expect(dataItem.currency).to.equal('USD');
286
+ expect(dataItem.currency).to.equal(banner.body[0].currency);
175
287
  expect(dataItem.meta).to.be.an('object').that.has.any.key('advertiserDomains');
176
288
  });
177
-
178
289
  it('Should interpret video response', function () {
179
290
  const video = {
180
291
  body: [{
@@ -186,7 +297,11 @@ describe('BoldwinBidAdapter', function () {
186
297
  creativeId: '2',
187
298
  netRevenue: true,
188
299
  currency: 'USD',
189
- dealId: '1'
300
+ dealId: '1',
301
+ meta: {
302
+ advertiserDomains: ['google.com'],
303
+ advertiserId: 1234
304
+ }
190
305
  }]
191
306
  };
192
307
  let videoResponses = spec.interpretResponse(video);
@@ -220,6 +335,10 @@ describe('BoldwinBidAdapter', function () {
220
335
  creativeId: '2',
221
336
  netRevenue: true,
222
337
  currency: 'USD',
338
+ meta: {
339
+ advertiserDomains: ['google.com'],
340
+ advertiserId: 1234
341
+ }
223
342
  }]
224
343
  };
225
344
  let nativeResponses = spec.interpretResponse(native);
@@ -307,14 +426,41 @@ describe('BoldwinBidAdapter', function () {
307
426
  });
308
427
  });
309
428
 
310
- describe('getUserSyncs', function () {
311
- let userSync = spec.getUserSyncs();
312
- it('Returns valid URL and type', function () {
313
- expect(userSync).to.be.an('array').with.lengthOf(1);
314
- expect(userSync[0].type).to.exist;
315
- expect(userSync[0].url).to.exist;
316
- expect(userSync[0].type).to.be.equal('image');
317
- expect(userSync[0].url).to.be.equal('https://sync.videowalldirect.com');
429
+ describe('getUserSyncs', function() {
430
+ it('Should return array of objects with proper sync config , include GDPR', function() {
431
+ const syncData = spec.getUserSyncs({}, {}, {
432
+ consentString: 'ALL',
433
+ gdprApplies: true,
434
+ }, {});
435
+ expect(syncData).to.be.an('array').which.is.not.empty;
436
+ expect(syncData[0]).to.be.an('object')
437
+ expect(syncData[0].type).to.be.a('string')
438
+ expect(syncData[0].type).to.equal('image')
439
+ expect(syncData[0].url).to.be.a('string')
440
+ expect(syncData[0].url).to.equal('https://sync.videowalldirect.com/image?pbjs=1&gdpr=1&gdpr_consent=ALL&coppa=0')
441
+ });
442
+ it('Should return array of objects with proper sync config , include CCPA', function() {
443
+ const syncData = spec.getUserSyncs({}, {}, {}, {
444
+ consentString: '1---'
445
+ });
446
+ expect(syncData).to.be.an('array').which.is.not.empty;
447
+ expect(syncData[0]).to.be.an('object')
448
+ expect(syncData[0].type).to.be.a('string')
449
+ expect(syncData[0].type).to.equal('image')
450
+ expect(syncData[0].url).to.be.a('string')
451
+ expect(syncData[0].url).to.equal('https://sync.videowalldirect.com/image?pbjs=1&ccpa_consent=1---&coppa=0')
452
+ });
453
+ it('Should return array of objects with proper sync config , include GPP', function() {
454
+ const syncData = spec.getUserSyncs({}, {}, {}, {}, {
455
+ gppString: 'abc123',
456
+ applicableSections: [8]
457
+ });
458
+ expect(syncData).to.be.an('array').which.is.not.empty;
459
+ expect(syncData[0]).to.be.an('object')
460
+ expect(syncData[0].type).to.be.a('string')
461
+ expect(syncData[0].type).to.equal('image')
462
+ expect(syncData[0].url).to.be.a('string')
463
+ expect(syncData[0].url).to.equal('https://sync.videowalldirect.com/image?pbjs=1&gpp=abc123&gpp_sid=8&coppa=0')
318
464
  });
319
465
  });
320
466
  });