prebid.js 8.3.0 → 8.4.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.
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/admanBidAdapter.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/brandmetricsRtdProvider.js +1 -1
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dependencies.json +3 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/kulturemediaBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +135 -135
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +2 -2
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pulsepointBidAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharedIdSystem.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stroeerCoreBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/topicsFpdModule.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/voxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yandexBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/integrationExamples/videoModule/jwplayer/bidMarkedAsUsed.html +1 -1
- package/integrationExamples/videoModule/jwplayer/eventListeners.html +2 -2
- package/integrationExamples/videoModule/jwplayer/eventsUI.html +1 -1
- package/integrationExamples/videoModule/jwplayer/gamAdServerMediation.html +1 -1
- package/integrationExamples/videoModule/jwplayer/mediaMetadata.html +1 -1
- package/integrationExamples/videoModule/jwplayer/playlist.html +1 -1
- package/integrationExamples/videoModule/videojs/bidMarkedAsUsed.html +1 -1
- package/integrationExamples/videoModule/videojs/bidRequestScheduling.html +1 -1
- package/integrationExamples/videoModule/videojs/eventListeners.html +1 -1
- package/integrationExamples/videoModule/videojs/eventsUI.html +1 -1
- package/integrationExamples/videoModule/videojs/gamAdServerMediation.html +1 -1
- package/integrationExamples/videoModule/videojs/mediaMetadata.html +1 -1
- package/integrationExamples/videoModule/videojs/playlist.html +1 -1
- package/modules/33acrossBidAdapter.js +24 -14
- package/modules/33acrossIdSystem.js +15 -4
- package/modules/adagioBidAdapter.js +0 -1
- package/modules/admanBidAdapter.js +4 -0
- package/modules/brandmetricsRtdProvider.js +36 -2
- package/modules/brandmetricsRtdProvider.md +17 -2
- package/modules/gdprEnforcement.js +27 -22
- package/modules/gridBidAdapter.js +19 -0
- package/modules/ixBidAdapter.js +40 -2
- package/modules/kargoBidAdapter.js +4 -0
- package/modules/minutemediaBidAdapter.js +17 -2
- package/modules/oguryBidAdapter.js +29 -16
- package/modules/pubmaticBidAdapter.js +16 -1
- package/modules/pulsepointBidAdapter.js +63 -424
- package/modules/pulsepointBidAdapter.md +39 -45
- package/modules/sharedIdSystem.js +1 -1
- package/modules/sovrnBidAdapter.js +5 -1
- package/modules/stroeerCoreBidAdapter.js +2 -3
- package/modules/teadsBidAdapter.js +2 -0
- package/modules/topicsFpdModule.js +4 -1
- package/modules/topicsFpdModule.md +4 -0
- package/modules/userId/index.js +2 -2
- package/modules/vidazooBidAdapter.js +5 -7
- package/modules/voxBidAdapter.js +16 -5
- package/modules/yahoosspBidAdapter.js +38 -33
- package/modules/yahoosspBidAdapter.md +96 -95
- package/modules/yandexBidAdapter.js +12 -15
- package/package.json +1 -1
- package/src/activities/redactor.js +1 -1
- package/src/auction.js +24 -2
- package/src/constants.json +3 -1
- package/src/fpd/sua.js +8 -2
- package/test/spec/auctionmanager_spec.js +29 -1
- package/test/spec/fpd/enrichment_spec.js +7 -1
- package/test/spec/fpd/sua_spec.js +12 -0
- package/test/spec/modules/33acrossBidAdapter_spec.js +188 -35
- package/test/spec/modules/33acrossIdSystem_spec.js +122 -27
- package/test/spec/modules/adagioBidAdapter_spec.js +0 -1
- package/test/spec/modules/brandmetricsRtdProvider_spec.js +69 -7
- package/test/spec/modules/gdprEnforcement_spec.js +43 -2
- package/test/spec/modules/gridBidAdapter_spec.js +42 -0
- package/test/spec/modules/ixBidAdapter_spec.js +72 -0
- package/test/spec/modules/kargoBidAdapter_spec.js +121 -106
- package/test/spec/modules/minutemediaBidAdapter_spec.js +36 -5
- package/test/spec/modules/oguryBidAdapter_spec.js +208 -108
- package/test/spec/modules/pubmaticBidAdapter_spec.js +119 -0
- package/test/spec/modules/pulsepointBidAdapter_spec.js +225 -486
- package/test/spec/modules/sovrnBidAdapter_spec.js +24 -4
- package/test/spec/modules/stroeerCoreBidAdapter_spec.js +8 -5
- package/test/spec/modules/teadsBidAdapter_spec.js +70 -21
- package/test/spec/modules/topicsFpdModule_spec.js +10 -4
- package/test/spec/modules/vidazooBidAdapter_spec.js +0 -5
- package/test/spec/modules/voxBidAdapter_spec.js +93 -0
- package/test/spec/modules/yahoosspBidAdapter_spec.js +402 -314
- package/test/spec/modules/yandexBidAdapter_spec.js +21 -3
- package/integrationExamples/gpt/inskin_example.html +0 -100
|
@@ -24,18 +24,19 @@ import {
|
|
|
24
24
|
import {registerActivityControl} from '../src/activities/rules.js';
|
|
25
25
|
import {
|
|
26
26
|
ACTIVITY_ACCESS_DEVICE,
|
|
27
|
-
ACTIVITY_ENRICH_EIDS,
|
|
27
|
+
ACTIVITY_ENRICH_EIDS, ACTIVITY_ENRICH_UFPD,
|
|
28
28
|
ACTIVITY_FETCH_BIDS,
|
|
29
29
|
ACTIVITY_REPORT_ANALYTICS,
|
|
30
|
-
ACTIVITY_SYNC_USER
|
|
30
|
+
ACTIVITY_SYNC_USER, ACTIVITY_TRANSMIT_UFPD
|
|
31
31
|
} from '../src/activities/activities.js';
|
|
32
32
|
|
|
33
33
|
export const STRICT_STORAGE_ENFORCEMENT = 'strictStorageEnforcement';
|
|
34
34
|
|
|
35
35
|
const TCF2 = {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
purpose1: {id: 1, name: 'storage'},
|
|
37
|
+
purpose2: {id: 2, name: 'basicAds'},
|
|
38
|
+
purpose4: {id: 4, name: 'personalizedAds'},
|
|
39
|
+
purpose7: {id: 7, name: 'measurement'},
|
|
39
40
|
};
|
|
40
41
|
|
|
41
42
|
/*
|
|
@@ -55,6 +56,7 @@ const DEFAULT_RULES = [{
|
|
|
55
56
|
|
|
56
57
|
export let purpose1Rule;
|
|
57
58
|
export let purpose2Rule;
|
|
59
|
+
export let purpose4Rule;
|
|
58
60
|
export let purpose7Rule;
|
|
59
61
|
|
|
60
62
|
export let enforcementRules;
|
|
@@ -62,6 +64,7 @@ export let enforcementRules;
|
|
|
62
64
|
const storageBlocked = new Set();
|
|
63
65
|
const biddersBlocked = new Set();
|
|
64
66
|
const analyticsBlocked = new Set();
|
|
67
|
+
const ufpdBlocked = new Set();
|
|
65
68
|
|
|
66
69
|
let hooksAdded = false;
|
|
67
70
|
let strictStorageEnforcement = false;
|
|
@@ -232,6 +235,8 @@ export const fetchBidsRule = ((rule) => {
|
|
|
232
235
|
|
|
233
236
|
export const reportAnalyticsRule = gdprRule(7, () => purpose7Rule, analyticsBlocked, (params) => getGvlidFromAnalyticsAdapter(params[ACTIVITY_PARAM_COMPONENT_NAME], params[ACTIVITY_PARAM_ANL_CONFIG]));
|
|
234
237
|
|
|
238
|
+
export const ufpdRule = gdprRule(4, () => purpose4Rule, ufpdBlocked);
|
|
239
|
+
|
|
235
240
|
/**
|
|
236
241
|
* Compiles the TCF2.0 enforcement results into an object, which is emitted as an event payload to "tcf2Enforcement" event.
|
|
237
242
|
*/
|
|
@@ -243,27 +248,20 @@ function emitTCF2FinalResults() {
|
|
|
243
248
|
const tcf2FinalResults = {
|
|
244
249
|
storageBlocked: formatSet(storageBlocked),
|
|
245
250
|
biddersBlocked: formatSet(biddersBlocked),
|
|
246
|
-
analyticsBlocked: formatSet(analyticsBlocked)
|
|
251
|
+
analyticsBlocked: formatSet(analyticsBlocked),
|
|
252
|
+
ufpdBlocked: formatSet(ufpdBlocked),
|
|
247
253
|
};
|
|
248
254
|
|
|
249
255
|
events.emit(CONSTANTS.EVENTS.TCF2_ENFORCEMENT, tcf2FinalResults);
|
|
250
|
-
[storageBlocked, biddersBlocked, analyticsBlocked].forEach(el => el.clear());
|
|
256
|
+
[storageBlocked, biddersBlocked, analyticsBlocked, ufpdBlocked].forEach(el => el.clear());
|
|
251
257
|
}
|
|
252
258
|
|
|
253
259
|
events.on(CONSTANTS.EVENTS.AUCTION_END, emitTCF2FinalResults);
|
|
254
260
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
return rule.purpose === TCF2.purpose1.name;
|
|
260
|
-
};
|
|
261
|
-
const hasPurpose2 = (rule) => {
|
|
262
|
-
return rule.purpose === TCF2.purpose2.name;
|
|
263
|
-
};
|
|
264
|
-
const hasPurpose7 = (rule) => {
|
|
265
|
-
return rule.purpose === TCF2.purpose7.name;
|
|
266
|
-
};
|
|
261
|
+
function hasPurpose(purposeNo) {
|
|
262
|
+
const pname = TCF2[`purpose${purposeNo}`].name;
|
|
263
|
+
return (rule) => rule.purpose === pname;
|
|
264
|
+
}
|
|
267
265
|
|
|
268
266
|
/**
|
|
269
267
|
* A configuration function that initializes some module variables, as well as adds hooks
|
|
@@ -279,9 +277,10 @@ export function setEnforcementConfig(config) {
|
|
|
279
277
|
}
|
|
280
278
|
strictStorageEnforcement = !!deepAccess(config, STRICT_STORAGE_ENFORCEMENT);
|
|
281
279
|
|
|
282
|
-
purpose1Rule = find(enforcementRules,
|
|
283
|
-
purpose2Rule = find(enforcementRules,
|
|
284
|
-
|
|
280
|
+
purpose1Rule = find(enforcementRules, hasPurpose(1));
|
|
281
|
+
purpose2Rule = find(enforcementRules, hasPurpose(2));
|
|
282
|
+
purpose4Rule = find(enforcementRules, hasPurpose(4))
|
|
283
|
+
purpose7Rule = find(enforcementRules, hasPurpose(7));
|
|
285
284
|
|
|
286
285
|
if (!purpose1Rule) {
|
|
287
286
|
purpose1Rule = DEFAULT_RULES[0];
|
|
@@ -301,6 +300,12 @@ export function setEnforcementConfig(config) {
|
|
|
301
300
|
if (purpose2Rule) {
|
|
302
301
|
RULE_HANDLES.push(registerActivityControl(ACTIVITY_FETCH_BIDS, RULE_NAME, fetchBidsRule));
|
|
303
302
|
}
|
|
303
|
+
if (purpose4Rule) {
|
|
304
|
+
RULE_HANDLES.push(
|
|
305
|
+
registerActivityControl(ACTIVITY_TRANSMIT_UFPD, RULE_NAME, ufpdRule),
|
|
306
|
+
registerActivityControl(ACTIVITY_ENRICH_UFPD, RULE_NAME, ufpdRule)
|
|
307
|
+
);
|
|
308
|
+
}
|
|
304
309
|
if (purpose7Rule) {
|
|
305
310
|
RULE_HANDLES.push(registerActivityControl(ACTIVITY_REPORT_ANALYTICS, RULE_NAME, reportAnalyticsRule));
|
|
306
311
|
}
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
isNumber,
|
|
10
10
|
isStr
|
|
11
11
|
} from '../src/utils.js';
|
|
12
|
+
import { ajax } from '../src/ajax.js';
|
|
12
13
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
13
14
|
import { Renderer } from '../src/Renderer.js';
|
|
14
15
|
import { VIDEO, BANNER } from '../src/mediaTypes.js';
|
|
@@ -17,6 +18,7 @@ import { getStorageManager } from '../src/storageManager.js';
|
|
|
17
18
|
|
|
18
19
|
const BIDDER_CODE = 'grid';
|
|
19
20
|
const ENDPOINT_URL = 'https://grid.bidswitch.net/hbjson';
|
|
21
|
+
const USP_DELETE_DATA_HANDLER = 'https://media.grid.bidswitch.net/uspapi_delete'
|
|
20
22
|
|
|
21
23
|
const SYNC_URL = 'https://x.bidswitch.net/sync?ssp=themediagrid';
|
|
22
24
|
const TIME_TO_LIVE = 360;
|
|
@@ -462,6 +464,23 @@ export const spec = {
|
|
|
462
464
|
url: syncUrl + params
|
|
463
465
|
};
|
|
464
466
|
}
|
|
467
|
+
},
|
|
468
|
+
|
|
469
|
+
ajaxCall: function(url, cb, data, options) {
|
|
470
|
+
return ajax(url, cb, data, options);
|
|
471
|
+
},
|
|
472
|
+
|
|
473
|
+
onDataDeletionRequest: function(data) {
|
|
474
|
+
const uids = [];
|
|
475
|
+
const aliases = [spec.code, ...spec.aliases.map((alias) => alias.code || alias)];
|
|
476
|
+
data.forEach(({ bids }) => bids && bids.forEach(({ bidder, params }) => {
|
|
477
|
+
if (aliases.includes(bidder) && params && params.uid) {
|
|
478
|
+
uids.push(params.uid);
|
|
479
|
+
}
|
|
480
|
+
}));
|
|
481
|
+
if (uids.length) {
|
|
482
|
+
spec.ajaxCall(USP_DELETE_DATA_HANDLER, () => {}, JSON.stringify({ uids }), {contentType: 'application/json', method: 'POST'});
|
|
483
|
+
}
|
|
465
484
|
}
|
|
466
485
|
};
|
|
467
486
|
|
package/modules/ixBidAdapter.js
CHANGED
|
@@ -77,7 +77,8 @@ const SOURCE_RTI_MAPPING = {
|
|
|
77
77
|
'pubcid.org': '', // SharedID, pubcid
|
|
78
78
|
'utiq.com': '', // Utiq
|
|
79
79
|
'intimatemerger.com': '',
|
|
80
|
-
'33across.com': ''
|
|
80
|
+
'33across.com': '',
|
|
81
|
+
'liveintent.indexexchange.com': '',
|
|
81
82
|
};
|
|
82
83
|
const PROVIDERS = [
|
|
83
84
|
'britepoolid',
|
|
@@ -180,6 +181,41 @@ function bidToBannerImp(bid) {
|
|
|
180
181
|
return imp;
|
|
181
182
|
}
|
|
182
183
|
|
|
184
|
+
/**
|
|
185
|
+
* Sets imp.displaymanager
|
|
186
|
+
*
|
|
187
|
+
* @param {object} imp
|
|
188
|
+
* @param {object} bid
|
|
189
|
+
*/
|
|
190
|
+
function setDisplayManager(imp, bid) {
|
|
191
|
+
if (deepAccess(bid, 'mediaTypes.video.context') === OUTSTREAM) {
|
|
192
|
+
let renderer = deepAccess(bid, 'mediaTypes.video.renderer');
|
|
193
|
+
if (!renderer) {
|
|
194
|
+
renderer = deepAccess(bid, 'renderer');
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (deepAccess(bid, 'schain', false)) {
|
|
198
|
+
imp.displaymanager = 'pbjs_wrapper';
|
|
199
|
+
} else if (renderer && typeof (renderer) === 'object') {
|
|
200
|
+
if (renderer.url !== undefined) {
|
|
201
|
+
let domain = '';
|
|
202
|
+
try {
|
|
203
|
+
domain = new URL(renderer.url).hostname
|
|
204
|
+
} catch {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
if (domain.includes('js-sec.indexww')) {
|
|
208
|
+
imp.displaymanager = 'ix';
|
|
209
|
+
} else {
|
|
210
|
+
imp.displaymanager = renderer.url;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
} else {
|
|
214
|
+
imp.displaymanager = 'ix';
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
183
219
|
/**
|
|
184
220
|
* Transform valid bid request config object to video impression object that will be sent to ad server.
|
|
185
221
|
*
|
|
@@ -199,8 +235,10 @@ export function bidToVideoImp(bid) {
|
|
|
199
235
|
// populate imp level transactionId
|
|
200
236
|
imp.ext.tid = deepAccess(bid, 'ortb2Imp.ext.tid');
|
|
201
237
|
|
|
238
|
+
setDisplayManager(imp, bid);
|
|
239
|
+
|
|
202
240
|
// AdUnit-Specific First Party Data
|
|
203
|
-
addAdUnitFPD(imp, bid)
|
|
241
|
+
addAdUnitFPD(imp, bid);
|
|
204
242
|
|
|
205
243
|
// copy all video properties to imp object
|
|
206
244
|
for (const adUnitProperty in videoAdUnitRef) {
|
|
@@ -97,6 +97,10 @@ function buildRequests(validBidRequests, bidderRequest) {
|
|
|
97
97
|
user: getUserIds(tdidAdapter, bidderRequest.uspConsent, bidderRequest.gdprConsent, firstBidRequest.userIdAsEids, bidderRequest.gppConsent),
|
|
98
98
|
});
|
|
99
99
|
|
|
100
|
+
if (firstBidRequest.schain && firstBidRequest.schain.nodes) {
|
|
101
|
+
krakenParams.schain = firstBidRequest.schain
|
|
102
|
+
}
|
|
103
|
+
|
|
100
104
|
const reqCount = getRequestCount()
|
|
101
105
|
if (reqCount != null) {
|
|
102
106
|
krakenParams.requestCount = reqCount;
|
|
@@ -307,6 +307,15 @@ function generateBidParameters(bid, bidderRequest) {
|
|
|
307
307
|
bidObject.placementId = placementId;
|
|
308
308
|
}
|
|
309
309
|
|
|
310
|
+
const mimes = deepAccess(bid, `mediaTypes.${mediaType}.mimes`);
|
|
311
|
+
if (mimes) {
|
|
312
|
+
bidObject.mimes = mimes;
|
|
313
|
+
}
|
|
314
|
+
const api = deepAccess(bid, `mediaTypes.${mediaType}.api`);
|
|
315
|
+
if (api) {
|
|
316
|
+
bidObject.api = api;
|
|
317
|
+
}
|
|
318
|
+
|
|
310
319
|
const sua = deepAccess(bid, `ortb2.device.sua`);
|
|
311
320
|
if (sua) {
|
|
312
321
|
bidObject.sua = sua;
|
|
@@ -358,6 +367,11 @@ function generateBidParameters(bid, bidderRequest) {
|
|
|
358
367
|
bidObject.linearity = linearity;
|
|
359
368
|
}
|
|
360
369
|
|
|
370
|
+
const protocols = deepAccess(bid, `mediaTypes.video.protocols`);
|
|
371
|
+
if (protocols) {
|
|
372
|
+
bidObject.protocols = protocols;
|
|
373
|
+
}
|
|
374
|
+
|
|
361
375
|
const plcmt = deepAccess(bid, `mediaTypes.video.plcmt`);
|
|
362
376
|
if (plcmt) {
|
|
363
377
|
bidObject.plcmt = plcmt;
|
|
@@ -398,7 +412,8 @@ function generateGeneralParams(generalObject, bidderRequest) {
|
|
|
398
412
|
dnt: (navigator.doNotTrack == 'yes' || navigator.doNotTrack == '1' || navigator.msDoNotTrack == '1') ? 1 : 0,
|
|
399
413
|
device_type: getDeviceType(navigator.userAgent),
|
|
400
414
|
ua: navigator.userAgent,
|
|
401
|
-
|
|
415
|
+
is_wrapper: !!generalBidParams.isWrapper,
|
|
416
|
+
session_id: generalBidParams.sessionId || getBidIdParameter('bidderRequestId', generalObject),
|
|
402
417
|
tmax: timeout
|
|
403
418
|
}
|
|
404
419
|
|
|
@@ -441,7 +456,7 @@ function generateGeneralParams(generalObject, bidderRequest) {
|
|
|
441
456
|
|
|
442
457
|
if (bidderRequest && bidderRequest.refererInfo) {
|
|
443
458
|
generalParams.referrer = deepAccess(bidderRequest, 'refererInfo.ref');
|
|
444
|
-
generalParams.page_url = deepAccess(bidderRequest, 'refererInfo.page') || window
|
|
459
|
+
generalParams.page_url = deepAccess(bidderRequest, 'refererInfo.page') || deepAccess(window, 'location.href');
|
|
445
460
|
}
|
|
446
461
|
|
|
447
462
|
return generalParams
|
|
@@ -11,7 +11,7 @@ const DEFAULT_TIMEOUT = 1000;
|
|
|
11
11
|
const BID_HOST = 'https://mweb-hb.presage.io/api/header-bidding-request';
|
|
12
12
|
const TIMEOUT_MONITORING_HOST = 'https://ms-ads-monitoring-events.presage.io';
|
|
13
13
|
const MS_COOKIE_SYNC_DOMAIN = 'https://ms-cookie-sync.presage.io';
|
|
14
|
-
const ADAPTER_VERSION = '1.
|
|
14
|
+
const ADAPTER_VERSION = '1.5.0';
|
|
15
15
|
|
|
16
16
|
function getClientWidth() {
|
|
17
17
|
const documentElementClientWidth = window.top.document.documentElement.clientWidth
|
|
@@ -46,22 +46,35 @@ function isBidRequestValid(bid) {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
function getUserSyncs(syncOptions, serverResponses, gdprConsent, uspConsent) {
|
|
49
|
-
|
|
49
|
+
const consent = (gdprConsent && gdprConsent.consentString) || '';
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
51
|
+
if (syncOptions.iframeEnabled) {
|
|
52
|
+
return [
|
|
53
|
+
{
|
|
54
|
+
type: 'iframe',
|
|
55
|
+
url: `${MS_COOKIE_SYNC_DOMAIN}/user-sync.html?gdpr_consent=${consent}&source=prebid`
|
|
56
|
+
}
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (syncOptions.pixelEnabled) {
|
|
61
|
+
return [
|
|
62
|
+
{
|
|
63
|
+
type: 'image',
|
|
64
|
+
url: `${MS_COOKIE_SYNC_DOMAIN}/v1/init-sync/bid-switch?iab_string=${consent}&source=prebid`
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
type: 'image',
|
|
68
|
+
url: `${MS_COOKIE_SYNC_DOMAIN}/ttd/init-sync?iab_string=${consent}&source=prebid`
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
type: 'image',
|
|
72
|
+
url: `${MS_COOKIE_SYNC_DOMAIN}/xandr/init-sync?iab_string=${consent}&source=prebid`
|
|
73
|
+
}
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return [];
|
|
65
78
|
}
|
|
66
79
|
|
|
67
80
|
function buildRequests(validBidRequests, bidderRequest) {
|
|
@@ -1194,6 +1194,15 @@ export const spec = {
|
|
|
1194
1194
|
deepSetValue(payload, 'regs.ext.us_privacy', bidderRequest.uspConsent);
|
|
1195
1195
|
}
|
|
1196
1196
|
|
|
1197
|
+
// Attaching GPP Consent Params
|
|
1198
|
+
if (bidderRequest?.gppConsent?.gppString) {
|
|
1199
|
+
deepSetValue(payload, 'regs.gpp', bidderRequest.gppConsent.gppString);
|
|
1200
|
+
deepSetValue(payload, 'regs.gpp_sid', bidderRequest.gppConsent.applicableSections);
|
|
1201
|
+
} else if (bidderRequest?.ortb2?.regs?.gpp) {
|
|
1202
|
+
deepSetValue(payload, 'regs.gpp', bidderRequest.ortb2.regs.gpp);
|
|
1203
|
+
deepSetValue(payload, 'regs.gpp_sid', bidderRequest.ortb2.regs.gpp_sid);
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1197
1206
|
// coppa compliance
|
|
1198
1207
|
if (config.getConfig('coppa') === true) {
|
|
1199
1208
|
deepSetValue(payload, 'regs.coppa', 1);
|
|
@@ -1352,7 +1361,7 @@ export const spec = {
|
|
|
1352
1361
|
/**
|
|
1353
1362
|
* Register User Sync.
|
|
1354
1363
|
*/
|
|
1355
|
-
getUserSyncs: (syncOptions, responses, gdprConsent, uspConsent) => {
|
|
1364
|
+
getUserSyncs: (syncOptions, responses, gdprConsent, uspConsent, gppConsent) => {
|
|
1356
1365
|
let syncurl = '' + publisherId;
|
|
1357
1366
|
|
|
1358
1367
|
// Attaching GDPR Consent Params in UserSync url
|
|
@@ -1366,6 +1375,12 @@ export const spec = {
|
|
|
1366
1375
|
syncurl += '&us_privacy=' + encodeURIComponent(uspConsent);
|
|
1367
1376
|
}
|
|
1368
1377
|
|
|
1378
|
+
// GPP Consent
|
|
1379
|
+
if (gppConsent?.gppString && gppConsent?.applicableSections?.length) {
|
|
1380
|
+
syncurl += '&gpp=' + encodeURIComponent(gppConsent.gppString);
|
|
1381
|
+
syncurl += '&gpp_sid=' + encodeURIComponent(gppConsent?.applicableSections?.join(','));
|
|
1382
|
+
}
|
|
1383
|
+
|
|
1369
1384
|
// coppa compliance
|
|
1370
1385
|
if (config.getConfig('coppa') === true) {
|
|
1371
1386
|
syncurl += '&coppa=1';
|