prebid.js 9.2.0 → 9.3.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/33acrossAnalyticsAdapter.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/BTBidAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adagioUtils.js +1 -1
- package/dist/addefendBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adnuntiusBidAdapter.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adstirBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/agmaAnalyticsAdapter.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/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/bridBidAdapter.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/chunk-core.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagement.js +1 -0
- package/dist/consentManagementGpp.js +1 -1
- package/dist/consentManagementTcf.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/copper6sspBidAdapter.js +1 -0
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dailymotionBidAdapter.js +1 -1
- package/dist/dependencies.json +18 -4
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/exadsBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/illuminBidAdapter.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqIdSystem.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kimberliteBidAdapter.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/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/luceadBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.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/medianetAnalyticsAdapter.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/missenaBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +172 -167
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openwebBidAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/orakiBidAdapter.js +1 -0
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/pairIdSystem.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/publirBidAdapter.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.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/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.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/shinezRtbBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smartyadsBidAdapter.js +1 -1
- package/dist/smartyadsUtils.js +1 -0
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/snigelBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stnBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tagorasBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/twistDigitalBidAdapter.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/unrulyBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/vidazooUtils.js +1 -0
- 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/yahooAdsBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yuktamediaAnalyticsAdapter.js +1 -1
- package/libraries/consentManagement/cmUtils.js +38 -0
- package/libraries/smartyadsUtils/getAdUrlByRegion.js +32 -0
- package/libraries/vidazooUtils/bidderUtils.js +481 -0
- package/libraries/vidazooUtils/constants.js +7 -0
- package/modules/addefendBidAdapter.js +1 -2
- package/modules/adlooxRtdProvider.js +1 -1
- package/modules/adnuntiusBidAdapter.js +1 -0
- package/modules/adxcgAnalyticsAdapter.js +1 -2
- package/modules/consentManagementGpp.js +2 -38
- package/modules/consentManagementTcf.js +7 -38
- package/modules/conversantAnalyticsAdapter.js +1 -2
- package/modules/copper6sspBidAdapter.js +19 -0
- package/modules/copper6sspBidAdapter.md +79 -0
- package/modules/criteoBidAdapter.js +10 -3
- package/modules/id5AnalyticsAdapter.js +1 -2
- package/modules/intentIqIdSystem.js +408 -50
- package/modules/intentIqIdSystem.md +92 -0
- package/modules/liveIntentIdSystem.js +2 -2
- package/modules/mabidderBidAdapter.js +1 -2
- package/modules/medianetAnalyticsAdapter.js +1 -2
- package/modules/medianetBidAdapter.js +1 -1
- package/modules/orakiBidAdapter.js +19 -0
- package/modules/orakiBidAdapter.md +79 -0
- package/modules/orbidderBidAdapter.js +4 -2
- package/modules/pairIdSystem.js +27 -10
- package/modules/pixfutureBidAdapter.js +1 -2
- package/modules/prebidServerBidAdapter/index.js +1 -1
- package/modules/seedtagBidAdapter.js +4 -0
- package/modules/smartadserverBidAdapter.js +3 -0
- package/modules/smartyadsBidAdapter.js +6 -110
- package/modules/snigelBidAdapter.js +1 -2
- package/modules/tappxBidAdapter.js +1 -2
- package/modules/terceptAnalyticsAdapter.js +1 -2
- package/modules/twistDigitalBidAdapter.js +1 -12
- package/modules/userId/index.js +31 -21
- package/modules/vidazooBidAdapter.js +26 -468
- package/modules/yahooAdsBidAdapter.js +4 -1
- package/modules/yuktamediaAnalyticsAdapter.js +1 -2
- package/package.json +1 -1
- package/test/spec/fpd/gdpr_spec.js +24 -2
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +6 -3
- package/test/spec/modules/conversantAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/copper6sspBidAdapter_spec.js +514 -0
- package/test/spec/modules/intentIqIdSystem_spec.js +264 -36
- package/test/spec/modules/orakiBidAdapter_spec.js +510 -0
- package/test/spec/modules/seedtagBidAdapter_spec.js +27 -0
- package/test/spec/modules/smartadserverBidAdapter_spec.js +7 -0
- package/test/spec/modules/smartyadsBidAdapter_spec.js +6 -83
- package/test/spec/modules/twistDigitalBidAdapter_spec.js +5 -3
- package/test/spec/modules/userId_spec.js +86 -47
- package/test/spec/modules/vidazooBidAdapter_spec.js +21 -23
- package/test/spec/modules/yahooAdsBidAdapter_spec.js +1 -1
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
2
|
import { BANNER } from '../src/mediaTypes.js';
|
|
3
|
-
import { getGlobal } from '../src/prebidGlobal.js';
|
|
4
3
|
import { ortbConverter } from '../libraries/ortbConverter/converter.js';
|
|
5
4
|
|
|
6
5
|
const BIDDER_CODE = 'mabidder';
|
|
@@ -39,7 +38,7 @@ export const spec = {
|
|
|
39
38
|
url: baseUrl,
|
|
40
39
|
method: 'POST',
|
|
41
40
|
data: {
|
|
42
|
-
v:
|
|
41
|
+
v: 'v' + '$prebid.version$',
|
|
43
42
|
bids: bids,
|
|
44
43
|
url: bidderRequest.refererInfo.page || '',
|
|
45
44
|
referer: bidderRequest.refererInfo.ref || '',
|
|
@@ -36,8 +36,7 @@ const PRICE_GRANULARITY = {
|
|
|
36
36
|
};
|
|
37
37
|
|
|
38
38
|
const MEDIANET_BIDDER_CODE = 'medianet';
|
|
39
|
-
|
|
40
|
-
const PREBID_VERSION = getGlobal().version;
|
|
39
|
+
const PREBID_VERSION = '$prebid.version$'
|
|
41
40
|
const ERROR_CONFIG_JSON_PARSE = 'analytics_config_parse_fail';
|
|
42
41
|
const ERROR_CONFIG_FETCH = 'analytics_config_ajax_fail';
|
|
43
42
|
const ERROR_WINNING_BID_ABSENT = 'winning_bid_absent';
|
|
@@ -186,7 +186,7 @@ function extParams(bidRequest, bidderRequests) {
|
|
|
186
186
|
const coppaApplies = !!(config.getConfig('coppa'));
|
|
187
187
|
return Object.assign({},
|
|
188
188
|
{ customer_id: params.cid },
|
|
189
|
-
{ prebid_version:
|
|
189
|
+
{ prebid_version: 'v' + '$prebid.version$' },
|
|
190
190
|
{ gdpr_applies: gdprApplies },
|
|
191
191
|
(gdprApplies) && { gdpr_consent_string: gdpr.consentString || '' },
|
|
192
192
|
{ usp_applies: uspApplies },
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
|
+
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
3
|
+
import { isBidRequestValid, buildRequests, interpretResponse, getUserSyncs } from '../libraries/teqblazeUtils/bidderUtils.js';
|
|
4
|
+
|
|
5
|
+
const BIDDER_CODE = 'oraki';
|
|
6
|
+
const AD_URL = 'https://eu1.oraki.io/pbjs';
|
|
7
|
+
const SYNC_URL = 'https://sync.oraki.io';
|
|
8
|
+
|
|
9
|
+
export const spec = {
|
|
10
|
+
code: BIDDER_CODE,
|
|
11
|
+
supportedMediaTypes: [BANNER, VIDEO, NATIVE],
|
|
12
|
+
|
|
13
|
+
isBidRequestValid: isBidRequestValid(),
|
|
14
|
+
buildRequests: buildRequests(AD_URL),
|
|
15
|
+
interpretResponse,
|
|
16
|
+
getUserSyncs: getUserSyncs(SYNC_URL)
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
registerBidder(spec);
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
Module Name: Oraki Bidder Adapter
|
|
5
|
+
Module Type: Oraki Bidder Adapter
|
|
6
|
+
Maintainer: ben@oraki.io
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
# Description
|
|
10
|
+
|
|
11
|
+
Connects to Oraki exchange for bids.
|
|
12
|
+
Oraki bid adapter supports Banner, Video (instream and outstream) and Native.
|
|
13
|
+
|
|
14
|
+
# Test Parameters
|
|
15
|
+
```
|
|
16
|
+
var adUnits = [
|
|
17
|
+
// Will return static test banner
|
|
18
|
+
{
|
|
19
|
+
code: 'adunit1',
|
|
20
|
+
mediaTypes: {
|
|
21
|
+
banner: {
|
|
22
|
+
sizes: [ [300, 250], [320, 50] ],
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
bids: [
|
|
26
|
+
{
|
|
27
|
+
bidder: 'oraki',
|
|
28
|
+
params: {
|
|
29
|
+
placementId: 'testBanner',
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
code: 'addunit2',
|
|
36
|
+
mediaTypes: {
|
|
37
|
+
video: {
|
|
38
|
+
playerSize: [ [640, 480] ],
|
|
39
|
+
context: 'instream',
|
|
40
|
+
minduration: 5,
|
|
41
|
+
maxduration: 60,
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
bids: [
|
|
45
|
+
{
|
|
46
|
+
bidder: 'oraki',
|
|
47
|
+
params: {
|
|
48
|
+
placementId: 'testVideo',
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
code: 'addunit3',
|
|
55
|
+
mediaTypes: {
|
|
56
|
+
native: {
|
|
57
|
+
title: {
|
|
58
|
+
required: true
|
|
59
|
+
},
|
|
60
|
+
body: {
|
|
61
|
+
required: true
|
|
62
|
+
},
|
|
63
|
+
icon: {
|
|
64
|
+
required: true,
|
|
65
|
+
size: [64, 64]
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
bids: [
|
|
70
|
+
{
|
|
71
|
+
bidder: 'oraki',
|
|
72
|
+
params: {
|
|
73
|
+
placementId: 'testNative',
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
];
|
|
79
|
+
```
|
|
@@ -3,7 +3,6 @@ import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
|
3
3
|
import { getStorageManager } from '../src/storageManager.js';
|
|
4
4
|
import { BANNER, NATIVE } from '../src/mediaTypes.js';
|
|
5
5
|
import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
|
|
6
|
-
import { getGlobal } from '../src/prebidGlobal.js';
|
|
7
6
|
|
|
8
7
|
/**
|
|
9
8
|
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
|
|
@@ -93,6 +92,9 @@ export const spec = {
|
|
|
93
92
|
if (bidderRequest && bidderRequest.refererInfo) {
|
|
94
93
|
referer = bidderRequest.refererInfo.page || '';
|
|
95
94
|
}
|
|
95
|
+
if (bidRequest?.mediaTypes?.video) {
|
|
96
|
+
delete bidRequest.mediaTypes.video;
|
|
97
|
+
}
|
|
96
98
|
|
|
97
99
|
bidRequest.params.bidfloor = getBidFloor(bidRequest);
|
|
98
100
|
|
|
@@ -101,7 +103,7 @@ export const spec = {
|
|
|
101
103
|
method: 'POST',
|
|
102
104
|
options: { withCredentials: true },
|
|
103
105
|
data: {
|
|
104
|
-
v:
|
|
106
|
+
v: 'v' + '$prebid.version$',
|
|
105
107
|
pageUrl: referer,
|
|
106
108
|
...bidRequest // get all data provided by bid request
|
|
107
109
|
}
|
package/modules/pairIdSystem.js
CHANGED
|
@@ -50,9 +50,11 @@ export const pairIdSubmodule = {
|
|
|
50
50
|
return value && Array.isArray(value) ? {'pairId': value} : undefined
|
|
51
51
|
},
|
|
52
52
|
/**
|
|
53
|
-
*
|
|
54
|
-
* @function
|
|
55
|
-
* @
|
|
53
|
+
* Performs action to obtain ID and return a value in the callback's response argument.
|
|
54
|
+
* @function getId
|
|
55
|
+
* @param {Object} config - The configuration object.
|
|
56
|
+
* @param {Object} config.params - The parameters from the configuration.
|
|
57
|
+
* @returns {{id: string[] | undefined}} The obtained IDs or undefined if no IDs are found.
|
|
56
58
|
*/
|
|
57
59
|
getId(config) {
|
|
58
60
|
const pairIdsString = pairIdFromLocalStorage(PAIR_ID_KEY) || pairIdFromCookie(PAIR_ID_KEY)
|
|
@@ -67,13 +69,28 @@ export const pairIdSubmodule = {
|
|
|
67
69
|
|
|
68
70
|
const configParams = (config && config.params) || {};
|
|
69
71
|
if (configParams && configParams.liveramp) {
|
|
70
|
-
let LRStorageLocation = configParams.liveramp.storageKey || DEFAULT_LIVERAMP_PAIR_ID_KEY
|
|
71
|
-
const liverampValue = pairIdFromLocalStorage(LRStorageLocation) || pairIdFromCookie(LRStorageLocation)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
let LRStorageLocation = configParams.liveramp.storageKey || DEFAULT_LIVERAMP_PAIR_ID_KEY;
|
|
73
|
+
const liverampValue = pairIdFromLocalStorage(LRStorageLocation) || pairIdFromCookie(LRStorageLocation);
|
|
74
|
+
|
|
75
|
+
if (liverampValue) {
|
|
76
|
+
try {
|
|
77
|
+
const parsedValue = atob(liverampValue);
|
|
78
|
+
if (parsedValue) {
|
|
79
|
+
const obj = JSON.parse(parsedValue);
|
|
80
|
+
|
|
81
|
+
if (obj && typeof obj === 'object' && obj.envelope) {
|
|
82
|
+
ids = ids.concat(obj.envelope);
|
|
83
|
+
} else {
|
|
84
|
+
logInfo('Pairid: Parsed object is not valid or does not contain envelope');
|
|
85
|
+
}
|
|
86
|
+
} else {
|
|
87
|
+
logInfo('Pairid: Decoded value is empty');
|
|
88
|
+
}
|
|
89
|
+
} catch (error) {
|
|
90
|
+
logInfo('Pairid: Error parsing JSON: ', error);
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
logInfo('Pairid: liverampValue for pairId from storage is empty or null');
|
|
77
94
|
}
|
|
78
95
|
}
|
|
79
96
|
|
|
@@ -5,7 +5,6 @@ import {config} from '../src/config.js';
|
|
|
5
5
|
import {find, includes} from '../src/polyfill.js';
|
|
6
6
|
import {deepAccess, isArray, isFn, isNumber, isPlainObject} from '../src/utils.js';
|
|
7
7
|
import {auctionManager} from '../src/auctionManager.js';
|
|
8
|
-
import {getGlobal} from '../src/prebidGlobal.js';
|
|
9
8
|
import {getANKeywordParam} from '../libraries/appnexusUtils/anKeywords.js';
|
|
10
9
|
import {convertCamelToUnderscore} from '../libraries/appnexusUtils/anUtils.js';
|
|
11
10
|
|
|
@@ -126,7 +125,7 @@ export const spec = {
|
|
|
126
125
|
method: 'POST',
|
|
127
126
|
options: {withCredentials: true},
|
|
128
127
|
data: {
|
|
129
|
-
v:
|
|
128
|
+
v: 'v' + '$prebid.version$',
|
|
130
129
|
pageUrl: referer,
|
|
131
130
|
bidId: bidRequest.bidId,
|
|
132
131
|
// TODO: fix auctionId leak: https://github.com/prebid/Prebid.js/issues/9781
|
|
@@ -179,7 +179,7 @@ function setS2sConfig(options) {
|
|
|
179
179
|
|
|
180
180
|
const activeBidders = [];
|
|
181
181
|
const optionsValid = normalizedOptions.every((option, i, array) => {
|
|
182
|
-
formatUrlParams(
|
|
182
|
+
formatUrlParams(option);
|
|
183
183
|
const updateSuccess = updateConfigDefaultVendor(option);
|
|
184
184
|
if (updateSuccess !== false) {
|
|
185
185
|
const valid = validateConfigRequiredProps(option);
|
|
@@ -333,6 +333,10 @@ export const spec = {
|
|
|
333
333
|
payload.badv = bidderRequest.ortb2?.badv
|
|
334
334
|
}
|
|
335
335
|
|
|
336
|
+
if (bidderRequest.ortb2?.device?.sua) {
|
|
337
|
+
payload.sua = bidderRequest.ortb2.device.sua
|
|
338
|
+
}
|
|
339
|
+
|
|
336
340
|
const payloadString = JSON.stringify(payload);
|
|
337
341
|
|
|
338
342
|
return {
|
|
@@ -1,63 +1,15 @@
|
|
|
1
|
-
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
1
|
+
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
2
|
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
3
3
|
import { config } from '../src/config.js';
|
|
4
4
|
import { convertOrtbRequestToProprietaryNative } from '../src/native.js';
|
|
5
|
-
import {
|
|
5
|
+
import { getAdUrlByRegion } from '../libraries/smartyadsUtils/getAdUrlByRegion.js';
|
|
6
|
+
import { interpretResponse, getUserSyncs } from '../libraries/teqblazeUtils/bidderUtils.js';
|
|
6
7
|
|
|
7
8
|
const BIDDER_CODE = 'smartyads';
|
|
8
9
|
const GVLID = 534;
|
|
9
|
-
const adUrls = {
|
|
10
|
-
US_EAST: 'https://n1.smartyads.com/?c=o&m=prebid&secret_key=prebid_js',
|
|
11
|
-
EU: 'https://n2.smartyads.com/?c=o&m=prebid&secret_key=prebid_js',
|
|
12
|
-
SGP: 'https://n6.smartyads.com/?c=o&m=prebid&secret_key=prebid_js'
|
|
13
|
-
}
|
|
14
10
|
|
|
15
11
|
const URL_SYNC = 'https://as.ck-ie.com/prebidjs?p=7c47322e527cf8bdeb7facc1bb03387a';
|
|
16
12
|
|
|
17
|
-
function isBidResponseValid(bid) {
|
|
18
|
-
if (!bid.requestId || !bid.cpm || !bid.creativeId ||
|
|
19
|
-
!bid.ttl || !bid.currency) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
switch (bid['mediaType']) {
|
|
23
|
-
case BANNER:
|
|
24
|
-
return Boolean(bid.width && bid.height && bid.ad);
|
|
25
|
-
case VIDEO:
|
|
26
|
-
return Boolean(bid.vastUrl) || Boolean(bid.vastXml);
|
|
27
|
-
case NATIVE:
|
|
28
|
-
return Boolean(bid.native && bid.native.title && bid.native.image && bid.native.impressionTrackers);
|
|
29
|
-
default:
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function getAdUrlByRegion(bid) {
|
|
35
|
-
let adUrl;
|
|
36
|
-
|
|
37
|
-
if (bid.params.region && adUrls[bid.params.region]) {
|
|
38
|
-
adUrl = adUrls[bid.params.region];
|
|
39
|
-
} else {
|
|
40
|
-
try {
|
|
41
|
-
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
42
|
-
const region = timezone.split('/')[0];
|
|
43
|
-
|
|
44
|
-
switch (region) {
|
|
45
|
-
case 'Europe':
|
|
46
|
-
adUrl = adUrls['EU'];
|
|
47
|
-
break;
|
|
48
|
-
case 'Asia':
|
|
49
|
-
adUrl = adUrls['SGP'];
|
|
50
|
-
break;
|
|
51
|
-
default: adUrl = adUrls['US_EAST'];
|
|
52
|
-
}
|
|
53
|
-
} catch (err) {
|
|
54
|
-
adUrl = adUrls['US_EAST'];
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return adUrl;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
13
|
export const spec = {
|
|
62
14
|
code: BIDDER_CODE,
|
|
63
15
|
gvlid: GVLID,
|
|
@@ -78,8 +30,6 @@ export const spec = {
|
|
|
78
30
|
let request = {
|
|
79
31
|
'deviceWidth': winTop.screen.width,
|
|
80
32
|
'deviceHeight': winTop.screen.height,
|
|
81
|
-
'language': (navigator && navigator.language) ? navigator.language : '',
|
|
82
|
-
'secure': 1,
|
|
83
33
|
'host': location?.domain ?? '',
|
|
84
34
|
'page': location?.page ?? '',
|
|
85
35
|
'coppa': config.getConfig('coppa') === true ? 1 : 0,
|
|
@@ -87,11 +37,8 @@ export const spec = {
|
|
|
87
37
|
'eeid': validBidRequests[0]?.userIdAsEids,
|
|
88
38
|
'ifa': bidderRequest?.ortb2?.device?.ifa,
|
|
89
39
|
};
|
|
90
|
-
|
|
40
|
+
|
|
91
41
|
if (bidderRequest) {
|
|
92
|
-
if (bidderRequest.uspConsent) {
|
|
93
|
-
request.ccpa = bidderRequest.uspConsent;
|
|
94
|
-
}
|
|
95
42
|
if (bidderRequest.gdprConsent) {
|
|
96
43
|
request.gdpr = bidderRequest.gdprConsent
|
|
97
44
|
}
|
|
@@ -128,59 +75,8 @@ export const spec = {
|
|
|
128
75
|
}
|
|
129
76
|
},
|
|
130
77
|
|
|
131
|
-
interpretResponse
|
|
132
|
-
|
|
133
|
-
serverResponse = serverResponse.body;
|
|
134
|
-
for (let i = 0; i < serverResponse.length; i++) {
|
|
135
|
-
let resItem = serverResponse[i];
|
|
136
|
-
if (isBidResponseValid(resItem)) {
|
|
137
|
-
response.push(resItem);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return response;
|
|
141
|
-
},
|
|
142
|
-
|
|
143
|
-
getUserSyncs: (syncOptions, serverResponses = [], gdprConsent = {}, uspConsent = '', gppConsent = '') => {
|
|
144
|
-
let syncs = [];
|
|
145
|
-
let { gdprApplies, consentString = '' } = gdprConsent;
|
|
146
|
-
|
|
147
|
-
if (syncOptions.iframeEnabled) {
|
|
148
|
-
syncs.push({
|
|
149
|
-
type: 'iframe',
|
|
150
|
-
url: `${URL_SYNC}&gdpr=${gdprApplies ? 1 : 0}&gdpr_consent=${consentString}&type=iframe&us_privacy=${uspConsent}&gpp=${gppConsent}`
|
|
151
|
-
});
|
|
152
|
-
} else {
|
|
153
|
-
syncs.push({
|
|
154
|
-
type: 'image',
|
|
155
|
-
url: `${URL_SYNC}&gdpr=${gdprApplies ? 1 : 0}&gdpr_consent=${consentString}&type=image&us_privacy=${uspConsent}&gpp=${gppConsent}`
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
return syncs
|
|
160
|
-
},
|
|
161
|
-
|
|
162
|
-
onBidWon: function(bid) {
|
|
163
|
-
if (bid.winUrl) {
|
|
164
|
-
ajax(bid.winUrl, () => {}, JSON.stringify(bid));
|
|
165
|
-
} else {
|
|
166
|
-
if (bid?.postData && bid?.postData[0] && bid?.postData[0].params && bid?.postData[0].params[0].host == 'prebid') {
|
|
167
|
-
ajax('https://et-nd43.itdsmr.com/?c=o&m=prebid&secret_key=prebid_js&winTest=1', () => {}, JSON.stringify(bid));
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
|
|
172
|
-
onTimeout: function(bid) {
|
|
173
|
-
if (bid?.postData && bid?.postData[0] && bid?.postData[0].params && bid?.postData[0].params[0].host == 'prebid') {
|
|
174
|
-
ajax('https://et-nd43.itdsmr.com/?c=o&m=prebid&secret_key=prebid_js&bidTimeout=1', () => {}, JSON.stringify(bid));
|
|
175
|
-
}
|
|
176
|
-
},
|
|
177
|
-
|
|
178
|
-
onBidderError: function(bid) {
|
|
179
|
-
if (bid?.postData && bid?.postData[0] && bid?.postData[0].params && bid?.postData[0].params[0].host == 'prebid') {
|
|
180
|
-
ajax('https://et-nd43.itdsmr.com/?c=o&m=prebid&secret_key=prebid_js&bidderError=1', () => {}, JSON.stringify(bid));
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
|
|
78
|
+
interpretResponse,
|
|
79
|
+
getUserSyncs: getUserSyncs(URL_SYNC),
|
|
184
80
|
};
|
|
185
81
|
|
|
186
82
|
registerBidder(spec);
|
|
@@ -3,7 +3,6 @@ import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
|
3
3
|
import {BANNER} from '../src/mediaTypes.js';
|
|
4
4
|
import {deepAccess, isArray, isFn, isPlainObject, inIframe, getDNT, generateUUID} from '../src/utils.js';
|
|
5
5
|
import {hasPurpose1Consent} from '../src/utils/gpdr.js';
|
|
6
|
-
import {getGlobal} from '../src/prebidGlobal.js';
|
|
7
6
|
import {getStorageManager} from '../src/storageManager.js';
|
|
8
7
|
|
|
9
8
|
const BIDDER_CODE = 'snigel';
|
|
@@ -46,7 +45,7 @@ export const spec = {
|
|
|
46
45
|
gdprConsent: gdprApplies === true ? hasFullGdprConsent(deepAccess(bidderRequest, 'gdprConsent')) : false,
|
|
47
46
|
cur: getCurrencies(),
|
|
48
47
|
test: getTestFlag(),
|
|
49
|
-
version:
|
|
48
|
+
version: 'v' + '$prebid.version$',
|
|
50
49
|
gpp: deepAccess(bidderRequest, 'gppConsent.gppString') || deepAccess(bidderRequest, 'ortb2.regs.gpp'),
|
|
51
50
|
gpp_sid:
|
|
52
51
|
deepAccess(bidderRequest, 'gppConsent.applicableSections') || deepAccess(bidderRequest, 'ortb2.regs.gpp_sid'),
|
|
@@ -6,7 +6,6 @@ import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
|
6
6
|
import { config } from '../src/config.js';
|
|
7
7
|
import { Renderer } from '../src/Renderer.js';
|
|
8
8
|
import { parseDomain } from '../src/refererDetection.js';
|
|
9
|
-
import { getGlobal } from '../src/prebidGlobal.js';
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
11
|
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
|
|
@@ -494,7 +493,7 @@ function buildOneRequest(validBidRequests, bidderRequest) {
|
|
|
494
493
|
payload.regs = regs;
|
|
495
494
|
// < Payload
|
|
496
495
|
|
|
497
|
-
let pbjsv =
|
|
496
|
+
let pbjsv = 'v' + '$prebid.version$';
|
|
498
497
|
|
|
499
498
|
return {
|
|
500
499
|
method: 'POST',
|
|
@@ -3,7 +3,6 @@ import { ajax } from '../src/ajax.js';
|
|
|
3
3
|
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
4
4
|
import adapterManager from '../src/adapterManager.js';
|
|
5
5
|
import { EVENTS } from '../src/constants.js';
|
|
6
|
-
import {getGlobal} from '../src/prebidGlobal.js';
|
|
7
6
|
|
|
8
7
|
const emptyUrl = '';
|
|
9
8
|
const analyticsType = 'endpoint';
|
|
@@ -124,7 +123,7 @@ function send(data, status) {
|
|
|
124
123
|
search: {
|
|
125
124
|
auctionTimestamp: auctionTimestamp,
|
|
126
125
|
terceptAnalyticsVersion: terceptAnalyticsVersion,
|
|
127
|
-
prebidVersion:
|
|
126
|
+
prebidVersion: 'v' + '$prebid.version$'
|
|
128
127
|
}
|
|
129
128
|
});
|
|
130
129
|
|
|
@@ -15,6 +15,7 @@ import {getStorageManager} from '../src/storageManager.js';
|
|
|
15
15
|
import {bidderSettings} from '../src/bidderSettings.js';
|
|
16
16
|
import {config} from '../src/config.js';
|
|
17
17
|
import {chunk} from '../libraries/chunk/chunk.js';
|
|
18
|
+
import {extractCID, extractPID, extractSubDomain} from '../libraries/vidazooUtils/bidderUtils.js';
|
|
18
19
|
|
|
19
20
|
const GVLID = 1292;
|
|
20
21
|
const DEFAULT_SUB_DOMAIN = 'exchange';
|
|
@@ -40,18 +41,6 @@ export function createDomain(subDomain = DEFAULT_SUB_DOMAIN) {
|
|
|
40
41
|
return `https://${subDomain}.twist.win`;
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
export function extractCID(params) {
|
|
44
|
-
return params.cId || params.CID || params.cID || params.CId || params.cid || params.ciD || params.Cid || params.CiD;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export function extractPID(params) {
|
|
48
|
-
return params.pId || params.PID || params.pID || params.PId || params.pid || params.piD || params.Pid || params.PiD;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function extractSubDomain(params) {
|
|
52
|
-
return params.subDomain || params.SubDomain || params.Subdomain || params.subdomain || params.SUBDOMAIN || params.subDOMAIN;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
44
|
function isBidRequestValid(bid) {
|
|
56
45
|
const params = bid.params || {};
|
|
57
46
|
return !!(extractCID(params) && extractPID(params));
|
package/modules/userId/index.js
CHANGED
|
@@ -131,7 +131,7 @@ import {config} from '../../src/config.js';
|
|
|
131
131
|
import * as events from '../../src/events.js';
|
|
132
132
|
import {getGlobal} from '../../src/prebidGlobal.js';
|
|
133
133
|
import adapterManager, {gdprDataHandler} from '../../src/adapterManager.js';
|
|
134
|
-
import {
|
|
134
|
+
import {EVENTS} from '../../src/constants.js';
|
|
135
135
|
import {module, ready as hooksReady} from '../../src/hook.js';
|
|
136
136
|
import {buildEidPermissions, createEidsArray, EID_CONFIG} from './eids.js';
|
|
137
137
|
import {
|
|
@@ -147,7 +147,6 @@ import {
|
|
|
147
147
|
getPrebidInternal,
|
|
148
148
|
isArray,
|
|
149
149
|
isEmpty,
|
|
150
|
-
isEmptyStr,
|
|
151
150
|
isFn,
|
|
152
151
|
isGptPubadsDefined,
|
|
153
152
|
isNumber,
|
|
@@ -951,29 +950,40 @@ function hasValidStorageTypes(config) {
|
|
|
951
950
|
* @param {SubmoduleConfig[]} configRegistry
|
|
952
951
|
* @returns {SubmoduleConfig[]}
|
|
953
952
|
*/
|
|
954
|
-
function getValidSubmoduleConfigs(configRegistry) {
|
|
953
|
+
export function getValidSubmoduleConfigs(configRegistry) {
|
|
954
|
+
function err(msg, ...args) {
|
|
955
|
+
logWarn(`Invalid userSync.userId config: ${msg}`, ...args)
|
|
956
|
+
}
|
|
955
957
|
if (!Array.isArray(configRegistry)) {
|
|
958
|
+
if (configRegistry != null) {
|
|
959
|
+
err('must be an array', configRegistry);
|
|
960
|
+
}
|
|
956
961
|
return [];
|
|
957
962
|
}
|
|
958
|
-
return configRegistry.
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
963
|
+
return configRegistry.filter(config => {
|
|
964
|
+
if (!config?.name) {
|
|
965
|
+
return err('must specify "name"', config);
|
|
966
|
+
} else if (config.storage) {
|
|
967
|
+
if (!config.storage.name || !config.storage.type) {
|
|
968
|
+
return err('must specify "storage.name" and "storage.type"', config);
|
|
969
|
+
} else if (!hasValidStorageTypes(config)) {
|
|
970
|
+
return err('invalid "storage.type"', config)
|
|
971
|
+
}
|
|
972
|
+
['expires', 'refreshInSeconds'].forEach(param => {
|
|
973
|
+
let value = config.storage[param];
|
|
974
|
+
if (value != null && typeof value !== 'number') {
|
|
975
|
+
value = Number(value)
|
|
976
|
+
if (isNaN(value)) {
|
|
977
|
+
err(`storage.${param} must be a number and will be ignored`, config);
|
|
978
|
+
delete config.storage[param];
|
|
979
|
+
} else {
|
|
980
|
+
config.storage[param] = value;
|
|
981
|
+
}
|
|
982
|
+
}
|
|
983
|
+
});
|
|
974
984
|
}
|
|
975
|
-
return
|
|
976
|
-
}
|
|
985
|
+
return true;
|
|
986
|
+
})
|
|
977
987
|
}
|
|
978
988
|
|
|
979
989
|
const ALL_STORAGE_TYPES = new Set([LOCAL_STORAGE, COOKIE]);
|