Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
719568d
WIP deduplicate request
marcin-wrobel-ox Feb 13, 2026
a9c8b43
Cleanup of tests and buildRequest function
bukrain Feb 20, 2026
27eff87
Improve tests
bukrain Feb 20, 2026
a5e7778
Revert changing platformID in test
bukrain Feb 20, 2026
13172aa
Add additional tests
bukrain Feb 20, 2026
088ef4a
Merge branch 'master' into wip-dedup-requests
bukrain Feb 23, 2026
82ff015
Merge branch 'master' into wip-dedup-requests
bukrain Mar 3, 2026
163229c
Search banner imp by id in test
bukrain Feb 23, 2026
f403d44
Format tests
bukrain Feb 23, 2026
ac39f67
Merge branch 'master' into wip-dedup-requests
bukrain Mar 12, 2026
8a91fe7
Fix lint errors
bukrain Mar 12, 2026
dc526c7
Mediafuse adapter update: resubmit refactor (#14581)
patmmccann Mar 12, 2026
217004b
Build system: separate `build-release` from `prepare-release` (#14578)
dgirardi Mar 12, 2026
2984a0e
adloox analytics: do not disable if not enabled (#14585)
dgirardi Mar 12, 2026
1ef2154
Magnite Bid Adapter: New ORTB Adapter for magnite (rubicon) (#14476)
robertrmartinez Mar 12, 2026
13cdc5a
Prebid 10.28.0 release
prebidjs-release Mar 12, 2026
415eed0
Increment version to 10.28.1-pre
prebidjs-release Mar 12, 2026
ab36622
Core: bid targeting exclusion (#14453)
mkomorski Mar 12, 2026
8be6dfb
Document common adapter types and references (#14577)
patmmccann Mar 12, 2026
bd487f3
adds badv and bcat support for deepintent bid adapter (#14528)
parthshah51999 Mar 12, 2026
66e75d8
Performax adapter: Add user sync and reporting URLs (#14547)
michalkvacek Mar 12, 2026
e512167
Optout Bid Adapter: migrate endpoints and batch requests with custom …
doelwit Mar 12, 2026
f19113f
Taboola: support native (#14486)
ronishefi9 Mar 12, 2026
13da5e0
Taboola multiformat test page (#14543)
ronishefi9 Mar 12, 2026
7afcc7c
Fix formatting of bidderReq object in test
patmmccann Mar 12, 2026
4752150
fix version number for 10.29
patmmccann Mar 12, 2026
909e6b7
Merge branch 'master' of https://github.com/prebid/Prebid.js
patmmccann Mar 12, 2026
c16d736
Prebid 10.29.0 release
prebidjs-release Mar 12, 2026
346a7c0
Increment version to 10.29.1-pre
prebidjs-release Mar 12, 2026
2366a67
Prebid 11.0 (#14433)
patmmccann Mar 12, 2026
287ef2c
Prebid 11.0.0 release
prebidjs-release Mar 12, 2026
a5f7371
Increment version to 11.1.1-pre
prebidjs-release Mar 12, 2026
11ea423
StroeerCore Bid Adapter: add support for TIDs and GPID (#14548)
philipwatson Mar 13, 2026
f584def
Incorporate ortb2Imp.ext.data as kv in ad request. (#14549)
antosarho Mar 13, 2026
47c39ed
Various modules: revert GPT targeting changes (#14591)
dgirardi Mar 13, 2026
22ac654
Prebid 11.1.0 release
prebidjs-release Mar 14, 2026
3c86e10
Increment version to 11.2.0-pre
prebidjs-release Mar 14, 2026
cee4f2f
Bump flatted from 3.3.1 to 3.4.1 (#14593)
dependabot[bot] Mar 15, 2026
4ffb4bf
Bump undici from 6.23.0 to 6.24.1 (#14595)
dependabot[bot] Mar 15, 2026
68b0534
Holid Bid Adapter: respect auction timeout, ORTB merges, usersync rob…
holidio Mar 15, 2026
7ebff9b
Add Alliance Gravity Bid Adapter (#14267)
danielbaud Mar 17, 2026
6295bfb
gppControl modules: add missing transmitUfpd check (#14604)
dgirardi Mar 17, 2026
286dfe7
Bump fast-xml-parser from 5.4.1 to 5.5.6 (#14608)
dependabot[bot] Mar 18, 2026
318483d
51DegreesRtdProvider: populate device.hwv, improve device.model (#14598)
justadreamer Mar 18, 2026
5b1e70f
adtelligentBidAdapter: gather placement pos info (#14555)
PiekharievaK Mar 18, 2026
a7c82c8
Reformat import statements in gravityBidAdapter (#14610)
patmmccann Mar 18, 2026
fcd64ea
BeOpBidAdapter: Refacto beopid cookie to caudid (#14584)
sebrobert Mar 18, 2026
f2a6339
Bump socket.io-parser from 4.2.4 to 4.2.6 (#14613)
dependabot[bot] Mar 19, 2026
fa02081
Merge branch 'master' into wip-dedup-requests
bukrain Mar 19, 2026
6756249
Add 'device.ifa' to user paths in redactor.ts (#14606)
patmmccann Mar 19, 2026
b6f4a28
Merge branch 'master' into wip-dedup-requests
bukrain Mar 19, 2026
6896fee
Core: allow vast xml without using cache (#14611)
mkomorski Mar 19, 2026
3f98761
Merge branch 'master' into wip-dedup-requests
bukrain Mar 20, 2026
4316630
Bump fast-xml-parser from 5.5.6 to 5.5.7 (#14619)
dependabot[bot] Mar 20, 2026
6f9fd36
Bump flatted from 3.4.1 to 3.4.2 (#14621)
dependabot[bot] Mar 20, 2026
51e5602
datamage rtd contextual provider: initial release (#14485)
leiforion Mar 20, 2026
adf5a4f
Update AGENTS.md with review guidelines (#14612)
patmmccann Mar 20, 2026
65de0ad
Merge branch 'master' into wip-dedup-requests
bukrain Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
40 changes: 30 additions & 10 deletions .github/workflows/linter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v6
with:
node-version: '20'
node-version: "20"

- name: Checkout code
uses: actions/checkout@v6
Expand All @@ -35,6 +35,9 @@ jobs:
- name: Get the diff
run: git diff --name-only origin/${{ github.event.pull_request.base.ref }}...refs/remotes/pull/${{ github.event.pull_request.number }}/merge | grep '^\(modules\|src\|libraries\|creative\)/.*\.js$' > __changed_files.txt || true

- name: Get newly added JS files in TS migration paths
run: git diff --name-only --diff-filter=A origin/${{ github.event.pull_request.base.ref }}...refs/remotes/pull/${{ github.event.pull_request.number }}/merge | grep '^\(modules\|src\|libraries\)/.*\.js$' > __new_js_files.txt || true

- name: Run linter on base branch
run: npx eslint --no-inline-config --format json $(cat __changed_files.txt | xargs stat --printf '%n\n' 2> /dev/null) > __base.json || true

Expand All @@ -56,7 +59,7 @@ jobs:
const fs = require('fs');
const path = require('path');
const process = require('process');

function parse(fn) {
return JSON.parse(fs.readFileSync(fn)).reduce((memo, data) => {
const file = path.relative(process.cwd(), data.filePath);
Expand All @@ -67,7 +70,7 @@ jobs:
return memo;
}, {})
}

function mkDiff(old, new_) {
const files = Object.fromEntries(
Object.entries(new_)
Expand All @@ -83,12 +86,23 @@ jobs:
return memo;
}, {errors: 0, warnings: 0, files})
}
function mkComment({errors, warnings, files}) {

function mkComment({errors, warnings, files}, newJsFiles) {
function pl(noun, number) {
return noun + (number === 1 ? '' : 's')
}
if (errors === 0 && warnings === 0) return;
const comments = [];

if (newJsFiles.length > 0) {
let jsComment = 'Whoa there partner! This project is migrating to typescript. Consider changing the new JS files to TS, with well-defined types for what interacts with the prebid public API (for example: bid params and configuration). Thanks!\n\n';
newJsFiles.forEach((file) => {
jsComment += ` * \`${file}\`\n`;
});
comments.push(jsComment);
}

if (errors === 0 && warnings === 0) return comments.length > 0 ? comments.join('\n') : undefined;

const summary = [];
if (errors) summary.push(`**${errors}** linter ${pl('error', errors)}`)
if (warnings) summary.push(`**${warnings}** linter ${pl('warning', warnings)}`)
Expand All @@ -99,12 +113,18 @@ jobs:
if (warnings) summary.push(`+${warnings} ${pl('warning', warnings)}`)
cm += ` * \`${file}\` (${summary.join(', ')})\n`
})
return cm;
comments.push(cm);
return comments.join('\n');
}

function readLines(fn) {
if (!fs.existsSync(fn)) return [];
return fs.readFileSync(fn, 'utf8').split('\n').map(line => line.trim()).filter(Boolean);
}

const [base, pr] = ['__base.json', '__pr.json'].map(parse);
const comment = mkComment(mkDiff(base, pr));
const comment = mkComment(mkDiff(base, pr), readLines('__new_js_files.txt'));

if (comment) {
fs.writeFileSync("${{ runner.temp }}/comment.json", JSON.stringify({
issue_number: context.issue.number,
Expand Down
21 changes: 21 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ This file contains instructions for the Codex agent and its friends when working

## General guidance
- Node.js `>=20` is required; dependencies are managed with `npm`.
- Whenever possible, new modules should provide Typescript types for their public interface.
- Added or modified code must have at least 80% unit test coverage.
- Link any required documentation PRs in the PR description.
- Avoid modifying files in `node_modules` or generated build artifacts under `build`.
Expand Down Expand Up @@ -48,3 +49,23 @@ This file contains instructions for the Codex agent and its friends when working

## Additional context
- for additional context on repo history, consult https://github.com/prebid/github-activity-db/blob/main/CLAUDE.md on how to download and access repo history in a database you can search locally.

## Common adapter types
- When bid adapter changes need shared type references, look in the core source modules first:
- `src/adapters/bidderFactory.js` for bidder registration/build and bidder-spec wiring concepts.
- `src/userSync.js` for user sync interfaces, sync option handling, and sync registration behavior.
- `src/adapterManager.js` for adapter manager orchestration and type usage patterns around bidder lifecycle.
- Prefer importing or mirroring conventions from these modules instead of redefining local ad-hoc shapes.
- Use imported types for id, analytics, and rtd modules as well whenever possible.
- Always define types for public interface to an adapter, eg each bidder parameter.

## Review guidelines
- Use the guidelines at PR_REVIEW.md when doing PR reviews. Make all your comments and code suggestions on the PR itself instead of in linked tasks when commenting in a PR review.
- Use the module rules at https://docs.prebid.org/dev-docs/module-rules.html
- Discourage application/json calls, they cause preflight options calls with induced delays over text/plain
- Make sure people are importing from libraries and our methods whenever possible, eg on viewability or accessing navigator
- Bidder params should always only override that information coming on the request; bidders should never make someone specify something that is generally available in an ortb2 field on the request in bidder params unless they need an override.
- Bidders asking for storage access and setting an id in local storage redundant with the shared id is discouraged, they should document why they need to do this odious behavior
- Submodules need to register in submodules.json
- No one should be accessing navigator from vendor modules, if navigator needs to be accessed it should be in a common method or library
- Low priority calls should be import ajax method and use fetch keepalive; they shouldnt use trigger pixel when it can be avoided or fail to specify keepalive.
3 changes: 3 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ master branch.
Pull requests must have 80% code coverage before being considered for merge.
Additional details about the process can be found [here](./PR_REVIEW.md).

Whenever possible, new modules should provide Typescript types for their public interface.
Examples of public interface are bid parameters and configuration (including configuration for analytics, userId, or real time data modules).

There are more details available if you'd like to contribute a [bid adapter](https://docs.prebid.org/dev-docs/bidder-adaptor.html) or [analytics adapter](https://docs.prebid.org/dev-docs/integrate-with-the-prebid-analytics-api.html).

## Issues
Expand Down
1 change: 1 addition & 0 deletions PR_REVIEW.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ General gulp commands include separate commands for serving the codebase on a bu

### General PR review Process

- Whenever possible, new modules should provide Typescript types for their public interface. Examples of public interface are bid parameters and configuration (including configuration for analytics, userId, or real time data modules).
- All required global and bidder-adapter rules defined in the [Module Rules](https://docs.prebid.org/dev-docs/module-rules.html) must be followed. Please review these rules often - we depend on reviewers to enforce them.
- Checkout the branch (these instructions are available on the GitHub PR page as well).
- Verify PR is a single change type. Example, refactor OR bugfix. If more than 1 type, ask submitter to break out requests.
Expand Down
15 changes: 15 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,21 @@ module.exports = [
object: 'navigator',
message: 'use ajax.js instead'
},
{
property: 'doNotTrack',
object: 'navigator',
message: 'DNT was deprecated by W3C; Prebid no longer supports DNT signals'
},
{
property: 'msDoNotTrack',
object: 'navigator',
message: 'DNT was deprecated by W3C; Prebid no longer supports DNT signals'
},
{
property: 'doNotTrack',
object: 'window',
message: 'DNT was deprecated by W3C; Prebid no longer supports DNT signals'
},
...['outerText', 'innerText'].map(property => ({
property,
message: 'use .textContent instead'
Expand Down
5 changes: 4 additions & 1 deletion gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -540,7 +540,10 @@ gulp.task('update-codeql', function (done) {
// npm will by default use .gitignore, so create an .npmignore that is a copy of it except it includes "dist"
gulp.task('setup-npmignore', execaTask("sed 's/^\\/\\?dist\\/\\?$//g;w .npmignore' .gitignore", {quiet: true}));
gulp.task('build', gulp.series(clean, 'build-bundle-prod', setupDist));
gulp.task('build-release', gulp.series('update-codeql', 'build', updateCreativeExample, 'update-browserslist', 'setup-npmignore'));
// build for release - in addition to 'build', run tasks that update the codebase to be included in a release commit
gulp.task('build-release', gulp.series('update-codeql', 'build', updateCreativeExample, 'update-browserslist'));
// prepare NPM release - 'build' to generate files in dist/; 'setup-npmignore' to make sure 'dist' is published in NPM
gulp.task('prepare-release', gulp.series('build', 'setup-npmignore'))
gulp.task('build-postbid', gulp.series(escapePostbidConfig, buildPostbid));

gulp.task('serve', gulp.series(clean, lint, precompile(), gulp.parallel('build-bundle-dev-no-precomp', watch, test)));
Expand Down
3 changes: 0 additions & 3 deletions integrationExamples/gpt/raveltechRtdProvider_example.html
Original file line number Diff line number Diff line change
Expand Up @@ -256,9 +256,6 @@
"expires": 28
}
},
{
"name": "quantcastId"
},
{
"name": "criteo"
},
Expand Down
Loading
Loading