prebid.js 6.0.0 → 6.4.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 (201) hide show
  1. package/.babelrc.js +1 -7
  2. package/.circleci/config.yml +1 -1
  3. package/README.md +1 -1
  4. package/browsers.json +13 -29
  5. package/gulpfile.js +88 -82
  6. package/integrationExamples/gpt/weboramaRtdProvider_example.html +23 -14
  7. package/karma.conf.maker.js +2 -2
  8. package/modules/33acrossBidAdapter.js +189 -102
  9. package/modules/adagioBidAdapter.js +1 -1
  10. package/modules/addefendBidAdapter.js +1 -0
  11. package/modules/adheseBidAdapter.js +7 -2
  12. package/modules/adkernelBidAdapter.js +147 -61
  13. package/modules/adlivetechBidAdapter.md +61 -0
  14. package/modules/adlooxAdServerVideo.js +2 -2
  15. package/modules/adlooxAnalyticsAdapter.js +4 -4
  16. package/modules/admanBidAdapter.js +1 -0
  17. package/modules/admixerBidAdapter.js +3 -2
  18. package/modules/adnuntiusBidAdapter.js +5 -2
  19. package/modules/adomikAnalyticsAdapter.js +16 -4
  20. package/modules/adplusBidAdapter.js +203 -0
  21. package/modules/adplusBidAdapter.md +39 -0
  22. package/modules/adxcgBidAdapter.js +311 -359
  23. package/modules/adxcgBidAdapter.md +22 -21
  24. package/modules/adyoulikeBidAdapter.js +7 -2
  25. package/modules/aniviewBidAdapter.js +1 -1
  26. package/modules/appnexusBidAdapter.js +23 -3
  27. package/modules/beachfrontBidAdapter.js +14 -17
  28. package/modules/beopBidAdapter.js +6 -4
  29. package/modules/bidViewability.js +3 -3
  30. package/modules/bidViewabilityIO.js +3 -3
  31. package/modules/codefuelBidAdapter.js +1 -3
  32. package/modules/codefuelBidAdapter.md +3 -3
  33. package/modules/colossussspBidAdapter.js +7 -0
  34. package/modules/compassBidAdapter.js +201 -0
  35. package/modules/compassBidAdapter.md +79 -0
  36. package/modules/craftBidAdapter.js +5 -3
  37. package/modules/criteoBidAdapter.js +1 -1
  38. package/modules/currency.js +2 -2
  39. package/modules/cwireBidAdapter.js +3 -0
  40. package/modules/dailyhuntBidAdapter.js +435 -0
  41. package/modules/dailyhuntBidAdapter.md +4 -0
  42. package/modules/datablocksBidAdapter.js +3 -3
  43. package/modules/dchain.js +149 -0
  44. package/modules/dchain.md +45 -0
  45. package/modules/deepintentBidAdapter.js +1 -1
  46. package/modules/dspxBidAdapter.js +1 -1
  47. package/modules/emx_digitalBidAdapter.js +9 -1
  48. package/modules/engageyaBidAdapter.js +68 -54
  49. package/modules/feedadBidAdapter.js +2 -2
  50. package/modules/feedadBidAdapter.md +4 -2
  51. package/modules/freewheel-sspBidAdapter.js +6 -0
  52. package/modules/futureads.md +48 -0
  53. package/modules/glimpseBidAdapter.js +44 -16
  54. package/modules/goldbachBidAdapter.js +1176 -0
  55. package/modules/goldbachBidAdapter.md +151 -0
  56. package/modules/gptPreAuction.js +11 -5
  57. package/modules/gridBidAdapter.js +5 -4
  58. package/modules/gumgumBidAdapter.js +7 -3
  59. package/modules/id5IdSystem.md +6 -6
  60. package/modules/imRtdProvider.js +31 -0
  61. package/modules/improvedigitalBidAdapter.js +19 -3
  62. package/modules/instreamTracking.js +4 -4
  63. package/modules/intersectionRtdProvider.js +114 -0
  64. package/modules/invibesBidAdapter.js +64 -14
  65. package/modules/invibesBidAdapter.md +2 -1
  66. package/modules/ipromBidAdapter.js +79 -0
  67. package/modules/ixBidAdapter.js +185 -22
  68. package/modules/kinessoIdSystem.js +1 -1
  69. package/modules/limelightDigitalBidAdapter.js +2 -1
  70. package/modules/livewrappedBidAdapter.js +8 -2
  71. package/modules/lotamePanoramaIdSystem.js +80 -8
  72. package/modules/luponmediaBidAdapter.js +570 -0
  73. package/modules/mediasquareBidAdapter.js +1 -9
  74. package/modules/merkleIdSystem.js +5 -0
  75. package/modules/missenaBidAdapter.js +89 -0
  76. package/modules/nativoBidAdapter.js +27 -1
  77. package/modules/nextMillenniumBidAdapter.js +37 -7
  78. package/modules/oguryBidAdapter.js +2 -1
  79. package/modules/openxBidAdapter.js +6 -1
  80. package/modules/prebidServerBidAdapter/index.js +19 -15
  81. package/modules/pubgeniusBidAdapter.js +1 -1
  82. package/modules/pubmaticBidAdapter.js +5 -3
  83. package/modules/pubxaiAnalyticsAdapter.js +17 -0
  84. package/modules/relaidoBidAdapter.js +86 -65
  85. package/modules/richaudienceBidAdapter.js +2 -3
  86. package/modules/rtdModule/index.js +48 -18
  87. package/modules/rubiconBidAdapter.js +31 -19
  88. package/modules/saambaaBidAdapter.js +420 -0
  89. package/modules/saambaaBidAdapter.md +65 -68
  90. package/modules/seedtagBidAdapter.js +6 -0
  91. package/modules/sharedIdSystem.js +27 -1
  92. package/modules/smaatoBidAdapter.js +9 -1
  93. package/modules/smartxBidAdapter.js +17 -1
  94. package/modules/sspBCBidAdapter.js +34 -3
  95. package/modules/tappxBidAdapter.js +3 -1
  96. package/modules/targetVideoBidAdapter.js +187 -0
  97. package/modules/targetVideoBidAdapter.md +34 -0
  98. package/modules/telariaBidAdapter.js +2 -2
  99. package/modules/trustxBidAdapter.js +18 -17
  100. package/modules/undertoneBidAdapter.js +8 -1
  101. package/modules/userId/index.js +27 -2
  102. package/modules/ventes.md +71 -0
  103. package/modules/ventesBidAdapter.js +104 -64
  104. package/modules/ventesBidAdapter.md +0 -1
  105. package/modules/vidoomyBidAdapter.js +65 -108
  106. package/modules/visxBidAdapter.js +20 -3
  107. package/modules/visxBidAdapter.md +4 -6
  108. package/modules/weboramaRtdProvider.js +288 -73
  109. package/modules/weboramaRtdProvider.md +27 -10
  110. package/modules/yahoosspBidAdapter.js +5 -1
  111. package/modules/yahoosspBidAdapter.md +1 -1
  112. package/modules/yieldlabBidAdapter.js +41 -10
  113. package/modules/yieldlabBidAdapter.md +91 -48
  114. package/modules/yieldoneBidAdapter.js +115 -11
  115. package/modules/zetaSspBidAdapter.md +33 -1
  116. package/modules/zeta_global_sspBidAdapter.js +22 -1
  117. package/package.json +6 -1
  118. package/plugins/pbjsGlobals.js +28 -1
  119. package/src/adapterManager.js +14 -8
  120. package/src/auction.js +5 -4
  121. package/src/prebid.js +1 -2
  122. package/src/targeting.js +24 -3
  123. package/src/utils.js +41 -7
  124. package/test/helpers/prebidGlobal.js +1 -0
  125. package/test/spec/integration/faker/googletag.js +6 -0
  126. package/test/spec/modules/33acrossBidAdapter_spec.js +300 -78
  127. package/test/spec/modules/adheseBidAdapter_spec.js +27 -1
  128. package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
  129. package/test/spec/modules/adnuntiusBidAdapter_spec.js +35 -0
  130. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +9 -1
  131. package/test/spec/modules/adplusBidAdapter_spec.js +213 -0
  132. package/test/spec/modules/adxcgBidAdapter_spec.js +820 -571
  133. package/test/spec/modules/adyoulikeBidAdapter_spec.js +26 -0
  134. package/test/spec/modules/appnexusBidAdapter_spec.js +63 -1
  135. package/test/spec/modules/beachfrontBidAdapter_spec.js +65 -1
  136. package/test/spec/modules/beopBidAdapter_spec.js +1 -1
  137. package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
  138. package/test/spec/modules/bidViewability_spec.js +4 -4
  139. package/test/spec/modules/codefuelBidAdapter_spec.js +1 -1
  140. package/test/spec/modules/colossussspBidAdapter_spec.js +9 -0
  141. package/test/spec/modules/compassBidAdapter_spec.js +397 -0
  142. package/test/spec/modules/cwireBidAdapter_spec.js +10 -8
  143. package/test/spec/modules/dailyhuntBidAdapter_spec.js +404 -0
  144. package/test/spec/modules/datablocksBidAdapter_spec.js +3 -3
  145. package/test/spec/modules/dchain_spec.js +329 -0
  146. package/test/spec/modules/emx_digitalBidAdapter_spec.js +10 -0
  147. package/test/spec/modules/engageyaBidAdapter_spec.js +231 -95
  148. package/test/spec/modules/eplanningBidAdapter_spec.js +8 -8
  149. package/test/spec/modules/feedadBidAdapter_spec.js +15 -0
  150. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +19 -0
  151. package/test/spec/modules/glimpseBidAdapter_spec.js +33 -0
  152. package/test/spec/modules/goldbachBidAdapter_spec.js +1359 -0
  153. package/test/spec/modules/gptPreAuction_spec.js +58 -4
  154. package/test/spec/modules/gumgumBidAdapter_spec.js +6 -0
  155. package/test/spec/modules/imRtdProvider_spec.js +25 -0
  156. package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -1
  157. package/test/spec/modules/intersectionRtdProvider_spec.js +141 -0
  158. package/test/spec/modules/invibesBidAdapter_spec.js +148 -4
  159. package/test/spec/modules/ipromBidAdapter_spec.js +195 -0
  160. package/test/spec/modules/ixBidAdapter_spec.js +293 -2
  161. package/test/spec/modules/konduitWrapper_spec.js +0 -1
  162. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +10 -7
  163. package/test/spec/modules/livewrappedBidAdapter_spec.js +31 -0
  164. package/test/spec/modules/lotamePanoramaIdSystem_spec.js +227 -0
  165. package/test/spec/modules/luponmediaBidAdapter_spec.js +412 -0
  166. package/test/spec/modules/mediasquareBidAdapter_spec.js +4 -4
  167. package/test/spec/modules/merkleIdSystem_spec.js +18 -0
  168. package/test/spec/modules/missenaBidAdapter_spec.js +134 -0
  169. package/test/spec/modules/nativoBidAdapter_spec.js +35 -18
  170. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +26 -1
  171. package/test/spec/modules/oguryBidAdapter_spec.js +13 -11
  172. package/test/spec/modules/openxBidAdapter_spec.js +5 -0
  173. package/test/spec/modules/prebidServerBidAdapter_spec.js +62 -2
  174. package/test/spec/modules/pubgeniusBidAdapter_spec.js +3 -3
  175. package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
  176. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +11 -0
  177. package/test/spec/modules/realTimeDataModule_spec.js +135 -49
  178. package/test/spec/modules/relaidoBidAdapter_spec.js +71 -63
  179. package/test/spec/modules/richaudienceBidAdapter_spec.js +2 -2
  180. package/test/spec/modules/rubiconBidAdapter_spec.js +65 -9
  181. package/test/spec/modules/seedtagBidAdapter_spec.js +3 -0
  182. package/test/spec/modules/sharedIdSystem_spec.js +52 -6
  183. package/test/spec/modules/smaatoBidAdapter_spec.js +61 -0
  184. package/test/spec/modules/smartxBidAdapter_spec.js +9 -0
  185. package/test/spec/modules/sspBCBidAdapter_spec.js +33 -3
  186. package/test/spec/modules/tappxBidAdapter_spec.js +4 -0
  187. package/test/spec/modules/targetVideoBidAdapter_spec.js +96 -0
  188. package/test/spec/modules/trustxBidAdapter_spec.js +42 -0
  189. package/test/spec/modules/userId_spec.js +51 -0
  190. package/test/spec/modules/vidoomyBidAdapter_spec.js +32 -13
  191. package/test/spec/modules/visxBidAdapter_spec.js +121 -5
  192. package/test/spec/modules/weboramaRtdProvider_spec.js +408 -214
  193. package/test/spec/modules/yahoosspBidAdapter_spec.js +28 -1
  194. package/test/spec/modules/yieldlabBidAdapter_spec.js +81 -0
  195. package/test/spec/modules/yieldoneBidAdapter_spec.js +299 -53
  196. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +33 -1
  197. package/test/spec/unit/core/adapterManager_spec.js +24 -6
  198. package/test/spec/unit/core/targeting_spec.js +116 -0
  199. package/test/spec/utils_spec.js +38 -0
  200. package/test/test_deps.js +3 -0
  201. package/test/test_index.js +1 -3
@@ -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
  });
@@ -0,0 +1,3 @@
1
+ require('test/helpers/prebidGlobal.js');
2
+ require('test/mocks/adloaderStub.js');
3
+ require('test/mocks/xhr.js');
@@ -1,6 +1,4 @@
1
- require('test/helpers/prebidGlobal.js');
2
- require('test/mocks/adloaderStub.js');
3
- require('test/mocks/xhr.js');
1
+ require('./test_deps.js');
4
2
 
5
3
  var testsContext = require.context('.', true, /_spec$/);
6
4
  testsContext.keys().forEach(testsContext);