prebid.js 5.18.0 → 5.20.2

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 (114) hide show
  1. package/browsers.json +1 -0
  2. package/integrationExamples/gpt/akamaidap_segments_example.html +132 -0
  3. package/modules/.submodules.json +1 -0
  4. package/modules/adfBidAdapter.js +21 -16
  5. package/modules/adtelligentBidAdapter.js +2 -1
  6. package/modules/adxcgBidAdapter.js +311 -359
  7. package/modules/airgridRtdProvider.js +1 -1
  8. package/modules/akamaiDapRtdProvider.js +474 -0
  9. package/modules/akamaiDapRtdProvider.md +47 -0
  10. package/modules/appnexusBidAdapter.js +9 -3
  11. package/modules/atsAnalyticsAdapter.js +67 -46
  12. package/modules/atsAnalyticsAdapter.md +1 -0
  13. package/modules/betweenBidAdapter.js +20 -3
  14. package/modules/browsiRtdProvider.js +106 -18
  15. package/modules/cleanioRtdProvider.js +192 -0
  16. package/modules/cleanioRtdProvider.md +59 -0
  17. package/modules/codefuelBidAdapter.js +183 -0
  18. package/modules/codefuelBidAdapter.md +111 -0
  19. package/modules/connectIdSystem.js +104 -0
  20. package/modules/connectIdSystem.md +33 -0
  21. package/modules/deepintentBidAdapter.js +106 -9
  22. package/modules/deepintentBidAdapter.md +36 -1
  23. package/modules/deltaprojectsBidAdapter.js +252 -0
  24. package/modules/deltaprojectsBidAdapter.md +32 -0
  25. package/modules/engageyaBidAdapter.js +157 -0
  26. package/modules/gridBidAdapter.js +1 -0
  27. package/modules/gumgumBidAdapter.js +8 -0
  28. package/modules/inskinBidAdapter.js +7 -3
  29. package/modules/ipromBidAdapter.js +79 -0
  30. package/modules/ixBidAdapter.js +8 -1
  31. package/modules/jixieBidAdapter.js +8 -2
  32. package/modules/justpremiumBidAdapter.js +6 -1
  33. package/modules/kinessoIdSystem.js +1 -1
  34. package/modules/limelightDigitalBidAdapter.js +22 -2
  35. package/modules/livewrappedAnalyticsAdapter.js +49 -1
  36. package/modules/multibid/index.js +3 -3
  37. package/modules/nativoBidAdapter.js +5 -1
  38. package/modules/nextMillenniumBidAdapter.js +12 -3
  39. package/modules/oguryBidAdapter.js +14 -1
  40. package/modules/openxBidAdapter.js +34 -22
  41. package/modules/operaadsBidAdapter.js +21 -1
  42. package/modules/otmBidAdapter.js +146 -0
  43. package/modules/otmBidAdapter.md +27 -26
  44. package/modules/outbrainBidAdapter.js +5 -0
  45. package/modules/playwireBidAdapter.md +61 -0
  46. package/modules/publinkIdSystem.js +11 -6
  47. package/modules/rtdModule/index.js +2 -2
  48. package/modules/sonobiBidAdapter.js +7 -0
  49. package/modules/sortableBidAdapter.js +1 -0
  50. package/modules/teadsBidAdapter.js +3 -0
  51. package/modules/tripleliftBidAdapter.js +22 -5
  52. package/modules/trustxBidAdapter.js +8 -6
  53. package/modules/undertoneBidAdapter.js +9 -5
  54. package/modules/undertoneBidAdapter.md +5 -1
  55. package/modules/userId/eids.js +18 -0
  56. package/modules/userId/eids.md +7 -0
  57. package/modules/userId/userId.md +12 -0
  58. package/modules/ventesBidAdapter.js +370 -0
  59. package/modules/ventesBidAdapter.md +94 -0
  60. package/modules/videobyteBidAdapter.js +13 -6
  61. package/modules/videobyteBidAdapter.md +49 -0
  62. package/modules/yahoosspBidAdapter.js +6 -6
  63. package/modules/yieldmoSyntheticInventoryModule.js +46 -0
  64. package/modules/yieldmoSyntheticInventoryModule.md +68 -0
  65. package/package.json +1 -1
  66. package/src/adapterManager.js +5 -0
  67. package/src/adapters/bidderFactory.js +4 -3
  68. package/src/auction.js +11 -11
  69. package/src/constants.json +1 -0
  70. package/src/secureCreatives.js +6 -7
  71. package/src/targeting.js +11 -9
  72. package/test/spec/modules/adfBidAdapter_spec.js +83 -29
  73. package/test/spec/modules/adtelligentBidAdapter_spec.js +1 -0
  74. package/test/spec/modules/adxcgBidAdapter_spec.js +827 -571
  75. package/test/spec/modules/akamaiDapRtdProvider_spec.js +246 -0
  76. package/test/spec/modules/appnexusBidAdapter_spec.js +16 -1
  77. package/test/spec/modules/atsAnalyticsAdapter_spec.js +42 -9
  78. package/test/spec/modules/betweenBidAdapter_spec.js +41 -0
  79. package/test/spec/modules/browsiRtdProvider_spec.js +62 -7
  80. package/test/spec/modules/cleanioRtdProvider_spec.js +188 -0
  81. package/test/spec/modules/codefuelBidAdapter_spec.js +316 -0
  82. package/test/spec/modules/connectIdSystem_spec.js +189 -0
  83. package/test/spec/modules/deepintentBidAdapter_spec.js +153 -3
  84. package/test/spec/modules/deltaprojectsBidAdapter_spec.js +399 -0
  85. package/test/spec/modules/engageyaBidAdapter_spec.js +286 -0
  86. package/test/spec/modules/eplanningBidAdapter_spec.js +8 -8
  87. package/test/spec/modules/gumgumBidAdapter_spec.js +5 -1
  88. package/test/spec/modules/ipromBidAdapter_spec.js +195 -0
  89. package/test/spec/modules/ixBidAdapter_spec.js +13 -3
  90. package/test/spec/modules/jixieBidAdapter_spec.js +13 -11
  91. package/test/spec/modules/justpremiumBidAdapter_spec.js +9 -2
  92. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +155 -1
  93. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +52 -7
  94. package/test/spec/modules/multibid_spec.js +31 -31
  95. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +13 -1
  96. package/test/spec/modules/oguryBidAdapter_spec.js +53 -12
  97. package/test/spec/modules/openxBidAdapter_spec.js +85 -13
  98. package/test/spec/modules/operaadsBidAdapter_spec.js +38 -6
  99. package/test/spec/modules/otmBidAdapter_spec.js +67 -0
  100. package/test/spec/modules/outbrainBidAdapter_spec.js +18 -0
  101. package/test/spec/modules/publinkIdSystem_spec.js +6 -6
  102. package/test/spec/modules/sonobiBidAdapter_spec.js +34 -1
  103. package/test/spec/modules/sortableBidAdapter_spec.js +11 -0
  104. package/test/spec/modules/teadsBidAdapter_spec.js +132 -0
  105. package/test/spec/modules/tripleliftBidAdapter_spec.js +128 -0
  106. package/test/spec/modules/trustxBidAdapter_spec.js +3 -3
  107. package/test/spec/modules/undertoneBidAdapter_spec.js +52 -0
  108. package/test/spec/modules/ventesBidAdapter_spec.js +845 -0
  109. package/test/spec/modules/videobyteBidAdapter_spec.js +2 -2
  110. package/test/spec/modules/yieldmoSyntheticInventoryModule_spec.js +89 -0
  111. package/test/spec/unit/core/adapterManager_spec.js +37 -2
  112. package/test/spec/unit/core/bidderFactory_spec.js +61 -1
  113. package/test/spec/unit/pbjs_api_spec.js +37 -2
  114. package/test/spec/unit/secureCreatives_spec.js +54 -25
@@ -29,11 +29,34 @@ describe('Adf adapter', function () {
29
29
 
30
30
  it('should return true when required params found', function () {
31
31
  assert(spec.isBidRequestValid(bid));
32
+
33
+ bid.params = {
34
+ inv: 1234,
35
+ mname: 'some-placement'
36
+ };
37
+ assert(spec.isBidRequestValid(bid));
38
+
39
+ bid.params = {
40
+ mid: 4332,
41
+ inv: 1234,
42
+ mname: 'some-placement'
43
+ };
44
+ assert(spec.isBidRequestValid(bid));
32
45
  });
33
46
 
34
47
  it('should return false when required params are missing', function () {
35
48
  bid.params = { adxDomain: 'adx.adform.net' };
36
49
  assert.isFalse(spec.isBidRequestValid(bid));
50
+
51
+ bid.params = {
52
+ mname: 'some-placement'
53
+ };
54
+ assert.isFalse(spec.isBidRequestValid(bid));
55
+
56
+ bid.params = {
57
+ inv: 1234
58
+ };
59
+ assert.isFalse(spec.isBidRequestValid(bid));
37
60
  });
38
61
  });
39
62
 
@@ -331,6 +354,30 @@ describe('Adf adapter', function () {
331
354
  }
332
355
  });
333
356
 
357
+ describe('dynamic placement tag', function () {
358
+ it('should add imp parameters correctly', function () {
359
+ const validBidRequests = [
360
+ { bidId: 'bidId', params: { inv: 1000, mname: 'placement' }, mediaTypes: {video: {}} },
361
+ { bidId: 'bidId', params: { mid: 1234, inv: 1002, mname: 'placement2' }, mediaTypes: {video: {}} },
362
+ { bidId: 'bidId', params: { mid: 1234 }, mediaTypes: {video: {}} }
363
+ ];
364
+ const [ imp1, imp2, imp3 ] = getRequestImps(validBidRequests);
365
+
366
+ assert.equal(imp1.ext.bidder.inv, 1000);
367
+ assert.equal(imp1.ext.bidder.mname, 'placement');
368
+ assert.equal('tagid' in imp1, false);
369
+
370
+ assert.equal(imp2.ext.bidder.inv, 1002);
371
+ assert.equal(imp2.ext.bidder.mname, 'placement2');
372
+ assert.equal(imp2.tagid, 1234);
373
+
374
+ assert.ok(imp3.ext.bidder);
375
+ assert.equal('inv' in imp3.ext.bidder, false);
376
+ assert.equal('mname' in imp3.ext.bidder, false);
377
+ assert.equal(imp3.tagid, 1234);
378
+ });
379
+ });
380
+
334
381
  describe('price floors', function () {
335
382
  it('should not add if floors module not configured', function () {
336
383
  const validBidRequests = [{ bidId: 'bidId', params: {mid: 1000}, mediaTypes: {video: {}} }];
@@ -376,18 +423,14 @@ describe('Adf adapter', function () {
376
423
  return {
377
424
  currency: currency,
378
425
  floor
379
- }
426
+ };
380
427
  }
381
428
  };
382
429
  }
383
-
384
- function getRequestImps(validBidRequests) {
385
- return JSON.parse(spec.buildRequests(validBidRequests, { refererInfo: { referer: 'page' } }).data).imp;
386
- }
387
430
  });
388
431
 
389
432
  describe('multiple media types', function () {
390
- it('should use single media type for bidding', function () {
433
+ it('should use all configured media types for bidding', function () {
391
434
  let validBidRequests = [{
392
435
  bidId: 'bidId',
393
436
  params: { mid: 1000 },
@@ -414,20 +457,23 @@ describe('Adf adapter', function () {
414
457
  banner: {
415
458
  sizes: [[100, 100], [200, 300]]
416
459
  },
417
- native: {}
460
+ native: {},
461
+ video: {}
418
462
  }
419
463
  }];
420
- let [ banner, video, native ] = JSON.parse(spec.buildRequests(validBidRequests, { refererInfo: { referer: 'page' } }).data).imp;
421
-
422
- assert.ok(banner.banner);
423
- assert.equal(banner.video, undefined);
424
- assert.equal(banner.native, undefined);
425
- assert.ok(video.video);
426
- assert.equal(video.banner, undefined);
427
- assert.equal(video.native, undefined);
428
- assert.ok(native.native);
429
- assert.equal(native.video, undefined);
430
- assert.equal(native.banner, undefined);
464
+ let [ first, second, third ] = JSON.parse(spec.buildRequests(validBidRequests, { refererInfo: { referer: 'page' } }).data).imp;
465
+
466
+ assert.ok(first.banner);
467
+ assert.ok(first.video);
468
+ assert.equal(first.native, undefined);
469
+
470
+ assert.ok(second.video);
471
+ assert.equal(second.banner, undefined);
472
+ assert.equal(second.native, undefined);
473
+
474
+ assert.ok(third.native);
475
+ assert.ok(third.video);
476
+ assert.ok(third.banner);
431
477
  });
432
478
  });
433
479
 
@@ -626,6 +672,10 @@ describe('Adf adapter', function () {
626
672
  });
627
673
  });
628
674
  });
675
+
676
+ function getRequestImps(validBidRequests) {
677
+ return JSON.parse(spec.buildRequests(validBidRequests, { refererInfo: { referer: 'page' } }).data).imp;
678
+ }
629
679
  });
630
680
 
631
681
  describe('interpretResponse', function () {
@@ -754,7 +804,12 @@ describe('Adf adapter', function () {
754
804
  imptrackers: ['imptrackers url1', 'imptrackers url2']
755
805
  },
756
806
  dealid: 'deal-id',
757
- adomain: [ 'demo.com' ]
807
+ adomain: [ 'demo.com' ],
808
+ ext: {
809
+ prebid: {
810
+ type: 'native'
811
+ }
812
+ }
758
813
  }
759
814
  ]
760
815
  }],
@@ -767,7 +822,6 @@ describe('Adf adapter', function () {
767
822
  {
768
823
  bidId: 'bidId1',
769
824
  params: { mid: 1000 },
770
- mediaType: 'native',
771
825
  nativeParams: {
772
826
  title: { required: true, len: 140 },
773
827
  image: { required: false, wmin: 836, hmin: 627, w: 325, h: 300, mimes: ['image/jpg', 'image/gif'] },
@@ -899,7 +953,7 @@ describe('Adf adapter', function () {
899
953
  let serverResponse = {
900
954
  body: {
901
955
  seatbid: [{
902
- bid: [{ impid: '1', adm: '<banner>' }]
956
+ bid: [{ impid: '1', adm: '<banner>', ext: { prebid: { type: 'banner' } } }]
903
957
  }]
904
958
  }
905
959
  };
@@ -908,8 +962,7 @@ describe('Adf adapter', function () {
908
962
  bids: [
909
963
  {
910
964
  bidId: 'bidId1',
911
- params: { mid: 1000 },
912
- mediaType: 'banner'
965
+ params: { mid: 1000 }
913
966
  }
914
967
  ]
915
968
  };
@@ -917,6 +970,8 @@ describe('Adf adapter', function () {
917
970
  bids = spec.interpretResponse(serverResponse, bidRequest);
918
971
  assert.equal(bids.length, 1);
919
972
  assert.equal(bids[0].ad, '<banner>');
973
+ assert.equal(bids[0].mediaType, 'banner');
974
+ assert.equal(bids[0].meta.mediaType, 'banner');
920
975
  });
921
976
  });
922
977
 
@@ -925,7 +980,7 @@ describe('Adf adapter', function () {
925
980
  let serverResponse = {
926
981
  body: {
927
982
  seatbid: [{
928
- bid: [{ impid: '1', adm: '<vast>' }]
983
+ bid: [{ impid: '1', adm: '<vast>', ext: { prebid: { type: 'video' } } }]
929
984
  }]
930
985
  }
931
986
  };
@@ -934,8 +989,7 @@ describe('Adf adapter', function () {
934
989
  bids: [
935
990
  {
936
991
  bidId: 'bidId1',
937
- params: { mid: 1000 },
938
- mediaType: 'video'
992
+ params: { mid: 1000 }
939
993
  }
940
994
  ]
941
995
  };
@@ -943,13 +997,15 @@ describe('Adf adapter', function () {
943
997
  bids = spec.interpretResponse(serverResponse, bidRequest);
944
998
  assert.equal(bids.length, 1);
945
999
  assert.equal(bids[0].vastXml, '<vast>');
1000
+ assert.equal(bids[0].mediaType, 'video');
1001
+ assert.equal(bids[0].meta.mediaType, 'video');
946
1002
  });
947
1003
 
948
1004
  it('should add renderer for outstream bids', function () {
949
1005
  let serverResponse = {
950
1006
  body: {
951
1007
  seatbid: [{
952
- bid: [{ impid: '1', adm: '<vast>' }, { impid: '2', adm: '<vast>' }]
1008
+ bid: [{ impid: '1', adm: '<vast>', ext: { prebid: { type: 'video' } } }, { impid: '2', adm: '<vast>', ext: { prebid: { type: 'video' } } }]
953
1009
  }]
954
1010
  }
955
1011
  };
@@ -959,7 +1015,6 @@ describe('Adf adapter', function () {
959
1015
  {
960
1016
  bidId: 'bidId1',
961
1017
  params: { mid: 1000 },
962
- mediaType: 'video',
963
1018
  mediaTypes: {
964
1019
  video: {
965
1020
  context: 'outstream'
@@ -969,7 +1024,6 @@ describe('Adf adapter', function () {
969
1024
  {
970
1025
  bidId: 'bidId2',
971
1026
  params: { mid: 1000 },
972
- mediaType: 'video',
973
1027
  mediaTypes: {
974
1028
  video: {
975
1029
  constext: 'instream'
@@ -17,6 +17,7 @@ const aliasEP = {
17
17
  mediafuse: 'https://ghb.hbmp.mediafuse.com/v2/auction/',
18
18
  navelix: 'https://ghb.hb.navelix.com/v2/auction/',
19
19
  bidsxchange: 'https://ghb.hbd.bidsxchange.com/v2/auction/',
20
+ streamkey: 'https://ghb.hb.streamkey.net/v2/auction/',
20
21
  };
21
22
 
22
23
  const DEFAULT_ADATPER_REQ = { bidderCode: 'adtelligent' };