prebid.js 6.1.0 → 6.5.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/.circleci/config.yml +1 -1
- package/README.md +1 -1
- package/browsers.json +13 -29
- package/gulpfile.js +87 -82
- package/integrationExamples/gpt/weboramaRtdProvider_example.html +23 -14
- package/karma.conf.maker.js +2 -2
- package/modules/33acrossBidAdapter.js +189 -102
- package/modules/adagioBidAdapter.js +1 -1
- package/modules/addefendBidAdapter.js +1 -0
- package/modules/adkernelBidAdapter.js +146 -61
- package/modules/adlooxAdServerVideo.js +2 -2
- package/modules/adlooxAnalyticsAdapter.js +4 -4
- package/modules/admanBidAdapter.js +1 -0
- package/modules/admixerBidAdapter.js +3 -2
- package/modules/adnuntiusBidAdapter.js +5 -2
- package/modules/adomikAnalyticsAdapter.js +6 -0
- package/modules/adplusBidAdapter.js +203 -0
- package/modules/adplusBidAdapter.md +39 -0
- package/modules/adxcgBidAdapter.js +311 -359
- package/modules/adxcgBidAdapter.md +22 -21
- package/modules/adyoulikeBidAdapter.js +20 -11
- package/modules/aniviewBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +19 -3
- package/modules/beachfrontBidAdapter.js +14 -17
- package/modules/beopBidAdapter.js +6 -4
- package/modules/bidViewability.js +3 -3
- package/modules/bidViewabilityIO.js +3 -3
- package/modules/bliinkBidAdapter.js +1 -1
- package/modules/colossussspBidAdapter.js +7 -0
- package/modules/compassBidAdapter.js +201 -0
- package/modules/compassBidAdapter.md +79 -0
- package/modules/consentManagement.js +7 -1
- package/modules/craftBidAdapter.js +5 -3
- package/modules/criteoBidAdapter.js +1 -1
- package/modules/currency.js +2 -2
- package/modules/cwireBidAdapter.js +3 -0
- package/modules/dailyhuntBidAdapter.js +435 -0
- package/modules/dailyhuntBidAdapter.md +4 -0
- package/modules/dchain.js +149 -0
- package/modules/dchain.md +45 -0
- package/modules/docereeBidAdapter.js +10 -1
- package/modules/docereeBidAdapter.md +2 -0
- package/modules/dspxBidAdapter.js +1 -1
- package/modules/emx_digitalBidAdapter.js +9 -1
- package/modules/engageyaBidAdapter.js +1 -1
- package/modules/feedadBidAdapter.js +2 -2
- package/modules/feedadBidAdapter.md +4 -2
- package/modules/freewheel-sspBidAdapter.js +6 -0
- package/modules/futureads.md +48 -0
- package/modules/glimpseBidAdapter.js +16 -3
- package/modules/goldbachBidAdapter.js +1176 -0
- package/modules/goldbachBidAdapter.md +151 -0
- package/modules/gptPreAuction.js +55 -7
- package/modules/gridBidAdapter.js +4 -3
- package/modules/gumgumBidAdapter.js +7 -3
- package/modules/improvedigitalBidAdapter.js +19 -3
- package/modules/instreamTracking.js +4 -4
- package/modules/intersectionRtdProvider.js +114 -0
- package/modules/invibesBidAdapter.js +64 -14
- package/modules/invibesBidAdapter.md +2 -1
- package/modules/ipromBidAdapter.js +79 -0
- package/modules/ixBidAdapter.js +53 -18
- package/modules/kinessoIdSystem.js +1 -1
- package/modules/limelightDigitalBidAdapter.js +3 -1
- package/modules/livewrappedAnalyticsAdapter.js +3 -1
- package/modules/livewrappedBidAdapter.js +8 -2
- package/modules/loglyliftBidAdapter.js +79 -0
- package/modules/loglyliftBidAdapter.md +55 -0
- package/modules/lotamePanoramaIdSystem.js +80 -8
- package/modules/luponmediaBidAdapter.js +570 -0
- package/modules/mediasquareBidAdapter.js +1 -9
- package/modules/missenaBidAdapter.js +89 -0
- package/modules/nextMillenniumBidAdapter.js +37 -7
- package/modules/optimeraRtdProvider.js +8 -1
- package/modules/ozoneBidAdapter.js +21 -64
- package/modules/prebidServerBidAdapter/index.js +16 -12
- package/modules/pubgeniusBidAdapter.js +1 -1
- package/modules/pubmaticBidAdapter.js +3 -3
- package/modules/pubxaiAnalyticsAdapter.js +17 -0
- package/modules/relaidoBidAdapter.js +86 -65
- package/modules/richaudienceBidAdapter.js +2 -3
- package/modules/rtdModule/index.js +48 -18
- package/modules/rubiconBidAdapter.js +31 -19
- package/modules/sharedIdSystem.js +27 -1
- package/modules/smaatoBidAdapter.js +4 -1
- package/modules/smartxBidAdapter.js +17 -1
- package/modules/tappxBidAdapter.js +3 -1
- package/modules/targetVideoBidAdapter.js +187 -0
- package/modules/targetVideoBidAdapter.md +34 -0
- package/modules/telariaBidAdapter.js +2 -2
- package/modules/trustxBidAdapter.js +8 -16
- package/modules/undertoneBidAdapter.js +8 -1
- package/modules/userId/index.js +27 -2
- package/modules/ventes.md +71 -0
- package/modules/ventesBidAdapter.js +104 -64
- package/modules/ventesBidAdapter.md +0 -1
- package/modules/vidoomyBidAdapter.js +16 -10
- package/modules/visxBidAdapter.js +19 -2
- package/modules/visxBidAdapter.md +4 -6
- package/modules/weboramaRtdProvider.js +288 -73
- package/modules/weboramaRtdProvider.md +27 -10
- package/modules/yahoosspBidAdapter.js +5 -1
- package/modules/yahoosspBidAdapter.md +1 -1
- package/modules/yieldmoBidAdapter.js +23 -5
- package/modules/yieldoneBidAdapter.js +115 -11
- package/modules/zetaSspBidAdapter.md +33 -1
- package/modules/zeta_global_sspAnalyticsAdapter.js +97 -0
- package/modules/zeta_global_sspAnalyticsAdapter.md +24 -0
- package/modules/zeta_global_sspBidAdapter.js +22 -1
- package/package.json +1 -1
- package/plugins/pbjsGlobals.js +28 -1
- package/src/auction.js +5 -4
- package/src/config.js +27 -3
- package/src/prebid.js +3 -2
- package/src/targeting.js +24 -3
- package/src/utils.js +53 -8
- package/test/helpers/prebidGlobal.js +1 -0
- package/test/spec/config_spec.js +279 -0
- package/test/spec/integration/faker/googletag.js +6 -0
- package/test/spec/modules/33acrossBidAdapter_spec.js +300 -78
- package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +35 -0
- package/test/spec/modules/adomikAnalyticsAdapter_spec.js +6 -0
- package/test/spec/modules/adplusBidAdapter_spec.js +213 -0
- package/test/spec/modules/adxcgBidAdapter_spec.js +820 -571
- package/test/spec/modules/adyoulikeBidAdapter_spec.js +75 -0
- package/test/spec/modules/appnexusBidAdapter_spec.js +49 -1
- package/test/spec/modules/beachfrontBidAdapter_spec.js +65 -1
- package/test/spec/modules/beopBidAdapter_spec.js +1 -1
- package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
- package/test/spec/modules/bidViewability_spec.js +4 -4
- package/test/spec/modules/colossussspBidAdapter_spec.js +9 -0
- package/test/spec/modules/compassBidAdapter_spec.js +397 -0
- package/test/spec/modules/consentManagement_spec.js +20 -0
- package/test/spec/modules/cwireBidAdapter_spec.js +10 -8
- package/test/spec/modules/dailyhuntBidAdapter_spec.js +404 -0
- package/test/spec/modules/dchain_spec.js +329 -0
- package/test/spec/modules/docereeBidAdapter_spec.js +9 -1
- package/test/spec/modules/emx_digitalBidAdapter_spec.js +10 -0
- package/test/spec/modules/feedadBidAdapter_spec.js +15 -0
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +19 -0
- package/test/spec/modules/goldbachBidAdapter_spec.js +1359 -0
- package/test/spec/modules/gptPreAuction_spec.js +177 -2
- package/test/spec/modules/gumgumBidAdapter_spec.js +6 -0
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -1
- package/test/spec/modules/intersectionRtdProvider_spec.js +141 -0
- package/test/spec/modules/invibesBidAdapter_spec.js +148 -4
- package/test/spec/modules/ipromBidAdapter_spec.js +195 -0
- package/test/spec/modules/ixBidAdapter_spec.js +112 -62
- package/test/spec/modules/limelightDigitalBidAdapter_spec.js +84 -23
- package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +22 -0
- package/test/spec/modules/livewrappedBidAdapter_spec.js +31 -0
- package/test/spec/modules/loglyliftBidAdapter_spec.js +172 -0
- package/test/spec/modules/lotamePanoramaIdSystem_spec.js +227 -0
- package/test/spec/modules/luponmediaBidAdapter_spec.js +412 -0
- package/test/spec/modules/mediasquareBidAdapter_spec.js +4 -4
- package/test/spec/modules/missenaBidAdapter_spec.js +134 -0
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +26 -1
- package/test/spec/modules/optimeraRtdProvider_spec.js +14 -1
- package/test/spec/modules/ozoneBidAdapter_spec.js +43 -31
- package/test/spec/modules/prebidServerBidAdapter_spec.js +43 -0
- package/test/spec/modules/pubgeniusBidAdapter_spec.js +3 -3
- package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
- package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +11 -0
- package/test/spec/modules/realTimeDataModule_spec.js +135 -49
- package/test/spec/modules/relaidoBidAdapter_spec.js +71 -63
- package/test/spec/modules/richaudienceBidAdapter_spec.js +2 -2
- package/test/spec/modules/rubiconBidAdapter_spec.js +65 -9
- package/test/spec/modules/sharedIdSystem_spec.js +52 -6
- package/test/spec/modules/smaatoBidAdapter_spec.js +31 -0
- package/test/spec/modules/smartxBidAdapter_spec.js +9 -0
- package/test/spec/modules/tappxBidAdapter_spec.js +4 -0
- package/test/spec/modules/targetVideoBidAdapter_spec.js +96 -0
- package/test/spec/modules/userId_spec.js +51 -0
- package/test/spec/modules/visxBidAdapter_spec.js +120 -4
- package/test/spec/modules/weboramaRtdProvider_spec.js +408 -214
- package/test/spec/modules/yahoosspBidAdapter_spec.js +28 -1
- package/test/spec/modules/yieldoneBidAdapter_spec.js +299 -53
- package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +427 -0
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +33 -1
- package/test/spec/unit/core/targeting_spec.js +116 -0
- package/test/spec/utils_spec.js +38 -0
- package/test/test_deps.js +3 -0
- package/test/test_index.js +1 -3
|
@@ -6,7 +6,7 @@ import { getStorageManager } from '../src/storageManager.js';
|
|
|
6
6
|
|
|
7
7
|
const BIDDER_CODE = 'relaido';
|
|
8
8
|
const BIDDER_DOMAIN = 'api.relaido.jp';
|
|
9
|
-
const ADAPTER_VERSION = '1.0.
|
|
9
|
+
const ADAPTER_VERSION = '1.0.7';
|
|
10
10
|
const DEFAULT_TTL = 300;
|
|
11
11
|
const UUID_KEY = 'relaido_uuid';
|
|
12
12
|
|
|
@@ -31,14 +31,14 @@ function isBidRequestValid(bid) {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
function buildRequests(validBidRequests, bidderRequest) {
|
|
34
|
-
|
|
34
|
+
const bids = [];
|
|
35
|
+
let imuid = null;
|
|
36
|
+
let bidDomain = null;
|
|
37
|
+
let bidder = null;
|
|
38
|
+
let count = null;
|
|
35
39
|
|
|
36
40
|
for (let i = 0; i < validBidRequests.length; i++) {
|
|
37
41
|
const bidRequest = validBidRequests[i];
|
|
38
|
-
const placementId = getBidIdParameter('placementId', bidRequest.params);
|
|
39
|
-
const bidDomain = bidRequest.params.domain || BIDDER_DOMAIN;
|
|
40
|
-
const bidUrl = `https://${bidDomain}/bid/v1/prebid/${placementId}`;
|
|
41
|
-
const uuid = getUuid();
|
|
42
42
|
let mediaType = '';
|
|
43
43
|
let width = 0;
|
|
44
44
|
let height = 0;
|
|
@@ -55,46 +55,63 @@ function buildRequests(validBidRequests, bidderRequest) {
|
|
|
55
55
|
mediaType = BANNER;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
58
|
+
if (!imuid) {
|
|
59
|
+
const pickImuid = deepAccess(bidRequest, 'userId.imuid');
|
|
60
|
+
if (pickImuid) {
|
|
61
|
+
imuid = pickImuid;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (!bidDomain) {
|
|
66
|
+
bidDomain = bidRequest.params.domain;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (!bidder) {
|
|
70
|
+
bidder = bidRequest.bidder
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (!bidder) {
|
|
74
|
+
bidder = bidRequest.bidder
|
|
75
|
+
}
|
|
74
76
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
payload.imuid = imuid;
|
|
77
|
+
if (!count) {
|
|
78
|
+
count = bidRequest.bidRequestsCount;
|
|
78
79
|
}
|
|
79
80
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
options: {
|
|
88
|
-
withCredentials: true
|
|
89
|
-
},
|
|
90
|
-
bidId: bidRequest.bidId,
|
|
81
|
+
bids.push({
|
|
82
|
+
bid_id: bidRequest.bidId,
|
|
83
|
+
placement_id: getBidIdParameter('placementId', bidRequest.params),
|
|
84
|
+
transaction_id: bidRequest.transactionId,
|
|
85
|
+
bidder_request_id: bidRequest.bidderRequestId,
|
|
86
|
+
ad_unit_code: bidRequest.adUnitCode,
|
|
87
|
+
auction_id: bidRequest.auctionId,
|
|
91
88
|
player: bidRequest.params.player,
|
|
92
|
-
width:
|
|
93
|
-
height:
|
|
94
|
-
|
|
89
|
+
width: width,
|
|
90
|
+
height: height,
|
|
91
|
+
media_type: mediaType
|
|
95
92
|
});
|
|
96
93
|
}
|
|
97
|
-
|
|
94
|
+
|
|
95
|
+
const data = JSON.stringify({
|
|
96
|
+
version: ADAPTER_VERSION,
|
|
97
|
+
bids: bids,
|
|
98
|
+
timeout_ms: bidderRequest.timeout,
|
|
99
|
+
bidder: bidder,
|
|
100
|
+
bid_requests_count: count,
|
|
101
|
+
uuid: getUuid(),
|
|
102
|
+
pv: '$prebid.version$',
|
|
103
|
+
imuid: imuid,
|
|
104
|
+
ref: bidderRequest.refererInfo.referer
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
return {
|
|
108
|
+
method: 'POST',
|
|
109
|
+
url: `https://${bidDomain || BIDDER_DOMAIN}/bid/v1/sprebid`,
|
|
110
|
+
options: {
|
|
111
|
+
withCredentials: true
|
|
112
|
+
},
|
|
113
|
+
data: data
|
|
114
|
+
};
|
|
98
115
|
}
|
|
99
116
|
|
|
100
117
|
function interpretResponse(serverResponse, bidRequest) {
|
|
@@ -105,34 +122,38 @@ function interpretResponse(serverResponse, bidRequest) {
|
|
|
105
122
|
}
|
|
106
123
|
|
|
107
124
|
const playerUrl = bidRequest.player || body.playerUrl;
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
125
|
+
|
|
126
|
+
for (const res of body.ads) {
|
|
127
|
+
let bidResponse = {
|
|
128
|
+
requestId: res.bidId,
|
|
129
|
+
width: res.width,
|
|
130
|
+
height: res.height,
|
|
131
|
+
cpm: res.price,
|
|
132
|
+
currency: res.currency,
|
|
133
|
+
creativeId: res.creativeId,
|
|
134
|
+
dealId: body.dealId || '',
|
|
135
|
+
ttl: body.ttl || DEFAULT_TTL,
|
|
136
|
+
netRevenue: true,
|
|
137
|
+
mediaType: res.mediaType || VIDEO,
|
|
138
|
+
meta: {
|
|
139
|
+
advertiserDomains: res.adomain || [],
|
|
140
|
+
mediaType: VIDEO
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
if (bidResponse.mediaType === VIDEO) {
|
|
145
|
+
bidResponse.vastXml = res.vast;
|
|
146
|
+
bidResponse.renderer = newRenderer(res.bidId, playerUrl);
|
|
147
|
+
} else {
|
|
148
|
+
const playerTag = createPlayerTag(playerUrl);
|
|
149
|
+
const renderTag = createRenderTag(res.width, res.height, res.vast);
|
|
150
|
+
bidResponse.ad = `<div id="rop-prebid">${playerTag}${renderTag}</div>`;
|
|
124
151
|
}
|
|
125
|
-
|
|
126
|
-
if (mediaType === VIDEO) {
|
|
127
|
-
bidResponse.vastXml = body.vast;
|
|
128
|
-
bidResponse.renderer = newRenderer(bidRequest.bidId, playerUrl);
|
|
129
|
-
} else {
|
|
130
|
-
const playerTag = createPlayerTag(playerUrl);
|
|
131
|
-
const renderTag = createRenderTag(bidRequest.width, bidRequest.height, body.vast);
|
|
132
|
-
bidResponse.ad = `<div id="rop-prebid">${playerTag}${renderTag}</div>`;
|
|
152
|
+
bidResponses.push(bidResponse);
|
|
133
153
|
}
|
|
134
|
-
bidResponses.push(bidResponse);
|
|
135
154
|
|
|
155
|
+
// eslint-disable-next-line no-console
|
|
156
|
+
console.log(JSON.stringify(bidResponses));
|
|
136
157
|
return bidResponses;
|
|
137
158
|
}
|
|
138
159
|
|
|
@@ -58,11 +58,10 @@ export const spec = {
|
|
|
58
58
|
REFERER = (typeof bidderRequest.refererInfo.referer != 'undefined' ? encodeURIComponent(bidderRequest.refererInfo.referer) : null)
|
|
59
59
|
|
|
60
60
|
payload.gdpr_consent = '';
|
|
61
|
-
payload.gdpr =
|
|
61
|
+
payload.gdpr = bidderRequest.gdprConsent.gdprApplies;
|
|
62
62
|
|
|
63
63
|
if (bidderRequest && bidderRequest.gdprConsent) {
|
|
64
64
|
payload.gdpr_consent = bidderRequest.gdprConsent.consentString;
|
|
65
|
-
payload.gdpr = bidderRequest.gdprConsent.gdprApplies;
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
var payloadString = JSON.stringify(payload);
|
|
@@ -296,7 +295,7 @@ function raiGetFloor(bid, config) {
|
|
|
296
295
|
} else if (typeof bid.getFloor == 'function') {
|
|
297
296
|
let floorSpec = bid.getFloor({
|
|
298
297
|
currency: config.getConfig('currency.adServerCurrency'),
|
|
299
|
-
mediaType: bid.
|
|
298
|
+
mediaType: typeof bid.mediaTypes['banner'] == 'object' ? 'banner' : 'video',
|
|
300
299
|
size: '*'
|
|
301
300
|
})
|
|
302
301
|
|
|
@@ -98,6 +98,15 @@
|
|
|
98
98
|
* @param {UserConsentData} userConsent
|
|
99
99
|
*/
|
|
100
100
|
|
|
101
|
+
/**
|
|
102
|
+
* @function?
|
|
103
|
+
* @summary on bid requested event
|
|
104
|
+
* @name RtdSubmodule#onBidRequestEvent
|
|
105
|
+
* @param {Object} data
|
|
106
|
+
* @param {SubmoduleConfig} config
|
|
107
|
+
* @param {UserConsentData} userConsent
|
|
108
|
+
*/
|
|
109
|
+
|
|
101
110
|
/**
|
|
102
111
|
* @interface ModuleConfig
|
|
103
112
|
*/
|
|
@@ -143,7 +152,7 @@
|
|
|
143
152
|
|
|
144
153
|
import {config} from '../../src/config.js';
|
|
145
154
|
import {module} from '../../src/hook.js';
|
|
146
|
-
import {
|
|
155
|
+
import {logError, logWarn} from '../../src/utils.js';
|
|
147
156
|
import events from '../../src/events.js';
|
|
148
157
|
import CONSTANTS from '../../src/constants.json';
|
|
149
158
|
import {gdprDataHandler, uspDataHandler} from '../../src/adapterManager.js';
|
|
@@ -164,13 +173,50 @@ let _dataProviders = [];
|
|
|
164
173
|
let _userConsent;
|
|
165
174
|
|
|
166
175
|
/**
|
|
167
|
-
*
|
|
176
|
+
* Register a RTD submodule.
|
|
177
|
+
*
|
|
168
178
|
* @param {RtdSubmodule} submodule
|
|
179
|
+
* @returns {function()} a de-registration function that will unregister the module when called.
|
|
169
180
|
*/
|
|
170
181
|
export function attachRealTimeDataProvider(submodule) {
|
|
171
182
|
registeredSubModules.push(submodule);
|
|
183
|
+
return function detach() {
|
|
184
|
+
const idx = registeredSubModules.indexOf(submodule)
|
|
185
|
+
if (idx >= 0) {
|
|
186
|
+
registeredSubModules.splice(idx, 1);
|
|
187
|
+
initSubModules();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
172
190
|
}
|
|
173
191
|
|
|
192
|
+
/**
|
|
193
|
+
* call each sub module event function by config order
|
|
194
|
+
*/
|
|
195
|
+
const setEventsListeners = (function () {
|
|
196
|
+
let registered = false;
|
|
197
|
+
return function setEventsListeners() {
|
|
198
|
+
if (!registered) {
|
|
199
|
+
Object.entries({
|
|
200
|
+
[CONSTANTS.EVENTS.AUCTION_INIT]: 'onAuctionInitEvent',
|
|
201
|
+
[CONSTANTS.EVENTS.AUCTION_END]: 'onAuctionEndEvent',
|
|
202
|
+
[CONSTANTS.EVENTS.BID_RESPONSE]: 'onBidResponseEvent',
|
|
203
|
+
[CONSTANTS.EVENTS.BID_REQUESTED]: 'onBidRequestEvent'
|
|
204
|
+
}).forEach(([ev, handler]) => {
|
|
205
|
+
events.on(ev, (args) => {
|
|
206
|
+
subModules.forEach(sm => {
|
|
207
|
+
try {
|
|
208
|
+
sm[handler] && sm[handler](args, sm.config, _userConsent)
|
|
209
|
+
} catch (e) {
|
|
210
|
+
logError(`RTD provider '${sm.name}': error in '${handler}':`, e);
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
})
|
|
214
|
+
});
|
|
215
|
+
registered = true;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
})();
|
|
219
|
+
|
|
174
220
|
export function init(config) {
|
|
175
221
|
const confListener = config.getConfig(MODULE_NAME, ({realTimeData}) => {
|
|
176
222
|
if (!realTimeData.dataProviders) {
|
|
@@ -211,22 +257,6 @@ function initSubModules() {
|
|
|
211
257
|
subModules = subModulesByOrder;
|
|
212
258
|
}
|
|
213
259
|
|
|
214
|
-
/**
|
|
215
|
-
* call each sub module event function by config order
|
|
216
|
-
*/
|
|
217
|
-
function setEventsListeners() {
|
|
218
|
-
events.on(CONSTANTS.EVENTS.AUCTION_INIT, (args) => {
|
|
219
|
-
subModules.forEach(sm => { sm.onAuctionInitEvent && sm.onAuctionInitEvent(args, sm.config, _userConsent) })
|
|
220
|
-
});
|
|
221
|
-
events.on(CONSTANTS.EVENTS.AUCTION_END, (args) => {
|
|
222
|
-
getAdUnitTargeting(args);
|
|
223
|
-
subModules.forEach(sm => { sm.onAuctionEndEvent && sm.onAuctionEndEvent(args, sm.config, _userConsent) })
|
|
224
|
-
});
|
|
225
|
-
events.on(CONSTANTS.EVENTS.BID_RESPONSE, (args) => {
|
|
226
|
-
subModules.forEach(sm => { sm.onBidResponseEvent && sm.onBidResponseEvent(args, sm.config, _userConsent) })
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
|
|
230
260
|
/**
|
|
231
261
|
* loop through configured data providers If the data provider has registered getBidRequestData,
|
|
232
262
|
* call it, providing reqBidsConfigObj, consent data and module params
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mergeDeep, _each, logError, deepAccess, deepSetValue, isStr, isNumber, logWarn, convertTypes, isArray, parseSizesInput, logMessage } from '../src/utils.js';
|
|
1
|
+
import { mergeDeep, _each, logError, deepAccess, deepSetValue, isStr, isNumber, logWarn, convertTypes, isArray, parseSizesInput, logMessage, formatQS } from '../src/utils.js';
|
|
2
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import {config} from '../src/config.js';
|
|
4
4
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
@@ -765,21 +765,23 @@ export const spec = {
|
|
|
765
765
|
getUserSyncs: function (syncOptions, responses, gdprConsent, uspConsent) {
|
|
766
766
|
if (!hasSynced && syncOptions.iframeEnabled) {
|
|
767
767
|
// data is only assigned if params are available to pass to syncEndpoint
|
|
768
|
-
let params =
|
|
768
|
+
let params = {};
|
|
769
769
|
|
|
770
|
-
if (gdprConsent
|
|
771
|
-
// add 'gdpr' only if 'gdprApplies' is defined
|
|
770
|
+
if (gdprConsent) {
|
|
772
771
|
if (typeof gdprConsent.gdprApplies === 'boolean') {
|
|
773
|
-
params
|
|
774
|
-
}
|
|
775
|
-
|
|
772
|
+
params['gdpr'] = Number(gdprConsent.gdprApplies);
|
|
773
|
+
}
|
|
774
|
+
if (typeof gdprConsent.consentString === 'string') {
|
|
775
|
+
params['gdpr_consent'] = gdprConsent.consentString;
|
|
776
776
|
}
|
|
777
777
|
}
|
|
778
778
|
|
|
779
779
|
if (uspConsent) {
|
|
780
|
-
params
|
|
780
|
+
params['us_privacy'] = encodeURIComponent(uspConsent);
|
|
781
781
|
}
|
|
782
782
|
|
|
783
|
+
params = Object.keys(params).length ? `?${formatQS(params)}` : '';
|
|
784
|
+
|
|
783
785
|
hasSynced = true;
|
|
784
786
|
return {
|
|
785
787
|
type: 'iframe',
|
|
@@ -992,6 +994,8 @@ function applyFPD(bidRequest, mediaType, data) {
|
|
|
992
994
|
|
|
993
995
|
let fpd = mergeDeep({}, config.getConfig('ortb2') || {}, BID_FPD);
|
|
994
996
|
let impData = deepAccess(bidRequest.ortb2Imp, 'ext.data') || {};
|
|
997
|
+
|
|
998
|
+
const gpid = deepAccess(bidRequest, 'ortb2Imp.ext.gpid');
|
|
995
999
|
const SEGTAX = {user: [4], site: [1, 2, 5, 6]};
|
|
996
1000
|
const MAP = {user: 'tg_v.', site: 'tg_i.', adserver: 'tg_i.dfp_ad_unit_code', pbadslot: 'tg_i.pbadslot', keywords: 'kw'};
|
|
997
1001
|
const validate = function(prop, key, parentName) {
|
|
@@ -1020,16 +1024,6 @@ function applyFPD(bidRequest, mediaType, data) {
|
|
|
1020
1024
|
data[loc] = (data[loc]) ? data[loc].concat(',', val) : val;
|
|
1021
1025
|
}
|
|
1022
1026
|
|
|
1023
|
-
Object.keys(impData).forEach((key) => {
|
|
1024
|
-
if (key === 'adserver') {
|
|
1025
|
-
['name', 'adslot'].forEach(prop => {
|
|
1026
|
-
if (impData[key][prop]) impData[key][prop] = impData[key][prop].toString().replace(/^\/+/, '');
|
|
1027
|
-
});
|
|
1028
|
-
} else if (key === 'pbadslot') {
|
|
1029
|
-
impData[key] = impData[key].toString().replace(/^\/+/, '');
|
|
1030
|
-
}
|
|
1031
|
-
});
|
|
1032
|
-
|
|
1033
1027
|
if (mediaType === BANNER) {
|
|
1034
1028
|
['site', 'user'].forEach(name => {
|
|
1035
1029
|
Object.keys(fpd[name]).forEach((key) => {
|
|
@@ -1045,12 +1039,30 @@ function applyFPD(bidRequest, mediaType, data) {
|
|
|
1045
1039
|
});
|
|
1046
1040
|
});
|
|
1047
1041
|
Object.keys(impData).forEach((key) => {
|
|
1048
|
-
(key
|
|
1042
|
+
if (key !== 'adserver') {
|
|
1043
|
+
addBannerData(impData[key], 'site', key);
|
|
1044
|
+
} else if (impData[key].name === 'gam') {
|
|
1045
|
+
addBannerData(impData[key].adslot, name, key)
|
|
1046
|
+
}
|
|
1049
1047
|
});
|
|
1048
|
+
|
|
1049
|
+
// add in gpid
|
|
1050
|
+
if (gpid) {
|
|
1051
|
+
data['p_gpid'] = gpid;
|
|
1052
|
+
}
|
|
1053
|
+
|
|
1054
|
+
// only send one of pbadslot or dfp adunit code (prefer pbadslot)
|
|
1055
|
+
if (data['tg_i.pbadslot']) {
|
|
1056
|
+
delete data['tg_i.dfp_ad_unit_code'];
|
|
1057
|
+
}
|
|
1050
1058
|
} else {
|
|
1051
1059
|
if (Object.keys(impData).length) {
|
|
1052
1060
|
mergeDeep(data.imp[0].ext, {data: impData});
|
|
1053
1061
|
}
|
|
1062
|
+
// add in gpid
|
|
1063
|
+
if (gpid) {
|
|
1064
|
+
data.imp[0].ext.gpid = gpid;
|
|
1065
|
+
}
|
|
1054
1066
|
|
|
1055
1067
|
mergeDeep(data, fpd);
|
|
1056
1068
|
}
|
|
@@ -11,7 +11,7 @@ import { coppaDataHandler } from '../src/adapterManager.js';
|
|
|
11
11
|
import {getStorageManager} from '../src/storageManager.js';
|
|
12
12
|
|
|
13
13
|
const GVLID = 887;
|
|
14
|
-
const storage = getStorageManager(GVLID, 'pubCommonId');
|
|
14
|
+
export const storage = getStorageManager(GVLID, 'pubCommonId');
|
|
15
15
|
const COOKIE = 'cookie';
|
|
16
16
|
const LOCAL_STORAGE = 'html5';
|
|
17
17
|
const OPTOUT_NAME = '_pubcid_optout';
|
|
@@ -171,7 +171,33 @@ export const sharedIdSystemSubmodule = {
|
|
|
171
171
|
return {id: storedId};
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
|
+
},
|
|
175
|
+
|
|
176
|
+
domainOverride: function () {
|
|
177
|
+
const domainElements = document.domain.split('.');
|
|
178
|
+
const cookieName = `_gd${Date.now()}`;
|
|
179
|
+
for (let i = 0, topDomain, testCookie; i < domainElements.length; i++) {
|
|
180
|
+
const nextDomain = domainElements.slice(i).join('.');
|
|
181
|
+
|
|
182
|
+
// write test cookie
|
|
183
|
+
storage.setCookie(cookieName, '1', undefined, undefined, nextDomain);
|
|
184
|
+
|
|
185
|
+
// read test cookie to verify domain was valid
|
|
186
|
+
testCookie = storage.getCookie(cookieName);
|
|
187
|
+
|
|
188
|
+
// delete test cookie
|
|
189
|
+
storage.setCookie(cookieName, '', 'Thu, 01 Jan 1970 00:00:01 GMT', undefined, nextDomain);
|
|
190
|
+
|
|
191
|
+
if (testCookie === '1') {
|
|
192
|
+
// cookie was written successfully using test domain so the topDomain is updated
|
|
193
|
+
topDomain = nextDomain;
|
|
194
|
+
} else {
|
|
195
|
+
// cookie failed to write using test domain so exit by returning the topDomain
|
|
196
|
+
return topDomain;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
174
199
|
}
|
|
200
|
+
|
|
175
201
|
};
|
|
176
202
|
|
|
177
203
|
submodule('userId', sharedIdSystemSubmodule);
|
|
@@ -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.
|
|
8
|
+
const SMAATO_CLIENT = 'prebid_js_$prebid.version$_1.6'
|
|
9
9
|
const CURRENCY = 'USD';
|
|
10
10
|
|
|
11
11
|
const buildOpenRtbBidRequest = (bidRequest, bidderRequest) => {
|
|
@@ -304,6 +304,7 @@ function createBannerImp(bidRequest) {
|
|
|
304
304
|
id: bidRequest.bidId,
|
|
305
305
|
tagid: deepAccess(bidRequest, 'params.adspaceId'),
|
|
306
306
|
bidfloor: getBidFloor(bidRequest, BANNER, adUnitSizes),
|
|
307
|
+
instl: deepAccess(bidRequest.ortb2Imp, 'instl'),
|
|
307
308
|
banner: {
|
|
308
309
|
w: sizes[0].w,
|
|
309
310
|
h: sizes[0].h,
|
|
@@ -319,6 +320,7 @@ function createVideoImp(bidRequest, videoMediaType) {
|
|
|
319
320
|
id: bidRequest.bidId,
|
|
320
321
|
tagid: deepAccess(bidRequest, 'params.adspaceId'),
|
|
321
322
|
bidfloor: getBidFloor(bidRequest, VIDEO, videoMediaType.playerSize),
|
|
323
|
+
instl: deepAccess(bidRequest.ortb2Imp, 'instl'),
|
|
322
324
|
video: {
|
|
323
325
|
mimes: videoMediaType.mimes,
|
|
324
326
|
minduration: videoMediaType.minduration,
|
|
@@ -346,6 +348,7 @@ function createAdPodImp(bidRequest, videoMediaType) {
|
|
|
346
348
|
id: bidRequest.bidId,
|
|
347
349
|
tagid: tagid,
|
|
348
350
|
bidfloor: getBidFloor(bidRequest, VIDEO, videoMediaType.playerSize),
|
|
351
|
+
instl: deepAccess(bidRequest.ortb2Imp, 'instl'),
|
|
349
352
|
video: {
|
|
350
353
|
w: videoMediaType.playerSize[0][0],
|
|
351
354
|
h: videoMediaType.playerSize[0][1],
|
|
@@ -161,11 +161,20 @@ export const spec = {
|
|
|
161
161
|
domain: domain,
|
|
162
162
|
publisher: {
|
|
163
163
|
id: publisherId
|
|
164
|
+
},
|
|
165
|
+
content: {
|
|
166
|
+
ext: {
|
|
167
|
+
prebid: {
|
|
168
|
+
name: 'pbjs',
|
|
169
|
+
version: '$prebid.version$'
|
|
170
|
+
}
|
|
171
|
+
}
|
|
164
172
|
}
|
|
165
173
|
},
|
|
166
174
|
device: device,
|
|
167
175
|
at: at,
|
|
168
|
-
cur: cur
|
|
176
|
+
cur: cur,
|
|
177
|
+
ext: {}
|
|
169
178
|
};
|
|
170
179
|
|
|
171
180
|
const userExt = {};
|
|
@@ -194,6 +203,8 @@ export const spec = {
|
|
|
194
203
|
};
|
|
195
204
|
}
|
|
196
205
|
|
|
206
|
+
// requestPayload.user.ext.ver = pbjs.version;
|
|
207
|
+
|
|
197
208
|
// Targeting
|
|
198
209
|
if (getBidIdParameter('data', bid.params.user)) {
|
|
199
210
|
var targetingarr = [];
|
|
@@ -336,6 +347,7 @@ function createOutstreamConfig(bid) {
|
|
|
336
347
|
let confTitle = getBidIdParameter('title', bid.renderer.config.outstream_options);
|
|
337
348
|
let confSkipOffset = getBidIdParameter('skipOffset', bid.renderer.config.outstream_options);
|
|
338
349
|
let confDesiredBitrate = getBidIdParameter('desiredBitrate', bid.renderer.config.outstream_options);
|
|
350
|
+
let confVisibilityThreshold = getBidIdParameter('visibilityThreshold', bid.renderer.config.outstream_options);
|
|
339
351
|
let elementId = getBidIdParameter('slot', bid.renderer.config.outstream_options) || bid.adUnitCode;
|
|
340
352
|
|
|
341
353
|
logMessage('[SMARTX][renderer] Handle SmartX outstream renderer');
|
|
@@ -384,6 +396,10 @@ function createOutstreamConfig(bid) {
|
|
|
384
396
|
smartPlayObj.desiredBitrate = confDesiredBitrate;
|
|
385
397
|
}
|
|
386
398
|
|
|
399
|
+
if (confVisibilityThreshold) {
|
|
400
|
+
smartPlayObj.visibilityThreshold = confVisibilityThreshold;
|
|
401
|
+
}
|
|
402
|
+
|
|
387
403
|
smartPlayObj.adResponse = bid.vastContent;
|
|
388
404
|
|
|
389
405
|
const divID = '[id="' + elementId + '"]';
|
|
@@ -7,9 +7,10 @@ import { config } from '../src/config.js';
|
|
|
7
7
|
import { Renderer } from '../src/Renderer.js';
|
|
8
8
|
|
|
9
9
|
const BIDDER_CODE = 'tappx';
|
|
10
|
+
const GVLID_CODE = 628;
|
|
10
11
|
const TTL = 360;
|
|
11
12
|
const CUR = 'USD';
|
|
12
|
-
const TAPPX_BIDDER_VERSION = '0.1.
|
|
13
|
+
const TAPPX_BIDDER_VERSION = '0.1.1005';
|
|
13
14
|
const TYPE_CNN = 'prebidjs';
|
|
14
15
|
const LOG_PREFIX = '[TAPPX]: ';
|
|
15
16
|
const VIDEO_SUPPORT = ['instream', 'outstream'];
|
|
@@ -42,6 +43,7 @@ var hostDomain;
|
|
|
42
43
|
|
|
43
44
|
export const spec = {
|
|
44
45
|
code: BIDDER_CODE,
|
|
46
|
+
gvlid: GVLID_CODE,
|
|
45
47
|
supportedMediaTypes: [BANNER, VIDEO],
|
|
46
48
|
|
|
47
49
|
/**
|