prebid.js 6.6.0 → 6.10.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/.eslintrc.js +8 -1
- package/allowedModules.js +4 -7
- package/integrationExamples/gpt/amp/creative.html +11 -33
- package/integrationExamples/gpt/{haloRtdProvider_example.html → hadronRtdProvider_example.html} +9 -9
- package/integrationExamples/gpt/idImportLibrary_example.html +2 -2
- package/integrationExamples/gpt/userId_example.html +2 -2
- package/integrationExamples/gpt/weboramaRtdProvider_example.html +154 -115
- package/integrationExamples/gpt/x-domain/creative.html +63 -29
- package/modules/.submodules.json +3 -0
- package/modules/adagioBidAdapter.js +1 -9
- package/modules/adagioBidAdapter.md +1 -1
- package/modules/adbookpspBidAdapter.js +29 -12
- package/modules/adhashBidAdapter.js +4 -4
- package/modules/adkernelBidAdapter.js +2 -2
- package/modules/adlooxAnalyticsAdapter.js +1 -1
- package/modules/adlooxRtdProvider.js +1 -1
- package/modules/adnowBidAdapter.js +1 -1
- package/modules/adnuntiusRtdProvider.js +96 -0
- package/modules/adnuntiusRtdProvider.md +41 -0
- package/modules/adomikAnalyticsAdapter.js +2 -2
- package/modules/adotBidAdapter.js +1 -1
- package/modules/adpod.js +14 -17
- package/modules/adrelevantisBidAdapter.js +2 -2
- package/modules/adtargetBidAdapter.js +1 -1
- package/modules/adtelligentBidAdapter.js +1 -1
- package/modules/advangelistsBidAdapter.js +2 -2
- package/modules/adxpremiumAnalyticsAdapter.js +1 -1
- package/modules/adyoulikeBidAdapter.js +1 -1
- package/modules/afpBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +16 -4
- package/modules/asealBidAdapter.js +58 -0
- package/modules/asealBidAdapter.md +52 -0
- package/modules/beachfrontBidAdapter.js +2 -2
- package/modules/betweenBidAdapter.js +1 -1
- package/modules/bidViewability.js +1 -1
- package/modules/bluebillywigBidAdapter.js +1 -1
- package/modules/brandmetricsRtdProvider.js +168 -0
- package/modules/brandmetricsRtdProvider.md +40 -0
- package/modules/bridgewellBidAdapter.js +1 -1
- package/modules/browsiRtdProvider.js +2 -2
- package/modules/cleanmedianetBidAdapter.js +1 -1
- package/modules/colossussspBidAdapter.js +12 -8
- package/modules/colossussspBidAdapter.md +15 -1
- package/modules/compassBidAdapter.js +1 -1
- package/modules/connectIdSystem.js +1 -1
- package/modules/consentManagement.js +2 -3
- package/modules/consumableBidAdapter.md +1 -1
- package/modules/conversantBidAdapter.js +7 -0
- package/modules/craftBidAdapter.js +2 -2
- package/modules/criteoBidAdapter.js +10 -1
- package/modules/currency.js +27 -5
- package/modules/cwireBidAdapter.js +1 -1
- package/modules/dailyhuntBidAdapter.js +1 -1
- package/modules/dchain.js +1 -1
- package/modules/displayioBidAdapter.js +157 -0
- package/modules/displayioBidAdapter.md +148 -0
- package/modules/dspxBidAdapter.js +69 -29
- package/modules/dspxBidAdapter.md +2 -1
- package/modules/e_volutionBidAdapter.js +158 -0
- package/modules/emx_digitalBidAdapter.js +2 -2
- package/modules/fluctBidAdapter.js +0 -1
- package/modules/gamoshiBidAdapter.js +1 -1
- package/modules/gdprEnforcement.js +2 -2
- package/modules/glomexBidAdapter.js +1 -1
- package/modules/gnetBidAdapter.js +3 -3
- package/modules/gnetBidAdapter.md +4 -4
- package/modules/goldbachBidAdapter.js +2 -2
- package/modules/gptPreAuction.js +1 -1
- package/modules/gridBidAdapter.js +15 -1
- package/modules/gumgumBidAdapter.js +57 -43
- package/modules/hadronIdSystem.js +96 -0
- package/modules/hadronIdSystem.md +35 -0
- package/modules/hadronRtdProvider.js +254 -0
- package/modules/hadronRtdProvider.md +126 -0
- package/modules/haloIdSystem.md +4 -35
- package/modules/haloRtdProvider.md +3 -126
- package/modules/hybridBidAdapter.js +1 -1
- package/modules/improvedigitalBidAdapter.js +6 -1
- package/modules/insticatorBidAdapter.js +1 -1
- package/modules/interactiveOffersBidAdapter.js +9 -6
- package/modules/intersectionRtdProvider.js +1 -1
- package/modules/ixBidAdapter.js +2 -2
- package/modules/jwplayerRtdProvider.js +72 -7
- package/modules/jwplayerRtdProvider.md +27 -11
- package/modules/kargoBidAdapter.js +2 -2
- package/modules/livewrappedBidAdapter.js +1 -1
- package/modules/lunamediahbBidAdapter.js +32 -4
- package/modules/malltvBidAdapter.js +7 -3
- package/modules/malltvBidAdapter.md +64 -51
- package/modules/mass.js +3 -5
- package/modules/mediakeysBidAdapter.js +2 -2
- package/modules/medianetAnalyticsAdapter.js +2 -2
- package/modules/medianetRtdProvider.js +1 -1
- package/modules/mediasquareBidAdapter.js +1 -0
- package/modules/nextMillenniumBidAdapter.js +1 -0
- package/modules/nextrollBidAdapter.js +1 -1
- package/modules/oguryBidAdapter.js +7 -14
- package/modules/onetagBidAdapter.js +1 -1
- package/modules/openwebBidAdapter.js +1 -1
- package/modules/openxAnalyticsAdapter.js +2 -2
- package/modules/openxBidAdapter.js +1 -1
- package/modules/parrableIdSystem.js +1 -1
- package/modules/permutiveRtdProvider.js +1 -1
- package/modules/pilotxBidAdapter.js +147 -0
- package/modules/pilotxBidAdapter.md +50 -0
- package/modules/pixfutureBidAdapter.js +2 -2
- package/modules/prebidServerBidAdapter/index.js +63 -41
- package/modules/priceFloors.js +15 -14
- package/modules/pubmaticBidAdapter.js +1 -1
- package/modules/quantcastBidAdapter.js +1 -1
- package/modules/reconciliationRtdProvider.js +1 -1
- package/modules/richaudienceBidAdapter.js +7 -2
- package/modules/riseBidAdapter.js +17 -6
- package/modules/roxotAnalyticsAdapter.js +1 -1
- package/modules/rtbhouseBidAdapter.js +1 -1
- package/modules/rtdModule/index.js +9 -11
- package/modules/rubiconAnalyticsAdapter.js +8 -2
- package/modules/rubiconBidAdapter.js +1 -1
- package/modules/saambaaBidAdapter.js +420 -420
- package/modules/seedingAllianceBidAdapter.js +3 -3
- package/modules/sharethroughBidAdapter.js +12 -17
- package/modules/sigmoidAnalyticsAdapter.js +1 -1
- package/modules/sirdataRtdProvider.js +1 -1
- package/modules/sizeMappingV2.js +2 -9
- package/modules/smarticoBidAdapter.js +1 -1
- package/modules/sortableAnalyticsAdapter.js +5 -4
- package/modules/sovrnAnalyticsAdapter.js +2 -2
- package/modules/sovrnBidAdapter.js +93 -18
- package/modules/sovrnBidAdapter.md +80 -2
- package/modules/sspBCBidAdapter.js +54 -21
- package/modules/synacormediaBidAdapter.js +32 -11
- package/modules/targetVideoBidAdapter.js +1 -1
- package/modules/telariaBidAdapter.js +22 -29
- package/modules/trustpidSystem.js +197 -0
- package/modules/trustpidSystem.md +45 -0
- package/modules/undertoneBidAdapter.js +17 -1
- package/modules/userId/eids.js +16 -1
- package/modules/userId/eids.md +10 -2
- package/modules/userId/index.js +2 -2
- package/modules/userId/userId.md +17 -2
- package/modules/ventesBidAdapter.js +1 -1
- package/modules/verizonMediaIdSystem.js +1 -1
- package/modules/vibrantmediaBidAdapter.js +220 -0
- package/modules/vibrantmediaBidAdapter.md +92 -0
- package/modules/viewability.js +177 -0
- package/modules/viewability.md +87 -0
- package/modules/viewdeosDXBidAdapter.js +1 -1
- package/modules/voxBidAdapter.js +1 -1
- package/modules/waardexBidAdapter.js +1 -1
- package/modules/weboramaRtdProvider.js +264 -34
- package/modules/weboramaRtdProvider.md +110 -40
- package/modules/widespaceBidAdapter.js +2 -2
- package/modules/winrBidAdapter.js +7 -7
- package/modules/yahoosspBidAdapter.js +3 -1
- package/modules/yieldlabBidAdapter.js +1 -1
- package/modules/yieldmoBidAdapter.js +2 -2
- package/modules/yieldoneBidAdapter.js +6 -0
- package/modules/yuktamediaAnalyticsAdapter.js +1 -1
- package/package.json +3 -1
- package/plugins/poly/arrayFrom.js +3 -0
- package/plugins/poly/find.js +3 -0
- package/plugins/poly/findIndex.js +3 -0
- package/plugins/poly/includes.js +3 -0
- package/plugins/poly/package.json +8 -0
- package/src/Renderer.js +1 -1
- package/src/adRendering.js +38 -0
- package/src/adapterManager.js +33 -28
- package/src/adapters/bidderFactory.js +13 -11
- package/src/adloader.js +3 -2
- package/src/auction.js +140 -117
- package/src/auctionIndex.js +85 -0
- package/src/auctionManager.js +4 -1
- package/src/bidderSettings.js +69 -0
- package/src/bidfactory.js +18 -6
- package/src/config.js +3 -4
- package/src/cpmBucketManager.js +1 -1
- package/src/native.js +30 -22
- package/src/prebid.js +4 -20
- package/src/secureCreatives.js +133 -49
- package/src/sizeMapping.js +1 -1
- package/src/storageManager.js +1 -1
- package/src/targeting.js +13 -4
- package/src/userSync.js +1 -1
- package/src/utils.js +16 -19
- package/src/video.js +11 -12
- package/src/videoCache.js +10 -9
- package/test/fixtures/fixtures.js +2 -1
- package/test/helpers/indexStub.js +28 -0
- package/test/helpers/syncPromise.js +71 -0
- package/test/spec/auctionmanager_spec.js +269 -90
- package/test/spec/config_spec.js +24 -1
- package/test/spec/e2e/longform/basic_w_bidderSettings.spec.js +1 -1
- package/test/spec/e2e/longform/basic_w_custom_adserver_translation.spec.js +1 -1
- package/test/spec/e2e/longform/basic_w_priceGran.spec.js +1 -1
- package/test/spec/e2e/longform/basic_w_requireExactDuration.spec.js +1 -1
- package/test/spec/e2e/longform/basic_wo_brandCategoryExclusion.spec.js +1 -1
- package/test/spec/e2e/longform/basic_wo_requireExactDuration.spec.js +1 -1
- package/test/spec/modules/adagioBidAdapter_spec.js +0 -10
- package/test/spec/modules/adbookpspBidAdapter_spec.js +17 -3
- package/test/spec/modules/adhashBidAdapter_spec.js +2 -2
- package/test/spec/modules/adnuntiusRtdProvider_spec.js +145 -0
- package/test/spec/modules/adpod_spec.js +91 -156
- package/test/spec/modules/afpBidAdapter_spec.js +1 -1
- package/test/spec/modules/appnexusBidAdapter_spec.js +27 -0
- package/test/spec/modules/asealBidAdapter_spec.js +144 -0
- package/test/spec/modules/brandmetricsRtdProvider_spec.js +191 -0
- package/test/spec/modules/colossussspBidAdapter_spec.js +5 -2
- package/test/spec/modules/conversantBidAdapter_spec.js +54 -2
- package/test/spec/modules/criteoBidAdapter_spec.js +21 -0
- package/test/spec/modules/currency_spec.js +36 -15
- package/test/spec/modules/deepintentDpesIdsystem_spec.js +1 -1
- package/test/spec/modules/displayioBidAdapter_spec.js +239 -0
- package/test/spec/modules/dspxBidAdapter_spec.js +20 -15
- package/test/spec/modules/e_volutionBidAdapter_spec.js +242 -0
- package/test/spec/modules/eids_spec.js +2 -2
- package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/gnetBidAdapter_spec.js +6 -6
- package/test/spec/modules/gridBidAdapter_spec.js +18 -0
- package/test/spec/modules/gumgumBidAdapter_spec.js +49 -3
- package/test/spec/modules/hadronIdSystem_spec.js +57 -0
- package/test/spec/modules/hadronRtdProvider_spec.js +762 -0
- package/test/spec/modules/idxIdSystem_spec.js +1 -1
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +19 -0
- package/test/spec/modules/jwplayerRtdProvider_spec.js +195 -2
- package/test/spec/modules/kargoBidAdapter_spec.js +1 -1
- package/test/spec/modules/lunamediahbBidAdapter_spec.js +27 -1
- package/test/spec/modules/mass_spec.js +2 -14
- package/test/spec/modules/mediakeysBidAdapter_spec.js +1 -1
- package/test/spec/modules/multibid_spec.js +1 -1
- package/test/spec/modules/oguryBidAdapter_spec.js +63 -5
- package/test/spec/modules/onetagBidAdapter_spec.js +1 -1
- package/test/spec/modules/openxAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/parrableIdSystem_spec.js +1 -1
- package/test/spec/modules/pilotxBidAdapter_spec.js +244 -0
- package/test/spec/modules/prebidServerBidAdapter_spec.js +43 -6
- package/test/spec/modules/priceFloors_spec.js +37 -24
- package/test/spec/modules/pubmaticBidAdapter_spec.js +40 -0
- package/test/spec/modules/realTimeDataModule_spec.js +51 -2
- package/test/spec/modules/riseBidAdapter_spec.js +30 -4
- package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +61 -1
- package/test/spec/modules/rubiconBidAdapter_spec.js +1 -1
- package/test/spec/modules/sharethroughBidAdapter_spec.js +91 -6
- package/test/spec/modules/sortableAnalyticsAdapter_spec.js +2 -3
- package/test/spec/modules/sovrnBidAdapter_spec.js +413 -333
- package/test/spec/modules/sspBCBidAdapter_spec.js +7 -7
- package/test/spec/modules/stroeerCoreBidAdapter_spec.js +1 -1
- package/test/spec/modules/synacormediaBidAdapter_spec.js +70 -0
- package/test/spec/modules/telariaBidAdapter_spec.js +1 -3
- package/test/spec/modules/trustpidSystem_spec.js +232 -0
- package/test/spec/modules/undertoneBidAdapter_spec.js +55 -2
- package/test/spec/modules/userId_spec.js +40 -40
- package/test/spec/modules/vibrantmediaBidAdapter_spec.js +1237 -0
- package/test/spec/modules/viewability_spec.js +280 -0
- package/test/spec/modules/weboramaRtdProvider_spec.js +536 -20
- package/test/spec/modules/widespaceBidAdapter_spec.js +1 -1
- package/test/spec/modules/yahoosspBidAdapter_spec.js +10 -0
- package/test/spec/modules/yieldoneBidAdapter_spec.js +33 -0
- package/test/spec/modules/zeotapIdPlusIdSystem_spec.js +1 -1
- package/test/spec/native_spec.js +62 -40
- package/test/spec/sizeMapping_spec.js +1 -1
- package/test/spec/unit/core/adapterManager_spec.js +24 -2
- package/test/spec/unit/core/auctionIndex_spec.js +129 -0
- package/test/spec/unit/core/bidderFactory_spec.js +65 -12
- package/test/spec/unit/core/bidderSettings_spec.js +123 -0
- package/test/spec/unit/core/targeting_spec.js +93 -0
- package/test/spec/unit/pbjs_api_spec.js +81 -43
- package/test/spec/unit/secureCreatives_spec.js +143 -24
- package/test/spec/videoCache_spec.js +18 -19
- package/test/spec/video_spec.js +51 -61
- package/webpack.conf.js +1 -1
package/.eslintrc.js
CHANGED
|
@@ -23,10 +23,13 @@ module.exports = {
|
|
|
23
23
|
'BROWSERSTACK_USERNAME': false,
|
|
24
24
|
'BROWSERSTACK_KEY': false
|
|
25
25
|
},
|
|
26
|
+
// use babel as parser for fancy syntax
|
|
27
|
+
parser: '@babel/eslint-parser',
|
|
26
28
|
parserOptions: {
|
|
27
29
|
sourceType: 'module',
|
|
28
30
|
ecmaVersion: 2018,
|
|
29
31
|
},
|
|
32
|
+
|
|
30
33
|
rules: {
|
|
31
34
|
'comma-dangle': 'off',
|
|
32
35
|
semi: 'off',
|
|
@@ -49,5 +52,9 @@ module.exports = {
|
|
|
49
52
|
rules: {
|
|
50
53
|
'prebid/validate-imports': ['error', allowedModules[key]]
|
|
51
54
|
}
|
|
52
|
-
}))
|
|
55
|
+
})).concat([{
|
|
56
|
+
// code in other packages (such as plugins/eslint) is not "seen" by babel and its parser will complain.
|
|
57
|
+
files: 'plugins/*/**/*.js',
|
|
58
|
+
parser: 'esprima'
|
|
59
|
+
}])
|
|
53
60
|
};
|
package/allowedModules.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
const sharedWhiteList = [
|
|
3
|
-
'
|
|
4
|
-
'
|
|
5
|
-
'
|
|
6
|
-
'
|
|
7
|
-
'core-js-pure/features/number/is-integer', // no ie11,
|
|
8
|
-
'core-js-pure/features/array/from', // no ie11
|
|
9
|
-
'core-js-pure/web/url-search-params' // no ie11
|
|
3
|
+
'prebidjs-polyfill/arrayFrom',
|
|
4
|
+
'prebidjs-polyfill/find',
|
|
5
|
+
'prebidjs-polyfill/findIndex',
|
|
6
|
+
'prebidjs-polyfill/includes',
|
|
10
7
|
];
|
|
11
8
|
|
|
12
9
|
module.exports = {
|
|
@@ -1,38 +1,16 @@
|
|
|
1
1
|
<!-- This script tag should be returned by your ad server -->
|
|
2
2
|
|
|
3
|
+
<script src="https://cdn.jsdelivr.net/npm/prebid-universal-creative@latest/dist/creative.js"></script>
|
|
3
4
|
<script>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
data = JSON.parse(ev[key]);
|
|
10
|
-
} catch (e) {
|
|
11
|
-
// Do nothing. No ad found.
|
|
12
|
-
}
|
|
13
|
-
if (data.ad || data.adUrl) {
|
|
14
|
-
if (data.ad) {
|
|
15
|
-
document.write(data.ad);
|
|
16
|
-
document.close();
|
|
17
|
-
} else if (data.adUrl) {
|
|
18
|
-
document.write('<IFRAME SRC="' + data.adUrl + '" WIDTH="'+ data.width +'" HEIGHT="'+ data.height +'" FRAMEBORDER="0" SCROLLING="no" MARGINHEIGHT="0" MARGINWIDTH="0" TOPMARGIN="0" LEFTMARGIN="0" ALLOWTRANSPARENCY="true"></IFRAME>');
|
|
19
|
-
document.close();
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
};
|
|
5
|
+
var ucTagData = {};
|
|
6
|
+
ucTagData.adServerDomain = "";
|
|
7
|
+
ucTagData.pubUrl = "%%PATTERN:url%%";
|
|
8
|
+
ucTagData.targetingMap = "%%PATTERN:TARGETINGMAP%%";
|
|
9
|
+
ucTagData.hbPb = "%%PATTERN:hb_pb%%";
|
|
23
10
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
window.parent.postMessage(message, '*');
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
var listenAdFromPrebid = function () {
|
|
33
|
-
window.addEventListener("message", renderAd, false);
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
listenAdFromPrebid();
|
|
37
|
-
requestAdFromPrebid();
|
|
11
|
+
try {
|
|
12
|
+
ucTag.renderAd(document, ucTagData);
|
|
13
|
+
} catch (e) {
|
|
14
|
+
console.log(e);
|
|
15
|
+
}
|
|
38
16
|
</script>
|
package/integrationExamples/gpt/{haloRtdProvider_example.html → hadronRtdProvider_example.html}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<html>
|
|
2
2
|
<head>
|
|
3
3
|
<script>
|
|
4
|
-
var
|
|
5
|
-
window.localStorage.setItem('
|
|
4
|
+
var testHadronId = "030tstezbb07jv2yg08xizqr0bwpa0c0evvmq00eivtcg0nc9v970ntek210qskvk40trr7270wqxik90zq3u2d12pa5j3137rx2918nmsj905vat8b1elzfjf1hl5r1i1kkc2jl";
|
|
5
|
+
window.localStorage.setItem('auHadronId', testHadronId);
|
|
6
6
|
</script>
|
|
7
7
|
|
|
8
8
|
<script>
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
auctionDelay: testAuctionDelay, // lower in real scenario to meet publisher spec
|
|
48
48
|
dataProviders: [
|
|
49
49
|
{
|
|
50
|
-
name: "
|
|
50
|
+
name: "hadron",
|
|
51
51
|
waitForIt: true,
|
|
52
52
|
params: {
|
|
53
53
|
segmentCache: false,
|
|
@@ -65,8 +65,8 @@
|
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
function sendAdserverRequest() {
|
|
68
|
-
document.getElementById('audigent_segments').innerHTML = window.localStorage.getItem('
|
|
69
|
-
document.getElementById('
|
|
68
|
+
document.getElementById('audigent_segments').innerHTML = window.localStorage.getItem('auHadronRtd');
|
|
69
|
+
document.getElementById('hadron_id').innerHTML = testHadronId;
|
|
70
70
|
|
|
71
71
|
if (pbjs.adserverRequestSent) return;
|
|
72
72
|
pbjs.adserverRequestSent = true;
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
</head>
|
|
107
107
|
|
|
108
108
|
<body>
|
|
109
|
-
<h2>
|
|
109
|
+
<h2>Hadron RTD Prebid</h2>
|
|
110
110
|
|
|
111
111
|
<div id='test-div'>
|
|
112
112
|
<script>
|
|
@@ -114,11 +114,11 @@
|
|
|
114
114
|
</script>
|
|
115
115
|
</div>
|
|
116
116
|
|
|
117
|
-
|
|
118
|
-
<div id='
|
|
117
|
+
Hadron Id:
|
|
118
|
+
<div id='hadron_id'>
|
|
119
119
|
</div>
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
Hadron Real-Time Data:
|
|
122
122
|
<div id='audigent_segments'>
|
|
123
123
|
</div>
|
|
124
124
|
</body>
|
|
@@ -1,135 +1,174 @@
|
|
|
1
|
-
<!DOCTYPE html
|
|
1
|
+
<!DOCTYPE html
|
|
2
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
2
3
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
4
|
+
|
|
3
5
|
<head>
|
|
4
6
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
5
7
|
</head>
|
|
8
|
+
|
|
6
9
|
<body>
|
|
7
10
|
|
|
8
|
-
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
|
|
9
|
-
<script src="../../build/dev/prebid.js" async></script>
|
|
11
|
+
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
|
|
12
|
+
<script src="../../build/dev/prebid.js" async></script>
|
|
10
13
|
|
|
11
|
-
<script>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
<script>
|
|
15
|
+
var pbjs = pbjs || {};
|
|
16
|
+
pbjs.que = pbjs.que || [];
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
pbjs.que.push(function () {
|
|
19
|
+
pbjs.setConfig({
|
|
20
|
+
debug: true,
|
|
21
|
+
realTimeData: {
|
|
22
|
+
auctionDelay: 1000,
|
|
23
|
+
dataProviders: [{
|
|
21
24
|
name: "weborama",
|
|
22
25
|
waitForIt: true,
|
|
23
26
|
params: {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
27
|
+
setPrebidTargeting: true, // optional
|
|
28
|
+
sendToBidders: true, // optional
|
|
29
|
+
onData: function (data, site) { // optional
|
|
30
|
+
var kind = (site) ? 'site' : 'user';
|
|
31
|
+
console.log('onData', kind, data);
|
|
32
|
+
},
|
|
33
|
+
weboCtxConf: {
|
|
34
|
+
token: "to-be-defined", // mandatory
|
|
35
|
+
targetURL: "https://prebid.org", // default is document.URL
|
|
36
|
+
setPrebidTargeting: true, // override param.setPrebidTargeting or default true
|
|
37
|
+
sendToBidders: true, // override param.sendToBidders or default true
|
|
38
|
+
defaultProfile: { // optional
|
|
39
|
+
webo_ctx: ['moon'],
|
|
40
|
+
webo_ds: ['bar']
|
|
41
|
+
},
|
|
42
|
+
//, onData: function (data, ...) { ...}
|
|
43
|
+
},
|
|
44
|
+
weboUserDataConf: {
|
|
45
|
+
accountId: 12345, // optional
|
|
46
|
+
setPrebidTargeting: true, // override param.setPrebidTargeting or default true
|
|
47
|
+
sendToBidders: true, // override param.sendToBidders or default true
|
|
48
|
+
defaultProfile: { // optional
|
|
49
|
+
webo_cs: ['Red'],
|
|
50
|
+
webo_audiences: ['bam']
|
|
51
|
+
},
|
|
52
|
+
localStorageProfileKey: 'webo_wam2gam_entry', // default
|
|
53
|
+
//, onData: function (data,...) { ...}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}]
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
</script>
|
|
61
|
+
<script>
|
|
62
|
+
var div_1_sizes = [
|
|
63
|
+
[300, 300]
|
|
64
|
+
];
|
|
65
|
+
|
|
66
|
+
var PREBID_TIMEOUT = 3000;
|
|
67
|
+
var FAILSAFE_TIMEOUT = 5000;
|
|
68
|
+
|
|
69
|
+
var adUnits = [
|
|
70
|
+
{
|
|
71
|
+
code: '/1056029/webo-ctx-prebid',
|
|
72
|
+
mediaTypes: {
|
|
73
|
+
banner: {
|
|
74
|
+
sizes: div_1_sizes
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
bids: [{
|
|
78
|
+
bidder: 'smartadserver',
|
|
79
|
+
params: {
|
|
80
|
+
siteId: 1234,
|
|
81
|
+
pageId: 1234,
|
|
82
|
+
formatId: 1234,
|
|
83
|
+
}
|
|
84
|
+
}, {
|
|
85
|
+
bidder: 'pubmatic',
|
|
86
|
+
params: {
|
|
87
|
+
publisherId: '32572',
|
|
88
|
+
}
|
|
89
|
+
}, {
|
|
90
|
+
bidder: 'appnexus',
|
|
91
|
+
params: {
|
|
92
|
+
placementId: 234234,
|
|
93
|
+
}
|
|
94
|
+
}, {
|
|
95
|
+
bidder: 'rubicon',
|
|
96
|
+
params: {
|
|
97
|
+
accountId: '14062',
|
|
98
|
+
siteId: '70608',
|
|
99
|
+
zoneId: '335918',
|
|
100
|
+
userId: '12346',
|
|
101
|
+
}
|
|
102
|
+
}, {
|
|
103
|
+
bidder: 'criteo',
|
|
104
|
+
params: {
|
|
105
|
+
zoneId: 234234,
|
|
106
|
+
networkId: 456456,
|
|
107
|
+
},
|
|
44
108
|
}]
|
|
45
109
|
}
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
</script>
|
|
49
|
-
<script>
|
|
50
|
-
var div_1_sizes = [
|
|
51
|
-
[300, 300]
|
|
52
|
-
];
|
|
53
|
-
|
|
54
|
-
var PREBID_TIMEOUT = 3000;
|
|
55
|
-
var FAILSAFE_TIMEOUT = 5000;
|
|
56
|
-
|
|
57
|
-
var adUnits = [
|
|
58
|
-
{
|
|
59
|
-
code: '/1056029/webo-ctx-prebid',
|
|
60
|
-
mediaTypes: {
|
|
61
|
-
banner: {
|
|
62
|
-
sizes: div_1_sizes
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
bids: [{
|
|
66
|
-
bidder: 'smartadserver',
|
|
67
|
-
params: {
|
|
68
|
-
placementId: 1
|
|
69
|
-
}
|
|
70
|
-
}]
|
|
71
|
-
}
|
|
72
110
|
];
|
|
73
111
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
var pbjs = pbjs || {};
|
|
82
|
-
pbjs.que = pbjs.que || [];
|
|
83
|
-
|
|
84
|
-
pbjs.que.push(function() {
|
|
85
|
-
pbjs.addAdUnits(adUnits);
|
|
86
|
-
pbjs.requestBids({
|
|
87
|
-
bidsBackHandler: initAdserver,
|
|
88
|
-
timeout: PREBID_TIMEOUT
|
|
112
|
+
// ======== DO NOT EDIT BELOW THIS LINE =========== //
|
|
113
|
+
var googletag = googletag || {};
|
|
114
|
+
googletag.cmd = googletag.cmd || [];
|
|
115
|
+
googletag.cmd.push(function () {
|
|
116
|
+
googletag.pubads().disableInitialLoad();
|
|
89
117
|
});
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
pbjs.
|
|
95
|
-
|
|
96
|
-
pbjs.
|
|
97
|
-
|
|
98
|
-
|
|
118
|
+
|
|
119
|
+
var pbjs = pbjs || {};
|
|
120
|
+
pbjs.que = pbjs.que || [];
|
|
121
|
+
|
|
122
|
+
pbjs.que.push(function () {
|
|
123
|
+
pbjs.addAdUnits(adUnits);
|
|
124
|
+
pbjs.requestBids({
|
|
125
|
+
bidsBackHandler: initAdserver,
|
|
126
|
+
timeout: PREBID_TIMEOUT
|
|
99
127
|
});
|
|
100
128
|
});
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
googletag.cmd.push(function() {
|
|
110
|
-
googletag.defineSlot('/1056029/webo-ctx-prebid', div_1_sizes, 'div-gpt-ad-1620653642627-0').addService(googletag.pubads());
|
|
111
|
-
googletag.pubads().disableInitialLoad();
|
|
112
|
-
googletag.enableServices();
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
</script>
|
|
116
|
-
|
|
117
|
-
<article>
|
|
118
|
-
<p>
|
|
119
|
-
test webo ctx using prebid.js
|
|
120
|
-
</p>
|
|
121
|
-
</article>
|
|
122
|
-
<h2>Basic Prebid.js Example</h2>
|
|
123
|
-
<h5>Div-1</h5>
|
|
124
|
-
<div id='div-gpt-ad-1620653642627-0' style='width: 300px; height: 300px;'>
|
|
125
|
-
<script type='text/javascript'>
|
|
126
|
-
googletag.cmd.push(function() {
|
|
127
|
-
googletag.display('div-gpt-ad-1620653642627-0');
|
|
129
|
+
|
|
130
|
+
function initAdserver() {
|
|
131
|
+
if (pbjs.initAdserverSet) return;
|
|
132
|
+
pbjs.initAdserverSet = true;
|
|
133
|
+
googletag.cmd.push(function () {
|
|
134
|
+
pbjs.que.push(function () {
|
|
135
|
+
pbjs.setTargetingForGPTAsync();
|
|
136
|
+
googletag.pubads().refresh();
|
|
128
137
|
});
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
// in case PBJS doesn't load
|
|
143
|
+
setTimeout(function () {
|
|
144
|
+
initAdserver();
|
|
145
|
+
}, FAILSAFE_TIMEOUT);
|
|
146
|
+
|
|
147
|
+
googletag.cmd.push(function () {
|
|
148
|
+
googletag.defineSlot('/1056029/webo-ctx-prebid', div_1_sizes, 'div-gpt-ad-1620653642627-0').addService(googletag.pubads());
|
|
149
|
+
googletag.pubads().disableInitialLoad();
|
|
150
|
+
googletag.enableServices();
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
</script>
|
|
154
|
+
|
|
155
|
+
<article>
|
|
156
|
+
<p>
|
|
157
|
+
test webo ctx using prebid.js
|
|
158
|
+
</p>
|
|
159
|
+
</article>
|
|
160
|
+
<h2>Basic Prebid.js Example</h2>
|
|
161
|
+
<h5>Div-1</h5>
|
|
162
|
+
<div id='div-gpt-ad-1620653642627-0' style='width: 300px; height: 300px;'>
|
|
163
|
+
<script type='text/javascript'>
|
|
164
|
+
googletag.cmd.push(function () {
|
|
165
|
+
googletag.display('div-gpt-ad-1620653642627-0');
|
|
166
|
+
});
|
|
167
|
+
</script>
|
|
168
|
+
</div>
|
|
169
|
+
<button onclick="googletag.cmd.push(function() { googletag.pubads().refresh(); });">
|
|
170
|
+
Show/Refresh Ad
|
|
171
|
+
</button>
|
|
134
172
|
</body>
|
|
135
|
-
|
|
173
|
+
|
|
174
|
+
</html>
|
|
@@ -2,37 +2,45 @@
|
|
|
2
2
|
// this script can be returned by an ad server delivering a cross domain iframe, into which the
|
|
3
3
|
// creative will be rendered, e.g. DFP delivering a SafeFrame
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
const windowLocation = window.location;
|
|
6
|
+
const urlParser = document.createElement('a');
|
|
7
7
|
urlParser.href = '%%PATTERN:url%%';
|
|
8
|
-
|
|
8
|
+
const publisherDomain = urlParser.protocol + '//' + urlParser.hostname;
|
|
9
|
+
const adId = '%%PATTERN:hb_adid%%';
|
|
10
|
+
|
|
11
|
+
function receiveMessage(ev) {
|
|
12
|
+
const origin = ev.origin || ev.originalEvent.origin;
|
|
13
|
+
if (origin === publisherDomain) {
|
|
14
|
+
renderAd(ev);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
9
17
|
|
|
10
18
|
function renderAd(ev) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
const key = ev.message ? 'message' : 'data';
|
|
20
|
+
let adObject = {};
|
|
21
|
+
try {
|
|
22
|
+
adObject = JSON.parse(ev[key]);
|
|
23
|
+
} catch (e) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
18
26
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
var width = adObject.width;
|
|
28
|
-
var height = adObject.height;
|
|
27
|
+
if (adObject.message && adObject.message === 'Prebid Response' &&
|
|
28
|
+
adObject.adId === adId) {
|
|
29
|
+
try {
|
|
30
|
+
const body = window.document.body;
|
|
31
|
+
const ad = adObject.ad;
|
|
32
|
+
const url = adObject.adUrl;
|
|
33
|
+
const width = adObject.width;
|
|
34
|
+
const height = adObject.height;
|
|
29
35
|
|
|
30
36
|
if (adObject.mediaType === 'video') {
|
|
37
|
+
signalRenderResult(false, {
|
|
38
|
+
reason: 'preventWritingOnMainDocument',
|
|
39
|
+
message: `Cannot render video ad ${adId}`
|
|
40
|
+
});
|
|
31
41
|
console.log('Error trying to write ad.');
|
|
32
|
-
} else
|
|
33
|
-
|
|
34
|
-
if (ad) {
|
|
35
|
-
var frame = document.createElement('iframe');
|
|
42
|
+
} else if (ad) {
|
|
43
|
+
const frame = document.createElement('iframe');
|
|
36
44
|
frame.setAttribute('FRAMEBORDER', 0);
|
|
37
45
|
frame.setAttribute('SCROLLING', 'no');
|
|
38
46
|
frame.setAttribute('MARGINHEIGHT', 0);
|
|
@@ -46,24 +54,50 @@ function renderAd(ev) {
|
|
|
46
54
|
frame.contentDocument.open();
|
|
47
55
|
frame.contentDocument.write(ad);
|
|
48
56
|
frame.contentDocument.close();
|
|
57
|
+
signalRenderResult(true);
|
|
49
58
|
} else if (url) {
|
|
50
59
|
body.insertAdjacentHTML('beforeend', '<IFRAME SRC="' + url + '" FRAMEBORDER="0" SCROLLING="no" MARGINHEIGHT="0" MARGINWIDTH="0" TOPMARGIN="0" LEFTMARGIN="0" ALLOWTRANSPARENCY="true" WIDTH="' + width + '" HEIGHT="' + height + '"></IFRAME>');
|
|
60
|
+
signalRenderResult(true);
|
|
51
61
|
} else {
|
|
52
|
-
|
|
62
|
+
signalRenderResult(false, {
|
|
63
|
+
reason: 'noAd',
|
|
64
|
+
message: `No ad for ${adId}`
|
|
65
|
+
});
|
|
66
|
+
console.log(`Error trying to write ad. No ad markup or adUrl for ${adId}`);
|
|
53
67
|
}
|
|
68
|
+
} catch (e) {
|
|
69
|
+
signalRenderResult(false, {reason: 'exception', message: e.message});
|
|
70
|
+
console.log(`Error in rendering ad`, e);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function signalRenderResult(success, {reason, message} = {}) {
|
|
75
|
+
const payload = {
|
|
76
|
+
message: 'Prebid Event',
|
|
77
|
+
adId,
|
|
78
|
+
event: success ? 'adRenderSucceeded' : 'adRenderFailed',
|
|
54
79
|
}
|
|
80
|
+
if (!success) {
|
|
81
|
+
payload.info = {reason, message};
|
|
82
|
+
}
|
|
83
|
+
window.parent.postMessage(JSON.stringify(payload), publisherDomain);
|
|
55
84
|
}
|
|
56
85
|
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
|
|
57
89
|
function requestAdFromPrebid() {
|
|
58
|
-
|
|
90
|
+
const message = JSON.stringify({
|
|
59
91
|
message: 'Prebid Request',
|
|
60
|
-
adId
|
|
92
|
+
adId
|
|
61
93
|
});
|
|
62
|
-
|
|
94
|
+
const channel = new MessageChannel();
|
|
95
|
+
channel.port1.onmessage = renderAd;
|
|
96
|
+
window.parent.postMessage(message, publisherDomain, [channel.port2]);
|
|
63
97
|
}
|
|
64
98
|
|
|
65
99
|
function listenAdFromPrebid() {
|
|
66
|
-
window.addEventListener('message',
|
|
100
|
+
window.addEventListener('message', receiveMessage, false);
|
|
67
101
|
}
|
|
68
102
|
|
|
69
103
|
listenAdFromPrebid();
|
package/modules/.submodules.json
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"dmdIdSystem",
|
|
12
12
|
"fabrickIdSystem",
|
|
13
13
|
"flocIdSystem",
|
|
14
|
+
"hadronIdSystem",
|
|
14
15
|
"haloIdSystem",
|
|
15
16
|
"id5IdSystem",
|
|
16
17
|
"identityLinkIdSystem",
|
|
@@ -32,6 +33,7 @@
|
|
|
32
33
|
"quantcastIdSystem",
|
|
33
34
|
"sharedIdSystem",
|
|
34
35
|
"tapadIdSystem",
|
|
36
|
+
"trustpidSystem",
|
|
35
37
|
"uid2IdSystem",
|
|
36
38
|
"unifiedIdSystem",
|
|
37
39
|
"verizonMediaIdSystem",
|
|
@@ -46,6 +48,7 @@
|
|
|
46
48
|
"browsiRtdProvider",
|
|
47
49
|
"dgkeywordRtdProvider",
|
|
48
50
|
"geoedgeRtdProvider",
|
|
51
|
+
"hadronRtdProvider",
|
|
49
52
|
"haloRtdProvider",
|
|
50
53
|
"iasRtdProvider",
|
|
51
54
|
"jwplayerRtdProvider",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import find from '
|
|
1
|
+
import find from 'prebidjs-polyfill/find.js';
|
|
2
2
|
import {
|
|
3
3
|
isInteger, isArray, deepAccess, mergeDeep, logWarn, logInfo, logError, getWindowTop, getWindowSelf, generateUUID, _map,
|
|
4
4
|
getDNT, parseUrl, getUniqueIdentifierStr, isNumber, cleanObj, isFn, inIframe, deepClone, getGptSlotInfoForAdUnitCode
|
|
@@ -268,8 +268,6 @@ function getSite(bidderRequest) {
|
|
|
268
268
|
} else if (refererInfo.stack && refererInfo.stack.length && refererInfo.stack[0]) {
|
|
269
269
|
// important note check if refererInfo.stack[0] is 'thruly' because a `null` value
|
|
270
270
|
// will be considered as "localhost" by the parseUrl function.
|
|
271
|
-
// As the isBidRequestValid returns false when it does not reach the referer
|
|
272
|
-
// this should never called.
|
|
273
271
|
const url = parseUrl(refererInfo.stack[0]);
|
|
274
272
|
domain = url.hostname;
|
|
275
273
|
}
|
|
@@ -873,12 +871,6 @@ export const spec = {
|
|
|
873
871
|
|
|
874
872
|
autoFillParams(bid);
|
|
875
873
|
|
|
876
|
-
if (!internal.getRefererInfo().reachedTop) {
|
|
877
|
-
logWarn(`${LOG_PREFIX} the main page url is unreachabled.`);
|
|
878
|
-
// internal.enqueue(debugData());
|
|
879
|
-
return false;
|
|
880
|
-
}
|
|
881
|
-
|
|
882
874
|
if (!(bid.params.organizationId && bid.params.site && bid.params.placement)) {
|
|
883
875
|
logWarn(`${LOG_PREFIX} at least one required param is missing.`);
|
|
884
876
|
// internal.enqueue(debugData());
|
|
@@ -18,7 +18,7 @@ Below, the list of Adagio params and where they can be set.
|
|
|
18
18
|
| ---------- | ------------- | ------------- |
|
|
19
19
|
| siteId | x |
|
|
20
20
|
| organizationId (obsolete) | | x
|
|
21
|
-
|
|
|
21
|
+
| site (obsolete) | | x
|
|
22
22
|
| pagetype | x | x
|
|
23
23
|
| environment | x | x
|
|
24
24
|
| category | x | x
|