prebid.js 7.19.0 → 7.20.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 (237) hide show
  1. package/dist/33acrossBidAdapter.js +1 -1
  2. package/dist/33acrossIdSystem.js +1 -1
  3. package/dist/adWMGAnalyticsAdapter.js +1 -1
  4. package/dist/adagioAnalyticsAdapter.js +1 -1
  5. package/dist/adagioBidAdapter.js +1 -1
  6. package/dist/adbookpspBidAdapter.js +1 -1
  7. package/dist/adgenerationBidAdapter.js +1 -1
  8. package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
  9. package/dist/adkernelBidAdapter.js +1 -1
  10. package/dist/adlooxAdServerVideo.js +1 -1
  11. package/dist/adlooxAnalyticsAdapter.js +1 -1
  12. package/dist/adlooxRtdProvider.js +1 -1
  13. package/dist/adomikAnalyticsAdapter.js +1 -1
  14. package/dist/adrelevantisBidAdapter.js +1 -1
  15. package/dist/adtrgtmeBidAdapter.js +1 -1
  16. package/dist/adxcgAnalyticsAdapter.js +1 -1
  17. package/dist/adxcgBidAdapter.js +1 -1
  18. package/dist/adxpremiumAnalyticsAdapter.js +1 -1
  19. package/dist/ajaBidAdapter.js +1 -1
  20. package/dist/amxBidAdapter.js +1 -1
  21. package/dist/amxIdSystem.js +1 -1
  22. package/dist/aolBidAdapter.js +1 -1
  23. package/dist/appierAnalyticsAdapter.js +1 -1
  24. package/dist/appnexusBidAdapter.js +1 -1
  25. package/dist/asoBidAdapter.js +1 -1
  26. package/dist/atsAnalyticsAdapter.js +1 -1
  27. package/dist/axonixBidAdapter.js +1 -1
  28. package/dist/bidViewability.js +1 -1
  29. package/dist/bidglassBidAdapter.js +1 -1
  30. package/dist/bidwatchAnalyticsAdapter.js +1 -1
  31. package/dist/big-richmediaBidAdapter.js +1 -1
  32. package/dist/bridgewellBidAdapter.js +1 -1
  33. package/dist/brightMountainMediaBidAdapter.js +1 -1
  34. package/dist/byDataAnalyticsAdapter.js +1 -1
  35. package/dist/carodaBidAdapter.js +1 -1
  36. package/dist/categoryTranslation.js +1 -1
  37. package/dist/concertAnalyticsAdapter.js +1 -1
  38. package/dist/concertBidAdapter.js +1 -1
  39. package/dist/connectIdSystem.js +1 -1
  40. package/dist/connectadBidAdapter.js +1 -1
  41. package/dist/consentManagement.js +1 -1
  42. package/dist/consentManagementUsp.js +1 -1
  43. package/dist/consumableBidAdapter.js +1 -1
  44. package/dist/conversantAnalyticsAdapter.js +1 -1
  45. package/dist/conversantBidAdapter.js +1 -1
  46. package/dist/craftBidAdapter.js +1 -1
  47. package/dist/criteoBidAdapter.js +1 -1
  48. package/dist/currency.js +1 -1
  49. package/dist/datablocksAnalyticsAdapter.js +1 -1
  50. package/dist/dchain.js +1 -1
  51. package/dist/debugging-standalone.js +1 -1
  52. package/dist/debugging.js +1 -1
  53. package/dist/dependencies.json +3 -0
  54. package/dist/dfpAdServerVideo.js +1 -1
  55. package/dist/dspxBidAdapter.js +1 -1
  56. package/dist/eplanningAnalyticsAdapter.js +1 -1
  57. package/dist/eplanningBidAdapter.js +1 -1
  58. package/dist/finativeBidAdapter.js +1 -1
  59. package/dist/fintezaAnalyticsAdapter.js +1 -1
  60. package/dist/ftrackIdSystem.js +1 -1
  61. package/dist/gdprEnforcement.js +1 -1
  62. package/dist/glimpseBidAdapter.js +1 -1
  63. package/dist/gmosspBidAdapter.js +1 -1
  64. package/dist/goldbachBidAdapter.js +1 -1
  65. package/dist/googleAnalyticsAdapter.js +1 -1
  66. package/dist/gridBidAdapter.js +1 -1
  67. package/dist/gridNMBidAdapter.js +1 -1
  68. package/dist/gumgumBidAdapter.js +1 -1
  69. package/dist/h12mediaBidAdapter.js +1 -1
  70. package/dist/hadronAnalyticsAdapter.js +1 -1
  71. package/dist/id5AnalyticsAdapter.js +1 -1
  72. package/dist/id5IdSystem.js +1 -1
  73. package/dist/improvedigitalBidAdapter.js +1 -1
  74. package/dist/inmarBidAdapter.js +1 -1
  75. package/dist/insticatorBidAdapter.js +1 -1
  76. package/dist/invisiblyAnalyticsAdapter.js +1 -1
  77. package/dist/ixBidAdapter.js +1 -1
  78. package/dist/justpremiumBidAdapter.js +1 -1
  79. package/dist/kargoAnalyticsAdapter.js +1 -1
  80. package/dist/kinessoIdSystem.js +1 -1
  81. package/dist/konduitAnalyticsAdapter.js +1 -1
  82. package/dist/kueezBidAdapter.js +1 -1
  83. package/dist/lassoBidAdapter.js +1 -1
  84. package/dist/lifestreetBidAdapter.js +1 -1
  85. package/dist/liveIntentAnalyticsAdapter.js +1 -1
  86. package/dist/liveIntentIdSystem.js +1 -1
  87. package/dist/livewrappedAnalyticsAdapter.js +1 -1
  88. package/dist/liveyieldAnalyticsAdapter.js +1 -1
  89. package/dist/logicadBidAdapter.js +1 -1
  90. package/dist/loglyliftBidAdapter.js +1 -1
  91. package/dist/lotamePanoramaIdSystem.js +1 -1
  92. package/dist/magniteAnalyticsAdapter.js +1 -0
  93. package/dist/malltvAnalyticsAdapter.js +1 -1
  94. package/dist/marsmediaAnalyticsAdapter.js +1 -1
  95. package/dist/marsmediaBidAdapter.js +1 -1
  96. package/dist/mass.js +1 -1
  97. package/dist/mediafuseBidAdapter.js +1 -1
  98. package/dist/medianetAnalyticsAdapter.js +1 -1
  99. package/dist/mediasquareBidAdapter.js +1 -1
  100. package/dist/mgidBidAdapter.js +1 -1
  101. package/dist/minutemediaBidAdapter.js +1 -1
  102. package/dist/multibid.js +1 -1
  103. package/dist/not-for-prod/prebid.js +186 -184
  104. package/dist/oguryBidAdapter.js +1 -1
  105. package/dist/onetagBidAdapter.js +1 -1
  106. package/dist/ooloAnalyticsAdapter.js +1 -1
  107. package/dist/openxAnalyticsAdapter.js +1 -1
  108. package/dist/optimonAnalyticsAdapter.js +1 -1
  109. package/dist/outbrainBidAdapter.js +1 -1
  110. package/dist/parrableIdSystem.js +1 -1
  111. package/dist/pianoDmpAnalyticsAdapter.js +1 -1
  112. package/dist/pixfutureBidAdapter.js +1 -1
  113. package/dist/prebid-core.js +2 -2
  114. package/dist/prebidServerBidAdapter.js +1 -1
  115. package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
  116. package/dist/priceFloors.js +1 -1
  117. package/dist/publinkIdSystem.js +1 -1
  118. package/dist/pubmaticAnalyticsAdapter.js +1 -1
  119. package/dist/pubmaticBidAdapter.js +1 -1
  120. package/dist/pubperfAnalyticsAdapter.js +1 -1
  121. package/dist/pubstackAnalyticsAdapter.js +1 -1
  122. package/dist/pubwiseAnalyticsAdapter.js +1 -1
  123. package/dist/pubxaiAnalyticsAdapter.js +1 -1
  124. package/dist/pulsepointAnalyticsAdapter.js +1 -1
  125. package/dist/pxyzBidAdapter.js +1 -1
  126. package/dist/quantcastBidAdapter.js +1 -1
  127. package/dist/quantcastIdSystem.js +1 -1
  128. package/dist/readpeakBidAdapter.js +1 -1
  129. package/dist/realvuAnalyticsAdapter.js +1 -1
  130. package/dist/relaidoBidAdapter.js +1 -1
  131. package/dist/relevantAnalyticsAdapter.js +1 -1
  132. package/dist/rhythmoneBidAdapter.js +1 -1
  133. package/dist/riseBidAdapter.js +1 -1
  134. package/dist/rivrAnalyticsAdapter.js +1 -1
  135. package/dist/roxotAnalyticsAdapter.js +1 -1
  136. package/dist/rtdModule.js +1 -1
  137. package/dist/rubiconAnalyticsAdapter.js +1 -1
  138. package/dist/rubiconBidAdapter.js +1 -1
  139. package/dist/s2sTesting.js +1 -1
  140. package/dist/scaleableAnalyticsAdapter.js +1 -1
  141. package/dist/schain.js +1 -1
  142. package/dist/seedingAllianceBidAdapter.js +1 -1
  143. package/dist/seedtagBidAdapter.js +1 -1
  144. package/dist/sharedIdSystem.js +1 -1
  145. package/dist/sharethroughAnalyticsAdapter.js +1 -1
  146. package/dist/sharethroughBidAdapter.js +1 -1
  147. package/dist/shinezBidAdapter.js +1 -1
  148. package/dist/sigmoidAnalyticsAdapter.js +1 -1
  149. package/dist/smaatoBidAdapter.js +1 -1
  150. package/dist/smartadserverBidAdapter.js +1 -1
  151. package/dist/smartxBidAdapter.js +1 -1
  152. package/dist/smilewantedBidAdapter.js +1 -1
  153. package/dist/sonobiAnalyticsAdapter.js +1 -1
  154. package/dist/sonobiBidAdapter.js +1 -1
  155. package/dist/sovrnAnalyticsAdapter.js +1 -1
  156. package/dist/sovrnBidAdapter.js +1 -1
  157. package/dist/sspBCBidAdapter.js +1 -1
  158. package/dist/staqAnalyticsAdapter.js +1 -1
  159. package/dist/sublimeBidAdapter.js +1 -1
  160. package/dist/synacormediaBidAdapter.js +1 -1
  161. package/dist/taboolaBidAdapter.js +1 -1
  162. package/dist/tapadIdSystem.js +1 -1
  163. package/dist/targetVideoBidAdapter.js +1 -1
  164. package/dist/teadsBidAdapter.js +1 -1
  165. package/dist/teadsIdSystem.js +1 -0
  166. package/dist/terceptAnalyticsAdapter.js +1 -1
  167. package/dist/trionBidAdapter.js +1 -1
  168. package/dist/tripleliftBidAdapter.js +1 -1
  169. package/dist/ttdBidAdapter.js +1 -1
  170. package/dist/ucfunnelAnalyticsAdapter.js +1 -1
  171. package/dist/underdogmediaBidAdapter.js +1 -1
  172. package/dist/undertoneBidAdapter.js +1 -1
  173. package/dist/userId.js +1 -1
  174. package/dist/vidazooBidAdapter.js +1 -1
  175. package/dist/videobyteBidAdapter.js +1 -1
  176. package/dist/visxBidAdapter.js +1 -1
  177. package/dist/vrtcalBidAdapter.js +1 -1
  178. package/dist/vuukleBidAdapter.js +1 -1
  179. package/dist/weboramaRtdProvider.js +1 -1
  180. package/dist/widespaceBidAdapter.js +1 -1
  181. package/dist/winrBidAdapter.js +1 -1
  182. package/dist/yahoosspBidAdapter.js +1 -1
  183. package/dist/yieldmoBidAdapter.js +1 -1
  184. package/dist/yieldoneAnalyticsAdapter.js +1 -1
  185. package/dist/yuktamediaAnalyticsAdapter.js +1 -1
  186. package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
  187. package/modules/.submodules.json +1 -0
  188. package/modules/adkernelBidAdapter.js +2 -2
  189. package/modules/aolBidAdapter.js +25 -2
  190. package/modules/appnexusBidAdapter.js +19 -2
  191. package/modules/categoryTranslation.js +4 -4
  192. package/modules/connectIdSystem.js +16 -1
  193. package/modules/currency.js +11 -11
  194. package/modules/dchain.js +2 -2
  195. package/modules/debugging/legacy.js +2 -2
  196. package/modules/eplanningBidAdapter.js +48 -2
  197. package/modules/lotamePanoramaIdSystem.js +10 -6
  198. package/modules/magniteAnalyticsAdapter.js +902 -0
  199. package/modules/magniteAnalyticsAdapter.md +18 -0
  200. package/modules/mass.js +2 -2
  201. package/modules/multibid/index.js +5 -5
  202. package/modules/pixfutureBidAdapter.js +46 -15
  203. package/modules/prebidServerBidAdapter/index.js +10 -6
  204. package/modules/priceFloors.js +8 -22
  205. package/modules/rubiconAnalyticsAdapter.js +14 -9
  206. package/modules/taboolaBidAdapter.js +4 -4
  207. package/modules/teadsIdSystem.js +234 -0
  208. package/modules/teadsIdSystem.md +22 -0
  209. package/modules/userId/index.js +21 -14
  210. package/modules/vrtcalBidAdapter.js +7 -1
  211. package/modules/yahoosspBidAdapter.js +1 -1
  212. package/package.json +1 -1
  213. package/src/adapters/bidderFactory.js +13 -11
  214. package/src/auction.js +140 -69
  215. package/src/constants.json +8 -0
  216. package/src/prebid.js +2 -3
  217. package/src/targeting.js +31 -14
  218. package/test/fixtures/fixtures.js +2 -1
  219. package/test/spec/auctionmanager_spec.js +109 -21
  220. package/test/spec/modules/aolBidAdapter_spec.js +42 -9
  221. package/test/spec/modules/appnexusBidAdapter_spec.js +24 -0
  222. package/test/spec/modules/connectIdSystem_spec.js +20 -0
  223. package/test/spec/modules/currency_spec.js +14 -6
  224. package/test/spec/modules/eplanningBidAdapter_spec.js +285 -1
  225. package/test/spec/modules/lotamePanoramaIdSystem_spec.js +0 -1
  226. package/test/spec/modules/magniteAnalyticsAdapter_spec.js +1942 -0
  227. package/test/spec/modules/prebidServerBidAdapter_spec.js +43 -11
  228. package/test/spec/modules/priceFloors_spec.js +5 -5
  229. package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +2 -3
  230. package/test/spec/modules/taboolaBidAdapter_spec.js +110 -11
  231. package/test/spec/modules/teadsIdSystem_spec.js +271 -0
  232. package/test/spec/modules/userId_spec.js +39 -4
  233. package/test/spec/modules/vrtcalBidAdapter_spec.js +12 -1
  234. package/test/spec/modules/yahoosspBidAdapter_spec.js +45 -0
  235. package/test/spec/unit/core/bidderFactory_spec.js +66 -11
  236. package/test/spec/unit/core/targeting_spec.js +28 -9
  237. package/test/spec/unit/pbjs_api_spec.js +4 -2
@@ -2,6 +2,7 @@ import {getWindowSelf, isEmpty, parseSizesInput, isGptPubadsDefined, isSlotMatch
2
2
  import {getGlobal} from '../src/prebidGlobal.js';
3
3
  import {registerBidder} from '../src/adapters/bidderFactory.js';
4
4
  import {getStorageManager} from '../src/storageManager.js';
5
+ import {BANNER, VIDEO} from '../src/mediaTypes.js';
5
6
 
6
7
  const BIDDER_CODE = 'eplanning';
7
8
  export const storage = getStorageManager({bidderCode: BIDDER_CODE});
@@ -19,9 +20,14 @@ const STORAGE_VIEW_PREFIX = 'pbvi_';
19
20
  const mobileUserAgent = isMobileUserAgent();
20
21
  const PRIORITY_ORDER_FOR_MOBILE_SIZES_ASC = ['1x1', '300x50', '320x50', '300x250'];
21
22
  const PRIORITY_ORDER_FOR_DESKTOP_SIZES_ASC = ['1x1', '970x90', '970x250', '160x600', '300x600', '728x90', '300x250'];
23
+ const VAST_INSTREAM = 1;
24
+ const VAST_OUTSTREAM = 2;
25
+ const VAST_VERSION_DEFAULT = 3;
26
+ const DEFAULT_SIZE_VAST = '640x480';
22
27
 
23
28
  export const spec = {
24
29
  code: BIDDER_CODE,
30
+ supportedMediaTypes: [BANNER, VIDEO],
25
31
 
26
32
  isBidRequestValid: function(bid) {
27
33
  return Boolean(bid.params.ci) || Boolean(bid.params.t);
@@ -86,6 +92,10 @@ export const spec = {
86
92
  params['e_' + id] = (typeof userIds[id] === 'object') ? encodeURIComponent(JSON.stringify(userIds[id])) : encodeURIComponent(userIds[id]);
87
93
  }
88
94
  }
95
+ if (spaces.impType) {
96
+ params.vctx = spaces.impType & VAST_INSTREAM ? VAST_INSTREAM : VAST_OUTSTREAM;
97
+ params.vv = VAST_VERSION_DEFAULT;
98
+ }
89
99
  }
90
100
 
91
101
  return {
@@ -108,7 +118,6 @@ export const spec = {
108
118
  cpm: ad.pr,
109
119
  width: ad.w,
110
120
  height: ad.h,
111
- ad: ad.adm,
112
121
  ttl: TTL,
113
122
  creativeId: ad.crid,
114
123
  netRevenue: NET_REVENUE,
@@ -119,6 +128,13 @@ export const spec = {
119
128
  advertiserDomains: ad.adom
120
129
  };
121
130
  }
131
+ if (isVastResponse(ad)) {
132
+ bidResponse.vastXml = ad.adm;
133
+ bidResponse.mediaTypes = VIDEO;
134
+ } else {
135
+ bidResponse.ad = ad.adm;
136
+ }
137
+
122
138
  bidResponses.push(bidResponse);
123
139
  });
124
140
  }
@@ -236,17 +252,42 @@ function getSpacesStruct(bids) {
236
252
  return e;
237
253
  }
238
254
 
255
+ function getFirstSizeVast(sizes) {
256
+ if (sizes == undefined || !Array.isArray(sizes)) {
257
+ return undefined;
258
+ }
259
+
260
+ let size = Array.isArray(sizes[0]) ? sizes[0] : sizes;
261
+
262
+ return (Array.isArray(size) && size.length == 2) ? size : undefined;
263
+ }
264
+
239
265
  function cleanName(name) {
240
266
  return name.replace(/_|\.|-|\//g, '').replace(/\)\(|\(|\)|:/g, '_').replace(/^_+|_+$/g, '');
241
267
  }
242
268
 
243
269
  function getSpaces(bidRequests, ml) {
270
+ let impType = bidRequests.reduce((previousBits, bid) => (bid.mediaTypes && bid.mediaTypes[VIDEO]) ? (bid.mediaTypes[VIDEO].context == 'outstream' ? (previousBits | 2) : (previousBits | 1)) : previousBits, 0);
271
+ // Only one type of auction is supported at a time
272
+ if (impType) {
273
+ bidRequests = bidRequests.filter((bid) => bid.mediaTypes && bid.mediaTypes[VIDEO] && (impType & VAST_INSTREAM ? (!bid.mediaTypes[VIDEO].context || bid.mediaTypes[VIDEO].context == 'instream') : (bid.mediaTypes[VIDEO].context == 'outstream')));
274
+ }
275
+
244
276
  let spacesStruct = getSpacesStruct(bidRequests);
245
- let es = {str: '', vs: '', map: {}};
277
+ let es = {str: '', vs: '', map: {}, impType: impType};
246
278
  es.str = Object.keys(spacesStruct).map(size => spacesStruct[size].map((bid, i) => {
247
279
  es.vs += getVs(bid);
248
280
 
249
281
  let name;
282
+
283
+ if (impType) {
284
+ let firstSize = getFirstSizeVast(bid.mediaTypes[VIDEO].playerSize);
285
+ let sizeVast = firstSize ? firstSize.join('x') : DEFAULT_SIZE_VAST;
286
+ name = 'video_' + sizeVast + '_' + i;
287
+ es.map[name] = bid.bidId;
288
+ return name + ':' + sizeVast + ';1';
289
+ }
290
+
250
291
  if (ml) {
251
292
  name = cleanName(bid.adUnitCode);
252
293
  } else {
@@ -462,4 +503,9 @@ function registerAuction(storageID) {
462
503
 
463
504
  return true;
464
505
  }
506
+
507
+ function isVastResponse(bid) {
508
+ return bid.adm.match(/^(<VAST)|(<VideoAdServingTemplate)/gmi);
509
+ }
510
+
465
511
  registerBidder(spec);
@@ -28,6 +28,7 @@ const DAYS_TO_CACHE = 7;
28
28
  const DAY_MS = 60 * 60 * 24 * 1000;
29
29
  const MISSING_CORE_CONSENT = 111;
30
30
  const GVLID = 95;
31
+ const ID_HOST = 'id.crwdcntrl.net';
31
32
 
32
33
  export const storage = getStorageManager({gvlid: GVLID, moduleName: MODULE_NAME});
33
34
  let cookieDomain;
@@ -57,12 +58,14 @@ function setProfileId(profileId) {
57
58
  * Get the Lotame profile id by checking cookies first and then local storage
58
59
  */
59
60
  function getProfileId() {
61
+ let profileId;
60
62
  if (storage.cookiesAreEnabled()) {
61
- return storage.getCookie(KEY_PROFILE, undefined);
63
+ profileId = storage.getCookie(KEY_PROFILE, undefined);
62
64
  }
63
- if (storage.hasLocalStorage()) {
64
- return storage.getDataFromLocalStorage(KEY_PROFILE, undefined);
65
+ if (!profileId && storage.hasLocalStorage()) {
66
+ profileId = storage.getDataFromLocalStorage(KEY_PROFILE, undefined);
65
67
  }
68
+ return profileId;
66
69
  }
67
70
 
68
71
  /**
@@ -78,10 +81,11 @@ function getFromStorage(key) {
78
81
  const storedValueExp = storage.getDataFromLocalStorage(
79
82
  `${key}_exp`, undefined
80
83
  );
81
- if (storedValueExp === '') {
84
+
85
+ if (storedValueExp === '' || storedValueExp === null) {
82
86
  value = storage.getDataFromLocalStorage(key, undefined);
83
87
  } else if (storedValueExp) {
84
- if ((new Date(storedValueExp)).getTime() - Date.now() > 0) {
88
+ if ((new Date(parseInt(storedValueExp, 10))).getTime() - Date.now() > 0) {
85
89
  value = storage.getDataFromLocalStorage(key, undefined);
86
90
  }
87
91
  }
@@ -284,7 +288,7 @@ export const lotamePanoramaIdSubmodule = {
284
288
 
285
289
  const url = buildUrl({
286
290
  protocol: 'https',
287
- host: `id.crwdcntrl.net`,
291
+ host: ID_HOST,
288
292
  pathname: '/id',
289
293
  search: isEmpty(queryParams) ? undefined : queryParams,
290
294
  });