prebid.js 9.40.0 → 9.41.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/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/aniviewBidAdapter.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/beopBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bitmediaBidAdapter.js +1 -1
- package/dist/braveUtils.js +1 -1
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgeuppBidAdapter.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/consumableBidAdapter.js +1 -1
- package/dist/contxtfulBidAdapter.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/dailymotionBidAdapter.js +1 -1
- package/dist/dependencies.json +4 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/epomDspBidAdapter.js +1 -0
- package/dist/equativBidAdapter.js +1 -1
- package/dist/eskimiBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/exadsBidAdapter.js +1 -1
- package/dist/excoBidAdapter.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/greenbidsBidAdapter.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/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmobiBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqAnalyticsAdapter.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/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentId.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/madsenseBidAdapter.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/medianetBidAdapter.js +1 -1
- package/dist/medianetUtils.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/nodalsAiRtdProvider.js +1 -1
- package/dist/not-for-prod/prebid.js +170 -168
- 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/optidigitalBidAdapter.js +1 -1
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/raveltechRtdProvider.js +1 -0
- 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/riseUtils.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/showheroes-bsBidAdapter.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/snigelBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sparteoBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.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/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/vidazooUtils.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/yahooAdsBidAdapter.js +1 -1
- package/dist/yandexBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yieldoneBidAdapter.js +1 -1
- package/gulpfile.js +2 -1
- package/integrationExamples/gpt/raveltechRtdProvider_example.html +379 -0
- package/libraries/braveUtils/index.js +1 -1
- package/libraries/riseUtils/index.js +1 -1
- package/modules/epomDspBidAdapter.js +177 -0
- package/modules/epomDspBidAdapter.md +170 -0
- package/modules/equativBidAdapter.js +14 -3
- package/modules/goldbachBidAdapter.js +160 -300
- package/modules/raveltechRtdProvider.js +131 -0
- package/modules/raveltechRtdProvider.md +61 -0
- package/modules/seedtagBidAdapter.js +1 -0
- package/modules/yandexBidAdapter.js +4 -0
- package/modules/yieldoneBidAdapter.js +6 -0
- package/package.json +2 -2
- package/test/spec/modules/epomDspBidAdapter_spec.js +73 -0
- package/test/spec/modules/equativBidAdapter_spec.js +19 -1
- package/test/spec/modules/goldbachBidAdapter_spec.js +227 -499
- package/test/spec/modules/raveltechRtdProvider_spec.js +108 -0
- package/test/spec/modules/seedtagBidAdapter_spec.js +56 -2
- package/test/spec/modules/yandexBidAdapter_spec.js +6 -0
- package/test/spec/modules/yieldoneBidAdapter_spec.js +40 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Raveltech RTD Module for Prebid.js
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
Module Name: Raveltech RTD Provider
|
|
7
|
+
Module Type: RTD Provider
|
|
8
|
+
Maintainer: maintainers@raveltech.io
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
The RavelTech RTD (Real-Time Data) module for Prebid.js enables publishers to integrate seamlessly with Ravel Technologies' privacy-focused solution, ensuring bidder requests are anonymized before reaching SSPs and DSPs. By leveraging the Ravel Privacy Bus, this module prevents the transmission of personally identifiable information (PII) in bid requests, strengthening privacy compliance and security.
|
|
12
|
+
|
|
13
|
+
## How It Works
|
|
14
|
+
|
|
15
|
+
The module operates in two modes:
|
|
16
|
+
1. **Bid URL Replacement:** The module modifies the bid request URL of the configured bidders to pass through the Ravel proxy, ensuring that all IDs are anonymized.
|
|
17
|
+
2. **Bid Duplication (if `preserveOriginalBid` is enabled):** The module duplicates the original bid request, sending one request as-is and another through the Ravel proxy with anonymized IDs.
|
|
18
|
+
|
|
19
|
+
## Configuration
|
|
20
|
+
|
|
21
|
+
To enable the Raveltech RTD module, you need to configure it with a list of bidders and specify whether to preserve the original bid request.
|
|
22
|
+
For the anonymization feature to work, you also need to load a javascript in the header of your HTML page:
|
|
23
|
+
```html
|
|
24
|
+
<script src="https://cdn.rvlproxy.net/latest/zkad.js" async></script>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Build
|
|
28
|
+
```
|
|
29
|
+
gulp build --modules="rtdModule,raveltechRtdProvider,appnexusBidAdapter,..."
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
> Note that the global RTD module, `rtdModule`, is a prerequisite of the raveltech RTD module.
|
|
33
|
+
|
|
34
|
+
### Parameters
|
|
35
|
+
|
|
36
|
+
| Parameter | Type | Description |
|
|
37
|
+
|--------------------|--------|-------------|
|
|
38
|
+
| `bidders` | Array | A list of bidder codes (or their alias if an alias is used) that should have their bid requests anonymized via Ravel. |
|
|
39
|
+
| `preserveOriginalBid` | Boolean | If `true`, the original bid request is preserved, and an additional bid request is sent through the Ravel proxy. If `false`, the original bid request is replaced with the Ravel-protected request. |
|
|
40
|
+
|
|
41
|
+
### Example Configuration
|
|
42
|
+
|
|
43
|
+
```javascript
|
|
44
|
+
pbjs.setConfig({
|
|
45
|
+
realTimeData: {
|
|
46
|
+
dataProviders: [{
|
|
47
|
+
name: 'raveltech',
|
|
48
|
+
params: {
|
|
49
|
+
bidders: ['appnexus', 'rubicon'],
|
|
50
|
+
preserveOriginalBid: true
|
|
51
|
+
}
|
|
52
|
+
}]
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Privacy Features
|
|
58
|
+
|
|
59
|
+
The RavelTech RTD module allows publishers to implement the following privacy protections:
|
|
60
|
+
- Personally Identifiable Information (PII) is either removed or converted into Anonymized IDs (RIDs).
|
|
61
|
+
- Bid requests are routed through an anonymized proxy before reaching the SSP, ensuring IP address anonymization.
|
|
@@ -55,6 +55,7 @@ const DEFAULT_CURRENCY = 'EUR';
|
|
|
55
55
|
*/
|
|
56
56
|
const SUPPORTED_MEDIA_TYPES = [BANNER, NATIVE];
|
|
57
57
|
const SSP_ID = 10500;
|
|
58
|
+
const ADAPTER_VERSION = '2.0.0';
|
|
58
59
|
|
|
59
60
|
const IMAGE_ASSET_TYPES = {
|
|
60
61
|
ICON: 1,
|
|
@@ -139,6 +140,7 @@ export const spec = {
|
|
|
139
140
|
const queryParams = {
|
|
140
141
|
'imp-id': impId,
|
|
141
142
|
'target-ref': targetRef || ortb2?.site?.domain,
|
|
143
|
+
'adapter-version': ADAPTER_VERSION,
|
|
142
144
|
'ssp-id': SSP_ID,
|
|
143
145
|
};
|
|
144
146
|
|
|
@@ -153,6 +155,8 @@ export const spec = {
|
|
|
153
155
|
id: impId,
|
|
154
156
|
banner: mapBanner(bidRequest),
|
|
155
157
|
native: mapNative(bidRequest),
|
|
158
|
+
displaymanager: 'Prebid.js',
|
|
159
|
+
displaymanagerver: '$prebid.version$',
|
|
156
160
|
};
|
|
157
161
|
|
|
158
162
|
const bidfloor = getBidfloor(bidRequest);
|
|
@@ -119,6 +119,12 @@ export const spec = {
|
|
|
119
119
|
payload.uid2id = uid2;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
// GPID
|
|
123
|
+
const gpid = deepAccess(bidRequest, 'ortb2Imp.ext.gpid');
|
|
124
|
+
if (isStr(gpid) && !isEmpty(gpid)) {
|
|
125
|
+
payload.gpid = gpid;
|
|
126
|
+
}
|
|
127
|
+
|
|
122
128
|
return {
|
|
123
129
|
method: 'GET',
|
|
124
130
|
url: ENDPOINT_URL,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prebid.js",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.41.0",
|
|
4
4
|
"description": "Header Bidding Management Library",
|
|
5
5
|
"main": "src/prebid.public.js",
|
|
6
6
|
"exports": {
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@wdio/cli": "^9.0.5",
|
|
53
53
|
"@wdio/concise-reporter": "^8.29.0",
|
|
54
54
|
"@wdio/local-runner": "^9.0.5",
|
|
55
|
-
"@wdio/mocha-framework": "^
|
|
55
|
+
"@wdio/mocha-framework": "^9.12.6",
|
|
56
56
|
"@wdio/spec-reporter": "^8.29.0",
|
|
57
57
|
"ajv": "6.12.3",
|
|
58
58
|
"assert": "^2.0.0",
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { spec } from '../../../modules/epomDspBidAdapter.js';
|
|
3
|
+
|
|
4
|
+
const VALID_BID_REQUEST = {
|
|
5
|
+
bidder: 'epom_dsp',
|
|
6
|
+
params: {
|
|
7
|
+
endpoint: 'https://bidder.epommarket.com/bidder/v2_5/bid?key=d0b9fb9de9dfbba694dfe75294d8e45a'
|
|
8
|
+
},
|
|
9
|
+
adUnitCode: 'ad-unit-1',
|
|
10
|
+
sizes: [[300, 250]],
|
|
11
|
+
bidId: '12345'
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const BIDDER_REQUEST = {
|
|
15
|
+
refererInfo: { referer: 'https://example.com' },
|
|
16
|
+
gdprConsent: { consentString: 'consent_string' },
|
|
17
|
+
uspConsent: 'usp_string'
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
describe('epomDspBidAdapter', function () {
|
|
21
|
+
it('should validate a correct bid request', function () {
|
|
22
|
+
expect(spec.isBidRequestValid(VALID_BID_REQUEST)).to.be.true;
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('should reject a bid request with missing endpoint', function () {
|
|
26
|
+
const invalidBid = { ...VALID_BID_REQUEST, params: { endpoint: '' } };
|
|
27
|
+
expect(spec.isBidRequestValid(invalidBid)).to.be.false;
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('should reject a bid request with an invalid endpoint', function () {
|
|
31
|
+
const invalidBid = { ...VALID_BID_REQUEST, params: { endpoint: 'http://invalid.com' } };
|
|
32
|
+
expect(spec.isBidRequestValid(invalidBid)).to.be.false;
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('should build requests properly', function () {
|
|
36
|
+
const requests = spec.buildRequests([VALID_BID_REQUEST], BIDDER_REQUEST);
|
|
37
|
+
expect(requests).to.have.length(1);
|
|
38
|
+
expect(requests[0]).to.include.keys(['method', 'url', 'data', 'options']);
|
|
39
|
+
expect(requests[0].method).to.equal('POST');
|
|
40
|
+
expect(requests[0].url).to.equal(VALID_BID_REQUEST.params.endpoint);
|
|
41
|
+
expect(requests[0].data).to.include.keys(['referer', 'gdprConsent', 'uspConsent']);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('should interpret response correctly', function () {
|
|
45
|
+
const SERVER_RESPONSE = {
|
|
46
|
+
body: {
|
|
47
|
+
bids: [
|
|
48
|
+
{
|
|
49
|
+
requestId: '12345',
|
|
50
|
+
cpm: 1.23,
|
|
51
|
+
currency: 'USD',
|
|
52
|
+
width: 300,
|
|
53
|
+
height: 250,
|
|
54
|
+
ad: '<div>Ad</div>',
|
|
55
|
+
creativeId: 'abcd1234',
|
|
56
|
+
ttl: 300,
|
|
57
|
+
netRevenue: true
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const result = spec.interpretResponse(SERVER_RESPONSE);
|
|
64
|
+
expect(result).to.have.length(1);
|
|
65
|
+
expect(result[0]).to.include.keys(['requestId', 'cpm', 'currency', 'width', 'height', 'ad', 'creativeId', 'ttl', 'netRevenue']);
|
|
66
|
+
expect(result[0].cpm).to.equal(1.23);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('should return empty array for empty response', function () {
|
|
70
|
+
const result = spec.interpretResponse({ body: {} });
|
|
71
|
+
expect(result).to.be.an('array').that.is.empty;
|
|
72
|
+
});
|
|
73
|
+
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { converter, spec, storage } from 'modules/equativBidAdapter.js';
|
|
1
|
+
import { converter, getImpIdMap, spec, storage } from 'modules/equativBidAdapter.js';
|
|
2
2
|
import * as utils from '../../../src/utils.js';
|
|
3
3
|
|
|
4
4
|
describe('Equativ bid adapter tests', () => {
|
|
@@ -890,6 +890,24 @@ describe('Equativ bid adapter tests', () => {
|
|
|
890
890
|
delete response.body.seatbid;
|
|
891
891
|
expect(spec.interpretResponse(response, request)).to.not.throw;
|
|
892
892
|
});
|
|
893
|
+
|
|
894
|
+
it('should pass exp as ttl parameter with its value', () => {
|
|
895
|
+
const request = spec.buildRequests(
|
|
896
|
+
DEFAULT_BANNER_BID_REQUESTS,
|
|
897
|
+
DEFAULT_BANNER_BIDDER_REQUEST
|
|
898
|
+
)[0];
|
|
899
|
+
|
|
900
|
+
const response = utils.deepClone(SAMPLE_RESPONSE);
|
|
901
|
+
const bidId = 'abcd1234';
|
|
902
|
+
const impIdMap = getImpIdMap();
|
|
903
|
+
|
|
904
|
+
response.body.seatbid[0].bid[0].impid = Object.keys(impIdMap).find(key => impIdMap[key] === bidId);
|
|
905
|
+
response.body.seatbid[0].bid[0].exp = 120;
|
|
906
|
+
|
|
907
|
+
const result = spec.interpretResponse(response, request);
|
|
908
|
+
|
|
909
|
+
expect(result.bids[0]).to.have.property('ttl').that.eq(120);
|
|
910
|
+
});
|
|
893
911
|
});
|
|
894
912
|
|
|
895
913
|
describe('isBidRequestValid', () => {
|