prebid.js 6.2.0 → 6.6.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 (169) hide show
  1. package/.circleci/config.yml +1 -1
  2. package/gulpfile.js +87 -82
  3. package/integrationExamples/gpt/weboramaRtdProvider_example.html +23 -14
  4. package/karma.conf.maker.js +1 -1
  5. package/modules/.submodules.json +2 -1
  6. package/modules/33acrossBidAdapter.js +189 -102
  7. package/modules/adagioBidAdapter.js +1 -1
  8. package/modules/addefendBidAdapter.js +1 -0
  9. package/modules/adkernelBidAdapter.js +148 -62
  10. package/modules/adlooxAdServerVideo.js +2 -2
  11. package/modules/adlooxAnalyticsAdapter.js +4 -4
  12. package/modules/admanBidAdapter.js +11 -4
  13. package/modules/admixerBidAdapter.js +1 -1
  14. package/modules/adnuntiusBidAdapter.js +3 -1
  15. package/modules/adomikAnalyticsAdapter.js +27 -9
  16. package/modules/adqueryIdSystem.js +103 -0
  17. package/modules/adqueryIdSystem.md +35 -0
  18. package/modules/adxcgBidAdapter.js +311 -359
  19. package/modules/adxcgBidAdapter.md +22 -21
  20. package/modules/adyoulikeBidAdapter.js +13 -9
  21. package/modules/aniviewBidAdapter.js +1 -1
  22. package/modules/appnexusBidAdapter.js +0 -1
  23. package/modules/beopBidAdapter.js +6 -4
  24. package/modules/bidViewability.js +3 -3
  25. package/modules/bidViewabilityIO.js +3 -3
  26. package/modules/bliinkBidAdapter.js +3 -2
  27. package/modules/colossussspBidAdapter.js +7 -0
  28. package/modules/compassBidAdapter.js +208 -0
  29. package/modules/compassBidAdapter.md +79 -0
  30. package/modules/consentManagement.js +7 -1
  31. package/modules/criteoBidAdapter.js +1 -1
  32. package/modules/criteoIdSystem.js +29 -7
  33. package/modules/currency.js +2 -2
  34. package/modules/cwireBidAdapter.js +3 -0
  35. package/modules/dailyhuntBidAdapter.js +435 -0
  36. package/modules/dailyhuntBidAdapter.md +4 -0
  37. package/modules/docereeBidAdapter.js +10 -1
  38. package/modules/docereeBidAdapter.md +2 -0
  39. package/modules/dspxBidAdapter.js +1 -1
  40. package/modules/engageyaBidAdapter.js +1 -1
  41. package/modules/feedadBidAdapter.js +2 -2
  42. package/modules/feedadBidAdapter.md +4 -2
  43. package/modules/futureads.md +48 -0
  44. package/modules/glimpseBidAdapter.js +82 -47
  45. package/modules/gptPreAuction.js +55 -7
  46. package/modules/gridBidAdapter.js +4 -3
  47. package/modules/gumgumBidAdapter.js +2 -2
  48. package/modules/idImportLibrary.js +45 -8
  49. package/modules/idImportLibrary.md +4 -0
  50. package/modules/improvedigitalBidAdapter.js +42 -4
  51. package/modules/instreamTracking.js +4 -4
  52. package/modules/invibesBidAdapter.js +49 -5
  53. package/modules/invibesBidAdapter.md +2 -1
  54. package/modules/ixBidAdapter.js +53 -18
  55. package/modules/kinessoIdSystem.js +1 -1
  56. package/modules/limelightDigitalBidAdapter.js +2 -1
  57. package/modules/livewrappedAnalyticsAdapter.js +3 -1
  58. package/modules/livewrappedBidAdapter.js +8 -2
  59. package/modules/loglyliftBidAdapter.js +79 -0
  60. package/modules/loglyliftBidAdapter.md +55 -0
  61. package/modules/lotamePanoramaIdSystem.js +80 -8
  62. package/modules/mediasquareBidAdapter.js +1 -9
  63. package/modules/nextMillenniumBidAdapter.js +39 -7
  64. package/modules/oguryBidAdapter.js +9 -2
  65. package/modules/onetagBidAdapter.js +4 -2
  66. package/modules/optimeraRtdProvider.js +8 -1
  67. package/modules/ozoneBidAdapter.js +21 -64
  68. package/modules/prebidServerBidAdapter/index.js +16 -12
  69. package/modules/proxistoreBidAdapter.js +0 -2
  70. package/modules/pubgeniusBidAdapter.js +1 -1
  71. package/modules/pubmaticAnalyticsAdapter.js +16 -0
  72. package/modules/pubxaiAnalyticsAdapter.js +17 -0
  73. package/modules/richaudienceBidAdapter.js +4 -4
  74. package/modules/riseBidAdapter.js +1 -1
  75. package/modules/rtbhouseBidAdapter.js +14 -4
  76. package/modules/rtdModule/index.js +49 -18
  77. package/modules/rubiconBidAdapter.js +31 -19
  78. package/modules/sharedIdSystem.js +27 -1
  79. package/modules/showheroes-bsBidAdapter.js +13 -2
  80. package/modules/tappxBidAdapter.js +8 -5
  81. package/modules/targetVideoBidAdapter.js +187 -0
  82. package/modules/targetVideoBidAdapter.md +34 -0
  83. package/modules/teadsBidAdapter.js +1 -2
  84. package/modules/telariaBidAdapter.js +2 -2
  85. package/modules/trustxBidAdapter.js +8 -16
  86. package/modules/userId/eids.js +7 -1
  87. package/modules/userId/userId.md +8 -0
  88. package/modules/vidoomyBidAdapter.js +16 -10
  89. package/modules/weboramaRtdProvider.js +288 -73
  90. package/modules/weboramaRtdProvider.md +27 -10
  91. package/modules/welectBidAdapter.js +106 -0
  92. package/modules/yahoosspBidAdapter.js +5 -1
  93. package/modules/yieldmoBidAdapter.js +23 -5
  94. package/modules/zetaSspBidAdapter.md +33 -1
  95. package/modules/zeta_global_sspAnalyticsAdapter.js +97 -0
  96. package/modules/zeta_global_sspAnalyticsAdapter.md +24 -0
  97. package/modules/zeta_global_sspBidAdapter.js +22 -1
  98. package/package.json +1 -1
  99. package/plugins/pbjsGlobals.js +28 -1
  100. package/src/auction.js +2 -2
  101. package/src/config.js +27 -3
  102. package/src/hook.js +5 -1
  103. package/src/prebid.js +21 -6
  104. package/src/targeting.js +22 -1
  105. package/src/utils.js +46 -8
  106. package/test/helpers/prebidGlobal.js +1 -0
  107. package/test/spec/config_spec.js +279 -0
  108. package/test/spec/modules/33acrossBidAdapter_spec.js +300 -78
  109. package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
  110. package/test/spec/modules/admanBidAdapter_spec.js +2 -2
  111. package/test/spec/modules/adnuntiusBidAdapter_spec.js +17 -0
  112. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +9 -1
  113. package/test/spec/modules/adqueryIdSystem_spec.js +74 -0
  114. package/test/spec/modules/adxcgBidAdapter_spec.js +820 -571
  115. package/test/spec/modules/adyoulikeBidAdapter_spec.js +49 -0
  116. package/test/spec/modules/beopBidAdapter_spec.js +1 -1
  117. package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
  118. package/test/spec/modules/bidViewability_spec.js +4 -4
  119. package/test/spec/modules/bliinkBidAdapter_spec.js +2 -0
  120. package/test/spec/modules/colossussspBidAdapter_spec.js +9 -0
  121. package/test/spec/modules/compassBidAdapter_spec.js +398 -0
  122. package/test/spec/modules/consentManagement_spec.js +20 -0
  123. package/test/spec/modules/criteoIdSystem_spec.js +6 -3
  124. package/test/spec/modules/cwireBidAdapter_spec.js +10 -8
  125. package/test/spec/modules/dailyhuntBidAdapter_spec.js +404 -0
  126. package/test/spec/modules/docereeBidAdapter_spec.js +9 -1
  127. package/test/spec/modules/eids_spec.js +15 -0
  128. package/test/spec/modules/feedadBidAdapter_spec.js +15 -0
  129. package/test/spec/modules/glimpseBidAdapter_spec.js +0 -18
  130. package/test/spec/modules/gptPreAuction_spec.js +177 -2
  131. package/test/spec/modules/idImportLibrary_spec.js +197 -10
  132. package/test/spec/modules/improvedigitalBidAdapter_spec.js +45 -1
  133. package/test/spec/modules/invibesBidAdapter_spec.js +119 -0
  134. package/test/spec/modules/ixBidAdapter_spec.js +112 -62
  135. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +75 -17
  136. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +22 -0
  137. package/test/spec/modules/livewrappedBidAdapter_spec.js +31 -0
  138. package/test/spec/modules/loglyliftBidAdapter_spec.js +172 -0
  139. package/test/spec/modules/lotamePanoramaIdSystem_spec.js +227 -0
  140. package/test/spec/modules/mediasquareBidAdapter_spec.js +4 -4
  141. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +26 -1
  142. package/test/spec/modules/oguryBidAdapter_spec.js +10 -2
  143. package/test/spec/modules/optimeraRtdProvider_spec.js +14 -1
  144. package/test/spec/modules/ozoneBidAdapter_spec.js +43 -31
  145. package/test/spec/modules/prebidServerBidAdapter_spec.js +43 -0
  146. package/test/spec/modules/pubgeniusBidAdapter_spec.js +3 -3
  147. package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +13 -1
  148. package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +11 -0
  149. package/test/spec/modules/realTimeDataModule_spec.js +147 -48
  150. package/test/spec/modules/richaudienceBidAdapter_spec.js +42 -2
  151. package/test/spec/modules/riseBidAdapter_spec.js +1 -1
  152. package/test/spec/modules/rtbhouseBidAdapter_spec.js +20 -0
  153. package/test/spec/modules/rubiconBidAdapter_spec.js +65 -9
  154. package/test/spec/modules/sharedIdSystem_spec.js +52 -6
  155. package/test/spec/modules/showheroes-bsBidAdapter_spec.js +2 -0
  156. package/test/spec/modules/tappxBidAdapter_spec.js +0 -19
  157. package/test/spec/modules/targetVideoBidAdapter_spec.js +96 -0
  158. package/test/spec/modules/teadsBidAdapter_spec.js +14 -59
  159. package/test/spec/modules/userId_spec.js +68 -19
  160. package/test/spec/modules/weboramaRtdProvider_spec.js +408 -214
  161. package/test/spec/modules/welectBidAdapter_spec.js +211 -0
  162. package/test/spec/modules/yahoosspBidAdapter_spec.js +28 -1
  163. package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +427 -0
  164. package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +33 -1
  165. package/test/spec/unit/core/targeting_spec.js +72 -0
  166. package/test/spec/unit/pbjs_api_spec.js +3 -1
  167. package/test/spec/utils_spec.js +38 -0
  168. package/test/test_deps.js +3 -0
  169. package/test/test_index.js +1 -3
@@ -52,7 +52,7 @@ aliases:
52
52
  - &unit_test_steps
53
53
  - checkout
54
54
  - restore_cache: *restore_dep_cache
55
- - run: npm install
55
+ - run: npm ci
56
56
  - save_cache: *save_dep_cache
57
57
  - run: *install
58
58
  - run: *setup_browserstack
package/gulpfile.js CHANGED
@@ -115,38 +115,6 @@ function viewReview(done) {
115
115
 
116
116
  viewReview.displayName = 'view-review';
117
117
 
118
- // Watch Task with Live Reload
119
- function watch(done) {
120
- var mainWatcher = gulp.watch([
121
- 'src/**/*.js',
122
- 'modules/**/*.js',
123
- 'test/spec/**/*.js',
124
- '!test/spec/loaders/**/*.js'
125
- ]);
126
- var loaderWatcher = gulp.watch([
127
- 'loaders/**/*.js',
128
- 'test/spec/loaders/**/*.js'
129
- ]);
130
-
131
- connect.server({
132
- https: argv.https,
133
- port: port,
134
- host: FAKE_SERVER_HOST,
135
- root: './',
136
- livereload: true
137
- });
138
-
139
- mainWatcher.on('all', gulp.series(clean, gulp.parallel(lint, 'build-bundle-dev', test)));
140
- loaderWatcher.on('all', gulp.series(lint));
141
- done();
142
- };
143
-
144
- function makeModuleList(modules) {
145
- return modules.map(module => {
146
- return '"' + module + '"'
147
- });
148
- }
149
-
150
118
  function makeDevpackPkg() {
151
119
  var cloned = _.cloneDeep(webpackConfig);
152
120
  cloned.devtool = 'source-map';
@@ -158,7 +126,6 @@ function makeDevpackPkg() {
158
126
  return gulp.src([].concat(moduleSources, analyticsSources, 'src/prebid.js'))
159
127
  .pipe(helpers.nameModules(externalModules))
160
128
  .pipe(webpackStream(cloned, webpack))
161
- .pipe(replace(/('|")v\$prebid\.modulesList\$('|")/g, makeModuleList(externalModules)))
162
129
  .pipe(gulp.dest('build/dev'))
163
130
  .pipe(connect.reload());
164
131
  }
@@ -176,7 +143,6 @@ function makeWebpackPkg() {
176
143
  .pipe(helpers.nameModules(externalModules))
177
144
  .pipe(webpackStream(cloned, webpack))
178
145
  .pipe(terser())
179
- .pipe(replace(/('|")v\$prebid\.modulesList\$('|")/g, makeModuleList(externalModules)))
180
146
  .pipe(gulpif(file => file.basename === 'prebid-core.js', header(banner, { prebid: prebid })))
181
147
  .pipe(gulp.dest('build/dist'));
182
148
  }
@@ -255,60 +221,68 @@ function bundle(dev, moduleArr) {
255
221
  // If --browsers is given, browsers can be chosen explicitly. e.g. --browsers=chrome,firefox,ie9
256
222
  // If --notest is given, it will immediately skip the test task (useful for developing changes with `gulp serve --notest`)
257
223
 
258
- function test(done) {
259
- if (argv.notest) {
260
- done();
261
- } else if (argv.e2e) {
262
- let wdioCmd = path.join(__dirname, 'node_modules/.bin/wdio');
263
- let wdioConf = path.join(__dirname, 'wdio.conf.js');
264
- let wdioOpts;
265
-
266
- if (argv.file) {
267
- wdioOpts = [
268
- wdioConf,
269
- `--spec`,
270
- `${argv.file}`
271
- ]
272
- } else {
273
- wdioOpts = [
274
- wdioConf
275
- ];
276
- }
224
+ function testTaskMaker(options = {}) {
225
+ ['watch', 'e2e', 'file', 'browserstack', 'notest'].forEach(opt => {
226
+ options[opt] = options[opt] || argv[opt];
227
+ })
277
228
 
278
- // run fake-server
279
- const fakeServer = spawn('node', ['./test/fake-server/index.js', `--port=${FAKE_SERVER_PORT}`]);
280
- fakeServer.stdout.on('data', (data) => {
281
- console.log(`stdout: ${data}`);
282
- });
283
- fakeServer.stderr.on('data', (data) => {
284
- console.log(`stderr: ${data}`);
285
- });
229
+ return function test(done) {
230
+ if (options.notest) {
231
+ done();
232
+ } else if (options.e2e) {
233
+ let wdioCmd = path.join(__dirname, 'node_modules/.bin/wdio');
234
+ let wdioConf = path.join(__dirname, 'wdio.conf.js');
235
+ let wdioOpts;
236
+
237
+ if (options.file) {
238
+ wdioOpts = [
239
+ wdioConf,
240
+ `--spec`,
241
+ `${options.file}`
242
+ ]
243
+ } else {
244
+ wdioOpts = [
245
+ wdioConf
246
+ ];
247
+ }
286
248
 
287
- execa(wdioCmd, wdioOpts, { stdio: 'inherit' })
288
- .then(stdout => {
289
- // kill fake server
290
- fakeServer.kill('SIGINT');
291
- done();
292
- process.exit(0);
293
- })
294
- .catch(err => {
295
- // kill fake server
296
- fakeServer.kill('SIGINT');
297
- done(new Error(`Tests failed with error: ${err}`));
298
- process.exit(1);
249
+ // run fake-server
250
+ const fakeServer = spawn('node', ['./test/fake-server/index.js', `--port=${FAKE_SERVER_PORT}`]);
251
+ fakeServer.stdout.on('data', (data) => {
252
+ console.log(`stdout: ${data}`);
253
+ });
254
+ fakeServer.stderr.on('data', (data) => {
255
+ console.log(`stderr: ${data}`);
299
256
  });
300
- } else {
301
- var karmaConf = karmaConfMaker(false, argv.browserstack, argv.watch, argv.file);
302
257
 
303
- var browserOverride = helpers.parseBrowserArgs(argv);
304
- if (browserOverride.length > 0) {
305
- karmaConf.browsers = browserOverride;
306
- }
258
+ execa(wdioCmd, wdioOpts, { stdio: 'inherit' })
259
+ .then(stdout => {
260
+ // kill fake server
261
+ fakeServer.kill('SIGINT');
262
+ done();
263
+ process.exit(0);
264
+ })
265
+ .catch(err => {
266
+ // kill fake server
267
+ fakeServer.kill('SIGINT');
268
+ done(new Error(`Tests failed with error: ${err}`));
269
+ process.exit(1);
270
+ });
271
+ } else {
272
+ var karmaConf = karmaConfMaker(false, options.browserstack, options.watch, options.file);
307
273
 
308
- new KarmaServer(karmaConf, newKarmaCallback(done)).start();
274
+ var browserOverride = helpers.parseBrowserArgs(argv);
275
+ if (browserOverride.length > 0) {
276
+ karmaConf.browsers = browserOverride;
277
+ }
278
+
279
+ new KarmaServer(karmaConf, newKarmaCallback(done)).start();
280
+ }
309
281
  }
310
282
  }
311
283
 
284
+ const test = testTaskMaker();
285
+
312
286
  function newKarmaCallback(done) {
313
287
  return function (exitCode) {
314
288
  if (exitCode) {
@@ -385,6 +359,35 @@ function startFakeServer() {
385
359
  });
386
360
  }
387
361
 
362
+ // Watch Task with Live Reload
363
+ function watchTaskMaker(options = {}) {
364
+ if (options.livereload == null) {
365
+ options.livereload = true;
366
+ }
367
+ options.alsoWatch = options.alsoWatch || [];
368
+
369
+ return function watch(done) {
370
+ var mainWatcher = gulp.watch([
371
+ 'src/**/*.js',
372
+ 'modules/**/*.js',
373
+ ].concat(options.alsoWatch));
374
+
375
+ connect.server({
376
+ https: argv.https,
377
+ port: port,
378
+ host: FAKE_SERVER_HOST,
379
+ root: './',
380
+ livereload: options.livereload
381
+ });
382
+
383
+ mainWatcher.on('all', options.task());
384
+ done();
385
+ }
386
+ }
387
+
388
+ const watch = watchTaskMaker({alsoWatch: ['test/**/*.js'], task: () => gulp.series(clean, gulp.parallel(lint, 'build-bundle-dev', test))});
389
+ const watchFast = watchTaskMaker({livereload: false, task: () => gulp.series('build-bundle-dev')});
390
+
388
391
  // support tasks
389
392
  gulp.task(lint);
390
393
  gulp.task(watch);
@@ -397,7 +400,8 @@ gulp.task('build-bundle-dev', gulp.series(makeDevpackPkg, gulpBundle.bind(null,
397
400
  gulp.task('build-bundle-prod', gulp.series(makeWebpackPkg, gulpBundle.bind(null, false)));
398
401
 
399
402
  // public tasks (dependencies are needed for each task since they can be ran on their own)
400
- gulp.task('test', gulp.series(clean, lint, test));
403
+ gulp.task('test-only', test);
404
+ gulp.task('test', gulp.series(clean, lint, 'test-only'));
401
405
 
402
406
  gulp.task('test-coverage', gulp.series(clean, testCoverage));
403
407
  gulp.task(viewCoverage);
@@ -408,7 +412,8 @@ gulp.task('build', gulp.series(clean, 'build-bundle-prod'));
408
412
  gulp.task('build-postbid', gulp.series(escapePostbidConfig, buildPostbid));
409
413
 
410
414
  gulp.task('serve', gulp.series(clean, lint, gulp.parallel('build-bundle-dev', watch, test)));
411
- gulp.task('serve-fast', gulp.series(clean, gulp.parallel('build-bundle-dev', watch)));
415
+ gulp.task('serve-fast', gulp.series(clean, gulp.parallel('build-bundle-dev', watchFast)));
416
+ gulp.task('serve-and-test', gulp.series(clean, gulp.parallel('build-bundle-dev', watchFast, testTaskMaker({watch: true}))));
412
417
  gulp.task('serve-fake', gulp.series(clean, gulp.parallel('build-bundle-dev', watch), injectFakeServerEndpointDev, test, startFakeServer));
413
418
 
414
419
  gulp.task('default', gulp.series(clean, makeWebpackPkg));
@@ -17,22 +17,31 @@
17
17
  debug: true,
18
18
  realTimeData: {
19
19
  auctionDelay: 1000,
20
- dataProviders: [
21
- {
20
+ dataProviders: [{
22
21
  name: "weborama",
23
22
  waitForIt: true,
24
23
  params: {
25
- weboCtxConf: {
26
- setTargeting: true,
27
- token: "to-be-defined",
28
- targetURL: "https://prebid.org/",
29
- defaultProfile: {
30
- webo_ctx: ['moon']
31
- }
32
- }
33
- }
34
- }
35
- ]
24
+ weboCtxConf: {
25
+ token: "to-be-defined", // mandatory
26
+ targetURL: "https://prebid.org", // default is document.URL
27
+ setPrebidTargeting: true, // default
28
+ sendToBidders: true, // default
29
+ defaultProfile: { // optional
30
+ webo_ctx: ['moon'],
31
+ webo_ds: ['bar']
32
+ }
33
+ },
34
+ weboUserDataConf: {
35
+ setPrebidTargeting: true, // default
36
+ sendToBidders: true, // default
37
+ defaultProfile: { // optional
38
+ webo_cs: ['Red'],
39
+ webo_audiences: ['bam']
40
+ },
41
+ localStorageProfileKey: 'webo_wam2gam_entry' // default
42
+ }
43
+ }
44
+ }]
36
45
  }
37
46
  });
38
47
  });
@@ -54,7 +63,7 @@
54
63
  }
55
64
  },
56
65
  bids: [{
57
- bidder: 'appnexus',
66
+ bidder: 'smartadserver',
58
67
  params: {
59
68
  placementId: 1
60
69
  }
@@ -111,7 +111,7 @@ module.exports = function(codeCoverage, browserstack, watchMode, file) {
111
111
  var webpackConfig = newWebpackConfig(codeCoverage);
112
112
  var plugins = newPluginsArray(browserstack);
113
113
 
114
- var files = file ? ['test/helpers/prebidGlobal.js', file] : ['test/test_index.js'];
114
+ var files = file ? ['test/test_deps.js', file] : ['test/test_index.js'];
115
115
  // This file opens the /debug.html tab automatically.
116
116
  // It has no real value unless you're running --watch, and intend to do some debugging in the browser.
117
117
  if (watchMode) {
@@ -35,7 +35,8 @@
35
35
  "uid2IdSystem",
36
36
  "unifiedIdSystem",
37
37
  "verizonMediaIdSystem",
38
- "zeotapIdPlusIdSystem"
38
+ "zeotapIdPlusIdSystem",
39
+ "adqueryIdSystem"
39
40
  ],
40
41
  "adpod": [
41
42
  "freeWheelAdserverVideo",