Skip to content

[pull] master from prebid:master - #58

Open
pull[bot] wants to merge 1551 commits into
adhese:masterfrom
prebid:master
Open

[pull] master from prebid:master#58
pull[bot] wants to merge 1551 commits into
adhese:masterfrom
prebid:master

Conversation

@pull

@pull pull Bot commented Jun 24, 2025

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.1)

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull Bot added the ⤵️ pull label Jun 24, 2025
@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Tread carefully! This PR adds 2 linter errors (possibly disabled through directives):

  • modules/chromeAiRtdProvider.js (+2 errors)

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Tread carefully! This PR adds 2 linter errors (possibly disabled through directives):

  • modules/chromeAiRtdProvider.js (+2 errors)

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Tread carefully! This PR adds 2 linter errors (possibly disabled through directives):

  • modules/chromeAiRtdProvider.js (+2 errors)

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Tread carefully! This PR adds 2 linter errors (possibly disabled through directives):

  • modules/chromeAiRtdProvider.js (+2 errors)

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Tread carefully! This PR adds 2 linter errors (possibly disabled through directives):

  • modules/chromeAiRtdProvider.js (+2 errors)

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Tread carefully! This PR adds 2 linter errors (possibly disabled through directives):

  • modules/chromeAiRtdProvider.js (+2 errors)

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Tread carefully! This PR adds 2 linter errors (possibly disabled through directives):

  • modules/chromeAiRtdProvider.js (+2 errors)

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Tread carefully! This PR adds 2 linter errors (possibly disabled through directives):

  • modules/chromeAiRtdProvider.js (+2 errors)

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Tread carefully! This PR adds 2 linter errors (possibly disabled through directives):

  • modules/chromeAiRtdProvider.js (+2 errors)

@github-actions

Copy link
Copy Markdown

Whoa there, partner! 🌵🤠 We wrangled some duplicated code in your PR:

Reducing code duplication by importing common functions from a library not only makes our code cleaner but also easier to maintain. Please move the common code from both files into a library and import it in each. We hate that we have to mention this, however, commits designed to hide from this utility by renaming variables or reordering an object are poor conduct. We will not look upon them kindly! Keep up the great work! 🚀

@github-actions

Copy link
Copy Markdown

Tread carefully! This PR adds 2 linter errors (possibly disabled through directives):

  • modules/chromeAiRtdProvider.js (+2 errors)

erani-n and others added 2 commits September 8, 2026 11:19
* GeoEdge RTD Provider: display opt-out

New optional params.display turns off display wrapping while leaving the outstream gate active. Opt-out, not opt-in: only an explicit `display: false` disables it, so existing publishers are unaffected.

display is also passed into the client frame, unread for now, so the client can act on it later without another round of per-customer coordination.

Spec call sites updated to match: the params are positional and display sits second, which otherwise bound outstream to undefined.

* GeoEdge RTD Provider: type the module params

Adds a d.ts declaring the module's config shape and augmenting ProviderConfig, so publishers importing prebid's types via npm can discover and type-check the geoedge params. Follows AGENTS.md and the optableRtdProvider pattern.

keyName is omitted: it appears in the JSDoc typedef but the module never reads it.
The ortbConverter imp processor never set imp.tagid, so bid requests from Prebid.js publishers reached the exchange with no placement identifier. SSP-side placement reporting needs an identifier the publisher owns and recognises, and the ad unit code is the one always available on the bid request.

A publisher-supplied ortb2Imp.tagid is merged onto the imp by buildImp before this runs and is left untouched, so this is a default and not an override.
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

2 similar comments
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

Co-authored-by: vrishko <vasyl.rishko@smartyads.com>
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

* Add Prebid Chrome DevTools agent skill

* Clarify experimental Chrome DevTools MCP launch

* Document Prebid Chrome DevTools agent skill

* Handle existing Chrome DevTools MCP servers

* Expose Chrome DevTools skill to Claude
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

…illing (#15591)

* Update tagId to tagid

* Update adapter to use ortbConverter

* Swithc from onBidWon to onBidBillable

* Prefer floor module over params

* Add support for app

* Fix test mtype

* Add more test coverage

* Add more test cases

* Add more native tests

* Ensure devicetype gets always set

* Fix settign bidfloor

* Add CTV detection

* Default to undefined mtype

* Check mtype first and the use fallback

* Add better fallback for tagid

* Removed dead code

* Fix default currency and small refactor

* Add id to test

* Ensure cur is set

* Only overwrite id if not set

* MAgic number for DEFAULT_CURRENCY

* Add types

* Don't overrided id

---------

Co-authored-by: Tuomo Tilli <tuomo.tilli@readpeak.com>
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

* Build system: update artifact downloads to v8

* Update action.yml
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

 (#15559)

* modify adUnit infomation

* fix imuid module

* feat(GenieeBidAdapter): Add support for GPID and pbadslot

- Add support for GPID (Global Placement ID) from ortb2Imp.ext.gpid
- Add fallback support for ortb2Imp.ext.data.pbadslot
- Include gpid parameter in request when GPID exists
- Add test cases to verify GPID, pbadslot, and priority behavior

* Aladdin Bidder ID5 Compatible Adapter

* add comment

* modified test message

* the import of buildExtuidQuery was missing

* test: add test cases for id5id in extuid query

* delete duplicate test

* feat(GenieeBidAdapter): Add support for iframe-based cookie sync in BidAdapter

* [CARPET-5190] Bid Adapter: Fix the default value of the ib parameter

- change default value ib parameter

* remove ib param

* fix test/spec/modules/ssp_genieeBidAdapter_spec.js

* Corrected cookie sync URL and added title to data

* reset document.title after test

* Modify document.title in sandbox.stub

* CARPET-6134 Change logic of specified currency bidparams

* format code

* update assert in unit test

* update code

* update code

* update reset config

* Update assert to expect

* Update logic

* Add param floor price for aladdin bidder send to backend

* Add param schain for aladdin bidder send to backend

* hotfix accept send floor price value zero aladdin bidder

* format code

* Geniee SSP Bid Adapter: remove duplicated getFloorPrice declaration

modules/ssp_genieeBidAdapter.js declares the identical getFloorPrice
function twice, which stops the gulp-babel precompile and prevents any
unit spec from running. Keep a single declaration.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* add ex_genieeBidAdapter  doc

* add ex_geniee adapter

* format

* move public bid param types to a .d.ts

* Geniee Exchange Bid Adapter: use default text/plain content type to avoid CORS preflight

* Geniee Exchange Bid Adapter: replace stale CORS comment with rationale for default text/plain

* Geniee Exchange Bid Adapter: skip requests whose ortb2 `at` is not 1

* accepts a multiformat (banner + video) ad unit and sends only the banner part:

* add comments about currency decison priority

* send placementId to imp[].tagid instead of query parameter

* Geniee Exchange Bid Adapter: reject non-string placementId in isBidRequestValid

* Geniee Exchange Bid Adapter: render NaN/Infinity faithfully in param error logs

* Geniee Exchange Bid Adapter: declare device-storage disclosure via disclosureURL

- point disclosureURL at https://genieesspv.jp/disclosure.json, which lists the
  cookies on *.genieesspv.jp and *.gssprt.jp (gid, _g_optout, sync_done, GSRT*,
  and demand partners' matched identifiers) with lifetimes and TCF purposes
- document the storage in the module md; Geniee has no gvlid because the
  Exchange does not serve GDPR territories

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Murano Takamasa <takamasa-murano@j0098.geniee.jp>
Co-authored-by: daikichiteranishi <49385718+daikichiteranishi@users.noreply.github.com>
Co-authored-by: teranishi daikichi <daikichi.teranishi@geniee.co.jp>
Co-authored-by: gn-daikichi <49385718+gn-daikichi@users.noreply.github.com>
Co-authored-by: takumi-furukawa <takumi.furukawa@geniee.co.jp>
Co-authored-by: furukawaTakumi <45890154+furukawaTakumi@users.noreply.github.com>
Co-authored-by: furukawaTakumi <black3moon88@gmail.com>
Co-authored-by: haruki-yamaguchi <haruki.yamaguchi@geniee.co.jp>
Co-authored-by: haruki yamaguchi <100411113+hrkhito@users.noreply.github.com>
Co-authored-by: Thanh Tran <thanhtv@geniee.co.jp>
Co-authored-by: thanhtran-geniee <135969265+thanhtran-geniee@users.noreply.github.com>
Co-authored-by: hieund-geniee <hieund@geniee.co.jp>
Co-authored-by: hieund-geniee <127374021+hieund-geniee@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

MO-Thibault and others added 3 commits September 9, 2026 09:16
…#15562)

* User ID: a filtered refreshUserIds must not release the auction early

refreshUserIds({submoduleNames}) chains off done.catch(() => null). Since
cancelAndTry rejects the previous cancel deferred, that promise settles at
once and the new chain never waits for the work the old one still held. A
submodule the refresh did not name, one with a network call, is dropped from
the auction it was about to reach.

A publisher on auctionDelay 300 with liveIntentId and pubProvidedId called
refreshUserIds({submoduleNames: ['pubProvidedId']}) at page load: the first
auction opened ~300ms early and first-auction LiveIntent presence fell from
77.1% to 49.7% (z ~ 8).

Track the callback batches that have been discovered but not finished, from
discovery rather than from when they start running, since with auctionDelay
0 they are held until after the auction ends. A filtered refresh then waits
for what it left running, while an unfiltered one supersedes everything and
keeps escaping a stuck initialization.

* userId: register a refresh's batch when it is issued, and let a full refresh release what it supersedes

Two from review. The batch was registered once the refresh chain reached
initSubmodules, so a second filtered refresh issued back to back could
snapshot the outstanding set before the first had registered, and resolve
while the first one's callback was still running. It is now registered
synchronously when the refresh is issued.

And an unfiltered refresh only omitted the existing markers from its own
wait, leaving them in place: a batch nothing would ever complete stayed
outstanding and any later filtered refresh inherited it. An unfiltered
refresh now releases the markers it supersedes.

* userId: release superseded batches only after the replacement is installed

An unfiltered refresh released the markers it supersedes before cancelAndTry
swapped in the new done. With greedy promises that can fulfil the chain the
refresh is replacing, and a caller checking whether the chain is still current
sees the old one settle and takes its result. The release now happens after the
swap, and skips the refresh's own batch.

Reported by Codex review.

* User ID: eslint --fix on the initChain indentation

Whitespace only: the added tracking block left initChain over-indented by two
spaces and a multi-space run before PbPromise.all.

* userId: stub the auction delay in the filtered-refresh test

The test passed the delay stub as `delay`, but startAuctionHook reads
`mkDelay`, so the real 10ms auctionDelay timer stayed in the race and
won on Safari before the callback resolved.

---------

Co-authored-by: Patrick McCann <patmmccann@gmail.com>
* Core: remove three page-lifetime retainers of per-auction data

In a long-lived SPA, every auction's request-side object graph (ad
units, bidder requests with per-auction ortb2, bid requests, metrics)
was retained for the page lifetime regardless of minBidCacheTTL,
because three registrations were made per auction (or per bidder
request) and never removed:

1. newAuction() registered events.on(PBS_ANALYTICS, ...) with no
   matching events.off; each handler pinned its auction's entire
   closure in the global event registry. Replaced with a single router
   registered by the auction manager, which already owns the
   auctionId -> auction lookup: on PBS_ANALYTICS with a non-null
   seatnonbid it calls addNonBids (now exposed on the auction) on the
   matching live auction. The only delta is that an event for an
   already-evicted auction is now dropped - unobservable, since an
   evicted auction's nonbids were unreachable through any API.

2. newAuction() registered onMinBidCacheTTLChange(() =>
   _bidsReceived.refresh()) in bidTTL's module-level listener array,
   which has no removal. The auction now exposes refreshBidTTLs(),
   and the manager's existing singleton onMinBidCacheTTLChange
   listener fans out to every live auction before refreshing its own
   auctions collection. Live auctions behave as before; evicted ones
   stop being refreshed, which was pure wasted work.

3. guardTids in bidderFactory was memoize()d with the default key
   function - a Map keyed by the bidderRequest object, never cleared,
   strongly retaining every bidderRequest and its ortb2. The cache is
   now a WeakMap keyed by the bidderRequest: the two uses within one
   bid cycle still share a single guard (same proxy identity, one
   tidsAllowed check per bidder request), but the entry lives no
   longer than the bidderRequest itself. The guard factory body is
   unchanged.

Listener count drops from O(auctions) to O(1) per manager for both
event paths, and the guard cache no longer extends any request's
lifetime.

Tests: PBS_ANALYTICS routing (unknown auctionId is a no-op, null or
absent seatnonbid adds nothing, nonbids land only on the matching one
of two live auctions); minBidCacheTTL updates re-evaluate bid
retention on every live auction; guardTids returns the same guard for
the same bidderRequest and independent guards for different ones.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Core: deliver PBS nonbids to in-flight auctions independently of the auction cache

Nonbid routing looked up the auction in the manager's TTL'd auction
collection, which the public clearAllAuctions() API empties. A PBS
response arriving after a mid-flight clear would then find no auction
and silently drop its seatnonbid. The lookup also returned only the
first match, while auctionId is a publisher-suppliable requestBids
option, so concurrent auctions sharing an id would not all receive
their nonbids.

The manager now tracks in-flight auctions in a Map keyed by auctionId,
each key holding the set of live auctions using that id. Auctions are
added on creation and removed when their `end` promise resolves, so
the map never references an auction past its end. The PBS_ANALYTICS
router delivers seatnonbid to every auction in the matching set,
regardless of the state of the auction cache.

Also, per review:
- test that the manager registers no PBS_ANALYTICS listener per
  auction (verified to fail against the code that did), plus tests for
  the mid-flight-clear and shared-auctionId scenarios and for
  refreshBidTTLs being exposed and safe to call repeatedly;
- the guard-independence test now asserts through the memoized
  bidRequest member (the same guard returns the same proxy for the
  same bid, different guards do not) instead of comparing proxies that
  are constructed fresh on every call;
- comments on the nonbid router and the guardTids cache state
  mechanism and consequence only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Core: route PBS nonbids to ended-but-retained auctions, not only in-flight ones

The previous change routed PBS_ANALYTICS seatnonbid solely through the
in-flight auction map, whose entry is dropped when the auction's `end`
promise resolves. Because that resolution runs inline (ahead of
AUCTION_END), a PBS response arriving after an auction ended — an s2s
auction that hit cbTimeout before the server replied — found no target
and dropped the seatnonbid, where the previous per-auction listener
delivered it up until the auction was actually evicted.

Delivery now targets the union of the in-flight set for the auctionId
and the auction found in the TTL'd `_auctions` cache, deduplicated so
an auction present in both is notified once. The cache covers auctions
that have ended but are still retained (restoring delivery up to TTL
eviction); the in-flight set covers auctions removed from the cache
(e.g. clearAllAuctions) while a PBS response was outstanding.

Also:
- The in-flight map's comment now states its actual bound: an auction
  whose `end` never resolves stays in the map for the page lifetime, a
  residual of the same class that predated per-auction routing.
- guardTids is a typed function taking a ClientBidderRequest instead of
  `any`, so a primitive argument is a compile error rather than a
  runtime invalid-weak-map-key TypeError; the WeakMap behavior is
  unchanged.
- The auction's exposed nonbid setter is renamed addNonBids ->
  addSeatNonBids, matching getProperties().seatNonBids and the event's
  seatnonbid field and no longer a keystroke from the unrelated
  addNoBid.

Test: a seatnonbid emitted after the auction ends but before eviction
reaches getNonBids() (fails when routing was in-flight-only). The
clearAllAuctions-mid-flight and shared-auctionId tests still pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Core: route PBS nonbids to all matching retained auctions, not just the first

The nonbid router's cache-side lookup used getAuction(), which returns
only the first auction in the TTL'd collection with a matching id.
Because auctionId can be publisher-supplied, two or more concurrent
auctions can share one; once more than one of them has ended (dropped
from the in-flight set) but is still retained in the cache, a late
seatnonbid reached only the first, narrowing the "every auction sharing
the auctionId" delivery guarantee the moment those auctions ended.

The router now iterates the auction collection and adds every auction
whose id matches into the same dedup set the in-flight half fills, so a
late seatnonbid reaches all retained auctions sharing the id, each once.

Also reword the in-flight map comment: its retention is genuinely new
state, bounded to the error paths where an auction's `end` never
resolves and not scaling with auction count, rather than equivalent to
the prior page-lifetime leak.

Test: two auctions sharing one auctionId, both awaited to end and still
retained, receive an emitted seatnonbid on both (fails when only the
first match was notified).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
… 'fixed' ) in the `ext` response (#15590)

* Utiq ID module: Upgrade utiq modules to pass the category ('mobile' | 'fixed' ) in the `ext` response

* Utiq ID module: Upgrade utiq modules tests to fit new ids structure

* Utiq ID module: Fix code duplication and linter issues

* Utiq ID module: Fix tests

* Utiq ID module: Prioritize ids deppending on the category

* Utiq ID module: Fix compatibility and code duplication issues

* Utiq ID module: Fix tsDocs
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

2 similar comments
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

* New bid adapter: Adswag

Adds the Adswag bid adapter (banner, video, audio) for directly-integrated European supply. GVL vendor 1417; EU-hosted endpoint (bid.adswag.ai). Includes bidder docs and unit tests.

* ci: re-trigger checks after GitHub incident 429s
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

* tealBidAdapter - added usersync gpp support

* tealBidAdapter - added unit tests to cover consent
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

* Attekmi: add Ppcbuzz adapter

* endpoint fix

---------

Co-authored-by: Victor <victor.banudz@smart-hub.io>
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

Tread carefully! This PR adds 20 linter errors (possibly disabled through directives):

  • libraries/dspxUtils/bidderUtils.js (+2 errors)
  • libraries/pubmaticUtils/plugins/floorProvider.js (+1 error)
  • libraries/uid2IdSystemShared/uid2IdSystem_shared.js (+1 error)
  • modules/cleanioRtdProvider.js (+1 error)
  • modules/debugging/index.js (+8 errors)
  • modules/mobianRtdProvider.js (+1 error)
  • modules/nativeRendering.js (+1 error)
  • modules/showheroes-bsBidAdapter.js (+1 error)
  • modules/sspBCBidAdapter.js (+1 error)
  • src/activities/rules.js (+1 error)
  • src/creativeRenderers.js (+2 errors)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.