prebid.js 5.20.0 → 6.3.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 (168) hide show
  1. package/.babelrc.js +1 -10
  2. package/README.md +4 -2
  3. package/browsers.json +13 -37
  4. package/gulpfile.js +1 -8
  5. package/integrationExamples/gpt/weboramaRtdProvider_example.html +23 -14
  6. package/karma.conf.maker.js +1 -1
  7. package/modules/33acrossBidAdapter.js +189 -102
  8. package/modules/adagioBidAdapter.js +1 -1
  9. package/modules/addefendBidAdapter.js +1 -0
  10. package/modules/adheseBidAdapter.js +7 -2
  11. package/modules/adkernelBidAdapter.js +1 -0
  12. package/modules/adlivetechBidAdapter.md +61 -0
  13. package/modules/admanBidAdapter.js +1 -0
  14. package/modules/admixerBidAdapter.js +3 -2
  15. package/modules/adnuntiusBidAdapter.js +5 -2
  16. package/modules/adomikAnalyticsAdapter.js +10 -4
  17. package/modules/adplusBidAdapter.js +203 -0
  18. package/modules/adplusBidAdapter.md +39 -0
  19. package/modules/adxcgBidAdapter.js +311 -359
  20. package/modules/adxcgBidAdapter.md +22 -21
  21. package/modules/adyoulikeBidAdapter.js +7 -2
  22. package/modules/appnexusBidAdapter.js +23 -3
  23. package/modules/beachfrontBidAdapter.js +14 -17
  24. package/modules/beopBidAdapter.js +5 -3
  25. package/modules/codefuelBidAdapter.js +1 -3
  26. package/modules/codefuelBidAdapter.md +3 -3
  27. package/modules/colossussspBidAdapter.js +7 -0
  28. package/modules/craftBidAdapter.js +5 -3
  29. package/modules/criteoBidAdapter.js +1 -1
  30. package/modules/cwireBidAdapter.js +3 -0
  31. package/modules/datablocksBidAdapter.js +3 -3
  32. package/modules/dchain.js +149 -0
  33. package/modules/dchain.md +45 -0
  34. package/modules/deepintentBidAdapter.js +1 -1
  35. package/modules/dspxBidAdapter.js +1 -1
  36. package/modules/emx_digitalBidAdapter.js +9 -1
  37. package/modules/engageyaBidAdapter.js +68 -54
  38. package/modules/freewheel-sspBidAdapter.js +6 -0
  39. package/modules/futureads.md +48 -0
  40. package/modules/glimpseBidAdapter.js +44 -16
  41. package/modules/goldbachBidAdapter.js +1176 -0
  42. package/modules/goldbachBidAdapter.md +151 -0
  43. package/modules/gptPreAuction.js +11 -5
  44. package/modules/gridBidAdapter.js +1 -1
  45. package/modules/gumgumBidAdapter.js +7 -3
  46. package/modules/id5IdSystem.md +6 -6
  47. package/modules/imRtdProvider.js +31 -0
  48. package/modules/intersectionRtdProvider.js +114 -0
  49. package/modules/invibesBidAdapter.js +15 -9
  50. package/modules/ipromBidAdapter.js +79 -0
  51. package/modules/ixBidAdapter.js +166 -21
  52. package/modules/kinessoIdSystem.js +1 -1
  53. package/modules/limelightDigitalBidAdapter.js +2 -1
  54. package/modules/lotamePanoramaIdSystem.js +80 -8
  55. package/modules/luponmediaBidAdapter.js +570 -0
  56. package/modules/mediasquareBidAdapter.js +1 -9
  57. package/modules/merkleIdSystem.js +5 -0
  58. package/modules/missenaBidAdapter.js +89 -0
  59. package/modules/nativoBidAdapter.js +27 -1
  60. package/modules/nextMillenniumBidAdapter.js +29 -1
  61. package/modules/oguryBidAdapter.js +2 -1
  62. package/modules/openxBidAdapter.js +6 -1
  63. package/modules/prebidServerBidAdapter/index.js +19 -15
  64. package/modules/pubmaticBidAdapter.js +5 -3
  65. package/modules/relaidoBidAdapter.js +86 -65
  66. package/modules/richaudienceBidAdapter.js +2 -3
  67. package/modules/rtdModule/index.js +48 -18
  68. package/modules/rubiconBidAdapter.js +10 -8
  69. package/modules/saambaaBidAdapter.js +420 -0
  70. package/modules/saambaaBidAdapter.md +65 -68
  71. package/modules/seedtagBidAdapter.js +6 -0
  72. package/modules/sharedIdSystem.js +27 -1
  73. package/modules/smaatoBidAdapter.js +9 -1
  74. package/modules/smartxBidAdapter.js +17 -1
  75. package/modules/sspBCBidAdapter.js +34 -3
  76. package/modules/tappxBidAdapter.js +3 -1
  77. package/modules/targetVideoBidAdapter.js +187 -0
  78. package/modules/targetVideoBidAdapter.md +34 -0
  79. package/modules/trustxBidAdapter.js +10 -1
  80. package/modules/undertoneBidAdapter.js +8 -1
  81. package/modules/userId/index.js +27 -2
  82. package/modules/ventes.md +71 -0
  83. package/modules/ventesBidAdapter.js +104 -64
  84. package/modules/ventesBidAdapter.md +0 -1
  85. package/modules/vidoomyBidAdapter.js +65 -108
  86. package/modules/visxBidAdapter.js +20 -3
  87. package/modules/visxBidAdapter.md +4 -6
  88. package/modules/weboramaRtdProvider.js +288 -73
  89. package/modules/weboramaRtdProvider.md +27 -10
  90. package/modules/yahoosspBidAdapter.js +5 -1
  91. package/modules/yahoosspBidAdapter.md +1 -1
  92. package/modules/yieldlabBidAdapter.js +41 -10
  93. package/modules/yieldlabBidAdapter.md +91 -48
  94. package/modules/yieldoneBidAdapter.js +115 -11
  95. package/modules/zetaSspBidAdapter.md +33 -1
  96. package/modules/zeta_global_sspBidAdapter.js +22 -1
  97. package/package.json +6 -1
  98. package/plugins/pbjsGlobals.js +28 -1
  99. package/src/adapterManager.js +14 -8
  100. package/src/auction.js +3 -2
  101. package/src/prebid.js +1 -2
  102. package/src/targeting.js +24 -3
  103. package/src/utils.js +41 -7
  104. package/test/spec/integration/faker/googletag.js +6 -0
  105. package/test/spec/modules/33acrossBidAdapter_spec.js +300 -78
  106. package/test/spec/modules/adheseBidAdapter_spec.js +27 -1
  107. package/test/spec/modules/adnuntiusBidAdapter_spec.js +35 -0
  108. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +3 -1
  109. package/test/spec/modules/adplusBidAdapter_spec.js +213 -0
  110. package/test/spec/modules/adxcgBidAdapter_spec.js +820 -571
  111. package/test/spec/modules/adyoulikeBidAdapter_spec.js +26 -0
  112. package/test/spec/modules/appnexusBidAdapter_spec.js +63 -1
  113. package/test/spec/modules/beachfrontBidAdapter_spec.js +65 -1
  114. package/test/spec/modules/codefuelBidAdapter_spec.js +1 -1
  115. package/test/spec/modules/colossussspBidAdapter_spec.js +9 -0
  116. package/test/spec/modules/cwireBidAdapter_spec.js +10 -8
  117. package/test/spec/modules/datablocksBidAdapter_spec.js +3 -3
  118. package/test/spec/modules/dchain_spec.js +329 -0
  119. package/test/spec/modules/emx_digitalBidAdapter_spec.js +10 -0
  120. package/test/spec/modules/engageyaBidAdapter_spec.js +231 -95
  121. package/test/spec/modules/eplanningBidAdapter_spec.js +8 -8
  122. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +19 -0
  123. package/test/spec/modules/glimpseBidAdapter_spec.js +33 -0
  124. package/test/spec/modules/goldbachBidAdapter_spec.js +1359 -0
  125. package/test/spec/modules/gptPreAuction_spec.js +58 -4
  126. package/test/spec/modules/gumgumBidAdapter_spec.js +6 -0
  127. package/test/spec/modules/imRtdProvider_spec.js +25 -0
  128. package/test/spec/modules/intersectionRtdProvider_spec.js +141 -0
  129. package/test/spec/modules/invibesBidAdapter_spec.js +29 -4
  130. package/test/spec/modules/ipromBidAdapter_spec.js +195 -0
  131. package/test/spec/modules/ixBidAdapter_spec.js +285 -2
  132. package/test/spec/modules/konduitWrapper_spec.js +0 -1
  133. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +10 -7
  134. package/test/spec/modules/lotamePanoramaIdSystem_spec.js +227 -0
  135. package/test/spec/modules/luponmediaBidAdapter_spec.js +412 -0
  136. package/test/spec/modules/mediasquareBidAdapter_spec.js +4 -4
  137. package/test/spec/modules/merkleIdSystem_spec.js +18 -0
  138. package/test/spec/modules/missenaBidAdapter_spec.js +134 -0
  139. package/test/spec/modules/nativoBidAdapter_spec.js +35 -18
  140. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +18 -0
  141. package/test/spec/modules/oguryBidAdapter_spec.js +13 -11
  142. package/test/spec/modules/openxBidAdapter_spec.js +5 -0
  143. package/test/spec/modules/prebidServerBidAdapter_spec.js +62 -2
  144. package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
  145. package/test/spec/modules/realTimeDataModule_spec.js +135 -49
  146. package/test/spec/modules/relaidoBidAdapter_spec.js +71 -63
  147. package/test/spec/modules/richaudienceBidAdapter_spec.js +2 -2
  148. package/test/spec/modules/rubiconBidAdapter_spec.js +17 -0
  149. package/test/spec/modules/seedtagBidAdapter_spec.js +3 -0
  150. package/test/spec/modules/sharedIdSystem_spec.js +52 -6
  151. package/test/spec/modules/smaatoBidAdapter_spec.js +61 -0
  152. package/test/spec/modules/smartxBidAdapter_spec.js +9 -0
  153. package/test/spec/modules/sspBCBidAdapter_spec.js +33 -3
  154. package/test/spec/modules/tappxBidAdapter_spec.js +4 -0
  155. package/test/spec/modules/targetVideoBidAdapter_spec.js +96 -0
  156. package/test/spec/modules/trustxBidAdapter_spec.js +42 -0
  157. package/test/spec/modules/userId_spec.js +51 -0
  158. package/test/spec/modules/vidoomyBidAdapter_spec.js +32 -13
  159. package/test/spec/modules/visxBidAdapter_spec.js +121 -5
  160. package/test/spec/modules/weboramaRtdProvider_spec.js +408 -214
  161. package/test/spec/modules/yahoosspBidAdapter_spec.js +28 -1
  162. package/test/spec/modules/yieldlabBidAdapter_spec.js +81 -0
  163. package/test/spec/modules/yieldoneBidAdapter_spec.js +299 -53
  164. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +33 -1
  165. package/test/spec/unit/core/adapterManager_spec.js +24 -6
  166. package/test/spec/unit/core/targeting_spec.js +116 -0
  167. package/test/spec/utils_spec.js +38 -0
  168. package/wdio.conf.js +1 -1
@@ -5,6 +5,7 @@ import { createBidReceived } from 'test/fixtures/fixtures.js';
5
5
  import CONSTANTS from 'src/constants.json';
6
6
  import { auctionManager } from 'src/auctionManager.js';
7
7
  import * as utils from 'src/utils.js';
8
+ import {deepClone} from 'src/utils.js';
8
9
 
9
10
  const bid1 = {
10
11
  'bidderCode': 'rubicon',
@@ -461,6 +462,50 @@ describe('targeting tests', function () {
461
462
  });
462
463
  });
463
464
 
465
+ describe('targetingControls.allowZeroCpmBids', function () {
466
+ let bid4;
467
+ let bidderSettingsStorage;
468
+
469
+ before(function() {
470
+ bidderSettingsStorage = $$PREBID_GLOBAL$$.bidderSettings;
471
+ });
472
+
473
+ beforeEach(function () {
474
+ bid4 = utils.deepClone(bid1);
475
+ bid4.adserverTargeting = {
476
+ hb_pb: '0.0',
477
+ hb_adid: '567891011',
478
+ hb_bidder: 'appnexus',
479
+ };
480
+ bid4.bidder = bid4.bidderCode = 'appnexus';
481
+ bid4.cpm = 0;
482
+ bidsReceived = [bid4];
483
+ });
484
+
485
+ after(function() {
486
+ bidsReceived = [bid1, bid2, bid3];
487
+ $$PREBID_GLOBAL$$.bidderSettings = bidderSettingsStorage;
488
+ })
489
+
490
+ it('targeting should not include a 0 cpm by default', function() {
491
+ bid4.adserverTargeting = {};
492
+ const targeting = targetingInstance.getAllTargeting(['/123456/header-bid-tag-0']);
493
+ expect(targeting['/123456/header-bid-tag-0']).to.deep.equal({});
494
+ });
495
+
496
+ it('targeting should allow a 0 cpm with targetingControls.allowZeroCpmBids set to true', function () {
497
+ $$PREBID_GLOBAL$$.bidderSettings = {
498
+ standard: {
499
+ allowZeroCpmBids: true
500
+ }
501
+ };
502
+
503
+ const targeting = targetingInstance.getAllTargeting(['/123456/header-bid-tag-0']);
504
+ expect(targeting['/123456/header-bid-tag-0']).to.include.all.keys('hb_pb', 'hb_bidder', 'hb_adid', 'hb_bidder_appnexus', 'hb_adid_appnexus', 'hb_pb_appnexus');
505
+ expect(targeting['/123456/header-bid-tag-0']['hb_pb']).to.equal('0.0')
506
+ });
507
+ });
508
+
464
509
  describe('targetingControls.allowTargetingKeys', function () {
465
510
  let bid4;
466
511
 
@@ -501,6 +546,77 @@ describe('targeting tests', function () {
501
546
  });
502
547
  });
503
548
 
549
+ describe('targetingControls.addTargetingKeys', function () {
550
+ let winningBid = null;
551
+
552
+ beforeEach(function () {
553
+ bidsReceived = [bid1, bid2, nativeBid1, nativeBid2].map(deepClone);
554
+ bidsReceived.forEach((bid) => {
555
+ bid.adserverTargeting[CONSTANTS.TARGETING_KEYS.SOURCE] = 'test-source';
556
+ bid.adUnitCode = 'adunit';
557
+ if (winningBid == null || bid.cpm > winningBid.cpm) {
558
+ winningBid = bid;
559
+ }
560
+ });
561
+ enableSendAllBids = true;
562
+ });
563
+
564
+ const expandKey = function (key) {
565
+ const keys = new Set();
566
+ if (winningBid.adserverTargeting[key] != null) {
567
+ keys.add(key);
568
+ }
569
+ bidsReceived
570
+ .filter((bid) => bid.adserverTargeting[key] != null)
571
+ .map((bid) => bid.bidderCode)
572
+ .forEach((code) => keys.add(`${key}_${code}`.substr(0, 20)));
573
+ return new Array(...keys);
574
+ }
575
+
576
+ const targetingResult = function () {
577
+ return targetingInstance.getAllTargeting(['adunit'])['adunit'];
578
+ }
579
+
580
+ it('should include added keys', function () {
581
+ config.setConfig({
582
+ targetingControls: {
583
+ addTargetingKeys: ['SOURCE']
584
+ }
585
+ });
586
+ expect(targetingResult()).to.include.all.keys(...expandKey(CONSTANTS.TARGETING_KEYS.SOURCE));
587
+ });
588
+
589
+ it('should keep default and native keys', function() {
590
+ config.setConfig({
591
+ targetingControls: {
592
+ addTargetingKeys: ['SOURCE']
593
+ }
594
+ });
595
+ const defaultKeys = new Set(Object.values(CONSTANTS.DEFAULT_TARGETING_KEYS));
596
+ Object.values(CONSTANTS.NATIVE_KEYS).forEach((k) => defaultKeys.add(k));
597
+
598
+ const expectedKeys = new Set();
599
+ bidsReceived
600
+ .map((bid) => Object.keys(bid.adserverTargeting))
601
+ .reduce((left, right) => left.concat(right), [])
602
+ .filter((key) => defaultKeys.has(key))
603
+ .map(expandKey)
604
+ .reduce((left, right) => left.concat(right), [])
605
+ .forEach((k) => expectedKeys.add(k));
606
+ expect(targetingResult()).to.include.all.keys(...expectedKeys);
607
+ });
608
+
609
+ it('should not be allowed together with allowTargetingKeys', function () {
610
+ config.setConfig({
611
+ targetingControls: {
612
+ allowTargetingKeys: [CONSTANTS.TARGETING_KEYS.BIDDER],
613
+ addTargetingKeys: [CONSTANTS.TARGETING_KEYS.SOURCE]
614
+ }
615
+ });
616
+ expect(targetingResult).to.throw();
617
+ });
618
+ });
619
+
504
620
  describe('targetingControls.allowSendAllBidsTargetingKeys', function () {
505
621
  let bid4;
506
622
 
@@ -2,6 +2,7 @@ import { getAdServerTargeting } from 'test/fixtures/fixtures.js';
2
2
  import { expect } from 'chai';
3
3
  import CONSTANTS from 'src/constants.json';
4
4
  import * as utils from 'src/utils.js';
5
+ import {waitForElementToLoad} from 'src/utils.js';
5
6
 
6
7
  var assert = require('assert');
7
8
 
@@ -1198,4 +1199,41 @@ describe('Utils', function () {
1198
1199
  });
1199
1200
  });
1200
1201
  });
1202
+
1203
+ describe('waitForElementToLoad', () => {
1204
+ let element;
1205
+ let callbacks;
1206
+
1207
+ function callback() {
1208
+ callbacks++;
1209
+ }
1210
+
1211
+ function delay(delay = 0) {
1212
+ return new Promise((resolve) => {
1213
+ window.setTimeout(resolve, delay);
1214
+ })
1215
+ }
1216
+
1217
+ beforeEach(() => {
1218
+ callbacks = 0;
1219
+ element = window.document.createElement('div');
1220
+ });
1221
+
1222
+ it('should respect timeout if set', () => {
1223
+ waitForElementToLoad(element, 50).then(callback);
1224
+ return delay(60).then(() => {
1225
+ expect(callbacks).to.equal(1);
1226
+ });
1227
+ });
1228
+
1229
+ ['load', 'error'].forEach((event) => {
1230
+ it(`should complete on '${event} event'`, () => {
1231
+ waitForElementToLoad(element).then(callback);
1232
+ element.dispatchEvent(new Event(event));
1233
+ return delay().then(() => {
1234
+ expect(callbacks).to.equal(1);
1235
+ })
1236
+ });
1237
+ });
1238
+ });
1201
1239
  });
package/wdio.conf.js CHANGED
@@ -9,7 +9,7 @@ function getCapabilities() {
9
9
  return platformMap[os];
10
10
  }
11
11
 
12
- // only IE 11, Chrome 80 & Firefox 73 run as part of functional tests
12
+ // only Chrome 80 & Firefox 73 run as part of functional tests
13
13
  // rest of the browsers are discarded.
14
14
  delete browsers['bs_chrome_79_windows_10'];
15
15
  delete browsers['bs_firefox_72_windows_10'];