upstream-sync: sync Prebid.js 11.28.0 → 11.29.0 - #113
Conversation
* Apply suggested fix to test/spec/unit/core/bidderFactory_spec.js from Copilot Autofix Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> * Apply suggested fix to test/spec/unit/core/bidderFactory_spec.js from Copilot Autofix Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> --------- Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
…orageDisclosureUrl is updated (#15427) * temporary override until GVL 1356 deviceStorageDisclosureUrl is updated * revert to npx gulp update-metadata change --------- Co-authored-by: Anna Yablonsky <annay+perion@perion.com>
* Core: start net timer at request dispatch The net timer started before the method switch, so gzip compression time was counted as network time on the endpointCompression path. Move it into the ajax dispatch so net measures only the HTTP call on every path. * Core: widen doAjax payload type to match ajax
* DevTools MCP Module: make integration optional
* DevTools MCP Module: address review feedback
* DevTools MCP Module: define tool interfaces
* DevTools MCP Module: namespace tools by global
* DevTools MCP Module: test custom globals
* DevTools MCP Module: inject dependencies via folder module
Refactor the module so the core logic performs no direct imports of
Prebid internals; every dependency is injected through a DevToolsDeps
interface, mirroring debugging/debugging.js.
- devtoolsMcp/index.ts: entry point, resolves deps from src and calls install()
- devtoolsMcp/devtoolsMcp.ts: dependency-free core (makeDevTools/install)
- Route getEvents and config.getConfig through the already-injected
getGlobal(), reducing injected deps from 10 to 8
- Convert the module from a single file to a folder so there is no
file/folder name collision under modules/
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* DevTools MCP Module: drop redundant prebid_ tool-name prefix
Tools are already namespaced by the Prebid global name, so the extra
prebid_ segment was redundant. Tool names are now <global>_summary,
<global>_auctions, and <global>_events.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* DevTools MCP Module: aggregate tools across Prebid instances
Rework the discovery/install path so multiple Prebid instances on a page
are all usable, instead of only whichever loaded last.
- Track instances in a single window global (__prebidDevToolsMcp): an
array of per-instance handlers that also marks whether the discovery
listener is installed, replacing the per-globalName map and the
separate installed flag.
- Install the discovery listener once (first instance to load), and
register a single, un-namespaced set of tools that no longer depend on
the Prebid global variable name.
- Add a layer of indirection: tool execute() resolves the handlers from
the window global at run time rather than closing over one instance.
- Aggregate results across all instances: concatenated summaries, a
flattened auction list, and an event history ordered by elapsedTime
whose limit selects the most recent records across the combined
history (not per instance).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* DevTools MCP Module: filter and tag results by Prebid instance
Give each registered Prebid instance an identifier and expose it through
the tools.
- Identify each instance by its global variable name when the build
defines a global (getGlobalVarName), otherwise a synthetic unnamed-<n>;
store it alongside the handlers in the __prebidDevToolsMcp registry.
- Tag every result row (summary, auction, event) with its source
instance id.
- Add an optional `instance` parameter to all three tools to restrict
results to a single instance.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* DevTools MCP Module: drop redundant cacheTTL from summary
The summary already includes the full config snapshot, which contains
the minBidCacheTTL / minTargetedBidCacheTTL settings, so the separate
cacheTTL object was duplicated data. Removing it makes the
getMinBidCacheTTL and getMinTargetedBidCacheTTL dependencies unnecessary.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Core: load DevTools MCP module on demand via standalone bundle
Let Prebid pull in the devtoolsMcp module automatically when it is not
compiled into the build, mirroring the debugging module.
- Add modules/devtoolsMcp/standalone.js and a devtoolsMcp-standalone
entry to the (renamed) webpack.standalone.js build config.
- Add src/devtoolsMcp.js: loads the standalone bundle and installs it
with the core dependencies when debugTurnedOn() and navigator.webdriver
are both true (i.e. running under automation with debug on). Wired into
prebid.ts.
- Extract the common on-demand load/install/handshake logic shared with
the debugging loader into src/standaloneModuleLoader.js, and refactor
src/debugging.js to use it.
Verified end to end via Chrome DevTools MCP: the module auto-loads, is
discovered through the devtoolstooldiscovery event, and its summary tool
runs through execute_3p_developer_tool.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* DevTools MCP Module: rewrite docs around agent prompts
Reorient devtoolsMcp.md to its primary audience - someone inspecting
Prebid through an agent driving Chrome DevTools. Lead with the on-demand
usage (debug on + automated browser, no build step required) and example
prompts, condense the per-tool breakdown, and demote build inclusion to
an optional section. Also drop the stale note about a per-global
registration guard.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* always include devtoolsmcp in tests
* DevTools MCP Module: load whenever debug is on
Drop the navigator.webdriver requirement from the on-demand load
trigger. The standalone module now loads whenever debugging is turned
on (via ?pbjs_debug=true or pbjs.setConfig({debug:true})), rather than
only under an automated browser.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* DevTools MCP Module: document experimental third-party tools setup
Chrome third-party developer tools are still experimental, and an agent
will not discover page-provided tools on its own. Document that, besides
starting the MCP server with --categoryExperimentalThirdParty=true, the
agent must be pointed at the chrome-devtools-mcp third-party developer
tools guide so it knows to call list_3p_developer_tools /
execute_3p_developer_tool. Both are expected to become unnecessary once
the feature is generally available.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Demetrio Girardi <dgirardi@prebid.org>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Hello world * Revert "Hello world" This reverts commit c8b8334f72a173c467c1c94e440230900802a252. * Update bundle.js * added triplelift fake responder * prebid_js; nvm use; gulp lint; * test * First working response * adding our ad * Update response.json * Update description.md * Create basic_banner_ad.spec.js * Update tripleliftBidAdapter.js * Update basic_banner_ad.spec.js * Update description.md * Update fake-responder.js * Update basic_banner_ad.spec.js * Update basic_banner_ad.spec.js * Update basic_banner_ad.spec.js * Update basic_banner_ad.spec.js * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Update basic_banner_ad.spec.js * Update basic_banner_ad.spec.js * finished tests * update * Update tripleliftBidAdapter.js * Update request.json * refactor fake-server for multiple fake responders * added stub * add a static dir to fake-server * Update triplelift-ttj.js * Update makeResponder.js --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Demetrio Girardi <dgirardi@prebid.org>
* resubmit utility changes * adding tests that were changed * adding tests that were changed * fixing copper6 tests * fixing shinez tests * more coverage, removed redefined function from tests * linter fix * optional fild stays optional * adding missing use of ursl in spec * replacing triggerPixel with ajax for all related urls --------- Co-authored-by: Anna Yablonsky <annay+perion@perion.com>
|
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!
|
|
This PR introduces changes that may not work on all browsers. According to Babel, the following polyfills may be needed, and they are not automatically included:
The best way to address this is to provide good test coverage, as normal PR checks run unit tests on older browsers. |
* convert all iiq js files to ts * update version, ts fixes * fix test and lint issues * fix lint issues * no ab group in browserblacklist (#87) * no ab group in browserblacklist * fix lint issues * remove isblacklisted logic from request * small fix * add tests --------- * small fixes * update version --------- Co-authored-by: Eyvaz Ahmadzada <eyvazahmadzada@gmail.com> Co-authored-by: Eyvaz <eyvaz@intentiq.com>
* Core: apply analytics provider config once in AnalyticsConfig AnalyticsConfig applied AnalyticsProviderConfig[P] twice - spread at the top level, and again under `options`. Providers declare `options` in their own entry, so the two applications nested it under itself: AnalyticsConfig<'generic'> demanded `options.options`, and no natural config satisfied it. The `options` clause now uses the option type the provider declared, so both applications agree. Publishers were unaffected because enableAnalytics accepted `any`, added while working towards a build that does not need skipLibCheck. Drop it; the parameter is no longer reassigned, and Array.isArray replaces isArray, which arrives untyped from utils.js and cannot narrow. test/types/analyticsConfig.ts records the expectations for tsc to check. The @ts-expect-error directives hold in both directions - an unused directive is an error - so the build fails whether the type becomes too strict or too loose. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Core: type enableAnalytics against each provider's declared options intentIqAnalyticsAdapter, pgamdirectAnalyticsAdapter and terceptAnalyticsAdapter each describe the options they take, but never declared them in AnalyticsProviderConfig, so nothing that reads a publisher's configuration knew about them. Augment all three. That made AnalyticsConfig<keyof AnalyticsProviderConfig> instantiate with a union of four providers rather than one. AnalyticsProviderConfig[P] appears twice in AnalyticsConfig - spread at the top level, and under `options` - and each distributes over that union on its own, so the two cross-multiply and `options` becomes one provider's options intersected with another's. Completions for `options` already showed it, listing every provider's keys whichever provider was named. SomeAnalyticsConfig maps over the declared providers instead, which builds the same union without instantiating with one; completions now follow the provider that was named. Where the registry hands a configuration back to its adapter, the provider name it is keyed by has erased the tie between the two, hence the assertion there. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * IntentIq Analytics Adapter: correct the declared type of additionalParams `additionalParams` was declared as a map of names to values. The adapter reads it as an array of parameters, each naming itself and carrying the destinations it should be sent with, which is also how the module's documentation describes it. Declaring the options in AnalyticsProviderConfig makes this type the one publishers are checked against, so the two have to agree. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Core: keep the shared analytics options available to every provider The base adapter reads `options.sampling` whatever the provider, but the declared options of a provider that has them replaced the whole bag, so `sampling` was rejected for every provider except the one that happened to declare `DefaultOptions` in its own entry. Intersect it in the config type, where the adapter that consumes it lives, rather than leaving each provider to remember. The expectation is stated against tercept: generic declares `DefaultOptions` itself, so it would hold either way. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * PGAM Direct Analytics Adapter: require orgId The adapter forwards nothing without `orgId`, and its documentation calls it required, but the declared type left it optional - so a configuration missing it type checked while doing nothing at runtime. The interception that validates it takes a partial, since it reads what the publisher passed rather than what the configuration type asks for. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Patrick McCann <patmmccann@gmail.com>
Conflicting commits resolved
Upstream split
Straight JS→TS port of the IntentIq library/module family (
Merged cleanly ( |
…('coppa') (post-sync follow-up to #15454)
…c (post-sync follow-up to #15191)
…js (post-sync follow-up to #15356)
Post-sync fix: TripleLift E2E test used the wrong global (root cause of the E2E failures)All 4 browser E2E jobs (Chrome, Firefox, msedge, Safari) failed identically on Fixed in While re-sweeping the full Applied section for this same class of gap, also found |
…191) tripleliftBidAdapter is not shipped in this fork (dropped by 3140c2f), so the new triplelift_banner E2E spec bundles a module that doesn't exist here (?modules=tripleliftBidAdapter 500s) and can never pass.
…t-sync follow-up to #15191) Removes the spec file itself now that it's confirmed unrunnable in this fork (tripleliftBidAdapter not shipped), and reverts the now-unnecessary wdio.shared.conf.js exclude entry.
…nc follow-up to #15191) Now that the triplelift_banner E2E spec is gone, remove the fake-server responder/fixtures/static asset and test page it exclusively used, and drop the now-dead references to them in test/fake-server/index.js, bundle.js, and README.md.
Follow-up: deleted the unrunnable spec instead of excluding it, plus removed its orphaned infraPer discussion, went further than the initial exclude-based fix:
|
Prebid.js Sync:
11.28.0→11.29.0📊 Run summary
This PR was auto-generated by the Sync with Upstream Prebid.js workflow.
Prebid 11.29.0 Release Page
✅ Applied Commits
⏭️ Skipped Commits
These commits were intentionally skipped because they made changes to files matching
BidAdapter:❌ Conflicting Commits (require manual resolution)
Post Sync Commits