prebid.js 7.44.0 → 7.46.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/acuityAdsBidAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/admaticBidAdapter.js +1 -1
- package/dist/adnuntiusBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/appushBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/beyondmediaBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/braveBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/brightcomBidAdapter.js +1 -1
- package/dist/brightcomSSPBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/coinzillaBidAdapter.js +1 -1
- package/dist/compassBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectIdSystem.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/contentexchangeBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/debugging-standalone.js +1 -1
- package/dist/dependencies.json +15 -0
- package/dist/domainOverrideToRootDomain.js +1 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/eskimiBidAdapter.js +1 -0
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/globalsunBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/growthCodeIdSystem.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.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/iqzoneBidAdapter.js +1 -1
- package/dist/ivsBidAdapter.js +1 -0
- package/dist/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/jwplayerVideoProvider.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/koblerBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/kulturemediaBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/luponmediaBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mathildeadsBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/nativoBidAdapter.js +1 -1
- package/dist/neuwoRtdProvider.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +165 -162
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/onomagicBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/openxOrtbBidAdapter.js +1 -1
- package/dist/operaadsBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/ortbConverter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/pairIdSystem.js +1 -0
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxBidAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharedIdSystem.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smarthubBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/truereachBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/videoheroesBidAdapter.js +1 -1
- package/dist/vidoomyBidAdapter.js +1 -1
- package/dist/visiblemeasuresBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vrtcalBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yieldoneBidAdapter.js +1 -1
- package/integrationExamples/gpt/fledge_example.html +103 -0
- package/integrationExamples/gpt/prebidServer_fledge_example.html +111 -0
- package/libraries/domainOverrideToRootDomain/index.js +39 -0
- package/libraries/ortbConverter/processors/video.js +1 -0
- package/modules/acuityAdsBidAdapter.js +1 -1
- package/modules/admaticBidAdapter.js +7 -2
- package/modules/adnuntiusBidAdapter.js +3 -1
- package/modules/amxBidAdapter.js +1 -1
- package/modules/amxIdSystem.js +23 -20
- package/modules/amxIdSystem.md +7 -7
- package/modules/appnexusBidAdapter.js +108 -102
- package/modules/appushBidAdapter.js +1 -1
- package/modules/beyondmediaBidAdapter.js +1 -1
- package/modules/bidwatchAnalyticsAdapter.js +2 -0
- package/modules/braveBidAdapter.js +1 -1
- package/modules/brightcomBidAdapter.js +1 -1
- package/modules/brightcomSSPBidAdapter.js +1 -1
- package/modules/coinzillaBidAdapter.js +1 -2
- package/modules/compassBidAdapter.js +1 -1
- package/modules/connectIdSystem.js +96 -21
- package/modules/connectIdSystem.md +6 -5
- package/modules/contentexchangeBidAdapter.js +1 -1
- package/modules/conversantBidAdapter.js +3 -0
- package/modules/criteoBidAdapter.js +5 -1
- package/modules/eskimiBidAdapter.js +72 -0
- package/modules/eskimiBidAdapter.md +34 -0
- package/modules/freewheel-sspBidAdapter.js +8 -0
- package/modules/glimpseBidAdapter.js +1 -2
- package/modules/globalsunBidAdapter.js +1 -1
- package/modules/gridBidAdapter.js +43 -20
- package/modules/growthCodeIdSystem.js +18 -15
- package/modules/gumgumBidAdapter.js +1 -1
- package/modules/iqzoneBidAdapter.js +1 -1
- package/modules/ivsBidAdapter.js +85 -0
- package/modules/ivsBidAdapter.md +34 -0
- package/modules/ixBidAdapter.js +72 -105
- package/modules/jwplayerVideoProvider.js +25 -32
- package/modules/kargoBidAdapter.js +473 -246
- package/modules/koblerBidAdapter.js +1 -2
- package/modules/kueezBidAdapter.js +1 -1
- package/modules/kueezRtbBidAdapter.js +16 -4
- package/modules/liveIntentIdSystem.js +8 -0
- package/modules/luponmediaBidAdapter.js +1 -1
- package/modules/magniteAnalyticsAdapter.js +76 -3
- package/modules/mathildeadsBidAdapter.js +1 -1
- package/modules/medianetBidAdapter.js +1 -1
- package/modules/mediasquareBidAdapter.js +2 -1
- package/modules/mgidBidAdapter.js +178 -26
- package/modules/minutemediaBidAdapter.js +1 -1
- package/modules/minutemediaplusBidAdapter.js +16 -4
- package/modules/nativoBidAdapter.js +110 -21
- package/modules/neuwoRtdProvider.js +0 -2
- package/modules/oguryBidAdapter.js +3 -2
- package/modules/onomagicBidAdapter.js +1 -2
- package/modules/openxBidAdapter.js +192 -563
- package/modules/openxBidAdapter.md +22 -20
- package/modules/openxOrtbBidAdapter.js +13 -11
- package/modules/openxOrtbBidAdapter.md +5 -3
- package/modules/operaadsBidAdapter.js +1 -1
- package/modules/pairIdSystem.js +79 -0
- package/modules/pubmaticBidAdapter.js +13 -10
- package/modules/pubxBidAdapter.js +5 -2
- package/modules/riseBidAdapter.js +1 -1
- package/modules/sharedIdSystem.js +4 -27
- package/modules/sharethroughBidAdapter.js +1 -1
- package/modules/shinezBidAdapter.js +1 -1
- package/modules/smarthubBidAdapter.js +1 -1
- package/modules/synacormediaBidAdapter.js +1 -3
- package/modules/truereachBidAdapter.js +1 -2
- package/modules/userId/eids.js +24 -0
- package/modules/userId/eids.md +16 -0
- package/modules/videoheroesBidAdapter.js +1 -1
- package/modules/vidoomyBidAdapter.js +33 -4
- package/modules/visiblemeasuresBidAdapter.js +1 -1
- package/modules/vrtcalBidAdapter.js +1 -1
- package/modules/yieldmoBidAdapter.js +15 -5
- package/modules/yieldoneBidAdapter.js +1 -1
- package/package.json +1 -1
- package/src/Renderer.js +2 -1
- package/src/config.js +78 -127
- package/src/native.js +5 -1
- package/test/spec/auctionmanager_spec.js +2 -2
- package/test/spec/libraries/domainOverrideToRootDomain/index_spec.js +77 -0
- package/test/spec/modules/1plusXRtdProvider_spec.js +8 -7
- package/test/spec/modules/acuityAdsBidAdapter_spec.js +2 -1
- package/test/spec/modules/adagioBidAdapter_spec.js +0 -25
- package/test/spec/modules/admaticBidAdapter_spec.js +1 -1
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +2 -1
- package/test/spec/modules/amxIdSystem_spec.js +13 -26
- package/test/spec/modules/appnexusBidAdapter_spec.js +464 -448
- package/test/spec/modules/appushBidAdapter_spec.js +2 -1
- package/test/spec/modules/axonixBidAdapter_spec.js +0 -27
- package/test/spec/modules/beyondmediaBidAdapter_spec.js +2 -1
- package/test/spec/modules/big-richmediaBidAdapter_spec.js +68 -64
- package/test/spec/modules/compassBidAdapter_spec.js +2 -1
- package/test/spec/modules/connectIdSystem_spec.js +420 -242
- package/test/spec/modules/contentexchangeBidAdapter_spec.js +2 -1
- package/test/spec/modules/conversantBidAdapter_spec.js +1 -0
- package/test/spec/modules/criteoBidAdapter_spec.js +33 -1
- package/test/spec/modules/eids_spec.js +30 -0
- package/test/spec/modules/eskimiBidAdapter_spec.js +155 -0
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +37 -0
- package/test/spec/modules/globalsunBidAdapter_spec.js +2 -1
- package/test/spec/modules/gridBidAdapter_spec.js +8 -0
- package/test/spec/modules/iqzoneBidAdapter_spec.js +2 -1
- package/test/spec/modules/ivsBidAdapter_spec.js +197 -0
- package/test/spec/modules/ixBidAdapter_spec.js +141 -71
- package/test/spec/modules/kargoBidAdapter_spec.js +297 -140
- package/test/spec/modules/koblerBidAdapter_spec.js +0 -20
- package/test/spec/modules/kueezRtbBidAdapter_spec.js +22 -2
- package/test/spec/modules/liveIntentIdSystem_spec.js +10 -0
- package/test/spec/modules/luponmediaBidAdapter_spec.js +1 -1
- package/test/spec/modules/magniteAnalyticsAdapter_spec.js +129 -1
- package/test/spec/modules/mathildeadsBidAdapter_spec.js +2 -1
- package/test/spec/modules/mgidBidAdapter_spec.js +184 -36
- package/test/spec/modules/minutemediaplusBidAdapter_spec.js +22 -2
- package/test/spec/modules/nativoBidAdapter_spec.js +101 -0
- package/test/spec/modules/neuwoRtdProvider_spec.js +0 -1
- package/test/spec/modules/oguryBidAdapter_spec.js +19 -4
- package/test/spec/modules/ooloAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/openxBidAdapter_spec.js +1157 -1936
- package/test/spec/modules/openxOrtbBidAdapter_spec.js +12 -39
- package/test/spec/modules/pairIdSystem_spec.js +68 -0
- package/test/spec/modules/pubCommonId_spec.js +0 -17
- package/test/spec/modules/pubmaticBidAdapter_spec.js +868 -867
- package/test/spec/modules/pubxBidAdapter_spec.js +10 -2
- package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -5
- package/test/spec/modules/sharedIdSystem_spec.js +0 -46
- package/test/spec/modules/sharethroughBidAdapter_spec.js +2 -1
- package/test/spec/modules/smarthubBidAdapter_spec.js +2 -1
- package/test/spec/modules/synacormediaBidAdapter_spec.js +0 -26
- package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +17 -4
- package/test/spec/modules/vidoomyBidAdapter_spec.js +58 -0
- package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +2 -1
- package/test/spec/modules/vrtcalBidAdapter_spec.js +3 -2
- package/test/spec/modules/yieldmoBidAdapter_spec.js +19 -1
- package/test/spec/renderer_spec.js +1 -2
- package/test/spec/unit/pbjs_api_spec.js +19 -3
- package/test/test_index.js +13 -3
- package/dist/gridNMBidAdapter.js +0 -1
- package/modules/gridNMBidAdapter.js +0 -422
- package/modules/gridNMBidAdapter.md +0 -39
- package/test/spec/modules/gridNMBidAdapter_spec.js +0 -636
|
@@ -157,7 +157,7 @@ export const spec = {
|
|
|
157
157
|
coppa: config.getConfig('coppa') === true ? 1 : 0,
|
|
158
158
|
ccpa: bidderRequest.uspConsent || undefined,
|
|
159
159
|
gdpr: bidderRequest.gdprConsent || undefined,
|
|
160
|
-
tmax:
|
|
160
|
+
tmax: bidderRequest.timeout
|
|
161
161
|
};
|
|
162
162
|
|
|
163
163
|
const len = validBidRequests.length;
|
|
@@ -124,6 +124,9 @@ export const spec = {
|
|
|
124
124
|
const payload = {
|
|
125
125
|
id: requestId,
|
|
126
126
|
imp: conversantImps,
|
|
127
|
+
source: {
|
|
128
|
+
tid: requestId
|
|
129
|
+
},
|
|
127
130
|
site: {
|
|
128
131
|
id: siteId,
|
|
129
132
|
mobile: document.querySelector('meta[name="viewport"][content*="width=device-width"]') !== null ? 1 : 0,
|
|
@@ -223,7 +223,7 @@ export const spec = {
|
|
|
223
223
|
creativeId: slot.creativecode,
|
|
224
224
|
width: slot.width,
|
|
225
225
|
height: slot.height,
|
|
226
|
-
dealId: slot.
|
|
226
|
+
dealId: slot.deal,
|
|
227
227
|
};
|
|
228
228
|
if (body.ext?.paf?.transmission && slot.ext?.paf?.content_id) {
|
|
229
229
|
const pafResponseMeta = {
|
|
@@ -514,6 +514,10 @@ function buildCdbRequest(context, bidRequests, bidderRequest) {
|
|
|
514
514
|
if (bidderRequest && bidderRequest.uspConsent) {
|
|
515
515
|
request.user.uspIab = bidderRequest.uspConsent;
|
|
516
516
|
}
|
|
517
|
+
if (bidderRequest && bidderRequest.ortb2?.device?.sua) {
|
|
518
|
+
request.user.ext = request.user.ext || {};
|
|
519
|
+
request.user.ext.sua = bidderRequest.ortb2?.device?.sua || {};
|
|
520
|
+
}
|
|
517
521
|
return request;
|
|
518
522
|
}
|
|
519
523
|
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
2
|
+
import {BANNER} from '../src/mediaTypes.js';
|
|
3
|
+
import * as utils from '../src/utils.js';
|
|
4
|
+
import {ortbConverter} from '../libraries/ortbConverter/converter.js'
|
|
5
|
+
|
|
6
|
+
const BIDDER_CODE = 'eskimi';
|
|
7
|
+
// const ENDPOINT = 'https://hb.eskimi.com/bids'
|
|
8
|
+
const ENDPOINT = 'https://sspback.eskimi.com/bid-request'
|
|
9
|
+
|
|
10
|
+
const DEFAULT_BID_TTL = 30;
|
|
11
|
+
const DEFAULT_CURRENCY = 'USD';
|
|
12
|
+
const DEFAULT_NET_REVENUE = true;
|
|
13
|
+
const GVLID = 814;
|
|
14
|
+
|
|
15
|
+
export const spec = {
|
|
16
|
+
code: BIDDER_CODE,
|
|
17
|
+
gvlid: GVLID,
|
|
18
|
+
supportedMediaTypes: [BANNER],
|
|
19
|
+
|
|
20
|
+
isBidRequestValid: function (bid) {
|
|
21
|
+
return !!bid.params.placementId;
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
buildRequests(bidRequests, bidderRequest) {
|
|
25
|
+
const data = converter.toORTB({bidRequests, bidderRequest})
|
|
26
|
+
|
|
27
|
+
let bid = bidRequests.find((b) => b.params.placementId)
|
|
28
|
+
if (!data.site) data.site = {}
|
|
29
|
+
data.site.ext = {placementId: bid.params.placementId}
|
|
30
|
+
|
|
31
|
+
if (bidderRequest.gdprConsent) {
|
|
32
|
+
if (!data.user) data.user = {};
|
|
33
|
+
if (!data.user.ext) data.user.ext = {};
|
|
34
|
+
if (!data.regs) data.regs = {};
|
|
35
|
+
if (!data.regs.ext) data.regs.ext = {};
|
|
36
|
+
data.user.ext.consent = bidderRequest.gdprConsent.consentString;
|
|
37
|
+
data.regs.ext.gdpr = bidderRequest.gdprConsent.gdprApplies ? 1 : 0;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return [{
|
|
41
|
+
method: 'POST',
|
|
42
|
+
url: ENDPOINT,
|
|
43
|
+
data,
|
|
44
|
+
options: {contentType: 'application/json;charset=UTF-8', withCredentials: false}
|
|
45
|
+
}]
|
|
46
|
+
},
|
|
47
|
+
|
|
48
|
+
interpretResponse(response, request) {
|
|
49
|
+
return converter.fromORTB({response: response.body, request: request.data}).bids;
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Register bidder specific code, which will execute if a bid from this bidder won the auction
|
|
54
|
+
* @param {Bid} bid The bid that won the auction
|
|
55
|
+
*/
|
|
56
|
+
onBidWon: function (bid) {
|
|
57
|
+
if (bid.burl) {
|
|
58
|
+
utils.triggerPixel(bid.burl);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const converter = ortbConverter({
|
|
64
|
+
context: {
|
|
65
|
+
netRevenue: DEFAULT_NET_REVENUE,
|
|
66
|
+
ttl: DEFAULT_BID_TTL,
|
|
67
|
+
currency: DEFAULT_CURRENCY,
|
|
68
|
+
mediaType: BANNER // TODO: support more types, we should set mtype on the winning bid
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
registerBidder(spec);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
Module Name: ESKIMI Bidder Adapter
|
|
4
|
+
Module Type: Bidder Adapter
|
|
5
|
+
Maintainer: tech@eskimi.com
|
|
6
|
+
|
|
7
|
+
# Description
|
|
8
|
+
|
|
9
|
+
An adapter to get a bid from Eskimi DSP.
|
|
10
|
+
|
|
11
|
+
# Test Parameters
|
|
12
|
+
```javascript
|
|
13
|
+
var adUnits = [{
|
|
14
|
+
code: 'div-gpt-ad-1460505748561-0',
|
|
15
|
+
mediaTypes: {
|
|
16
|
+
banner: {
|
|
17
|
+
sizes: [[300, 250], [300, 600]]
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
bids: [{
|
|
22
|
+
bidder: 'eskimi',
|
|
23
|
+
params: {
|
|
24
|
+
placementId: 612
|
|
25
|
+
}
|
|
26
|
+
}]
|
|
27
|
+
|
|
28
|
+
}];
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Where:
|
|
32
|
+
|
|
33
|
+
* placementId - Placement ID of the ad unit (required)
|
|
34
|
+
|
|
@@ -424,6 +424,14 @@ export const spec = {
|
|
|
424
424
|
requestParams.playerSize = playerSize[0] + 'x' + playerSize[1];
|
|
425
425
|
}
|
|
426
426
|
|
|
427
|
+
// Add video context and placement in requestParams
|
|
428
|
+
if (currentBidRequest.mediaTypes.video) {
|
|
429
|
+
var videoContext = currentBidRequest.mediaTypes.video.context ? currentBidRequest.mediaTypes.video.context : 'instream';
|
|
430
|
+
var videoPlacement = currentBidRequest.mediaTypes.video.placement ? currentBidRequest.mediaTypes.video.placement : 1;
|
|
431
|
+
requestParams.video_context = videoContext;
|
|
432
|
+
requestParams.video_placement = videoPlacement;
|
|
433
|
+
}
|
|
434
|
+
|
|
427
435
|
return {
|
|
428
436
|
method: 'GET',
|
|
429
437
|
url: FREEWHEEL_ADSSETUP,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
|
-
import { config } from '../src/config.js';
|
|
3
2
|
import { BANNER } from '../src/mediaTypes.js';
|
|
4
3
|
import { getStorageManager } from '../src/storageManager.js';
|
|
5
4
|
import {
|
|
@@ -99,7 +98,7 @@ function getReferer(bidderRequest) {
|
|
|
99
98
|
function buildQuery(bidderRequest) {
|
|
100
99
|
let url = appendQueryParam(ENDPOINT, 'ver', '$prebid.version$');
|
|
101
100
|
|
|
102
|
-
const timeout =
|
|
101
|
+
const timeout = bidderRequest.timeout;
|
|
103
102
|
url = appendQueryParam(url, 'tmax', timeout);
|
|
104
103
|
|
|
105
104
|
if (gdprApplies(bidderRequest)) {
|
|
@@ -155,7 +155,7 @@ export const spec = {
|
|
|
155
155
|
coppa: config.getConfig('coppa') === true ? 1 : 0,
|
|
156
156
|
ccpa: bidderRequest.uspConsent || undefined,
|
|
157
157
|
gdpr: bidderRequest.gdprConsent || undefined,
|
|
158
|
-
tmax:
|
|
158
|
+
tmax: bidderRequest.timeout
|
|
159
159
|
};
|
|
160
160
|
|
|
161
161
|
const len = validBidRequests.length;
|
|
@@ -6,7 +6,10 @@ import {
|
|
|
6
6
|
generateUUID,
|
|
7
7
|
mergeDeep,
|
|
8
8
|
logWarn,
|
|
9
|
-
parseUrl,
|
|
9
|
+
parseUrl,
|
|
10
|
+
isArray,
|
|
11
|
+
isNumber,
|
|
12
|
+
isStr
|
|
10
13
|
} from '../src/utils.js';
|
|
11
14
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
12
15
|
import { Renderer } from '../src/Renderer.js';
|
|
@@ -52,7 +55,12 @@ const ALIAS_CONFIG = {
|
|
|
52
55
|
bidResponseExternal: {
|
|
53
56
|
netRevenue: false
|
|
54
57
|
}
|
|
55
|
-
}
|
|
58
|
+
},
|
|
59
|
+
'gridNM': {
|
|
60
|
+
defaultParams: {
|
|
61
|
+
multiRequest: true
|
|
62
|
+
}
|
|
63
|
+
},
|
|
56
64
|
};
|
|
57
65
|
|
|
58
66
|
let hasSynced = false;
|
|
@@ -60,7 +68,7 @@ let hasSynced = false;
|
|
|
60
68
|
export const spec = {
|
|
61
69
|
code: BIDDER_CODE,
|
|
62
70
|
gvlid: GVLID,
|
|
63
|
-
aliases: ['playwire', 'adlivetech', { code: 'trustx', skipPbsAliasing: true }],
|
|
71
|
+
aliases: ['playwire', 'adlivetech', 'gridNM', { code: 'trustx', skipPbsAliasing: true }],
|
|
64
72
|
supportedMediaTypes: [ BANNER, VIDEO ],
|
|
65
73
|
/**
|
|
66
74
|
* Determines whether or not the given bid request is valid.
|
|
@@ -93,7 +101,7 @@ export const spec = {
|
|
|
93
101
|
let {bidderRequestId, auctionId, gdprConsent, uspConsent, timeout, refererInfo, gppConsent} = bidderRequest || {};
|
|
94
102
|
|
|
95
103
|
const referer = refererInfo ? encodeURIComponent(refererInfo.page) : '';
|
|
96
|
-
const tmax = timeout
|
|
104
|
+
const tmax = timeout;
|
|
97
105
|
const imp = [];
|
|
98
106
|
const bidsMap = {};
|
|
99
107
|
const requests = [];
|
|
@@ -126,8 +134,9 @@ export const spec = {
|
|
|
126
134
|
if (!endpoint) {
|
|
127
135
|
endpoint = ALIAS_CONFIG[bid.bidder] && ALIAS_CONFIG[bid.bidder].endpoint;
|
|
128
136
|
}
|
|
129
|
-
const { params
|
|
130
|
-
const {
|
|
137
|
+
const { params, mediaTypes, bidId, adUnitCode, rtd, ortb2Imp } = bid;
|
|
138
|
+
const { defaultParams } = ALIAS_CONFIG[bid.bidder] || {};
|
|
139
|
+
const { secid, pubid, source, uid, keywords, forceBidder, multiRequest, content: bidParamsContent, video: videoParams } = { ...defaultParams, ...params };
|
|
131
140
|
const bidFloor = _getFloor(mediaTypes || {}, bid);
|
|
132
141
|
const jwTargeting = rtd && rtd.jwplayer && rtd.jwplayer.targeting;
|
|
133
142
|
if (jwTargeting && !content && jwTargeting.content) {
|
|
@@ -178,7 +187,7 @@ export const spec = {
|
|
|
178
187
|
}
|
|
179
188
|
}
|
|
180
189
|
if (mediaTypes && mediaTypes[VIDEO]) {
|
|
181
|
-
const video = createVideoRequest(
|
|
190
|
+
const video = createVideoRequest(videoParams, mediaTypes[VIDEO], bid.sizes);
|
|
182
191
|
if (video) {
|
|
183
192
|
impObj.video = video;
|
|
184
193
|
}
|
|
@@ -588,27 +597,41 @@ function _addBidResponse(serverBid, bidRequest, bidResponses, RendererConst, bid
|
|
|
588
597
|
}
|
|
589
598
|
}
|
|
590
599
|
|
|
591
|
-
function createVideoRequest(
|
|
592
|
-
const { playerSize,
|
|
593
|
-
|
|
594
|
-
|
|
600
|
+
function createVideoRequest(videoParams, mediaType, bidSizes) {
|
|
601
|
+
const { mind, maxd, size, playerSize, protocols, durationRangeSec = [], ...videoData } = { ...mediaType, ...videoParams };
|
|
602
|
+
if (size && isStr(size)) {
|
|
603
|
+
const sizeArray = size.split('x');
|
|
604
|
+
if (sizeArray.length === 2 && parseInt(sizeArray[0]) && parseInt(sizeArray[1])) {
|
|
605
|
+
videoData.w = parseInt(sizeArray[0]);
|
|
606
|
+
videoData.h = parseInt(sizeArray[1]);
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
if (!videoData.w || !videoData.h) {
|
|
610
|
+
const pSizesString = (playerSize || bidSizes || []).toString();
|
|
611
|
+
const pSizeString = (pSizesString.match(/^\d+,\d+/) || [])[0];
|
|
612
|
+
const pSize = pSizeString && pSizeString.split(',').map((d) => parseInt(d));
|
|
613
|
+
if (pSize && pSize.length === 2) {
|
|
614
|
+
Object.assign(videoData, parseGPTSingleSizeArrayToRtbSize(pSize));
|
|
615
|
+
}
|
|
616
|
+
}
|
|
595
617
|
|
|
596
|
-
|
|
618
|
+
if (!videoData.w || !videoData.h) return;
|
|
597
619
|
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
}
|
|
620
|
+
const minDur = mind || durationRangeSec[0] || videoData.minduration;
|
|
621
|
+
const maxDur = maxd || durationRangeSec[1] || videoData.maxduration;
|
|
601
622
|
|
|
602
|
-
if (
|
|
603
|
-
|
|
604
|
-
|
|
623
|
+
if (minDur) {
|
|
624
|
+
videoData.minduration = minDur;
|
|
625
|
+
}
|
|
626
|
+
if (maxDur) {
|
|
627
|
+
videoData.maxduration = maxDur;
|
|
605
628
|
}
|
|
606
629
|
|
|
607
630
|
if (protocols && protocols.length) {
|
|
608
|
-
|
|
631
|
+
videoData.protocols = protocols;
|
|
609
632
|
}
|
|
610
633
|
|
|
611
|
-
return
|
|
634
|
+
return videoData;
|
|
612
635
|
}
|
|
613
636
|
|
|
614
637
|
function createBannerRequest(bid, mediaType) {
|
|
@@ -11,9 +11,9 @@ import { submodule } from '../src/hook.js'
|
|
|
11
11
|
import {getStorageManager} from '../src/storageManager.js';
|
|
12
12
|
import {MODULE_TYPE_UID} from '../src/activities/modules.js';
|
|
13
13
|
|
|
14
|
-
const GCID_EXPIRY = 7;
|
|
15
14
|
const MODULE_NAME = 'growthCodeId';
|
|
16
15
|
const GC_DATA_KEY = '_gc_data';
|
|
16
|
+
const GCID_KEY = 'gcid';
|
|
17
17
|
const ENDPOINT_URL = 'https://p2.gcprivacy.com/v1/pb?'
|
|
18
18
|
|
|
19
19
|
export const storage = getStorageManager({ moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME });
|
|
@@ -26,14 +26,16 @@ export const storage = getStorageManager({ moduleType: MODULE_TYPE_UID, moduleNa
|
|
|
26
26
|
export function readData(key) {
|
|
27
27
|
try {
|
|
28
28
|
let payload
|
|
29
|
-
if (storage.cookiesAreEnabled()) {
|
|
30
|
-
payload = tryParse(storage.getCookie(key))
|
|
29
|
+
if (storage.cookiesAreEnabled(null)) {
|
|
30
|
+
payload = tryParse(storage.getCookie(key, null))
|
|
31
31
|
}
|
|
32
32
|
if (storage.hasLocalStorage()) {
|
|
33
|
-
payload = tryParse(storage.getDataFromLocalStorage(key))
|
|
33
|
+
payload = tryParse(storage.getDataFromLocalStorage(key, null))
|
|
34
34
|
}
|
|
35
|
-
if (
|
|
36
|
-
|
|
35
|
+
if (payload !== undefined) {
|
|
36
|
+
if (payload.expire_at > (Date.now() / 1000)) {
|
|
37
|
+
return payload
|
|
38
|
+
}
|
|
37
39
|
}
|
|
38
40
|
} catch (error) {
|
|
39
41
|
logError(error);
|
|
@@ -51,12 +53,8 @@ function storeData(key, value) {
|
|
|
51
53
|
logInfo(MODULE_NAME + ': storing data: key=' + key + ' value=' + value);
|
|
52
54
|
|
|
53
55
|
if (value) {
|
|
54
|
-
if (storage.hasLocalStorage()) {
|
|
55
|
-
storage.setDataInLocalStorage(key, value);
|
|
56
|
-
}
|
|
57
|
-
const expiresStr = (new Date(Date.now() + (GCID_EXPIRY * (60 * 60 * 24 * 1000)))).toUTCString();
|
|
58
|
-
if (storage.cookiesAreEnabled()) {
|
|
59
|
-
storage.setCookie(key, value, expiresStr, 'LAX');
|
|
56
|
+
if (storage.hasLocalStorage(null)) {
|
|
57
|
+
storage.setDataInLocalStorage(key, value, null);
|
|
60
58
|
}
|
|
61
59
|
}
|
|
62
60
|
} catch (error) {
|
|
@@ -70,11 +68,15 @@ function storeData(key, value) {
|
|
|
70
68
|
* @param {object|null}
|
|
71
69
|
*/
|
|
72
70
|
function tryParse(data) {
|
|
71
|
+
let payload;
|
|
73
72
|
try {
|
|
74
|
-
|
|
73
|
+
payload = JSON.parse(data);
|
|
74
|
+
if (payload == null) {
|
|
75
|
+
return undefined
|
|
76
|
+
}
|
|
77
|
+
return payload
|
|
75
78
|
} catch (err) {
|
|
76
|
-
|
|
77
|
-
return null;
|
|
79
|
+
return undefined;
|
|
78
80
|
}
|
|
79
81
|
}
|
|
80
82
|
|
|
@@ -150,6 +152,7 @@ export const growthCodeIdSubmodule = {
|
|
|
150
152
|
// If response is a valid json and should save is true
|
|
151
153
|
if (respJson) {
|
|
152
154
|
storeData(GC_DATA_KEY, JSON.stringify(respJson))
|
|
155
|
+
storeData(GCID_KEY, respJson.gc_id);
|
|
153
156
|
callback(respJson);
|
|
154
157
|
} else {
|
|
155
158
|
callback();
|
|
@@ -284,7 +284,7 @@ function buildRequests(validBidRequests, bidderRequest) {
|
|
|
284
284
|
const gdprConsent = bidderRequest && bidderRequest.gdprConsent;
|
|
285
285
|
const uspConsent = bidderRequest && bidderRequest.uspConsent;
|
|
286
286
|
const gppConsent = bidderRequest && bidderRequest.gppConsent;
|
|
287
|
-
const timeout =
|
|
287
|
+
const timeout = bidderRequest && bidderRequest.timeout
|
|
288
288
|
const coppa = config.getConfig('coppa') === true ? 1 : 0;
|
|
289
289
|
const topWindowUrl = bidderRequest && bidderRequest.refererInfo && bidderRequest.refererInfo.page;
|
|
290
290
|
_each(validBidRequests, bidRequest => {
|
|
@@ -154,7 +154,7 @@ export const spec = {
|
|
|
154
154
|
coppa: config.getConfig('coppa') === true ? 1 : 0,
|
|
155
155
|
ccpa: bidderRequest.uspConsent || undefined,
|
|
156
156
|
gdpr: bidderRequest.gdprConsent || undefined,
|
|
157
|
-
tmax:
|
|
157
|
+
tmax: bidderRequest.timeout
|
|
158
158
|
};
|
|
159
159
|
|
|
160
160
|
const len = validBidRequests.length;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { ortbConverter } from '../libraries/ortbConverter/converter.js';
|
|
2
|
+
import { deepAccess, deepSetValue, getBidIdParameter, logError } from '../src/utils.js';
|
|
3
|
+
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
|
+
import { VIDEO } from '../src/mediaTypes.js';
|
|
5
|
+
import { INSTREAM } from '../src/video.js';
|
|
6
|
+
|
|
7
|
+
const BIDDER_CODE = 'ivs';
|
|
8
|
+
const ENDPOINT_URL = 'https://a.ivstracker.net/prod/openrtb/2.5';
|
|
9
|
+
|
|
10
|
+
export const converter = ortbConverter({
|
|
11
|
+
context: {
|
|
12
|
+
mediaType: VIDEO,
|
|
13
|
+
ttl: 360,
|
|
14
|
+
netRevenue: true
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export const spec = {
|
|
19
|
+
code: BIDDER_CODE,
|
|
20
|
+
supportedMediaTypes: [VIDEO],
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Determines whether or not the given bid request is valid.
|
|
24
|
+
*
|
|
25
|
+
* @param {BidRequest} bid The bid params to validate.
|
|
26
|
+
* @return boolean True if this is a valid bid, and false otherwise.
|
|
27
|
+
*/
|
|
28
|
+
isBidRequestValid: function(bid) {
|
|
29
|
+
if (bid && typeof bid.params !== 'object') {
|
|
30
|
+
logError(BIDDER_CODE + ': params is not defined or is incorrect in the bidder settings.');
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (!deepAccess(bid, 'mediaTypes.video')) {
|
|
35
|
+
logError(BIDDER_CODE + ': mediaTypes.video is not present in the bidder settings.');
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (deepAccess(bid, 'mediaTypes.video.context') !== INSTREAM) {
|
|
40
|
+
logError(BIDDER_CODE + ': only instream video context is allowed.');
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (!getBidIdParameter('publisherId', bid.params)) {
|
|
45
|
+
logError(BIDDER_CODE + ': publisherId is not present in bidder params.');
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return true;
|
|
50
|
+
},
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Make a server request from the list of BidRequests.
|
|
54
|
+
*
|
|
55
|
+
* @param {validBidRequests[]} - an array of bids
|
|
56
|
+
* @param {bidderRequest} - master bidRequest object
|
|
57
|
+
* @return ServerRequest Info describing the request to the server.
|
|
58
|
+
*/
|
|
59
|
+
buildRequests: function(validBidRequests, bidderRequest) {
|
|
60
|
+
const data = converter.toORTB({ bidderRequest, validBidRequests, context: {mediaType: 'video'} });
|
|
61
|
+
deepSetValue(data.site, 'publisher.id', validBidRequests[0].params.publisherId);
|
|
62
|
+
|
|
63
|
+
return {
|
|
64
|
+
method: 'POST',
|
|
65
|
+
url: ENDPOINT_URL,
|
|
66
|
+
data: data,
|
|
67
|
+
options: {
|
|
68
|
+
contentType: 'application/json'
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Unpack the response from the server into a list of bids.
|
|
75
|
+
*
|
|
76
|
+
* @param {ServerResponse} serverResponse A successful response from the server.
|
|
77
|
+
* @return {Bid[]} An array of bids which were nested inside the server.
|
|
78
|
+
*/
|
|
79
|
+
interpretResponse: function(serverResponse, bidRequest) {
|
|
80
|
+
if (!serverResponse.body) return;
|
|
81
|
+
return converter.fromORTB({ response: serverResponse.body, request: bidRequest.data }).bids;
|
|
82
|
+
},
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
registerBidder(spec);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
Module Name: IVS Bidder Adapter
|
|
5
|
+
Module Type: Bidder Adapter
|
|
6
|
+
Maintainer: prebid@ivs.tv
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
# Description
|
|
10
|
+
|
|
11
|
+
Module that connects to IVS's demand sources
|
|
12
|
+
|
|
13
|
+
# Test Parameters
|
|
14
|
+
```
|
|
15
|
+
var adUnits = [
|
|
16
|
+
{
|
|
17
|
+
code: 'test-div',
|
|
18
|
+
mediaTypes: {
|
|
19
|
+
video: {
|
|
20
|
+
playerSize: [640, 480],
|
|
21
|
+
context: 'instream'
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
bids: [
|
|
25
|
+
{
|
|
26
|
+
bidder: 'ivs',
|
|
27
|
+
params: {
|
|
28
|
+
publisherId: '3001234' // required
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
];
|
|
34
|
+
```
|