Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merge master #22

Merged
merged 84 commits into from
Mar 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
1ecfe8e
Taboola Bid Adapter - support topics handling (#11139)
aleskanderl Feb 26, 2024
5b6dd8c
Adagio Bid Adapter: fix ortb delivery video param validation (#11144)
osazos Feb 26, 2024
9fdc06a
JsDoc Lint Fix : multiple adapters and modules (#11103)
ChrisHuie Feb 26, 2024
c794435
Mediaimpact Bid Adapter: initial release (#11099)
nalexand Feb 27, 2024
37d368e
Lucead Adapter: update (#11143)
aymeric45 Feb 28, 2024
6669609
ZetaGlobalSsp Bid Adapter: provide dspId into bid (#11150)
asurovenko-zeta Feb 28, 2024
72e2ee6
Adspirit Bid Adapter: initial release (#10939)
carsten1980 Feb 28, 2024
b4d9197
fix hadron ID module name (#11151)
dgirardi Feb 29, 2024
6184940
Criteo bid adapter: raise Fledge timeout (#11152)
dzhang-criteo Feb 29, 2024
e97e700
Stn Bid Adapter: initial release (#11085)
lasloche Feb 29, 2024
9427cd3
Fixed use of adUnitId for analytics purpose (#11160)
pm-azhar-mulla Mar 1, 2024
0a0343b
adspiritBidAdapter - fix lint errors in unit test file (#11163)
jsnellbaker Mar 1, 2024
6347324
Prebid 8.39.0 release
prebidjs-release Mar 1, 2024
9da6ef0
Increment version to 8.40.0-pre
prebidjs-release Mar 1, 2024
99247d0
Opsco Bid Adapter : initial release (#11112)
ops-co Mar 3, 2024
eb08d22
ID5 User Id module - expose euid as a separate eid object (#11158)
abazylewicz-id5 Mar 4, 2024
94bb619
Triplelift Bid Adapter: Optimize EID Signals (#11168)
patrickloughrey Mar 4, 2024
37e91e7
Azerion Edge RTD Module: Initial release (#11134)
garciapuig Mar 5, 2024
b97b55a
feat: pangle multi format (#11175)
pangle-fe Mar 5, 2024
e873c71
NoBid Analytics Adapter: support for multiple currencies (#11171)
redaguermas Mar 5, 2024
2553471
Fix for bids without userId specified. (#11170)
antosarho Mar 5, 2024
9cb0df5
adstirBidAdapter support topic api (#11177)
ryohamadaumt Mar 6, 2024
1a3a6ed
inline ttd and refactor test (#11174)
wi101 Mar 6, 2024
06bf1e4
NextMillennium Bid Adapter: removed the use of the events module (#11…
mhlm Mar 6, 2024
0210d2e
Colossus Bid Adapter: Add GPP Support and Accept eids from publisher …
bhasker-ddh Mar 6, 2024
0bb0df1
Cwire adapter: Add gvl_id for tcfeu compliance  (c-wire/support#117) …
espen-j Mar 7, 2024
48e88f3
Vidazoo Bid Adapter : more ortb2 data and fledge support (#11182)
saar120 Mar 7, 2024
2b3a62b
[JW Player RTD Module] Deprecate playerID (#11179)
karimMourra Mar 7, 2024
e7eb2be
Delete test/spec/modules/enrichmentFpdModule_spec.js (#11188)
patmmccann Mar 8, 2024
8a92067
Prebid 8.40.0 release
prebidjs-release Mar 8, 2024
920a36d
Increment version to 8.41.0-pre
prebidjs-release Mar 8, 2024
edf27c8
Discovery Bid Adapter : Extend the expiration time of pmguid (#11154)
lhxx121 Mar 11, 2024
2da6055
ext.vastxml to adm (#11164)
gchicoye Mar 11, 2024
59466ad
fix kueezRtbBidAdapter timeout logic #9787 (#11193)
elad-yosifon Mar 11, 2024
a068355
HypeLab Bid Adapter: support floors and bugfixes (#11165)
Minebomber Mar 11, 2024
0756379
Sspbc Bid Adapter : add support for dsa and pass non standard ids (#1…
wojciech-bialy-wpm Mar 11, 2024
404caa4
Publir Bid Adapter : initial release (#10851)
mdghousesaqlain Mar 12, 2024
101ec94
Pstudio Bid Adapter: initial release (#10980)
cckowalewska Mar 12, 2024
691f159
Adkernel Bid Adapter: add digiad alias (#11199)
ckbo3hrk Mar 12, 2024
643cbd0
Update rtbhouseBidAdapter.js (#11185)
patmmccann Mar 12, 2024
6bd8ba6
Onetag Bid Adapter: add reading of addtlConsent GDPR field (#11202)
onetag-dev Mar 13, 2024
22d10dd
PubMatic Analytics Adapter : Logging price bucket value of the bid (#…
pm-azhar-mulla Mar 13, 2024
c9faa28
SmartyadsBidAdapter/add_SGP_region (#11205)
rishko00 Mar 13, 2024
b68759d
Automatad Analytics Adapter : expose queue as a global object (#11203)
shashankatd Mar 13, 2024
1c57789
Taboola Bid Adapter : providing visibility in case of bid error (#11195)
barRubi Mar 13, 2024
77254c2
Kargo Bid Adapter: floors and CreativeID update (#11153)
sj1815 Mar 14, 2024
b8a8031
fix mismatch (#11208)
ikagotso Mar 14, 2024
e939aee
Ras Bid Adapter : add support for native mediaType (#11180)
kzwolinskirasp Mar 14, 2024
e45e5ca
Weborama RTD Module : update gdpr purpose ids verification for TCF v2…
peczenyj Mar 14, 2024
fa8c030
Zeta Global SSP Bid Adapter: add gvlid. (#11211)
abermanov-zeta Mar 14, 2024
e5d87df
Sharethrough Bid Adapter : Support for dsa transparency (#11191)
pierreted90 Mar 14, 2024
5018b6b
Pstudio Bid Adapter: update endpoint to production (#11210)
cckowalewska Mar 14, 2024
4b4e83e
ZetaGlobalSsp Adapter: crop page (#11198)
asurovenko-zeta Mar 14, 2024
9a978bd
Userid module: allow postInstall (#11215)
olafbuitelaar Mar 15, 2024
44717bc
NextMillennium Bid Adapter : fix imp.video.mimes (#11216)
mhlm Mar 15, 2024
28cceb9
Prebid 8.41.0 release
prebidjs-release Mar 15, 2024
2ecfa99
Increment version to 8.42.0-pre
prebidjs-release Mar 15, 2024
90bc7f4
Bump follow-redirects from 1.15.4 to 1.15.6 (#11220)
dependabot[bot] Mar 15, 2024
a7a8f74
Removing protocol check (#11219)
desidiver Mar 15, 2024
d17c44b
jixie Bid Adapter : adding handling of userSync urls sent from server…
jxdeveloper1 Mar 15, 2024
ecdeb25
Update ssp endpoint (#11226)
mrsmoking Mar 18, 2024
40dd3b6
Connatix Bid Adapter: GPP Integration (#11229)
Sabau-Adrian-Cnx Mar 18, 2024
4b4648e
Taboola Bid Adapter : add for support fledge (#11192)
aleskanderl Mar 19, 2024
90822c6
Criteo Bid Adapter: use igi.igs to register fledge auction configs (…
vraybaud Mar 19, 2024
48113b1
setupad Bid Adapter: initial commit (#11008)
pashaGhub Mar 19, 2024
dfdf912
New Bidder Adapter: Adlive Plus (#11176)
aymeric45 Mar 19, 2024
1d66b92
Discovery Bid Adapter : support topics (#11209)
lhxx121 Mar 19, 2024
075abb7
Autoplay detection library: initial release && Teads Bid Adapter: det…
github-matthieu-wipliez Mar 20, 2024
91512b9
Adquery Bid Adapter: bidWon bugfix (#11227)
awiackiewicz Mar 20, 2024
b1d4679
Adf Bid Adapter: set vastUrl (#11243)
Pupis Mar 20, 2024
31f7581
Magnite Analytics Adapter: add indication of cookieless traffic (#11241)
apukh-magnite Mar 20, 2024
9648399
PubMatic Bid Adapter: Support for DSA (#11245)
jlquaccia Mar 21, 2024
2fbdf06
Kargo Bid Adapter: Adds ortb2 and ortb2Imp to request (#11248)
nickllerandi Mar 21, 2024
708a696
NextMillennium: Added some parameters for video (#11235)
mhlm Mar 21, 2024
9088112
Debugging module: add PAAPI support (#11240)
dgirardi Mar 22, 2024
d9245b0
AdMatic Bid Adapter : gvlid and video renderer feature added (#11212)
fatihkaya84 Mar 22, 2024
4bad7e4
Uid2 Token Gen Library: Allow EUID key prefixes (#11250)
ssundahlTTD Mar 25, 2024
e5da9e4
Update DM wrappers TTL default (#11255)
apukh-magnite Mar 25, 2024
af20eda
Aso Bid Adapter: refactoring to use ortb converter (#11249)
adserver-online Mar 25, 2024
c5e8af7
OMS Adapter: add gpid support (#11238)
prBigBrother Mar 25, 2024
e3789a6
Prebid 8.42.0 release
prebidjs-release Mar 26, 2024
b64724e
Increment version to 8.43.0-pre
prebidjs-release Mar 26, 2024
8e5b35c
Bump express from 4.18.2 to 4.19.2 (#11258)
dependabot[bot] Mar 26, 2024
673f44f
Smartyads Bid Adapter : add user id fields (#11221)
rishko00 Mar 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 91 additions & 0 deletions integrationExamples/gpt/azerionedgeRtdProvider_example.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
<html>
<head>
<meta name="keywords" content="football basketball rugby tenis" />
<script async src="../../build/dev/prebid.js" async></script>
<script
async
src="https://www.googletagservices.com/tag/js/gpt.js"
></script>

<script>
const FAILSAFE_TIMEOUT = 1000;
const PREBID_TIMEOUT = 1000;
const TEST_DIV = "test-div";
const TEST_SIZES = [[300, 250]];
const TEST_OUTPUT = "azerion-segments";
const STORAGE_KEY = "ht-pa-v1-a";
</script>

<script>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
googletag.cmd.push(function () {
googletag
.defineSlot("/19968336/header-bid-tag-0", TEST_SIZES, TEST_DIV)
.addService(googletag.pubads());
googletag.pubads().disableInitialLoad();
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>

<script>
var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
pbjs.que.push(function () {
pbjs.setConfig({
debug: true,
realTimeData: {
dataProviders: [
{
name: "azerionedge",
waitForIt: true,
params: { bidders: ["appnexus"] },
},
],
},
});
pbjs.setBidderConfig({ bidders: ["appnexus"], config: {} });
pbjs.addAdUnits([
{
code: TEST_DIV,
mediaTypes: { banner: { sizes: TEST_SIZES } },
bids: [{ bidder: "appnexus", params: { placementId: 13144370 } }],
},
]);
pbjs.requestBids({
bidsBackHandler: sendAdserverRequest,
timeout: PREBID_TIMEOUT,
});
});

function sendAdserverRequest() {
const output = document.getElementById(TEST_OUTPUT);
output.innerHTML = window.localStorage.getItem(STORAGE_KEY);

if (pbjs.adserverRequestSent) return;
pbjs.adserverRequestSent = true;
googletag.cmd.push(function () {
pbjs.que.push(function () {
pbjs.setTargetingForGPTAsync();
googletag.pubads().refresh();
});
});
}
setTimeout(sendAdserverRequest, FAILSAFE_TIMEOUT);
</script>
</head>

<body>
<h2>Azerion Edge RTD</h2>

<div id="test-div">
<script>
googletag.cmd.push(() => googletag.display(TEST_DIV));
</script>
</div>

Segments:
<div id="azerion-segments"></div>
</body>
</html>
84 changes: 84 additions & 0 deletions integrationExamples/gpt/publir_hello_world.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Prebid.js Banner gpt Example</title>
<script async src="https://www.googletagservices.com/tag/js/gpt.js"></script>
<script async src="../../build/dev/prebid.js"></script>
<script>
var FAILSAFE_TIMEOUT = 3300;
var PREBID_TIMEOUT = 1000;

var adUnits = [{
code: 'div-gpt-ad-1460505748561-0',
mediaTypes: {
banner: {
sizes: [[160, 600]],
}
},
bids: [{
bidder: 'publir',
params: {
pubId: 13144370
}
}]

}];

var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];

</script>

<script>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
googletag.cmd.push(function () {
googletag.pubads().disableInitialLoad();
});

pbjs.que.push(function () {
pbjs.addAdUnits(adUnits);

pbjs.requestBids({
bidsBackHandler: sendAdserverRequest,
timeout: PREBID_TIMEOUT
});
});

function sendAdserverRequest() {
googletag.cmd.push(function () {
pbjs.que.push(function () {
pbjs.setTargetingForGPTAsync('div-gpt-ad-1460505748561-0');
googletag.pubads().refresh();
});
});
}

setTimeout(function () {
sendAdserverRequest();
}, FAILSAFE_TIMEOUT);

</script>

<script>
googletag.cmd.push(function () {
googletag.defineSlot('/1011927,22444378655/hre_vcn_4', [[160, 600], [240, 600]], 'div-gpt-ad-1460505748561-0').addService(googletag.pubads());

googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>
</head>

<body>
<h2>Prebid.js Test</h2>
<h5>Div-1</h5>
<div id='div-gpt-ad-1460505748561-0'>
<script type='text/javascript'>
googletag.cmd.push(function () { googletag.display('div-gpt-ad-1460505748561-0'); });
</script>
</div>
</body>

</html>
2 changes: 1 addition & 1 deletion libraries/appnexusUtils/anKeywords.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export function convertKeywordStringToANMap(keyStr) {
}

/**
* @param {Array<String>} kwarray: keywords as an array of strings
* @param {Array<String>} kwarray keywords as an array of strings
* @return {{}} appnexus-style keyword map
*/
function convertKeywordsToANMap(kwarray) {
Expand Down
42 changes: 42 additions & 0 deletions libraries/autoplayDetection/autoplay.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
let autoplayEnabled = null;

/**
* Note: this function returns true if detection is not done yet. This is by design: if autoplay is not allowed,
* the call to video.play() will fail immediately, otherwise it may not terminate.
* @returns true if autoplay is not forbidden
*/
export const isAutoplayEnabled = () => autoplayEnabled !== false;

// generated with:
// ask ChatGPT for a 160x90 black PNG image (1/8th the size of 720p)
//
// encode with:
// ffmpeg -i black_image_160x90.png -r 1 -c:v libx264 -bsf:v 'filter_units=remove_types=6' -pix_fmt yuv420p autoplay.mp4
// this creates a 1 second long, 1 fps YUV 4:2:0 video encoded with H.264 without encoder details.
//
// followed by:
// echo "data:video/mp4;base64,$(base64 -i autoplay.mp4)"

const autoplayVideoUrl =
'data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAADxtZGF0AAAAMGWIhAAV//73ye/Apuvb3rW/k89I/Cy3PsIqP39atohOSV14BYa1heKCYgALQC5K4QAAAwZtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAD6AABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACMHRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAD6AAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAoAAAAFoAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAA+gAAAAAAAEAAAAAAahtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAAEAAAABAAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAFTbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABE3N0YmwAAACvc3RzZAAAAAAAAAABAAAAn2F2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAoABaAEgAAABIAAAAAAAAAAEVTGF2YzYwLjMxLjEwMiBsaWJ4MjY0AAAAAAAAAAAAAAAY//8AAAA1YXZjQwFkAAr/4QAYZ2QACqzZQo35IQAAAwABAAADAAIPEiWWAQAGaOvjyyLA/fj4AAAAABRidHJ0AAAAAAAAAaAAAAGgAAAAGHN0dHMAAAAAAAAAAQAAAAEAAEAAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAABRzdHN6AAAAAAAAADQAAAABAAAAFHN0Y28AAAAAAAAAAQAAADAAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjYwLjE2LjEwMA==';

function startDetection() {
// we create an HTMLVideoElement muted and not displayed in which we try to play a one frame video
const videoElement = document.createElement('video');
videoElement.src = autoplayVideoUrl;
videoElement.setAttribute('playsinline', 'true');
videoElement.muted = true;

videoElement
.play()
.then(() => {
autoplayEnabled = true;
videoElement.pause();
})
.catch(() => {
autoplayEnabled = false;
});
}

// starts detection as soon as this library is loaded
startDetection();
2 changes: 1 addition & 1 deletion libraries/keywords/keywords.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const ORTB_KEYWORDS_PATHS = ['user.keywords'].concat(
);

/**
* @param commaSeparatedKeywords: any number of either keyword arrays, or comma-separated keyword strings
* @param commaSeparatedKeywords any number of either keyword arrays, or comma-separated keyword strings
* @returns an array with all unique keywords contained across all inputs
*/
export function mergeKeywords(...commaSeparatedKeywords) {
Expand Down
2 changes: 2 additions & 0 deletions libraries/objectGuard/objectGuard.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import {isData, objectTransformer, sessionedApplies} from '../../src/activities/
import {deepAccess, deepClone, deepEqual, deepSetValue} from '../../src/utils.js';

/**
* @typedef {import('../src/activities/redactor.js').TransformationRuleDef} TransformationRuleDef
* @typedef {import('../src/adapters/bidderFactory.js').TransformationRule} TransformationRule
* @typedef {Object} ObjectGuard
* @property {*} obj a view on the guarded object
* @property {function(): void} verify a function that checks for and rolls back disallowed changes to the guarded object
Expand Down
4 changes: 4 additions & 0 deletions libraries/objectGuard/ortbGuard.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ import {
import {objectGuard, writeProtectRule} from './objectGuard.js';
import {mergeDeep} from '../../src/utils.js';

/**
* @typedef {import('./objectGuard.js').ObjectGuard} ObjectGuard
*/

function ortb2EnrichRules(isAllowed = isActivityAllowed) {
return [
{
Expand Down
16 changes: 16 additions & 0 deletions libraries/uid1Eids/uid1Eids.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
export const UID1_EIDS = {
'tdid': {
source: 'adserver.org',
atype: 1,
getValue: function(data) {
if (data.id) {
return data.id;
} else {
return data;
}
},
getUidExt: function(data) {
return {...{rtiPartner: 'TDID'}, ...data.ext}
}
}
}
1 change: 1 addition & 0 deletions libraries/video/shared/parentModule.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ export function ParentModule(submoduleBuilder_) {
}

/**
* @typedef {import('../../../modules/videoModule/coreVideo.js').vendorSubmoduleDirectory} vendorSubmoduleDirectory
* @typedef {Object} SubmoduleBuilder
* @summary Instantiates submodules
* @param {vendorSubmoduleDirectory} submoduleDirectory_
Expand Down
1 change: 1 addition & 0 deletions modules/.submodules.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@
"airgridRtdProvider",
"akamaiDapRtdProvider",
"arcspanRtdProvider",
"azerionedgeRtdProvider",
"blueconicRtdProvider",
"brandmetricsRtdProvider",
"browsiRtdProvider",
Expand Down
2 changes: 1 addition & 1 deletion modules/adagioBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ export const ORTB_VIDEO_PARAMS = {
'boxingallowed': (value) => isInteger(value),
'playbackmethod': (value) => isArrayOfNums(value),
'playbackend': (value) => isInteger(value),
'delivery': (value) => isInteger(value),
'delivery': (value) => isArrayOfNums(value),
'pos': (value) => isInteger(value),
'api': (value) => isArrayOfNums(value)
};
Expand Down
9 changes: 8 additions & 1 deletion modules/adfBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,14 @@ export const spec = {
ortb: bidResponse.native
};
} else {
result[ mediaType === VIDEO ? 'vastXml' : 'ad' ] = bidResponse.adm;
if (mediaType === VIDEO) {
result.vastXml = bidResponse.adm;
if (bidResponse.nurl) {
result.vastUrl = bidResponse.nurl;
}
} else {
result.ad = bidResponse.adm;
}
}

if (!bid.renderer && mediaType === VIDEO && deepAccess(bid, 'mediaTypes.video.context') === 'outstream') {
Expand Down
3 changes: 2 additions & 1 deletion modules/adkernelBidAdapter.js
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,8 @@ export const spec = {
{code: 'didnadisplay'},
{code: 'qortex'},
{code: 'adpluto'},
{code: 'headbidder'}
{code: 'headbidder'},
{code: 'digiad'}
],
supportedMediaTypes: [BANNER, VIDEO, NATIVE],

Expand Down
Loading