prebid.js 10.3.0 → 10.4.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/.github/dependabot.yml +8 -0
- package/dist/chunks/33acrossAnalyticsAdapter.js +1 -1
- package/dist/chunks/33acrossBidAdapter.js +1 -1
- package/dist/chunks/33acrossBidAdapter.metadata.js +1 -1
- package/dist/chunks/33acrossIdSystem.js +1 -1
- package/dist/chunks/33acrossIdSystem.metadata.js +1 -1
- package/dist/chunks/acuityadsBidAdapter.metadata.js +1 -1
- package/dist/chunks/adagioAnalyticsAdapter.js +1 -1
- package/dist/chunks/adagioBidAdapter.js +1 -1
- package/dist/chunks/adagioBidAdapter.metadata.js +1 -1
- package/dist/chunks/adagioRtdProvider.metadata.js +1 -1
- package/dist/chunks/adagioUtils.js +1 -1
- package/dist/chunks/addefendBidAdapter.js +1 -1
- package/dist/chunks/addefendBidAdapter.metadata.js +1 -1
- package/dist/chunks/adfBidAdapter.metadata.js +1 -1
- package/dist/chunks/adfusionBidAdapter.metadata.js +1 -1
- package/dist/chunks/adgenerationBidAdapter.js +1 -1
- package/dist/chunks/adheseBidAdapter.metadata.js +1 -1
- package/dist/chunks/adkernelAdnBidAdapter.metadata.js +1 -1
- package/dist/chunks/adkernelBidAdapter.metadata.js +1 -1
- package/dist/chunks/adlooxRtdProvider.js +1 -1
- package/dist/chunks/admaticBidAdapter.metadata.js +1 -1
- package/dist/chunks/admixerBidAdapter.metadata.js +1 -1
- package/dist/chunks/admixerIdSystem.metadata.js +1 -1
- package/dist/chunks/adnowBidAdapter.metadata.js +1 -1
- package/dist/chunks/adnuntiusBidAdapter.metadata.js +1 -1
- package/dist/chunks/adnuntiusRtdProvider.metadata.js +1 -1
- package/dist/chunks/adotBidAdapter.metadata.js +1 -1
- package/dist/chunks/adponeBidAdapter.metadata.js +1 -1
- package/dist/chunks/adqueryBidAdapter.js +1 -1
- package/dist/chunks/adqueryBidAdapter.metadata.js +1 -1
- package/dist/chunks/adqueryIdSystem.metadata.js +1 -1
- package/dist/chunks/adrelevantisBidAdapter.js +1 -1
- package/dist/chunks/adrinoBidAdapter.metadata.js +1 -1
- package/dist/chunks/ads_interactiveBidAdapter.metadata.js +1 -1
- package/dist/chunks/adstirBidAdapter.js +1 -1
- package/dist/chunks/adtargetBidAdapter.metadata.js +1 -1
- package/dist/chunks/adtelligentBidAdapter.metadata.js +1 -1
- package/dist/chunks/adtelligentIdSystem.metadata.js +1 -1
- package/dist/chunks/adtrgtmeBidAdapter.js +1 -1
- package/dist/chunks/aduptechBidAdapter.metadata.js +1 -1
- package/dist/chunks/advertisingBidAdapter.js +1 -1
- package/dist/chunks/adxcgAnalyticsAdapter.js +1 -1
- package/dist/chunks/adxcgBidAdapter.js +1 -1
- package/dist/chunks/adyoulikeBidAdapter.js +1 -1
- package/dist/chunks/adyoulikeBidAdapter.metadata.js +1 -1
- package/dist/chunks/agmaAnalyticsAdapter.js +1 -1
- package/dist/chunks/aidemBidAdapter.metadata.js +1 -1
- package/dist/chunks/airgridRtdProvider.metadata.js +1 -1
- package/dist/chunks/ajaBidAdapter.js +1 -1
- package/dist/chunks/alkimiBidAdapter.metadata.js +1 -1
- package/dist/chunks/ampliffyBidAdapter.metadata.js +1 -1
- package/dist/chunks/amxBidAdapter.js +1 -1
- package/dist/chunks/amxBidAdapter.metadata.js +1 -1
- package/dist/chunks/amxIdSystem.js +1 -1
- package/dist/chunks/amxIdSystem.metadata.js +1 -1
- package/dist/chunks/aniviewBidAdapter.js +1 -1
- package/dist/chunks/aniviewBidAdapter.metadata.js +1 -1
- package/dist/chunks/anonymisedRtdProvider.metadata.js +1 -1
- package/dist/chunks/appierAnalyticsAdapter.js +1 -1
- package/dist/chunks/appierBidAdapter.metadata.js +1 -1
- package/dist/chunks/appnexusBidAdapter.js +1 -1
- package/dist/chunks/appnexusBidAdapter.metadata.js +1 -1
- package/dist/chunks/appushBidAdapter.metadata.js +1 -1
- package/dist/chunks/apstreamBidAdapter.metadata.js +1 -1
- package/dist/chunks/asoBidAdapter.js +1 -1
- package/dist/chunks/audiencerunBidAdapter.metadata.js +1 -1
- package/dist/chunks/axisBidAdapter.metadata.js +1 -1
- package/dist/chunks/axonixBidAdapter.js +1 -1
- package/dist/chunks/azerionedgeRtdProvider.metadata.js +1 -1
- package/dist/chunks/beopBidAdapter.js +1 -1
- package/dist/chunks/beopBidAdapter.metadata.js +1 -1
- package/dist/chunks/betweenBidAdapter.metadata.js +1 -1
- package/dist/chunks/bidglassBidAdapter.js +1 -1
- package/dist/chunks/bidmaticBidAdapter.metadata.js +1 -1
- package/dist/chunks/bidtheatreBidAdapter.metadata.js +1 -1
- package/dist/chunks/big-richmediaBidAdapter.js +1 -1
- package/dist/chunks/bitmediaBidAdapter.js +1 -1
- package/dist/chunks/bliinkBidAdapter.metadata.js +1 -1
- package/dist/chunks/blockthroughBidAdapter.js +1 -1
- package/dist/chunks/blockthroughBidAdapter.metadata.js +1 -1
- package/dist/chunks/blueBidAdapter.metadata.js +1 -1
- package/dist/chunks/bmsBidAdapter.metadata.js +1 -1
- package/dist/chunks/bmtmBidAdapter.js +1 -1
- package/dist/chunks/boldwinBidAdapter.metadata.js +1 -1
- package/dist/chunks/bridBidAdapter.js +1 -1
- package/dist/chunks/bridBidAdapter.metadata.js +1 -1
- package/dist/chunks/bridgewellBidAdapter.js +1 -1
- package/dist/chunks/browsiBidAdapter.metadata.js +1 -1
- package/dist/chunks/bucksenseBidAdapter.metadata.js +1 -1
- package/dist/chunks/carodaBidAdapter.js +1 -1
- package/dist/chunks/carodaBidAdapter.metadata.js +1 -1
- package/dist/chunks/categoryTranslation.metadata.js +1 -1
- package/dist/chunks/ccxBidAdapter.metadata.js +1 -1
- package/dist/chunks/ceeIdSystem.metadata.js +1 -1
- package/dist/chunks/chromeAiRtdProvider.metadata.js +1 -1
- package/dist/chunks/chtnwBidAdapter.js +1 -1
- package/dist/chunks/chunk-core.js +1 -1
- package/dist/chunks/compassBidAdapter.metadata.js +1 -1
- package/dist/chunks/conceptxBidAdapter.metadata.js +1 -1
- package/dist/chunks/concertBidAdapter.js +1 -1
- package/dist/chunks/connatixBidAdapter.metadata.js +1 -1
- package/dist/chunks/connectIdSystem.metadata.js +1 -1
- package/dist/chunks/connectadBidAdapter.js +1 -1
- package/dist/chunks/connectadBidAdapter.metadata.js +1 -1
- package/dist/chunks/consumableBidAdapter.js +1 -1
- package/dist/chunks/contentexchangeBidAdapter.metadata.js +1 -1
- package/dist/chunks/contxtfulBidAdapter.js +1 -1
- package/dist/chunks/conversantBidAdapter.js +1 -1
- package/dist/chunks/conversantBidAdapter.metadata.js +1 -1
- package/dist/chunks/copper6sspBidAdapter.metadata.js +1 -1
- package/dist/chunks/cpmstarBidAdapter.metadata.js +1 -1
- package/dist/chunks/craftBidAdapter.js +1 -1
- package/dist/chunks/criteoBidAdapter.js +1 -1
- package/dist/chunks/criteoBidAdapter.metadata.js +1 -1
- package/dist/chunks/criteoIdSystem.metadata.js +1 -1
- package/dist/chunks/cwireBidAdapter.js +1 -1
- package/dist/chunks/cwireBidAdapter.metadata.js +1 -1
- package/dist/chunks/czechAdIdSystem.metadata.js +1 -1
- package/dist/chunks/dailymotionBidAdapter.js +1 -1
- package/dist/chunks/dailymotionBidAdapter.metadata.js +1 -1
- package/dist/chunks/debugging.metadata.js +1 -1
- package/dist/chunks/deepintentBidAdapter.metadata.js +1 -1
- package/dist/chunks/deltaprojectsBidAdapter.metadata.js +1 -1
- package/dist/chunks/dianomiBidAdapter.metadata.js +1 -1
- package/dist/chunks/digitalMatterBidAdapter.metadata.js +1 -1
- package/dist/chunks/distroscaleBidAdapter.metadata.js +1 -1
- package/dist/chunks/docereeAdManagerBidAdapter.metadata.js +1 -1
- package/dist/chunks/docereeBidAdapter.metadata.js +1 -1
- package/dist/chunks/dspxBidAdapter.js +1 -1
- package/dist/chunks/dspxBidAdapter.metadata.js +1 -1
- package/dist/chunks/dxkultureBidAdapter.js +1 -1
- package/dist/chunks/e_volutionBidAdapter.metadata.js +1 -1
- package/dist/chunks/edge226BidAdapter.metadata.js +1 -1
- package/dist/chunks/eplanningBidAdapter.js +1 -1
- package/dist/chunks/equativBidAdapter.js +1 -1
- package/dist/chunks/equativBidAdapter.metadata.js +1 -1
- package/dist/chunks/eskimiBidAdapter.js +1 -1
- package/dist/chunks/eskimiBidAdapter.metadata.js +1 -1
- package/dist/chunks/etargetBidAdapter.metadata.js +1 -1
- package/dist/chunks/euidIdSystem.js +1 -1
- package/dist/chunks/euidIdSystem.metadata.js +1 -1
- package/dist/chunks/exadsBidAdapter.js +1 -1
- package/dist/chunks/exadsBidAdapter.metadata.js +1 -1
- package/dist/chunks/excoBidAdapter.js +1 -1
- package/dist/chunks/feedadBidAdapter.js +1 -1
- package/dist/chunks/feedadBidAdapter.metadata.js +1 -1
- package/dist/chunks/finativeBidAdapter.js +1 -1
- package/dist/chunks/fwsspBidAdapter.metadata.js +1 -1
- package/dist/chunks/gamoshiBidAdapter.metadata.js +1 -1
- package/dist/chunks/glomexBidAdapter.metadata.js +1 -1
- package/dist/chunks/gmosspBidAdapter.js +1 -1
- package/dist/chunks/goldbachBidAdapter.metadata.js +1 -1
- package/dist/chunks/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/chunks/greenbidsBidAdapter.js +1 -1
- package/dist/chunks/greenbidsBidAdapter.metadata.js +1 -1
- package/dist/chunks/greenbidsRtdProvider.js +1 -1
- package/dist/chunks/gridBidAdapter.js +1 -1
- package/dist/chunks/gridBidAdapter.metadata.js +1 -1
- package/dist/chunks/gumgumBidAdapter.js +1 -1
- package/dist/chunks/gumgumBidAdapter.metadata.js +1 -1
- package/dist/chunks/h12mediaBidAdapter.js +1 -1
- package/dist/chunks/hadronIdSystem.metadata.js +1 -1
- package/dist/chunks/hadronRtdProvider.metadata.js +1 -1
- package/dist/chunks/holidBidAdapter.metadata.js +1 -1
- package/dist/chunks/hybridBidAdapter.metadata.js +1 -1
- package/dist/chunks/hypelabBidAdapter.js +1 -1
- package/dist/chunks/id5AnalyticsAdapter.js +1 -1
- package/dist/chunks/id5IdSystem.js +1 -1
- package/dist/chunks/id5IdSystem.metadata.js +1 -1
- package/dist/chunks/identityLinkIdSystem.metadata.js +1 -1
- package/dist/chunks/illuminBidAdapter.metadata.js +1 -1
- package/dist/chunks/impactifyBidAdapter.metadata.js +1 -1
- package/dist/chunks/improvedigitalBidAdapter.js +1 -1
- package/dist/chunks/improvedigitalBidAdapter.metadata.js +1 -1
- package/dist/chunks/inmobiBidAdapter.js +1 -1
- package/dist/chunks/inmobiBidAdapter.metadata.js +1 -1
- package/dist/chunks/innityBidAdapter.metadata.js +1 -1
- package/dist/chunks/insticatorBidAdapter.js +1 -1
- package/dist/chunks/insticatorBidAdapter.metadata.js +1 -1
- package/dist/chunks/intentIqAnalyticsAdapter.js +1 -1
- package/dist/chunks/intentIqIdSystem.metadata.js +1 -1
- package/dist/chunks/invibesBidAdapter.metadata.js +1 -1
- package/dist/chunks/ipromBidAdapter.metadata.js +1 -1
- package/dist/chunks/ixBidAdapter.js +1 -1
- package/dist/chunks/ixBidAdapter.metadata.js +1 -1
- package/dist/chunks/jixieBidAdapter.js +1 -1
- package/dist/chunks/justIdSystem.metadata.js +1 -1
- package/dist/chunks/justpremiumBidAdapter.js +1 -1
- package/dist/chunks/justpremiumBidAdapter.metadata.js +1 -1
- package/dist/chunks/jwplayerBidAdapter.metadata.js +1 -1
- package/dist/chunks/kargoBidAdapter.js +1 -1
- package/dist/chunks/kargoBidAdapter.metadata.js +1 -1
- package/dist/chunks/kimberliteBidAdapter.js +1 -1
- package/dist/chunks/kueezRtbBidAdapter.metadata.js +1 -1
- package/dist/chunks/lassoBidAdapter.js +1 -1
- package/dist/chunks/lifestreetBidAdapter.js +1 -1
- package/dist/chunks/limelightDigitalBidAdapter.metadata.js +1 -1
- package/dist/chunks/liveIntentId.js +1 -1
- package/dist/chunks/liveIntentIdSystem.metadata.js +1 -1
- package/dist/chunks/liveIntentRtdProvider.metadata.js +1 -1
- package/dist/chunks/livewrappedBidAdapter.metadata.js +1 -1
- package/dist/chunks/logicadBidAdapter.js +1 -1
- package/dist/chunks/loopmeBidAdapter.metadata.js +1 -1
- package/dist/chunks/lotamePanoramaIdSystem.metadata.js +1 -1
- package/dist/chunks/luceadBidAdapter.js +1 -1
- package/dist/chunks/luceadBidAdapter.metadata.js +1 -1
- package/dist/chunks/luponmediaBidAdapter.metadata.js +1 -1
- package/dist/chunks/mabidderBidAdapter.js +1 -1
- package/dist/chunks/madsenseBidAdapter.js +1 -1
- package/dist/chunks/madvertiseBidAdapter.metadata.js +1 -1
- package/dist/chunks/magniteAnalyticsAdapter.js +1 -1
- package/dist/chunks/malltvAnalyticsAdapter.js +1 -1
- package/dist/chunks/marsmediaBidAdapter.js +1 -1
- package/dist/chunks/marsmediaBidAdapter.metadata.js +1 -1
- package/dist/chunks/mediaConsortiumBidAdapter.metadata.js +1 -1
- package/dist/chunks/mediaforceBidAdapter.metadata.js +1 -1
- package/dist/chunks/mediafuseBidAdapter.js +1 -1
- package/dist/chunks/mediafuseBidAdapter.metadata.js +1 -1
- package/dist/chunks/mediagoBidAdapter.metadata.js +1 -1
- package/dist/chunks/mediakeysBidAdapter.metadata.js +1 -1
- package/dist/chunks/medianetBidAdapter.js +1 -1
- package/dist/chunks/medianetBidAdapter.metadata.js +1 -1
- package/dist/chunks/medianetUtils.js +1 -1
- package/dist/chunks/mediasquareBidAdapter.js +1 -1
- package/dist/chunks/mediasquareBidAdapter.metadata.js +1 -1
- package/dist/chunks/mgidBidAdapter.js +1 -1
- package/dist/chunks/mgidBidAdapter.metadata.js +1 -1
- package/dist/chunks/mgidRtdProvider.metadata.js +1 -1
- package/dist/chunks/mgidXBidAdapter.metadata.js +1 -1
- package/dist/chunks/minutemediaBidAdapter.metadata.js +1 -1
- package/dist/chunks/missenaBidAdapter.js +1 -1
- package/dist/chunks/missenaBidAdapter.metadata.js +1 -1
- package/dist/chunks/mobianRtdProvider.metadata.js +1 -1
- package/dist/chunks/mobilefuseBidAdapter.js +1 -1
- package/dist/chunks/mobilefuseBidAdapter.metadata.js +1 -1
- package/dist/chunks/mobkoiBidAdapter.metadata.js +1 -1
- package/dist/chunks/mobkoiIdSystem.metadata.js +1 -1
- package/dist/chunks/nativeryBidAdapter.metadata.js +1 -1
- package/dist/chunks/nativoBidAdapter.metadata.js +1 -1
- package/dist/chunks/newspassidBidAdapter.metadata.js +1 -1
- package/dist/chunks/nextMillenniumBidAdapter.js +1 -1
- package/dist/chunks/nextMillenniumBidAdapter.metadata.js +1 -1
- package/dist/chunks/nextrollBidAdapter.metadata.js +1 -1
- package/dist/chunks/nexx360BidAdapter.metadata.js +1 -1
- package/dist/chunks/nexx360Utils.js +1 -1
- package/dist/chunks/nobidAnalyticsAdapter.js +1 -1
- package/dist/chunks/nobidBidAdapter.js +1 -1
- package/dist/chunks/nobidBidAdapter.metadata.js +1 -1
- package/dist/chunks/nodalsAiRtdProvider.js +1 -1
- package/dist/chunks/nodalsAiRtdProvider.metadata.js +1 -1
- package/dist/chunks/novatiqIdSystem.metadata.js +1 -1
- package/dist/chunks/oguryBidAdapter.js +1 -1
- package/dist/chunks/oguryBidAdapter.metadata.js +1 -1
- package/dist/chunks/omsBidAdapter.metadata.js +1 -1
- package/dist/chunks/onetagBidAdapter.js +1 -1
- package/dist/chunks/onetagBidAdapter.metadata.js +1 -1
- package/dist/chunks/ooloAnalyticsAdapter.js +1 -1
- package/dist/chunks/openwebBidAdapter.metadata.js +1 -1
- package/dist/chunks/openxBidAdapter.js +1 -1
- package/dist/chunks/openxBidAdapter.metadata.js +1 -1
- package/dist/chunks/operaadsBidAdapter.metadata.js +1 -1
- package/dist/chunks/optidigitalBidAdapter.js +1 -1
- package/dist/chunks/optidigitalBidAdapter.metadata.js +1 -1
- package/dist/chunks/optoutBidAdapter.metadata.js +1 -1
- package/dist/chunks/orbidderBidAdapter.js +1 -1
- package/dist/chunks/orbidderBidAdapter.metadata.js +1 -1
- package/dist/chunks/outbrainBidAdapter.js +1 -1
- package/dist/chunks/outbrainBidAdapter.metadata.js +1 -1
- package/dist/chunks/ozoneBidAdapter.metadata.js +1 -1
- package/dist/chunks/pairIdSystem.metadata.js +1 -1
- package/dist/chunks/performaxBidAdapter.metadata.js +1 -1
- package/dist/chunks/pgamsspBidAdapter.metadata.js +1 -1
- package/dist/chunks/pixfutureBidAdapter.js +1 -1
- package/dist/chunks/pixfutureBidAdapter.metadata.js +1 -1
- package/dist/chunks/playdigoBidAdapter.metadata.js +1 -1
- package/dist/chunks/prebid-core.metadata.js +1 -1
- package/dist/chunks/precisoBidAdapter.metadata.js +1 -1
- package/dist/chunks/prismaBidAdapter.metadata.js +1 -1
- package/dist/chunks/programmaticXBidAdapter.metadata.js +1 -1
- package/dist/chunks/proxistoreBidAdapter.metadata.js +1 -1
- package/dist/chunks/publinkIdSystem.js +1 -1
- package/dist/chunks/publinkIdSystem.metadata.js +1 -1
- package/dist/chunks/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/chunks/pubmaticBidAdapter.js +1 -1
- package/dist/chunks/pubmaticBidAdapter.metadata.js +1 -1
- package/dist/chunks/pubmaticIdSystem.metadata.js +1 -1
- package/dist/chunks/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/chunks/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/chunks/pulsepointBidAdapter.metadata.js +1 -1
- package/dist/chunks/pxyzBidAdapter.js +1 -1
- package/dist/chunks/qtBidAdapter.metadata.js +1 -1
- package/dist/chunks/quantcastBidAdapter.js +1 -1
- package/dist/chunks/quantcastBidAdapter.metadata.js +1 -1
- package/dist/chunks/quantcastIdSystem.metadata.js +1 -1
- package/dist/chunks/r2b2BidAdapter.metadata.js +1 -1
- package/dist/chunks/raynRtdProvider.metadata.js +1 -1
- package/dist/chunks/readpeakBidAdapter.js +1 -1
- package/dist/chunks/readpeakBidAdapter.metadata.js +1 -1
- package/dist/chunks/relaidoBidAdapter.js +1 -1
- package/dist/chunks/relayBidAdapter.metadata.js +1 -1
- package/dist/chunks/relevantdigitalBidAdapter.metadata.js +1 -1
- package/dist/chunks/resetdigitalBidAdapter.metadata.js +1 -1
- package/dist/chunks/responsiveAdsBidAdapter.metadata.js +1 -1
- package/dist/chunks/retailspotBidAdapter.js +1 -1
- package/dist/chunks/retailspotBidAdapter.metadata.js +1 -1
- package/dist/chunks/revcontentBidAdapter.metadata.js +1 -1
- package/dist/chunks/rhythmoneBidAdapter.js +1 -1
- package/dist/chunks/rhythmoneBidAdapter.metadata.js +1 -1
- package/dist/chunks/richaudienceBidAdapter.metadata.js +1 -1
- package/dist/chunks/riseBidAdapter.metadata.js +1 -1
- package/dist/chunks/riseUtils.js +1 -1
- package/dist/chunks/rixengineBidAdapter.metadata.js +1 -1
- package/dist/chunks/rtbhouseBidAdapter.metadata.js +1 -1
- package/dist/chunks/rubiconBidAdapter.js +1 -1
- package/dist/chunks/rubiconBidAdapter.metadata.js +1 -1
- package/dist/chunks/scatteredBidAdapter.metadata.js +1 -1
- package/dist/chunks/seedingAllianceBidAdapter.js +1 -1
- package/dist/chunks/seedingAllianceBidAdapter.metadata.js +1 -1
- package/dist/chunks/seedtagBidAdapter.js +1 -1
- package/dist/chunks/seedtagBidAdapter.metadata.js +1 -1
- package/dist/chunks/semantiqRtdProvider.metadata.js +1 -1
- package/dist/chunks/setupadBidAdapter.metadata.js +1 -1
- package/dist/chunks/sevioBidAdapter.js +1 -1
- package/dist/chunks/sevioBidAdapter.metadata.js +1 -1
- package/dist/chunks/sharedIdSystem.metadata.js +1 -1
- package/dist/chunks/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/chunks/sharethroughBidAdapter.js +1 -1
- package/dist/chunks/sharethroughBidAdapter.metadata.js +1 -1
- package/dist/chunks/showheroes-bsBidAdapter.js +1 -1
- package/dist/chunks/showheroes-bsBidAdapter.metadata.js +1 -1
- package/dist/chunks/silvermobBidAdapter.metadata.js +1 -1
- package/dist/chunks/sirdataRtdProvider.metadata.js +1 -1
- package/dist/chunks/slimcutBidAdapter.metadata.js +1 -1
- package/dist/chunks/smaatoBidAdapter.js +1 -1
- package/dist/chunks/smaatoBidAdapter.metadata.js +1 -1
- package/dist/chunks/smartadserverBidAdapter.js +1 -1
- package/dist/chunks/smartadserverBidAdapter.metadata.js +1 -1
- package/dist/chunks/smartxBidAdapter.js +1 -1
- package/dist/chunks/smartxBidAdapter.metadata.js +1 -1
- package/dist/chunks/smartyadsBidAdapter.metadata.js +1 -1
- package/dist/chunks/smilewantedBidAdapter.js +1 -1
- package/dist/chunks/smilewantedBidAdapter.metadata.js +1 -1
- package/dist/chunks/snigelBidAdapter.js +1 -1
- package/dist/chunks/snigelBidAdapter.metadata.js +1 -1
- package/dist/chunks/sonaradsBidAdapter.js +1 -1
- package/dist/chunks/sonaradsBidAdapter.metadata.js +1 -1
- package/dist/chunks/sonobiBidAdapter.js +1 -1
- package/dist/chunks/sonobiBidAdapter.metadata.js +1 -1
- package/dist/chunks/sovrnBidAdapter.js +1 -1
- package/dist/chunks/sparteoBidAdapter.js +1 -1
- package/dist/chunks/sparteoBidAdapter.metadata.js +1 -1
- package/dist/chunks/ssmasBidAdapter.metadata.js +1 -1
- package/dist/chunks/sspBCBidAdapter.js +1 -1
- package/dist/chunks/sspBCBidAdapter.metadata.js +1 -1
- package/dist/chunks/stackadaptBidAdapter.metadata.js +1 -1
- package/dist/chunks/startioBidAdapter.metadata.js +1 -1
- package/dist/chunks/stroeerCoreBidAdapter.metadata.js +1 -1
- package/dist/chunks/stvBidAdapter.js +1 -1
- package/dist/chunks/stvBidAdapter.metadata.js +1 -1
- package/dist/chunks/sublimeBidAdapter.js +1 -1
- package/dist/chunks/sublimeBidAdapter.metadata.js +1 -1
- package/dist/chunks/taboolaBidAdapter.js +1 -1
- package/dist/chunks/taboolaBidAdapter.metadata.js +1 -1
- package/dist/chunks/taboolaIdSystem.metadata.js +1 -1
- package/dist/chunks/tappxBidAdapter.js +1 -1
- package/dist/chunks/tappxBidAdapter.metadata.js +1 -1
- package/dist/chunks/targetVideoBidAdapter.js +1 -1
- package/dist/chunks/targetVideoBidAdapter.metadata.js +1 -1
- package/dist/chunks/teadsBidAdapter.js +1 -1
- package/dist/chunks/teadsBidAdapter.metadata.js +1 -1
- package/dist/chunks/teadsIdSystem.metadata.js +1 -1
- package/dist/chunks/tealBidAdapter.metadata.js +1 -1
- package/dist/chunks/terceptAnalyticsAdapter.js +1 -1
- package/dist/chunks/themoneytizerBidAdapter.js +1 -1
- package/dist/chunks/tncIdSystem.metadata.js +1 -1
- package/dist/chunks/topicsFpdModule.metadata.js +1 -1
- package/dist/chunks/trionBidAdapter.js +1 -1
- package/dist/chunks/tripleliftBidAdapter.js +1 -1
- package/dist/chunks/tripleliftBidAdapter.metadata.js +1 -1
- package/dist/chunks/ttdBidAdapter.js +1 -1
- package/dist/chunks/ttdBidAdapter.metadata.js +1 -1
- package/dist/chunks/twistDigitalBidAdapter.metadata.js +1 -1
- package/dist/chunks/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/chunks/uid2IdSystem.js +1 -1
- package/dist/chunks/underdogmediaBidAdapter.js +1 -1
- package/dist/chunks/underdogmediaBidAdapter.metadata.js +1 -1
- package/dist/chunks/undertoneBidAdapter.js +1 -1
- package/dist/chunks/undertoneBidAdapter.metadata.js +1 -1
- package/dist/chunks/unifiedIdSystem.metadata.js +1 -1
- package/dist/chunks/unrulyBidAdapter.js +1 -1
- package/dist/chunks/unrulyBidAdapter.metadata.js +1 -1
- package/dist/chunks/userId.metadata.js +1 -1
- package/dist/chunks/validationFpdModule.metadata.js +1 -1
- package/dist/chunks/vidazooBidAdapter.metadata.js +1 -1
- package/dist/chunks/vidazooUtils.js +1 -1
- package/dist/chunks/videobyteBidAdapter.js +1 -1
- package/dist/chunks/vidoomyBidAdapter.metadata.js +1 -1
- package/dist/chunks/viewdeosDXBidAdapter.metadata.js +1 -1
- package/dist/chunks/viouslyBidAdapter.metadata.js +1 -1
- package/dist/chunks/visxBidAdapter.js +1 -1
- package/dist/chunks/visxBidAdapter.metadata.js +1 -1
- package/dist/chunks/vlybyBidAdapter.metadata.js +1 -1
- package/dist/chunks/voxBidAdapter.metadata.js +1 -1
- package/dist/chunks/vrtcalBidAdapter.metadata.js +1 -1
- package/dist/chunks/vuukleBidAdapter.js +1 -1
- package/dist/chunks/vuukleBidAdapter.metadata.js +1 -1
- package/dist/chunks/weboramaRtdProvider.metadata.js +1 -1
- package/dist/chunks/welectBidAdapter.metadata.js +1 -1
- package/dist/chunks/widespaceBidAdapter.js +1 -1
- package/dist/chunks/winrBidAdapter.js +1 -1
- package/dist/chunks/yahooAdsBidAdapter.js +1 -1
- package/dist/chunks/yahooAdsBidAdapter.metadata.js +1 -1
- package/dist/chunks/yandexBidAdapter.js +1 -1
- package/dist/chunks/yieldlabBidAdapter.metadata.js +1 -1
- package/dist/chunks/yieldliftBidAdapter.metadata.js +1 -1
- package/dist/chunks/yieldloveBidAdapter.metadata.js +1 -1
- package/dist/chunks/yieldmoBidAdapter.js +1 -1
- package/dist/chunks/yieldmoBidAdapter.metadata.js +1 -1
- package/dist/chunks/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/chunks/zeotapIdPlusIdSystem.metadata.js +1 -1
- package/dist/chunks/zeta_globalBidAdapter.metadata.js +1 -1
- package/dist/chunks/zeta_global_sspBidAdapter.metadata.js +1 -1
- package/dist/not-for-prod/prebid.js +424 -424
- package/dist/src/libraries/adagioUtils/adagioUtils.js +1 -1
- package/dist/src/libraries/liveIntentId/externalIdSystem.js +1 -1
- package/dist/src/libraries/liveIntentId/idSystem.js +1 -1
- package/dist/src/libraries/liveIntentId/shared.js +20 -0
- package/dist/src/libraries/liveIntentId/shared.js.map +1 -1
- package/dist/src/libraries/medianetUtils/constants.js +1 -1
- package/dist/src/libraries/nexx360Utils/index.js +1 -1
- package/dist/src/libraries/riseUtils/index.js +1 -1
- package/dist/src/libraries/vidazooUtils/bidderUtils.js +1 -1
- package/dist/src/metadata/modules/33acrossBidAdapter.js +1 -1
- package/dist/src/metadata/modules/33acrossIdSystem.js +1 -1
- package/dist/src/metadata/modules/acuityadsBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adagioBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adagioRtdProvider.js +1 -1
- package/dist/src/metadata/modules/addefendBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adfBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adfusionBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adheseBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adkernelAdnBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adkernelBidAdapter.js +1 -1
- package/dist/src/metadata/modules/admaticBidAdapter.js +1 -1
- package/dist/src/metadata/modules/admixerBidAdapter.js +1 -1
- package/dist/src/metadata/modules/admixerIdSystem.js +1 -1
- package/dist/src/metadata/modules/adnowBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adnuntiusBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adnuntiusRtdProvider.js +1 -1
- package/dist/src/metadata/modules/adotBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adponeBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adqueryBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adqueryIdSystem.js +1 -1
- package/dist/src/metadata/modules/adrinoBidAdapter.js +1 -1
- package/dist/src/metadata/modules/ads_interactiveBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adtargetBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adtelligentBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adtelligentIdSystem.js +1 -1
- package/dist/src/metadata/modules/aduptechBidAdapter.js +1 -1
- package/dist/src/metadata/modules/adyoulikeBidAdapter.js +1 -1
- package/dist/src/metadata/modules/aidemBidAdapter.js +1 -1
- package/dist/src/metadata/modules/airgridRtdProvider.js +1 -1
- package/dist/src/metadata/modules/alkimiBidAdapter.js +1 -1
- package/dist/src/metadata/modules/ampliffyBidAdapter.js +1 -1
- package/dist/src/metadata/modules/amxBidAdapter.js +1 -1
- package/dist/src/metadata/modules/amxIdSystem.js +1 -1
- package/dist/src/metadata/modules/aniviewBidAdapter.js +1 -1
- package/dist/src/metadata/modules/anonymisedRtdProvider.js +1 -1
- package/dist/src/metadata/modules/appierBidAdapter.js +1 -1
- package/dist/src/metadata/modules/appnexusBidAdapter.js +1 -1
- package/dist/src/metadata/modules/appushBidAdapter.js +1 -1
- package/dist/src/metadata/modules/apstreamBidAdapter.js +1 -1
- package/dist/src/metadata/modules/audiencerunBidAdapter.js +1 -1
- package/dist/src/metadata/modules/axisBidAdapter.js +1 -1
- package/dist/src/metadata/modules/azerionedgeRtdProvider.js +1 -1
- package/dist/src/metadata/modules/beopBidAdapter.js +1 -1
- package/dist/src/metadata/modules/betweenBidAdapter.js +1 -1
- package/dist/src/metadata/modules/bidmaticBidAdapter.js +1 -1
- package/dist/src/metadata/modules/bidtheatreBidAdapter.js +1 -1
- package/dist/src/metadata/modules/bliinkBidAdapter.js +1 -1
- package/dist/src/metadata/modules/blockthroughBidAdapter.js +1 -1
- package/dist/src/metadata/modules/blueBidAdapter.js +1 -1
- package/dist/src/metadata/modules/bmsBidAdapter.js +1 -1
- package/dist/src/metadata/modules/boldwinBidAdapter.js +1 -1
- package/dist/src/metadata/modules/bridBidAdapter.js +1 -1
- package/dist/src/metadata/modules/browsiBidAdapter.js +1 -1
- package/dist/src/metadata/modules/bucksenseBidAdapter.js +1 -1
- package/dist/src/metadata/modules/carodaBidAdapter.js +1 -1
- package/dist/src/metadata/modules/categoryTranslation.js +1 -1
- package/dist/src/metadata/modules/ccxBidAdapter.js +1 -1
- package/dist/src/metadata/modules/ceeIdSystem.js +1 -1
- package/dist/src/metadata/modules/chromeAiRtdProvider.js +1 -1
- package/dist/src/metadata/modules/compassBidAdapter.js +1 -1
- package/dist/src/metadata/modules/conceptxBidAdapter.js +1 -1
- package/dist/src/metadata/modules/connatixBidAdapter.js +1 -1
- package/dist/src/metadata/modules/connectIdSystem.js +1 -1
- package/dist/src/metadata/modules/connectadBidAdapter.js +1 -1
- package/dist/src/metadata/modules/contentexchangeBidAdapter.js +1 -1
- package/dist/src/metadata/modules/conversantBidAdapter.js +1 -1
- package/dist/src/metadata/modules/copper6sspBidAdapter.js +1 -1
- package/dist/src/metadata/modules/cpmstarBidAdapter.js +1 -1
- package/dist/src/metadata/modules/criteoBidAdapter.js +1 -1
- package/dist/src/metadata/modules/criteoIdSystem.js +1 -1
- package/dist/src/metadata/modules/cwireBidAdapter.js +1 -1
- package/dist/src/metadata/modules/czechAdIdSystem.js +1 -1
- package/dist/src/metadata/modules/dailymotionBidAdapter.js +1 -1
- package/dist/src/metadata/modules/debugging.js +1 -1
- package/dist/src/metadata/modules/deepintentBidAdapter.js +1 -1
- package/dist/src/metadata/modules/deltaprojectsBidAdapter.js +1 -1
- package/dist/src/metadata/modules/dianomiBidAdapter.js +1 -1
- package/dist/src/metadata/modules/digitalMatterBidAdapter.js +1 -1
- package/dist/src/metadata/modules/distroscaleBidAdapter.js +1 -1
- package/dist/src/metadata/modules/docereeAdManagerBidAdapter.js +1 -1
- package/dist/src/metadata/modules/docereeBidAdapter.js +1 -1
- package/dist/src/metadata/modules/dspxBidAdapter.js +1 -1
- package/dist/src/metadata/modules/e_volutionBidAdapter.js +1 -1
- package/dist/src/metadata/modules/edge226BidAdapter.js +1 -1
- package/dist/src/metadata/modules/equativBidAdapter.js +1 -1
- package/dist/src/metadata/modules/eskimiBidAdapter.js +1 -1
- package/dist/src/metadata/modules/etargetBidAdapter.js +1 -1
- package/dist/src/metadata/modules/euidIdSystem.js +1 -1
- package/dist/src/metadata/modules/exadsBidAdapter.js +1 -1
- package/dist/src/metadata/modules/feedadBidAdapter.js +1 -1
- package/dist/src/metadata/modules/fwsspBidAdapter.js +1 -1
- package/dist/src/metadata/modules/gamoshiBidAdapter.js +1 -1
- package/dist/src/metadata/modules/glomexBidAdapter.js +1 -1
- package/dist/src/metadata/modules/goldbachBidAdapter.js +1 -1
- package/dist/src/metadata/modules/greenbidsBidAdapter.js +1 -1
- package/dist/src/metadata/modules/gridBidAdapter.js +1 -1
- package/dist/src/metadata/modules/gumgumBidAdapter.js +1 -1
- package/dist/src/metadata/modules/hadronIdSystem.js +1 -1
- package/dist/src/metadata/modules/hadronRtdProvider.js +1 -1
- package/dist/src/metadata/modules/holidBidAdapter.js +1 -1
- package/dist/src/metadata/modules/hybridBidAdapter.js +1 -1
- package/dist/src/metadata/modules/id5IdSystem.js +1 -1
- package/dist/src/metadata/modules/identityLinkIdSystem.js +1 -1
- package/dist/src/metadata/modules/illuminBidAdapter.js +1 -1
- package/dist/src/metadata/modules/impactifyBidAdapter.js +1 -1
- package/dist/src/metadata/modules/improvedigitalBidAdapter.js +1 -1
- package/dist/src/metadata/modules/inmobiBidAdapter.js +1 -1
- package/dist/src/metadata/modules/innityBidAdapter.js +1 -1
- package/dist/src/metadata/modules/insticatorBidAdapter.js +1 -1
- package/dist/src/metadata/modules/intentIqIdSystem.js +1 -1
- package/dist/src/metadata/modules/invibesBidAdapter.js +1 -1
- package/dist/src/metadata/modules/ipromBidAdapter.js +1 -1
- package/dist/src/metadata/modules/ixBidAdapter.js +1 -1
- package/dist/src/metadata/modules/justIdSystem.js +1 -1
- package/dist/src/metadata/modules/justpremiumBidAdapter.js +1 -1
- package/dist/src/metadata/modules/jwplayerBidAdapter.js +1 -1
- package/dist/src/metadata/modules/kargoBidAdapter.js +1 -1
- package/dist/src/metadata/modules/kueezRtbBidAdapter.js +1 -1
- package/dist/src/metadata/modules/limelightDigitalBidAdapter.js +1 -1
- package/dist/src/metadata/modules/liveIntentIdSystem.js +1 -1
- package/dist/src/metadata/modules/liveIntentRtdProvider.js +1 -1
- package/dist/src/metadata/modules/livewrappedBidAdapter.js +1 -1
- package/dist/src/metadata/modules/loopmeBidAdapter.js +1 -1
- package/dist/src/metadata/modules/lotamePanoramaIdSystem.js +1 -1
- package/dist/src/metadata/modules/luceadBidAdapter.js +1 -1
- package/dist/src/metadata/modules/luponmediaBidAdapter.js +1 -1
- package/dist/src/metadata/modules/madvertiseBidAdapter.js +1 -1
- package/dist/src/metadata/modules/marsmediaBidAdapter.js +1 -1
- package/dist/src/metadata/modules/mediaConsortiumBidAdapter.js +1 -1
- package/dist/src/metadata/modules/mediaforceBidAdapter.js +1 -1
- package/dist/src/metadata/modules/mediafuseBidAdapter.js +1 -1
- package/dist/src/metadata/modules/mediagoBidAdapter.js +1 -1
- package/dist/src/metadata/modules/mediakeysBidAdapter.js +1 -1
- package/dist/src/metadata/modules/medianetBidAdapter.js +1 -1
- package/dist/src/metadata/modules/mediasquareBidAdapter.js +1 -1
- package/dist/src/metadata/modules/mgidBidAdapter.js +1 -1
- package/dist/src/metadata/modules/mgidRtdProvider.js +1 -1
- package/dist/src/metadata/modules/mgidXBidAdapter.js +1 -1
- package/dist/src/metadata/modules/minutemediaBidAdapter.js +1 -1
- package/dist/src/metadata/modules/missenaBidAdapter.js +1 -1
- package/dist/src/metadata/modules/mobianRtdProvider.js +1 -1
- package/dist/src/metadata/modules/mobilefuseBidAdapter.js +1 -1
- package/dist/src/metadata/modules/mobkoiBidAdapter.js +1 -1
- package/dist/src/metadata/modules/mobkoiIdSystem.js +1 -1
- package/dist/src/metadata/modules/nativeryBidAdapter.js +1 -1
- package/dist/src/metadata/modules/nativoBidAdapter.js +1 -1
- package/dist/src/metadata/modules/newspassidBidAdapter.js +1 -1
- package/dist/src/metadata/modules/nextMillenniumBidAdapter.js +1 -1
- package/dist/src/metadata/modules/nextrollBidAdapter.js +1 -1
- package/dist/src/metadata/modules/nexx360BidAdapter.js +1 -1
- package/dist/src/metadata/modules/nobidBidAdapter.js +1 -1
- package/dist/src/metadata/modules/nodalsAiRtdProvider.js +1 -1
- package/dist/src/metadata/modules/novatiqIdSystem.js +1 -1
- package/dist/src/metadata/modules/oguryBidAdapter.js +1 -1
- package/dist/src/metadata/modules/omsBidAdapter.js +1 -1
- package/dist/src/metadata/modules/onetagBidAdapter.js +1 -1
- package/dist/src/metadata/modules/openwebBidAdapter.js +1 -1
- package/dist/src/metadata/modules/openxBidAdapter.js +1 -1
- package/dist/src/metadata/modules/operaadsBidAdapter.js +1 -1
- package/dist/src/metadata/modules/optidigitalBidAdapter.js +1 -1
- package/dist/src/metadata/modules/optoutBidAdapter.js +1 -1
- package/dist/src/metadata/modules/orbidderBidAdapter.js +1 -1
- package/dist/src/metadata/modules/outbrainBidAdapter.js +1 -1
- package/dist/src/metadata/modules/ozoneBidAdapter.js +1 -1
- package/dist/src/metadata/modules/pairIdSystem.js +1 -1
- package/dist/src/metadata/modules/performaxBidAdapter.js +1 -1
- package/dist/src/metadata/modules/pgamsspBidAdapter.js +1 -1
- package/dist/src/metadata/modules/pixfutureBidAdapter.js +1 -1
- package/dist/src/metadata/modules/playdigoBidAdapter.js +1 -1
- package/dist/src/metadata/modules/prebid-core.js +1 -1
- package/dist/src/metadata/modules/precisoBidAdapter.js +1 -1
- package/dist/src/metadata/modules/prismaBidAdapter.js +1 -1
- package/dist/src/metadata/modules/programmaticXBidAdapter.js +1 -1
- package/dist/src/metadata/modules/proxistoreBidAdapter.js +1 -1
- package/dist/src/metadata/modules/publinkIdSystem.js +1 -1
- package/dist/src/metadata/modules/pubmaticBidAdapter.js +1 -1
- package/dist/src/metadata/modules/pubmaticIdSystem.js +1 -1
- package/dist/src/metadata/modules/pulsepointBidAdapter.js +1 -1
- package/dist/src/metadata/modules/qtBidAdapter.js +1 -1
- package/dist/src/metadata/modules/quantcastBidAdapter.js +1 -1
- package/dist/src/metadata/modules/quantcastIdSystem.js +1 -1
- package/dist/src/metadata/modules/r2b2BidAdapter.js +1 -1
- package/dist/src/metadata/modules/raynRtdProvider.js +1 -1
- package/dist/src/metadata/modules/readpeakBidAdapter.js +1 -1
- package/dist/src/metadata/modules/relayBidAdapter.js +1 -1
- package/dist/src/metadata/modules/relevantdigitalBidAdapter.js +1 -1
- package/dist/src/metadata/modules/resetdigitalBidAdapter.js +1 -1
- package/dist/src/metadata/modules/responsiveAdsBidAdapter.js +1 -1
- package/dist/src/metadata/modules/retailspotBidAdapter.js +1 -1
- package/dist/src/metadata/modules/revcontentBidAdapter.js +1 -1
- package/dist/src/metadata/modules/rhythmoneBidAdapter.js +1 -1
- package/dist/src/metadata/modules/richaudienceBidAdapter.js +1 -1
- package/dist/src/metadata/modules/riseBidAdapter.js +1 -1
- package/dist/src/metadata/modules/rixengineBidAdapter.js +1 -1
- package/dist/src/metadata/modules/rtbhouseBidAdapter.js +1 -1
- package/dist/src/metadata/modules/rubiconBidAdapter.js +1 -1
- package/dist/src/metadata/modules/scatteredBidAdapter.js +1 -1
- package/dist/src/metadata/modules/seedingAllianceBidAdapter.js +1 -1
- package/dist/src/metadata/modules/seedtagBidAdapter.js +1 -1
- package/dist/src/metadata/modules/semantiqRtdProvider.js +1 -1
- package/dist/src/metadata/modules/setupadBidAdapter.js +1 -1
- package/dist/src/metadata/modules/sevioBidAdapter.js +1 -1
- package/dist/src/metadata/modules/sharedIdSystem.js +1 -1
- package/dist/src/metadata/modules/sharethroughBidAdapter.js +1 -1
- package/dist/src/metadata/modules/showheroes-bsBidAdapter.js +1 -1
- package/dist/src/metadata/modules/silvermobBidAdapter.js +1 -1
- package/dist/src/metadata/modules/sirdataRtdProvider.js +1 -1
- package/dist/src/metadata/modules/slimcutBidAdapter.js +1 -1
- package/dist/src/metadata/modules/smaatoBidAdapter.js +1 -1
- package/dist/src/metadata/modules/smartadserverBidAdapter.js +1 -1
- package/dist/src/metadata/modules/smartxBidAdapter.js +1 -1
- package/dist/src/metadata/modules/smartyadsBidAdapter.js +1 -1
- package/dist/src/metadata/modules/smilewantedBidAdapter.js +1 -1
- package/dist/src/metadata/modules/snigelBidAdapter.js +1 -1
- package/dist/src/metadata/modules/sonaradsBidAdapter.js +1 -1
- package/dist/src/metadata/modules/sonobiBidAdapter.js +1 -1
- package/dist/src/metadata/modules/sparteoBidAdapter.js +1 -1
- package/dist/src/metadata/modules/ssmasBidAdapter.js +1 -1
- package/dist/src/metadata/modules/sspBCBidAdapter.js +1 -1
- package/dist/src/metadata/modules/stackadaptBidAdapter.js +1 -1
- package/dist/src/metadata/modules/startioBidAdapter.js +1 -1
- package/dist/src/metadata/modules/stroeerCoreBidAdapter.js +1 -1
- package/dist/src/metadata/modules/stvBidAdapter.js +1 -1
- package/dist/src/metadata/modules/sublimeBidAdapter.js +1 -1
- package/dist/src/metadata/modules/taboolaBidAdapter.js +1 -1
- package/dist/src/metadata/modules/taboolaIdSystem.js +1 -1
- package/dist/src/metadata/modules/tappxBidAdapter.js +1 -1
- package/dist/src/metadata/modules/targetVideoBidAdapter.js +1 -1
- package/dist/src/metadata/modules/teadsBidAdapter.js +1 -1
- package/dist/src/metadata/modules/teadsIdSystem.js +1 -1
- package/dist/src/metadata/modules/tealBidAdapter.js +1 -1
- package/dist/src/metadata/modules/tncIdSystem.js +1 -1
- package/dist/src/metadata/modules/topicsFpdModule.js +1 -1
- package/dist/src/metadata/modules/tripleliftBidAdapter.js +1 -1
- package/dist/src/metadata/modules/ttdBidAdapter.js +1 -1
- package/dist/src/metadata/modules/twistDigitalBidAdapter.js +1 -1
- package/dist/src/metadata/modules/underdogmediaBidAdapter.js +1 -1
- package/dist/src/metadata/modules/undertoneBidAdapter.js +1 -1
- package/dist/src/metadata/modules/unifiedIdSystem.js +1 -1
- package/dist/src/metadata/modules/unrulyBidAdapter.js +1 -1
- package/dist/src/metadata/modules/userId.js +1 -1
- package/dist/src/metadata/modules/validationFpdModule.js +1 -1
- package/dist/src/metadata/modules/vidazooBidAdapter.js +1 -1
- package/dist/src/metadata/modules/vidoomyBidAdapter.js +1 -1
- package/dist/src/metadata/modules/viewdeosDXBidAdapter.js +1 -1
- package/dist/src/metadata/modules/viouslyBidAdapter.js +1 -1
- package/dist/src/metadata/modules/visxBidAdapter.js +1 -1
- package/dist/src/metadata/modules/vlybyBidAdapter.js +1 -1
- package/dist/src/metadata/modules/voxBidAdapter.js +1 -1
- package/dist/src/metadata/modules/vrtcalBidAdapter.js +1 -1
- package/dist/src/metadata/modules/vuukleBidAdapter.js +1 -1
- package/dist/src/metadata/modules/weboramaRtdProvider.js +1 -1
- package/dist/src/metadata/modules/welectBidAdapter.js +1 -1
- package/dist/src/metadata/modules/yahooAdsBidAdapter.js +1 -1
- package/dist/src/metadata/modules/yieldlabBidAdapter.js +1 -1
- package/dist/src/metadata/modules/yieldliftBidAdapter.js +1 -1
- package/dist/src/metadata/modules/yieldloveBidAdapter.js +1 -1
- package/dist/src/metadata/modules/yieldmoBidAdapter.js +1 -1
- package/dist/src/metadata/modules/zeotapIdPlusIdSystem.js +1 -1
- package/dist/src/metadata/modules/zeta_globalBidAdapter.js +1 -1
- package/dist/src/metadata/modules/zeta_global_sspBidAdapter.js +1 -1
- package/dist/src/modules/33acrossAnalyticsAdapter.js +1 -1
- package/dist/src/modules/33acrossBidAdapter.js +1 -1
- package/dist/src/modules/33acrossIdSystem.js +1 -1
- package/dist/src/modules/adagioAnalyticsAdapter.js +1 -1
- package/dist/src/modules/adagioBidAdapter.js +1 -1
- package/dist/src/modules/addefendBidAdapter.js +1 -1
- package/dist/src/modules/adgenerationBidAdapter.js +1 -1
- package/dist/src/modules/adlooxRtdProvider.js +1 -1
- package/dist/src/modules/adqueryBidAdapter.js +1 -1
- package/dist/src/modules/adrelevantisBidAdapter.js +1 -1
- package/dist/src/modules/adstirBidAdapter.js +1 -1
- package/dist/src/modules/adtrgtmeBidAdapter.js +1 -1
- package/dist/src/modules/advertisingBidAdapter.js +2 -2
- package/dist/src/modules/adxcgAnalyticsAdapter.js +1 -1
- package/dist/src/modules/adxcgBidAdapter.js +1 -1
- package/dist/src/modules/adyoulikeBidAdapter.js +1 -1
- package/dist/src/modules/agmaAnalyticsAdapter.js +1 -1
- package/dist/src/modules/ajaBidAdapter.js +1 -1
- package/dist/src/modules/amxBidAdapter.js +2 -2
- package/dist/src/modules/amxIdSystem.js +1 -1
- package/dist/src/modules/aniviewBidAdapter.js +1 -1
- package/dist/src/modules/appierAnalyticsAdapter.js +1 -1
- package/dist/src/modules/appnexusBidAdapter.js +2 -2
- package/dist/src/modules/asoBidAdapter.js +1 -1
- package/dist/src/modules/axonixBidAdapter.js +1 -1
- package/dist/src/modules/beopBidAdapter.js +2 -2
- package/dist/src/modules/bidglassBidAdapter.js +1 -1
- package/dist/src/modules/bitmediaBidAdapter.js +1 -1
- package/dist/src/modules/blockthroughBidAdapter.js +1 -1
- package/dist/src/modules/bmtmBidAdapter.js +1 -1
- package/dist/src/modules/bridBidAdapter.js +1 -1
- package/dist/src/modules/bridgewellBidAdapter.js +1 -1
- package/dist/src/modules/carodaBidAdapter.js +1 -1
- package/dist/src/modules/chtnwBidAdapter.js +1 -1
- package/dist/src/modules/concertBidAdapter.js +1 -1
- package/dist/src/modules/connectadBidAdapter.js +1 -1
- package/dist/src/modules/consumableBidAdapter.js +1 -1
- package/dist/src/modules/contxtfulBidAdapter.js +1 -1
- package/dist/src/modules/conversantBidAdapter.js +1 -1
- package/dist/src/modules/craftBidAdapter.js +1 -1
- package/dist/src/modules/criteoBidAdapter.js +2 -2
- package/dist/src/modules/cwireBidAdapter.js +1 -1
- package/dist/src/modules/dailymotionBidAdapter.js +1 -1
- package/dist/src/modules/dspxBidAdapter.js +1 -1
- package/dist/src/modules/dxkultureBidAdapter.js +1 -1
- package/dist/src/modules/eplanningBidAdapter.js +1 -1
- package/dist/src/modules/equativBidAdapter.js +1 -1
- package/dist/src/modules/eskimiBidAdapter.js +1 -1
- package/dist/src/modules/euidIdSystem.js +1 -1
- package/dist/src/modules/exadsBidAdapter.js +1 -1
- package/dist/src/modules/excoBidAdapter.js +3 -3
- package/dist/src/modules/feedadBidAdapter.js +2 -2
- package/dist/src/modules/finativeBidAdapter.js +1 -1
- package/dist/src/modules/gmosspBidAdapter.js +1 -1
- package/dist/src/modules/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/src/modules/greenbidsBidAdapter.js +1 -1
- package/dist/src/modules/greenbidsRtdProvider.js +1 -1
- package/dist/src/modules/gridBidAdapter.js +2 -2
- package/dist/src/modules/gumgumBidAdapter.js +2 -2
- package/dist/src/modules/h12mediaBidAdapter.js +1 -1
- package/dist/src/modules/hypelabBidAdapter.js +1 -1
- package/dist/src/modules/id5AnalyticsAdapter.js +1 -1
- package/dist/src/modules/id5IdSystem.js +1 -1
- package/dist/src/modules/improvedigitalBidAdapter.js +1 -1
- package/dist/src/modules/inmobiBidAdapter.js +1 -1
- package/dist/src/modules/insticatorBidAdapter.js +1 -1
- package/dist/src/modules/intentIqAnalyticsAdapter.js +1 -1
- package/dist/src/modules/ixBidAdapter.js +1 -1
- package/dist/src/modules/jixieBidAdapter.js +1 -1
- package/dist/src/modules/justpremiumBidAdapter.js +1 -1
- package/dist/src/modules/kargoBidAdapter.js +1 -1
- package/dist/src/modules/kimberliteBidAdapter.js +1 -1
- package/dist/src/modules/lassoBidAdapter.js +1 -1
- package/dist/src/modules/lifestreetBidAdapter.js +1 -1
- package/dist/src/modules/logicadBidAdapter.js +1 -1
- package/dist/src/modules/luceadBidAdapter.js +1 -1
- package/dist/src/modules/mabidderBidAdapter.js +1 -1
- package/dist/src/modules/madsenseBidAdapter.js +1 -1
- package/dist/src/modules/magniteAnalyticsAdapter.js +1 -1
- package/dist/src/modules/malltvAnalyticsAdapter.js +1 -1
- package/dist/src/modules/marsmediaBidAdapter.js +1 -1
- package/dist/src/modules/mediafuseBidAdapter.js +2 -2
- package/dist/src/modules/medianetBidAdapter.js +1 -1
- package/dist/src/modules/mediasquareBidAdapter.js +2 -2
- package/dist/src/modules/mgidBidAdapter.js +1 -1
- package/dist/src/modules/missenaBidAdapter.js +1 -1
- package/dist/src/modules/mobilefuseBidAdapter.js +1 -1
- package/dist/src/modules/nextMillenniumBidAdapter.js +1 -1
- package/dist/src/modules/nobidAnalyticsAdapter.js +1 -1
- package/dist/src/modules/nobidBidAdapter.js +1 -1
- package/dist/src/modules/nodalsAiRtdProvider.js +1 -1
- package/dist/src/modules/oguryBidAdapter.js +1 -1
- package/dist/src/modules/onetagBidAdapter.js +1 -1
- package/dist/src/modules/ooloAnalyticsAdapter.js +1 -1
- package/dist/src/modules/openxBidAdapter.js +7 -2
- package/dist/src/modules/openxBidAdapter.js.map +1 -1
- package/dist/src/modules/optidigitalBidAdapter.js +1 -1
- package/dist/src/modules/orbidderBidAdapter.js +1 -1
- package/dist/src/modules/outbrainBidAdapter.js +1 -1
- package/dist/src/modules/pixfutureBidAdapter.js +2 -2
- package/dist/src/modules/priceFloors.d.ts +2 -2
- package/dist/src/modules/priceFloors.js.map +1 -1
- package/dist/src/modules/publinkIdSystem.js +1 -1
- package/dist/src/modules/pubmaticAnalyticsAdapter.js +2 -2
- package/dist/src/modules/pubmaticBidAdapter.js +23 -3
- package/dist/src/modules/pubmaticBidAdapter.js.map +1 -1
- package/dist/src/modules/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/src/modules/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/src/modules/pxyzBidAdapter.js +1 -1
- package/dist/src/modules/quantcastBidAdapter.js +1 -1
- package/dist/src/modules/readpeakBidAdapter.js +1 -1
- package/dist/src/modules/relaidoBidAdapter.js +1 -1
- package/dist/src/modules/retailspotBidAdapter.js +1 -1
- package/dist/src/modules/rhythmoneBidAdapter.js +1 -1
- package/dist/src/modules/rubiconBidAdapter.js +1 -1
- package/dist/src/modules/seedingAllianceBidAdapter.js +1 -1
- package/dist/src/modules/seedtagBidAdapter.js +1 -1
- package/dist/src/modules/sevioBidAdapter.js +4 -1
- package/dist/src/modules/sevioBidAdapter.js.map +1 -1
- package/dist/src/modules/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/src/modules/sharethroughBidAdapter.js +1 -1
- package/dist/src/modules/showheroes-bsBidAdapter.js +1 -1
- package/dist/src/modules/smaatoBidAdapter.js +1 -1
- package/dist/src/modules/smartadserverBidAdapter.js +1 -1
- package/dist/src/modules/smartxBidAdapter.js +1 -1
- package/dist/src/modules/smilewantedBidAdapter.js +1 -1
- package/dist/src/modules/snigelBidAdapter.js +1 -1
- package/dist/src/modules/sonaradsBidAdapter.js +2 -2
- package/dist/src/modules/sonobiBidAdapter.js +1 -1
- package/dist/src/modules/sovrnBidAdapter.js +1 -1
- package/dist/src/modules/sparteoBidAdapter.js +1 -1
- package/dist/src/modules/sspBCBidAdapter.js +1 -1
- package/dist/src/modules/stvBidAdapter.js +1 -1
- package/dist/src/modules/sublimeBidAdapter.js +2 -2
- package/dist/src/modules/taboolaBidAdapter.js +1 -1
- package/dist/src/modules/tappxBidAdapter.js +1 -1
- package/dist/src/modules/targetVideoBidAdapter.js +1 -1
- package/dist/src/modules/teadsBidAdapter.js +1 -1
- package/dist/src/modules/terceptAnalyticsAdapter.js +1 -1
- package/dist/src/modules/themoneytizerBidAdapter.js +1 -1
- package/dist/src/modules/trionBidAdapter.js +1 -1
- package/dist/src/modules/tripleliftBidAdapter.js +1 -1
- package/dist/src/modules/ttdBidAdapter.js +1 -1
- package/dist/src/modules/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/src/modules/uid2IdSystem.js +1 -1
- package/dist/src/modules/underdogmediaBidAdapter.js +1 -1
- package/dist/src/modules/undertoneBidAdapter.js +1 -1
- package/dist/src/modules/unrulyBidAdapter.js +1 -1
- package/dist/src/modules/videobyteBidAdapter.js +1 -1
- package/dist/src/modules/visxBidAdapter.js +1 -1
- package/dist/src/modules/vuukleBidAdapter.js +1 -1
- package/dist/src/modules/widespaceBidAdapter.js +1 -1
- package/dist/src/modules/winrBidAdapter.js +1 -1
- package/dist/src/modules/yahooAdsBidAdapter.js +1 -1
- package/dist/src/modules/yandexBidAdapter.js +1 -1
- package/dist/src/modules/yieldmoBidAdapter.js +2 -2
- package/dist/src/modules/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/src/package.json +2 -3
- package/dist/src/src/debugging.js +1 -1
- package/dist/src/src/prebid.js +2 -2
- package/dist/src/src/targeting.d.ts +4 -4
- package/dist/src/src/targeting.js.map +1 -1
- package/dist/src/src/types/summary/core.d.ts +1 -1
- package/dist/src/src/types/summary/modules.d.ts +2 -2
- package/dist/src/test/spec/modules/33acrossAnalyticsAdapter_spec.js +2 -2
- package/dist/src/test/spec/modules/33acrossBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/33acrossIdSystem_spec.js +1 -1
- package/dist/src/test/spec/modules/adagioAnalyticsAdapter_spec.js +4 -4
- package/dist/src/test/spec/modules/adqueryBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/adrelevantisBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/adtrgtmeBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/advertisingBidAdapter_spec.js +9 -9
- package/dist/src/test/spec/modules/adyoulikeBidAdapter_spec.js +3 -3
- package/dist/src/test/spec/modules/ajaBidAdapter_spec.js +2 -2
- package/dist/src/test/spec/modules/amxBidAdapter_spec.js +2 -2
- package/dist/src/test/spec/modules/appierAnalyticsAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/appnexusBidAdapter_spec.js +2 -2
- package/dist/src/test/spec/modules/asoBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/blockthroughBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/bridBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/criteoBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/dailymotionBidAdapter_spec.js +4 -4
- package/dist/src/test/spec/modules/dxkultureBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/eplanningBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/equativBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/excoBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/feedadBidAdapter_spec.js +2 -2
- package/dist/src/test/spec/modules/gmosspBidAdapter_spec.js +2 -2
- package/dist/src/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/gridBidAdapter_spec.js +6 -6
- package/dist/src/test/spec/modules/gumgumBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/id5IdSystem_spec.js +4 -4
- package/dist/src/test/spec/modules/insticatorBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/ixBidAdapter_spec.js +2 -2
- package/dist/src/test/spec/modules/justpremiumBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/kargoBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/liveIntentExternalIdSystem_spec.js +29 -10
- package/dist/src/test/spec/modules/liveIntentExternalIdSystem_spec.js.map +1 -1
- package/dist/src/test/spec/modules/liveIntentIdMinimalSystem_spec.js +19 -0
- package/dist/src/test/spec/modules/liveIntentIdMinimalSystem_spec.js.map +1 -1
- package/dist/src/test/spec/modules/liveIntentIdSystem_spec.js +58 -1
- package/dist/src/test/spec/modules/liveIntentIdSystem_spec.js.map +1 -1
- package/dist/src/test/spec/modules/magniteAnalyticsAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/malltvAnalyticsAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/mediafuseBidAdapter_spec.js +2 -2
- package/dist/src/test/spec/modules/medianetBidAdapter_spec.js +9 -9
- package/dist/src/test/spec/modules/missenaBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/nobidAnalyticsAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/nobidBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/oguryBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/openxBidAdapter_spec.js +113 -0
- package/dist/src/test/spec/modules/openxBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/outbrainBidAdapter_spec.js +3 -3
- package/dist/src/test/spec/modules/prebidServerBidAdapter_spec.js +4 -4
- package/dist/src/test/spec/modules/publinkIdSystem_spec.js +5 -5
- package/dist/src/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +6 -6
- package/dist/src/test/spec/modules/pubmaticBidAdapter_spec.js +58 -0
- package/dist/src/test/spec/modules/pubmaticBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +6 -6
- package/dist/src/test/spec/modules/quantcastBidAdapter_spec.js +6 -6
- package/dist/src/test/spec/modules/readpeakBidAdapter_spec.js +4 -4
- package/dist/src/test/spec/modules/relaidoBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/rubiconBidAdapter_spec.js +2 -2
- package/dist/src/test/spec/modules/smartxBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/sonaradsBidAdapter_spec.js +5 -5
- package/dist/src/test/spec/modules/sovrnBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/sparteoBidAdapter_spec.js +3 -3
- package/dist/src/test/spec/modules/sspBCBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/taboolaBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/targetVideoBidAdapter_spec.js +2 -2
- package/dist/src/test/spec/modules/trionBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/ttdBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/ucfunnelAnalyticsAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/unrulyBidAdapter_spec.js +3 -3
- package/dist/src/test/spec/modules/videobyteBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/visxBidAdapter_spec.js +12 -12
- package/dist/src/test/spec/modules/winrBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/yahooAdsBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +2 -2
- package/gulpfile.js +0 -7
- package/libraries/liveIntentId/shared.js +16 -0
- package/metadata/modules/33acrossBidAdapter.json +1 -1
- package/metadata/modules/33acrossIdSystem.json +1 -1
- package/metadata/modules/acuityadsBidAdapter.json +1 -1
- package/metadata/modules/adagioBidAdapter.json +1 -1
- package/metadata/modules/adagioRtdProvider.json +1 -1
- package/metadata/modules/addefendBidAdapter.json +1 -1
- package/metadata/modules/adfBidAdapter.json +1 -1
- package/metadata/modules/adfusionBidAdapter.json +1 -1
- package/metadata/modules/adheseBidAdapter.json +1 -1
- package/metadata/modules/adkernelAdnBidAdapter.json +1 -1
- package/metadata/modules/adkernelBidAdapter.json +4 -4
- package/metadata/modules/admaticBidAdapter.json +2 -2
- package/metadata/modules/admixerBidAdapter.json +1 -1
- package/metadata/modules/admixerIdSystem.json +1 -1
- package/metadata/modules/adnowBidAdapter.json +1 -1
- package/metadata/modules/adnuntiusBidAdapter.json +1 -1
- package/metadata/modules/adnuntiusRtdProvider.json +1 -1
- package/metadata/modules/adotBidAdapter.json +1 -1
- package/metadata/modules/adponeBidAdapter.json +1 -1
- package/metadata/modules/adqueryBidAdapter.json +1 -1
- package/metadata/modules/adqueryIdSystem.json +1 -1
- package/metadata/modules/adrinoBidAdapter.json +1 -1
- package/metadata/modules/ads_interactiveBidAdapter.json +1 -1
- package/metadata/modules/adtargetBidAdapter.json +1 -1
- package/metadata/modules/adtelligentBidAdapter.json +3 -3
- package/metadata/modules/adtelligentIdSystem.json +1 -1
- package/metadata/modules/aduptechBidAdapter.json +1 -1
- package/metadata/modules/adyoulikeBidAdapter.json +1 -1
- package/metadata/modules/aidemBidAdapter.json +1 -1
- package/metadata/modules/airgridRtdProvider.json +1 -1
- package/metadata/modules/alkimiBidAdapter.json +1 -1
- package/metadata/modules/ampliffyBidAdapter.json +1 -1
- package/metadata/modules/amxBidAdapter.json +1 -1
- package/metadata/modules/amxIdSystem.json +1 -1
- package/metadata/modules/aniviewBidAdapter.json +1 -1
- package/metadata/modules/anonymisedRtdProvider.json +1 -1
- package/metadata/modules/appierBidAdapter.json +1 -1
- package/metadata/modules/appnexusBidAdapter.json +5 -5
- package/metadata/modules/appushBidAdapter.json +1 -1
- package/metadata/modules/apstreamBidAdapter.json +1 -1
- package/metadata/modules/audiencerunBidAdapter.json +1 -1
- package/metadata/modules/axisBidAdapter.json +1 -1
- package/metadata/modules/azerionedgeRtdProvider.json +1 -1
- package/metadata/modules/beopBidAdapter.json +1 -1
- package/metadata/modules/betweenBidAdapter.json +1 -1
- package/metadata/modules/bidmaticBidAdapter.json +1 -1
- package/metadata/modules/bidtheatreBidAdapter.json +1 -1
- package/metadata/modules/bliinkBidAdapter.json +1 -1
- package/metadata/modules/blockthroughBidAdapter.json +1 -1
- package/metadata/modules/blueBidAdapter.json +1 -1
- package/metadata/modules/bmsBidAdapter.json +1 -1
- package/metadata/modules/boldwinBidAdapter.json +1 -1
- package/metadata/modules/bridBidAdapter.json +1 -1
- package/metadata/modules/browsiBidAdapter.json +1 -1
- package/metadata/modules/bucksenseBidAdapter.json +1 -1
- package/metadata/modules/carodaBidAdapter.json +1 -1
- package/metadata/modules/categoryTranslation.json +1 -1
- package/metadata/modules/ccxBidAdapter.json +1 -1
- package/metadata/modules/ceeIdSystem.json +1 -1
- package/metadata/modules/chromeAiRtdProvider.json +1 -1
- package/metadata/modules/compassBidAdapter.json +1 -1
- package/metadata/modules/conceptxBidAdapter.json +1 -1
- package/metadata/modules/connatixBidAdapter.json +1 -1
- package/metadata/modules/connectIdSystem.json +1 -1
- package/metadata/modules/connectadBidAdapter.json +1 -1
- package/metadata/modules/contentexchangeBidAdapter.json +1 -1
- package/metadata/modules/conversantBidAdapter.json +1 -1
- package/metadata/modules/copper6sspBidAdapter.json +1 -1
- package/metadata/modules/cpmstarBidAdapter.json +1 -1
- package/metadata/modules/criteoBidAdapter.json +1 -1
- package/metadata/modules/criteoIdSystem.json +1 -1
- package/metadata/modules/cwireBidAdapter.json +1 -1
- package/metadata/modules/czechAdIdSystem.json +1 -1
- package/metadata/modules/dailymotionBidAdapter.json +1 -1
- package/metadata/modules/debugging.json +1 -1
- package/metadata/modules/deepintentBidAdapter.json +1 -1
- package/metadata/modules/deltaprojectsBidAdapter.json +1 -1
- package/metadata/modules/dianomiBidAdapter.json +1 -1
- package/metadata/modules/digitalMatterBidAdapter.json +1 -1
- package/metadata/modules/distroscaleBidAdapter.json +1 -1
- package/metadata/modules/docereeAdManagerBidAdapter.json +1 -1
- package/metadata/modules/docereeBidAdapter.json +1 -1
- package/metadata/modules/dspxBidAdapter.json +1 -1
- package/metadata/modules/e_volutionBidAdapter.json +1 -1
- package/metadata/modules/edge226BidAdapter.json +1 -1
- package/metadata/modules/equativBidAdapter.json +1 -1
- package/metadata/modules/eskimiBidAdapter.json +1 -1
- package/metadata/modules/etargetBidAdapter.json +1 -1
- package/metadata/modules/euidIdSystem.json +1 -1
- package/metadata/modules/exadsBidAdapter.json +1 -1
- package/metadata/modules/feedadBidAdapter.json +1 -1
- package/metadata/modules/fwsspBidAdapter.json +1 -1
- package/metadata/modules/gamoshiBidAdapter.json +1 -1
- package/metadata/modules/glomexBidAdapter.json +1 -1
- package/metadata/modules/goldbachBidAdapter.json +1 -1
- package/metadata/modules/greenbidsBidAdapter.json +1 -1
- package/metadata/modules/gridBidAdapter.json +1 -1
- package/metadata/modules/gumgumBidAdapter.json +1 -1
- package/metadata/modules/hadronIdSystem.json +1 -1
- package/metadata/modules/hadronRtdProvider.json +1 -1
- package/metadata/modules/holidBidAdapter.json +1 -1
- package/metadata/modules/hybridBidAdapter.json +1 -1
- package/metadata/modules/id5IdSystem.json +1 -1
- package/metadata/modules/identityLinkIdSystem.json +1 -1
- package/metadata/modules/illuminBidAdapter.json +1 -1
- package/metadata/modules/impactifyBidAdapter.json +1 -1
- package/metadata/modules/improvedigitalBidAdapter.json +1 -1
- package/metadata/modules/inmobiBidAdapter.json +1 -1
- package/metadata/modules/innityBidAdapter.json +1 -1
- package/metadata/modules/insticatorBidAdapter.json +1 -1
- package/metadata/modules/intentIqIdSystem.json +1 -1
- package/metadata/modules/invibesBidAdapter.json +1 -1
- package/metadata/modules/ipromBidAdapter.json +1 -1
- package/metadata/modules/ixBidAdapter.json +1 -1
- package/metadata/modules/justIdSystem.json +1 -1
- package/metadata/modules/justpremiumBidAdapter.json +1 -1
- package/metadata/modules/jwplayerBidAdapter.json +1 -1
- package/metadata/modules/kargoBidAdapter.json +1 -1
- package/metadata/modules/kueezRtbBidAdapter.json +1 -1
- package/metadata/modules/limelightDigitalBidAdapter.json +2 -2
- package/metadata/modules/liveIntentIdSystem.json +1 -1
- package/metadata/modules/liveIntentRtdProvider.json +1 -1
- package/metadata/modules/livewrappedBidAdapter.json +1 -1
- package/metadata/modules/loopmeBidAdapter.json +1 -1
- package/metadata/modules/lotamePanoramaIdSystem.json +1 -1
- package/metadata/modules/luceadBidAdapter.json +1 -1
- package/metadata/modules/luponmediaBidAdapter.json +1 -1
- package/metadata/modules/madvertiseBidAdapter.json +1 -1
- package/metadata/modules/marsmediaBidAdapter.json +1 -1
- package/metadata/modules/mediaConsortiumBidAdapter.json +1 -1
- package/metadata/modules/mediaforceBidAdapter.json +1 -1
- package/metadata/modules/mediafuseBidAdapter.json +1 -1
- package/metadata/modules/mediagoBidAdapter.json +1 -1
- package/metadata/modules/mediakeysBidAdapter.json +1 -1
- package/metadata/modules/medianetBidAdapter.json +2 -2
- package/metadata/modules/mediasquareBidAdapter.json +1 -1
- package/metadata/modules/mgidBidAdapter.json +1 -1
- package/metadata/modules/mgidRtdProvider.json +1 -1
- package/metadata/modules/mgidXBidAdapter.json +1 -1
- package/metadata/modules/minutemediaBidAdapter.json +1 -1
- package/metadata/modules/missenaBidAdapter.json +1 -1
- package/metadata/modules/mobianRtdProvider.json +1 -1
- package/metadata/modules/mobilefuseBidAdapter.json +1 -1
- package/metadata/modules/mobkoiBidAdapter.json +1 -1
- package/metadata/modules/mobkoiIdSystem.json +1 -1
- package/metadata/modules/nativeryBidAdapter.json +1 -1
- package/metadata/modules/nativoBidAdapter.json +1 -1
- package/metadata/modules/newspassidBidAdapter.json +1 -1
- package/metadata/modules/nextMillenniumBidAdapter.json +1 -1
- package/metadata/modules/nextrollBidAdapter.json +1 -1
- package/metadata/modules/nexx360BidAdapter.json +5 -5
- package/metadata/modules/nobidBidAdapter.json +2 -2
- package/metadata/modules/nodalsAiRtdProvider.json +1 -1
- package/metadata/modules/novatiqIdSystem.json +1 -1
- package/metadata/modules/oguryBidAdapter.json +1 -1
- package/metadata/modules/omsBidAdapter.json +1 -1
- package/metadata/modules/onetagBidAdapter.json +1 -1
- package/metadata/modules/openwebBidAdapter.json +1 -1
- package/metadata/modules/openxBidAdapter.json +1 -1
- package/metadata/modules/operaadsBidAdapter.json +1 -1
- package/metadata/modules/optidigitalBidAdapter.json +1 -1
- package/metadata/modules/optoutBidAdapter.json +1 -1
- package/metadata/modules/orbidderBidAdapter.json +1 -1
- package/metadata/modules/outbrainBidAdapter.json +1 -1
- package/metadata/modules/ozoneBidAdapter.json +1 -1
- package/metadata/modules/pairIdSystem.json +1 -1
- package/metadata/modules/performaxBidAdapter.json +1 -1
- package/metadata/modules/pgamsspBidAdapter.json +1 -1
- package/metadata/modules/pixfutureBidAdapter.json +1 -1
- package/metadata/modules/playdigoBidAdapter.json +1 -1
- package/metadata/modules/prebid-core.json +2 -2
- package/metadata/modules/precisoBidAdapter.json +1 -1
- package/metadata/modules/prismaBidAdapter.json +1 -1
- package/metadata/modules/programmaticXBidAdapter.json +1 -1
- package/metadata/modules/proxistoreBidAdapter.json +1 -1
- package/metadata/modules/publinkIdSystem.json +1 -1
- package/metadata/modules/pubmaticBidAdapter.json +1 -1
- package/metadata/modules/pubmaticIdSystem.json +1 -1
- package/metadata/modules/pulsepointBidAdapter.json +1 -1
- package/metadata/modules/qtBidAdapter.json +1 -1
- package/metadata/modules/quantcastBidAdapter.json +1 -1
- package/metadata/modules/quantcastIdSystem.json +1 -1
- package/metadata/modules/r2b2BidAdapter.json +1 -1
- package/metadata/modules/raynRtdProvider.json +1 -1
- package/metadata/modules/readpeakBidAdapter.json +1 -1
- package/metadata/modules/relayBidAdapter.json +1 -1
- package/metadata/modules/relevantdigitalBidAdapter.json +1 -1
- package/metadata/modules/resetdigitalBidAdapter.json +1 -1
- package/metadata/modules/responsiveAdsBidAdapter.json +1 -1
- package/metadata/modules/retailspotBidAdapter.json +1 -1
- package/metadata/modules/revcontentBidAdapter.json +1 -1
- package/metadata/modules/rhythmoneBidAdapter.json +1 -1
- package/metadata/modules/richaudienceBidAdapter.json +1 -1
- package/metadata/modules/riseBidAdapter.json +2 -2
- package/metadata/modules/rixengineBidAdapter.json +1 -1
- package/metadata/modules/rtbhouseBidAdapter.json +1 -1
- package/metadata/modules/rubiconBidAdapter.json +1 -1
- package/metadata/modules/scatteredBidAdapter.json +1 -1
- package/metadata/modules/seedingAllianceBidAdapter.json +1 -1
- package/metadata/modules/seedtagBidAdapter.json +1 -1
- package/metadata/modules/semantiqRtdProvider.json +1 -1
- package/metadata/modules/setupadBidAdapter.json +1 -1
- package/metadata/modules/sevioBidAdapter.json +1 -1
- package/metadata/modules/sharedIdSystem.json +1 -1
- package/metadata/modules/sharethroughBidAdapter.json +1 -1
- package/metadata/modules/showheroes-bsBidAdapter.json +1 -1
- package/metadata/modules/silvermobBidAdapter.json +1 -1
- package/metadata/modules/sirdataRtdProvider.json +1 -1
- package/metadata/modules/slimcutBidAdapter.json +1 -1
- package/metadata/modules/smaatoBidAdapter.json +1 -1
- package/metadata/modules/smartadserverBidAdapter.json +1 -1
- package/metadata/modules/smartxBidAdapter.json +1 -1
- package/metadata/modules/smartyadsBidAdapter.json +1 -1
- package/metadata/modules/smilewantedBidAdapter.json +1 -1
- package/metadata/modules/snigelBidAdapter.json +1 -1
- package/metadata/modules/sonaradsBidAdapter.json +1 -1
- package/metadata/modules/sonobiBidAdapter.json +1 -1
- package/metadata/modules/sparteoBidAdapter.json +1 -1
- package/metadata/modules/ssmasBidAdapter.json +1 -1
- package/metadata/modules/sspBCBidAdapter.json +1 -1
- package/metadata/modules/stackadaptBidAdapter.json +1 -1
- package/metadata/modules/startioBidAdapter.json +1 -1
- package/metadata/modules/stroeerCoreBidAdapter.json +1 -1
- package/metadata/modules/stvBidAdapter.json +1 -1
- package/metadata/modules/sublimeBidAdapter.json +1 -1
- package/metadata/modules/taboolaBidAdapter.json +1 -1
- package/metadata/modules/taboolaIdSystem.json +1 -1
- package/metadata/modules/tappxBidAdapter.json +1 -1
- package/metadata/modules/targetVideoBidAdapter.json +1 -1
- package/metadata/modules/teadsBidAdapter.json +1 -1
- package/metadata/modules/teadsIdSystem.json +1 -1
- package/metadata/modules/tealBidAdapter.json +1 -1
- package/metadata/modules/tncIdSystem.json +1 -1
- package/metadata/modules/topicsFpdModule.json +1 -1
- package/metadata/modules/tripleliftBidAdapter.json +1 -1
- package/metadata/modules/ttdBidAdapter.json +1 -1
- package/metadata/modules/twistDigitalBidAdapter.json +1 -1
- package/metadata/modules/underdogmediaBidAdapter.json +1 -1
- package/metadata/modules/undertoneBidAdapter.json +1 -1
- package/metadata/modules/unifiedIdSystem.json +1 -1
- package/metadata/modules/unrulyBidAdapter.json +1 -1
- package/metadata/modules/userId.json +1 -1
- package/metadata/modules/validationFpdModule.json +1 -1
- package/metadata/modules/vidazooBidAdapter.json +1 -1
- package/metadata/modules/vidoomyBidAdapter.json +1 -1
- package/metadata/modules/viewdeosDXBidAdapter.json +1 -1
- package/metadata/modules/viouslyBidAdapter.json +1 -1
- package/metadata/modules/visxBidAdapter.json +1 -1
- package/metadata/modules/vlybyBidAdapter.json +1 -1
- package/metadata/modules/voxBidAdapter.json +1 -1
- package/metadata/modules/vrtcalBidAdapter.json +1 -1
- package/metadata/modules/vuukleBidAdapter.json +1 -1
- package/metadata/modules/weboramaRtdProvider.json +1 -1
- package/metadata/modules/welectBidAdapter.json +1 -1
- package/metadata/modules/yahooAdsBidAdapter.json +1 -1
- package/metadata/modules/yieldlabBidAdapter.json +1 -1
- package/metadata/modules/yieldliftBidAdapter.json +1 -1
- package/metadata/modules/yieldloveBidAdapter.json +1 -1
- package/metadata/modules/yieldmoBidAdapter.json +1 -1
- package/metadata/modules/zeotapIdPlusIdSystem.json +1 -1
- package/metadata/modules/zeta_globalBidAdapter.json +1 -1
- package/metadata/modules/zeta_global_sspBidAdapter.json +1 -1
- package/modules/openxBidAdapter.js +6 -1
- package/modules/priceFloors.ts +2 -2
- package/modules/pubmaticBidAdapter.js +21 -1
- package/modules/sevioBidAdapter.js +4 -1
- package/package.json +2 -3
- package/src/targeting.ts +3 -3
- package/test/spec/modules/liveIntentExternalIdSystem_spec.js +5 -0
- package/test/spec/modules/liveIntentIdMinimalSystem_spec.js +5 -0
- package/test/spec/modules/liveIntentIdSystem_spec.js +38 -0
- package/test/spec/modules/openxBidAdapter_spec.js +129 -0
- package/test/spec/modules/pubmaticBidAdapter_spec.js +70 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"priceFloors.js","names":["registerModule","__r0","debugTurnedOn","deepAccess","deepClone","deepSetValue","getParameterByName","isNumber","logError","logInfo","logWarn","mergeDeep","parseGPTSingleSizeArray","parseUrl","pick","deepEqual","generateUUID","getGlobal","config","ajaxBuilder","events","EVENTS","REJECTION_REASON","getHook","getRefererInfo","bidderSettings","auctionManager","IMP","PBS","registerOrtbProcessor","REQUEST","timedAuctionHook","timedBidResponseHook","adjustCpm","getGptSlotInfoForAdUnitCode","convertCurrency","timeoutQueue","ALL_MEDIATYPES","BANNER","FLOOR_SKIPPED_REASON","NOT_FOUND","RANDOM","MODULE_NAME","ajax","SYN_FIELD","Symbol","allowedFields","fetching","addedFloorsHook","_floorsConfig","_delayedAuctions","_floorDataForAuction","roundUp","number","precision","Math","ceil","parseFloat","pow","toFixed","getHostname","domain","topmostLocation","noDecodeWholeURL","hostname","getGptSlotFromAdUnit","adUnitId","index","arguments","length","undefined","adUnit","getAdUnit","isGam","ortb2Imp","ext","data","adserver","adslot","getAdUnitCode","request","response","adUnitCode","code","fieldMatchingFunctions","size","bidRequest","bidResponse","mediaType","gptSlot","enumeratePossibleFieldValues","floorFields","bidObject","responseObject","reduce","accum","field","exactMatch","push","toLowerCase","getFirstMatchingFloor","floorData","fieldValues","matchingFloor","matchingInput","map","join","previousMatch","allPossibleMatches","generatePossibleEnumerations","matchingRule","find","hashValue","values","hasOwnProperty","matchingData","floorMin","floorRuleValue","meta","defaultRule","max","arrayOfFields","delimiter","currentVal","ret","obj","obj1","sort","left","right","split","getBiddersCpmAdjustment","inputCpm","bid","cpm","calculateAdjustedFloor","oldFloor","newFloor","getMediaTypesSizes","banner","video","native","updateRequestParamsFromContext","requestParams","mediaTypesOnBid","Object","keys","mediaTypes","indexOf","getFloor","currency","auctionId","skipped","floorInfo","err","bidder","enforcement","bidAdjustment","inverseFunction","get","definedParams","fromEntries","entries","filter","_ref","key","val","includes","cpmAdjustment","floor","getFloorsDataForAuction","auctionFloorData","schema","normalizeRulesForAuction","fields","prependAdUnitCode","unshift","rulesHash","oldKey","newKey","getFloorDataFromAdUnits","adUnits","schemaAu","au","floors","assign","isFloorsDataValid","location","newRules","getNoFloorSignalBidersArray","noFloorSignalBidders","updateAdUnitsForAuction","noFloorSignalBiddersArray","forEach","bids","isNoFloorSignaled","some","bidderName","noFloorSignaled","skipRate","skippedReason","modelVersion","modelWeight","modelTimestamp","floorProvider","fetchStatus","pickRandomModel","modelGroups","weightSum","random","i","createFloorsDataForAuction","resolvedFloorsData","rest","modelWeightSum","useAdUnitData","auctionSkipRate","isSkipped","continueAuction","hookConfig","hasExited","reqBidsConfigObj","nextFn","apply","context","validateSchemaFields","Array","isArray","every","isValidRule","numFields","validateRules","floorsData","filteredRules","normalizeDefault","model","default","fill","modelIsValid","floorsSchemaValidation","floorsSchemaVersion","parseFloorData","requestBidsHook","fn","timer","auctionDelay","submit","handleFetchResponse","fetchResponse","floorResponse","JSON","parse","ex","fetchData","resume","handleFetchError","status","generateAndHandleFetch","floorEndpoint","url","requestMethod","method","success","error","addFieldOverrides","overrides","override","handleSetFloorsConfig","enabled","endpoint","isNaN","enforceJS","enforcePBS","floorDeals","additionalSchemaFields","on","AUCTION_END","args","setTimeout","before","addBidResponseHook","getHooks","hook","remove","addFloorDataToBid","adjustedCpm","floorValue","floorRule","floorCurrency","cpmAfterAdjustments","enforcements","matchedFields","matchedValue","shouldFloorBid","shouldFloorDeal","dealId","bidBelowFloor","reject","call","matchingBidRequest","getBidRequest","width","height","toUpperCase","bidResponseCurrency","originalCurrency","originalCpm","FLOOR_NOT_MET","bidderCode","getConfig","tryGetFloor","_ref2","e","setOrtbImpBidFloor","imp","bidfloor","bidfloorcur","setGranularBidfloors","setIfDifferent","bind","format","_ref3","w","h","setImpExtPrebidFloors","floorMinCur","reqContext","ortb2ImpFloorCur","prebid","ortb2ImpFloorMin","convertedFloorMinValue","convertedOrtb2ImpFloorMinValue","lowestImpFloorMin","setOrtbExtPrebidFloors","ortbRequest","bidderRequest","type","name","priority","dialects"],"sourceRoot":"../../..","sources":["modules/priceFloors.ts"],"sourcesContent":["import {\n debugTurnedOn,\n deepAccess,\n deepClone,\n deepSetValue,\n getParameterByName,\n isNumber,\n logError,\n logInfo,\n logWarn,\n mergeDeep,\n parseGPTSingleSizeArray,\n parseUrl,\n pick,\n deepEqual,\n generateUUID\n} from '../src/utils.js';\nimport {getGlobal} from '../src/prebidGlobal.js';\nimport {config} from '../src/config.js';\nimport {ajaxBuilder} from '../src/ajax.js';\nimport * as events from '../src/events.js';\nimport { EVENTS, REJECTION_REASON } from '../src/constants.js';\nimport {getHook} from '../src/hook.js';\nimport {getRefererInfo} from '../src/refererDetection.js';\nimport {bidderSettings} from '../src/bidderSettings.js';\nimport {auctionManager} from '../src/auctionManager.js';\nimport {IMP, PBS, registerOrtbProcessor, REQUEST} from '../src/pbjsORTB.js';\nimport {timedAuctionHook, timedBidResponseHook} from '../src/utils/perfMetrics.js';\nimport {adjustCpm} from '../src/utils/cpm.js';\nimport {getGptSlotInfoForAdUnitCode} from '../libraries/gptUtils/gptUtils.js';\nimport {convertCurrency} from '../libraries/currencyUtils/currency.js';\nimport { timeoutQueue } from '../libraries/timeoutQueue/timeoutQueue.js';\nimport {ALL_MEDIATYPES, BANNER, type MediaType} from '../src/mediaTypes.js';\nimport type {Currency, Size, BidderCode} from \"../src/types/common.d.ts\";\nimport type {BidRequest} from '../src/adapterManager.ts';\nimport type {Bid} from \"../src/bidfactory.ts\";\n\nexport const FLOOR_SKIPPED_REASON = {\n NOT_FOUND: 'not_found',\n RANDOM: 'random'\n};\n\n/**\n * @summary This Module is intended to provide users with the ability to dynamically set and enforce price floors on a per auction basis.\n */\nconst MODULE_NAME = 'Price Floors';\n\n/**\n * @summary Instantiate Ajax so we control the timeout\n */\nconst ajax = ajaxBuilder(10000);\n\n// eslint-disable-next-line symbol-description\nconst SYN_FIELD = Symbol();\n\n/**\n * @summary Allowed fields for rules to have\n */\nexport const allowedFields = [SYN_FIELD, 'gptSlot', 'adUnitCode', 'size', 'domain', 'mediaType'] as const;\ntype DefaultField = { [K in (typeof allowedFields)[number]]: K extends string ? K : never}[(typeof allowedFields)[number]];\n\n/**\n * @summary This is a flag to indicate if a AJAX call is processing for a floors request\n */\nlet fetching = false;\n\n/**\n * @summary so we only register for our hooks once\n */\nlet addedFloorsHook = false;\n\n/**\n * @summary The config to be used. Can be updated via: setConfig or a real time fetch\n */\nlet _floorsConfig: any = {};\n\n/**\n * @summary If a auction is to be delayed by an ongoing fetch we hold it here until it can be resumed\n */\nconst _delayedAuctions = timeoutQueue();\n\n/**\n * @summary Each auction can have differing floors data depending on execution time or per adunit setup\n * So we will be saving each auction offset by it's auctionId in order to make sure data is not changed\n * Once the auction commences\n */\nexport let _floorDataForAuction = {};\n\n/**\n * @summary Simple function to round up to a certain decimal degree\n */\nfunction roundUp(number, precision) {\n return Math.ceil((parseFloat(number) * Math.pow(10, precision) as any).toFixed(1)) / Math.pow(10, precision);\n}\n\nconst getHostname = (() => {\n let domain;\n return function() {\n if (domain == null) {\n domain = parseUrl(getRefererInfo().topmostLocation, {noDecodeWholeURL: true}).hostname;\n }\n return domain;\n }\n})();\n\n// First look into bidRequest!\nfunction getGptSlotFromAdUnit(adUnitId, {index = auctionManager.index} = {}) {\n const adUnit = index.getAdUnit({adUnitId});\n const isGam = deepAccess(adUnit, 'ortb2Imp.ext.data.adserver.name') === 'gam';\n return isGam && adUnit.ortb2Imp.ext.data.adserver.adslot;\n}\n\nfunction getAdUnitCode(request, response, {index = auctionManager.index} = {}) {\n return request?.adUnitCode || index.getAdUnit(response).code;\n}\n\n/**\n * @summary floor field types with their matching functions to resolve the actual matched value\n */\nexport const fieldMatchingFunctions = {\n [SYN_FIELD]: () => '*',\n 'size': (bidRequest, bidResponse) => parseGPTSingleSizeArray(bidResponse.size) || '*',\n 'mediaType': (bidRequest, bidResponse) => bidResponse.mediaType || 'banner',\n 'gptSlot': (bidRequest, bidResponse) => getGptSlotFromAdUnit((bidRequest || bidResponse).adUnitId) || getGptSlotInfoForAdUnitCode(getAdUnitCode(bidRequest, bidResponse)).gptSlot,\n 'domain': getHostname,\n 'adUnitCode': (bidRequest, bidResponse) => getAdUnitCode(bidRequest, bidResponse)\n} as const;\n\n/**\n * @summary Based on the fields array in floors data, it enumerates all possible matches based on exact match coupled with\n * a \"*\" catch-all match\n * Returns array of Tuple [exact match, catch all] for each field in rules file\n */\nfunction enumeratePossibleFieldValues(floorFields, bidObject, responseObject) {\n if (!floorFields.length) return [];\n // generate combination of all exact matches and catch all for each field type\n return floorFields.reduce((accum, field) => {\n const exactMatch = fieldMatchingFunctions[field](bidObject, responseObject) || '*';\n // storing exact matches as lowerCase since we want to compare case insensitively\n accum.push(exactMatch === '*' ? ['*'] : [exactMatch.toLowerCase(), '*']);\n return accum;\n }, []);\n}\n\n/**\n * @summary get's the first matching floor based on context provided.\n * Generates all possible rule matches and picks the first matching one.\n */\nexport function getFirstMatchingFloor(floorData, bidObject, responseObject = {}) {\n const fieldValues = enumeratePossibleFieldValues(deepAccess(floorData, 'schema.fields') || [], bidObject, responseObject);\n if (!fieldValues.length) {\n return {matchingFloor: undefined}\n }\n\n // look to see if a request for this context was made already\n const matchingInput = fieldValues.map(field => field[0]).join('-');\n // if we already have gotten the matching rule from this matching input then use it! No need to look again\n const previousMatch = deepAccess(floorData, `matchingInputs.${matchingInput}`);\n if (previousMatch) {\n return {...previousMatch};\n }\n const allPossibleMatches = generatePossibleEnumerations(fieldValues, deepAccess(floorData, 'schema.delimiter') || '|');\n const matchingRule = ((allPossibleMatches) || []).find(hashValue => floorData.values.hasOwnProperty(hashValue));\n\n const matchingData: any = {\n floorMin: floorData.floorMin || 0,\n floorRuleValue: floorData.values[matchingRule],\n matchingData: allPossibleMatches[0], // the first possible match is an \"exact\" so contains all data relevant for anlaytics adapters\n matchingRule: matchingRule === floorData.meta?.defaultRule ? undefined : matchingRule\n };\n // use adUnit floorMin as priority!\n const floorMin = deepAccess(bidObject, 'ortb2Imp.ext.prebid.floors.floorMin');\n if (typeof floorMin === 'number') {\n matchingData.floorMin = floorMin;\n }\n matchingData.matchingFloor = Math.max(matchingData.floorMin, matchingData.floorRuleValue);\n // save for later lookup if needed\n deepSetValue(floorData, `matchingInputs.${matchingInput}`, {...matchingData});\n return matchingData;\n}\n\n/**\n * @summary Generates all possible rule hash's based on input array of array's\n * The generated list is of all possible key matches based on fields input\n * The list is sorted by least amount of * in rule to most with left most fields taking precedence\n */\nfunction generatePossibleEnumerations(arrayOfFields, delimiter) {\n return arrayOfFields.reduce((accum, currentVal) => {\n const ret = [];\n accum.map(obj => {\n currentVal.map(obj1 => {\n ret.push(obj + delimiter + obj1)\n });\n });\n return ret;\n }).sort((left, right) => left.split('*').length - right.split('*').length);\n}\n\n/**\n * @summary If a the input bidder has a registered cpmadjustment it returns the input CPM after being adjusted\n */\nexport function getBiddersCpmAdjustment(inputCpm, bid, bidRequest) {\n return parseFloat(adjustCpm(inputCpm, {...bid, cpm: inputCpm}, bidRequest));\n}\n\n/**\n * @summary This function takes the original floor and the adjusted floor in order to determine the bidders actual floor\n * With js rounding errors with decimal division we utilize similar method as shown in cpmBucketManager.js\n */\nexport function calculateAdjustedFloor(oldFloor, newFloor) {\n const pow = Math.pow(10, 10);\n return ((oldFloor * pow) / (newFloor * pow) * (oldFloor * pow)) / pow;\n}\n\n/**\n * @summary gets the prebid set sizes depending on the input mediaType\n */\nconst getMediaTypesSizes = {\n banner: (bid) => deepAccess(bid, 'mediaTypes.banner.sizes') || [],\n video: (bid) => deepAccess(bid, 'mediaTypes.video.playerSize') || [],\n native: (bid) => deepAccess(bid, 'mediaTypes.native.image.sizes') ? [deepAccess(bid, 'mediaTypes.native.image.sizes')] : []\n}\n\n/**\n * @summary for getFloor only, before selecting a rule, if a bidAdapter asks for * in their getFloor params\n * Then we may be able to get a better rule than the * ones depending on context of the adUnit\n */\nfunction updateRequestParamsFromContext(bidRequest, requestParams) {\n // if adapter asks for *'s then we can do some logic to infer if we can get a more specific rule based on context of bid\n const mediaTypesOnBid = Object.keys(bidRequest.mediaTypes || {});\n // if there is only one mediaType then we can just use it\n if (requestParams.mediaType === '*' && mediaTypesOnBid.length === 1) {\n requestParams.mediaType = mediaTypesOnBid[0];\n }\n // if they asked for * size, but for the given mediaType there is only one size, we can just use it\n if (requestParams.size === '*' && mediaTypesOnBid.indexOf(requestParams.mediaType) !== -1 && getMediaTypesSizes[requestParams.mediaType] && getMediaTypesSizes[requestParams.mediaType](bidRequest).length === 1) {\n requestParams.size = getMediaTypesSizes[requestParams.mediaType](bidRequest)[0];\n }\n return requestParams;\n}\n\ntype GetFloorParams = {\n currency?: Currency | '*';\n mediaType?: MediaType | '*';\n size?: Size | '*';\n}\n\ndeclare module '../src/adapterManager' {\n interface BaseBidRequest {\n getFloor: typeof getFloor;\n }\n}\n\ndeclare module '../src/bidderSettings' {\n interface BidderSettings<B extends BidderCode> {\n /**\n * Inverse of bidCpmAdjustment\n */\n inverseBidAdjustment?: (floor: number, bidRequest: BidRequest<B>, params: {[K in keyof GetFloorParams]?: Exclude<GetFloorParams[K], '*'>}) => number;\n }\n}\n\n/**\n * @summary This is the function which will return a single floor based on the input requests\n * and matching it to a rule for the current auction\n */\nexport function getFloor(requestParams: GetFloorParams = {currency: 'USD', mediaType: '*', size: '*'}) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const bidRequest = this;\n const floorData = _floorDataForAuction[bidRequest.auctionId];\n if (!floorData || floorData.skipped) return {};\n\n requestParams = updateRequestParamsFromContext(bidRequest, requestParams);\n const floorInfo = getFirstMatchingFloor(floorData.data, {...bidRequest}, {mediaType: requestParams.mediaType, size: requestParams.size});\n let currency = requestParams.currency || floorData.data.currency;\n\n // if bidder asked for a currency which is not what floors are set in convert\n if (floorInfo.matchingFloor && currency !== floorData.data.currency) {\n try {\n floorInfo.matchingFloor = getGlobal().convertCurrency(floorInfo.matchingFloor, floorData.data.currency, currency);\n } catch (err) {\n logWarn(`${MODULE_NAME}: Unable to get currency conversion for getFloor for bidder ${bidRequest.bidder}. You must have currency module enabled with defaultRates in your currency config`);\n // since we were unable to convert to the bidders requested currency, we send back just the actual floors currency to them\n currency = floorData.data.currency;\n }\n }\n\n // if cpmAdjustment flag is true and we have a valid floor then run the adjustment on it\n if (floorData.enforcement.bidAdjustment && floorInfo.matchingFloor) {\n // pub provided inverse function takes precedence, otherwise do old adjustment stuff\n const inverseFunction = bidderSettings.get(bidRequest.bidder, 'inverseBidAdjustment');\n if (inverseFunction) {\n const definedParams = Object.fromEntries(\n Object.entries(requestParams).filter(([key, val]) => val !== '*' && ['mediaType', 'size'].includes(key))\n );\n floorInfo.matchingFloor = inverseFunction(floorInfo.matchingFloor, bidRequest, definedParams);\n } else {\n const cpmAdjustment = getBiddersCpmAdjustment(floorInfo.matchingFloor, null, bidRequest);\n floorInfo.matchingFloor = cpmAdjustment ? calculateAdjustedFloor(floorInfo.matchingFloor, cpmAdjustment) : floorInfo.matchingFloor;\n }\n }\n\n if (floorInfo.floorRuleValue === null) {\n return null;\n }\n\n if (floorInfo.matchingFloor) {\n return {\n floor: roundUp(floorInfo.matchingFloor, 4),\n currency};\n }\n return {};\n}\n\n/**\n * @summary Takes a floorsData object and converts it into a hash map with appropriate keys\n */\nexport function getFloorsDataForAuction(floorData, adUnitCode?) {\n const auctionFloorData = deepClone(floorData);\n auctionFloorData.schema.delimiter = floorData.schema.delimiter || '|';\n auctionFloorData.values = normalizeRulesForAuction(auctionFloorData, adUnitCode);\n // default the currency to USD if not passed in\n auctionFloorData.currency = auctionFloorData.currency || 'USD';\n return auctionFloorData;\n}\n\n/**\n * @summary if adUnitCode needs to be added to the offset then it will add it else just return the values\n */\nfunction normalizeRulesForAuction(floorData, adUnitCode) {\n const fields = floorData.schema.fields;\n const delimiter = floorData.schema.delimiter\n\n // if we are building the floor data form an ad unit, we need to append adUnit code as to not cause collisions\n const prependAdUnitCode = adUnitCode && fields.indexOf('adUnitCode') === -1 && fields.unshift('adUnitCode');\n return Object.keys(floorData.values).reduce((rulesHash, oldKey) => {\n const newKey = prependAdUnitCode ? `${adUnitCode}${delimiter}${oldKey}` : oldKey\n // we store the rule keys as lower case for case insensitive compare\n rulesHash[newKey.toLowerCase()] = floorData.values[oldKey];\n return rulesHash;\n }, {});\n}\n\n/**\n * @summary This function will take the adUnits and generate a floor data object to be used during the auction\n * Only called if no set config or fetch level data has returned\n */\nexport function getFloorDataFromAdUnits(adUnits) {\n const schemaAu = adUnits.find(au => au.floors?.schema != null);\n return adUnits.reduce((accum, adUnit) => {\n if (adUnit.floors?.schema != null && !deepEqual(adUnit.floors.schema, schemaAu?.floors?.schema)) {\n logError(`${MODULE_NAME}: adUnit '${adUnit.code}' declares a different schema from one previously declared by adUnit '${schemaAu.code}'. Floor config for '${adUnit.code}' will be ignored.`)\n return accum;\n }\n const floors = Object.assign({}, schemaAu?.floors, {values: undefined}, adUnit.floors)\n if (isFloorsDataValid(floors)) {\n // if values already exist we want to not overwrite them\n if (!accum.values) {\n accum = getFloorsDataForAuction(floors, adUnit.code);\n accum.location = 'adUnit';\n } else {\n const newRules = getFloorsDataForAuction(floors, adUnit.code).values;\n // copy over the new rules into our values object\n Object.assign(accum.values, newRules);\n }\n } else if (adUnit.floors != null) {\n logWarn(`adUnit '${adUnit.code}' provides an invalid \\`floor\\` definition, it will be ignored for floor calculations`, adUnit);\n }\n return accum;\n }, {});\n}\n\nfunction getNoFloorSignalBidersArray(floorData) {\n const { data, enforcement } = floorData\n // The data.noFloorSignalBidders higher priority then the enforcment\n if (data?.noFloorSignalBidders?.length > 0) {\n return data.noFloorSignalBidders\n } else if (enforcement?.noFloorSignalBidders?.length > 0) {\n return enforcement.noFloorSignalBidders\n }\n return []\n}\n\n/**\n * @summary This function takes the adUnits for the auction and update them accordingly as well as returns the rules hashmap for the auction\n */\nexport function updateAdUnitsForAuction(adUnits, floorData, auctionId) {\n const noFloorSignalBiddersArray = getNoFloorSignalBidersArray(floorData)\n\n adUnits.forEach((adUnit) => {\n adUnit.bids.forEach(bid => {\n // check if the bidder is in the no signal list\n const isNoFloorSignaled = noFloorSignalBiddersArray.some(bidderName => bidderName === bid.bidder)\n if (floorData.skipped || isNoFloorSignaled) {\n isNoFloorSignaled && logInfo(`noFloorSignal to ${bid.bidder}`)\n delete bid.getFloor;\n } else {\n bid.getFloor = getFloor;\n }\n // information for bid and analytics adapters\n bid.auctionId = auctionId;\n bid.floorData = {\n noFloorSignaled: isNoFloorSignaled,\n skipped: floorData.skipped,\n skipRate: deepAccess(floorData, 'data.skipRate') ?? floorData.skipRate,\n skippedReason: floorData.skippedReason,\n floorMin: floorData.floorMin,\n modelVersion: deepAccess(floorData, 'data.modelVersion'),\n modelWeight: deepAccess(floorData, 'data.modelWeight'),\n modelTimestamp: deepAccess(floorData, 'data.modelTimestamp'),\n location: deepAccess(floorData, 'data.location', 'noData'),\n floorProvider: floorData.floorProvider,\n fetchStatus: _floorsConfig.fetchStatus\n };\n });\n });\n}\n\nexport function pickRandomModel(modelGroups, weightSum) {\n // we loop through the models subtracting the current model weight from our random number\n // once we are at or below zero, we return the associated model\n let random = Math.floor(Math.random() * weightSum + 1)\n for (let i = 0; i < modelGroups.length; i++) {\n random -= modelGroups[i].modelWeight;\n if (random <= 0) {\n return modelGroups[i];\n }\n }\n};\n\n/**\n * @summary Updates the adUnits accordingly and returns the necessary floorsData for the current auction\n */\nexport function createFloorsDataForAuction(adUnits, auctionId) {\n const resolvedFloorsData = deepClone(_floorsConfig);\n // if using schema 2 pick a model here:\n if (deepAccess(resolvedFloorsData, 'data.floorsSchemaVersion') === 2) {\n // merge the models specific stuff into the top level data settings (now it looks like floorsSchemaVersion 1!)\n const { modelGroups, ...rest } = resolvedFloorsData.data;\n resolvedFloorsData.data = Object.assign(rest, pickRandomModel(modelGroups, rest.modelWeightSum));\n }\n\n // if we do not have a floors data set, we will try to use data set on adUnits\n const useAdUnitData = Object.keys(deepAccess(resolvedFloorsData, 'data.values') || {}).length === 0;\n if (useAdUnitData) {\n resolvedFloorsData.data = getFloorDataFromAdUnits(adUnits);\n } else {\n resolvedFloorsData.data = getFloorsDataForAuction(resolvedFloorsData.data);\n }\n // if we still do not have a valid floor data then floors is not on for this auction, so skip\n if (Object.keys(deepAccess(resolvedFloorsData, 'data.values') || {}).length === 0) {\n resolvedFloorsData.skipped = true;\n resolvedFloorsData.skippedReason = FLOOR_SKIPPED_REASON.NOT_FOUND\n } else {\n // determine the skip rate now\n const auctionSkipRate = getParameterByName('pbjs_skipRate') || (deepAccess(resolvedFloorsData, 'data.skipRate') ?? resolvedFloorsData.skipRate);\n const isSkipped = Math.random() * 100 < parseFloat(auctionSkipRate);\n resolvedFloorsData.skipped = isSkipped;\n if (isSkipped) resolvedFloorsData.skippedReason = FLOOR_SKIPPED_REASON.RANDOM\n }\n // copy FloorMin to floorData.data\n if (resolvedFloorsData.hasOwnProperty('floorMin')) resolvedFloorsData.data.floorMin = resolvedFloorsData.floorMin;\n // add floorData to bids\n updateAdUnitsForAuction(adUnits, resolvedFloorsData, auctionId);\n return resolvedFloorsData;\n}\n\n/**\n * @summary This is the function which will be called to exit our module and continue the auction.\n */\nexport function continueAuction(hookConfig) {\n if (!hookConfig.hasExited) {\n // We need to know the auctionId at this time. So we will use the passed in one or generate and set it ourselves\n hookConfig.reqBidsConfigObj.auctionId = hookConfig.reqBidsConfigObj.auctionId || generateUUID();\n // now we do what we need to with adUnits and save the data object to be used for getFloor and enforcement calls\n _floorDataForAuction[hookConfig.reqBidsConfigObj.auctionId] = createFloorsDataForAuction(hookConfig.reqBidsConfigObj.adUnits || getGlobal().adUnits, hookConfig.reqBidsConfigObj.auctionId);\n hookConfig.nextFn.apply(hookConfig.context, [hookConfig.reqBidsConfigObj]);\n hookConfig.hasExited = true;\n }\n}\n\nfunction validateSchemaFields(fields) {\n if (Array.isArray(fields) && fields.length > 0) {\n if (fields.every(field => allowedFields.includes(field))) {\n return true;\n } else {\n logError(`${MODULE_NAME}: Fields received do not match allowed fields`);\n }\n }\n return false;\n}\n\nfunction isValidRule(key, floor, numFields, delimiter) {\n if (typeof key !== 'string' || key.split(delimiter).length !== numFields) {\n return false;\n }\n return typeof floor === 'number' || floor === null;\n}\n\nfunction validateRules(floorsData, numFields, delimiter) {\n if (typeof floorsData.values !== 'object') {\n return false;\n }\n // if an invalid rule exists we remove it\n floorsData.values = Object.keys(floorsData.values).reduce((filteredRules, key) => {\n if (isValidRule(key, floorsData.values[key], numFields, delimiter)) {\n filteredRules[key] = floorsData.values[key];\n }\n return filteredRules\n }, {});\n // rules is only valid if at least one rule remains\n return Object.keys(floorsData.values).length > 0;\n}\n\nexport function normalizeDefault(model) {\n if (isNumber(model.default)) {\n let defaultRule = '*';\n const numFields = (model.schema?.fields || []).length;\n if (!numFields) {\n deepSetValue(model, 'schema.fields', [SYN_FIELD]);\n } else {\n defaultRule = Array(numFields).fill('*').join(model.schema?.delimiter || '|');\n }\n model.values = model.values || {};\n if (model.values[defaultRule] == null) {\n model.values[defaultRule] = model.default;\n model.meta = {defaultRule};\n }\n }\n return model;\n}\n\nfunction modelIsValid(model) {\n model = normalizeDefault(model);\n // schema.fields has only allowed attributes\n if (!validateSchemaFields(deepAccess(model, 'schema.fields'))) {\n return false;\n }\n return validateRules(model, model.schema.fields.length, model.schema.delimiter || '|')\n}\n\n/**\n * @summary Mapping of floor schema version to it's corresponding validation\n */\nconst floorsSchemaValidation = {\n 1: data => modelIsValid(data),\n 2: data => {\n // model groups should be an array with at least one element\n if (!Array.isArray(data.modelGroups) || data.modelGroups.length === 0) {\n return false;\n }\n // every model should have valid schema, as well as an accompanying modelWeight\n data.modelWeightSum = 0;\n return data.modelGroups.every(model => {\n if (typeof model.modelWeight === 'number' && modelIsValid(model)) {\n data.modelWeightSum += model.modelWeight;\n return true;\n }\n return false;\n });\n }\n};\n\n/**\n * @summary Fields array should have at least one entry and all should match allowed fields\n * Each rule in the values array should have a 'key' and 'floor' param\n * And each 'key' should have the correct number of 'fields' after splitting\n * on the delim. If rule does not match remove it. return if still at least 1 rule\n */\nexport function isFloorsDataValid(floorsData) {\n if (typeof floorsData !== 'object') {\n return false;\n }\n floorsData.floorsSchemaVersion = floorsData.floorsSchemaVersion || 1;\n if (typeof floorsSchemaValidation[floorsData.floorsSchemaVersion] !== 'function') {\n logError(`${MODULE_NAME}: Unknown floorsSchemaVersion: `, floorsData.floorsSchemaVersion);\n return false;\n }\n return floorsSchemaValidation[floorsData.floorsSchemaVersion](floorsData);\n}\n\n/**\n * @summary This function updates the global Floors Data field based on the new one passed in if it is valid\n */\nexport function parseFloorData(floorsData, location) {\n if (floorsData && typeof floorsData === 'object' && isFloorsDataValid(floorsData)) {\n logInfo(`${MODULE_NAME}: A ${location} set the auction floor data set to `, floorsData);\n return {\n ...floorsData,\n location\n };\n }\n logError(`${MODULE_NAME}: The floors data did not contain correct values`, floorsData);\n}\n\n/**\n *\n * @param {Object} reqBidsConfigObj required; This is the same param that's used in pbjs.requestBids.\n * @param {function} fn required; The next function in the chain, used by hook.ts\n */\nexport const requestBidsHook = timedAuctionHook('priceFloors', function requestBidsHook(fn, reqBidsConfigObj) {\n // preserves all module related variables for the current auction instance (used primiarily for concurrent auctions)\n const hookConfig = {\n reqBidsConfigObj,\n context: this,\n nextFn: fn,\n hasExited: false,\n timer: null\n };\n\n // If auction delay > 0 AND we are fetching -> Then wait until it finishes\n if (_floorsConfig.auctionDelay > 0 && fetching) {\n _delayedAuctions.submit(_floorsConfig.auctionDelay, () => continueAuction(hookConfig), () => {\n logWarn(`${MODULE_NAME}: Fetch attempt did not return in time for auction`);\n _floorsConfig.fetchStatus = 'timeout';\n continueAuction(hookConfig);\n });\n } else {\n continueAuction(hookConfig);\n }\n});\n\n/**\n * This function handles the ajax response which comes from the user set URL to fetch floors data from\n * @param {object} fetchResponse The floors data response which came back from the url configured in config.floors\n */\nexport function handleFetchResponse(fetchResponse) {\n fetching = false;\n _floorsConfig.fetchStatus = 'success';\n let floorResponse;\n try {\n floorResponse = JSON.parse(fetchResponse);\n } catch (ex) {\n floorResponse = fetchResponse;\n }\n // Update the global floors object according to the fetched data\n const fetchData = parseFloorData(floorResponse, 'fetch');\n if (fetchData) {\n // set .data to it\n _floorsConfig.data = fetchData;\n // set skipRate override if necessary\n _floorsConfig.skipRate = isNumber(fetchData.skipRate) ? fetchData.skipRate : _floorsConfig.skipRate;\n _floorsConfig.floorProvider = fetchData.floorProvider || _floorsConfig.floorProvider;\n }\n\n // if any auctions are waiting for fetch to finish, we need to continue them!\n _delayedAuctions.resume();\n}\n\nfunction handleFetchError(status) {\n fetching = false;\n _floorsConfig.fetchStatus = 'error';\n logError(`${MODULE_NAME}: Fetch errored with: `, status);\n\n // if any auctions are waiting for fetch to finish, we need to continue them!\n _delayedAuctions.resume();\n}\n\n/**\n * This function handles sending and receiving the AJAX call for a floors fetch\n * @param {object} floorEndpoint the floors endpoint coming from setConfig\n */\nexport function generateAndHandleFetch(floorEndpoint) {\n // if a fetch url is defined and one is not already occurring, fire it!\n if (floorEndpoint.url && !fetching) {\n // default to GET and we only support GET for now\n const requestMethod = floorEndpoint.method || 'GET';\n if (requestMethod !== 'GET') {\n logError(`${MODULE_NAME}: 'GET' is the only request method supported at this time!`);\n } else {\n ajax(floorEndpoint.url, { success: handleFetchResponse, error: handleFetchError }, null, { method: 'GET' });\n fetching = true;\n }\n } else if (fetching) {\n logWarn(`${MODULE_NAME}: A fetch is already occurring. Skipping.`);\n }\n}\n\n/**\n * @summary Updates our allowedFields and fieldMatchingFunctions with the publisher defined new ones\n */\nfunction addFieldOverrides(overrides) {\n Object.keys(overrides).forEach((override: any) => {\n // we only add it if it is not already in the allowed fields and if the passed in value is a function\n if (allowedFields.indexOf(override) === -1 && typeof overrides[override] === 'function') {\n (allowedFields as any).push(override);\n fieldMatchingFunctions[override] = overrides[override];\n }\n });\n}\n\ntype FloorsDef = {\n /**\n * Optional atribute used to signal to the Floor Provider’s Analytics adapter their floors are being applied.\n * They can opt to log only floors that are applied when they are the provider. If floorProvider is supplied in\n * both the top level of the floors object and within the data object, the data object’s configuration shall prevail.\n */\n floorProvider?: string;\n /**\n * Currency of floor data. Floor Module will convert currency where necessary.\n */\n currency?: Currency;\n /**\n * Used by floor providers to train on model version performance.\n * The expectation is a floor provider’s analytics adapter will pass the model verson back for algorithm training.\n */\n modelVersion?: string;\n schema: {\n /**\n * Character separating the floor keys. Default is \"|\".\n */\n delimiter?: string;\n fields: (DefaultField | string)[]\n };\n /**\n * Floor used if no matching rules are found.\n */\n default?: number;\n /**\n * Map from delimited field of attribute values to a floor value.\n */\n values: {\n [rule: string]: number;\n }\n}\n\ntype BaseFloorData = {\n /**\n * Epoch timestamp associated with modelVersion.\n * Can be used to track model creation of floor file for post auction analysis.\n */\n modelTimestamp?: string;\n /**\n * skipRate is a number between 0 and 100 to determine when to skip all floor logic, where 0 is always use floor data and 100 is always skip floor data.\n */\n skipRate?: number;\n}\n\nexport type Schema1FloorData = FloorsDef & BaseFloorData & {\n floorsSchemaVersion?: 1;\n}\n\nexport type Schema2FloorData = BaseFloorData & {\n floorsSchemaVersion: 2;\n modelGrups: (FloorsDef & {\n /**\n * Used by the module to determine when to apply the specific model.\n */\n modelWeight: number;\n /**\n * This is an array of bidders for which to avoid sending floors.\n * This is useful for bidders where the publisher has established different floor rules in their systems.\n */\n noFloorSignalBidders?: BidderCode[];\n })[]\n}\n\ndeclare module '../src/adUnits' {\n interface AdUnitDefinition {\n floors?: Partial<Schema1FloorData>;\n }\n}\n\nexport type FloorsConfig = Pick<Schema1FloorData, 'skipRate' | 'floorProvider'> & {\n enabled?: boolean;\n /**\n * The mimimum CPM floor used by the Price Floors Module.\n * The Price Floors Module will take the greater of floorMin and the matched rule CPM when evaluating getFloor() and enforcing floors.\n */\n floorMin?: number;\n enforcement?: Pick<Schema2FloorData['modelGrups'][0], 'noFloorSignalBidders'> & {\n /**\n * If set to true (the default), the Price Floors Module will provide floors to bid adapters for bid request\n * matched rules and suppress any bids not exceeding a matching floor.\n * If set to false, the Price Floors Module will still provide floors for bid adapters, there will be no floor enforcement.\n */\n enforceJS?: boolean;\n /**\n * If set to true (the default), the Price Floors Module will signal to Prebid Server to pass floors to it’s bid\n * adapters and enforce floors.\n * If set to false, the pbjs should still pass matched bid request floor data to PBS, however no enforcement will take place.\n */\n enforcePBS?: boolean;\n /**\n * Enforce floors for deal bid requests. Default is false.\n */\n floorDeals?: boolean;\n /**\n * If true (the default), the Price Floors Module will use the bidAdjustment function to adjust the floor\n * per bidder.\n * If false (or no bidAdjustment function is provided), floors will not be adjusted.\n * Note: Setting this parameter to false may have unexpected results, such as signaling a gross floor when\n * expecting net or vice versa.\n */\n bidAdjustment?: boolean;\n }\n /**\n * Map from custom field name to a function generating that field's value for either a bid or a bid request.\n */\n additionalSchemaFields?: {\n [field: string]: (bidRequest?: BidRequest<BidderCode>, bid?: Bid) => string\n }\n /**\n * How long (in milliseconds) auctions should be delayed to wait for dynamic floor data.\n */\n auctionDelay?: number;\n endpoint?: {\n /**\n * URL of endpoint to retrieve dynamic floor data.\n */\n url: string;\n };\n data?: Schema1FloorData | Schema2FloorData;\n}\n\ndeclare module '../src/config' {\n interface Config {\n floors?: FloorsConfig;\n }\n}\n\n/**\n * @summary This is the function which controls what happens during a pbjs.setConfig({...floors: {}}) is called\n */\nexport function handleSetFloorsConfig(config) {\n _floorsConfig = pick(config, [\n 'floorMin',\n 'enabled', enabled => enabled !== false, // defaults to true\n 'auctionDelay', auctionDelay => auctionDelay || 0,\n 'floorProvider', floorProvider => deepAccess(config, 'data.floorProvider', floorProvider),\n 'endpoint', endpoint => endpoint || {},\n 'skipRate', () => !isNaN(deepAccess(config, 'data.skipRate')) ? config.data.skipRate : config.skipRate || 0,\n 'enforcement', enforcement => pick(enforcement || {}, [\n 'enforceJS', enforceJS => enforceJS !== false, // defaults to true\n 'enforcePBS', enforcePBS => enforcePBS === true, // defaults to false\n 'floorDeals', floorDeals => floorDeals === true, // defaults to false\n 'bidAdjustment', bidAdjustment => bidAdjustment !== false, // defaults to true,\n 'noFloorSignalBidders', noFloorSignalBidders => noFloorSignalBidders || []\n ]),\n 'additionalSchemaFields', additionalSchemaFields => typeof additionalSchemaFields === 'object' && Object.keys(additionalSchemaFields).length > 0 ? addFieldOverrides(additionalSchemaFields) : undefined,\n 'data', data => (data && parseFloorData(data, 'setConfig')) || undefined\n ]);\n\n // if enabled then do some stuff\n if (_floorsConfig.enabled) {\n // handle the floors fetch\n generateAndHandleFetch(_floorsConfig.endpoint);\n\n if (!addedFloorsHook) {\n // register hooks / listening events\n // when auction finishes remove it's associated floor data after 3 seconds so we stil have it for latent responses\n events.on(EVENTS.AUCTION_END, (args) => {\n setTimeout(() => delete _floorDataForAuction[args.auctionId], 3000);\n });\n\n // we want our hooks to run after the currency hooks\n getHook('requestBids').before(requestBidsHook, 50);\n // if user has debug on then we want to allow the debugging module to run before this, assuming they are testing priceFloors\n // debugging is currently set at 5 priority\n getHook('addBidResponse').before(addBidResponseHook, debugTurnedOn() ? 4 : 50);\n addedFloorsHook = true;\n }\n } else {\n logInfo(`${MODULE_NAME}: Turning off module`);\n\n _floorsConfig = {};\n _floorDataForAuction = {};\n\n getHook('addBidResponse').getHooks({hook: addBidResponseHook}).remove();\n getHook('requestBids').getHooks({hook: requestBidsHook}).remove();\n\n addedFloorsHook = false;\n }\n}\n\nexport type BidFloorData = {\n floorValue: number;\n floorRule: string;\n floorRuleValue: number;\n floorCurrency: Currency;\n cpmAfterAdjustments: number;\n enforcements: FloorsConfig['enforcement'];\n matchedFields: { [fieldName: string ]: string }\n}\n\ndeclare module '../src/bidfactory' {\n interface BaseBid {\n floorData?: BidFloorData\n }\n}\n\n/**\n * @summary Analytics adapters especially need context of what the floors module is doing in order\n * to best create informed models. This function attaches necessary information to the bidResponse object for processing\n */\nfunction addFloorDataToBid(floorData, floorInfo, bid: Partial<Bid>, adjustedCpm) {\n bid.floorData = {\n floorValue: floorInfo.matchingFloor,\n floorRule: floorInfo.matchingRule,\n floorRuleValue: floorInfo.floorRuleValue,\n floorCurrency: floorData.data.currency,\n cpmAfterAdjustments: adjustedCpm,\n enforcements: {...floorData.enforcement},\n matchedFields: {}\n };\n floorData.data.schema.fields.forEach((field, index) => {\n const matchedValue = floorInfo.matchingData.split(floorData.data.schema.delimiter)[index];\n bid.floorData.matchedFields[field] = matchedValue;\n });\n}\n\n/**\n * @summary takes the enforcement flags and the bid itself and determines if it should be floored\n */\nfunction shouldFloorBid(floorData, floorInfo, bid) {\n const enforceJS = deepAccess(floorData, 'enforcement.enforceJS') !== false;\n const shouldFloorDeal = deepAccess(floorData, 'enforcement.floorDeals') === true || !bid.dealId;\n const bidBelowFloor = bid.floorData.cpmAfterAdjustments < floorInfo.matchingFloor;\n return enforceJS && (bidBelowFloor && shouldFloorDeal);\n}\n\n/**\n * @summary The main driving force of floors. On bidResponse we hook in and intercept bidResponses.\n * And if the rule we find determines a bid should be floored we will do so.\n */\nexport const addBidResponseHook = timedBidResponseHook('priceFloors', function addBidResponseHook(fn, adUnitCode, bid, reject) {\n const floorData = _floorDataForAuction[bid.auctionId];\n // if no floor data then bail\n if (!floorData || !bid || floorData.skipped) {\n return fn.call(this, adUnitCode, bid, reject);\n }\n\n const matchingBidRequest = auctionManager.index.getBidRequest(bid);\n\n // get the matching rule\n const floorInfo = getFirstMatchingFloor(floorData.data, matchingBidRequest, {...bid, size: [bid.width, bid.height]});\n\n if (!floorInfo.matchingFloor) {\n if (floorInfo.matchingFloor !== 0) logWarn(`${MODULE_NAME}: unable to determine a matching price floor for bidResponse`, bid);\n return fn.call(this, adUnitCode, bid, reject);\n }\n\n // determine the base cpm to use based on if the currency matches the floor currency\n let adjustedCpm;\n const floorCurrency = floorData.data.currency.toUpperCase();\n const bidResponseCurrency = bid.currency || 'USD'; // if an adapter does not set a bid currency and currency module not on it may come in as undefined\n if (floorCurrency === bidResponseCurrency.toUpperCase()) {\n adjustedCpm = bid.cpm;\n } else if (bid.originalCurrency && floorCurrency === bid.originalCurrency.toUpperCase()) {\n adjustedCpm = bid.originalCpm;\n } else {\n try {\n adjustedCpm = getGlobal().convertCurrency(bid.cpm, bidResponseCurrency.toUpperCase(), floorCurrency);\n } catch (err) {\n logError(`${MODULE_NAME}: Unable do get currency conversion for bidResponse to Floor Currency. Do you have Currency module enabled? ${bid}`);\n return fn.call(this, adUnitCode, bid, reject);\n }\n }\n\n // ok we got the bid response cpm in our desired currency. Now we need to run the bidders CPMAdjustment function if it exists\n adjustedCpm = getBiddersCpmAdjustment(adjustedCpm, bid, matchingBidRequest);\n\n // add necessary data information for analytics adapters / floor providers would possibly need\n addFloorDataToBid(floorData, floorInfo, bid, adjustedCpm);\n\n // now do the compare!\n if (shouldFloorBid(floorData, floorInfo, bid)) {\n // bid fails floor -> throw it out\n reject(REJECTION_REASON.FLOOR_NOT_MET);\n logWarn(`${MODULE_NAME}: ${bid.bidderCode}'s Bid Response for ${adUnitCode} was rejected due to floor not met (adjusted cpm: ${bid?.floorData?.cpmAfterAdjustments}, floor: ${floorInfo?.matchingFloor})`, bid);\n return;\n }\n return fn.call(this, adUnitCode, bid, reject);\n});\n\nconfig.getConfig('floors', config => handleSetFloorsConfig(config.floors));\n\nfunction tryGetFloor(bidRequest, {currency = config.getConfig('currency.adServerCurrency') || 'USD', mediaType = '*', size = '*'}: GetFloorParams, fn) {\n if (typeof bidRequest.getFloor === 'function') {\n let floor;\n try {\n floor = bidRequest.getFloor({\n currency,\n mediaType,\n size\n }) || {};\n } catch (e) {\n logWarn('Cannot compute floor for bid', bidRequest);\n return;\n }\n floor.floor = parseFloat(floor.floor);\n if (floor.currency != null && floor.floor && !isNaN(floor.floor)) {\n fn(floor.floor, floor.currency);\n }\n }\n}\n\n/**\n * Sets bidfloor and bidfloorcur for ORTB imp objects\n */\nexport function setOrtbImpBidFloor(imp, bidRequest, context) {\n tryGetFloor(bidRequest, {\n currency: context.currency,\n mediaType: context.mediaType || '*',\n size: '*'\n }, (bidfloor, bidfloorcur) => {\n Object.assign(imp, {\n bidfloor,\n bidfloorcur\n });\n })\n}\n\n/**\n * Set per-mediatype and per-format bidfloor\n */\nexport function setGranularBidfloors(imp, bidRequest, context) {\n function setIfDifferent(bidfloor, bidfloorcur) {\n if (bidfloor !== imp.bidfloor || bidfloorcur !== imp.bidfloorcur) {\n deepSetValue(this, 'ext.bidfloor', bidfloor);\n deepSetValue(this, 'ext.bidfloorcur', bidfloorcur);\n }\n }\n\n Object.values(ALL_MEDIATYPES)\n .filter(mediaType => imp[mediaType] != null)\n .forEach(mediaType => {\n tryGetFloor(bidRequest, {\n currency: imp.bidfloorcur || context?.currency,\n mediaType\n }, setIfDifferent.bind(imp[mediaType]))\n });\n (imp[BANNER]?.format || [])\n .filter(({w, h}) => w != null && h != null)\n .forEach(format => {\n tryGetFloor(bidRequest, {\n currency: imp.bidfloorcur || context?.currency,\n mediaType: BANNER,\n size: [format.w, format.h]\n }, setIfDifferent.bind(format))\n })\n}\n\nexport function setImpExtPrebidFloors(imp, bidRequest, context) {\n // logic below relates to https://github.com/prebid/Prebid.js/issues/8749 and does the following:\n // 1. check client-side floors (ref bidfloor/bidfloorcur & ortb2Imp floorMin/floorMinCur (if present))\n // 2. set pbs req wide floorMinCur to the first floor currency found when iterating over imp's\n // (if currency conversion logic present, convert all imp floor values to this currency)\n // 3. compare/store ref to lowest floorMin value as each imp is iterated over\n // 4. set req wide floorMin and floorMinCur values for pbs after iterations are done\n\n if (imp.bidfloor != null) {\n let {floorMinCur, floorMin} = context.reqContext.floorMin || {};\n\n if (floorMinCur == null) { floorMinCur = imp.bidfloorcur }\n const ortb2ImpFloorCur = imp.ext?.prebid?.floors?.floorMinCur || imp.ext?.prebid?.floorMinCur || floorMinCur;\n const ortb2ImpFloorMin = imp.ext?.prebid?.floors?.floorMin || imp.ext?.prebid?.floorMin;\n const convertedFloorMinValue = convertCurrency(imp.bidfloor, imp.bidfloorcur, floorMinCur);\n const convertedOrtb2ImpFloorMinValue = ortb2ImpFloorMin && ortb2ImpFloorCur ? convertCurrency(ortb2ImpFloorMin, ortb2ImpFloorCur, floorMinCur) : false;\n\n const lowestImpFloorMin = convertedOrtb2ImpFloorMinValue && convertedOrtb2ImpFloorMinValue < convertedFloorMinValue\n ? convertedOrtb2ImpFloorMinValue\n : convertedFloorMinValue;\n\n deepSetValue(imp, 'ext.prebid.floors.floorMin', lowestImpFloorMin);\n if (floorMin == null || floorMin > lowestImpFloorMin) { floorMin = lowestImpFloorMin }\n context.reqContext.floorMin = {floorMin, floorMinCur};\n }\n}\n\n/**\n * PBS specific extension: set ext.prebid.floors.enabled = false if floors are processed client-side\n */\nexport function setOrtbExtPrebidFloors(ortbRequest, bidderRequest, context) {\n if (addedFloorsHook) {\n deepSetValue(ortbRequest, 'ext.prebid.floors.enabled', ortbRequest.ext?.prebid?.floors?.enabled || false);\n }\n if (context?.floorMin) {\n mergeDeep(ortbRequest, {ext: {prebid: {floors: context.floorMin}}})\n }\n}\n\nregisterOrtbProcessor({type: IMP, name: 'bidfloor', fn: setOrtbImpBidFloor});\n// granular floors should be set after both \"normal\" bidfloors and mediaypes\nregisterOrtbProcessor({type: IMP, name: 'extBidfloor', fn: setGranularBidfloors, priority: -10})\nregisterOrtbProcessor({type: IMP, name: 'extPrebidFloors', fn: setImpExtPrebidFloors, dialects: [PBS], priority: -1});\nregisterOrtbProcessor({type: REQUEST, name: 'extPrebidFloors', fn: setOrtbExtPrebidFloors, dialects: [PBS]});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"priceFloors.js","names":["registerModule","__r0","debugTurnedOn","deepAccess","deepClone","deepSetValue","getParameterByName","isNumber","logError","logInfo","logWarn","mergeDeep","parseGPTSingleSizeArray","parseUrl","pick","deepEqual","generateUUID","getGlobal","config","ajaxBuilder","events","EVENTS","REJECTION_REASON","getHook","getRefererInfo","bidderSettings","auctionManager","IMP","PBS","registerOrtbProcessor","REQUEST","timedAuctionHook","timedBidResponseHook","adjustCpm","getGptSlotInfoForAdUnitCode","convertCurrency","timeoutQueue","ALL_MEDIATYPES","BANNER","FLOOR_SKIPPED_REASON","NOT_FOUND","RANDOM","MODULE_NAME","ajax","SYN_FIELD","Symbol","allowedFields","fetching","addedFloorsHook","_floorsConfig","_delayedAuctions","_floorDataForAuction","roundUp","number","precision","Math","ceil","parseFloat","pow","toFixed","getHostname","domain","topmostLocation","noDecodeWholeURL","hostname","getGptSlotFromAdUnit","adUnitId","index","arguments","length","undefined","adUnit","getAdUnit","isGam","ortb2Imp","ext","data","adserver","adslot","getAdUnitCode","request","response","adUnitCode","code","fieldMatchingFunctions","size","bidRequest","bidResponse","mediaType","gptSlot","enumeratePossibleFieldValues","floorFields","bidObject","responseObject","reduce","accum","field","exactMatch","push","toLowerCase","getFirstMatchingFloor","floorData","fieldValues","matchingFloor","matchingInput","map","join","previousMatch","allPossibleMatches","generatePossibleEnumerations","matchingRule","find","hashValue","values","hasOwnProperty","matchingData","floorMin","floorRuleValue","meta","defaultRule","max","arrayOfFields","delimiter","currentVal","ret","obj","obj1","sort","left","right","split","getBiddersCpmAdjustment","inputCpm","bid","cpm","calculateAdjustedFloor","oldFloor","newFloor","getMediaTypesSizes","banner","video","native","updateRequestParamsFromContext","requestParams","mediaTypesOnBid","Object","keys","mediaTypes","indexOf","getFloor","currency","auctionId","skipped","floorInfo","err","bidder","enforcement","bidAdjustment","inverseFunction","get","definedParams","fromEntries","entries","filter","_ref","key","val","includes","cpmAdjustment","floor","getFloorsDataForAuction","auctionFloorData","schema","normalizeRulesForAuction","fields","prependAdUnitCode","unshift","rulesHash","oldKey","newKey","getFloorDataFromAdUnits","adUnits","schemaAu","au","floors","assign","isFloorsDataValid","location","newRules","getNoFloorSignalBidersArray","noFloorSignalBidders","updateAdUnitsForAuction","noFloorSignalBiddersArray","forEach","bids","isNoFloorSignaled","some","bidderName","noFloorSignaled","skipRate","skippedReason","modelVersion","modelWeight","modelTimestamp","floorProvider","fetchStatus","pickRandomModel","modelGroups","weightSum","random","i","createFloorsDataForAuction","resolvedFloorsData","rest","modelWeightSum","useAdUnitData","auctionSkipRate","isSkipped","continueAuction","hookConfig","hasExited","reqBidsConfigObj","nextFn","apply","context","validateSchemaFields","Array","isArray","every","isValidRule","numFields","validateRules","floorsData","filteredRules","normalizeDefault","model","default","fill","modelIsValid","floorsSchemaValidation","floorsSchemaVersion","parseFloorData","requestBidsHook","fn","timer","auctionDelay","submit","handleFetchResponse","fetchResponse","floorResponse","JSON","parse","ex","fetchData","resume","handleFetchError","status","generateAndHandleFetch","floorEndpoint","url","requestMethod","method","success","error","addFieldOverrides","overrides","override","handleSetFloorsConfig","enabled","endpoint","isNaN","enforceJS","enforcePBS","floorDeals","additionalSchemaFields","on","AUCTION_END","args","setTimeout","before","addBidResponseHook","getHooks","hook","remove","addFloorDataToBid","adjustedCpm","floorValue","floorRule","floorCurrency","cpmAfterAdjustments","enforcements","matchedFields","matchedValue","shouldFloorBid","shouldFloorDeal","dealId","bidBelowFloor","reject","call","matchingBidRequest","getBidRequest","width","height","toUpperCase","bidResponseCurrency","originalCurrency","originalCpm","FLOOR_NOT_MET","bidderCode","getConfig","tryGetFloor","_ref2","e","setOrtbImpBidFloor","imp","bidfloor","bidfloorcur","setGranularBidfloors","setIfDifferent","bind","format","_ref3","w","h","setImpExtPrebidFloors","floorMinCur","reqContext","ortb2ImpFloorCur","prebid","ortb2ImpFloorMin","convertedFloorMinValue","convertedOrtb2ImpFloorMinValue","lowestImpFloorMin","setOrtbExtPrebidFloors","ortbRequest","bidderRequest","type","name","priority","dialects"],"sourceRoot":"../../..","sources":["modules/priceFloors.ts"],"sourcesContent":["import {\n debugTurnedOn,\n deepAccess,\n deepClone,\n deepSetValue,\n getParameterByName,\n isNumber,\n logError,\n logInfo,\n logWarn,\n mergeDeep,\n parseGPTSingleSizeArray,\n parseUrl,\n pick,\n deepEqual,\n generateUUID\n} from '../src/utils.js';\nimport {getGlobal} from '../src/prebidGlobal.js';\nimport {config} from '../src/config.js';\nimport {ajaxBuilder} from '../src/ajax.js';\nimport * as events from '../src/events.js';\nimport { EVENTS, REJECTION_REASON } from '../src/constants.js';\nimport {getHook} from '../src/hook.js';\nimport {getRefererInfo} from '../src/refererDetection.js';\nimport {bidderSettings} from '../src/bidderSettings.js';\nimport {auctionManager} from '../src/auctionManager.js';\nimport {IMP, PBS, registerOrtbProcessor, REQUEST} from '../src/pbjsORTB.js';\nimport {timedAuctionHook, timedBidResponseHook} from '../src/utils/perfMetrics.js';\nimport {adjustCpm} from '../src/utils/cpm.js';\nimport {getGptSlotInfoForAdUnitCode} from '../libraries/gptUtils/gptUtils.js';\nimport {convertCurrency} from '../libraries/currencyUtils/currency.js';\nimport { timeoutQueue } from '../libraries/timeoutQueue/timeoutQueue.js';\nimport {ALL_MEDIATYPES, BANNER, type MediaType} from '../src/mediaTypes.js';\nimport type {Currency, Size, BidderCode} from \"../src/types/common.d.ts\";\nimport type {BidRequest} from '../src/adapterManager.ts';\nimport type {Bid} from \"../src/bidfactory.ts\";\n\nexport const FLOOR_SKIPPED_REASON = {\n NOT_FOUND: 'not_found',\n RANDOM: 'random'\n};\n\n/**\n * @summary This Module is intended to provide users with the ability to dynamically set and enforce price floors on a per auction basis.\n */\nconst MODULE_NAME = 'Price Floors';\n\n/**\n * @summary Instantiate Ajax so we control the timeout\n */\nconst ajax = ajaxBuilder(10000);\n\n// eslint-disable-next-line symbol-description\nconst SYN_FIELD = Symbol();\n\n/**\n * @summary Allowed fields for rules to have\n */\nexport const allowedFields = [SYN_FIELD, 'gptSlot', 'adUnitCode', 'size', 'domain', 'mediaType'] as const;\ntype DefaultField = { [K in (typeof allowedFields)[number]]: K extends string ? K : never}[(typeof allowedFields)[number]];\n\n/**\n * @summary This is a flag to indicate if a AJAX call is processing for a floors request\n */\nlet fetching = false;\n\n/**\n * @summary so we only register for our hooks once\n */\nlet addedFloorsHook = false;\n\n/**\n * @summary The config to be used. Can be updated via: setConfig or a real time fetch\n */\nlet _floorsConfig: any = {};\n\n/**\n * @summary If a auction is to be delayed by an ongoing fetch we hold it here until it can be resumed\n */\nconst _delayedAuctions = timeoutQueue();\n\n/**\n * @summary Each auction can have differing floors data depending on execution time or per adunit setup\n * So we will be saving each auction offset by it's auctionId in order to make sure data is not changed\n * Once the auction commences\n */\nexport let _floorDataForAuction = {};\n\n/**\n * @summary Simple function to round up to a certain decimal degree\n */\nfunction roundUp(number, precision) {\n return Math.ceil((parseFloat(number) * Math.pow(10, precision) as any).toFixed(1)) / Math.pow(10, precision);\n}\n\nconst getHostname = (() => {\n let domain;\n return function() {\n if (domain == null) {\n domain = parseUrl(getRefererInfo().topmostLocation, {noDecodeWholeURL: true}).hostname;\n }\n return domain;\n }\n})();\n\n// First look into bidRequest!\nfunction getGptSlotFromAdUnit(adUnitId, {index = auctionManager.index} = {}) {\n const adUnit = index.getAdUnit({adUnitId});\n const isGam = deepAccess(adUnit, 'ortb2Imp.ext.data.adserver.name') === 'gam';\n return isGam && adUnit.ortb2Imp.ext.data.adserver.adslot;\n}\n\nfunction getAdUnitCode(request, response, {index = auctionManager.index} = {}) {\n return request?.adUnitCode || index.getAdUnit(response).code;\n}\n\n/**\n * @summary floor field types with their matching functions to resolve the actual matched value\n */\nexport const fieldMatchingFunctions = {\n [SYN_FIELD]: () => '*',\n 'size': (bidRequest, bidResponse) => parseGPTSingleSizeArray(bidResponse.size) || '*',\n 'mediaType': (bidRequest, bidResponse) => bidResponse.mediaType || 'banner',\n 'gptSlot': (bidRequest, bidResponse) => getGptSlotFromAdUnit((bidRequest || bidResponse).adUnitId) || getGptSlotInfoForAdUnitCode(getAdUnitCode(bidRequest, bidResponse)).gptSlot,\n 'domain': getHostname,\n 'adUnitCode': (bidRequest, bidResponse) => getAdUnitCode(bidRequest, bidResponse)\n} as const;\n\n/**\n * @summary Based on the fields array in floors data, it enumerates all possible matches based on exact match coupled with\n * a \"*\" catch-all match\n * Returns array of Tuple [exact match, catch all] for each field in rules file\n */\nfunction enumeratePossibleFieldValues(floorFields, bidObject, responseObject) {\n if (!floorFields.length) return [];\n // generate combination of all exact matches and catch all for each field type\n return floorFields.reduce((accum, field) => {\n const exactMatch = fieldMatchingFunctions[field](bidObject, responseObject) || '*';\n // storing exact matches as lowerCase since we want to compare case insensitively\n accum.push(exactMatch === '*' ? ['*'] : [exactMatch.toLowerCase(), '*']);\n return accum;\n }, []);\n}\n\n/**\n * @summary get's the first matching floor based on context provided.\n * Generates all possible rule matches and picks the first matching one.\n */\nexport function getFirstMatchingFloor(floorData, bidObject, responseObject = {}) {\n const fieldValues = enumeratePossibleFieldValues(deepAccess(floorData, 'schema.fields') || [], bidObject, responseObject);\n if (!fieldValues.length) {\n return {matchingFloor: undefined}\n }\n\n // look to see if a request for this context was made already\n const matchingInput = fieldValues.map(field => field[0]).join('-');\n // if we already have gotten the matching rule from this matching input then use it! No need to look again\n const previousMatch = deepAccess(floorData, `matchingInputs.${matchingInput}`);\n if (previousMatch) {\n return {...previousMatch};\n }\n const allPossibleMatches = generatePossibleEnumerations(fieldValues, deepAccess(floorData, 'schema.delimiter') || '|');\n const matchingRule = ((allPossibleMatches) || []).find(hashValue => floorData.values.hasOwnProperty(hashValue));\n\n const matchingData: any = {\n floorMin: floorData.floorMin || 0,\n floorRuleValue: floorData.values[matchingRule],\n matchingData: allPossibleMatches[0], // the first possible match is an \"exact\" so contains all data relevant for anlaytics adapters\n matchingRule: matchingRule === floorData.meta?.defaultRule ? undefined : matchingRule\n };\n // use adUnit floorMin as priority!\n const floorMin = deepAccess(bidObject, 'ortb2Imp.ext.prebid.floors.floorMin');\n if (typeof floorMin === 'number') {\n matchingData.floorMin = floorMin;\n }\n matchingData.matchingFloor = Math.max(matchingData.floorMin, matchingData.floorRuleValue);\n // save for later lookup if needed\n deepSetValue(floorData, `matchingInputs.${matchingInput}`, {...matchingData});\n return matchingData;\n}\n\n/**\n * @summary Generates all possible rule hash's based on input array of array's\n * The generated list is of all possible key matches based on fields input\n * The list is sorted by least amount of * in rule to most with left most fields taking precedence\n */\nfunction generatePossibleEnumerations(arrayOfFields, delimiter) {\n return arrayOfFields.reduce((accum, currentVal) => {\n const ret = [];\n accum.map(obj => {\n currentVal.map(obj1 => {\n ret.push(obj + delimiter + obj1)\n });\n });\n return ret;\n }).sort((left, right) => left.split('*').length - right.split('*').length);\n}\n\n/**\n * @summary If a the input bidder has a registered cpmadjustment it returns the input CPM after being adjusted\n */\nexport function getBiddersCpmAdjustment(inputCpm, bid, bidRequest) {\n return parseFloat(adjustCpm(inputCpm, {...bid, cpm: inputCpm}, bidRequest));\n}\n\n/**\n * @summary This function takes the original floor and the adjusted floor in order to determine the bidders actual floor\n * With js rounding errors with decimal division we utilize similar method as shown in cpmBucketManager.js\n */\nexport function calculateAdjustedFloor(oldFloor, newFloor) {\n const pow = Math.pow(10, 10);\n return ((oldFloor * pow) / (newFloor * pow) * (oldFloor * pow)) / pow;\n}\n\n/**\n * @summary gets the prebid set sizes depending on the input mediaType\n */\nconst getMediaTypesSizes = {\n banner: (bid) => deepAccess(bid, 'mediaTypes.banner.sizes') || [],\n video: (bid) => deepAccess(bid, 'mediaTypes.video.playerSize') || [],\n native: (bid) => deepAccess(bid, 'mediaTypes.native.image.sizes') ? [deepAccess(bid, 'mediaTypes.native.image.sizes')] : []\n}\n\n/**\n * @summary for getFloor only, before selecting a rule, if a bidAdapter asks for * in their getFloor params\n * Then we may be able to get a better rule than the * ones depending on context of the adUnit\n */\nfunction updateRequestParamsFromContext(bidRequest, requestParams) {\n // if adapter asks for *'s then we can do some logic to infer if we can get a more specific rule based on context of bid\n const mediaTypesOnBid = Object.keys(bidRequest.mediaTypes || {});\n // if there is only one mediaType then we can just use it\n if (requestParams.mediaType === '*' && mediaTypesOnBid.length === 1) {\n requestParams.mediaType = mediaTypesOnBid[0];\n }\n // if they asked for * size, but for the given mediaType there is only one size, we can just use it\n if (requestParams.size === '*' && mediaTypesOnBid.indexOf(requestParams.mediaType) !== -1 && getMediaTypesSizes[requestParams.mediaType] && getMediaTypesSizes[requestParams.mediaType](bidRequest).length === 1) {\n requestParams.size = getMediaTypesSizes[requestParams.mediaType](bidRequest)[0];\n }\n return requestParams;\n}\n\ntype GetFloorParams = {\n currency?: Currency | '*';\n mediaType?: MediaType | '*';\n size?: Size | '*';\n}\n\ndeclare module '../src/adapterManager' {\n interface BaseBidRequest {\n getFloor: typeof getFloor;\n }\n}\n\ndeclare module '../src/bidderSettings' {\n interface BidderSettings<B extends BidderCode> {\n /**\n * Inverse of bidCpmAdjustment\n */\n inverseBidAdjustment?: (floor: number, bidRequest: BidRequest<B>, params: {[K in keyof GetFloorParams]?: Exclude<GetFloorParams[K], '*'>}) => number;\n }\n}\n\n/**\n * @summary This is the function which will return a single floor based on the input requests\n * and matching it to a rule for the current auction\n */\nexport function getFloor(requestParams: GetFloorParams = {currency: 'USD', mediaType: '*', size: '*'}) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const bidRequest = this;\n const floorData = _floorDataForAuction[bidRequest.auctionId];\n if (!floorData || floorData.skipped) return {};\n\n requestParams = updateRequestParamsFromContext(bidRequest, requestParams);\n const floorInfo = getFirstMatchingFloor(floorData.data, {...bidRequest}, {mediaType: requestParams.mediaType, size: requestParams.size});\n let currency = requestParams.currency || floorData.data.currency;\n\n // if bidder asked for a currency which is not what floors are set in convert\n if (floorInfo.matchingFloor && currency !== floorData.data.currency) {\n try {\n floorInfo.matchingFloor = getGlobal().convertCurrency(floorInfo.matchingFloor, floorData.data.currency, currency);\n } catch (err) {\n logWarn(`${MODULE_NAME}: Unable to get currency conversion for getFloor for bidder ${bidRequest.bidder}. You must have currency module enabled with defaultRates in your currency config`);\n // since we were unable to convert to the bidders requested currency, we send back just the actual floors currency to them\n currency = floorData.data.currency;\n }\n }\n\n // if cpmAdjustment flag is true and we have a valid floor then run the adjustment on it\n if (floorData.enforcement.bidAdjustment && floorInfo.matchingFloor) {\n // pub provided inverse function takes precedence, otherwise do old adjustment stuff\n const inverseFunction = bidderSettings.get(bidRequest.bidder, 'inverseBidAdjustment');\n if (inverseFunction) {\n const definedParams = Object.fromEntries(\n Object.entries(requestParams).filter(([key, val]) => val !== '*' && ['mediaType', 'size'].includes(key))\n );\n floorInfo.matchingFloor = inverseFunction(floorInfo.matchingFloor, bidRequest, definedParams);\n } else {\n const cpmAdjustment = getBiddersCpmAdjustment(floorInfo.matchingFloor, null, bidRequest);\n floorInfo.matchingFloor = cpmAdjustment ? calculateAdjustedFloor(floorInfo.matchingFloor, cpmAdjustment) : floorInfo.matchingFloor;\n }\n }\n\n if (floorInfo.floorRuleValue === null) {\n return null;\n }\n\n if (floorInfo.matchingFloor) {\n return {\n floor: roundUp(floorInfo.matchingFloor, 4),\n currency};\n }\n return {};\n}\n\n/**\n * @summary Takes a floorsData object and converts it into a hash map with appropriate keys\n */\nexport function getFloorsDataForAuction(floorData, adUnitCode?) {\n const auctionFloorData = deepClone(floorData);\n auctionFloorData.schema.delimiter = floorData.schema.delimiter || '|';\n auctionFloorData.values = normalizeRulesForAuction(auctionFloorData, adUnitCode);\n // default the currency to USD if not passed in\n auctionFloorData.currency = auctionFloorData.currency || 'USD';\n return auctionFloorData;\n}\n\n/**\n * @summary if adUnitCode needs to be added to the offset then it will add it else just return the values\n */\nfunction normalizeRulesForAuction(floorData, adUnitCode) {\n const fields = floorData.schema.fields;\n const delimiter = floorData.schema.delimiter\n\n // if we are building the floor data form an ad unit, we need to append adUnit code as to not cause collisions\n const prependAdUnitCode = adUnitCode && fields.indexOf('adUnitCode') === -1 && fields.unshift('adUnitCode');\n return Object.keys(floorData.values).reduce((rulesHash, oldKey) => {\n const newKey = prependAdUnitCode ? `${adUnitCode}${delimiter}${oldKey}` : oldKey\n // we store the rule keys as lower case for case insensitive compare\n rulesHash[newKey.toLowerCase()] = floorData.values[oldKey];\n return rulesHash;\n }, {});\n}\n\n/**\n * @summary This function will take the adUnits and generate a floor data object to be used during the auction\n * Only called if no set config or fetch level data has returned\n */\nexport function getFloorDataFromAdUnits(adUnits) {\n const schemaAu = adUnits.find(au => au.floors?.schema != null);\n return adUnits.reduce((accum, adUnit) => {\n if (adUnit.floors?.schema != null && !deepEqual(adUnit.floors.schema, schemaAu?.floors?.schema)) {\n logError(`${MODULE_NAME}: adUnit '${adUnit.code}' declares a different schema from one previously declared by adUnit '${schemaAu.code}'. Floor config for '${adUnit.code}' will be ignored.`)\n return accum;\n }\n const floors = Object.assign({}, schemaAu?.floors, {values: undefined}, adUnit.floors)\n if (isFloorsDataValid(floors)) {\n // if values already exist we want to not overwrite them\n if (!accum.values) {\n accum = getFloorsDataForAuction(floors, adUnit.code);\n accum.location = 'adUnit';\n } else {\n const newRules = getFloorsDataForAuction(floors, adUnit.code).values;\n // copy over the new rules into our values object\n Object.assign(accum.values, newRules);\n }\n } else if (adUnit.floors != null) {\n logWarn(`adUnit '${adUnit.code}' provides an invalid \\`floor\\` definition, it will be ignored for floor calculations`, adUnit);\n }\n return accum;\n }, {});\n}\n\nfunction getNoFloorSignalBidersArray(floorData) {\n const { data, enforcement } = floorData\n // The data.noFloorSignalBidders higher priority then the enforcment\n if (data?.noFloorSignalBidders?.length > 0) {\n return data.noFloorSignalBidders\n } else if (enforcement?.noFloorSignalBidders?.length > 0) {\n return enforcement.noFloorSignalBidders\n }\n return []\n}\n\n/**\n * @summary This function takes the adUnits for the auction and update them accordingly as well as returns the rules hashmap for the auction\n */\nexport function updateAdUnitsForAuction(adUnits, floorData, auctionId) {\n const noFloorSignalBiddersArray = getNoFloorSignalBidersArray(floorData)\n\n adUnits.forEach((adUnit) => {\n adUnit.bids.forEach(bid => {\n // check if the bidder is in the no signal list\n const isNoFloorSignaled = noFloorSignalBiddersArray.some(bidderName => bidderName === bid.bidder)\n if (floorData.skipped || isNoFloorSignaled) {\n isNoFloorSignaled && logInfo(`noFloorSignal to ${bid.bidder}`)\n delete bid.getFloor;\n } else {\n bid.getFloor = getFloor;\n }\n // information for bid and analytics adapters\n bid.auctionId = auctionId;\n bid.floorData = {\n noFloorSignaled: isNoFloorSignaled,\n skipped: floorData.skipped,\n skipRate: deepAccess(floorData, 'data.skipRate') ?? floorData.skipRate,\n skippedReason: floorData.skippedReason,\n floorMin: floorData.floorMin,\n modelVersion: deepAccess(floorData, 'data.modelVersion'),\n modelWeight: deepAccess(floorData, 'data.modelWeight'),\n modelTimestamp: deepAccess(floorData, 'data.modelTimestamp'),\n location: deepAccess(floorData, 'data.location', 'noData'),\n floorProvider: floorData.floorProvider,\n fetchStatus: _floorsConfig.fetchStatus\n };\n });\n });\n}\n\nexport function pickRandomModel(modelGroups, weightSum) {\n // we loop through the models subtracting the current model weight from our random number\n // once we are at or below zero, we return the associated model\n let random = Math.floor(Math.random() * weightSum + 1)\n for (let i = 0; i < modelGroups.length; i++) {\n random -= modelGroups[i].modelWeight;\n if (random <= 0) {\n return modelGroups[i];\n }\n }\n};\n\n/**\n * @summary Updates the adUnits accordingly and returns the necessary floorsData for the current auction\n */\nexport function createFloorsDataForAuction(adUnits, auctionId) {\n const resolvedFloorsData = deepClone(_floorsConfig);\n // if using schema 2 pick a model here:\n if (deepAccess(resolvedFloorsData, 'data.floorsSchemaVersion') === 2) {\n // merge the models specific stuff into the top level data settings (now it looks like floorsSchemaVersion 1!)\n const { modelGroups, ...rest } = resolvedFloorsData.data;\n resolvedFloorsData.data = Object.assign(rest, pickRandomModel(modelGroups, rest.modelWeightSum));\n }\n\n // if we do not have a floors data set, we will try to use data set on adUnits\n const useAdUnitData = Object.keys(deepAccess(resolvedFloorsData, 'data.values') || {}).length === 0;\n if (useAdUnitData) {\n resolvedFloorsData.data = getFloorDataFromAdUnits(adUnits);\n } else {\n resolvedFloorsData.data = getFloorsDataForAuction(resolvedFloorsData.data);\n }\n // if we still do not have a valid floor data then floors is not on for this auction, so skip\n if (Object.keys(deepAccess(resolvedFloorsData, 'data.values') || {}).length === 0) {\n resolvedFloorsData.skipped = true;\n resolvedFloorsData.skippedReason = FLOOR_SKIPPED_REASON.NOT_FOUND\n } else {\n // determine the skip rate now\n const auctionSkipRate = getParameterByName('pbjs_skipRate') || (deepAccess(resolvedFloorsData, 'data.skipRate') ?? resolvedFloorsData.skipRate);\n const isSkipped = Math.random() * 100 < parseFloat(auctionSkipRate);\n resolvedFloorsData.skipped = isSkipped;\n if (isSkipped) resolvedFloorsData.skippedReason = FLOOR_SKIPPED_REASON.RANDOM\n }\n // copy FloorMin to floorData.data\n if (resolvedFloorsData.hasOwnProperty('floorMin')) resolvedFloorsData.data.floorMin = resolvedFloorsData.floorMin;\n // add floorData to bids\n updateAdUnitsForAuction(adUnits, resolvedFloorsData, auctionId);\n return resolvedFloorsData;\n}\n\n/**\n * @summary This is the function which will be called to exit our module and continue the auction.\n */\nexport function continueAuction(hookConfig) {\n if (!hookConfig.hasExited) {\n // We need to know the auctionId at this time. So we will use the passed in one or generate and set it ourselves\n hookConfig.reqBidsConfigObj.auctionId = hookConfig.reqBidsConfigObj.auctionId || generateUUID();\n // now we do what we need to with adUnits and save the data object to be used for getFloor and enforcement calls\n _floorDataForAuction[hookConfig.reqBidsConfigObj.auctionId] = createFloorsDataForAuction(hookConfig.reqBidsConfigObj.adUnits || getGlobal().adUnits, hookConfig.reqBidsConfigObj.auctionId);\n hookConfig.nextFn.apply(hookConfig.context, [hookConfig.reqBidsConfigObj]);\n hookConfig.hasExited = true;\n }\n}\n\nfunction validateSchemaFields(fields) {\n if (Array.isArray(fields) && fields.length > 0) {\n if (fields.every(field => allowedFields.includes(field))) {\n return true;\n } else {\n logError(`${MODULE_NAME}: Fields received do not match allowed fields`);\n }\n }\n return false;\n}\n\nfunction isValidRule(key, floor, numFields, delimiter) {\n if (typeof key !== 'string' || key.split(delimiter).length !== numFields) {\n return false;\n }\n return typeof floor === 'number' || floor === null;\n}\n\nfunction validateRules(floorsData, numFields, delimiter) {\n if (typeof floorsData.values !== 'object') {\n return false;\n }\n // if an invalid rule exists we remove it\n floorsData.values = Object.keys(floorsData.values).reduce((filteredRules, key) => {\n if (isValidRule(key, floorsData.values[key], numFields, delimiter)) {\n filteredRules[key] = floorsData.values[key];\n }\n return filteredRules\n }, {});\n // rules is only valid if at least one rule remains\n return Object.keys(floorsData.values).length > 0;\n}\n\nexport function normalizeDefault(model) {\n if (isNumber(model.default)) {\n let defaultRule = '*';\n const numFields = (model.schema?.fields || []).length;\n if (!numFields) {\n deepSetValue(model, 'schema.fields', [SYN_FIELD]);\n } else {\n defaultRule = Array(numFields).fill('*').join(model.schema?.delimiter || '|');\n }\n model.values = model.values || {};\n if (model.values[defaultRule] == null) {\n model.values[defaultRule] = model.default;\n model.meta = {defaultRule};\n }\n }\n return model;\n}\n\nfunction modelIsValid(model) {\n model = normalizeDefault(model);\n // schema.fields has only allowed attributes\n if (!validateSchemaFields(deepAccess(model, 'schema.fields'))) {\n return false;\n }\n return validateRules(model, model.schema.fields.length, model.schema.delimiter || '|')\n}\n\n/**\n * @summary Mapping of floor schema version to it's corresponding validation\n */\nconst floorsSchemaValidation = {\n 1: data => modelIsValid(data),\n 2: data => {\n // model groups should be an array with at least one element\n if (!Array.isArray(data.modelGroups) || data.modelGroups.length === 0) {\n return false;\n }\n // every model should have valid schema, as well as an accompanying modelWeight\n data.modelWeightSum = 0;\n return data.modelGroups.every(model => {\n if (typeof model.modelWeight === 'number' && modelIsValid(model)) {\n data.modelWeightSum += model.modelWeight;\n return true;\n }\n return false;\n });\n }\n};\n\n/**\n * @summary Fields array should have at least one entry and all should match allowed fields\n * Each rule in the values array should have a 'key' and 'floor' param\n * And each 'key' should have the correct number of 'fields' after splitting\n * on the delim. If rule does not match remove it. return if still at least 1 rule\n */\nexport function isFloorsDataValid(floorsData) {\n if (typeof floorsData !== 'object') {\n return false;\n }\n floorsData.floorsSchemaVersion = floorsData.floorsSchemaVersion || 1;\n if (typeof floorsSchemaValidation[floorsData.floorsSchemaVersion] !== 'function') {\n logError(`${MODULE_NAME}: Unknown floorsSchemaVersion: `, floorsData.floorsSchemaVersion);\n return false;\n }\n return floorsSchemaValidation[floorsData.floorsSchemaVersion](floorsData);\n}\n\n/**\n * @summary This function updates the global Floors Data field based on the new one passed in if it is valid\n */\nexport function parseFloorData(floorsData, location) {\n if (floorsData && typeof floorsData === 'object' && isFloorsDataValid(floorsData)) {\n logInfo(`${MODULE_NAME}: A ${location} set the auction floor data set to `, floorsData);\n return {\n ...floorsData,\n location\n };\n }\n logError(`${MODULE_NAME}: The floors data did not contain correct values`, floorsData);\n}\n\n/**\n *\n * @param {Object} reqBidsConfigObj required; This is the same param that's used in pbjs.requestBids.\n * @param {function} fn required; The next function in the chain, used by hook.ts\n */\nexport const requestBidsHook = timedAuctionHook('priceFloors', function requestBidsHook(fn, reqBidsConfigObj) {\n // preserves all module related variables for the current auction instance (used primiarily for concurrent auctions)\n const hookConfig = {\n reqBidsConfigObj,\n context: this,\n nextFn: fn,\n hasExited: false,\n timer: null\n };\n\n // If auction delay > 0 AND we are fetching -> Then wait until it finishes\n if (_floorsConfig.auctionDelay > 0 && fetching) {\n _delayedAuctions.submit(_floorsConfig.auctionDelay, () => continueAuction(hookConfig), () => {\n logWarn(`${MODULE_NAME}: Fetch attempt did not return in time for auction`);\n _floorsConfig.fetchStatus = 'timeout';\n continueAuction(hookConfig);\n });\n } else {\n continueAuction(hookConfig);\n }\n});\n\n/**\n * This function handles the ajax response which comes from the user set URL to fetch floors data from\n * @param {object} fetchResponse The floors data response which came back from the url configured in config.floors\n */\nexport function handleFetchResponse(fetchResponse) {\n fetching = false;\n _floorsConfig.fetchStatus = 'success';\n let floorResponse;\n try {\n floorResponse = JSON.parse(fetchResponse);\n } catch (ex) {\n floorResponse = fetchResponse;\n }\n // Update the global floors object according to the fetched data\n const fetchData = parseFloorData(floorResponse, 'fetch');\n if (fetchData) {\n // set .data to it\n _floorsConfig.data = fetchData;\n // set skipRate override if necessary\n _floorsConfig.skipRate = isNumber(fetchData.skipRate) ? fetchData.skipRate : _floorsConfig.skipRate;\n _floorsConfig.floorProvider = fetchData.floorProvider || _floorsConfig.floorProvider;\n }\n\n // if any auctions are waiting for fetch to finish, we need to continue them!\n _delayedAuctions.resume();\n}\n\nfunction handleFetchError(status) {\n fetching = false;\n _floorsConfig.fetchStatus = 'error';\n logError(`${MODULE_NAME}: Fetch errored with: `, status);\n\n // if any auctions are waiting for fetch to finish, we need to continue them!\n _delayedAuctions.resume();\n}\n\n/**\n * This function handles sending and receiving the AJAX call for a floors fetch\n * @param {object} floorEndpoint the floors endpoint coming from setConfig\n */\nexport function generateAndHandleFetch(floorEndpoint) {\n // if a fetch url is defined and one is not already occurring, fire it!\n if (floorEndpoint.url && !fetching) {\n // default to GET and we only support GET for now\n const requestMethod = floorEndpoint.method || 'GET';\n if (requestMethod !== 'GET') {\n logError(`${MODULE_NAME}: 'GET' is the only request method supported at this time!`);\n } else {\n ajax(floorEndpoint.url, { success: handleFetchResponse, error: handleFetchError }, null, { method: 'GET' });\n fetching = true;\n }\n } else if (fetching) {\n logWarn(`${MODULE_NAME}: A fetch is already occurring. Skipping.`);\n }\n}\n\n/**\n * @summary Updates our allowedFields and fieldMatchingFunctions with the publisher defined new ones\n */\nfunction addFieldOverrides(overrides) {\n Object.keys(overrides).forEach((override: any) => {\n // we only add it if it is not already in the allowed fields and if the passed in value is a function\n if (allowedFields.indexOf(override) === -1 && typeof overrides[override] === 'function') {\n (allowedFields as any).push(override);\n fieldMatchingFunctions[override] = overrides[override];\n }\n });\n}\n\ntype FloorsDef = {\n /**\n * Optional atribute used to signal to the Floor Provider’s Analytics adapter their floors are being applied.\n * They can opt to log only floors that are applied when they are the provider. If floorProvider is supplied in\n * both the top level of the floors object and within the data object, the data object’s configuration shall prevail.\n */\n floorProvider?: string;\n /**\n * Currency of floor data. Floor Module will convert currency where necessary.\n */\n currency?: Currency;\n /**\n * Used by floor providers to train on model version performance.\n * The expectation is a floor provider’s analytics adapter will pass the model verson back for algorithm training.\n */\n modelVersion?: string;\n schema: {\n /**\n * Character separating the floor keys. Default is \"|\".\n */\n delimiter?: string;\n fields: (DefaultField | string)[]\n };\n /**\n * Floor used if no matching rules are found.\n */\n default?: number;\n /**\n * Map from delimited field of attribute values to a floor value.\n */\n values: {\n [rule: string]: number;\n }\n}\n\ntype BaseFloorData = {\n /**\n * Epoch timestamp associated with modelVersion.\n * Can be used to track model creation of floor file for post auction analysis.\n */\n modelTimestamp?: string;\n /**\n * skipRate is a number between 0 and 100 to determine when to skip all floor logic, where 0 is always use floor data and 100 is always skip floor data.\n */\n skipRate?: number;\n}\n\nexport type Schema1FloorData = FloorsDef & BaseFloorData & {\n floorsSchemaVersion?: 1;\n}\n\nexport type Schema2FloorData = BaseFloorData & {\n floorsSchemaVersion: 2;\n modelGroups: (FloorsDef & {\n /**\n * Used by the module to determine when to apply the specific model.\n */\n modelWeight: number;\n /**\n * This is an array of bidders for which to avoid sending floors.\n * This is useful for bidders where the publisher has established different floor rules in their systems.\n */\n noFloorSignalBidders?: BidderCode[];\n })[]\n}\n\ndeclare module '../src/adUnits' {\n interface AdUnitDefinition {\n floors?: Partial<Schema1FloorData>;\n }\n}\n\nexport type FloorsConfig = Pick<Schema1FloorData, 'skipRate' | 'floorProvider'> & {\n enabled?: boolean;\n /**\n * The mimimum CPM floor used by the Price Floors Module.\n * The Price Floors Module will take the greater of floorMin and the matched rule CPM when evaluating getFloor() and enforcing floors.\n */\n floorMin?: number;\n enforcement?: Pick<Schema2FloorData['modelGroups'][0], 'noFloorSignalBidders'> & {\n /**\n * If set to true (the default), the Price Floors Module will provide floors to bid adapters for bid request\n * matched rules and suppress any bids not exceeding a matching floor.\n * If set to false, the Price Floors Module will still provide floors for bid adapters, there will be no floor enforcement.\n */\n enforceJS?: boolean;\n /**\n * If set to true (the default), the Price Floors Module will signal to Prebid Server to pass floors to it’s bid\n * adapters and enforce floors.\n * If set to false, the pbjs should still pass matched bid request floor data to PBS, however no enforcement will take place.\n */\n enforcePBS?: boolean;\n /**\n * Enforce floors for deal bid requests. Default is false.\n */\n floorDeals?: boolean;\n /**\n * If true (the default), the Price Floors Module will use the bidAdjustment function to adjust the floor\n * per bidder.\n * If false (or no bidAdjustment function is provided), floors will not be adjusted.\n * Note: Setting this parameter to false may have unexpected results, such as signaling a gross floor when\n * expecting net or vice versa.\n */\n bidAdjustment?: boolean;\n }\n /**\n * Map from custom field name to a function generating that field's value for either a bid or a bid request.\n */\n additionalSchemaFields?: {\n [field: string]: (bidRequest?: BidRequest<BidderCode>, bid?: Bid) => string\n }\n /**\n * How long (in milliseconds) auctions should be delayed to wait for dynamic floor data.\n */\n auctionDelay?: number;\n endpoint?: {\n /**\n * URL of endpoint to retrieve dynamic floor data.\n */\n url: string;\n };\n data?: Schema1FloorData | Schema2FloorData;\n}\n\ndeclare module '../src/config' {\n interface Config {\n floors?: FloorsConfig;\n }\n}\n\n/**\n * @summary This is the function which controls what happens during a pbjs.setConfig({...floors: {}}) is called\n */\nexport function handleSetFloorsConfig(config) {\n _floorsConfig = pick(config, [\n 'floorMin',\n 'enabled', enabled => enabled !== false, // defaults to true\n 'auctionDelay', auctionDelay => auctionDelay || 0,\n 'floorProvider', floorProvider => deepAccess(config, 'data.floorProvider', floorProvider),\n 'endpoint', endpoint => endpoint || {},\n 'skipRate', () => !isNaN(deepAccess(config, 'data.skipRate')) ? config.data.skipRate : config.skipRate || 0,\n 'enforcement', enforcement => pick(enforcement || {}, [\n 'enforceJS', enforceJS => enforceJS !== false, // defaults to true\n 'enforcePBS', enforcePBS => enforcePBS === true, // defaults to false\n 'floorDeals', floorDeals => floorDeals === true, // defaults to false\n 'bidAdjustment', bidAdjustment => bidAdjustment !== false, // defaults to true,\n 'noFloorSignalBidders', noFloorSignalBidders => noFloorSignalBidders || []\n ]),\n 'additionalSchemaFields', additionalSchemaFields => typeof additionalSchemaFields === 'object' && Object.keys(additionalSchemaFields).length > 0 ? addFieldOverrides(additionalSchemaFields) : undefined,\n 'data', data => (data && parseFloorData(data, 'setConfig')) || undefined\n ]);\n\n // if enabled then do some stuff\n if (_floorsConfig.enabled) {\n // handle the floors fetch\n generateAndHandleFetch(_floorsConfig.endpoint);\n\n if (!addedFloorsHook) {\n // register hooks / listening events\n // when auction finishes remove it's associated floor data after 3 seconds so we stil have it for latent responses\n events.on(EVENTS.AUCTION_END, (args) => {\n setTimeout(() => delete _floorDataForAuction[args.auctionId], 3000);\n });\n\n // we want our hooks to run after the currency hooks\n getHook('requestBids').before(requestBidsHook, 50);\n // if user has debug on then we want to allow the debugging module to run before this, assuming they are testing priceFloors\n // debugging is currently set at 5 priority\n getHook('addBidResponse').before(addBidResponseHook, debugTurnedOn() ? 4 : 50);\n addedFloorsHook = true;\n }\n } else {\n logInfo(`${MODULE_NAME}: Turning off module`);\n\n _floorsConfig = {};\n _floorDataForAuction = {};\n\n getHook('addBidResponse').getHooks({hook: addBidResponseHook}).remove();\n getHook('requestBids').getHooks({hook: requestBidsHook}).remove();\n\n addedFloorsHook = false;\n }\n}\n\nexport type BidFloorData = {\n floorValue: number;\n floorRule: string;\n floorRuleValue: number;\n floorCurrency: Currency;\n cpmAfterAdjustments: number;\n enforcements: FloorsConfig['enforcement'];\n matchedFields: { [fieldName: string ]: string }\n}\n\ndeclare module '../src/bidfactory' {\n interface BaseBid {\n floorData?: BidFloorData\n }\n}\n\n/**\n * @summary Analytics adapters especially need context of what the floors module is doing in order\n * to best create informed models. This function attaches necessary information to the bidResponse object for processing\n */\nfunction addFloorDataToBid(floorData, floorInfo, bid: Partial<Bid>, adjustedCpm) {\n bid.floorData = {\n floorValue: floorInfo.matchingFloor,\n floorRule: floorInfo.matchingRule,\n floorRuleValue: floorInfo.floorRuleValue,\n floorCurrency: floorData.data.currency,\n cpmAfterAdjustments: adjustedCpm,\n enforcements: {...floorData.enforcement},\n matchedFields: {}\n };\n floorData.data.schema.fields.forEach((field, index) => {\n const matchedValue = floorInfo.matchingData.split(floorData.data.schema.delimiter)[index];\n bid.floorData.matchedFields[field] = matchedValue;\n });\n}\n\n/**\n * @summary takes the enforcement flags and the bid itself and determines if it should be floored\n */\nfunction shouldFloorBid(floorData, floorInfo, bid) {\n const enforceJS = deepAccess(floorData, 'enforcement.enforceJS') !== false;\n const shouldFloorDeal = deepAccess(floorData, 'enforcement.floorDeals') === true || !bid.dealId;\n const bidBelowFloor = bid.floorData.cpmAfterAdjustments < floorInfo.matchingFloor;\n return enforceJS && (bidBelowFloor && shouldFloorDeal);\n}\n\n/**\n * @summary The main driving force of floors. On bidResponse we hook in and intercept bidResponses.\n * And if the rule we find determines a bid should be floored we will do so.\n */\nexport const addBidResponseHook = timedBidResponseHook('priceFloors', function addBidResponseHook(fn, adUnitCode, bid, reject) {\n const floorData = _floorDataForAuction[bid.auctionId];\n // if no floor data then bail\n if (!floorData || !bid || floorData.skipped) {\n return fn.call(this, adUnitCode, bid, reject);\n }\n\n const matchingBidRequest = auctionManager.index.getBidRequest(bid);\n\n // get the matching rule\n const floorInfo = getFirstMatchingFloor(floorData.data, matchingBidRequest, {...bid, size: [bid.width, bid.height]});\n\n if (!floorInfo.matchingFloor) {\n if (floorInfo.matchingFloor !== 0) logWarn(`${MODULE_NAME}: unable to determine a matching price floor for bidResponse`, bid);\n return fn.call(this, adUnitCode, bid, reject);\n }\n\n // determine the base cpm to use based on if the currency matches the floor currency\n let adjustedCpm;\n const floorCurrency = floorData.data.currency.toUpperCase();\n const bidResponseCurrency = bid.currency || 'USD'; // if an adapter does not set a bid currency and currency module not on it may come in as undefined\n if (floorCurrency === bidResponseCurrency.toUpperCase()) {\n adjustedCpm = bid.cpm;\n } else if (bid.originalCurrency && floorCurrency === bid.originalCurrency.toUpperCase()) {\n adjustedCpm = bid.originalCpm;\n } else {\n try {\n adjustedCpm = getGlobal().convertCurrency(bid.cpm, bidResponseCurrency.toUpperCase(), floorCurrency);\n } catch (err) {\n logError(`${MODULE_NAME}: Unable do get currency conversion for bidResponse to Floor Currency. Do you have Currency module enabled? ${bid}`);\n return fn.call(this, adUnitCode, bid, reject);\n }\n }\n\n // ok we got the bid response cpm in our desired currency. Now we need to run the bidders CPMAdjustment function if it exists\n adjustedCpm = getBiddersCpmAdjustment(adjustedCpm, bid, matchingBidRequest);\n\n // add necessary data information for analytics adapters / floor providers would possibly need\n addFloorDataToBid(floorData, floorInfo, bid, adjustedCpm);\n\n // now do the compare!\n if (shouldFloorBid(floorData, floorInfo, bid)) {\n // bid fails floor -> throw it out\n reject(REJECTION_REASON.FLOOR_NOT_MET);\n logWarn(`${MODULE_NAME}: ${bid.bidderCode}'s Bid Response for ${adUnitCode} was rejected due to floor not met (adjusted cpm: ${bid?.floorData?.cpmAfterAdjustments}, floor: ${floorInfo?.matchingFloor})`, bid);\n return;\n }\n return fn.call(this, adUnitCode, bid, reject);\n});\n\nconfig.getConfig('floors', config => handleSetFloorsConfig(config.floors));\n\nfunction tryGetFloor(bidRequest, {currency = config.getConfig('currency.adServerCurrency') || 'USD', mediaType = '*', size = '*'}: GetFloorParams, fn) {\n if (typeof bidRequest.getFloor === 'function') {\n let floor;\n try {\n floor = bidRequest.getFloor({\n currency,\n mediaType,\n size\n }) || {};\n } catch (e) {\n logWarn('Cannot compute floor for bid', bidRequest);\n return;\n }\n floor.floor = parseFloat(floor.floor);\n if (floor.currency != null && floor.floor && !isNaN(floor.floor)) {\n fn(floor.floor, floor.currency);\n }\n }\n}\n\n/**\n * Sets bidfloor and bidfloorcur for ORTB imp objects\n */\nexport function setOrtbImpBidFloor(imp, bidRequest, context) {\n tryGetFloor(bidRequest, {\n currency: context.currency,\n mediaType: context.mediaType || '*',\n size: '*'\n }, (bidfloor, bidfloorcur) => {\n Object.assign(imp, {\n bidfloor,\n bidfloorcur\n });\n })\n}\n\n/**\n * Set per-mediatype and per-format bidfloor\n */\nexport function setGranularBidfloors(imp, bidRequest, context) {\n function setIfDifferent(bidfloor, bidfloorcur) {\n if (bidfloor !== imp.bidfloor || bidfloorcur !== imp.bidfloorcur) {\n deepSetValue(this, 'ext.bidfloor', bidfloor);\n deepSetValue(this, 'ext.bidfloorcur', bidfloorcur);\n }\n }\n\n Object.values(ALL_MEDIATYPES)\n .filter(mediaType => imp[mediaType] != null)\n .forEach(mediaType => {\n tryGetFloor(bidRequest, {\n currency: imp.bidfloorcur || context?.currency,\n mediaType\n }, setIfDifferent.bind(imp[mediaType]))\n });\n (imp[BANNER]?.format || [])\n .filter(({w, h}) => w != null && h != null)\n .forEach(format => {\n tryGetFloor(bidRequest, {\n currency: imp.bidfloorcur || context?.currency,\n mediaType: BANNER,\n size: [format.w, format.h]\n }, setIfDifferent.bind(format))\n })\n}\n\nexport function setImpExtPrebidFloors(imp, bidRequest, context) {\n // logic below relates to https://github.com/prebid/Prebid.js/issues/8749 and does the following:\n // 1. check client-side floors (ref bidfloor/bidfloorcur & ortb2Imp floorMin/floorMinCur (if present))\n // 2. set pbs req wide floorMinCur to the first floor currency found when iterating over imp's\n // (if currency conversion logic present, convert all imp floor values to this currency)\n // 3. compare/store ref to lowest floorMin value as each imp is iterated over\n // 4. set req wide floorMin and floorMinCur values for pbs after iterations are done\n\n if (imp.bidfloor != null) {\n let {floorMinCur, floorMin} = context.reqContext.floorMin || {};\n\n if (floorMinCur == null) { floorMinCur = imp.bidfloorcur }\n const ortb2ImpFloorCur = imp.ext?.prebid?.floors?.floorMinCur || imp.ext?.prebid?.floorMinCur || floorMinCur;\n const ortb2ImpFloorMin = imp.ext?.prebid?.floors?.floorMin || imp.ext?.prebid?.floorMin;\n const convertedFloorMinValue = convertCurrency(imp.bidfloor, imp.bidfloorcur, floorMinCur);\n const convertedOrtb2ImpFloorMinValue = ortb2ImpFloorMin && ortb2ImpFloorCur ? convertCurrency(ortb2ImpFloorMin, ortb2ImpFloorCur, floorMinCur) : false;\n\n const lowestImpFloorMin = convertedOrtb2ImpFloorMinValue && convertedOrtb2ImpFloorMinValue < convertedFloorMinValue\n ? convertedOrtb2ImpFloorMinValue\n : convertedFloorMinValue;\n\n deepSetValue(imp, 'ext.prebid.floors.floorMin', lowestImpFloorMin);\n if (floorMin == null || floorMin > lowestImpFloorMin) { floorMin = lowestImpFloorMin }\n context.reqContext.floorMin = {floorMin, floorMinCur};\n }\n}\n\n/**\n * PBS specific extension: set ext.prebid.floors.enabled = false if floors are processed client-side\n */\nexport function setOrtbExtPrebidFloors(ortbRequest, bidderRequest, context) {\n if (addedFloorsHook) {\n deepSetValue(ortbRequest, 'ext.prebid.floors.enabled', ortbRequest.ext?.prebid?.floors?.enabled || false);\n }\n if (context?.floorMin) {\n mergeDeep(ortbRequest, {ext: {prebid: {floors: context.floorMin}}})\n }\n}\n\nregisterOrtbProcessor({type: IMP, name: 'bidfloor', fn: setOrtbImpBidFloor});\n// granular floors should be set after both \"normal\" bidfloors and mediaypes\nregisterOrtbProcessor({type: IMP, name: 'extBidfloor', fn: setGranularBidfloors, priority: -10})\nregisterOrtbProcessor({type: IMP, name: 'extPrebidFloors', fn: setImpExtPrebidFloors, dialects: [PBS], priority: -1});\nregisterOrtbProcessor({type: REQUEST, name: 'extPrebidFloors', fn: setOrtbExtPrebidFloors, dialects: [PBS]});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -36,7 +36,7 @@ function publinkIdUrl(params, consentData, storedId) {
|
|
|
36
36
|
const url = parseUrl('https://proc.ad.cpe.dotomi.com' + PUBLINK_REFRESH_PATH);
|
|
37
37
|
url.search = {
|
|
38
38
|
mpn: 'Prebid.js',
|
|
39
|
-
mpv: "10.
|
|
39
|
+
mpv: "10.4.0"
|
|
40
40
|
};
|
|
41
41
|
if (consentData?.gdpr) {
|
|
42
42
|
url.search.gdpr = consentData.gdpr.gdprApplies ? 1 : 0;
|
|
@@ -468,7 +468,7 @@ function executeBidsLoggerCall(e, highestCpmBids) {
|
|
|
468
468
|
};
|
|
469
469
|
outputObj['tgid'] = getTgId();
|
|
470
470
|
outputObj['dm'] = DISPLAY_MANAGER;
|
|
471
|
-
outputObj['dmv'] = "10.
|
|
471
|
+
outputObj['dmv'] = "10.4.0" || '-1';
|
|
472
472
|
outputObj['bm'] = getBrowserType();
|
|
473
473
|
outputObj['ctr'] = country || '';
|
|
474
474
|
outputObj['lip'] = getListOfIdentityPartners();
|
|
@@ -557,7 +557,7 @@ function executeBidWonLoggerCall(auctionId, adUnitId) {
|
|
|
557
557
|
pixelURL += '&eg=' + enc(winningBid.bidResponse?.bidGrossCpmUSD);
|
|
558
558
|
pixelURL += '&kgpv=' + enc(getValueForKgpv(winningBid, adUnitId));
|
|
559
559
|
pixelURL += '&dm=' + enc(DISPLAY_MANAGER);
|
|
560
|
-
pixelURL += '&dmv=' + enc("10.
|
|
560
|
+
pixelURL += '&dmv=' + enc("10.4.0" || '-1');
|
|
561
561
|
pixelURL += '&origbidid=' + enc(winningBid?.bidResponse?.partnerImpId || winningBid?.bidResponse?.prebidBidId || winningBid.bidId);
|
|
562
562
|
pixelURL += '&di=' + enc(winningBid?.bidResponse?.dealId || OPEN_AUCTION_DEAL_ID);
|
|
563
563
|
const ds = winningBid.bidResponse?.meta ? getMetadata(winningBid.bidResponse.meta)?.ds : undefined;
|
|
@@ -31,6 +31,7 @@ const RENDERER_URL = 'https://pubmatic.bbvms.com/r/'.concat('$RENDERER', '.js');
|
|
|
31
31
|
const MSG_VIDEO_PLCMT_MISSING = 'Video.plcmt param missing';
|
|
32
32
|
const PREBID_NATIVE_DATA_KEY_VALUES = Object.values(PREBID_NATIVE_DATA_KEYS_TO_ORTB);
|
|
33
33
|
const DEFAULT_TTL = 360;
|
|
34
|
+
const DEFAULT_GZIP_ENABLED = true;
|
|
34
35
|
const CUSTOM_PARAMS = {
|
|
35
36
|
'kadpageurl': '',
|
|
36
37
|
// Custom page url
|
|
@@ -301,7 +302,7 @@ const toOrtbNativeRequest = legacyNativeAssets => {
|
|
|
301
302
|
};
|
|
302
303
|
const setImpFields = imp => {
|
|
303
304
|
imp.displaymanager ||= 'Prebid.js';
|
|
304
|
-
imp.displaymanagerver ||= "10.
|
|
305
|
+
imp.displaymanagerver ||= "10.4.0";
|
|
305
306
|
const gptAdSlot = imp.ext?.data?.adserver?.adslot;
|
|
306
307
|
if (gptAdSlot) imp.ext.dfp_ad_unit_code = gptAdSlot;
|
|
307
308
|
// Delete ext.data in case of no-adserver
|
|
@@ -591,7 +592,7 @@ const addExtenstionParams = req => {
|
|
|
591
592
|
profile: profId ? parseInt(profId) : undefined,
|
|
592
593
|
version: verId ? parseInt(verId) : undefined,
|
|
593
594
|
wiid: wiid,
|
|
594
|
-
wv: "prebid_prebid_10.
|
|
595
|
+
wv: "prebid_prebid_10.4.0",
|
|
595
596
|
transactionId,
|
|
596
597
|
wp: 'pbjs'
|
|
597
598
|
},
|
|
@@ -708,6 +709,25 @@ function isNonEmptyArray(test) {
|
|
|
708
709
|
return false;
|
|
709
710
|
}
|
|
710
711
|
const getPublisherId = bids => Array.isArray(bids) && bids.length > 0 ? bids.find(bid => bid.params?.publisherId?.trim())?.params.publisherId || null : null;
|
|
712
|
+
function getGzipSetting() {
|
|
713
|
+
// Check bidder-specific configuration
|
|
714
|
+
try {
|
|
715
|
+
const gzipSetting = deepAccess(config.getBidderConfig(), 'pubmatic.gzipEnabled');
|
|
716
|
+
if (gzipSetting !== undefined) {
|
|
717
|
+
const gzipValue = String(gzipSetting).toLowerCase().trim();
|
|
718
|
+
if (gzipValue === 'true' || gzipValue === 'false') {
|
|
719
|
+
const parsedValue = gzipValue === 'true';
|
|
720
|
+
logInfo('PubMatic: Using bidder-specific gzipEnabled setting:', parsedValue);
|
|
721
|
+
return parsedValue;
|
|
722
|
+
}
|
|
723
|
+
logWarn('PubMatic: Invalid gzipEnabled value in bidder config:', gzipSetting);
|
|
724
|
+
}
|
|
725
|
+
} catch (e) {
|
|
726
|
+
logWarn('PubMatic: Error accessing bidder config:', e);
|
|
727
|
+
}
|
|
728
|
+
logInfo('PubMatic: Using default gzipEnabled setting:', DEFAULT_GZIP_ENABLED);
|
|
729
|
+
return DEFAULT_GZIP_ENABLED;
|
|
730
|
+
}
|
|
711
731
|
const _handleCustomParams = (params, conf) => {
|
|
712
732
|
Object.keys(CUSTOM_PARAMS).forEach(key => {
|
|
713
733
|
const value = params[key];
|
|
@@ -864,7 +884,7 @@ export const spec = {
|
|
|
864
884
|
data: data,
|
|
865
885
|
bidderRequest: bidderRequest,
|
|
866
886
|
options: {
|
|
867
|
-
endpointCompression:
|
|
887
|
+
endpointCompression: getGzipSetting()
|
|
868
888
|
}
|
|
869
889
|
};
|
|
870
890
|
return data?.imp?.length ? serverRequest : null;
|