prebid.js 7.32.0 → 7.34.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/.github/workflows/issue_tracker.yml +26 -15
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/admaticBidAdapter.js +1 -1
- package/dist/admixerBidAdapter.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/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/arcspanRtdProvider.js +1 -0
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bliinkBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/emx_digitalBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/holidBidAdapter.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/ixBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/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/lotamePanoramaIdSystem.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +129 -128
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/ortbConverter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/priceFloors.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.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/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/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/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/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.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/libraries/ortbConverter/processors/default.js +19 -1
- package/modules/.submodules.json +1 -0
- package/modules/admaticBidAdapter.js +2 -1
- package/modules/admixerBidAdapter.js +26 -4
- package/modules/adnuntiusBidAdapter.js +36 -38
- package/modules/arcspanRtdProvider.js +73 -0
- package/modules/arcspanRtdProvider.md +11 -0
- package/modules/bliinkBidAdapter.js +1 -1
- package/modules/consentManagementUsp.js +10 -10
- package/modules/consumableBidAdapter.js +20 -2
- package/modules/criteoBidAdapter.js +1 -1
- package/modules/emx_digitalBidAdapter.js +9 -2
- package/modules/holidBidAdapter.js +9 -4
- package/modules/id5IdSystem.js +3 -1
- package/modules/ixBidAdapter.js +25 -6
- package/modules/kargoBidAdapter.js +5 -1
- package/modules/lotamePanoramaIdSystem.js +9 -1
- package/modules/nextMillenniumBidAdapter.js +19 -9
- package/modules/nexx360BidAdapter.js +2 -1
- package/modules/openxBidAdapter.js +5 -0
- package/modules/prebidServerBidAdapter/index.js +14 -1
- package/modules/prebidServerBidAdapter/ortbConverter.js +1 -1
- package/modules/priceFloors.js +11 -5
- package/modules/seedingAllianceBidAdapter.js +129 -116
- package/modules/seedtagBidAdapter.js +20 -6
- package/modules/targetVideoBidAdapter.js +1 -1
- package/modules/tripleliftBidAdapter.js +4 -0
- package/package.json +2 -2
- package/src/adloader.js +2 -1
- package/src/utils/promise.js +8 -0
- package/test/spec/modules/admixerBidAdapter_spec.js +140 -60
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +120 -120
- package/test/spec/modules/arcspanRtdProvider_spec.js +187 -0
- package/test/spec/modules/bliinkBidAdapter_spec.js +7 -7
- package/test/spec/modules/consentManagementUsp_spec.js +15 -2
- package/test/spec/modules/consumableBidAdapter_spec.js +46 -0
- package/test/spec/modules/emx_digitalBidAdapter_spec.js +30 -1
- package/test/spec/modules/holidBidAdapter_spec.js +29 -0
- package/test/spec/modules/ixBidAdapter_spec.js +117 -6
- package/test/spec/modules/kargoBidAdapter_spec.js +32 -0
- package/test/spec/modules/lotamePanoramaIdSystem_spec.js +16 -10
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +14 -2
- package/test/spec/modules/openxBidAdapter_spec.js +41 -0
- package/test/spec/modules/openxOrtbBidAdapter_spec.js +41 -0
- package/test/spec/modules/prebidServerBidAdapter_spec.js +138 -0
- package/test/spec/modules/priceFloors_spec.js +155 -0
- package/test/spec/modules/seedingAllianceAdapter_spec.js +66 -23
- package/test/spec/modules/seedtagBidAdapter_spec.js +58 -17
- package/test/spec/modules/targetVideoBidAdapter_spec.js +2 -2
- package/test/spec/modules/tripleliftBidAdapter_spec.js +13 -0
- package/test/spec/ortbConverter/default_processors_spec.js +23 -0
|
@@ -2,120 +2,111 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
5
|
-
import { NATIVE } from '../src/mediaTypes.js';
|
|
6
|
-
import { _map,
|
|
5
|
+
import { NATIVE, BANNER } from '../src/mediaTypes.js';
|
|
6
|
+
import { _map, isArray, isEmpty, deepSetValue, replaceAuctionPrice } from '../src/utils.js';
|
|
7
7
|
import { config } from '../src/config.js';
|
|
8
8
|
import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
|
|
9
9
|
|
|
10
|
-
const BIDDER_CODE = 'seedingAlliance';
|
|
11
10
|
const GVL_ID = 371;
|
|
11
|
+
const BIDDER_CODE = 'seedingAlliance';
|
|
12
12
|
const DEFAULT_CUR = 'EUR';
|
|
13
13
|
const ENDPOINT_URL = 'https://b.nativendo.de/cds/rtb/bid?format=openrtb2.5&ssp=pb';
|
|
14
14
|
|
|
15
|
-
const NATIVE_ASSET_IDS = {0: 'title', 1: 'body', 2: 'sponsoredBy', 3: 'image', 4: 'cta', 5: 'icon'};
|
|
15
|
+
const NATIVE_ASSET_IDS = { 0: 'title', 1: 'body', 2: 'sponsoredBy', 3: 'image', 4: 'cta', 5: 'icon' };
|
|
16
16
|
|
|
17
17
|
const NATIVE_PARAMS = {
|
|
18
|
-
title: {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
},
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
id: 1,
|
|
25
|
-
name: 'data',
|
|
26
|
-
type: 2
|
|
27
|
-
},
|
|
28
|
-
|
|
29
|
-
sponsoredBy: {
|
|
30
|
-
id: 2,
|
|
31
|
-
name: 'data',
|
|
32
|
-
type: 1
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
image: {
|
|
36
|
-
id: 3,
|
|
37
|
-
type: 3,
|
|
38
|
-
name: 'img'
|
|
39
|
-
},
|
|
40
|
-
|
|
41
|
-
cta: {
|
|
42
|
-
id: 4,
|
|
43
|
-
type: 12,
|
|
44
|
-
name: 'data'
|
|
45
|
-
},
|
|
46
|
-
|
|
47
|
-
icon: {
|
|
48
|
-
id: 5,
|
|
49
|
-
type: 1,
|
|
50
|
-
name: 'img'
|
|
51
|
-
}
|
|
18
|
+
title: { id: 0, name: 'title' },
|
|
19
|
+
body: { id: 1, name: 'data', type: 2 },
|
|
20
|
+
sponsoredBy: { id: 2, name: 'data', type: 1 },
|
|
21
|
+
image: { id: 3, type: 3, name: 'img' },
|
|
22
|
+
cta: { id: 4, type: 12, name: 'data' },
|
|
23
|
+
icon: { id: 5, type: 1, name: 'img' }
|
|
52
24
|
};
|
|
53
25
|
|
|
54
26
|
export const spec = {
|
|
55
27
|
code: BIDDER_CODE,
|
|
56
|
-
|
|
57
28
|
gvlid: GVL_ID,
|
|
29
|
+
supportedMediaTypes: [NATIVE, BANNER],
|
|
58
30
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
isBidRequestValid: function(bid) {
|
|
31
|
+
isBidRequestValid: function (bid) {
|
|
62
32
|
return !!bid.params.adUnitId;
|
|
63
33
|
},
|
|
64
34
|
|
|
65
|
-
buildRequests: (validBidRequests, bidderRequest) => {
|
|
35
|
+
buildRequests: (validBidRequests = [], bidderRequest) => {
|
|
66
36
|
// convert Native ORTB definition to old-style prebid native definition
|
|
67
37
|
validBidRequests = convertOrtbRequestToProprietaryNative(validBidRequests);
|
|
68
38
|
|
|
69
|
-
const pt = setOnAny(validBidRequests, 'params.pt') || setOnAny(validBidRequests, 'params.priceType') || 'net';
|
|
70
|
-
const tid = bidderRequest.auctionId;
|
|
71
|
-
const cur = [config.getConfig('currency.adServerCurrency') || DEFAULT_CUR];
|
|
72
39
|
let url = bidderRequest.refererInfo.page;
|
|
73
40
|
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
required: bidParams.required & 1
|
|
80
|
-
};
|
|
41
|
+
const imps = validBidRequests.map((bidRequest, id) => {
|
|
42
|
+
const imp = {
|
|
43
|
+
id: String(id + 1),
|
|
44
|
+
tagid: bidRequest.params.adUnitId
|
|
45
|
+
};
|
|
81
46
|
|
|
82
|
-
|
|
83
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Native Ad
|
|
49
|
+
*/
|
|
50
|
+
if (bidRequest.nativeParams) {
|
|
51
|
+
const assets = _map(bidRequest.nativeParams, (nativeAsset, key) => {
|
|
52
|
+
const props = NATIVE_PARAMS[key];
|
|
53
|
+
|
|
54
|
+
if (props) {
|
|
55
|
+
let wmin, hmin, w, h;
|
|
56
|
+
let aRatios = nativeAsset.aspect_ratios;
|
|
57
|
+
|
|
58
|
+
if (aRatios && aRatios[0]) {
|
|
59
|
+
aRatios = aRatios[0];
|
|
60
|
+
wmin = aRatios.min_width || 0;
|
|
61
|
+
hmin = aRatios.ratio_height * wmin / aRatios.ratio_width | 0;
|
|
62
|
+
}
|
|
84
63
|
|
|
85
|
-
|
|
64
|
+
if (nativeAsset.sizes) {
|
|
65
|
+
const sizes = flatten(nativeAsset.sizes);
|
|
66
|
+
w = parseInt(sizes[0], 10);
|
|
67
|
+
h = parseInt(sizes[1], 10);
|
|
68
|
+
}
|
|
86
69
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
70
|
+
const asset = {
|
|
71
|
+
id: props.id,
|
|
72
|
+
required: nativeAsset.required & 1
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
asset[props.name] = {
|
|
76
|
+
len: nativeAsset.len,
|
|
77
|
+
type: props.type,
|
|
78
|
+
wmin,
|
|
79
|
+
hmin,
|
|
80
|
+
w,
|
|
81
|
+
h
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
return asset;
|
|
85
|
+
} else {
|
|
86
|
+
// TODO Filter impressions with required assets we don't support
|
|
90
87
|
}
|
|
88
|
+
}).filter(Boolean);
|
|
91
89
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
90
|
+
imp.native = {
|
|
91
|
+
request: {
|
|
92
|
+
assets
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
} else {
|
|
96
|
+
let sizes = transformSizes(bidRequest.sizes);
|
|
98
97
|
|
|
99
|
-
|
|
98
|
+
imp.banner = {
|
|
99
|
+
format: sizes,
|
|
100
|
+
w: sizes[0] ? sizes[0].w : 0,
|
|
101
|
+
h: sizes[0] ? sizes[0].h : 0
|
|
100
102
|
}
|
|
101
|
-
}
|
|
102
|
-
.filter(Boolean);
|
|
103
|
+
}
|
|
103
104
|
|
|
104
|
-
if (
|
|
105
|
-
url =
|
|
105
|
+
if (bidRequest.params.url) {
|
|
106
|
+
url = bidRequest.params.url;
|
|
106
107
|
}
|
|
107
108
|
|
|
108
|
-
return
|
|
109
|
-
id: String(id + 1),
|
|
110
|
-
tagid: bid.params.adUnitId,
|
|
111
|
-
tid: tid,
|
|
112
|
-
pt: pt,
|
|
113
|
-
native: {
|
|
114
|
-
request: {
|
|
115
|
-
assets
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
};
|
|
109
|
+
return imp;
|
|
119
110
|
});
|
|
120
111
|
|
|
121
112
|
const request = {
|
|
@@ -123,12 +114,9 @@ export const spec = {
|
|
|
123
114
|
site: {
|
|
124
115
|
page: url
|
|
125
116
|
},
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
cur,
|
|
130
|
-
imp,
|
|
131
|
-
user: {},
|
|
117
|
+
cur: [config.getConfig('currency.adServerCurrency') || DEFAULT_CUR],
|
|
118
|
+
imp: imps,
|
|
119
|
+
tmax: bidderRequest.timeout,
|
|
132
120
|
regs: {
|
|
133
121
|
ext: {
|
|
134
122
|
gdpr: 0,
|
|
@@ -137,23 +125,22 @@ export const spec = {
|
|
|
137
125
|
}
|
|
138
126
|
};
|
|
139
127
|
|
|
140
|
-
if (bidderRequest
|
|
128
|
+
if (bidderRequest.gdprConsent) {
|
|
129
|
+
request.user = {};
|
|
130
|
+
|
|
141
131
|
deepSetValue(request, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
|
|
142
132
|
deepSetValue(request, 'regs.ext.gdpr', (typeof bidderRequest.gdprConsent.gdprApplies === 'boolean' && bidderRequest.gdprConsent.gdprApplies) ? 1 : 0);
|
|
143
133
|
}
|
|
144
134
|
|
|
145
135
|
return {
|
|
146
136
|
method: 'POST',
|
|
147
|
-
url: ENDPOINT_URL,
|
|
137
|
+
url: config.getConfig('seedingAlliance.endpoint') || ENDPOINT_URL,
|
|
148
138
|
data: JSON.stringify(request),
|
|
149
|
-
|
|
150
|
-
contentType: 'application/json'
|
|
151
|
-
},
|
|
152
|
-
bids: validBidRequests
|
|
139
|
+
bidRequests: validBidRequests
|
|
153
140
|
};
|
|
154
141
|
},
|
|
155
142
|
|
|
156
|
-
interpretResponse: function(serverResponse, {
|
|
143
|
+
interpretResponse: function (serverResponse, { bidRequests }) {
|
|
157
144
|
if (isEmpty(serverResponse.body)) {
|
|
158
145
|
return [];
|
|
159
146
|
}
|
|
@@ -165,35 +152,72 @@ export const spec = {
|
|
|
165
152
|
return result;
|
|
166
153
|
}, []) : [];
|
|
167
154
|
|
|
168
|
-
return
|
|
169
|
-
.map((
|
|
155
|
+
return bidRequests
|
|
156
|
+
.map((bidRequest, id) => {
|
|
170
157
|
const bidResponse = bidResponses[id];
|
|
171
158
|
|
|
159
|
+
const type = bidRequest.nativeParams ? NATIVE : BANNER;
|
|
160
|
+
|
|
172
161
|
if (bidResponse) {
|
|
173
|
-
|
|
174
|
-
requestId:
|
|
162
|
+
const bidObject = {
|
|
163
|
+
requestId: bidRequest.bidId, // TODO get this value from response?
|
|
175
164
|
cpm: bidResponse.price,
|
|
176
165
|
creativeId: bidResponse.crid,
|
|
177
|
-
ttl:
|
|
178
|
-
netRevenue:
|
|
166
|
+
ttl: 600,
|
|
167
|
+
netRevenue: true,
|
|
179
168
|
currency: cur,
|
|
180
|
-
mediaType:
|
|
169
|
+
mediaType: type,
|
|
181
170
|
bidderCode: BIDDER_CODE,
|
|
182
|
-
native: parseNative(bidResponse),
|
|
183
171
|
meta: {
|
|
184
172
|
advertiserDomains: bidResponse.adomain && bidResponse.adomain.length > 0 ? bidResponse.adomain : []
|
|
185
173
|
}
|
|
186
174
|
};
|
|
175
|
+
|
|
176
|
+
if (type === NATIVE) {
|
|
177
|
+
bidObject.native = parseNative(bidResponse);
|
|
178
|
+
bidObject.mediaType = NATIVE;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (type === BANNER) {
|
|
182
|
+
bidObject.ad = replaceAuctionPrice(bidResponse.adm, bidResponse.price);
|
|
183
|
+
bidObject.width = bidResponse.w;
|
|
184
|
+
bidObject.height = bidResponse.h;
|
|
185
|
+
bidObject.mediaType = BANNER;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return bidObject;
|
|
187
189
|
}
|
|
188
190
|
})
|
|
189
191
|
.filter(Boolean);
|
|
190
192
|
}
|
|
191
193
|
};
|
|
192
194
|
|
|
193
|
-
|
|
195
|
+
function transformSizes(requestSizes) {
|
|
196
|
+
if (!isArray(requestSizes)) {
|
|
197
|
+
return [];
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
if (requestSizes.length === 2 && !isArray(requestSizes[0])) {
|
|
201
|
+
return [{
|
|
202
|
+
w: parseInt(requestSizes[0], 10),
|
|
203
|
+
h: parseInt(requestSizes[1], 10)
|
|
204
|
+
}];
|
|
205
|
+
} else if (isArray(requestSizes[0])) {
|
|
206
|
+
return requestSizes.map(item => ({
|
|
207
|
+
w: parseInt(item[0], 10),
|
|
208
|
+
h: parseInt(item[1], 10)
|
|
209
|
+
}));
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return [];
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
function flatten(arr) {
|
|
216
|
+
return [].concat(...arr);
|
|
217
|
+
}
|
|
194
218
|
|
|
195
219
|
function parseNative(bid) {
|
|
196
|
-
const {assets, link, imptrackers} = bid.adm.native;
|
|
220
|
+
const { assets, link, imptrackers } = bid.adm.native;
|
|
197
221
|
|
|
198
222
|
let clickUrl = link.url.replace(/\$\{AUCTION_PRICE\}/g, bid.price);
|
|
199
223
|
|
|
@@ -228,15 +252,4 @@ function parseNative(bid) {
|
|
|
228
252
|
return result;
|
|
229
253
|
}
|
|
230
254
|
|
|
231
|
-
|
|
232
|
-
for (let i = 0, result; i < collection.length; i++) {
|
|
233
|
-
result = deepAccess(collection[i], key);
|
|
234
|
-
if (result) {
|
|
235
|
-
return result;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
function flatten(arr) {
|
|
241
|
-
return [].concat(...arr);
|
|
242
|
-
}
|
|
255
|
+
registerBidder(spec);
|
|
@@ -60,6 +60,10 @@ function hasVideoMediaType(bid) {
|
|
|
60
60
|
return !!bid.mediaTypes && !!bid.mediaTypes.video;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
function hasBannerMediaType(bid) {
|
|
64
|
+
return !!bid.mediaTypes && !!bid.mediaTypes.banner;
|
|
65
|
+
}
|
|
66
|
+
|
|
63
67
|
function hasMandatoryDisplayParams(bid) {
|
|
64
68
|
const p = bid.params;
|
|
65
69
|
return (
|
|
@@ -72,17 +76,27 @@ function hasMandatoryDisplayParams(bid) {
|
|
|
72
76
|
function hasMandatoryVideoParams(bid) {
|
|
73
77
|
const videoParams = getVideoParams(bid);
|
|
74
78
|
|
|
75
|
-
|
|
79
|
+
let isValid =
|
|
76
80
|
!!bid.params.publisherId &&
|
|
77
81
|
!!bid.params.adUnitId &&
|
|
78
82
|
hasVideoMediaType(bid) &&
|
|
79
83
|
!!videoParams.playerSize &&
|
|
80
84
|
isArray(videoParams.playerSize) &&
|
|
81
|
-
videoParams.playerSize.length > 0
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
85
|
+
videoParams.playerSize.length > 0;
|
|
86
|
+
|
|
87
|
+
switch (bid.params.placement) {
|
|
88
|
+
// instream accept only video format
|
|
89
|
+
case 'inStream':
|
|
90
|
+
return isValid && videoParams.context === 'instream';
|
|
91
|
+
// outstream accept banner/native/video format
|
|
92
|
+
default:
|
|
93
|
+
return (
|
|
94
|
+
isValid &&
|
|
95
|
+
videoParams.context === 'outstream' &&
|
|
96
|
+
hasBannerMediaType(bid) &&
|
|
97
|
+
hasMandatoryDisplayParams(bid)
|
|
98
|
+
);
|
|
99
|
+
}
|
|
86
100
|
}
|
|
87
101
|
|
|
88
102
|
function buildBidRequest(validBidRequest) {
|
|
@@ -157,7 +157,7 @@ function newBid(serverBid, rtbBid, bidderRequest) {
|
|
|
157
157
|
const sizes = getSizes(bidRequest);
|
|
158
158
|
const bid = {
|
|
159
159
|
requestId: serverBid.uuid,
|
|
160
|
-
cpm: rtbBid.cpm
|
|
160
|
+
cpm: rtbBid.cpm / MARGIN,
|
|
161
161
|
creativeId: rtbBid.creative_id,
|
|
162
162
|
dealId: rtbBid.deal_id,
|
|
163
163
|
currency: 'USD',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prebid.js",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.34.0",
|
|
4
4
|
"description": "Header Bidding Management Library",
|
|
5
5
|
"main": "src/prebid.js",
|
|
6
6
|
"scripts": {
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
"express": "^4.15.4",
|
|
131
131
|
"fun-hooks": "^0.9.9",
|
|
132
132
|
"just-clone": "^1.0.2",
|
|
133
|
-
"live-connect-js": "3.0.
|
|
133
|
+
"live-connect-js": "3.0.5"
|
|
134
134
|
},
|
|
135
135
|
"optionalDependencies": {
|
|
136
136
|
"fsevents": "^2.3.2"
|
package/src/adloader.js
CHANGED
package/src/utils/promise.js
CHANGED
|
@@ -90,6 +90,14 @@ export class GreedyPromise extends (getGlobal().Promise || Promise) {
|
|
|
90
90
|
res.#parent = this;
|
|
91
91
|
return res;
|
|
92
92
|
}
|
|
93
|
+
|
|
94
|
+
static resolve(value) {
|
|
95
|
+
return new this(resolve => resolve(value))
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
static reject(error) {
|
|
99
|
+
return new this((resolve, reject) => reject(error))
|
|
100
|
+
}
|
|
93
101
|
}
|
|
94
102
|
|
|
95
103
|
/**
|