prebid.js 6.1.0 → 6.5.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 (184) hide show
  1. package/.circleci/config.yml +1 -1
  2. package/README.md +1 -1
  3. package/browsers.json +13 -29
  4. package/gulpfile.js +87 -82
  5. package/integrationExamples/gpt/weboramaRtdProvider_example.html +23 -14
  6. package/karma.conf.maker.js +2 -2
  7. package/modules/33acrossBidAdapter.js +189 -102
  8. package/modules/adagioBidAdapter.js +1 -1
  9. package/modules/addefendBidAdapter.js +1 -0
  10. package/modules/adkernelBidAdapter.js +146 -61
  11. package/modules/adlooxAdServerVideo.js +2 -2
  12. package/modules/adlooxAnalyticsAdapter.js +4 -4
  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 +6 -0
  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 +20 -11
  22. package/modules/aniviewBidAdapter.js +1 -1
  23. package/modules/appnexusBidAdapter.js +19 -3
  24. package/modules/beachfrontBidAdapter.js +14 -17
  25. package/modules/beopBidAdapter.js +6 -4
  26. package/modules/bidViewability.js +3 -3
  27. package/modules/bidViewabilityIO.js +3 -3
  28. package/modules/bliinkBidAdapter.js +1 -1
  29. package/modules/colossussspBidAdapter.js +7 -0
  30. package/modules/compassBidAdapter.js +201 -0
  31. package/modules/compassBidAdapter.md +79 -0
  32. package/modules/consentManagement.js +7 -1
  33. package/modules/craftBidAdapter.js +5 -3
  34. package/modules/criteoBidAdapter.js +1 -1
  35. package/modules/currency.js +2 -2
  36. package/modules/cwireBidAdapter.js +3 -0
  37. package/modules/dailyhuntBidAdapter.js +435 -0
  38. package/modules/dailyhuntBidAdapter.md +4 -0
  39. package/modules/dchain.js +149 -0
  40. package/modules/dchain.md +45 -0
  41. package/modules/docereeBidAdapter.js +10 -1
  42. package/modules/docereeBidAdapter.md +2 -0
  43. package/modules/dspxBidAdapter.js +1 -1
  44. package/modules/emx_digitalBidAdapter.js +9 -1
  45. package/modules/engageyaBidAdapter.js +1 -1
  46. package/modules/feedadBidAdapter.js +2 -2
  47. package/modules/feedadBidAdapter.md +4 -2
  48. package/modules/freewheel-sspBidAdapter.js +6 -0
  49. package/modules/futureads.md +48 -0
  50. package/modules/glimpseBidAdapter.js +16 -3
  51. package/modules/goldbachBidAdapter.js +1176 -0
  52. package/modules/goldbachBidAdapter.md +151 -0
  53. package/modules/gptPreAuction.js +55 -7
  54. package/modules/gridBidAdapter.js +4 -3
  55. package/modules/gumgumBidAdapter.js +7 -3
  56. package/modules/improvedigitalBidAdapter.js +19 -3
  57. package/modules/instreamTracking.js +4 -4
  58. package/modules/intersectionRtdProvider.js +114 -0
  59. package/modules/invibesBidAdapter.js +64 -14
  60. package/modules/invibesBidAdapter.md +2 -1
  61. package/modules/ipromBidAdapter.js +79 -0
  62. package/modules/ixBidAdapter.js +53 -18
  63. package/modules/kinessoIdSystem.js +1 -1
  64. package/modules/limelightDigitalBidAdapter.js +3 -1
  65. package/modules/livewrappedAnalyticsAdapter.js +3 -1
  66. package/modules/livewrappedBidAdapter.js +8 -2
  67. package/modules/loglyliftBidAdapter.js +79 -0
  68. package/modules/loglyliftBidAdapter.md +55 -0
  69. package/modules/lotamePanoramaIdSystem.js +80 -8
  70. package/modules/luponmediaBidAdapter.js +570 -0
  71. package/modules/mediasquareBidAdapter.js +1 -9
  72. package/modules/missenaBidAdapter.js +89 -0
  73. package/modules/nextMillenniumBidAdapter.js +37 -7
  74. package/modules/optimeraRtdProvider.js +8 -1
  75. package/modules/ozoneBidAdapter.js +21 -64
  76. package/modules/prebidServerBidAdapter/index.js +16 -12
  77. package/modules/pubgeniusBidAdapter.js +1 -1
  78. package/modules/pubmaticBidAdapter.js +3 -3
  79. package/modules/pubxaiAnalyticsAdapter.js +17 -0
  80. package/modules/relaidoBidAdapter.js +86 -65
  81. package/modules/richaudienceBidAdapter.js +2 -3
  82. package/modules/rtdModule/index.js +48 -18
  83. package/modules/rubiconBidAdapter.js +31 -19
  84. package/modules/sharedIdSystem.js +27 -1
  85. package/modules/smaatoBidAdapter.js +4 -1
  86. package/modules/smartxBidAdapter.js +17 -1
  87. package/modules/tappxBidAdapter.js +3 -1
  88. package/modules/targetVideoBidAdapter.js +187 -0
  89. package/modules/targetVideoBidAdapter.md +34 -0
  90. package/modules/telariaBidAdapter.js +2 -2
  91. package/modules/trustxBidAdapter.js +8 -16
  92. package/modules/undertoneBidAdapter.js +8 -1
  93. package/modules/userId/index.js +27 -2
  94. package/modules/ventes.md +71 -0
  95. package/modules/ventesBidAdapter.js +104 -64
  96. package/modules/ventesBidAdapter.md +0 -1
  97. package/modules/vidoomyBidAdapter.js +16 -10
  98. package/modules/visxBidAdapter.js +19 -2
  99. package/modules/visxBidAdapter.md +4 -6
  100. package/modules/weboramaRtdProvider.js +288 -73
  101. package/modules/weboramaRtdProvider.md +27 -10
  102. package/modules/yahoosspBidAdapter.js +5 -1
  103. package/modules/yahoosspBidAdapter.md +1 -1
  104. package/modules/yieldmoBidAdapter.js +23 -5
  105. package/modules/yieldoneBidAdapter.js +115 -11
  106. package/modules/zetaSspBidAdapter.md +33 -1
  107. package/modules/zeta_global_sspAnalyticsAdapter.js +97 -0
  108. package/modules/zeta_global_sspAnalyticsAdapter.md +24 -0
  109. package/modules/zeta_global_sspBidAdapter.js +22 -1
  110. package/package.json +1 -1
  111. package/plugins/pbjsGlobals.js +28 -1
  112. package/src/auction.js +5 -4
  113. package/src/config.js +27 -3
  114. package/src/prebid.js +3 -2
  115. package/src/targeting.js +24 -3
  116. package/src/utils.js +53 -8
  117. package/test/helpers/prebidGlobal.js +1 -0
  118. package/test/spec/config_spec.js +279 -0
  119. package/test/spec/integration/faker/googletag.js +6 -0
  120. package/test/spec/modules/33acrossBidAdapter_spec.js +300 -78
  121. package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
  122. package/test/spec/modules/adnuntiusBidAdapter_spec.js +35 -0
  123. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +6 -0
  124. package/test/spec/modules/adplusBidAdapter_spec.js +213 -0
  125. package/test/spec/modules/adxcgBidAdapter_spec.js +820 -571
  126. package/test/spec/modules/adyoulikeBidAdapter_spec.js +75 -0
  127. package/test/spec/modules/appnexusBidAdapter_spec.js +49 -1
  128. package/test/spec/modules/beachfrontBidAdapter_spec.js +65 -1
  129. package/test/spec/modules/beopBidAdapter_spec.js +1 -1
  130. package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
  131. package/test/spec/modules/bidViewability_spec.js +4 -4
  132. package/test/spec/modules/colossussspBidAdapter_spec.js +9 -0
  133. package/test/spec/modules/compassBidAdapter_spec.js +397 -0
  134. package/test/spec/modules/consentManagement_spec.js +20 -0
  135. package/test/spec/modules/cwireBidAdapter_spec.js +10 -8
  136. package/test/spec/modules/dailyhuntBidAdapter_spec.js +404 -0
  137. package/test/spec/modules/dchain_spec.js +329 -0
  138. package/test/spec/modules/docereeBidAdapter_spec.js +9 -1
  139. package/test/spec/modules/emx_digitalBidAdapter_spec.js +10 -0
  140. package/test/spec/modules/feedadBidAdapter_spec.js +15 -0
  141. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +19 -0
  142. package/test/spec/modules/goldbachBidAdapter_spec.js +1359 -0
  143. package/test/spec/modules/gptPreAuction_spec.js +177 -2
  144. package/test/spec/modules/gumgumBidAdapter_spec.js +6 -0
  145. package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -1
  146. package/test/spec/modules/intersectionRtdProvider_spec.js +141 -0
  147. package/test/spec/modules/invibesBidAdapter_spec.js +148 -4
  148. package/test/spec/modules/ipromBidAdapter_spec.js +195 -0
  149. package/test/spec/modules/ixBidAdapter_spec.js +112 -62
  150. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +84 -23
  151. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +22 -0
  152. package/test/spec/modules/livewrappedBidAdapter_spec.js +31 -0
  153. package/test/spec/modules/loglyliftBidAdapter_spec.js +172 -0
  154. package/test/spec/modules/lotamePanoramaIdSystem_spec.js +227 -0
  155. package/test/spec/modules/luponmediaBidAdapter_spec.js +412 -0
  156. package/test/spec/modules/mediasquareBidAdapter_spec.js +4 -4
  157. package/test/spec/modules/missenaBidAdapter_spec.js +134 -0
  158. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +26 -1
  159. package/test/spec/modules/optimeraRtdProvider_spec.js +14 -1
  160. package/test/spec/modules/ozoneBidAdapter_spec.js +43 -31
  161. package/test/spec/modules/prebidServerBidAdapter_spec.js +43 -0
  162. package/test/spec/modules/pubgeniusBidAdapter_spec.js +3 -3
  163. package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
  164. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +11 -0
  165. package/test/spec/modules/realTimeDataModule_spec.js +135 -49
  166. package/test/spec/modules/relaidoBidAdapter_spec.js +71 -63
  167. package/test/spec/modules/richaudienceBidAdapter_spec.js +2 -2
  168. package/test/spec/modules/rubiconBidAdapter_spec.js +65 -9
  169. package/test/spec/modules/sharedIdSystem_spec.js +52 -6
  170. package/test/spec/modules/smaatoBidAdapter_spec.js +31 -0
  171. package/test/spec/modules/smartxBidAdapter_spec.js +9 -0
  172. package/test/spec/modules/tappxBidAdapter_spec.js +4 -0
  173. package/test/spec/modules/targetVideoBidAdapter_spec.js +96 -0
  174. package/test/spec/modules/userId_spec.js +51 -0
  175. package/test/spec/modules/visxBidAdapter_spec.js +120 -4
  176. package/test/spec/modules/weboramaRtdProvider_spec.js +408 -214
  177. package/test/spec/modules/yahoosspBidAdapter_spec.js +28 -1
  178. package/test/spec/modules/yieldoneBidAdapter_spec.js +299 -53
  179. package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +427 -0
  180. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +33 -1
  181. package/test/spec/unit/core/targeting_spec.js +116 -0
  182. package/test/spec/utils_spec.js +38 -0
  183. package/test/test_deps.js +3 -0
  184. package/test/test_index.js +1 -3
@@ -49,6 +49,7 @@ import {flocIdSubmodule} from 'modules/flocIdSystem.js'
49
49
  import {amxIdSubmodule} from '../../../modules/amxIdSystem.js';
50
50
  import {akamaiDAPIdSubmodule} from 'modules/akamaiDAPIdSystem.js'
51
51
  import {kinessoIdSubmodule} from 'modules/kinessoIdSystem.js'
52
+ import * as mockGpt from '../integration/faker/googletag.js';
52
53
 
53
54
  let assert = require('chai').assert;
54
55
  let expect = require('chai').expect;
@@ -114,15 +115,21 @@ describe('User ID', function () {
114
115
 
115
116
  describe('Decorate Ad Units', function () {
116
117
  beforeEach(function () {
118
+ // reset mockGpt so nothing else interferes
119
+ mockGpt.disable();
120
+ mockGpt.enable();
117
121
  coreStorage.setCookie('pubcid', '', EXPIRED_COOKIE_DATE);
118
122
  coreStorage.setCookie('pubcid_alt', 'altpubcid200000', (new Date(Date.now() + 5000).toUTCString()));
119
123
  sinon.spy(coreStorage, 'setCookie');
124
+ sinon.stub(utils, 'logWarn');
120
125
  });
121
126
 
122
127
  afterEach(function () {
128
+ mockGpt.enable();
123
129
  $$PREBID_GLOBAL$$.requestBids.removeAll();
124
130
  config.resetConfig();
125
131
  coreStorage.setCookie.restore();
132
+ utils.logWarn.restore();
126
133
  });
127
134
 
128
135
  after(function () {
@@ -321,6 +328,50 @@ describe('User ID', function () {
321
328
  expect((getGlobal()).getUserIdsAsEids()).to.deep.equal(createEidsArray((getGlobal()).getUserIds()));
322
329
  });
323
330
 
331
+ it('should set googletag ppid correctly', function () {
332
+ let adUnits = [getAdUnitMock()];
333
+ setSubmoduleRegistry([amxIdSubmodule, sharedIdSystemSubmodule, identityLinkSubmodule]);
334
+ init(config);
335
+
336
+ config.setConfig({
337
+ userSync: {
338
+ ppid: 'pubcid.org',
339
+ userIds: [
340
+ { name: 'amxId', value: {'amxId': 'amx-id-value-amx-id-value-amx-id-value'} },
341
+ { name: 'pubCommonId', value: {'pubcid': 'pubCommon-id-value-pubCommon-id-value'} },
342
+ { name: 'identityLink', value: {'idl_env': 'identityLink-id-value-identityLink-id-value'} },
343
+ ]
344
+ }
345
+ });
346
+ // before ppid should not be set
347
+ expect(window.googletag._ppid).to.equal(undefined);
348
+ requestBidsHook(() => {}, {adUnits});
349
+ // ppid should have been set without dashes and stuff
350
+ expect(window.googletag._ppid).to.equal('pubCommonidvaluepubCommonidvalue');
351
+ });
352
+
353
+ it('should log a warning if PPID too big or small', function () {
354
+ let adUnits = [getAdUnitMock()];
355
+ setSubmoduleRegistry([sharedIdSystemSubmodule]);
356
+ init(config);
357
+
358
+ config.setConfig({
359
+ userSync: {
360
+ ppid: 'pubcid.org',
361
+ userIds: [
362
+ { name: 'pubCommonId', value: {'pubcid': 'pubcommonIdValue'} },
363
+ ]
364
+ }
365
+ });
366
+ // before ppid should not be set
367
+ expect(window.googletag._ppid).to.equal(undefined);
368
+ requestBidsHook(() => {}, {adUnits});
369
+ // ppid should NOT have been set
370
+ expect(window.googletag._ppid).to.equal(undefined);
371
+ // a warning should have been emmited
372
+ expect(utils.logWarn.args[0][0]).to.exist.and.to.contain('User ID - Googletag Publisher Provided ID for pubcid.org is not between 32 and 150 characters - pubcommonIdValue');
373
+ });
374
+
324
375
  it('pbjs.refreshUserIds refreshes', function() {
325
376
  let sandbox = sinon.createSandbox();
326
377
 
@@ -3,6 +3,7 @@ import { spec } from 'modules/visxBidAdapter.js';
3
3
  import { config } from 'src/config.js';
4
4
  import { newBidder } from 'src/adapters/bidderFactory.js';
5
5
  import * as utils from 'src/utils.js';
6
+ import { makeSlot } from '../integration/faker/googletag.js';
6
7
 
7
8
  describe('VisxAdapter', function () {
8
9
  const adapter = newBidder(spec);
@@ -145,17 +146,17 @@ describe('VisxAdapter', function () {
145
146
  const expectedFullImps = [{
146
147
  'id': '30b31c1838de1e',
147
148
  'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
148
- 'ext': {'bidder': {'uid': 903535}}
149
+ 'ext': {'bidder': {'uid': 903535, 'adslotExists': false}}
149
150
  },
150
151
  {
151
152
  'id': '3150ccb55da321',
152
153
  'banner': {'format': [{'w': 728, 'h': 90}, {'w': 300, 'h': 250}]},
153
- 'ext': {'bidder': {'uid': 903535}}
154
+ 'ext': {'bidder': {'uid': 903535, 'adslotExists': false}}
154
155
  },
155
156
  {
156
157
  'id': '42dbe3a7168a6a',
157
158
  'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
158
- 'ext': {'bidder': {'uid': 903536}}
159
+ 'ext': {'bidder': {'uid': 903536, 'adslotExists': false}}
159
160
  },
160
161
  {
161
162
  'id': '39a4e3a7168a6a',
@@ -452,7 +453,122 @@ describe('VisxAdapter', function () {
452
453
  'imp': [{
453
454
  'id': '39aff3a7169a6a',
454
455
  'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
455
- 'ext': {'bidder': {'uid': 903538}}
456
+ 'ext': {'bidder': {'uid': 903538, 'adslotExists': false}}
457
+ }],
458
+ 'tmax': 3000,
459
+ 'cur': ['EUR'],
460
+ 'source': {
461
+ 'ext': {
462
+ 'wrapperType': 'Prebid_js',
463
+ 'wrapperVersion': '$prebid.version$'
464
+ }
465
+ },
466
+ 'site': {'page': referrer}
467
+ });
468
+ });
469
+ });
470
+
471
+ describe('buildRequests (check ad slot exists)', function () {
472
+ function parseRequest(url) {
473
+ const res = {};
474
+ (url.split('?')[1] || '').split('&').forEach((it) => {
475
+ const couple = it.split('=');
476
+ res[couple[0]] = decodeURIComponent(couple[1]);
477
+ });
478
+ return res;
479
+ }
480
+ const bidderRequest = {
481
+ timeout: 3000,
482
+ refererInfo: {
483
+ referer: 'https://example.com'
484
+ }
485
+ };
486
+ const referrer = bidderRequest.refererInfo.referer;
487
+ const bidRequests = [
488
+ {
489
+ 'bidder': 'visx',
490
+ 'params': {
491
+ 'uid': 903535
492
+ },
493
+ 'adUnitCode': 'visx-adunit-code-1',
494
+ 'sizes': [[300, 250], [300, 600]],
495
+ 'bidId': '30b31c1838de1e',
496
+ 'bidderRequestId': '22edbae2733bf6',
497
+ 'auctionId': '1d1a030790a475',
498
+ },
499
+ {
500
+ 'bidder': 'visx',
501
+ 'params': {
502
+ 'uid': 903535
503
+ },
504
+ 'adUnitCode': 'visx-adunit-code-2',
505
+ 'sizes': [[300, 250], [300, 600]],
506
+ 'bidId': '30b31c1838de1e',
507
+ 'bidderRequestId': '22edbae2733bf6',
508
+ 'auctionId': '1d1a030790a475',
509
+ }
510
+ ];
511
+ let sandbox;
512
+ let documentStub;
513
+
514
+ before(function() {
515
+ sandbox = sinon.sandbox.create();
516
+ documentStub = sandbox.stub(document, 'getElementById');
517
+ documentStub.withArgs('visx-adunit-code-1').returns({
518
+ id: 'visx-adunit-code-1'
519
+ });
520
+ documentStub.withArgs('visx-adunit-element-2').returns({
521
+ id: 'visx-adunit-element-2'
522
+ });
523
+ });
524
+
525
+ after(function() {
526
+ sandbox.restore();
527
+ });
528
+
529
+ it('should find ad slot by ad unit code as element id', function () {
530
+ const request = spec.buildRequests([bidRequests[0]], bidderRequest);
531
+ const payload = parseRequest(request.url);
532
+ expect(payload).to.be.an('object');
533
+ expect(payload).to.have.property('auids', '903535');
534
+
535
+ const postData = request.data;
536
+ expect(postData).to.be.an('object');
537
+ expect(postData).to.deep.equal({
538
+ 'id': '22edbae2733bf6',
539
+ 'imp': [{
540
+ 'id': '30b31c1838de1e',
541
+ 'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
542
+ 'ext': {'bidder': {'uid': 903535, 'adslotExists': true}}
543
+ }],
544
+ 'tmax': 3000,
545
+ 'cur': ['EUR'],
546
+ 'source': {
547
+ 'ext': {
548
+ 'wrapperType': 'Prebid_js',
549
+ 'wrapperVersion': '$prebid.version$'
550
+ }
551
+ },
552
+ 'site': {'page': referrer}
553
+ });
554
+ });
555
+
556
+ it('should find ad slot by ad unit code as adUnitPath', function () {
557
+ makeSlot({code: 'visx-adunit-code-2', divId: 'visx-adunit-element-2'});
558
+
559
+ const request = spec.buildRequests([bidRequests[1]], bidderRequest);
560
+ const payload = parseRequest(request.url);
561
+ expect(payload).to.be.an('object');
562
+ expect(payload).to.have.property('auids', '903535');
563
+
564
+ const postData = request.data;
565
+ expect(postData).to.be.an('object');
566
+ expect(postData).to.deep.equal({
567
+ 'id': '22edbae2733bf6',
568
+ 'imp': [{
569
+ 'id': '30b31c1838de1e',
570
+ 'banner': {'format': [{'w': 300, 'h': 250}, {'w': 300, 'h': 600}]},
571
+ 'ext': {'bidder': {'uid': 903535, 'adslotExists': true}}
456
572
  }],
457
573
  'tmax': 3000,
458
574
  'cur': ['EUR'],