prebid.js 5.19.0 → 6.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 (161) 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 -0
  5. package/karma.conf.maker.js +1 -1
  6. package/modules/adheseBidAdapter.js +7 -2
  7. package/modules/adkernelBidAdapter.js +1 -0
  8. package/modules/adlivetechBidAdapter.md +61 -0
  9. package/modules/admixerBidAdapter.js +2 -1
  10. package/modules/adnuntiusBidAdapter.js +2 -1
  11. package/modules/adomikAnalyticsAdapter.js +10 -4
  12. package/modules/adplusBidAdapter.js +203 -0
  13. package/modules/adplusBidAdapter.md +39 -0
  14. package/modules/adyoulikeBidAdapter.js +7 -2
  15. package/modules/airgridRtdProvider.js +1 -1
  16. package/modules/appnexusBidAdapter.js +28 -5
  17. package/modules/atsAnalyticsAdapter.js +67 -46
  18. package/modules/atsAnalyticsAdapter.md +1 -0
  19. package/modules/beachfrontBidAdapter.js +14 -17
  20. package/modules/betweenBidAdapter.js +2 -1
  21. package/modules/browsiRtdProvider.js +106 -18
  22. package/modules/cleanioRtdProvider.js +192 -0
  23. package/modules/cleanioRtdProvider.md +59 -0
  24. package/modules/codefuelBidAdapter.js +1 -3
  25. package/modules/codefuelBidAdapter.md +3 -3
  26. package/modules/craftBidAdapter.js +5 -3
  27. package/modules/datablocksBidAdapter.js +3 -3
  28. package/modules/dchain.js +149 -0
  29. package/modules/dchain.md +45 -0
  30. package/modules/deepintentBidAdapter.js +1 -1
  31. package/modules/deltaprojectsBidAdapter.js +252 -0
  32. package/modules/deltaprojectsBidAdapter.md +32 -0
  33. package/modules/emx_digitalBidAdapter.js +9 -1
  34. package/modules/engageyaBidAdapter.js +68 -54
  35. package/modules/freewheel-sspBidAdapter.js +6 -0
  36. package/modules/glimpseBidAdapter.js +31 -16
  37. package/modules/goldbachBidAdapter.js +1176 -0
  38. package/modules/goldbachBidAdapter.md +151 -0
  39. package/modules/gptPreAuction.js +11 -5
  40. package/modules/gridBidAdapter.js +1 -0
  41. package/modules/gumgumBidAdapter.js +5 -1
  42. package/modules/id5IdSystem.md +6 -6
  43. package/modules/imRtdProvider.js +31 -0
  44. package/modules/intersectionRtdProvider.js +114 -0
  45. package/modules/invibesBidAdapter.js +15 -9
  46. package/modules/ipromBidAdapter.js +79 -0
  47. package/modules/ixBidAdapter.js +173 -22
  48. package/modules/jixieBidAdapter.js +8 -2
  49. package/modules/justpremiumBidAdapter.js +6 -1
  50. package/modules/limelightDigitalBidAdapter.js +2 -1
  51. package/modules/livewrappedAnalyticsAdapter.js +5 -0
  52. package/modules/luponmediaBidAdapter.js +570 -0
  53. package/modules/merkleIdSystem.js +5 -0
  54. package/modules/missenaBidAdapter.js +89 -0
  55. package/modules/multibid/index.js +3 -3
  56. package/modules/nativoBidAdapter.js +32 -2
  57. package/modules/oguryBidAdapter.js +2 -1
  58. package/modules/openxBidAdapter.js +7 -2
  59. package/modules/operaadsBidAdapter.js +21 -1
  60. package/modules/otmBidAdapter.js +146 -0
  61. package/modules/otmBidAdapter.md +27 -26
  62. package/modules/outbrainBidAdapter.js +5 -0
  63. package/modules/playwireBidAdapter.md +61 -0
  64. package/modules/prebidServerBidAdapter/index.js +3 -3
  65. package/modules/pubmaticBidAdapter.js +5 -3
  66. package/modules/relaidoBidAdapter.js +86 -65
  67. package/modules/richaudienceBidAdapter.js +1 -1
  68. package/modules/rtdModule/index.js +2 -2
  69. package/modules/saambaaBidAdapter.js +420 -0
  70. package/modules/saambaaBidAdapter.md +65 -68
  71. package/modules/seedtagBidAdapter.js +6 -0
  72. package/modules/smaatoBidAdapter.js +9 -1
  73. package/modules/smartxBidAdapter.js +17 -1
  74. package/modules/sonobiBidAdapter.js +7 -0
  75. package/modules/sortableBidAdapter.js +1 -0
  76. package/modules/sspBCBidAdapter.js +34 -3
  77. package/modules/tappxBidAdapter.js +3 -1
  78. package/modules/teadsBidAdapter.js +3 -0
  79. package/modules/trustxBidAdapter.js +18 -7
  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 +410 -0
  84. package/modules/ventesBidAdapter.md +93 -0
  85. package/modules/vidoomyBidAdapter.js +51 -100
  86. package/modules/visxBidAdapter.js +20 -3
  87. package/modules/visxBidAdapter.md +4 -6
  88. package/modules/yahoosspBidAdapter.js +6 -6
  89. package/modules/yahoosspBidAdapter.md +1 -1
  90. package/modules/yieldlabBidAdapter.js +41 -10
  91. package/modules/yieldlabBidAdapter.md +91 -48
  92. package/modules/yieldoneBidAdapter.js +115 -11
  93. package/package.json +6 -1
  94. package/src/adapterManager.js +14 -8
  95. package/src/auction.js +14 -13
  96. package/src/targeting.js +2 -2
  97. package/src/utils.js +7 -0
  98. package/test/spec/integration/faker/googletag.js +6 -0
  99. package/test/spec/modules/adheseBidAdapter_spec.js +27 -1
  100. package/test/spec/modules/adnuntiusBidAdapter_spec.js +18 -0
  101. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +3 -1
  102. package/test/spec/modules/adplusBidAdapter_spec.js +213 -0
  103. package/test/spec/modules/adyoulikeBidAdapter_spec.js +26 -0
  104. package/test/spec/modules/appnexusBidAdapter_spec.js +65 -2
  105. package/test/spec/modules/atsAnalyticsAdapter_spec.js +42 -9
  106. package/test/spec/modules/beachfrontBidAdapter_spec.js +65 -1
  107. package/test/spec/modules/browsiRtdProvider_spec.js +62 -7
  108. package/test/spec/modules/cleanioRtdProvider_spec.js +188 -0
  109. package/test/spec/modules/codefuelBidAdapter_spec.js +1 -1
  110. package/test/spec/modules/datablocksBidAdapter_spec.js +3 -3
  111. package/test/spec/modules/dchain_spec.js +329 -0
  112. package/test/spec/modules/deltaprojectsBidAdapter_spec.js +399 -0
  113. package/test/spec/modules/emx_digitalBidAdapter_spec.js +10 -0
  114. package/test/spec/modules/engageyaBidAdapter_spec.js +231 -95
  115. package/test/spec/modules/eplanningBidAdapter_spec.js +8 -8
  116. package/test/spec/modules/freewheel-sspBidAdapter_spec.js +19 -0
  117. package/test/spec/modules/glimpseBidAdapter_spec.js +33 -0
  118. package/test/spec/modules/goldbachBidAdapter_spec.js +1359 -0
  119. package/test/spec/modules/gptPreAuction_spec.js +58 -4
  120. package/test/spec/modules/gumgumBidAdapter_spec.js +6 -0
  121. package/test/spec/modules/imRtdProvider_spec.js +25 -0
  122. package/test/spec/modules/intersectionRtdProvider_spec.js +141 -0
  123. package/test/spec/modules/invibesBidAdapter_spec.js +29 -4
  124. package/test/spec/modules/ipromBidAdapter_spec.js +195 -0
  125. package/test/spec/modules/ixBidAdapter_spec.js +288 -5
  126. package/test/spec/modules/jixieBidAdapter_spec.js +13 -11
  127. package/test/spec/modules/justpremiumBidAdapter_spec.js +9 -2
  128. package/test/spec/modules/konduitWrapper_spec.js +0 -1
  129. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +10 -7
  130. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +23 -4
  131. package/test/spec/modules/luponmediaBidAdapter_spec.js +412 -0
  132. package/test/spec/modules/merkleIdSystem_spec.js +18 -0
  133. package/test/spec/modules/missenaBidAdapter_spec.js +134 -0
  134. package/test/spec/modules/multibid_spec.js +31 -31
  135. package/test/spec/modules/nativoBidAdapter_spec.js +35 -18
  136. package/test/spec/modules/oguryBidAdapter_spec.js +13 -11
  137. package/test/spec/modules/openxBidAdapter_spec.js +5 -26
  138. package/test/spec/modules/operaadsBidAdapter_spec.js +38 -6
  139. package/test/spec/modules/otmBidAdapter_spec.js +67 -0
  140. package/test/spec/modules/outbrainBidAdapter_spec.js +18 -0
  141. package/test/spec/modules/prebidServerBidAdapter_spec.js +19 -2
  142. package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
  143. package/test/spec/modules/relaidoBidAdapter_spec.js +71 -63
  144. package/test/spec/modules/seedtagBidAdapter_spec.js +3 -0
  145. package/test/spec/modules/smaatoBidAdapter_spec.js +61 -0
  146. package/test/spec/modules/smartxBidAdapter_spec.js +9 -0
  147. package/test/spec/modules/sonobiBidAdapter_spec.js +34 -1
  148. package/test/spec/modules/sortableBidAdapter_spec.js +11 -0
  149. package/test/spec/modules/sspBCBidAdapter_spec.js +33 -3
  150. package/test/spec/modules/tappxBidAdapter_spec.js +4 -0
  151. package/test/spec/modules/teadsBidAdapter_spec.js +132 -0
  152. package/test/spec/modules/trustxBidAdapter_spec.js +45 -3
  153. package/test/spec/modules/userId_spec.js +51 -0
  154. package/test/spec/modules/ventesBidAdapter_spec.js +845 -0
  155. package/test/spec/modules/vidoomyBidAdapter_spec.js +32 -13
  156. package/test/spec/modules/visxBidAdapter_spec.js +121 -5
  157. package/test/spec/modules/yieldlabBidAdapter_spec.js +81 -0
  158. package/test/spec/modules/yieldoneBidAdapter_spec.js +299 -53
  159. package/test/spec/unit/core/adapterManager_spec.js +26 -7
  160. package/test/spec/unit/core/targeting_spec.js +44 -0
  161. package/wdio.conf.js +1 -1
@@ -402,7 +402,7 @@ describe('TrustXAdapter', function () {
402
402
  });
403
403
 
404
404
  it('if segment is present in permutive targeting, payload must have right params', function () {
405
- const permSegments = ['test_perm_1', 'test_perm_2'];
405
+ const permSegments = [{id: 'test_perm_1'}, {id: 'test_perm_2'}];
406
406
  const bidRequestsWithPermutiveTargeting = bidRequests.map((bid) => {
407
407
  return Object.assign({
408
408
  rtd: {
@@ -421,8 +421,8 @@ describe('TrustXAdapter', function () {
421
421
  expect(payload.user.data).to.deep.equal([{
422
422
  name: 'permutive',
423
423
  segment: [
424
- {name: 'p_standard', value: permSegments[0]},
425
- {name: 'p_standard', value: permSegments[1]}
424
+ {name: 'p_standard', value: permSegments[0].id},
425
+ {name: 'p_standard', value: permSegments[1].id}
426
426
  ]
427
427
  }]);
428
428
  });
@@ -519,6 +519,48 @@ describe('TrustXAdapter', function () {
519
519
  expect(payload.tmax).to.equal(3000);
520
520
  getConfigStub.restore();
521
521
  });
522
+ it('should contain imp[].ext.data.adserver if available', function() {
523
+ const ortb2Imp = [{
524
+ ext: {
525
+ data: {
526
+ adserver: {
527
+ name: 'ad_server_name',
528
+ adslot: '/111111/slot'
529
+ },
530
+ pbadslot: '/111111/slot'
531
+ }
532
+ }
533
+ }, {
534
+ ext: {
535
+ data: {
536
+ adserver: {
537
+ name: 'ad_server_name',
538
+ adslot: '/222222/slot'
539
+ },
540
+ pbadslot: '/222222/slot'
541
+ }
542
+ }
543
+ }];
544
+ const bidRequestsWithOrtb2Imp = bidRequests.slice(0, 3).map((bid, ind) => {
545
+ return Object.assign(ortb2Imp[ind] ? { ortb2Imp: ortb2Imp[ind] } : {}, bid);
546
+ });
547
+ const request = spec.buildRequests(bidRequestsWithOrtb2Imp, bidderRequest);
548
+ expect(request.data).to.be.an('string');
549
+ const payload = parseRequest(request.data);
550
+ expect(payload.imp[0].ext).to.deep.equal({
551
+ divid: bidRequests[0].adUnitCode,
552
+ data: ortb2Imp[0].ext.data,
553
+ gpid: ortb2Imp[0].ext.data.adserver.adslot
554
+ });
555
+ expect(payload.imp[1].ext).to.deep.equal({
556
+ divid: bidRequests[1].adUnitCode,
557
+ data: ortb2Imp[1].ext.data,
558
+ gpid: ortb2Imp[1].ext.data.adserver.adslot
559
+ });
560
+ expect(payload.imp[2].ext).to.deep.equal({
561
+ divid: bidRequests[2].adUnitCode
562
+ });
563
+ });
522
564
  it('all id like request fields must be a string', function () {
523
565
  const bidderRequestWithNumId = Object.assign({}, bidderRequest, { bidderRequestId: 123123, auctionId: 345345543 });
524
566
 
@@ -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