prebid.js 7.47.0 → 7.48.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 (178) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/ablidaBidAdapter.js +1 -1
  4. package/dist/adagioBidAdapter.js +1 -1
  5. package/dist/adbookpspBidAdapter.js +1 -1
  6. package/dist/adgenerationBidAdapter.js +1 -1
  7. package/dist/admaticBidAdapter.js +1 -1
  8. package/dist/adrelevantisBidAdapter.js +1 -1
  9. package/dist/adrinoBidAdapter.js +1 -1
  10. package/dist/adtrgtmeBidAdapter.js +1 -1
  11. package/dist/adxcgBidAdapter.js +1 -1
  12. package/dist/adyoulikeBidAdapter.js +1 -1
  13. package/dist/ajaBidAdapter.js +1 -1
  14. package/dist/amxBidAdapter.js +1 -1
  15. package/dist/amxIdSystem.js +1 -1
  16. package/dist/appierAnalyticsAdapter.js +1 -1
  17. package/dist/appnexusBidAdapter.js +1 -1
  18. package/dist/asoBidAdapter.js +1 -1
  19. package/dist/axonixBidAdapter.js +1 -1
  20. package/dist/bidglassBidAdapter.js +1 -1
  21. package/dist/big-richmediaBidAdapter.js +1 -1
  22. package/dist/bridgewellBidAdapter.js +1 -1
  23. package/dist/brightMountainMediaBidAdapter.js +1 -1
  24. package/dist/carodaBidAdapter.js +1 -1
  25. package/dist/chtnwBidAdapter.js +1 -1
  26. package/dist/concertBidAdapter.js +1 -1
  27. package/dist/connectIdSystem.js +1 -1
  28. package/dist/connectadBidAdapter.js +1 -1
  29. package/dist/consumableBidAdapter.js +1 -1
  30. package/dist/conversantAnalyticsAdapter.js +1 -1
  31. package/dist/conversantBidAdapter.js +1 -1
  32. package/dist/craftBidAdapter.js +1 -1
  33. package/dist/criteoBidAdapter.js +1 -1
  34. package/dist/cwireBidAdapter.js +1 -1
  35. package/dist/dependencies.json +4 -0
  36. package/dist/dspxBidAdapter.js +1 -1
  37. package/dist/eplanningBidAdapter.js +1 -1
  38. package/dist/feedadBidAdapter.js +1 -1
  39. package/dist/finativeBidAdapter.js +1 -1
  40. package/dist/freewheel-sspBidAdapter.js +1 -1
  41. package/dist/glimpseBidAdapter.js +1 -1
  42. package/dist/gmosspBidAdapter.js +1 -1
  43. package/dist/goldbachBidAdapter.js +1 -1
  44. package/dist/greenbidsAnalyticsAdapter.js +1 -1
  45. package/dist/greenbidsRtdProvider.js +1 -0
  46. package/dist/gridBidAdapter.js +1 -1
  47. package/dist/gumgumBidAdapter.js +1 -1
  48. package/dist/h12mediaBidAdapter.js +1 -1
  49. package/dist/id5IdSystem.js +1 -1
  50. package/dist/impactifyBidAdapter.js +1 -1
  51. package/dist/improvedigitalBidAdapter.js +1 -1
  52. package/dist/inmarBidAdapter.js +1 -1
  53. package/dist/insticatorBidAdapter.js +1 -1
  54. package/dist/iqmBidAdapter.js +1 -1
  55. package/dist/ixBidAdapter.js +1 -1
  56. package/dist/justpremiumBidAdapter.js +1 -1
  57. package/dist/kargoBidAdapter.js +1 -1
  58. package/dist/konduitAnalyticsAdapter.js +1 -1
  59. package/dist/kueezBidAdapter.js +1 -1
  60. package/dist/kueezRtbBidAdapter.js +1 -1
  61. package/dist/kulturemediaBidAdapter.js +1 -1
  62. package/dist/lassoBidAdapter.js +1 -1
  63. package/dist/lifestreetBidAdapter.js +1 -1
  64. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  65. package/dist/logicadBidAdapter.js +1 -1
  66. package/dist/loglyliftBidAdapter.js +1 -1
  67. package/dist/magniteAnalyticsAdapter.js +1 -1
  68. package/dist/malltvAnalyticsAdapter.js +1 -1
  69. package/dist/marsmediaBidAdapter.js +1 -1
  70. package/dist/mediafuseBidAdapter.js +1 -1
  71. package/dist/mediasquareBidAdapter.js +1 -1
  72. package/dist/mgidBidAdapter.js +1 -1
  73. package/dist/minutemediaBidAdapter.js +1 -1
  74. package/dist/minutemediaplusBidAdapter.js +1 -1
  75. package/dist/nexx360BidAdapter.js +1 -1
  76. package/dist/not-for-prod/prebid.js +137 -135
  77. package/dist/oguryBidAdapter.js +1 -1
  78. package/dist/onetagBidAdapter.js +1 -1
  79. package/dist/ooloAnalyticsAdapter.js +1 -1
  80. package/dist/optidigitalBidAdapter.js +1 -1
  81. package/dist/orbitsoftBidAdapter.js +1 -1
  82. package/dist/outbrainBidAdapter.js +1 -1
  83. package/dist/parrableIdSystem.js +1 -1
  84. package/dist/pixfutureBidAdapter.js +1 -1
  85. package/dist/prebid-core.js +1 -1
  86. package/dist/publinkIdSystem.js +1 -1
  87. package/dist/pubmaticBidAdapter.js +1 -1
  88. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  89. package/dist/pxyzBidAdapter.js +1 -1
  90. package/dist/quantcastBidAdapter.js +1 -1
  91. package/dist/radsBidAdapter.js +1 -1
  92. package/dist/readpeakBidAdapter.js +1 -1
  93. package/dist/relaidoBidAdapter.js +1 -1
  94. package/dist/relevantdigitalBidAdapter.js +1 -0
  95. package/dist/rhythmoneBidAdapter.js +1 -1
  96. package/dist/riseBidAdapter.js +1 -1
  97. package/dist/rtbhouseBidAdapter.js +1 -1
  98. package/dist/rubiconAnalyticsAdapter.js +1 -1
  99. package/dist/rubiconBidAdapter.js +1 -1
  100. package/dist/seedingAllianceBidAdapter.js +1 -1
  101. package/dist/seedtagBidAdapter.js +1 -1
  102. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  103. package/dist/sharethroughBidAdapter.js +1 -1
  104. package/dist/shinezBidAdapter.js +1 -1
  105. package/dist/smaatoBidAdapter.js +1 -1
  106. package/dist/smartadserverBidAdapter.js +1 -1
  107. package/dist/smartxBidAdapter.js +1 -1
  108. package/dist/smilewantedBidAdapter.js +1 -1
  109. package/dist/sonobiBidAdapter.js +1 -1
  110. package/dist/sovrnAnalyticsAdapter.js +1 -1
  111. package/dist/sovrnBidAdapter.js +1 -1
  112. package/dist/sspBCBidAdapter.js +1 -1
  113. package/dist/stvBidAdapter.js +1 -1
  114. package/dist/sublimeBidAdapter.js +1 -1
  115. package/dist/synacormediaBidAdapter.js +1 -1
  116. package/dist/targetVideoBidAdapter.js +1 -1
  117. package/dist/teadsBidAdapter.js +1 -1
  118. package/dist/trionBidAdapter.js +1 -1
  119. package/dist/tripleliftBidAdapter.js +1 -1
  120. package/dist/ttdBidAdapter.js +1 -1
  121. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  122. package/dist/uid2IdSystem.js +1 -1
  123. package/dist/underdogmediaBidAdapter.js +1 -1
  124. package/dist/undertoneBidAdapter.js +1 -1
  125. package/dist/userId.js +1 -1
  126. package/dist/vdoaiBidAdapter.js +1 -1
  127. package/dist/vidazooBidAdapter.js +1 -1
  128. package/dist/videobyteBidAdapter.js +1 -1
  129. package/dist/visxBidAdapter.js +1 -1
  130. package/dist/vuukleBidAdapter.js +1 -1
  131. package/dist/widespaceBidAdapter.js +1 -1
  132. package/dist/winrBidAdapter.js +1 -1
  133. package/dist/wipesBidAdapter.js +1 -1
  134. package/dist/yahoosspBidAdapter.js +1 -1
  135. package/dist/yieldmoBidAdapter.js +1 -1
  136. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  137. package/dist/yieldoneBidAdapter.js +1 -1
  138. package/modules/ablidaBidAdapter.js +4 -5
  139. package/modules/admaticBidAdapter.js +32 -5
  140. package/modules/adrinoBidAdapter.js +11 -4
  141. package/modules/axonixBidAdapter.js +6 -6
  142. package/modules/connectIdSystem.js +5 -2
  143. package/modules/criteoBidAdapter.js +3 -5
  144. package/modules/dspxBidAdapter.js +2 -3
  145. package/modules/freewheel-sspBidAdapter.js +32 -7
  146. package/modules/greenbidsRtdProvider.js +110 -0
  147. package/modules/greenbidsRtdProvider.md +65 -0
  148. package/modules/impactifyBidAdapter.js +0 -1
  149. package/modules/iqmBidAdapter.js +1 -2
  150. package/modules/orbitsoftBidAdapter.js +1 -2
  151. package/modules/radsBidAdapter.js +3 -4
  152. package/modules/relevantdigitalBidAdapter.js +198 -0
  153. package/modules/relevantdigitalBidAdapter.md +117 -0
  154. package/modules/rtbhouseBidAdapter.js +6 -9
  155. package/modules/sovrnBidAdapter.js +4 -0
  156. package/modules/stvBidAdapter.js +4 -5
  157. package/modules/tripleliftBidAdapter.js +14 -3
  158. package/modules/ttdBidAdapter.js +73 -71
  159. package/modules/underdogmediaBidAdapter.js +9 -12
  160. package/modules/userId/index.js +1 -1
  161. package/modules/vdoaiBidAdapter.js +2 -3
  162. package/modules/wipesBidAdapter.js +2 -3
  163. package/modules/yieldoneBidAdapter.js +3 -4
  164. package/package.json +1 -1
  165. package/test/spec/modules/adlooxAdServerVideo_spec.js +18 -35
  166. package/test/spec/modules/admaticBidAdapter_spec.js +164 -11
  167. package/test/spec/modules/adrinoBidAdapter_spec.js +50 -2
  168. package/test/spec/modules/connectIdSystem_spec.js +4 -4
  169. package/test/spec/modules/criteoBidAdapter_spec.js +56 -0
  170. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +31 -2
  171. package/test/spec/modules/greenbidsRtdProvider_spec.js +210 -0
  172. package/test/spec/modules/relevantdigitalBidAdapter_spec.js +295 -0
  173. package/test/spec/modules/rtbhouseBidAdapter_spec.js +22 -0
  174. package/test/spec/modules/sovrnBidAdapter_spec.js +65 -0
  175. package/test/spec/modules/tripleliftBidAdapter_spec.js +53 -8
  176. package/test/spec/modules/ttdBidAdapter_spec.js +20 -0
  177. package/test/spec/ortbConverter/userId_spec.js +12 -0
  178. package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -189
@@ -185,7 +185,7 @@ function getImpression(bidRequest) {
185
185
  if (mediaTypesBanner) {
186
186
  mediaTypes[BANNER] = banner(bidRequest);
187
187
  }
188
- if (mediaTypesVideo) {
188
+ if (FEATURES.VIDEO && mediaTypesVideo) {
189
189
  mediaTypes[VIDEO] = video(bidRequest);
190
190
  }
191
191
 
@@ -248,79 +248,81 @@ function banner(bid) {
248
248
  }
249
249
 
250
250
  function video(bid) {
251
- let minduration = utils.deepAccess(bid, 'mediaTypes.video.minduration');
252
- const maxduration = utils.deepAccess(bid, 'mediaTypes.video.maxduration');
253
- const playerSize = utils.deepAccess(bid, 'mediaTypes.video.playerSize');
254
- const api = utils.deepAccess(bid, 'mediaTypes.video.api');
255
- const mimes = utils.deepAccess(bid, 'mediaTypes.video.mimes');
256
- const placement = utils.deepAccess(bid, 'mediaTypes.video.placement');
257
- const plcmt = utils.deepAccess(bid, 'mediaTypes.video.plcmt');
258
- const protocols = utils.deepAccess(bid, 'mediaTypes.video.protocols');
259
- const playbackmethod = utils.deepAccess(bid, 'mediaTypes.video.playbackmethod');
260
- const pos = utils.deepAccess(bid, 'mediaTypes.video.pos');
261
- const startdelay = utils.deepAccess(bid, 'mediaTypes.video.startdelay');
262
- const skip = utils.deepAccess(bid, 'mediaTypes.video.skip');
263
- const skipmin = utils.deepAccess(bid, 'mediaTypes.video.skipmin');
264
- const skipafter = utils.deepAccess(bid, 'mediaTypes.video.skipafter');
265
- const minbitrate = utils.deepAccess(bid, 'mediaTypes.video.minbitrate');
266
- const maxbitrate = utils.deepAccess(bid, 'mediaTypes.video.maxbitrate');
267
-
268
- if (!minduration || !utils.isInteger(minduration)) {
269
- minduration = 0;
270
- }
271
- let video = {
272
- minduration: minduration,
273
- maxduration: maxduration,
274
- api: api,
275
- mimes: mimes,
276
- placement: placement,
277
- protocols: protocols
278
- };
251
+ if (FEATURES.VIDEO) {
252
+ let minduration = utils.deepAccess(bid, 'mediaTypes.video.minduration');
253
+ const maxduration = utils.deepAccess(bid, 'mediaTypes.video.maxduration');
254
+ const playerSize = utils.deepAccess(bid, 'mediaTypes.video.playerSize');
255
+ const api = utils.deepAccess(bid, 'mediaTypes.video.api');
256
+ const mimes = utils.deepAccess(bid, 'mediaTypes.video.mimes');
257
+ const placement = utils.deepAccess(bid, 'mediaTypes.video.placement');
258
+ const plcmt = utils.deepAccess(bid, 'mediaTypes.video.plcmt');
259
+ const protocols = utils.deepAccess(bid, 'mediaTypes.video.protocols');
260
+ const playbackmethod = utils.deepAccess(bid, 'mediaTypes.video.playbackmethod');
261
+ const pos = utils.deepAccess(bid, 'mediaTypes.video.pos');
262
+ const startdelay = utils.deepAccess(bid, 'mediaTypes.video.startdelay');
263
+ const skip = utils.deepAccess(bid, 'mediaTypes.video.skip');
264
+ const skipmin = utils.deepAccess(bid, 'mediaTypes.video.skipmin');
265
+ const skipafter = utils.deepAccess(bid, 'mediaTypes.video.skipafter');
266
+ const minbitrate = utils.deepAccess(bid, 'mediaTypes.video.minbitrate');
267
+ const maxbitrate = utils.deepAccess(bid, 'mediaTypes.video.maxbitrate');
268
+
269
+ if (!minduration || !utils.isInteger(minduration)) {
270
+ minduration = 0;
271
+ }
272
+ let video = {
273
+ minduration: minduration,
274
+ maxduration: maxduration,
275
+ api: api,
276
+ mimes: mimes,
277
+ placement: placement,
278
+ protocols: protocols
279
+ };
279
280
 
280
- if (typeof playerSize !== 'undefined') {
281
- if (utils.isArray(playerSize[0])) {
282
- video.w = parseInt(playerSize[0][0]);
283
- video.h = parseInt(playerSize[0][1]);
284
- } else if (utils.isNumber(playerSize[0])) {
285
- video.w = parseInt(playerSize[0]);
286
- video.h = parseInt(playerSize[1]);
281
+ if (typeof playerSize !== 'undefined') {
282
+ if (utils.isArray(playerSize[0])) {
283
+ video.w = parseInt(playerSize[0][0]);
284
+ video.h = parseInt(playerSize[0][1]);
285
+ } else if (utils.isNumber(playerSize[0])) {
286
+ video.w = parseInt(playerSize[0]);
287
+ video.h = parseInt(playerSize[1]);
288
+ }
287
289
  }
288
- }
289
290
 
290
- if (playbackmethod) {
291
- video.playbackmethod = playbackmethod;
292
- }
293
- if (plcmt) {
294
- video.plcmt = plcmt;
295
- }
296
- if (pos) {
297
- video.pos = pos;
298
- }
299
- if (startdelay && utils.isInteger(startdelay)) {
300
- video.startdelay = startdelay;
301
- }
302
- if (skip && (skip === 0 || skip === 1)) {
303
- video.skip = skip;
304
- }
305
- if (skipmin && utils.isInteger(skipmin)) {
306
- video.skipmin = skipmin;
307
- }
308
- if (skipafter && utils.isInteger(skipafter)) {
309
- video.skipafter = skipafter;
310
- }
311
- if (minbitrate && utils.isInteger(minbitrate)) {
312
- video.minbitrate = minbitrate;
313
- }
314
- if (maxbitrate && utils.isInteger(maxbitrate)) {
315
- video.maxbitrate = maxbitrate;
316
- }
291
+ if (playbackmethod) {
292
+ video.playbackmethod = playbackmethod;
293
+ }
294
+ if (plcmt) {
295
+ video.plcmt = plcmt;
296
+ }
297
+ if (pos) {
298
+ video.pos = pos;
299
+ }
300
+ if (startdelay && utils.isInteger(startdelay)) {
301
+ video.startdelay = startdelay;
302
+ }
303
+ if (skip && (skip === 0 || skip === 1)) {
304
+ video.skip = skip;
305
+ }
306
+ if (skipmin && utils.isInteger(skipmin)) {
307
+ video.skipmin = skipmin;
308
+ }
309
+ if (skipafter && utils.isInteger(skipafter)) {
310
+ video.skipafter = skipafter;
311
+ }
312
+ if (minbitrate && utils.isInteger(minbitrate)) {
313
+ video.minbitrate = minbitrate;
314
+ }
315
+ if (maxbitrate && utils.isInteger(maxbitrate)) {
316
+ video.maxbitrate = maxbitrate;
317
+ }
317
318
 
318
- const battr = utils.deepAccess(bid, 'ortb2Imp.battr');
319
- if (battr) {
320
- video.battr = battr;
321
- }
319
+ const battr = utils.deepAccess(bid, 'ortb2Imp.battr');
320
+ if (battr) {
321
+ video.battr = battr;
322
+ }
322
323
 
323
- return video;
324
+ return video;
325
+ }
324
326
  }
325
327
 
326
328
  export const spec = {
@@ -379,7 +381,7 @@ export const spec = {
379
381
  return false;
380
382
  }
381
383
 
382
- if (mediaTypesVideo) {
384
+ if (FEATURES.VIDEO && mediaTypesVideo) {
383
385
  if (!mediaTypesVideo.maxduration || !utils.isInteger(mediaTypesVideo.maxduration)) {
384
386
  utils.logWarn(BIDDER_CODE + ': mediaTypes.video.maxduration must be set to the maximum video ad duration in seconds');
385
387
  return false;
@@ -506,7 +508,7 @@ export const spec = {
506
508
  mediaType: BANNER
507
509
  }
508
510
  );
509
- } else if (bid.ext.mediatype === MEDIA_TYPE.VIDEO) {
511
+ } else if (FEATURES.VIDEO && bid.ext.mediatype === MEDIA_TYPE.VIDEO) {
510
512
  Object.assign(
511
513
  bidResponse,
512
514
  {
@@ -1,21 +1,18 @@
1
1
  import {
2
- logMessage,
2
+ deepAccess,
3
3
  flatten,
4
- parseSizesInput,
4
+ getWindowSelf,
5
+ getWindowTop,
5
6
  isGptPubadsDefined,
6
7
  isSlotMatchingAdUnitCode,
7
8
  logInfo,
9
+ logMessage,
8
10
  logWarn,
9
- getWindowSelf,
10
- getWindowTop,
11
- deepAccess
11
+ parseSizesInput
12
12
  } from '../src/utils.js';
13
- import {
14
- config
15
- } from '../src/config.js';
16
- import {
17
- registerBidder
18
- } from '../src/adapters/bidderFactory.js';
13
+ import {config} from '../src/config.js';
14
+ import {registerBidder} from '../src/adapters/bidderFactory.js';
15
+
19
16
  const BIDDER_CODE = 'underdogmedia';
20
17
  const UDM_ADAPTER_VERSION = '7.30V';
21
18
  const UDM_VENDOR_ID = '159';
@@ -377,7 +374,7 @@ function makeNotification(bid, mid, bidParam) {
377
374
  url += `;version=${UDM_ADAPTER_VERSION}`;
378
375
  url += ';cb=' + Math.random();
379
376
  url += ';qqq=' + (1 / bid.cpm);
380
- url += ';hbt=' + config.getConfig('_bidderTimeout');
377
+ url += ';hbt=' + config.getConfig('bidderTimeout');
381
378
  url += ';style=adapter';
382
379
  url += ';vis=' + encodeURIComponent(document.visibilityState);
383
380
 
@@ -1085,7 +1085,7 @@ module('userId', attachIdSystem);
1085
1085
 
1086
1086
  export function setOrtbUserExtEids(ortbRequest, bidderRequest, context) {
1087
1087
  const eids = deepAccess(context, 'bidRequests.0.userIdAsEids');
1088
- if (eids) {
1088
+ if (eids && Object.keys(eids).length > 0) {
1089
1089
  deepSetValue(ortbRequest, 'user.ext.eids', eids);
1090
1090
  }
1091
1091
  }
@@ -1,5 +1,4 @@
1
- import { getAdUnitSizes } from '../src/utils.js';
2
- import {config} from '../src/config.js';
1
+ import {getAdUnitSizes} from '../src/utils.js';
3
2
  import {registerBidder} from '../src/adapters/bidderFactory.js';
4
3
  import {BANNER, VIDEO} from '../src/mediaTypes.js';
5
4
 
@@ -87,7 +86,7 @@ export const spec = {
87
86
  // dealId: dealId,
88
87
  currency: currency,
89
88
  netRevenue: netRevenue,
90
- ttl: config.getConfig('_bidderTimeout'),
89
+ ttl: 60,
91
90
  // referrer: referrer,
92
91
  // ad: response.adm
93
92
  // ad: adCreative,
@@ -1,5 +1,4 @@
1
- import { logWarn } from '../src/utils.js';
2
- import {config} from '../src/config.js';
1
+ import {logWarn} from '../src/utils.js';
3
2
  import {registerBidder} from '../src/adapters/bidderFactory.js';
4
3
  import {BANNER} from '../src/mediaTypes.js';
5
4
 
@@ -50,7 +49,7 @@ function interpretResponse(serverResponse, bidRequest) {
50
49
  dealId: response.deal_id,
51
50
  currency: 'JPY',
52
51
  netRevenue: netRevenue,
53
- ttl: config.getConfig('_bidderTimeout'),
52
+ ttl: 60,
54
53
  referrer: bidRequest.data.r || '',
55
54
  mediaType: BANNER,
56
55
  ad: response.ad_tag,
@@ -1,8 +1,7 @@
1
1
  import {deepAccess, isEmpty, isStr, logWarn, parseSizesInput} from '../src/utils.js';
2
- import {config} from '../src/config.js';
3
2
  import {registerBidder} from '../src/adapters/bidderFactory.js';
4
- import { Renderer } from '../src/Renderer.js';
5
- import { BANNER, VIDEO } from '../src/mediaTypes.js';
3
+ import {Renderer} from '../src/Renderer.js';
4
+ import {BANNER, VIDEO} from '../src/mediaTypes.js';
6
5
 
7
6
  /**
8
7
  * @typedef {import('../src/adapters/bidderFactory').Bid} Bid
@@ -147,7 +146,7 @@ export const spec = {
147
146
  dealId: dealId,
148
147
  currency: currency,
149
148
  netRevenue: netRevenue,
150
- ttl: config.getConfig('_bidderTimeout'),
149
+ ttl: 60,
151
150
  referrer: referrer,
152
151
  meta: {
153
152
  advertiserDomains: response.adomain ? response.adomain : []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prebid.js",
3
- "version": "7.47.0",
3
+ "version": "7.48.0",
4
4
  "description": "Header Bidding Management Library",
5
5
  "main": "src/prebid.js",
6
6
  "scripts": {
@@ -118,6 +118,16 @@ describe('Adloox Ad Server Video', function () {
118
118
  });
119
119
 
120
120
  describe('buildVideoUrl', function () {
121
+ beforeEach(() => {
122
+ sinon.stub(URL, 'createObjectURL');
123
+ sinon.stub(URL, 'revokeObjectURL');
124
+ });
125
+
126
+ afterEach(() => {
127
+ URL.createObjectURL.restore()
128
+ URL.revokeObjectURL.restore()
129
+ });
130
+
121
131
  describe('invalid arguments', function () {
122
132
  it('should require callback', function (done) {
123
133
  const ret = buildVideoUrl();
@@ -235,7 +245,6 @@ describe('Adloox Ad Server Video', function () {
235
245
  it('should fetch, retry on withoutCredentials, follow and return a wrapped blob that expires', function (done) {
236
246
  BID.responseTimestamp = utils.timestamp();
237
247
  BID.ttl = 30;
238
- this.timeout(5000)
239
248
 
240
249
  const clock = sandbox.useFakeTimers(BID.responseTimestamp);
241
250
 
@@ -244,42 +253,16 @@ describe('Adloox Ad Server Video', function () {
244
253
  url: wrapperUrl,
245
254
  bid: BID
246
255
  };
256
+
257
+ URL.createObjectURL.callsFake(() => 'mock-blob-url');
258
+
247
259
  const ret = buildVideoUrl(options, function (url) {
248
260
  expect(url.substr(0, options.url_vast.length)).is.equal(options.url_vast);
249
-
250
- const match = url.match(/[?&]vast=(blob%3A[^&]+)/);
251
- expect(match).is.not.null;
252
-
253
- const blob = decodeURIComponent(match[1]);
254
-
255
- const xfr = sandbox.useFakeXMLHttpRequest();
256
- xfr.useFilters = true;
257
- xfr.addFilter(x => true); // there is no network traffic for Blob URLs here
258
-
259
- ajax(blob, {
260
- success: (responseText, q) => {
261
- expect(q.status).is.equal(200);
262
- expect(q.getResponseHeader('content-type')).is.equal(vastHeaders['content-type']);
263
-
264
- clock.runAll();
265
-
266
- ajax(blob, {
267
- success: (responseText, q) => {
268
- xfr.useFilters = false; // .restore() does not really work
269
- if (q.status == 0) return done();
270
- done(new Error('Blob should have expired'));
271
- },
272
- error: (statusText, q) => {
273
- xfr.useFilters = false;
274
- done();
275
- }
276
- });
277
- },
278
- error: (statusText, q) => {
279
- xfr.useFilters = false;
280
- done(new Error(statusText));
281
- }
282
- });
261
+ expect(url).to.match(/[?&]vast=mock-blob-url/);
262
+ sinon.assert.calledWith(URL.createObjectURL, sinon.match((val) => val.type === vastHeaders['content-type']));
263
+ clock.runAll();
264
+ sinon.assert.calledWith(URL.revokeObjectURL, 'mock-blob-url');
265
+ done();
283
266
  });
284
267
  expect(ret).is.true;
285
268
 
@@ -22,11 +22,13 @@ describe('admaticBidAdapter', () => {
22
22
  'host': 'layer.serve.admatic.com.tr'
23
23
  },
24
24
  'adUnitCode': 'adunit-code',
25
+ 'mediaType': 'banner',
25
26
  'sizes': [[300, 250], [300, 600]],
26
27
  'bidId': '30b31c1838de1e',
27
28
  'bidderRequestId': '22edbae2733bf6',
28
29
  'auctionId': '1d1a030790a475',
29
- 'creativeId': 'er2ee'
30
+ 'creativeId': 'er2ee',
31
+ 'ortb2': { 'badv': ['admatic.com.tr'] }
30
32
  };
31
33
 
32
34
  it('should return true when required params found', function() {
@@ -34,15 +36,11 @@ describe('admaticBidAdapter', () => {
34
36
  });
35
37
 
36
38
  it('should return false when required params are not passed', function() {
37
- let bid = Object.assign({}, bid);
38
- delete bid.params;
39
-
40
- bid.params = {
41
- 'networkId': 0,
42
- 'host': 'layer.serve.admatic.com.tr'
39
+ let bid2 = {};
40
+ bid2.params = {
41
+ 'someIncorrectParam': 0
43
42
  };
44
-
45
- expect(spec.isBidRequestValid(bid)).to.equal(false);
43
+ expect(spec.isBidRequestValid(bid2)).to.equal(false);
46
44
  });
47
45
  });
48
46
 
@@ -54,6 +52,7 @@ describe('admaticBidAdapter', () => {
54
52
  'networkId': 10433394,
55
53
  'host': 'layer.serve.admatic.com.tr'
56
54
  },
55
+ 'ortb2': { 'badv': ['admatic.com.tr'] },
57
56
  'mediaTypes': {
58
57
  'banner': {
59
58
  'sizes': [[300, 250], [728, 90]]
@@ -98,6 +97,8 @@ describe('admaticBidAdapter', () => {
98
97
  'h': 90
99
98
  }
100
99
  ],
100
+ 'mediatype': {},
101
+ 'type': 'banner',
101
102
  'id': '2205da7a81846b',
102
103
  'floors': {
103
104
  'banner': {
@@ -105,6 +106,49 @@ describe('admaticBidAdapter', () => {
105
106
  '728x90': { 'currency': 'USD', 'floor': 2 }
106
107
  }
107
108
  }
109
+ },
110
+ {
111
+ 'size': [
112
+ {
113
+ 'w': 338,
114
+ 'h': 280
115
+ }
116
+ ],
117
+ 'type': 'video',
118
+ 'mediatype': {
119
+ 'context': 'instream',
120
+ 'mimes': [
121
+ 'video/mp4'
122
+ ],
123
+ 'maxduration': 240,
124
+ 'api': [
125
+ 1,
126
+ 2
127
+ ],
128
+ 'playerSize': [
129
+ [
130
+ 338,
131
+ 280
132
+ ]
133
+ ],
134
+ 'protocols': [
135
+ 1,
136
+ 2,
137
+ 3,
138
+ 4,
139
+ 5,
140
+ 6,
141
+ 7,
142
+ 8
143
+ ],
144
+ 'skip': 1,
145
+ 'playbackmethod': [
146
+ 2
147
+ ],
148
+ 'linearity': 1,
149
+ 'placement': 2
150
+ },
151
+ 'id': '45e86fc7ce7fc93'
108
152
  }
109
153
  ],
110
154
  'ext': {
@@ -118,6 +162,7 @@ describe('admaticBidAdapter', () => {
118
162
  'networkId': 10433394,
119
163
  'host': 'layer.serve.admatic.com.tr'
120
164
  },
165
+ 'ortb2': { 'badv': ['admatic.com.tr'] },
121
166
  'mediaTypes': {
122
167
  'banner': {
123
168
  'sizes': [[300, 250], [728, 90]]
@@ -163,12 +208,57 @@ describe('admaticBidAdapter', () => {
163
208
  }
164
209
  ],
165
210
  'id': '2205da7a81846b',
211
+ 'mediatype': {},
212
+ 'type': 'banner',
166
213
  'floors': {
167
214
  'banner': {
168
215
  '300x250': { 'currency': 'USD', 'floor': 1 },
169
216
  '728x90': { 'currency': 'USD', 'floor': 2 }
170
217
  }
171
218
  }
219
+ },
220
+ {
221
+ 'size': [
222
+ {
223
+ 'w': 338,
224
+ 'h': 280
225
+ }
226
+ ],
227
+ 'type': 'video',
228
+ 'mediatype': {
229
+ 'context': 'instream',
230
+ 'mimes': [
231
+ 'video/mp4'
232
+ ],
233
+ 'maxduration': 240,
234
+ 'api': [
235
+ 1,
236
+ 2
237
+ ],
238
+ 'playerSize': [
239
+ [
240
+ 338,
241
+ 280
242
+ ]
243
+ ],
244
+ 'protocols': [
245
+ 1,
246
+ 2,
247
+ 3,
248
+ 4,
249
+ 5,
250
+ 6,
251
+ 7,
252
+ 8
253
+ ],
254
+ 'skip': 1,
255
+ 'playbackmethod': [
256
+ 2
257
+ ],
258
+ 'linearity': 1,
259
+ 'placement': 2
260
+ },
261
+ 'id': '45e86fc7ce7fc93'
172
262
  }
173
263
  ],
174
264
  'ext': {
@@ -194,6 +284,7 @@ describe('admaticBidAdapter', () => {
194
284
  'sizes': [[300, 250], [728, 90]]
195
285
  }
196
286
  },
287
+ 'ortb2': { 'badv': ['admatic.com.tr'] },
197
288
  getFloor: inputParams => {
198
289
  if (inputParams.mediaType === BANNER && inputParams.size[0] === 300 && inputParams.size[1] === 250) {
199
290
  return {
@@ -217,6 +308,7 @@ describe('admaticBidAdapter', () => {
217
308
  'networkId': 10433394,
218
309
  'host': 'layer.serve.admatic.com.tr'
219
310
  },
311
+ 'ortb2': { 'badv': ['admatic.com.tr'] },
220
312
  'adUnitCode': 'adunit-code',
221
313
  'sizes': [[300, 250], [728, 90]],
222
314
  'bidId': '30b31c1838de1e',
@@ -249,9 +341,35 @@ describe('admaticBidAdapter', () => {
249
341
  'width': 300,
250
342
  'height': 250,
251
343
  'price': 0.01,
344
+ 'type': 'banner',
252
345
  'bidder': 'admatic',
253
346
  'adomain': ['admatic.com.tr'],
254
- 'party_tag': '<div></div>'
347
+ 'party_tag': '<div></div>',
348
+ 'iurl': 'https://www.admatic.com.tr'
349
+ },
350
+ {
351
+ 'id': 2,
352
+ 'creative_id': '3741',
353
+ 'width': 300,
354
+ 'height': 250,
355
+ 'price': 0.01,
356
+ 'type': 'video',
357
+ 'bidder': 'admatic',
358
+ 'adomain': ['admatic.com.tr'],
359
+ 'party_tag': '<VAST></VAST>',
360
+ 'iurl': 'https://www.admatic.com.tr'
361
+ },
362
+ {
363
+ 'id': 3,
364
+ 'creative_id': '3741',
365
+ 'width': 300,
366
+ 'height': 250,
367
+ 'price': 0.01,
368
+ 'type': 'video',
369
+ 'bidder': 'admatic',
370
+ 'adomain': ['admatic.com.tr'],
371
+ 'party_tag': 'https://www.admatic.com.tr',
372
+ 'iurl': 'https://www.admatic.com.tr'
255
373
  }
256
374
  ],
257
375
  'queryId': 'cdnbh24rlv0hhkpfpln0',
@@ -265,13 +383,48 @@ describe('admaticBidAdapter', () => {
265
383
  width: 300,
266
384
  height: 250,
267
385
  currency: 'TRY',
386
+ mediaType: 'banner',
268
387
  netRevenue: true,
269
388
  ad: '<div></div>',
270
389
  creativeId: '374',
271
390
  meta: {
272
391
  advertiserDomains: ['admatic.com.tr']
273
392
  },
274
- ttl: 360,
393
+ ttl: 60,
394
+ bidder: 'admatic'
395
+ },
396
+ {
397
+ requestId: 2,
398
+ cpm: 0.01,
399
+ width: 300,
400
+ height: 250,
401
+ currency: 'TRY',
402
+ mediaType: 'video',
403
+ netRevenue: true,
404
+ vastImpUrl: 'https://www.admatic.com.tr',
405
+ vastXml: '<VAST></VAST>',
406
+ creativeId: '3741',
407
+ meta: {
408
+ advertiserDomains: ['admatic.com.tr']
409
+ },
410
+ ttl: 60,
411
+ bidder: 'admatic'
412
+ },
413
+ {
414
+ requestId: 3,
415
+ cpm: 0.01,
416
+ width: 300,
417
+ height: 250,
418
+ currency: 'TRY',
419
+ mediaType: 'video',
420
+ netRevenue: true,
421
+ vastImpUrl: 'https://www.admatic.com.tr',
422
+ vastXml: 'https://www.admatic.com.tr',
423
+ creativeId: '3741',
424
+ meta: {
425
+ advertiserDomains: ['admatic.com.tr']
426
+ },
427
+ ttl: 60,
275
428
  bidder: 'admatic'
276
429
  }
277
430
  ];