prebid.js 5.18.0 → 6.1.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 (150) hide show
  1. package/.babelrc.js +1 -10
  2. package/README.md +3 -1
  3. package/browsers.json +1 -8
  4. package/gulpfile.js +1 -0
  5. package/integrationExamples/gpt/akamaidap_segments_example.html +132 -0
  6. package/modules/.submodules.json +1 -0
  7. package/modules/adfBidAdapter.js +21 -16
  8. package/modules/adheseBidAdapter.js +7 -2
  9. package/modules/adkernelBidAdapter.js +1 -0
  10. package/modules/adlivetechBidAdapter.md +61 -0
  11. package/modules/adomikAnalyticsAdapter.js +10 -4
  12. package/modules/adtelligentBidAdapter.js +2 -1
  13. package/modules/airgridRtdProvider.js +1 -1
  14. package/modules/akamaiDapRtdProvider.js +474 -0
  15. package/modules/akamaiDapRtdProvider.md +47 -0
  16. package/modules/appnexusBidAdapter.js +9 -3
  17. package/modules/atsAnalyticsAdapter.js +67 -46
  18. package/modules/atsAnalyticsAdapter.md +1 -0
  19. package/modules/betweenBidAdapter.js +20 -3
  20. package/modules/browsiRtdProvider.js +106 -18
  21. package/modules/cleanioRtdProvider.js +192 -0
  22. package/modules/cleanioRtdProvider.md +59 -0
  23. package/modules/codefuelBidAdapter.js +181 -0
  24. package/modules/codefuelBidAdapter.md +111 -0
  25. package/modules/connectIdSystem.js +104 -0
  26. package/modules/connectIdSystem.md +33 -0
  27. package/modules/datablocksBidAdapter.js +3 -3
  28. package/modules/deepintentBidAdapter.js +107 -10
  29. package/modules/deepintentBidAdapter.md +36 -1
  30. package/modules/deltaprojectsBidAdapter.js +252 -0
  31. package/modules/deltaprojectsBidAdapter.md +32 -0
  32. package/modules/engageyaBidAdapter.js +171 -0
  33. package/modules/glimpseBidAdapter.js +31 -16
  34. package/modules/gptPreAuction.js +11 -5
  35. package/modules/gridBidAdapter.js +1 -0
  36. package/modules/gumgumBidAdapter.js +8 -0
  37. package/modules/id5IdSystem.md +6 -6
  38. package/modules/imRtdProvider.js +31 -0
  39. package/modules/inskinBidAdapter.js +7 -3
  40. package/modules/ixBidAdapter.js +174 -22
  41. package/modules/jixieBidAdapter.js +8 -2
  42. package/modules/justpremiumBidAdapter.js +6 -1
  43. package/modules/limelightDigitalBidAdapter.js +22 -2
  44. package/modules/livewrappedAnalyticsAdapter.js +49 -1
  45. package/modules/merkleIdSystem.js +5 -0
  46. package/modules/multibid/index.js +3 -3
  47. package/modules/nativoBidAdapter.js +32 -2
  48. package/modules/nextMillenniumBidAdapter.js +12 -3
  49. package/modules/oguryBidAdapter.js +16 -2
  50. package/modules/openxBidAdapter.js +40 -23
  51. package/modules/operaadsBidAdapter.js +21 -1
  52. package/modules/otmBidAdapter.js +146 -0
  53. package/modules/otmBidAdapter.md +27 -26
  54. package/modules/outbrainBidAdapter.js +5 -0
  55. package/modules/playwireBidAdapter.md +61 -0
  56. package/modules/prebidServerBidAdapter/index.js +3 -3
  57. package/modules/publinkIdSystem.js +11 -6
  58. package/modules/pubmaticBidAdapter.js +2 -0
  59. package/modules/rtdModule/index.js +2 -2
  60. package/modules/saambaaBidAdapter.js +420 -0
  61. package/modules/saambaaBidAdapter.md +65 -68
  62. package/modules/seedtagBidAdapter.js +6 -0
  63. package/modules/smaatoBidAdapter.js +6 -1
  64. package/modules/sonobiBidAdapter.js +7 -0
  65. package/modules/sortableBidAdapter.js +1 -0
  66. package/modules/sspBCBidAdapter.js +34 -3
  67. package/modules/teadsBidAdapter.js +3 -0
  68. package/modules/tripleliftBidAdapter.js +22 -5
  69. package/modules/trustxBidAdapter.js +18 -7
  70. package/modules/undertoneBidAdapter.js +9 -5
  71. package/modules/undertoneBidAdapter.md +5 -1
  72. package/modules/userId/eids.js +18 -0
  73. package/modules/userId/eids.md +7 -0
  74. package/modules/userId/userId.md +12 -0
  75. package/modules/ventesBidAdapter.js +370 -0
  76. package/modules/ventesBidAdapter.md +94 -0
  77. package/modules/videobyteBidAdapter.js +13 -6
  78. package/modules/videobyteBidAdapter.md +49 -0
  79. package/modules/vidoomyBidAdapter.js +51 -100
  80. package/modules/visxBidAdapter.js +1 -1
  81. package/modules/yahoosspBidAdapter.js +6 -6
  82. package/modules/yieldlabBidAdapter.js +41 -10
  83. package/modules/yieldlabBidAdapter.md +91 -48
  84. package/modules/yieldmoSyntheticInventoryModule.js +46 -0
  85. package/modules/yieldmoSyntheticInventoryModule.md +68 -0
  86. package/package.json +6 -1
  87. package/src/adapterManager.js +19 -8
  88. package/src/adapters/bidderFactory.js +4 -3
  89. package/src/auction.js +11 -11
  90. package/src/constants.json +1 -0
  91. package/src/secureCreatives.js +6 -7
  92. package/src/targeting.js +11 -9
  93. package/test/spec/modules/adfBidAdapter_spec.js +83 -29
  94. package/test/spec/modules/adheseBidAdapter_spec.js +27 -1
  95. package/test/spec/modules/adomikAnalyticsAdapter_spec.js +3 -1
  96. package/test/spec/modules/adtelligentBidAdapter_spec.js +1 -0
  97. package/test/spec/modules/akamaiDapRtdProvider_spec.js +246 -0
  98. package/test/spec/modules/appnexusBidAdapter_spec.js +16 -1
  99. package/test/spec/modules/atsAnalyticsAdapter_spec.js +42 -9
  100. package/test/spec/modules/betweenBidAdapter_spec.js +41 -0
  101. package/test/spec/modules/browsiRtdProvider_spec.js +62 -7
  102. package/test/spec/modules/cleanioRtdProvider_spec.js +188 -0
  103. package/test/spec/modules/codefuelBidAdapter_spec.js +316 -0
  104. package/test/spec/modules/connectIdSystem_spec.js +189 -0
  105. package/test/spec/modules/datablocksBidAdapter_spec.js +3 -3
  106. package/test/spec/modules/deepintentBidAdapter_spec.js +153 -3
  107. package/test/spec/modules/deltaprojectsBidAdapter_spec.js +399 -0
  108. package/test/spec/modules/engageyaBidAdapter_spec.js +422 -0
  109. package/test/spec/modules/eplanningBidAdapter_spec.js +8 -8
  110. package/test/spec/modules/glimpseBidAdapter_spec.js +33 -0
  111. package/test/spec/modules/gptPreAuction_spec.js +58 -4
  112. package/test/spec/modules/gumgumBidAdapter_spec.js +5 -1
  113. package/test/spec/modules/imRtdProvider_spec.js +25 -0
  114. package/test/spec/modules/ixBidAdapter_spec.js +298 -5
  115. package/test/spec/modules/jixieBidAdapter_spec.js +13 -11
  116. package/test/spec/modules/justpremiumBidAdapter_spec.js +9 -2
  117. package/test/spec/modules/konduitWrapper_spec.js +0 -1
  118. package/test/spec/modules/limelightDigitalBidAdapter_spec.js +155 -1
  119. package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +52 -7
  120. package/test/spec/modules/merkleIdSystem_spec.js +18 -0
  121. package/test/spec/modules/multibid_spec.js +31 -31
  122. package/test/spec/modules/nativoBidAdapter_spec.js +35 -18
  123. package/test/spec/modules/nextMillenniumBidAdapter_spec.js +13 -1
  124. package/test/spec/modules/oguryBidAdapter_spec.js +66 -23
  125. package/test/spec/modules/openxBidAdapter_spec.js +90 -13
  126. package/test/spec/modules/operaadsBidAdapter_spec.js +38 -6
  127. package/test/spec/modules/otmBidAdapter_spec.js +67 -0
  128. package/test/spec/modules/outbrainBidAdapter_spec.js +18 -0
  129. package/test/spec/modules/prebidServerBidAdapter_spec.js +19 -2
  130. package/test/spec/modules/publinkIdSystem_spec.js +6 -6
  131. package/test/spec/modules/seedtagBidAdapter_spec.js +3 -0
  132. package/test/spec/modules/smaatoBidAdapter_spec.js +30 -0
  133. package/test/spec/modules/sonobiBidAdapter_spec.js +34 -1
  134. package/test/spec/modules/sortableBidAdapter_spec.js +11 -0
  135. package/test/spec/modules/sspBCBidAdapter_spec.js +33 -3
  136. package/test/spec/modules/teadsBidAdapter_spec.js +132 -0
  137. package/test/spec/modules/tripleliftBidAdapter_spec.js +128 -0
  138. package/test/spec/modules/trustxBidAdapter_spec.js +45 -3
  139. package/test/spec/modules/undertoneBidAdapter_spec.js +52 -0
  140. package/test/spec/modules/ventesBidAdapter_spec.js +845 -0
  141. package/test/spec/modules/videobyteBidAdapter_spec.js +2 -2
  142. package/test/spec/modules/vidoomyBidAdapter_spec.js +32 -13
  143. package/test/spec/modules/visxBidAdapter_spec.js +1 -1
  144. package/test/spec/modules/yieldlabBidAdapter_spec.js +81 -0
  145. package/test/spec/modules/yieldmoSyntheticInventoryModule_spec.js +89 -0
  146. package/test/spec/unit/core/adapterManager_spec.js +56 -6
  147. package/test/spec/unit/core/bidderFactory_spec.js +61 -1
  148. package/test/spec/unit/pbjs_api_spec.js +37 -2
  149. package/test/spec/unit/secureCreatives_spec.js +54 -25
  150. package/wdio.conf.js +1 -1
@@ -13,6 +13,11 @@ const ALLOWED_PLACEMENTS = {
13
13
  banner: true,
14
14
  video: true
15
15
  }
16
+
17
+ // Global Vendor List Id
18
+ // https://iabeurope.eu/vendor-list-tcf-v2-0/
19
+ const GVLID = 157;
20
+
16
21
  const mediaTypesMap = {
17
22
  [BANNER]: 'display',
18
23
  [VIDEO]: 'video'
@@ -158,6 +163,7 @@ export function getTimeoutUrl (data) {
158
163
 
159
164
  export const spec = {
160
165
  code: BIDDER_CODE,
166
+ gvlid: GVLID,
161
167
  aliases: [SEEDTAG_ALIAS],
162
168
  supportedMediaTypes: [BANNER, VIDEO],
163
169
  /**
@@ -5,7 +5,7 @@ import {ADPOD, BANNER, VIDEO} from '../src/mediaTypes.js';
5
5
 
6
6
  const BIDDER_CODE = 'smaato';
7
7
  const SMAATO_ENDPOINT = 'https://prebid.ad.smaato.net/oapi/prebid';
8
- const SMAATO_CLIENT = 'prebid_js_$prebid.version$_1.4'
8
+ const SMAATO_CLIENT = 'prebid_js_$prebid.version$_1.5'
9
9
  const CURRENCY = 'USD';
10
10
 
11
11
  const buildOpenRtbBidRequest = (bidRequest, bidderRequest) => {
@@ -37,6 +37,11 @@ const buildOpenRtbBidRequest = (bidRequest, bidderRequest) => {
37
37
  user: {
38
38
  ext: {}
39
39
  },
40
+ source: {
41
+ ext: {
42
+ schain: bidRequest.schain
43
+ }
44
+ },
40
45
  ext: {
41
46
  client: SMAATO_CLIENT
42
47
  }
@@ -83,8 +83,15 @@ export const spec = {
83
83
  'lib_name': 'prebid',
84
84
  'lib_v': '$prebid.version$',
85
85
  'us': 0,
86
+
86
87
  };
87
88
 
89
+ const fpd = config.getConfig('ortb2');
90
+
91
+ if (fpd) {
92
+ payload.fpd = JSON.stringify(fpd);
93
+ }
94
+
88
95
  if (config.getConfig('userSync') && config.getConfig('userSync').syncsPerBidder) {
89
96
  payload.us = config.getConfig('userSync').syncsPerBidder;
90
97
  }
@@ -227,6 +227,7 @@ export const spec = {
227
227
  rv.ext[partner] = params;
228
228
  });
229
229
  }
230
+ rv.ext.gpid = deepAccess(bid, 'ortb2Imp.ext.data.pbadslot');
230
231
  return rv;
231
232
  });
232
233
  const gdprConsent = bidderRequest && bidderRequest.gdprConsent;
@@ -9,11 +9,13 @@ const BIDDER_URL = 'https://ssp.wp.pl/bidder/';
9
9
  const SYNC_URL = 'https://ssp.wp.pl/bidder/usersync';
10
10
  const NOTIFY_URL = 'https://ssp.wp.pl/bidder/notify';
11
11
  const TMAX = 450;
12
- const BIDDER_VERSION = '5.2';
12
+ const BIDDER_VERSION = '5.3';
13
13
  const W = window;
14
14
  const { navigator } = W;
15
15
  const oneCodeDetection = {};
16
+ const adUnitsCalled = {};
16
17
  const adSizesCalled = {};
18
+ const pageView = {};
17
19
  var consentApiVersion;
18
20
 
19
21
  /**
@@ -70,6 +72,7 @@ const cookieSupport = () => {
70
72
  };
71
73
 
72
74
  const applyClientHints = ortbRequest => {
75
+ const { location } = document;
73
76
  const { connection = {}, deviceMemory, userAgentData = {} } = navigator;
74
77
  const viewport = W.visualViewport || false;
75
78
  const segments = [];
@@ -85,6 +88,16 @@ const applyClientHints = ortbRequest => {
85
88
  'CH-isMobile': userAgentData.mobile,
86
89
  };
87
90
 
91
+ /**
92
+ Check / generate page view id
93
+ Should be generated dureing first call to applyClientHints(),
94
+ and re-generated if pathname has changed
95
+ */
96
+ if (!pageView.id || location.pathname !== pageView.path) {
97
+ pageView.path = location.pathname;
98
+ pageView.id = Math.floor(1E20 * Math.random());
99
+ }
100
+
88
101
  Object.keys(hints).forEach(key => {
89
102
  const hint = hints[key];
90
103
 
@@ -100,6 +113,14 @@ const applyClientHints = ortbRequest => {
100
113
  id: '12',
101
114
  name: 'NetInfo',
102
115
  segment: segments,
116
+ }, {
117
+ id: '7',
118
+ name: 'pvid',
119
+ segment: [
120
+ {
121
+ value: `${pageView.id}`
122
+ }
123
+ ]
103
124
  }];
104
125
 
105
126
  ortbRequest.user = Object.assign(ortbRequest.user, { data });
@@ -129,6 +150,7 @@ const setOnAny = (collection, key) => collection.reduce((prev, next) => prev ||
129
150
  */
130
151
  const sendNotification = payload => {
131
152
  ajax(NOTIFY_URL, null, JSON.stringify(payload), {
153
+ contentType: 'application/json',
132
154
  withCredentials: false,
133
155
  method: 'POST',
134
156
  crossOrigin: true
@@ -267,8 +289,14 @@ const mapImpression = slot => {
267
289
  send this info as ext.pbsize
268
290
  */
269
291
  const slotSize = slot.sizes.length ? slot.sizes.reduce((prev, next) => prev[0] * prev[1] <= next[0] * next[1] ? next : prev).join('x') : '1x1';
270
- adSizesCalled[slotSize] = adSizesCalled[slotSize] ? adSizesCalled[slotSize] += 1 : 1;
271
- ext.data = Object.assign({ pbsize: `${slotSize}_${adSizesCalled[slotSize]}` }, ext.data);
292
+
293
+ if (!adUnitsCalled[adUnitCode]) {
294
+ // this is a new adunit - assign & save pbsize
295
+ adSizesCalled[slotSize] = adSizesCalled[slotSize] ? adSizesCalled[slotSize] += 1 : 1;
296
+ adUnitsCalled[adUnitCode] = `${slotSize}_${adSizesCalled[slotSize]}`
297
+ }
298
+
299
+ ext.data = Object.assign({ pbsize: adUnitsCalled[adUnitCode] }, ext.data);
272
300
 
273
301
  const imp = {
274
302
  id: id && siteId ? id : 'bidid-' + bidId,
@@ -325,6 +353,9 @@ const parseNative = nativeData => {
325
353
  case 0:
326
354
  result.title = asset.title.text;
327
355
  break;
356
+ case 1:
357
+ result.cta = asset.data.value;
358
+ break;
328
359
  case 2:
329
360
  result.icon = {
330
361
  url: asset.img.url,
@@ -190,6 +190,8 @@ function buildRequestObject(bid) {
190
190
  const reqObj = {};
191
191
  let placementId = getValue(bid.params, 'placementId');
192
192
  let pageId = getValue(bid.params, 'pageId');
193
+ const impressionData = deepAccess(bid, 'ortb2Imp.ext.data');
194
+ const gpid = deepAccess(impressionData, 'pbadslot') || deepAccess(impressionData, 'adserver.adslot');
193
195
 
194
196
  reqObj.sizes = getSizes(bid);
195
197
  reqObj.bidId = getBidIdParameter('bidId', bid);
@@ -199,6 +201,7 @@ function buildRequestObject(bid) {
199
201
  reqObj.adUnitCode = getBidIdParameter('adUnitCode', bid);
200
202
  reqObj.auctionId = getBidIdParameter('auctionId', bid);
201
203
  reqObj.transactionId = getBidIdParameter('transactionId', bid);
204
+ if (gpid) { reqObj.gpid = gpid; }
202
205
  return reqObj;
203
206
  }
204
207
 
@@ -1,4 +1,4 @@
1
- import { tryAppendQueryString, logMessage, isEmpty } from '../src/utils.js';
1
+ import { tryAppendQueryString, logMessage, isEmpty, isStr, isPlainObject, isArray, logWarn } from '../src/utils.js';
2
2
  import { BANNER, VIDEO } from '../src/mediaTypes.js';
3
3
  import { registerBidder } from '../src/adapters/bidderFactory.js';
4
4
  import { config } from '../src/config.js';
@@ -262,19 +262,36 @@ function getPubCommonEids(bidRequest) {
262
262
  function getEids(bidRequest, type, source, rtiPartner) {
263
263
  return bidRequest
264
264
  .map(getUserId(type)) // bids -> userIds of a certain type
265
- .filter((x) => !!x) // filter out null userIds
265
+ .filter(filterEids(type)) // filter out unqualified userIds
266
266
  .map(formatEid(source, rtiPartner)); // userIds -> eid objects
267
267
  }
268
268
 
269
+ const filterEids = type => (userId, i, arr) => {
270
+ let isValidUserId =
271
+ !!userId && // is not null nor empty
272
+ (isStr(userId)
273
+ ? !!userId
274
+ : isPlainObject(userId) && // or, is object
275
+ !isArray(userId) && // not an array
276
+ !isEmpty(userId) && // is not empty
277
+ userId.id && // contains nested id field
278
+ isStr(userId.id) && // nested id field is a string
279
+ !!userId.id); // that is not empty
280
+ if (!isValidUserId && arr[0] !== undefined) {
281
+ logWarn(`Triplelift: invalid ${type} userId format`);
282
+ }
283
+ return isValidUserId;
284
+ };
285
+
269
286
  function getUserId(type) {
270
- return (bid) => (bid && bid.userId && bid.userId[type]);
287
+ return bid => bid && bid.userId && bid.userId[type];
271
288
  }
272
289
 
273
290
  function formatEid(source, rtiPartner) {
274
- return (id) => ({
291
+ return (userId) => ({
275
292
  source,
276
293
  uids: [{
277
- id,
294
+ id: userId.id ? userId.id : userId,
278
295
  ext: { rtiPartner }
279
296
  }]
280
297
  });
@@ -76,7 +76,7 @@ export const spec = {
76
76
  if (!userIdAsEids) {
77
77
  userIdAsEids = bid.userIdAsEids;
78
78
  }
79
- const {params: {uid, keywords}, mediaTypes, bidId, adUnitCode, rtd} = bid;
79
+ const {params: {uid, keywords}, mediaTypes, bidId, adUnitCode, rtd, ortb2Imp} = bid;
80
80
  bidsMap[bidId] = bid;
81
81
  const bidFloor = _getFloor(mediaTypes || {}, bid);
82
82
  if (rtd) {
@@ -102,6 +102,15 @@ export const spec = {
102
102
  }
103
103
  };
104
104
 
105
+ if (ortb2Imp && ortb2Imp.ext && ortb2Imp.ext.data) {
106
+ impObj.ext.data = ortb2Imp.ext.data;
107
+ if (impObj.ext.data.adserver && impObj.ext.data.adserver.adslot) {
108
+ impObj.ext.gpid = impObj.ext.data.adserver.adslot.toString();
109
+ } else {
110
+ impObj.ext.gpid = ortb2Imp.ext.data.pbadslot && ortb2Imp.ext.data.pbadslot.toString();
111
+ }
112
+ }
113
+
105
114
  if (!isEmpty(keywords)) {
106
115
  if (!pageKeywords) {
107
116
  pageKeywords = keywords;
@@ -429,9 +438,10 @@ function addSegments(name, segName, segments, data, bidConfigName) {
429
438
  if (segments && segments.length) {
430
439
  data.push({
431
440
  name: name,
432
- segment: segments.map((seg) => {
433
- return {name: segName, value: seg};
434
- })
441
+ segment: segments
442
+ .map((seg) => seg && (seg.id || seg))
443
+ .filter((seg) => seg && (typeof seg === 'string' || typeof seg === 'number'))
444
+ .map((seg) => ({ name: segName, value: seg.toString() }))
435
445
  });
436
446
  } else if (bidConfigName) {
437
447
  const configData = config.getConfig('ortb2.user.data');
@@ -445,9 +455,10 @@ function addSegments(name, segName, segments, data, bidConfigName) {
445
455
  if (segData && segData.length) {
446
456
  data.push({
447
457
  name: name,
448
- segment: segData.map((seg) => {
449
- return {name: segName, value: seg};
450
- })
458
+ segment: segData
459
+ .map((seg) => seg && (seg.id || seg))
460
+ .filter((seg) => seg && (typeof seg === 'string' || typeof seg === 'number'))
461
+ .map((seg) => ({ name: segName, value: seg.toString() }))
451
462
  });
452
463
  }
453
464
  }
@@ -85,13 +85,17 @@ export const spec = {
85
85
  const vw = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
86
86
  const vh = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
87
87
  const pageSizeArray = vw == 0 || vh == 0 ? null : [vw, vh];
88
+ const commons = {
89
+ 'adapterVersion': '$prebid.version$',
90
+ 'uids': validBidRequests[0].userId,
91
+ 'pageSize': pageSizeArray
92
+ };
93
+ if (validBidRequests[0].schain) {
94
+ commons.schain = validBidRequests[0].schain;
95
+ }
88
96
  const payload = {
89
97
  'x-ut-hb-params': [],
90
- 'commons': {
91
- 'adapterVersion': '$prebid.version$',
92
- 'uids': validBidRequests[0].userId,
93
- 'pageSize': pageSizeArray
94
- }
98
+ 'commons': commons
95
99
  };
96
100
  const referer = bidderRequest.refererInfo.referer;
97
101
  const hostname = parseUrl(referer).hostname;
@@ -1,9 +1,13 @@
1
1
  # Overview
2
2
 
3
3
  ```
4
- Module Name: Example Bidder Adapter
4
+ Module Name: Undertone Bidder Adapter
5
5
  Module Type: Bidder Adapter
6
6
  Maintainer: RampProgrammatic@perion.com
7
+ gdpr_supported: true
8
+ usp_supported: true
9
+ schain_supported: true
10
+ media_types: video, native
7
11
  ```
8
12
  # Description
9
13
 
@@ -181,15 +181,18 @@ const USER_IDS_CONFIG = {
181
181
  source: 'neustar.biz',
182
182
  atype: 1
183
183
  },
184
+
184
185
  // MediaWallah OpenLink
185
186
  'mwOpenLinkId': {
186
187
  source: 'mediawallahscript.com',
187
188
  atype: 1
188
189
  },
190
+
189
191
  'tapadId': {
190
192
  source: 'tapad.com',
191
193
  atype: 1
192
194
  },
195
+
193
196
  // Novatiq Snowflake
194
197
  'novatiq': {
195
198
  getValue: function(data) {
@@ -198,6 +201,7 @@ const USER_IDS_CONFIG = {
198
201
  source: 'novatiq.com',
199
202
  atype: 1
200
203
  },
204
+
201
205
  'uid2': {
202
206
  source: 'uidapi.com',
203
207
  atype: 3,
@@ -205,40 +209,54 @@ const USER_IDS_CONFIG = {
205
209
  return data.id;
206
210
  }
207
211
  },
212
+
208
213
  // Akamai Data Activation Platform (DAP)
209
214
  'dapId': {
210
215
  source: 'akamai.com',
211
216
  atype: 1
212
217
  },
218
+
213
219
  'deepintentId': {
214
220
  source: 'deepintent.com',
215
221
  atype: 3
216
222
  },
223
+
217
224
  // Admixer Id
218
225
  'admixerId': {
219
226
  source: 'admixer.net',
220
227
  atype: 3
221
228
  },
229
+
222
230
  // Adtelligent Id
223
231
  'adtelligentId': {
224
232
  source: 'adtelligent.com',
225
233
  atype: 3
226
234
  },
235
+
227
236
  amxId: {
228
237
  source: 'amxrtb.com',
229
238
  atype: 1,
230
239
  },
240
+
231
241
  'publinkId': {
232
242
  source: 'epsilon.com',
233
243
  atype: 3
234
244
  },
245
+
235
246
  'kpuid': {
236
247
  source: 'kpuid.com',
237
248
  atype: 3
238
249
  },
250
+
239
251
  'imuid': {
240
252
  source: 'intimatemerger.com',
241
253
  atype: 1
254
+ },
255
+
256
+ // Yahoo ConnectID
257
+ 'connectId': {
258
+ source: 'yahoo.com',
259
+ atype: 3
242
260
  }
243
261
  };
244
262
 
@@ -210,6 +210,13 @@ userIdAsEids = [
210
210
  id: 'some-random-id-value',
211
211
  atype: 3
212
212
  }]
213
+ },
214
+ {
215
+ source: 'yahoo.com',
216
+ uids: [{
217
+ id: 'some-random-id-value',
218
+ atype: 3
219
+ }]
213
220
  }
214
221
  ]
215
222
  ```
@@ -285,6 +285,18 @@ pbjs.setConfig({
285
285
  params: {
286
286
  cid: 5126 // Set your Intimate Merger Customer ID here for production
287
287
  }
288
+ },
289
+ {
290
+ name: 'connectId',
291
+ params: {
292
+ pixelId: 58776,
293
+ he: '0bef996248d63cea1529cb86de31e9547a712d9f380146e98bbd39beec70355a'
294
+ },
295
+ storage: {
296
+ name: 'connectId',
297
+ type: 'html5',
298
+ expires: 15
299
+ }
288
300
  }],
289
301
  syncDelay: 5000
290
302
  }