prebid.js 7.18.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.
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/adWMGAnalyticsAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adfBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adlooxAdServerVideo.js +1 -1
- package/dist/adlooxAnalyticsAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adomikAnalyticsAdapter.js +1 -1
- package/dist/adqueryIdSystem.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adxpremiumAnalyticsAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aolBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/atsAnalyticsAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +1 -1
- package/dist/bidViewability.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/byDataAnalyticsAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/categoryTranslation.js +1 -1
- package/dist/cleanioRtdProvider.js +1 -1
- package/dist/colossussspBidAdapter.js +1 -1
- package/dist/concertAnalyticsAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectIdSystem.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagement.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -0
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/currency.js +1 -1
- package/dist/datablocksAnalyticsAdapter.js +1 -1
- package/dist/dchain.js +1 -1
- package/dist/debugging-standalone.js +1 -1
- package/dist/debugging.js +1 -1
- package/dist/dependencies.json +9 -0
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/dgkeywordRtdProvider.js +1 -1
- package/dist/dianomiBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/enrichmentFpdModule.js +1 -1
- package/dist/eplanningAnalyticsAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fintezaAnalyticsAdapter.js +1 -1
- package/dist/fpd.js +1 -0
- package/dist/ftrackIdSystem.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/googleAnalyticsAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronAnalyticsAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/invisiblyAnalyticsAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoAnalyticsAdapter.js +1 -1
- package/dist/kinessoIdSystem.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentAnalyticsAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/livewrappedAnalyticsAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/lotamePanoramaIdSystem.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -0
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mass.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/multibid.js +1 -1
- package/dist/nativoBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +198 -194
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxAnalyticsAdapter.js +1 -1
- package/dist/optimonAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pianoDmpAnalyticsAdapter.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +2 -2
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
- package/dist/priceFloors.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubperfAnalyticsAdapter.js +1 -1
- package/dist/pubstackAnalyticsAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pulsepointAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/quantcastIdSystem.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/realvuAnalyticsAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/relevantAnalyticsAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rivrAnalyticsAdapter.js +1 -1
- package/dist/roxotAnalyticsAdapter.js +1 -1
- package/dist/rtdModule.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/s2sTesting.js +1 -1
- package/dist/scaleableAnalyticsAdapter.js +1 -1
- package/dist/schain.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/sigmoidAnalyticsAdapter.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/sonobiAnalyticsAdapter.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/staqAnalyticsAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tapadIdSystem.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/teadsIdSystem.js +1 -0
- package/dist/terceptAnalyticsAdapter.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/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/vrtcalBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/weboramaRtdProvider.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/dist/yuktamediaAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
- package/libraries/fpd/sua.js +98 -0
- package/modules/.submodules.json +1 -0
- package/modules/adfBidAdapter.js +1 -1
- package/modules/adkernelAdnBidAdapter.js +1 -0
- package/modules/adkernelBidAdapter.js +2 -2
- package/modules/adqueryIdSystem.js +8 -8
- package/modules/adxcgBidAdapter.js +1 -1
- package/modules/amxBidAdapter.js +1 -1
- package/modules/aolBidAdapter.js +25 -2
- package/modules/appnexusBidAdapter.js +19 -2
- package/modules/{andBeyondMediaBidAdapter.js → beyondmediaBidAdapter.js} +0 -0
- package/modules/{andBeyondMediaBidAdapter.md → beyondmediaBidAdapter.md} +1 -1
- package/modules/categoryTranslation.js +4 -4
- package/modules/cleanioRtdProvider.js +3 -4
- package/modules/colossussspBidAdapter.js +2 -1
- package/modules/connectIdSystem.js +16 -1
- package/modules/conversantAnalyticsAdapter.js +560 -0
- package/modules/conversantAnalyticsAdapter.md +47 -0
- package/modules/criteoBidAdapter.js +1 -1
- package/modules/currency.js +11 -11
- package/modules/dchain.js +2 -2
- package/modules/debugging/bidInterceptor.js +2 -2
- package/modules/debugging/debugging.js +10 -2
- package/modules/debugging/legacy.js +2 -2
- package/modules/dgkeywordRtdProvider.js +21 -3
- package/modules/dianomiBidAdapter.js +1 -1
- package/modules/enrichmentFpdModule.js +33 -14
- package/modules/eplanningBidAdapter.js +48 -2
- package/modules/finativeBidAdapter.js +1 -1
- package/modules/gridBidAdapter.js +187 -117
- package/modules/improvedigitalBidAdapter.js +2 -2
- package/modules/ixBidAdapter.js +94 -23
- package/modules/liveIntentIdSystem.js +39 -5
- package/modules/lotamePanoramaIdSystem.js +10 -6
- package/modules/magniteAnalyticsAdapter.js +902 -0
- package/modules/magniteAnalyticsAdapter.md +18 -0
- package/modules/mass.js +2 -2
- package/modules/mediakeysBidAdapter.js +6 -1
- package/modules/mediakeysBidAdapter.md +50 -40
- package/modules/multibid/index.js +5 -5
- package/modules/nativoBidAdapter.js +1 -1
- package/modules/pixfutureBidAdapter.js +46 -15
- package/modules/prebidServerBidAdapter/index.js +54 -19
- package/modules/priceFloors.js +8 -22
- package/modules/readpeakBidAdapter.js +1 -1
- package/modules/rubiconAnalyticsAdapter.js +14 -9
- package/modules/rubiconBidAdapter.js +2 -3
- package/modules/seedingAllianceBidAdapter.js +1 -1
- package/modules/sharethroughBidAdapter.js +1 -1
- package/modules/taboolaBidAdapter.js +5 -5
- package/modules/talkadsBidAdapter.js +1 -0
- package/modules/teadsIdSystem.js +234 -0
- package/modules/teadsIdSystem.md +22 -0
- package/modules/truereachBidAdapter.js +1 -0
- package/modules/ttdBidAdapter.js +1 -1
- package/modules/userId/index.js +21 -14
- package/modules/vrtcalBidAdapter.js +7 -1
- package/modules/vuukleBidAdapter.js +34 -3
- package/modules/yahoosspBidAdapter.js +4 -2
- package/modules/yandexBidAdapter.js +31 -8
- package/package.json +2 -2
- package/src/adapterManager.js +2 -4
- package/src/adapters/bidderFactory.js +13 -11
- package/src/auction.js +140 -69
- package/src/constants.json +8 -0
- package/src/cpmBucketManager.js +22 -3
- package/src/native.js +1 -5
- package/src/prebid.js +5 -6
- package/src/targeting.js +31 -14
- package/test/fixtures/fixtures.js +2 -1
- package/test/spec/auctionmanager_spec.js +109 -21
- package/test/spec/cpmBucketManager_spec.js +239 -177
- package/test/spec/fpd/sua_spec.js +244 -0
- package/test/spec/modules/adfBidAdapter_spec.js +2 -3
- package/test/spec/modules/adqueryIdSystem_spec.js +0 -2
- package/test/spec/modules/adxcgBidAdapter_spec.js +2 -3
- package/test/spec/modules/amxBidAdapter_spec.js +3 -2
- package/test/spec/modules/aolBidAdapter_spec.js +42 -9
- package/test/spec/modules/appnexusBidAdapter_spec.js +24 -0
- package/test/spec/modules/{andBeyondMediaBidAdapter_spec.js → beyondmediaBidAdapter_spec.js} +1 -1
- package/test/spec/modules/colossussspBidAdapter_spec.js +4 -2
- package/test/spec/modules/connectIdSystem_spec.js +20 -0
- package/test/spec/modules/conversantAnalyticsAdapter_spec.js +963 -0
- package/test/spec/modules/currency_spec.js +14 -6
- package/test/spec/modules/debugging_mod_spec.js +9 -0
- package/test/spec/modules/dgkeywordRtdProvider_spec.js +83 -1
- package/test/spec/modules/dianomiBidAdapter_spec.js +2 -3
- package/test/spec/modules/enrichmentFpdModule_spec.js +50 -7
- package/test/spec/modules/eplanningBidAdapter_spec.js +285 -1
- package/test/spec/modules/fpdModule_spec.js +9 -0
- package/test/spec/modules/gridBidAdapter_spec.js +87 -31
- package/test/spec/modules/ixBidAdapter_spec.js +221 -2
- package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +62 -8
- package/test/spec/modules/liveIntentIdSystem_spec.js +62 -8
- package/test/spec/modules/lotamePanoramaIdSystem_spec.js +0 -1
- package/test/spec/modules/magniteAnalyticsAdapter_spec.js +1942 -0
- package/test/spec/modules/mediakeysBidAdapter_spec.js +20 -3
- package/test/spec/modules/nativoBidAdapter_spec.js +13 -2
- package/test/spec/modules/prebidServerBidAdapter_spec.js +202 -15
- package/test/spec/modules/priceFloors_spec.js +5 -5
- package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +2 -3
- package/test/spec/modules/seedtagBidAdapter_spec.js +15 -18
- package/test/spec/modules/sharethroughBidAdapter_spec.js +2 -1
- package/test/spec/modules/taboolaBidAdapter_spec.js +112 -13
- package/test/spec/modules/teadsIdSystem_spec.js +271 -0
- package/test/spec/modules/ttdBidAdapter_spec.js +3 -3
- package/test/spec/modules/userId_spec.js +39 -4
- package/test/spec/modules/vrtcalBidAdapter_spec.js +12 -1
- package/test/spec/modules/vuukleBidAdapter_spec.js +87 -0
- package/test/spec/modules/yahoosspBidAdapter_spec.js +48 -1
- package/test/spec/modules/yandexBidAdapter_spec.js +8 -5
- package/test/spec/native_spec.js +5 -0
- package/test/spec/unit/core/bidderFactory_spec.js +66 -11
- package/test/spec/unit/core/targeting_spec.js +28 -9
- package/test/spec/unit/pbjs_api_spec.js +48 -2
|
@@ -126,7 +126,7 @@ Object.assign(BidInterceptor.prototype, {
|
|
|
126
126
|
Object.entries(ref).forEach(([key, val]) => {
|
|
127
127
|
if (typeof val === 'function') {
|
|
128
128
|
result[key] = val(...args);
|
|
129
|
-
} else if (typeof val === 'object') {
|
|
129
|
+
} else if (val != null && typeof val === 'object') {
|
|
130
130
|
result[key] = replFn({args, ref: val})
|
|
131
131
|
} else {
|
|
132
132
|
result[key] = val;
|
|
@@ -138,7 +138,7 @@ Object.assign(BidInterceptor.prototype, {
|
|
|
138
138
|
return (bid, ...args) => {
|
|
139
139
|
const response = this.responseDefaults(bid);
|
|
140
140
|
mergeDeep(response, replFn({args: [bid, ...args]}));
|
|
141
|
-
if (!response.ad) {
|
|
141
|
+
if (!response.hasOwnProperty('ad') && !response.hasOwnProperty('adUrl')) {
|
|
142
142
|
response.ad = this.defaultAd(bid, response);
|
|
143
143
|
}
|
|
144
144
|
response.isDebug = true;
|
|
@@ -49,9 +49,17 @@ function saveDebuggingConfig(debugConfig, {sessionStorage = window.sessionStorag
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
export function getConfig(debugging, {
|
|
52
|
+
export function getConfig(debugging, {getStorage = () => window.sessionStorage, DEBUG_KEY, config, hook, logger} = {}) {
|
|
53
53
|
if (debugging == null) return;
|
|
54
|
-
|
|
54
|
+
let sessionStorage;
|
|
55
|
+
try {
|
|
56
|
+
sessionStorage = getStorage();
|
|
57
|
+
} catch (e) {
|
|
58
|
+
logger.logError(`sessionStorage is not available: debugging configuration will not persist on page reload`, e);
|
|
59
|
+
}
|
|
60
|
+
if (sessionStorage != null) {
|
|
61
|
+
saveDebuggingConfig(debugging, {sessionStorage, DEBUG_KEY});
|
|
62
|
+
}
|
|
55
63
|
if (!debugging.enabled) {
|
|
56
64
|
disableDebugging({hook, logger});
|
|
57
65
|
} else {
|
|
@@ -54,7 +54,7 @@ export function applyBidOverrides(overrideObj, bidObj, bidType, logger) {
|
|
|
54
54
|
}, bidObj);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
export function addBidResponseHook(next, adUnitCode, bid) {
|
|
57
|
+
export function addBidResponseHook(next, adUnitCode, bid, reject) {
|
|
58
58
|
const {overrides, logger} = this;
|
|
59
59
|
|
|
60
60
|
if (bidderExcluded(overrides.bidders, bid.bidderCode)) {
|
|
@@ -70,7 +70,7 @@ export function addBidResponseHook(next, adUnitCode, bid) {
|
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
next(adUnitCode, bid);
|
|
73
|
+
next(adUnitCode, bid, reject);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
export function addBidderRequestsHook(next, bidderRequests) {
|
|
@@ -20,10 +20,8 @@ import { getGlobal } from '../src/prebidGlobal.js';
|
|
|
20
20
|
* @param {Object} userConsent
|
|
21
21
|
*/
|
|
22
22
|
export function getDgKeywordsAndSet(reqBidsConfigObj, callback, moduleConfig, userConsent) {
|
|
23
|
-
const URL = 'https://mediaconsortium.profiles.tagger.opecloud.com/api/v1?url=';
|
|
24
23
|
const PROFILE_TIMEOUT_MS = 1000;
|
|
25
24
|
const timeout = (moduleConfig && moduleConfig.params && moduleConfig.params.timeout && Number(moduleConfig.params.timeout) > 0) ? Number(moduleConfig.params.timeout) : PROFILE_TIMEOUT_MS;
|
|
26
|
-
const url = (moduleConfig && moduleConfig.params && moduleConfig.params.url) ? moduleConfig.params.url : URL + encodeURIComponent(window.location.href);
|
|
27
25
|
const adUnits = reqBidsConfigObj.adUnits || getGlobal().adUnits;
|
|
28
26
|
callback = (function(cb) {
|
|
29
27
|
let done = false;
|
|
@@ -43,7 +41,7 @@ export function getDgKeywordsAndSet(reqBidsConfigObj, callback, moduleConfig, us
|
|
|
43
41
|
} else {
|
|
44
42
|
logMessage('[dgkeyword sub module] dgkeyword targets:', setKeywordTargetBidders);
|
|
45
43
|
logMessage('[dgkeyword sub module] get targets from profile api start.');
|
|
46
|
-
ajax(url, {
|
|
44
|
+
ajax(getProfileApiUrl(moduleConfig?.params?.url, moduleConfig?.params?.disableReadFpid), {
|
|
47
45
|
success: function(response) {
|
|
48
46
|
const res = JSON.parse(response);
|
|
49
47
|
if (!isFinish) {
|
|
@@ -98,6 +96,26 @@ export function getDgKeywordsAndSet(reqBidsConfigObj, callback, moduleConfig, us
|
|
|
98
96
|
}
|
|
99
97
|
}
|
|
100
98
|
|
|
99
|
+
export function getProfileApiUrl(customeUrl, disableReadFpid) {
|
|
100
|
+
const URL = 'https://mediaconsortium.profiles.tagger.opecloud.com/api/v1';
|
|
101
|
+
const fpid = (disableReadFpid) ? '' : readFpidFromLocalStrage();
|
|
102
|
+
let url = customeUrl || URL;
|
|
103
|
+
url = url + '?url=' + encodeURIComponent(window.location.href) + ((fpid) ? `&fpid=${fpid}` : '');
|
|
104
|
+
return url;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function readFpidFromLocalStrage() {
|
|
108
|
+
try {
|
|
109
|
+
const fpid = window.localStorage.getItem('ope_fpid');
|
|
110
|
+
if (fpid) {
|
|
111
|
+
return fpid;
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
} catch (error) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
101
119
|
/**
|
|
102
120
|
* get all bidder which hava {dgkeyword: true} in params
|
|
103
121
|
* @param {Object} adUnits
|
|
@@ -112,7 +112,7 @@ export const spec = {
|
|
|
112
112
|
setOnAny(validBidRequests, 'params.pt') ||
|
|
113
113
|
setOnAny(validBidRequests, 'params.priceType') ||
|
|
114
114
|
'net';
|
|
115
|
-
const tid =
|
|
115
|
+
const tid = bidderRequest.auctionId;
|
|
116
116
|
const currency = getConfig('currency.adServerCurrency');
|
|
117
117
|
const cur = currency && [currency];
|
|
118
118
|
const eids = setOnAny(validBidRequests, 'userIdAsEids');
|
|
@@ -7,11 +7,15 @@ import { timestamp, mergeDeep } from '../src/utils.js';
|
|
|
7
7
|
import { submodule } from '../src/hook.js';
|
|
8
8
|
import {getRefererInfo, parseDomain} from '../src/refererDetection.js';
|
|
9
9
|
import { getCoreStorageManager } from '../src/storageManager.js';
|
|
10
|
+
import {GreedyPromise} from '../src/utils/promise.js';
|
|
11
|
+
import {getHighEntropySUA, getLowEntropySUA} from '../libraries/fpd/sua.js';
|
|
10
12
|
|
|
11
|
-
let ortb2
|
|
13
|
+
let ortb2;
|
|
12
14
|
let win = (window === window.top) ? window : window.top;
|
|
13
15
|
export const coreStorage = getCoreStorageManager('enrichmentFpd');
|
|
14
16
|
|
|
17
|
+
export const sua = {he: getHighEntropySUA, le: getLowEntropySUA};
|
|
18
|
+
|
|
15
19
|
/**
|
|
16
20
|
* Find the root domain
|
|
17
21
|
* @param {string|undefined} fullDomain
|
|
@@ -124,6 +128,17 @@ function setKeywords() {
|
|
|
124
128
|
if (keywords && keywords.content) mergeDeep(ortb2, { site: { keywords: keywords.content.replace(/\s/g, '') } });
|
|
125
129
|
}
|
|
126
130
|
|
|
131
|
+
function setDeviceSua(hints) {
|
|
132
|
+
let data = Array.isArray(hints) && hints.length === 0
|
|
133
|
+
? GreedyPromise.resolve(sua.le())
|
|
134
|
+
: sua.he(hints);
|
|
135
|
+
return data.then((sua) => {
|
|
136
|
+
if (sua != null) {
|
|
137
|
+
mergeDeep(ortb2, {device: {sua}});
|
|
138
|
+
}
|
|
139
|
+
})
|
|
140
|
+
}
|
|
141
|
+
|
|
127
142
|
/**
|
|
128
143
|
* Checks the Global Privacy Control status, and if exists and is true, merges into regs.ext.gpc
|
|
129
144
|
*/
|
|
@@ -137,30 +152,34 @@ function setGpc() {
|
|
|
137
152
|
/**
|
|
138
153
|
* Resets modules global ortb2 data
|
|
139
154
|
*/
|
|
140
|
-
const
|
|
155
|
+
export const resetEnrichments = () => { ortb2 = null };
|
|
141
156
|
|
|
142
|
-
function runEnrichments() {
|
|
157
|
+
function runEnrichments(fpdConf) {
|
|
143
158
|
setReferer();
|
|
144
159
|
setPage();
|
|
145
160
|
setDomain();
|
|
146
161
|
setDimensions();
|
|
147
162
|
setKeywords();
|
|
148
163
|
setGpc();
|
|
149
|
-
|
|
150
|
-
return ortb2;
|
|
164
|
+
return setDeviceSua(fpdConf.uaHints).then(() => ortb2);
|
|
151
165
|
}
|
|
152
166
|
|
|
153
|
-
/**
|
|
154
|
-
* Sets default values to ortb2 if exists and adds currency and ortb2 setConfig callbacks on init
|
|
155
|
-
*/
|
|
156
167
|
export function processFpd(fpdConf, {global}) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
168
|
+
if (fpdConf.skipEnrichments) {
|
|
169
|
+
return {global};
|
|
170
|
+
} else {
|
|
171
|
+
let ready;
|
|
172
|
+
if (ortb2 == null) {
|
|
173
|
+
ortb2 = {};
|
|
174
|
+
ready = runEnrichments(fpdConf);
|
|
175
|
+
} else {
|
|
176
|
+
ready = GreedyPromise.resolve();
|
|
177
|
+
}
|
|
178
|
+
return ready.then(() => ({
|
|
179
|
+
global: mergeDeep({}, ortb2, global)
|
|
180
|
+
}))
|
|
181
|
+
}
|
|
162
182
|
}
|
|
163
|
-
|
|
164
183
|
/** @type {firstPartyDataSubmodule} */
|
|
165
184
|
export const enrichmentsSubmodule = {
|
|
166
185
|
name: 'enrichments',
|
|
@@ -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);
|
|
@@ -63,7 +63,7 @@ export const spec = {
|
|
|
63
63
|
// convert Native ORTB definition to old-style prebid native definition
|
|
64
64
|
validBidRequests = convertOrtbRequestToProprietaryNative(validBidRequests);
|
|
65
65
|
const pt = setOnAny(validBidRequests, 'params.pt') || setOnAny(validBidRequests, 'params.priceType') || 'net';
|
|
66
|
-
const tid =
|
|
66
|
+
const tid = bidderRequest.auctionId;
|
|
67
67
|
const cur = [config.getConfig('currency.adServerCurrency') || DEFAULT_CUR];
|
|
68
68
|
let url = bidderRequest.refererInfo.referer;
|
|
69
69
|
|