prebid.js 10.2.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/.github/workflows/scripts/codepath-notification +1 -0
- package/creative/renderers/display/renderer.js +3 -4
- package/dist/chunks/1plusXRtdProvider.js +1 -1
- 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.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/appnexusUtils.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/creative-renderer-display.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/cryptoUtils.js +1 -0
- 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-standalone.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/dependencies.json +13 -0
- 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/getintentBidAdapter.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/iasRtdProvider.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/jwplayerRtdProvider.js +1 -1
- package/dist/chunks/jwplayerVideoProvider.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/kubientBidAdapter.js +1 -1
- package/dist/chunks/kubientBidAdapter.metadata.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.js +1 -1
- package/dist/chunks/pulsepointBidAdapter.metadata.js +1 -1
- package/dist/chunks/pwbidBidAdapter.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/rumbleBidAdapter.js +1 -0
- package/dist/chunks/rumbleBidAdapter.metadata.js +1 -0
- 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 -0
- package/dist/chunks/sevioBidAdapter.metadata.js +1 -0
- 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/sovrnBidAdapter.metadata.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/themoneytizerBidAdapter.metadata.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.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.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 +443 -438
- package/dist/src/creative/renderers/display/renderer.js +3 -4
- package/dist/src/creative/renderers/display/renderer.js.map +1 -1
- package/dist/src/libraries/adagioUtils/adagioUtils.js +1 -1
- package/dist/src/libraries/analyticsAdapter/AnalyticsAdapter.js.map +1 -1
- package/dist/src/libraries/appnexusUtils/anKeywords.js +15 -1
- package/dist/src/libraries/appnexusUtils/anKeywords.js.map +1 -1
- package/dist/src/libraries/consentManagement/cmUtils.js.map +1 -1
- package/dist/src/libraries/creative-renderer-display/renderer.d.ts +1 -1
- package/dist/src/libraries/creative-renderer-display/renderer.js +1 -1
- package/dist/src/libraries/creative-renderer-display/renderer.js.map +1 -1
- package/dist/src/libraries/cryptoUtils/wallets.js +14 -0
- package/dist/src/libraries/cryptoUtils/wallets.js.map +1 -0
- package/dist/src/libraries/dspxUtils/bidderUtils.js.map +1 -1
- package/dist/src/libraries/impUtils.js +36 -0
- package/dist/src/libraries/impUtils.js.map +1 -0
- 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/nexx360Utils/index.js.map +1 -1
- package/dist/src/libraries/ortbConverter/converter.js.map +1 -1
- package/dist/src/libraries/riseUtils/index.js +1 -1
- package/dist/src/libraries/vidazooUtils/bidderUtils.js +1 -1
- package/dist/src/libraries/video/constants/events.js.map +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/kubientBidAdapter.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/pwbidBidAdapter.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/rumbleBidAdapter.js +2 -0
- 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 +2 -0
- 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/sovrnBidAdapter.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/themoneytizerBidAdapter.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/1plusXRtdProvider.js +6 -2
- package/dist/src/modules/1plusXRtdProvider.js.map +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/adWMGBidAdapter.js.map +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/admixerBidAdapter.js +5 -4
- package/dist/src/modules/admixerBidAdapter.js.map +1 -1
- package/dist/src/modules/adqueryBidAdapter.js +1 -1
- package/dist/src/modules/adrelevantisBidAdapter.js +1 -1
- package/dist/src/modules/adspiritBidAdapter.js.map +1 -1
- package/dist/src/modules/adstirBidAdapter.js +1 -1
- package/dist/src/modules/adtrgtmeBidAdapter.js +1 -1
- package/dist/src/modules/adtrgtmeBidAdapter.js.map +1 -1
- package/dist/src/modules/advertisingBidAdapter.js +2 -2
- package/dist/src/modules/adxcgAnalyticsAdapter.js +1 -1
- package/dist/src/modules/adxcgBidAdapter.js +4 -39
- package/dist/src/modules/adxcgBidAdapter.js.map +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/amxBidAdapter.js.map +1 -1
- 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/chromeAiRtdProvider.js.map +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/consentManagementGpp.js.map +1 -1
- package/dist/src/modules/consentManagementTcf.js.map +1 -1
- package/dist/src/modules/consentManagementUsp.js.map +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/currency.js.map +1 -1
- package/dist/src/modules/cwireBidAdapter.js +1 -1
- package/dist/src/modules/cwireBidAdapter.js.map +1 -1
- package/dist/src/modules/dailymotionBidAdapter.js +1 -1
- package/dist/src/modules/dailymotionBidAdapter.js.map +1 -1
- package/dist/src/modules/dchain.js.map +1 -1
- package/dist/src/modules/dspxBidAdapter.js +1 -1
- package/dist/src/modules/dspxBidAdapter.js.map +1 -1
- package/dist/src/modules/dxkultureBidAdapter.js +1 -1
- package/dist/src/modules/eightPodBidAdapter.js.map +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/genericAnalyticsAdapter.js.map +1 -1
- package/dist/src/modules/geolocationRtdProvider.js.map +1 -1
- package/dist/src/modules/getintentBidAdapter.js +4 -2
- package/dist/src/modules/getintentBidAdapter.js.map +1 -1
- package/dist/src/modules/gmosspBidAdapter.js +1 -1
- package/dist/src/modules/gmosspBidAdapter.js.map +1 -1
- package/dist/src/modules/gppControl_usstates.js.map +1 -1
- package/dist/src/modules/gptPreAuction.d.ts +3 -3
- package/dist/src/modules/gptPreAuction.js.map +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/iasRtdProvider.js +110 -5
- package/dist/src/modules/iasRtdProvider.js.map +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/intentIqAnalyticsAdapter.js.map +1 -1
- package/dist/src/modules/intentIqIdSystem.js.map +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/jwplayerRtdProvider.js +6 -2
- package/dist/src/modules/jwplayerRtdProvider.js.map +1 -1
- package/dist/src/modules/jwplayerVideoProvider.js +12 -9
- package/dist/src/modules/jwplayerVideoProvider.js.map +1 -1
- package/dist/src/modules/kargoBidAdapter.js +1 -1
- package/dist/src/modules/kimberliteBidAdapter.js +1 -1
- package/dist/src/modules/kubientBidAdapter.js +0 -1
- package/dist/src/modules/kubientBidAdapter.js.map +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/medianetAnalyticsAdapter.js.map +1 -1
- package/dist/src/modules/medianetBidAdapter.js +6 -2
- package/dist/src/modules/medianetBidAdapter.js.map +1 -1
- package/dist/src/modules/mediasquareBidAdapter.js +2 -2
- package/dist/src/modules/mgidBidAdapter.js +1 -1
- package/dist/src/modules/michaoBidAdapter.js.map +1 -1
- package/dist/src/modules/missenaBidAdapter.js +1 -1
- package/dist/src/modules/mobilefuseBidAdapter.js +1 -1
- package/dist/src/modules/multibid/index.js.map +1 -1
- package/dist/src/modules/nextMillenniumBidAdapter.js +1 -1
- package/dist/src/modules/nexverseBidAdapter.js.map +1 -1
- package/dist/src/modules/nobidAnalyticsAdapter.js +1 -1
- package/dist/src/modules/nobidBidAdapter.js +1 -1
- package/dist/src/modules/nodalsAiRtdProvider.js +4 -2
- package/dist/src/modules/nodalsAiRtdProvider.js.map +1 -1
- package/dist/src/modules/oguryBidAdapter.js +1 -1
- package/dist/src/modules/onetagBidAdapter.js +1 -1
- package/dist/src/modules/onetagBidAdapter.js.map +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/prebidServerBidAdapter/index.js.map +1 -1
- 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/pubmaticRtdProvider.js.map +1 -1
- package/dist/src/modules/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/src/modules/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/src/modules/pulsepointBidAdapter.js +2 -38
- package/dist/src/modules/pulsepointBidAdapter.js.map +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/readpeakBidAdapter.js.map +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/rtdModule/index.js.map +1 -1
- package/dist/src/modules/rtdModule/spec.js.map +1 -1
- package/dist/src/modules/rubiconBidAdapter.js +6 -2
- package/dist/src/modules/rubiconBidAdapter.js.map +1 -1
- package/dist/src/modules/rumbleBidAdapter.js +103 -0
- package/dist/src/modules/rumbleBidAdapter.js.map +1 -0
- package/dist/src/modules/schain.js.map +1 -1
- package/dist/src/modules/seedingAllianceBidAdapter.js +1 -1
- package/dist/src/modules/seedtagBidAdapter.js +1 -1
- package/dist/src/modules/sevioBidAdapter.js +254 -0
- package/dist/src/modules/sevioBidAdapter.js.map +1 -0
- package/dist/src/modules/sharedIdSystem.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/storageControl.js.map +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/tcfControl.js.map +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 -3
- package/dist/src/modules/themoneytizerBidAdapter.js.map +1 -1
- package/dist/src/modules/trionBidAdapter.js +1 -1
- package/dist/src/modules/tripleliftBidAdapter.js +1 -1
- package/dist/src/modules/ttdBidAdapter.js +9 -2
- package/dist/src/modules/ttdBidAdapter.js.map +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/userId/index.js +12 -8
- package/dist/src/modules/userId/index.js.map +1 -1
- package/dist/src/modules/userId/spec.js.map +1 -1
- package/dist/src/modules/validationFpdModule/index.js.map +1 -1
- package/dist/src/modules/videoModule/index.js.map +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/weboramaRtdProvider.js +30 -11
- package/dist/src/modules/weboramaRtdProvider.js.map +1 -1
- package/dist/src/modules/welectBidAdapter.js.map +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 +47 -15
- package/dist/src/modules/yandexBidAdapter.js.map +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/public/rumbleBidAdapter.js +1 -0
- package/dist/src/public/sevioBidAdapter.js +1 -0
- package/dist/src/src/activities/params.d.ts +5 -0
- package/dist/src/src/activities/params.js +6 -0
- package/dist/src/src/activities/params.js.map +1 -1
- package/dist/src/src/activities/redactor.js.map +1 -1
- package/dist/src/src/adRendering.js.map +1 -1
- package/dist/src/src/adUnits.js.map +1 -1
- package/dist/src/src/adapterManager.js.map +1 -1
- package/dist/src/src/adapters/bidderFactory.js.map +1 -1
- package/dist/src/src/ajax.js.map +1 -1
- package/dist/src/src/auction.js.map +1 -1
- package/dist/src/src/banner.js.map +1 -1
- package/dist/src/src/bidTTL.js.map +1 -1
- package/dist/src/src/bidderSettings.js.map +1 -1
- package/dist/src/src/bidfactory.js.map +1 -1
- package/dist/src/src/config.js +3 -3
- package/dist/src/src/config.js.map +1 -1
- package/dist/src/src/consentHandler.js.map +1 -1
- package/dist/src/src/constants.js.map +1 -1
- package/dist/src/src/cpmBucketManager.js.map +1 -1
- package/dist/src/src/debugging.js +1 -1
- package/dist/src/src/events.js.map +1 -1
- package/dist/src/src/fpd/enrichment.js.map +1 -1
- package/dist/src/src/hook.js.map +1 -1
- package/dist/src/src/mediaTypes.js.map +1 -1
- package/dist/src/src/native.js.map +1 -1
- package/dist/src/src/prebid.js +2 -2
- package/dist/src/src/prebid.js.map +1 -1
- package/dist/src/src/prebidGlobal.js.map +1 -1
- package/dist/src/src/refererDetection.js.map +1 -1
- package/dist/src/src/storageManager.js +26 -25
- package/dist/src/src/storageManager.js.map +1 -1
- package/dist/src/src/targeting.d.ts +7 -7
- package/dist/src/src/targeting.js.map +1 -1
- package/dist/src/src/types/common.d.js.map +1 -1
- package/dist/src/src/types/common.d.ts +29 -29
- package/dist/src/src/types/local/buildOptions.d.js.map +1 -1
- package/dist/src/src/types/local/shim.d.js.map +1 -1
- package/dist/src/src/types/objects.d.js.map +1 -1
- package/dist/src/src/types/objects.d.ts +15 -15
- package/dist/src/src/types/ortb/common.d.js.map +1 -1
- package/dist/src/src/types/ortb/common.d.ts +1 -1
- package/dist/src/src/types/ortb/ext/dchain.d.js.map +1 -1
- package/dist/src/src/types/ortb/ext/dchain.d.ts +69 -69
- package/dist/src/src/types/ortb/ext/dsa.d.js.map +1 -1
- package/dist/src/src/types/ortb/ext/dsa.d.ts +50 -50
- package/dist/src/src/types/ortb/request.d.js.map +1 -1
- package/dist/src/src/types/ortb/request.d.ts +21 -21
- package/dist/src/src/types/ortb/response.d.js.map +1 -1
- package/dist/src/src/types/ortb/response.d.ts +6 -6
- package/dist/src/src/types/summary/core.d.ts +5 -5
- package/dist/src/src/userSync.js.map +1 -1
- package/dist/src/src/utils/objects.js.map +1 -1
- package/dist/src/src/utils/perfMetrics.js.map +1 -1
- package/dist/src/src/utils/promise.js.map +1 -1
- package/dist/src/src/utils/ttlCollection.js.map +1 -1
- package/dist/src/src/video.js.map +1 -1
- package/dist/src/src/videoCache.js.map +1 -1
- package/dist/src/test/helpers/index_adapter_utils.js +1 -1
- package/dist/src/test/helpers/index_adapter_utils.js.map +1 -1
- package/dist/src/test/helpers/refererDetectionHelper.js.map +1 -1
- package/dist/src/test/mocks/timers.js +12 -12
- package/dist/src/test/mocks/timers.js.map +1 -1
- package/dist/src/test/spec/adloader_spec.js.map +1 -1
- package/dist/src/test/spec/config_spec.js +9 -3
- package/dist/src/test/spec/config_spec.js.map +1 -1
- package/dist/src/test/spec/libraries/greedy/greedyPromise_spec.js +2 -2
- package/dist/src/test/spec/libraries/greedy/greedyPromise_spec.js.map +1 -1
- package/dist/src/test/spec/modules/1plusXRtdProvider_spec.js +2 -9
- package/dist/src/test/spec/modules/1plusXRtdProvider_spec.js.map +1 -1
- 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/adgridBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/adkernelAdnBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/adkernelBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/admediaBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/adnuntiusBidAdapter_spec.js.map +1 -1
- 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/adspiritBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/adtrgtmeBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/adtrgtmeBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/adtrueBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/advertisingBidAdapter_spec.js +9 -9
- package/dist/src/test/spec/modules/advertisingBidAdapter_spec.js.map +1 -1
- 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/bidmaticBidAdapter_spec.js.map +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/datablocksBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/deepintentBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/dexertoBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/dochaseBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/dspxBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/dxkultureBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/ehealthcaresolutionsBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/enrichmentLiftMeasurement_spec.js.map +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/equativBidAdapter_spec.js.map +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/finativeBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/ftrackIdSystem_spec.js.map +1 -1
- package/dist/src/test/spec/modules/fwsspBidAdapter_spec.js.map +1 -1
- 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/hypelabBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/iasRtdProvider_spec.js +104 -1
- package/dist/src/test/spec/modules/iasRtdProvider_spec.js.map +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/intentIqIdSystem_spec.js.map +1 -1
- package/dist/src/test/spec/modules/invibesBidAdapter_spec.js.map +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/kargoBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/lane4BidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/lemmaDigitalBidAdapter_spec.js.map +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/liveIntentRtdProvider_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/mediaeyesBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/mediafuseBidAdapter_spec.js +2 -2
- package/dist/src/test/spec/modules/mediagoBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/medianetBidAdapter_spec.js +43 -26
- package/dist/src/test/spec/modules/medianetBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/mediasquareBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/missenaBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/nexx360BidAdapter_spec.js.map +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/nobidBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/oguryBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/onetagBidAdapter_spec.js.map +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/optoutBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/orbitsoftBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/outbrainBidAdapter_spec.js +3 -3
- package/dist/src/test/spec/modules/oxxionAnalyticsAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/ozoneBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/prebidServerBidAdapter_spec.js +4 -4
- package/dist/src/test/spec/modules/prebidServerBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/prismaBidAdapter_spec.js.map +1 -1
- 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/pubmaticRtdProvider_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/pwbidBidAdapter_spec.js.map +1 -1
- 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/relevadRtdProvider_spec.js.map +1 -1
- package/dist/src/test/spec/modules/relevatehealthBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/richaudienceBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/rubiconBidAdapter_spec.js +2 -2
- package/dist/src/test/spec/modules/rubiconBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/rumbleBidAdapter_spec.js +110 -0
- package/dist/src/test/spec/modules/rumbleBidAdapter_spec.js.map +1 -0
- package/dist/src/test/spec/modules/sevioBidAdapter_spec.js +182 -0
- package/dist/src/test/spec/modules/sevioBidAdapter_spec.js.map +1 -0
- package/dist/src/test/spec/modules/smaatoBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/smarticoBidAdapter_spec.js.map +1 -1
- 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/stvBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/taboolaBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/tapnativeBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/targetVideoBidAdapter_spec.js +2 -2
- package/dist/src/test/spec/modules/themoneytizerBidAdapter_spec.js +0 -5
- package/dist/src/test/spec/modules/themoneytizerBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/trionBidAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/ttdBidAdapter_spec.js +24 -3
- package/dist/src/test/spec/modules/ttdBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/ucfunnelAnalyticsAdapter_spec.js +1 -1
- package/dist/src/test/spec/modules/uid2IdSystem_spec.js.map +1 -1
- package/dist/src/test/spec/modules/unrulyBidAdapter_spec.js +3 -3
- package/dist/src/test/spec/modules/userId_spec.js +41 -6
- package/dist/src/test/spec/modules/userId_spec.js.map +1 -1
- package/dist/src/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +1738 -9
- package/dist/src/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js.map +1 -1
- 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/yandexBidAdapter_spec.js +107 -2
- package/dist/src/test/spec/modules/yandexBidAdapter_spec.js.map +1 -1
- package/dist/src/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +2 -2
- package/dist/src/test/spec/refererDetection_spec.js.map +1 -1
- package/dist/src/test/spec/unit/core/storageManager_spec.js +18 -1
- package/dist/src/test/spec/unit/core/storageManager_spec.js.map +1 -1
- package/dist/src/test/spec/unit/core/targeting_spec.js.map +1 -1
- package/dist/src/test/spec/utils_spec.js.map +1 -1
- package/eslint.config.js +2 -6
- package/gulpfile.js +0 -7
- package/libraries/analyticsAdapter/AnalyticsAdapter.ts +28 -28
- package/libraries/appnexusUtils/anKeywords.js +11 -0
- package/libraries/consentManagement/cmUtils.ts +18 -18
- package/libraries/creative-renderer-display/renderer.js +1 -1
- package/libraries/cryptoUtils/wallets.js +38 -0
- package/libraries/dspxUtils/bidderUtils.js +1 -1
- package/libraries/impUtils.js +33 -0
- package/libraries/liveIntentId/shared.js +16 -0
- package/libraries/nexx360Utils/index.js +8 -8
- package/libraries/ortbConverter/converter.ts +79 -79
- package/libraries/video/constants/events.ts +5 -5
- 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 +8 -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 +15 -29
- 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 +3 -3
- package/metadata/modules/docereeBidAdapter.json +3 -3
- package/metadata/modules/dspxBidAdapter.json +1 -1
- package/metadata/modules/e_volutionBidAdapter.json +1 -1
- package/metadata/modules/edge226BidAdapter.json +3 -3
- 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/kubientBidAdapter.json +3 -8
- 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 +8 -8
- 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 +4 -5
- 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/pwbidBidAdapter.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 +7 -117
- 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/rumbleBidAdapter.json +13 -0
- 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 +18 -0
- 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/sovrnBidAdapter.json +4 -4
- 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/themoneytizerBidAdapter.json +3 -8
- 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/metadata/modules.json +23 -2
- package/modules/1plusXRtdProvider.js +6 -2
- package/modules/adWMGBidAdapter.js +8 -8
- package/modules/admixerBidAdapter.js +9 -4
- package/modules/adspiritBidAdapter.js +8 -8
- package/modules/adtrgtmeBidAdapter.js +2 -2
- package/modules/adxcgBidAdapter.js +2 -36
- package/modules/amxBidAdapter.js +3 -3
- package/modules/chromeAiRtdProvider.js +5 -5
- package/modules/consentManagementGpp.ts +11 -11
- package/modules/consentManagementTcf.ts +33 -33
- package/modules/consentManagementUsp.ts +14 -14
- package/modules/currency.ts +59 -59
- package/modules/cwireBidAdapter.js +2 -2
- package/modules/dailymotionBidAdapter.js +4 -4
- package/modules/dchain.ts +4 -4
- package/modules/dspxBidAdapter.js +8 -8
- package/modules/eightPodBidAdapter.js +8 -8
- package/modules/genericAnalyticsAdapter.ts +50 -50
- package/modules/geolocationRtdProvider.ts +48 -48
- package/modules/getintentBidAdapter.js +4 -2
- package/modules/gmosspBidAdapter.js +1 -1
- package/modules/gppControl_usstates.ts +40 -40
- package/modules/gptPreAuction.ts +34 -34
- package/modules/iasRtdProvider.js +87 -5
- package/modules/intentIqAnalyticsAdapter.js +8 -8
- package/modules/intentIqIdSystem.js +2 -2
- package/modules/jwplayerRtdProvider.js +6 -2
- package/modules/jwplayerVideoProvider.js +13 -9
- package/modules/kubientBidAdapter.js +0 -1
- package/modules/medianetAnalyticsAdapter.js +5 -5
- package/modules/medianetBidAdapter.js +5 -1
- package/modules/michaoBidAdapter.ts +7 -7
- package/modules/multibid/index.ts +31 -31
- package/modules/nexverseBidAdapter.js +1 -1
- package/modules/nodalsAiRtdProvider.js +4 -2
- package/modules/onetagBidAdapter.js +12 -12
- package/modules/openxBidAdapter.js +6 -1
- package/modules/prebidServerBidAdapter/index.ts +130 -130
- package/modules/priceFloors.ts +131 -131
- package/modules/pubmaticBidAdapter.js +21 -1
- package/modules/pubmaticRtdProvider.js +143 -143
- package/modules/pulsepointBidAdapter.js +3 -38
- package/modules/readpeakBidAdapter.js +17 -17
- package/modules/rtdModule/index.ts +8 -8
- package/modules/rtdModule/spec.ts +30 -30
- package/modules/rubiconBidAdapter.js +5 -1
- package/modules/rumbleBidAdapter.js +128 -0
- package/modules/rumbleBidAdapter.md +114 -0
- package/modules/schain.ts +4 -4
- package/modules/sevioBidAdapter.js +262 -0
- package/modules/sevioBidAdapter.md +29 -0
- package/modules/sharedIdSystem.ts +29 -29
- package/modules/storageControl.ts +72 -72
- package/modules/tcfControl.ts +60 -60
- package/modules/themoneytizerBidAdapter.js +2 -4
- package/modules/ttdBidAdapter.js +11 -1
- package/modules/ttdBidAdapter.md +3 -1
- package/modules/userId/index.ts +129 -119
- package/modules/userId/spec.ts +136 -136
- package/modules/validationFpdModule/index.ts +4 -4
- package/modules/videoModule/index.ts +37 -37
- package/modules/weboramaRtdProvider.js +30 -11
- package/modules/welectBidAdapter.js +3 -3
- package/modules/yandexBidAdapter.js +67 -24
- package/package.json +2 -3
- package/src/activities/params.js +6 -0
- package/src/activities/redactor.ts +8 -8
- package/src/adRendering.ts +61 -61
- package/src/adUnits.ts +100 -100
- package/src/adapterManager.ts +605 -605
- package/src/adapters/bidderFactory.ts +99 -99
- package/src/ajax.ts +39 -39
- package/src/auction.ts +217 -217
- package/src/banner.ts +28 -28
- package/src/bidTTL.ts +16 -16
- package/src/bidderSettings.ts +46 -46
- package/src/bidfactory.ts +107 -107
- package/src/config.ts +65 -65
- package/src/consentHandler.ts +25 -25
- package/src/constants.ts +14 -14
- package/src/cpmBucketManager.ts +7 -7
- package/src/events.ts +75 -75
- package/src/fpd/enrichment.ts +8 -8
- package/src/hook.ts +14 -14
- package/src/mediaTypes.ts +16 -16
- package/src/native.ts +62 -62
- package/src/prebid.ts +362 -362
- package/src/prebidGlobal.ts +18 -18
- package/src/refererDetection.ts +54 -54
- package/src/storageManager.ts +76 -73
- package/src/targeting.ts +215 -215
- package/src/types/common.d.ts +29 -29
- package/src/types/local/buildOptions.d.ts +3 -3
- package/src/types/local/shim.d.ts +6 -6
- package/src/types/objects.d.ts +15 -15
- package/src/types/ortb/common.d.ts +1 -1
- package/src/types/ortb/ext/dchain.d.ts +69 -69
- package/src/types/ortb/ext/dsa.d.ts +50 -50
- package/src/types/ortb/request.d.ts +21 -21
- package/src/types/ortb/response.d.ts +6 -6
- package/src/userSync.ts +32 -32
- package/src/utils/objects.ts +11 -11
- package/src/utils/perfMetrics.ts +193 -193
- package/src/utils/promise.ts +14 -14
- package/src/utils/ttlCollection.ts +25 -25
- package/src/video.ts +73 -73
- package/src/videoCache.ts +60 -60
- package/test/helpers/index_adapter_utils.js +1 -2
- package/test/helpers/refererDetectionHelper.js +2 -2
- package/test/mocks/timers.js +12 -9
- package/test/spec/adloader_spec.js +13 -13
- package/test/spec/config_spec.js +9 -3
- package/test/spec/libraries/greedy/greedyPromise_spec.js +2 -2
- package/test/spec/modules/1plusXRtdProvider_spec.js +2 -9
- package/test/spec/modules/adgridBidAdapter_spec.js +6 -6
- package/test/spec/modules/adkernelAdnBidAdapter_spec.js +127 -127
- package/test/spec/modules/adkernelBidAdapter_spec.js +308 -308
- package/test/spec/modules/admediaBidAdapter_spec.js +34 -34
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +7 -7
- package/test/spec/modules/adspiritBidAdapter_spec.js +1 -1
- package/test/spec/modules/adtrgtmeBidAdapter_spec.js +3 -3
- package/test/spec/modules/adtrueBidAdapter_spec.js +19 -19
- package/test/spec/modules/advertisingBidAdapter_spec.js +2 -2
- package/test/spec/modules/bidmaticBidAdapter_spec.js +2 -2
- package/test/spec/modules/datablocksBidAdapter_spec.js +115 -115
- package/test/spec/modules/deepintentBidAdapter_spec.js +51 -51
- package/test/spec/modules/dexertoBidAdapter_spec.js +16 -16
- package/test/spec/modules/dochaseBidAdapter_spec.js +17 -17
- package/test/spec/modules/dspxBidAdapter_spec.js +23 -23
- package/test/spec/modules/ehealthcaresolutionsBidAdapter_spec.js +17 -17
- package/test/spec/modules/enrichmentLiftMeasurement_spec.js +8 -8
- package/test/spec/modules/equativBidAdapter_spec.js +1 -1
- package/test/spec/modules/finativeBidAdapter_spec.js +11 -11
- package/test/spec/modules/ftrackIdSystem_spec.js +16 -16
- package/test/spec/modules/fwsspBidAdapter_spec.js +5 -5
- package/test/spec/modules/hypelabBidAdapter_spec.js +9 -9
- package/test/spec/modules/iasRtdProvider_spec.js +89 -8
- package/test/spec/modules/intentIqIdSystem_spec.js +3 -3
- package/test/spec/modules/invibesBidAdapter_spec.js +2 -2
- package/test/spec/modules/kargoBidAdapter_spec.js +7 -7
- package/test/spec/modules/lane4BidAdapter_spec.js +17 -17
- package/test/spec/modules/lemmaDigitalBidAdapter_spec.js +37 -37
- 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/liveIntentRtdProvider_spec.js +2 -2
- package/test/spec/modules/mediaeyesBidAdapter_spec.js +166 -166
- package/test/spec/modules/mediagoBidAdapter_spec.js +1 -1
- package/test/spec/modules/medianetBidAdapter_spec.js +1724 -1707
- package/test/spec/modules/mediasquareBidAdapter_spec.js +7 -7
- package/test/spec/modules/nexx360BidAdapter_spec.js +6 -6
- package/test/spec/modules/nobidBidAdapter_spec.js +16 -16
- package/test/spec/modules/onetagBidAdapter_spec.js +47 -47
- package/test/spec/modules/openxBidAdapter_spec.js +129 -0
- package/test/spec/modules/optoutBidAdapter_spec.js +1 -1
- package/test/spec/modules/orbitsoftBidAdapter_spec.js +85 -85
- package/test/spec/modules/oxxionAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/ozoneBidAdapter_spec.js +439 -439
- package/test/spec/modules/prebidServerBidAdapter_spec.js +2 -2
- package/test/spec/modules/prismaBidAdapter_spec.js +6 -6
- package/test/spec/modules/pubmaticBidAdapter_spec.js +73 -3
- package/test/spec/modules/pubmaticRtdProvider_spec.js +1389 -1389
- package/test/spec/modules/pwbidBidAdapter_spec.js +25 -25
- package/test/spec/modules/relevadRtdProvider_spec.js +1 -1
- package/test/spec/modules/relevatehealthBidAdapter_spec.js +16 -16
- package/test/spec/modules/richaudienceBidAdapter_spec.js +10 -10
- package/test/spec/modules/rubiconBidAdapter_spec.js +7 -7
- package/test/spec/modules/rumbleBidAdapter_spec.js +125 -0
- package/test/spec/modules/sevioBidAdapter_spec.js +209 -0
- package/test/spec/modules/smaatoBidAdapter_spec.js +30 -30
- package/test/spec/modules/smarticoBidAdapter_spec.js +10 -10
- package/test/spec/modules/stvBidAdapter_spec.js +32 -32
- package/test/spec/modules/tapnativeBidAdapter_spec.js +17 -17
- package/test/spec/modules/themoneytizerBidAdapter_spec.js +0 -6
- package/test/spec/modules/ttdBidAdapter_spec.js +27 -2
- package/test/spec/modules/uid2IdSystem_spec.js +3 -3
- package/test/spec/modules/userId_spec.js +41 -7
- package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +1953 -154
- package/test/spec/modules/yandexBidAdapter_spec.js +128 -0
- package/test/spec/refererDetection_spec.js +11 -11
- package/test/spec/unit/core/storageManager_spec.js +20 -1
- package/test/spec/unit/core/targeting_spec.js +8 -8
- package/test/spec/utils_spec.js +25 -25
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rubiconBidAdapter_spec.js","names":["expect","spec","getPriceGranularity","masSizeOrdering","resetUserSync","classifiedAsVideo","resetRubiConf","resetImpIdMap","converter","config","utils","adapterManager","addFPDToBidderRequest","deepClone","INTEGRATION","PBS_INTEGRATION","describe","sandbox","bidderRequest","sizeMap","getFloorResponse","logErrorSpy","getSizeIdForBid","sizesMapConverted","bid","find","item","width","height","getResponseAdBySize","ads","size","size_id","sizeId","getBidRequestBySize","bidRequests","sizes","getBidderRequest","bidderCode","ortb2","source","tid","auctionId","bidderRequestId","bids","bidder","params","accountId","siteId","zoneId","userId","keywords","inventory","rating","prodtype","visitor","ucat","lastsearch","likes","position","referrer","latLong","mediaTypes","banner","adUnitCode","code","bidId","ortb2Imp","ext","start","auctionStart","timeout","createResponseAdByIndex","i","indexOverMap","overridePropMap","overrideProps","Object","keys","reduce","aggregate","key","getProp","propName","defaultValue","createBidRequestByIndex","toString","transactionId","createGdprBidderRequest","gdprApplies","gdprConsent","addUspToBidderRequest","uspConsent","createVideoBidderRequest","video","context","mimes","api","minduration","playerSize","maxduration","startdelay","playbackmethod","linearity","skip","skipafter","pos","protocols","lipb","lipbid","segments","idl_env","tdid","pubcid","pubProvidedId","uids","id","stype","criteoId","eids","user","removeVideoParamFromBidderRequest","createVideoBidderRequestOutstream","beforeEach","sinon","createSandbox","spy","map","sizeAsArray","split","s","parseInt","slice","afterEach","restore","logError","resetConfig","pbjs","installedModules","it","ordering","to","deep","equal","stub","Math","callsFake","duplicate","assign","floor","request","buildRequests","data","URLSearchParams","url","expectedQuery","forEach","value","RegExp","get","match","getFloor","calledWith","currency","mediaType","be","true","null","undefined","multibidRequest","bidLimit","noposRequest","bidRequest","badposRequest","setConfig","rubicon","singleRequest","sraPosRequest","bidCopy","push","bidCopy1","bidCopy2","bidCopy3","device","cdep","ipRequest","ip","ipv6Request","ipv6","referenceOrdering","refererInfo","page","reachedTop","numIframes","stack","exist","secure","sizesBidderRequest","result","isBidRequestValid","noAccountBidderRequest","floorBidderRequest","gppConsent","gppString","applicableSections","matchingExp","not","undefinedKeys","site","content","gender","yob","geo","country","age","b","serverRequests","a","have","lengthOf","aggregator","concat","bidRequestIndex","property","method","bidRequestItem","array","paramItem","contain","p","length","indexOf","serverRequest","netRevenue","that","is","an","of","bidCopy4","clonedBid","id5id","uid","linkType","atype","rtipartner","inserter","matcher","mm","expectedEidValue","rtiPartner","hasOwnProperty","pbadslot","gpid","regs","dsa","dsarequired","pubrender","datatopub","transparency","domain","dsaparams","ortb2Clone","JSON","parse","stringify","expectedTransparency","pop","adserver","adslot","name","but","standardSuaObject","platform","brand","version","browsers","mobile","model","bitness","architecture","bidRequestSua","sua","expectedValues","m_ch_arch","m_ch_bitness","m_ch_ua","m_ch_full_ver","m_ch_mobile","m_ch_platform","m_ch_platform_ver","errors","entries","accum","_ref","val","_ref2","highEntropyHints","hint","_ref3","Date","post","imp","exp","w","h","prebid","playerWidth","playerHeight","language","auctiontimestamp","channel","consent","gdpr","us_privacy","targeting","includewinners","cache","vastxml","returnCreative","bidders","integration","storedauctionresponse","bidfloor","Error","and","bidfloorcur","aliasRegistry","haveOwnProperty","aliases","superRubicon","floors","floorData","skipped","location","newRequest","enabled","multibid","maxBids","expected","maxbids","payload","analytics","tmax","positionBidderRequest","bidRequestCopy","requests","coppa","foo","join","siteData","userData","storedrequest","int_type","combineSlotUrlParams","p1","p2","p3","p4","localBidderRequest","slotParams","createSlotParams","kw","localBidRequest","ae","sendUserSegtax","sendSiteSegtax","segtax","segment","bidClassifiedAsVideo","legacyVideoTypeBidRequest","flag","bidReq","addNativeToBidRequest","nested","include","request1","request2","bidonmultiformat","pbsRequest","fastlanteRequest","formats","formatsIncluded","others","empty","fastlaneRequest","other","nativeBidderRequest","twin","toORTB","response","interpretResponse","body","cpm","ttl","advertiserId","networkId","creativeId","meta","String","advertiserDomains","ad","rubiconTargeting","rpfl_elemid","rpfl_14062","targetbiddercodeprefix","requestId","paapi","random","overrideMap","impression_id","stubAds","stubBids","with","associateAd","associateBidRequest","creative_id","status","cur","seatbid","impid","adomain","price","crid","rp","mime","advid","hb_uuid","type","group","seat","seatBidId","adserverTargeting","getNativeResponse","rendererConfig","align","closeButton","collapse","rendererUrl","window","MagniteApex","renderAd","renderer","getConfig","nurl","adUnit","document","createElement","adUnitSelector","appendChild","render","renderCall","getCall","args","label","placement","attachTo","vastUrl","parentNode","removeChild","emilyUrl","syncs","getUserSyncs","iframeEnabled","consentString","CUSTOM_PRICE_BUCKET_ITEM","max","increment","mockConfig","priceGranularity","customPriceBucket","buckets","kvPair","Array","isArray","ranges","greaterThan","nodePropsOrder","schainConfig","getSupplyChainConfig","ver","complete","nodes","asi","sid","hp","rid","schain","results","numNodes","shift","serializeNode","nodeIndex","nodeProps","nodeProp","propIndex","node","bannerHost","videoHost","syncHost","returnVast","bannerBidderRequest","bannerRequest","videoBidderRequest","videoRequest","options","arguments","nativeOrtbRequest","assets","required","title","len","img","numBids","native","ortb"],"sourceRoot":"../../../../..","sources":["test/spec/modules/rubiconBidAdapter_spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {\n spec,\n getPriceGranularity,\n masSizeOrdering,\n resetUserSync,\n classifiedAsVideo,\n resetRubiConf,\n resetImpIdMap,\n converter\n} from 'modules/rubiconBidAdapter.js';\nimport {config} from 'src/config.js';\nimport * as utils from 'src/utils.js';\nimport 'modules/consentManagementTcf.js';\nimport 'modules/consentManagementUsp.js';\nimport 'modules/userId/index.js';\nimport 'modules/priceFloors.js';\nimport 'modules/multibid/index.js';\nimport adapterManager from 'src/adapterManager.js';\nimport {addFPDToBidderRequest} from '../../helpers/fpd.js';\nimport { deepClone } from '../../../src/utils.js';\n\nconst INTEGRATION = `pbjs_lite_v$prebid.version$`; // $prebid.version$ will be substituted in by gulp in built prebid\nconst PBS_INTEGRATION = 'pbjs';\n\ndescribe('the rubicon adapter', function () {\n let sandbox,\n bidderRequest,\n sizeMap,\n getFloorResponse,\n logErrorSpy;\n\n /**\n * @typedef {import('../../../src/adapters/bidderFactory.js').BidRequest} BidRequest\n * @typedef {Object} sizeMapConverted\n * @property {string} sizeId\n * @property {string} size\n * @property {Array.<Array>} sizeAsArray\n * @property {number} width\n * @property {number} height\n */\n\n /**\n * @param {Array.<sizeMapConverted>} sizesMapConverted\n * @param {Object} bid\n * @return {sizeMapConverted}\n */\n function getSizeIdForBid(sizesMapConverted, bid) {\n return sizesMapConverted.find(item => (item.width === bid.width && item.height === bid.height));\n }\n\n /**\n * @param {Array.<Object>} ads\n * @param {sizeMapConverted} size\n * @return {Object}\n */\n function getResponseAdBySize(ads, size) {\n return ads.find(item => item.size_id === size.sizeId);\n }\n\n /**\n * @param {Array.<BidRequest>} bidRequests\n * @param {sizeMapConverted} size\n * @return {BidRequest}\n */\n function getBidRequestBySize(bidRequests, size) {\n return bidRequests.find(item => item.sizes[0][0] === size.width && item.sizes[0][1] === size.height);\n }\n\n /**\n * @typedef {Object} overrideProps\n * @property {string} status\n * @property {number} cpm\n * @property {number} zone_id\n * @property {number} ad_id\n * @property {string} creative_id\n * @property {string} targeting_key - rpfl_{id}\n */\n /**\n * @param {number} i - index\n * @param {string} sizeId - id that maps to size\n * @param {Array.<overrideProps>} [indexOverMap]\n * @return {{status: string, cpm: number, zone_id: *, size_id: *, impression_id: *, ad_id: *, creative_id: string, type: string, targeting: *[]}}\n */\n\n function getBidderRequest() {\n return {\n bidderCode: 'rubicon',\n ortb2: {\n source: {\n tid: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n }\n },\n auctionId: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n bidderRequestId: '178e34bad3658f',\n bids: [\n {\n bidder: 'rubicon',\n params: {\n accountId: '14062',\n siteId: '70608',\n zoneId: '335918',\n userId: '12346',\n keywords: ['a', 'b', 'c'],\n inventory: {\n rating: '5-star', // This actually should not be sent to frank!! causes 400\n prodtype: ['tech', 'mobile']\n },\n visitor: {\n ucat: 'new',\n lastsearch: 'iphone',\n likes: ['sports', 'video games']\n },\n position: 'atf',\n referrer: 'localhost',\n latLong: [40.7607823, '111.8910325']\n },\n mediaTypes: {\n banner: [[300, 250]]\n },\n adUnitCode: '/19968336/header-bid-tag-0',\n code: 'div-1',\n sizes: [[300, 250], [320, 50]],\n bidId: '2ffb201a808da7',\n bidderRequestId: '178e34bad3658f',\n auctionId: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n ortb2Imp: {\n ext: {\n tid: 'd45dd707-a418-42ec-b8a7-b70a6c6fab0b',\n }\n },\n ortb2: {\n source: {}\n }\n }\n ],\n start: 1472239426002,\n auctionStart: 1472239426000,\n timeout: 5000\n };\n };\n\n function createResponseAdByIndex(i, sizeId, indexOverMap) {\n const overridePropMap = (indexOverMap && indexOverMap[i] && typeof indexOverMap[i] === 'object') ? indexOverMap[i] : {};\n const overrideProps = Object.keys(overridePropMap).reduce((aggregate, key) => {\n aggregate[key] = overridePropMap[key];\n return aggregate;\n }, {});\n\n const getProp = (propName, defaultValue) => {\n return (overrideProps[propName]) ? overridePropMap[propName] : defaultValue;\n };\n\n return {\n 'status': getProp('status', 'ok'),\n 'cpm': getProp('cpm', i / 100),\n 'zone_id': getProp('zone_id', i + 1),\n 'size_id': sizeId,\n 'impression_id': getProp('impression_id', `1-${i}`),\n 'ad_id': getProp('ad_id', i + 1),\n 'advertiser': i + 1,\n 'network': i + 1,\n 'creative_id': getProp('creative_id', `crid-${i}`),\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': i + 1,\n 'targeting': [\n {\n 'key': getProp('targeting_key', `rpfl_${i}`),\n 'values': ['43_tier_all_test']\n }\n ]\n };\n }\n\n /**\n * @param {number} i\n * @param {Array.<Array>} size\n * @return {{ params: {accountId: string, siteId: string, zoneId: string }, adUnitCode: string, code: string, sizes: *[], bidId: string, bidderRequestId: string }}\n */\n function createBidRequestByIndex(i, size) {\n return {\n bidder: 'rubicon',\n params: {\n accountId: '14062',\n siteId: '70608',\n zoneId: (i + 1).toString(),\n userId: '12346',\n position: 'atf',\n referrer: 'localhost'\n },\n adUnitCode: `/19968336/header-bid-tag-${i}`,\n code: `div-${i}`,\n sizes: [size],\n bidId: i.toString(),\n bidderRequestId: i.toString(),\n auctionId: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n transactionId: 'd45dd707-a418-42ec-b8a7-b70a6c6fab0b'\n };\n }\n\n /**\n * @param {boolean} [gdprApplies]\n */\n function createGdprBidderRequest(gdprApplies) {\n const bidderRequest = getBidderRequest();\n if (typeof gdprApplies === 'boolean') {\n bidderRequest.gdprConsent = {\n 'consentString': 'BOJ/P2HOJ/P2HABABMAAAAAZ+A==',\n 'gdprApplies': gdprApplies\n };\n } else {\n bidderRequest.gdprConsent = {\n 'consentString': 'BOJ/P2HOJ/P2HABABMAAAAAZ+A=='\n };\n }\n return bidderRequest;\n }\n\n function addUspToBidderRequest(bidderRequest) {\n bidderRequest.uspConsent = '1NYN';\n }\n\n function createVideoBidderRequest() {\n const bidderRequest = createGdprBidderRequest(true);\n addUspToBidderRequest(bidderRequest);\n\n const bid = bidderRequest.bids[0];\n bid.mediaTypes = {\n video: {\n context: 'instream',\n mimes: ['video/mp4', 'video/x-flv'],\n api: [2],\n minduration: 15,\n playerSize: [640, 480],\n maxduration: 30,\n startdelay: 0,\n playbackmethod: [2],\n linearity: 1,\n skip: 1,\n skipafter: 15,\n pos: 1,\n protocols: [1, 2, 3, 4, 5, 6]\n }\n };\n bid.params.video = {\n 'language': 'en',\n 'skip': 1,\n 'skipafter': 15,\n 'playerHeight': 480,\n 'playerWidth': 640,\n 'size_id': 201,\n };\n bid.userId = {\n lipb: {lipbid: '0000-1111-2222-3333', segments: ['segA', 'segB']},\n idl_env: '1111-2222-3333-4444',\n tdid: '3000',\n pubcid: '4000',\n pubProvidedId: [{\n source: 'example.com',\n uids: [{\n id: '333333',\n ext: {\n stype: 'ppuid'\n }\n }]\n }, {\n source: 'id-partner.com',\n uids: [{\n id: '4444444'\n }]\n }],\n criteoId: '1111',\n };\n const eids = [\n {\n 'source': 'liveintent.com',\n 'uids': [\n {\n 'id': '0000-1111-2222-3333',\n 'atype': 3\n }\n ],\n 'ext': {\n 'segments': [\n 'segA',\n 'segB'\n ]\n }\n },\n {\n 'source': 'liveramp.com',\n 'uids': [\n {\n 'id': '1111-2222-3333-4444',\n 'atype': 3\n }\n ]\n },\n {\n 'source': 'adserver.org',\n 'uids': [\n {\n 'id': '3000',\n 'atype': 1,\n 'ext': {\n 'rtiPartner': 'TDID'\n }\n }\n ]\n },\n {\n 'source': 'pubcid.org',\n 'uids': [\n {\n 'id': '4000',\n 'atype': 1\n }\n ]\n },\n {\n 'source': 'example.com',\n 'uids': [\n {\n 'id': '333333',\n 'ext': {\n 'stype': 'ppuid'\n }\n }\n ]\n },\n {\n 'source': 'id-partner.com',\n 'uids': [\n {\n 'id': '4444444'\n }\n ]\n },\n {\n 'source': 'criteo.com',\n 'uids': [\n {\n 'id': '1111',\n 'atype': 1\n }\n ]\n }\n ];\n bidderRequest.ortb2 = {user: {ext: {eids}}};\n return bidderRequest;\n }\n\n function removeVideoParamFromBidderRequest(bidderRequest) {\n const bid = bidderRequest.bids[0];\n bid.mediaTypes = {\n video: {\n context: 'instream'\n },\n };\n bid.params.video = false;\n }\n\n function createVideoBidderRequestOutstream() {\n const bidderRequest = createGdprBidderRequest(false);\n const bid = bidderRequest.bids[0];\n delete bid.sizes;\n bid.mediaTypes = {\n video: {\n context: 'outstream',\n mimes: ['video/mp4', 'video/x-flv'],\n api: [2],\n minduration: 15,\n playerSize: [640, 480],\n maxduration: 30,\n startdelay: 0,\n playbackmethod: [2],\n linearity: 1,\n skip: 1,\n skipafter: 15,\n pos: 1,\n protocols: [1, 2, 3, 4, 5, 6]\n },\n };\n bid.params = {\n accountId: 14062,\n siteId: 70608,\n zoneId: 335918,\n video: {\n 'language': 'en',\n 'skip': 1,\n 'skipafter': 15,\n 'playerHeight': 320,\n 'playerWidth': 640,\n 'size_id': 203\n }\n }\n return bidderRequest;\n }\n\n beforeEach(function () {\n sandbox = sinon.createSandbox();\n logErrorSpy = sinon.spy(utils, 'logError');\n getFloorResponse = {};\n bidderRequest = {\n bidderCode: 'rubicon',\n auctionId: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n ortb2: {\n source: {\n tid: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n }\n },\n bidderRequestId: '178e34bad3658f',\n bids: [\n {\n bidder: 'rubicon',\n params: {\n accountId: '14062',\n siteId: '70608',\n zoneId: '335918',\n userId: '12346',\n keywords: ['a', 'b', 'c'],\n inventory: {\n rating: '5-star', // This actually should not be sent to frank!! causes 400\n prodtype: ['tech', 'mobile']\n },\n visitor: {\n ucat: 'new',\n lastsearch: 'iphone',\n likes: ['sports', 'video games']\n },\n position: 'atf',\n referrer: 'localhost',\n latLong: [40.7607823, '111.8910325']\n },\n mediaTypes: {\n banner: [[300, 250]]\n },\n adUnitCode: '/19968336/header-bid-tag-0',\n code: 'div-1',\n sizes: [[300, 250], [320, 50]],\n bidId: '2ffb201a808da7',\n bidderRequestId: '178e34bad3658f',\n auctionId: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n ortb2Imp: {\n ext: {\n tid: 'd45dd707-a418-42ec-b8a7-b70a6c6fab0b',\n }\n },\n }\n ],\n start: 1472239426002,\n auctionStart: 1472239426000,\n timeout: 5000\n };\n\n sizeMap = [\n {sizeId: 1, size: '468x60'},\n {sizeId: 2, size: '728x90'},\n {sizeId: 5, size: '120x90'},\n {sizeId: 8, size: '120x600'},\n {sizeId: 9, size: '160x600'},\n {sizeId: 10, size: '300x600'},\n {sizeId: 13, size: '200x200'},\n {sizeId: 14, size: '250x250'},\n {sizeId: 15, size: '300x250'},\n {sizeId: 16, size: '336x280'},\n {sizeId: 19, size: '300x100'},\n {sizeId: 31, size: '980x120'},\n {sizeId: 32, size: '250x360'}\n // Create convenience properties for [sizeAsArray, width, height] by parsing the size string\n ].map(item => {\n const sizeAsArray = item.size.split('x').map(s => parseInt(s));\n return {\n sizeId: item.sizeId,\n size: item.size,\n sizeAsArray: sizeAsArray.slice(),\n width: sizeAsArray[0],\n height: sizeAsArray[1]\n };\n });\n });\n\n afterEach(function () {\n sandbox.restore();\n utils.logError.restore();\n config.resetConfig();\n resetRubiConf();\n resetImpIdMap();\n delete $$PREBID_GLOBAL$$.installedModules;\n });\n\n describe('MAS mapping / ordering', function () {\n it('should sort values without any MAS priority sizes in regular ascending order', function () {\n const ordering = masSizeOrdering([126, 43, 65, 16]);\n expect(ordering).to.deep.equal([16, 43, 65, 126]);\n });\n\n it('should sort MAS priority sizes in the proper order w/ rest ascending', function () {\n let ordering = masSizeOrdering([43, 9, 65, 15, 16, 126]);\n expect(ordering).to.deep.equal([15, 9, 16, 43, 65, 126]);\n\n ordering = masSizeOrdering([43, 15, 9, 65, 16, 126, 2]);\n expect(ordering).to.deep.equal([15, 2, 9, 16, 43, 65, 126]);\n\n ordering = masSizeOrdering([8, 43, 9, 65, 16, 126, 2]);\n expect(ordering).to.deep.equal([2, 9, 8, 16, 43, 65, 126]);\n });\n });\n\n describe('buildRequests implementation', function () {\n describe('for requests', function () {\n describe('to fastlane', function () {\n it('should make a well-formed request object', function () {\n sandbox.stub(Math, 'random').callsFake(() => 0.1);\n const duplicate = Object.assign(bidderRequest);\n duplicate.bids[0].params.floor = 0.01;\n\n const [request] = spec.buildRequests(duplicate.bids, duplicate);\n const data = new URLSearchParams(request.data);\n\n expect(request.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n\n const expectedQuery = {\n 'account_id': '14062',\n 'site_id': '70608',\n 'zone_id': '335918',\n 'size_id': '15',\n 'alt_size_ids': '43',\n 'p_pos': 'atf',\n 'rp_floor': '0.01',\n 'rp_secure': /[01]/,\n 'rand': '0.1',\n 'tk_flint': INTEGRATION,\n 'x_source.tid': 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n 'p_screen_res': /\\d+x\\d+/,\n 'tk_user_key': '12346',\n 'kw': 'a,b,c',\n 'tg_v.ucat': 'new',\n 'tg_v.lastsearch': 'iphone',\n 'tg_v.likes': 'sports,video games',\n 'tg_i.rating': '5-star',\n 'tg_i.prodtype': 'tech,mobile',\n 'tg_fl.eid': 'div-1',\n 'rf': 'localhost'\n };\n\n // test that all values above are both present and correct\n Object.keys(expectedQuery).forEach(key => {\n const value = expectedQuery[key];\n if (value instanceof RegExp) {\n expect(data.get(key)).to.match(value);\n } else {\n expect(data.get(key)).to.equal(value);\n }\n });\n });\n\n it('should correctly send hard floors when getFloor function is present and returns valid floor', function () {\n // default getFloor response is empty object so should not break and not send hard_floor\n bidderRequest.bids[0].getFloor = () => getFloorResponse;\n sinon.spy(bidderRequest.bids[0], 'getFloor');\n let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // make sure banner bid called with right stuff\n expect(\n bidderRequest.bids[0].getFloor.calledWith({\n currency: 'USD',\n mediaType: 'banner',\n size: '*'\n })\n ).to.be.true;\n\n let data = new URLSearchParams(request.data);\n expect(data.get('rp_hard_floor')).to.be.null;\n\n // not an object should work and not send\n getFloorResponse = undefined;\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n expect(data.get('rp_hard_floor')).to.be.null;\n\n // make it respond with a non USD floor should not send it\n getFloorResponse = {currency: 'EUR', floor: 1.0};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n expect(data.get('rp_hard_floor')).to.be.null;\n\n // make it respond with a non USD floor should not send it\n getFloorResponse = {currency: 'EUR'};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n expect(data.get('rp_hard_floor')).to.be.null;\n\n // make it respond with USD floor and string floor\n getFloorResponse = {currency: 'USD', floor: '1.23'};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n expect(data.get('rp_hard_floor')).to.equal('1.23');\n\n // make it respond with USD floor and num floor\n getFloorResponse = {currency: 'USD', floor: 1.23};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n expect(data.get('rp_hard_floor')).to.equal('1.23');\n });\n\n it('should send rp_maxbids to AE if rubicon multibid config exists', function () {\n var multibidRequest = utils.deepClone(bidderRequest);\n multibidRequest.bidLimit = 5;\n\n const [request] = spec.buildRequests(multibidRequest.bids, multibidRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('rp_maxbids')).to.equal('5');\n });\n\n it('should not send p_pos to AE if not params.position specified', function () {\n var noposRequest = utils.deepClone(bidderRequest);\n delete noposRequest.bids[0].params.position;\n\n const [request] = spec.buildRequests(noposRequest.bids, noposRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('site_id')).to.equal('70608');\n expect(data.get('p_pos')).to.equal(null);\n });\n\n it('should not send p_pos to AE if not mediaTypes.banner.pos is invalid', function () {\n var bidRequest = utils.deepClone(bidderRequest);\n bidRequest.bids[0].mediaTypes = {\n banner: {\n pos: 5\n }\n };\n delete bidRequest.bids[0].params.position;\n\n const [request] = spec.buildRequests(bidRequest.bids, bidRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('site_id')).to.equal('70608');\n expect(data.get('p_pos')).to.equal(null);\n });\n\n it('should send p_pos to AE if mediaTypes.banner.pos is valid', function () {\n var bidRequest = utils.deepClone(bidderRequest);\n bidRequest.bids[0].mediaTypes = {\n banner: {\n pos: 1\n }\n };\n delete bidRequest.bids[0].params.position;\n\n const [request] = spec.buildRequests(bidRequest.bids, bidRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('site_id')).to.equal('70608');\n expect(data.get('p_pos')).to.equal('atf');\n });\n\n it('should not send p_pos to AE if not params.position is invalid', function () {\n var badposRequest = utils.deepClone(bidderRequest);\n badposRequest.bids[0].params.position = 'bad';\n\n const [request] = spec.buildRequests(badposRequest.bids, badposRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('site_id')).to.equal('70608');\n expect(data.get('p_pos')).to.equal(null);\n });\n\n it('should correctly send p_pos in sra fashion', function() {\n config.setConfig({rubicon: {singleRequest: true}});\n // first one is atf\n var sraPosRequest = utils.deepClone(bidderRequest);\n\n // second is not present\n const bidCopy = utils.deepClone(sraPosRequest.bids[0]);\n delete bidCopy.params.position;\n sraPosRequest.bids.push(bidCopy);\n\n // third is btf\n const bidCopy1 = utils.deepClone(sraPosRequest.bids[0]);\n bidCopy1.params.position = 'btf';\n sraPosRequest.bids.push(bidCopy1);\n\n // fourth is invalid (aka not atf or btf)\n const bidCopy2 = utils.deepClone(sraPosRequest.bids[0]);\n bidCopy2.params.position = 'unknown';\n sraPosRequest.bids.push(bidCopy2);\n\n // fifth is not present\n const bidCopy3 = utils.deepClone(sraPosRequest.bids[0]);\n delete bidCopy3.params.position;\n sraPosRequest.bids.push(bidCopy3);\n\n const [request] = spec.buildRequests(sraPosRequest.bids, sraPosRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('p_pos')).to.equal('atf;;btf;;');\n });\n\n it('should correctly send cdep signal when requested', () => {\n var badposRequest = utils.deepClone(bidderRequest);\n badposRequest.bids[0].ortb2 = {device: {ext: {cdep: 3}}};\n\n const [request] = spec.buildRequests(badposRequest.bids, badposRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('o_cdep')).to.equal('3');\n });\n\n it('should correctly send ip signal when ortb2.device.ip is provided', () => {\n const ipRequest = utils.deepClone(bidderRequest);\n ipRequest.bids[0].ortb2 = { device: { ip: '123.45.67.89' } };\n\n const [request] = spec.buildRequests(ipRequest.bids, ipRequest);\n const data = new URLSearchParams(request.data);\n\n // Verify if 'ip' is correctly added to the request data\n expect(data.get('ip')).to.equal('123.45.67.89');\n });\n\n it('should correctly send ipv6 signal when ortb2.device.ipv6 is provided', () => {\n const ipv6Request = utils.deepClone(bidderRequest);\n ipv6Request.bids[0].ortb2 = { device: { ipv6: '2001:db8::ff00:42:8329' } };\n\n const [request] = spec.buildRequests(ipv6Request.bids, ipv6Request);\n const data = new URLSearchParams(request.data);\n\n // Verify if 'ipv6' is correctly added to the request data\n expect(data.get('ipv6')).to.equal('2001:db8::ff00:42:8329');\n });\n\n it('ad engine query params should be ordered correctly', function () {\n sandbox.stub(Math, 'random').callsFake(() => 0.1);\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n const referenceOrdering = ['account_id', 'site_id', 'zone_id', 'size_id', 'alt_size_ids', 'p_pos', 'rf', 'p_geo.latitude', 'p_geo.longitude', 'kw', 'tg_v.ucat', 'tg_v.lastsearch', 'tg_v.likes', 'tg_i.rating', 'tg_i.prodtype', 'tk_flint', 'x_source.tid', 'l_pb_bid_id', 'p_screen_res', 'rp_secure', 'tk_user_key', 'x_imp.ext.tid', 'tg_fl.eid', 'slots', 'rand'];\n\n request.data.split('&').forEach((item, i) => {\n expect(item.split('=')[0]).to.equal(referenceOrdering[i]);\n });\n });\n\n it('should make a well-formed request object without latLong', function () {\n const expectedQuery = {\n 'account_id': '14062',\n 'site_id': '70608',\n 'zone_id': '335918',\n 'size_id': '15',\n 'alt_size_ids': '43',\n 'p_pos': 'atf',\n 'rp_secure': /[01]/,\n 'rand': '0.1',\n 'tk_flint': INTEGRATION,\n 'x_source.tid': 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n 'x_imp.ext.tid': 'd45dd707-a418-42ec-b8a7-b70a6c6fab0b',\n 'p_screen_res': /\\d+x\\d+/,\n 'tk_user_key': '12346',\n 'kw': 'a,b,c',\n 'tg_v.ucat': 'new',\n 'tg_v.lastsearch': 'iphone',\n 'tg_v.likes': 'sports,video games',\n 'tg_i.rating': '5-star',\n 'tg_i.prodtype': 'tech,mobile',\n 'rf': 'localhost',\n 'p_geo.latitude': null,\n 'p_geo.longitude': null\n };\n\n sandbox.stub(Math, 'random').callsFake(() => 0.1);\n\n delete bidderRequest.bids[0].params.latLong;\n let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n let data = new URLSearchParams(request.data);\n\n expect(request.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n\n // test that all values above are both present and correct\n Object.keys(expectedQuery).forEach(key => {\n const value = expectedQuery[key];\n if (value instanceof RegExp) {\n expect(data.get(key)).to.match(value);\n } else {\n expect(data.get(key)).to.equal(value);\n }\n });\n\n bidderRequest.bids[0].params.latLong = [];\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n\n expect(request.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n\n // test that all values above are both present and correct\n Object.keys(expectedQuery).forEach(key => {\n const value = expectedQuery[key];\n if (value instanceof RegExp) {\n expect(data.get(key)).to.match(value);\n } else {\n expect(data.get(key)).to.equal(value);\n }\n });\n });\n\n it('should add referer info to request data', function () {\n const refererInfo = {\n page: 'https://www.prebid.org',\n reachedTop: true,\n numIframes: 1,\n stack: [\n 'https://www.prebid.org/page.html',\n 'https://www.prebid.org/iframe1.html',\n ]\n };\n\n bidderRequest = Object.assign({refererInfo}, bidderRequest);\n delete bidderRequest.bids[0].params.referrer;\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n expect(new URLSearchParams(request.data).get('rf')).to.exist;\n expect(new URLSearchParams(request.data).get('rf')).to.equal('https://www.prebid.org');\n });\n\n it('page_url should use params.referrer, bidderRequest.refererInfo in that order', function () {\n let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(new URLSearchParams(request.data).get('rf')).to.equal('localhost');\n\n delete bidderRequest.bids[0].params.referrer;\n const refererInfo = {page: 'https://www.prebid.org'};\n bidderRequest = Object.assign({refererInfo}, bidderRequest);\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(new URLSearchParams(request.data).get('rf')).to.equal('https://www.prebid.org');\n\n bidderRequest.refererInfo.page = 'http://www.prebid.org';\n bidderRequest.bids[0].params.secure = true;\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(new URLSearchParams(request.data).get('rf')).to.equal('https://www.prebid.org');\n });\n\n it('should use rubicon sizes if present (including non-mappable sizes)', function () {\n var sizesBidderRequest = utils.deepClone(bidderRequest);\n sizesBidderRequest.bids[0].params.sizes = [55, 57, 59, 801];\n\n const [request] = spec.buildRequests(sizesBidderRequest.bids, sizesBidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('size_id')).to.equal('55');\n expect(data.get('alt_size_ids')).to.equal('57,59,801');\n });\n\n it('should not validate bid request if no valid sizes', function () {\n var sizesBidderRequest = utils.deepClone(bidderRequest);\n sizesBidderRequest.bids[0].sizes = [[621, 250], [300, 251]];\n\n const result = spec.isBidRequestValid(sizesBidderRequest.bids[0]);\n\n expect(result).to.equal(false);\n });\n\n it('should not validate bid request if no account id is present', function () {\n var noAccountBidderRequest = utils.deepClone(bidderRequest);\n delete noAccountBidderRequest.bids[0].params.accountId;\n\n const result = spec.isBidRequestValid(noAccountBidderRequest.bids[0]);\n\n expect(result).to.equal(false);\n });\n\n it('should allow a floor override', function () {\n var floorBidderRequest = utils.deepClone(bidderRequest);\n floorBidderRequest.bids[0].params.floor = 2;\n\n const [request] = spec.buildRequests(floorBidderRequest.bids, floorBidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('rp_floor')).to.equal('2');\n });\n\n describe('GDPR consent config', function () {\n it('should send \"gdpr\" and \"gdpr_consent\", when gdprConsent defines consentString and gdprApplies', function () {\n const bidderRequest = createGdprBidderRequest(true);\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('gdpr')).to.equal('1');\n expect(data.get('gdpr_consent')).to.equal('BOJ/P2HOJ/P2HABABMAAAAAZ+A==');\n });\n\n it('should send only \"gdpr_consent\", when gdprConsent defines only consentString', function () {\n const bidderRequest = createGdprBidderRequest();\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('gdpr_consent')).to.equal('BOJ/P2HOJ/P2HABABMAAAAAZ+A==');\n expect(data.get('gdpr')).to.equal(null);\n });\n\n it('should not send GDPR params if gdprConsent is not defined', function () {\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('gdpr')).to.equal(null);\n expect(data.get('gdpr_consent')).to.equal(null);\n });\n\n it('should set \"gdpr\" value as 1 or 0, using \"gdprApplies\" value of either true/false', function () {\n let bidderRequest = createGdprBidderRequest(true);\n let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n let data = new URLSearchParams(request.data);\n expect(data.get('gdpr')).to.equal('1');\n\n bidderRequest = createGdprBidderRequest(false);\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n expect(data.get('gdpr')).to.equal('0');\n });\n });\n\n describe('USP Consent', function () {\n it('should send us_privacy if bidderRequest has a value for uspConsent', function () {\n addUspToBidderRequest(bidderRequest);\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('us_privacy')).to.equal('1NYN');\n });\n\n it('should not send us_privacy if bidderRequest has no uspConsent value', function () {\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('us_privacy')).to.equal(null);\n });\n });\n\n describe('GPP Consent', function () {\n it('should send gpp information if bidderRequest has a value for gppConsent', function () {\n bidderRequest.gppConsent = {\n gppString: 'consent',\n applicableSections: 2\n };\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n delete bidderRequest.gppConsent;\n\n expect(data.get('gpp')).to.equal('consent');\n expect(data.get('gpp_sid')).to.equal('2');\n });\n\n it('should not send gpp information if bidderRequest does not have a value for gppConsent', function () {\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('gpp')).to.equal(null);\n expect(data.get('gpp_sid')).to.equal(null);\n });\n });\n\n describe('first party data', function () {\n it('should not have any tg_v or tg_i params if all are undefined', function () {\n const params = {\n inventory: {\n rating: null,\n prodtype: undefined\n },\n visitor: {\n ucat: undefined,\n lastsearch: null,\n likes: undefined\n },\n };\n\n // Overwrite the bidder request params with the above ones\n Object.assign(bidderRequest.bids[0].params, params);\n\n // get the built request\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n // make sure that no tg_v or tg_i keys are present in the request\n const matchingExp = RegExp('^tg_(i|v)\\..*$');\n // Display the keys\n for (const key of data.keys()) {\n expect(key).to.not.match(matchingExp);\n }\n });\n\n it('should contain valid params when some are undefined', function () {\n const params = {\n inventory: {\n rating: undefined,\n prodtype: ['tech', 'mobile']\n },\n visitor: {\n ucat: null,\n lastsearch: 'iphone',\n likes: undefined\n },\n };\n const undefinedKeys = ['tg_i.rating', 'tg_v.ucat', 'tg_v.likes']\n const expectedQuery = {\n 'tg_v.lastsearch': 'iphone',\n 'tg_i.prodtype': 'tech,mobile',\n }\n\n // Overwrite the bidder request params with the above ones\n Object.assign(bidderRequest.bids[0].params, params);\n\n // get the built request\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n // make sure none of the undefined keys are in query\n undefinedKeys.forEach(key => {\n expect(data.get(key)).to.equal(null);\n });\n\n // make sure the expected and defined ones do show up still\n Object.keys(expectedQuery).forEach(key => {\n const value = expectedQuery[key];\n expect(data.get(key)).to.equal(value);\n });\n });\n\n it('should merge first party data from getConfig with the bid params, if present', () => {\n const site = {\n keywords: 'e,f',\n rating: '4-star',\n ext: {\n data: {\n page: 'home'\n }\n },\n content: {\n data: [{\n 'name': 'www.dataprovider1.com',\n 'ext': { 'segtax': 1 },\n 'segment': [\n { 'id': '987' }\n ]\n }, {\n 'name': 'www.dataprovider1.com',\n 'ext': { 'segtax': 2 },\n 'segment': [\n { 'id': '432' }\n ]\n }, {\n 'name': 'www.dataprovider1.com',\n 'ext': { 'segtax': 5 },\n 'segment': [\n { 'id': '55' }\n ]\n }, {\n 'name': 'www.dataprovider1.com',\n 'ext': { 'segtax': 6 },\n 'segment': [\n { 'id': '66' }\n ]\n }\n ]\n }\n };\n const user = {\n data: [{\n 'name': 'www.dataprovider1.com',\n 'ext': { 'segtax': 4 },\n 'segment': [\n { 'id': '687' },\n { 'id': '123' }\n ]\n }],\n gender: 'M',\n yob: '1984',\n geo: {country: 'ca'},\n keywords: 'd',\n ext: {\n data: {\n age: 40\n }\n }\n };\n\n const ortb2 = {\n site,\n user\n }\n\n const expectedQuery = {\n 'kw': 'a,b,c,d',\n 'tg_v.ucat': 'new',\n 'tg_v.lastsearch': 'iphone',\n 'tg_v.likes': 'sports,video games',\n 'tg_v.gender': 'M',\n 'tg_v.age': '40',\n 'tg_v.iab': '687,123',\n 'tg_i.iab': '987,432,55,66',\n 'tg_v.yob': '1984',\n 'tg_i.rating': '4-star,5-star',\n 'tg_i.page': 'home',\n 'tg_i.prodtype': 'tech,mobile',\n };\n\n // get the built request\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2})), bidderRequest);\n const data = new URLSearchParams(request.data);\n\n // make sure that tg_v, tg_i, and kw values are correct\n Object.keys(expectedQuery).forEach(key => {\n const value = expectedQuery[key];\n expect(data.get(key)).to.deep.equal(value);\n });\n });\n });\n\n describe('singleRequest config', function () {\n it('should group all bid requests with the same site id', function () {\n sandbox.stub(Math, 'random').callsFake(() => 0.1);\n\n config.setConfig({rubicon: {singleRequest: true}});\n\n const expectedQuery = {\n 'account_id': '14062',\n 'site_id': '70608',\n 'zone_id': '335918',\n 'size_id': '15',\n 'alt_size_ids': '43',\n 'p_pos': 'atf',\n 'rp_secure': /[01]/,\n 'rand': '0.1',\n 'tk_flint': INTEGRATION,\n 'x_source.tid': 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n 'p_screen_res': /\\d+x\\d+/,\n 'tk_user_key': '12346',\n 'kw': 'a,b,c',\n 'tg_v.ucat': 'new',\n 'tg_v.lastsearch': 'iphone',\n 'tg_v.likes': 'sports,video games',\n 'tg_i.rating': '5-star',\n 'tg_i.prodtype': 'tech,mobile',\n 'tg_fl.eid': 'div-1',\n 'rf': 'localhost'\n };\n\n const bidCopy = utils.deepClone(bidderRequest.bids[0]);\n bidCopy.params.siteId = '70608';\n bidCopy.params.zoneId = '1111';\n bidderRequest.bids.push(bidCopy);\n\n const bidCopy2 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy2.params.siteId = '99999';\n bidCopy2.params.zoneId = '2222';\n bidderRequest.bids.push(bidCopy2);\n\n const bidCopy3 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy3.params.siteId = '99999';\n bidCopy3.params.zoneId = '3333';\n bidderRequest.bids.push(bidCopy3);\n\n const serverRequests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // array length should match the num of unique 'siteIds'\n expect(serverRequests).to.be.a('array');\n expect(serverRequests).to.have.lengthOf(2);\n\n // collect all bidRequests so order can be checked against the url param slot order\n const bidRequests = serverRequests.reduce((aggregator, item) => aggregator.concat(item.bidRequest), []);\n let bidRequestIndex = 0;\n\n serverRequests.forEach(item => {\n expect(item).to.be.a('object');\n expect(item).to.have.property('method');\n expect(item).to.have.property('url');\n expect(item).to.have.property('data');\n expect(item).to.have.property('bidRequest');\n\n expect(item.method).to.equal('GET');\n expect(item.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n expect(item.data).to.be.a('string');\n\n // 'bidRequest' type must be 'array' if SRA enabled\n expect(item.bidRequest).to.be.a('array').to.have.lengthOf(2);\n\n item.bidRequest.forEach((bidRequestItem, i, array) => {\n expect(bidRequestItem).to.be.a('object');\n // every 'siteId' values need to match\n expect(bidRequestItem.params.siteId).to.equal(array[0].params.siteId);\n });\n\n const data = new URLSearchParams(item.data);\n\n Object.keys(expectedQuery).forEach(key => {\n expect(data.get(key)).to.be.exist;\n\n // extract semicolon delineated values\n const params = data.get(key).split(';');\n\n // skip value test for site and zone ids\n if (key !== 'site_id' && key !== 'zone_id') {\n if (expectedQuery[key] instanceof RegExp) {\n params.forEach(paramItem => {\n expect(paramItem).to.match(expectedQuery[key]);\n });\n } else {\n expect(params).to.contain(expectedQuery[key]);\n }\n }\n\n // check parsed url data list order with requestBid list, items must have same index in both lists\n if (key === 'zone_id') {\n params.forEach((p) => {\n expect(bidRequests[bidRequestIndex]).to.be.a('object');\n expect(bidRequests[bidRequestIndex].params).to.be.a('object');\n\n // 'zone_id' is used to verify so each bid must have a unique 'zone_id'\n expect(p).to.equal(bidRequests[bidRequestIndex].params.zoneId);\n\n // increment to next bidRequest index having verified that item positions match in url params and bidRequest lists\n bidRequestIndex++;\n });\n }\n });\n });\n });\n\n it('should not send more than 10 bids in a request (split into separate requests with <= 10 bids each)', function () {\n config.setConfig({rubicon: {singleRequest: true}});\n let serverRequests;\n let data;\n\n // TEST '10' BIDS, add 9 to 1 existing bid\n for (let i = 0; i < 9; i++) {\n const bidCopy = utils.deepClone(bidderRequest.bids[0]);\n bidCopy.params.zoneId = `${i}0000`;\n bidderRequest.bids.push(bidCopy);\n }\n serverRequests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n // '10' bids per SRA request: so there should be 1 request\n expect(serverRequests.length).to.equal(1);\n // and that one request should have data from 10 bids\n expect(serverRequests[0].bidRequest).to.have.lengthOf(10);\n // check that slots param value matches\n expect(serverRequests[0].data.indexOf('&slots=10&') !== -1).to.equal(true);\n // check that zone_id has 10 values (since all zone_ids are unique all should exist in get param)\n data = new URLSearchParams(serverRequests[0].data);\n expect(typeof data).to.equal('object');\n expect(data.get('zone_id')).to.be.exist;\n expect(data.get('zone_id').split(';')).to.have.lengthOf(10);\n\n // TEST '100' BIDS, add 90 to the previously added 10\n for (let i = 0; i < 90; i++) {\n const bidCopy = utils.deepClone(bidderRequest.bids[0]);\n bidCopy.params.zoneId = `${(i + 10)}0000`;\n bidderRequest.bids.push(bidCopy);\n }\n serverRequests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n // '100' bids: should be '10' SRA requests\n expect(serverRequests.length).to.equal(10);\n // check that each request has 10 items\n serverRequests.forEach((serverRequest) => {\n // and that one request should have data from 10 bids\n expect(serverRequest.bidRequest).to.have.lengthOf(10);\n // check that slots param value matches\n expect(serverRequest.data.indexOf('&slots=10&') !== -1).to.equal(true);\n });\n });\n\n it('should still use single request if other rubicon configs are set after', function () {\n // set single request to true\n config.setConfig({ rubicon: { singleRequest: true } });\n\n // execute some other rubicon setConfig\n config.setConfig({ rubicon: { netRevenue: true } });\n\n const bidCopy = utils.deepClone(bidderRequest.bids[0]);\n bidderRequest.bids.push(bidCopy);\n bidderRequest.bids.push(bidCopy);\n bidderRequest.bids.push(bidCopy);\n\n const serverRequests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // should have 1 request only\n expect(serverRequests).that.is.an('array').of.length(1);\n\n // get the built query\n const data = new URLSearchParams(serverRequests[0].data);\n\n // num slots should be 4\n expect(data.get('slots')).to.equal('4');\n });\n\n it('should not group bid requests if singleRequest does not equal true', function () {\n config.setConfig({rubicon: {singleRequest: false}});\n\n const bidCopy = utils.deepClone(bidderRequest.bids[0]);\n bidderRequest.bids.push(bidCopy);\n\n const bidCopy2 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy2.params.siteId = '32001';\n bidderRequest.bids.push(bidCopy2);\n\n const bidCopy3 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy3.params.siteId = '32001';\n bidderRequest.bids.push(bidCopy3);\n\n const serverRequests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(serverRequests).that.is.an('array').of.length(4);\n });\n\n it('should not group video bid requests', function () {\n config.setConfig({rubicon: {singleRequest: true}});\n\n const bidCopy = utils.deepClone(bidderRequest.bids[0]);\n bidderRequest.bids.push(bidCopy);\n\n const bidCopy2 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy2.params.siteId = '32001';\n bidderRequest.bids.push(bidCopy2);\n\n const bidCopy3 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy3.params.siteId = '32001';\n bidderRequest.bids.push(bidCopy3);\n\n const bidCopy4 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy4.mediaTypes = {\n video: {\n context: 'instream',\n playerSize: [640, 480],\n mimes: ['video/mp4', 'video/x-ms-wmv'],\n protocols: [2, 5],\n maxduration: 30,\n linearity: 1,\n api: [2]\n }\n };\n bidCopy4.params.video = {\n 'language': 'en',\n 'p_aso.video.ext.skip': true,\n 'p_aso.video.ext.skipdelay': 15,\n 'playerHeight': 320,\n 'playerWidth': 640,\n 'size_id': 201,\n 'aeParams': {\n 'p_aso.video.ext.skip': '1',\n 'p_aso.video.ext.skipdelay': '15'\n }\n };\n bidderRequest.bids.push(bidCopy4);\n\n const serverRequests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(serverRequests).that.is.an('array').of.length(3);\n });\n });\n\n describe('user id config', function () {\n describe('pubcid support', function () {\n it('should send eid_pubcid.org when ortb2.user.ext.eids contains pubcid', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n clonedBid.userId = {\n pubcid: '1111'\n };\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n 'source': 'pubcid.org',\n 'uids': [{\n 'id': '1111',\n 'atype': 1\n }]\n }]\n }\n }\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('eid_pubcid.org')).to.equal('1111^1^^^^^');\n });\n });\n\n describe('Criteo support', function () {\n it('should send eid_criteo.com when ortb2.user.ext.eids contains criteo', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n clonedBid.userId = {\n criteoId: '1111'\n };\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n 'source': 'criteo.com',\n 'uids': [{\n 'id': '1111',\n 'atype': 1\n }]\n }]\n }\n }\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('eid_criteo.com')).to.equal('1111^1^^^^^');\n });\n });\n\n describe('pubProvidedId support', function () {\n it('should send pubProvidedId when ortb2.user.ext.eids contains pubProvidedId ids', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n clonedBid.userId = {\n pubProvidedId: [{\n source: 'example.com',\n uids: [{\n id: '11111',\n ext: {\n stype: 'ppuid'\n }\n }]\n }, {\n source: 'id-partner.com',\n uids: [{\n id: '222222'\n }]\n }]\n };\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n 'source': 'example.com',\n 'uids': [{\n 'id': '11111',\n 'ext': {\n 'stype': 'ppuid'\n }\n }]\n },\n {\n 'source': 'id-partner.com',\n 'uids': [{\n 'id': '222222'\n }]\n }]\n }\n }\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('ppuid')).to.equal('11111');\n });\n });\n\n describe('ID5 support', function () {\n it('should send ID5 id when ortb2.user.ext.eids contains ID5', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n clonedBid.userId = {\n id5id: {\n uid: '11111',\n ext: {\n linkType: '22222'\n }\n }\n };\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n 'source': 'id5-sync.com',\n 'uids': [{\n 'id': '11111',\n 'atype': 1,\n 'ext': {\n 'linkType': '22222'\n }\n }]\n }]\n }\n }\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('eid_id5-sync.com')).to.equal('11111^1^^^^^');\n });\n });\n\n describe('UserID catchall support', function () {\n it('should send user id with generic format', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n // Hardcoding userIdAsEids since createEidsArray returns empty array if source not found in eids.js\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n 'source': 'catchall',\n 'uids': [{\n 'id': '11111',\n 'atype': 2\n }]\n }]\n }\n }\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('eid_catchall')).to.equal('11111^2^^^^^');\n });\n\n it('should send rubiconproject special case', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n // Hardcoding userIdAsEids since createEidsArray returns empty array if source not found in eids.js\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n source: 'rubiconproject.com',\n uids: [{\n id: 'some-cool-id',\n atype: 3\n }]\n }]\n }\n }\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('eid_rubiconproject.com')).to.equal('some-cool-id^3^^^^^');\n });\n describe('Full eidValue format validation', function () {\n it('should send complete eidValue in the format uid^atype^third^inserter^matcher^mm^rtipartner', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n // Simulating a full EID object with multiple fields\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n source: 'example.com',\n uids: [{\n id: '11111', // UID\n atype: 2, // atype\n ext: {\n rtipartner: 'rtipartner123', // rtipartner\n stype: 'ppuid' // stype\n }\n }],\n inserter: 'inserter123', // inserter\n matcher: 'matcher123', // matcher\n mm: 'mm123' // mm\n }]\n }\n }\n };\n\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n // Expected format: uid^atype^third^inserter^matcher^mm^rtipartner\n const expectedEidValue = '11111^2^^inserter123^matcher123^mm123^rtipartner123';\n\n // Check if the generated EID value matches the expected format\n expect(data.get('eid_example.com')).to.equal(expectedEidValue);\n });\n it('should generate eidValue with all attributes including rtiPartner', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n // Simulating a full EID object with multiple fields\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n source: 'example.com',\n uids: [{\n id: '11111', // UID\n atype: 2, // atype\n ext: {\n rtiPartner: 'rtipartner123', // rtiPartner (note the different capitalization)\n stype: 'ppuid' // stype\n }\n }],\n inserter: 'inserter123', // inserter\n matcher: 'matcher123', // matcher\n mm: 'mm123' // mm\n }]\n }\n }\n };\n\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n // Expected format: uid^atype^third^inserter^matcher^mm^rtipartner\n const expectedEidValue = '11111^2^^inserter123^matcher123^mm123^rtipartner123';\n\n // Check if the generated EID value matches the expected format\n expect(data.get('eid_example.com')).to.equal(expectedEidValue);\n });\n });\n });\n describe('Config user.id support', function () {\n it('should send ppuid when config defines user.id', function () {\n config.setConfig({user: {id: '123'}});\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n clonedBid.userId = {\n pubcid: '1111'\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('ppuid')).to.equal('123');\n });\n });\n });\n\n describe('Prebid AdSlot', function () {\n beforeEach(function () {\n // enforce that the bid at 0 does not have a 'context' property\n if (bidderRequest.bids[0].hasOwnProperty('ortb2Imp')) {\n delete bidderRequest.bids[0].ortb2Imp;\n }\n });\n\n it('should not send \\\"tg_i.pbadslot’\\\" if \\\"ortb2Imp.ext.data\\\" object is not valid', function () {\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.pbadslot’')).to.be.null;\n });\n\n it('should not send \\\"tg_i.pbadslot’\\\" if \\\"ortb2Imp.ext.data.pbadslot\\\" is undefined', function () {\n bidderRequest.bids[0].ortb2Imp = {};\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.pbadslot’')).to.be.null;\n });\n\n it('should not send \\\"tg_i.pbadslot’\\\" if \\\"ortb2Imp.ext.data.pbadslot\\\" value is an empty string', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n pbadslot: ''\n }\n }\n };\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.pbadslot')).to.be.null;\n });\n\n it('should send \\\"tg_i.pbadslot\\\" if \\\"ortb2Imp.ext.data.pbadslot\\\" value is a valid string', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n pbadslot: 'abc'\n }\n }\n }\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.pbadslot')).to.be.exist;\n expect(data.get('tg_i.pbadslot')).to.equal('abc');\n });\n\n it('should send \\\"tg_i.pbadslot\\\" if \\\"ortb2Imp.ext.data.pbadslot\\\" value is a valid string', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n pbadslot: '/a/b/c'\n }\n }\n }\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.pbadslot')).to.be.exist;\n expect(data.get('tg_i.pbadslot')).to.equal('/a/b/c');\n });\n\n it('should send gpid as p_gpid if valid', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n gpid: '/1233/sports&div1'\n }\n }\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('p_gpid')).to.be.exist;\n expect(data.get('p_gpid')).to.equal('/1233/sports&div1');\n });\n\n describe('Pass DSA signals', function() {\n const ortb2 = {\n regs: {\n ext: {\n dsa: {\n dsarequired: 3,\n pubrender: 0,\n datatopub: 2,\n transparency: [\n {\n domain: 'testdomain.com',\n dsaparams: [1],\n },\n {\n domain: 'testdomain2.com',\n dsaparams: [1, 2]\n }\n ]\n }\n }\n }\n }\n it('should send valid dsaparams but filter out invalid ones', function () {\n const ortb2Clone = JSON.parse(JSON.stringify(ortb2));\n ortb2Clone.regs.ext.dsa.transparency = [\n {\n domain: 'testdomain.com',\n dsaparams: [1],\n },\n {\n domain: '',\n dsaparams: [2],\n }\n ];\n\n const expectedTransparency = 'testdomain.com~1';\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({ ...b, ortb2: ortb2Clone })), bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('dsatransparency')).to.equal(expectedTransparency);\n })\n it('should send dsaparams if \\\"ortb2.regs.ext.dsa.transparancy[0].params\\\"', function() {\n const ortb2Clone = JSON.parse(JSON.stringify(ortb2));\n\n ortb2Clone.regs.ext.dsa.transparency = [{\n domain: 'testdomain.com',\n dsaparams: [1],\n }];\n\n const expectedTransparency = 'testdomain.com~1';\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2: ortb2Clone})), bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('dsatransparency')).to.equal(expectedTransparency);\n })\n it('should pass an empty transparency param if \\\"ortb2.regs.ext.dsa.transparency[0].params\\\" is empty', function() {\n const ortb2Clone = JSON.parse(JSON.stringify(ortb2));\n\n ortb2Clone.regs.ext.dsa.transparency = [{\n domain: 'testdomain.com',\n params: [],\n }];\n\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2: ortb2Clone})), bidderRequest);\n const data = new URLSearchParams(request.data);\n expect(data.get('dsatransparency')).to.be.null\n })\n it('should send an empty transparency if \\\"ortb2.regs.ext.dsa.transparency[0].domain\\\" is empty', function() {\n const ortb2Clone = JSON.parse(JSON.stringify(ortb2));\n\n ortb2Clone.regs.ext.dsa.transparency = [{\n domain: '',\n dsaparams: [1],\n }];\n\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2: ortb2Clone})), bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('dsatransparency')).to.be.null\n })\n it('should send dsa signals if \\\"ortb2.regs.ext.dsa\\\"', function() {\n const expectedTransparency = 'testdomain.com~1~~testdomain2.com~1_2'\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2})), bidderRequest)\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('dsarequired')).to.be.exist;\n expect(data.get('dsapubrender')).to.be.exist;\n expect(data.get('dsadatatopubs')).to.be.exist;\n expect(data.get('dsatransparency')).to.be.exist;\n\n expect(data.get('dsarequired')).to.equal(ortb2.regs.ext.dsa.dsarequired.toString());\n expect(data.get('dsapubrender')).to.equal(ortb2.regs.ext.dsa.pubrender.toString());\n expect(data.get('dsadatatopubs')).to.equal(ortb2.regs.ext.dsa.datatopub.toString());\n expect(data.get('dsatransparency')).to.equal(expectedTransparency);\n })\n it('should return one transparency param', function() {\n const expectedTransparency = 'testdomain.com~1';\n const ortb2Clone = deepClone(ortb2);\n ortb2Clone.regs.ext.dsa.transparency.pop()\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2: ortb2Clone})), bidderRequest)\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('dsatransparency')).to.be.exist;\n expect(data.get('dsatransparency')).to.equal(expectedTransparency);\n })\n })\n\n it('should send gpid and pbadslot since it is prefered over dfp code', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n gpid: '/1233/sports&div1',\n data: {\n pbadslot: 'pb_slot',\n adserver: {\n adslot: '/1234/sports',\n name: 'gam'\n }\n }\n }\n }\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('p_gpid')).to.equal('/1233/sports&div1');\n expect(data.get('tg_i.dfp_ad_unit_code')).to.be.null;\n expect(data.get('tg_i.pbadslot')).to.equal('pb_slot');\n });\n });\n\n describe('GAM ad unit', function () {\n beforeEach(function () {\n // enforce that the bid at 0 does not have a 'context' property\n if (bidderRequest.bids[0].hasOwnProperty('ortb2Imp')) {\n delete bidderRequest.bids[0].ortb2Imp;\n }\n });\n\n it('should not send \\\"tg_i.dfp_ad_unit_code’\\\" if \\\"ortb2Imp.ext.data\\\" object is not valid', function () {\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.dfp_ad_unit_code’')).to.be.null;\n });\n\n it('should not send \\\"tg_i.dfp_ad_unit_code’\\\" if \\\"ortb2Imp.ext.data.adServer.adslot\\\" is undefined', function () {\n bidderRequest.bids[0].ortb2Imp = {};\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.dfp_ad_unit_code’')).to.be.null;\n });\n\n it('should not send \\\"tg_i.dfp_ad_unit_code’\\\" if \\\"ortb2Imp.ext.data.adServer.adslot\\\" value is an empty string', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n adserver: {\n adslot: ''\n }\n }\n }\n };\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.dfp_ad_unit_code')).to.be.null;\n });\n\n it('should send NOT \\\"tg_i.dfp_ad_unit_code\\\" if \\\"ortb2Imp.ext.data.adServer.adslot\\\" value is a valid string but not gam', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n adserver: {\n adslot: '/a/b/c',\n name: 'not gam'\n }\n }\n }\n }\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.dfp_ad_unit_code')).to.but.null;\n });\n\n it('should send \\\"tg_i.dfp_ad_unit_code\\\" if \\\"ortb2Imp.ext.data.adServer.adslot\\\" value is a valid string and name is gam', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n adserver: {\n name: 'gam',\n adslot: '/a/b/c'\n }\n }\n }\n };\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.dfp_ad_unit_code')).to.be.exist;\n expect(data.get('tg_i.dfp_ad_unit_code')).to.equal('/a/b/c');\n });\n });\n\n describe('client hints', function () {\n let standardSuaObject;\n beforeEach(function () {\n standardSuaObject = {\n source: 2,\n platform: {\n brand: 'macOS',\n version: [\n '12',\n '6',\n '0'\n ]\n },\n browsers: [\n {\n brand: 'Not.A/Brand',\n version: [\n '8',\n '0',\n '0',\n '0'\n ]\n },\n {\n brand: 'Chromium',\n version: [\n '114',\n '0',\n '5735',\n '198'\n ]\n },\n {\n brand: 'Google Chrome',\n version: [\n '114',\n '0',\n '5735',\n '198'\n ]\n }\n ],\n mobile: 0,\n model: '',\n bitness: '64',\n architecture: 'x86'\n }\n });\n it('should send m_ch_* params if ortb2.device.sua object is there with igh entropy', function () {\n const bidRequestSua = utils.deepClone(bidderRequest);\n bidRequestSua.bids[0].ortb2 = { device: { sua: standardSuaObject } };\n\n // How should fastlane query be constructed with default SUA\n const expectedValues = {\n m_ch_arch: 'x86',\n m_ch_bitness: '64',\n m_ch_ua: `\"Not.A/Brand\"|v=\"8\",\"Chromium\"|v=\"114\",\"Google Chrome\"|v=\"114\"`,\n m_ch_full_ver: `\"Not.A/Brand\"|v=\"8.0.0.0\",\"Chromium\"|v=\"114.0.5735.198\",\"Google Chrome\"|v=\"114.0.5735.198\"`,\n m_ch_mobile: '?0',\n m_ch_platform: 'macOS',\n m_ch_platform_ver: '12.6.0'\n }\n\n // Build Fastlane call\n const [request] = spec.buildRequests(bidRequestSua.bids, bidRequestSua);\n const data = new URLSearchParams(request.data);\n\n // Loop through expected values and if they do not match push an error\n const errors = Object.entries(expectedValues).reduce((accum, [key, val]) => {\n if (data.get(key) !== val) accum.push(`${key} - expect: ${val} - got: ${data[key]}`)\n return accum;\n }, []);\n\n // should be no errors\n expect(errors).to.deep.equal([]);\n });\n it('should not send invalid values for m_ch_*', function () {\n const bidRequestSua = utils.deepClone(bidderRequest);\n\n // Alter input SUA object\n // send model\n standardSuaObject.model = 'Suface Duo';\n // send mobile = 1\n standardSuaObject.mobile = 1;\n\n // make browsers not an array\n standardSuaObject.browsers = 'My Browser';\n\n // make platform not have version\n delete standardSuaObject.platform.version;\n\n // delete architecture\n delete standardSuaObject.architecture;\n\n // add SUA to bid\n bidRequestSua.bids[0].ortb2 = { device: { sua: standardSuaObject } };\n\n // Build Fastlane request\n const [request] = spec.buildRequests(bidRequestSua.bids, bidRequestSua);\n const data = new URLSearchParams(request.data);\n\n // should show new names\n expect(data.get('m_ch_model')).to.equal('Suface Duo');\n expect(data.get('m_ch_mobile')).to.equal('?1');\n\n // should still send platform\n expect(data.get('m_ch_platform')).to.equal('macOS');\n\n // platform version not sent\n expect(data.get('m_ch_platform_ver')).to.be.null;\n\n // both ua and full_ver not sent because browsers not array\n expect(data.get('m_ch_ua')).to.be.null;\n expect(data.get('m_ch_full_ver')).to.be.null;\n\n // arch not sent\n expect(data.get('m_ch_arch')).to.be.null;\n });\n it('should not send high entropy if not present when it is low entropy client hints', function () {\n const bidRequestSua = utils.deepClone(bidderRequest);\n bidRequestSua.bids[0].ortb2 = { device: { sua: {\n 'source': 1,\n 'platform': {\n 'brand': 'macOS'\n },\n 'browsers': [\n {\n 'brand': 'Not A(Brand',\n 'version': [\n '8'\n ]\n },\n {\n 'brand': 'Chromium',\n 'version': [\n '132'\n ]\n },\n {\n 'brand': 'Google Chrome',\n 'version': [\n '132'\n ]\n }\n ],\n 'mobile': 0\n } } };\n\n // How should fastlane query be constructed with default SUA\n const expectedValues = {\n m_ch_ua: `\"Not A(Brand\"|v=\"8\",\"Chromium\"|v=\"132\",\"Google Chrome\"|v=\"132\"`,\n m_ch_mobile: '?0',\n m_ch_platform: 'macOS',\n }\n\n // Build Fastlane call\n const [request] = spec.buildRequests(bidRequestSua.bids, bidRequestSua);\n const data = new URLSearchParams(request.data);\n\n // Loop through expected values and if they do not match push an error\n const errors = Object.entries(expectedValues).reduce((accum, [key, val]) => {\n if (data.get(key) !== val) accum.push(`${key} - expect: ${val} - got: ${data[key]}`)\n return accum;\n }, []);\n\n // should be no errors\n expect(errors).to.deep.equal([]);\n\n // make sure high entropy keys are not present\n const highEntropyHints = ['m_ch_full_ver', 'm_ch_arch', 'm_ch_bitness', 'm_ch_platform_ver'];\n highEntropyHints.forEach((hint) => { expect(data.get(hint)).to.be.null; });\n });\n it('should ignore invalid browser hints (missing version)', function () {\n const bidRequestSua = utils.deepClone(bidderRequest);\n bidRequestSua.bids[0].ortb2 = { device: { sua: {\n 'browsers': [\n {\n 'brand': 'Not A(Brand',\n // 'version': ['8'], // missing version\n },\n ],\n } } };\n\n // How should fastlane query be constructed with default SUA\n const expectedValues = {\n m_ch_ua: `\"Not A(Brand\"|v=\"undefined\"`,\n }\n\n // Build Fastlane call\n const [request] = spec.buildRequests(bidRequestSua.bids, bidRequestSua);\n const data = new URLSearchParams(request.data);\n\n // Loop through expected values and if they do not match push an error\n const errors = Object.entries(expectedValues).reduce((accum, [key, val]) => {\n if (data.get(key) !== val) accum.push(`${key} - expect: ${val} - got: ${data[key]}`)\n return accum;\n }, []);\n\n // should be no errors\n expect(errors).to.deep.equal([]);\n\n // make sure high entropy keys are not present\n const highEntropyHints = ['m_ch_full_ver'];\n highEntropyHints.forEach((hint) => { expect(data.get(hint)).to.be.null; });\n });\n });\n });\n\n if (FEATURES.VIDEO) {\n describe('for video requests', function () {\n it('should make a well-formed video request', async function () {\n const bidderRequest = createVideoBidderRequest();\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const [request] = spec.buildRequests(bidderRequest.bids, await addFPDToBidderRequest(bidderRequest));\n const post = request.data;\n\n expect(post).to.have.property('imp');\n // .with.length.of(1);\n const imp = post.imp[0];\n expect(imp.id).to.equal(bidderRequest.bids[0].adUnitCode);\n expect(imp.exp).to.equal(undefined); // now undefined\n expect(imp.video.w).to.equal(640);\n expect(imp.video.h).to.equal(480);\n expect(imp.video.pos).to.equal(1);\n expect(imp.video.minduration).to.equal(15);\n expect(imp.video.maxduration).to.equal(30);\n expect(imp.video.startdelay).to.equal(0);\n expect(imp.video.skip).to.equal(1);\n expect(imp.video.skipafter).to.equal(15);\n expect(imp.ext.prebid.bidder.rubicon.video.playerWidth).to.equal(640);\n expect(imp.ext.prebid.bidder.rubicon.video.playerHeight).to.equal(480);\n expect(imp.ext.prebid.bidder.rubicon.video.size_id).to.equal(201);\n expect(imp.ext.prebid.bidder.rubicon.video.language).to.equal('en');\n // Also want it to be in post.site.content.language\n expect(imp.ext.prebid.bidder.rubicon.video.skip).to.equal(1);\n expect(imp.ext.prebid.bidder.rubicon.video.skipafter).to.equal(15);\n expect(post.ext.prebid.auctiontimestamp).to.equal(1472239426000);\n // should contain version\n expect(post.ext.prebid.channel).to.deep.equal({name: 'pbjs', version: $$PREBID_GLOBAL$$.version});\n expect(post.user.ext.consent).to.equal('BOJ/P2HOJ/P2HABABMAAAAAZ+A==');\n // EIDs should exist\n expect(post.user.ext).to.have.property('eids').that.is.an('array');\n // LiveIntent should exist\n expect(post.user.ext.eids[0].source).to.equal('liveintent.com');\n expect(post.user.ext.eids[0].uids[0].id).to.equal('0000-1111-2222-3333');\n expect(post.user.ext.eids[0].uids[0].atype).to.equal(3);\n expect(post.user.ext.eids[0]).to.have.property('ext').that.is.an('object');\n expect(post.user.ext.eids[0].ext).to.have.property('segments').that.is.an('array');\n expect(post.user.ext.eids[0].ext.segments[0]).to.equal('segA');\n expect(post.user.ext.eids[0].ext.segments[1]).to.equal('segB');\n // LiveRamp should exist\n expect(post.user.ext.eids[1].source).to.equal('liveramp.com');\n expect(post.user.ext.eids[1].uids[0].id).to.equal('1111-2222-3333-4444');\n expect(post.user.ext.eids[1].uids[0].atype).to.equal(3);\n // UnifiedId should exist\n expect(post.user.ext.eids[2].source).to.equal('adserver.org');\n expect(post.user.ext.eids[2].uids[0].atype).to.equal(1);\n expect(post.user.ext.eids[2].uids[0].id).to.equal('3000');\n // PubCommonId should exist\n expect(post.user.ext.eids[3].source).to.equal('pubcid.org');\n expect(post.user.ext.eids[3].uids[0].atype).to.equal(1);\n expect(post.user.ext.eids[3].uids[0].id).to.equal('4000');\n // example should exist\n expect(post.user.ext.eids[4].source).to.equal('example.com');\n expect(post.user.ext.eids[4].uids[0].id).to.equal('333333');\n // id-partner.com\n expect(post.user.ext.eids[5].source).to.equal('id-partner.com');\n expect(post.user.ext.eids[5].uids[0].id).to.equal('4444444');\n // CriteoId should exist\n expect(post.user.ext.eids[6].source).to.equal('criteo.com');\n expect(post.user.ext.eids[6].uids[0].id).to.equal('1111');\n expect(post.user.ext.eids[6].uids[0].atype).to.equal(1);\n\n expect(post.regs.ext.gdpr).to.equal(1);\n expect(post.regs.ext.us_privacy).to.equal('1NYN');\n expect(post).to.have.property('ext').that.is.an('object');\n expect(post.ext.prebid.targeting.includewinners).to.equal(true);\n expect(post.ext.prebid).to.have.property('cache').that.is.an('object');\n expect(post.ext.prebid.cache).to.have.property('vastxml').that.is.an('object');\n expect(post.ext.prebid.cache.vastxml).to.have.property('returnCreative').that.is.an('boolean');\n expect(post.ext.prebid.cache.vastxml.returnCreative).to.equal(false);\n expect(post.ext.prebid.bidders.rubicon.integration).to.equal(PBS_INTEGRATION);\n });\n\n describe('ortb2imp sent to video bids', function () {\n beforeEach(function () {\n // initialize\n if (bidderRequest.bids[0].hasOwnProperty('ortb2Imp')) {\n delete bidderRequest.bids[0].ortb2Imp;\n }\n });\n\n it('should add ortb values to video requests', function () {\n const bidderRequest = createVideoBidderRequest();\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n gpid: '/test/gpid',\n data: {\n pbadslot: '/test/pbadslot'\n },\n prebid: {\n storedauctionresponse: {\n id: 'sample_video_response'\n }\n }\n }\n }\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const post = request.data;\n\n expect(post).to.have.property('imp');\n // .with.length.of(1);\n const imp = post.imp[0];\n expect(imp.ext.gpid).to.equal('/test/gpid');\n expect(imp.ext.data.pbadslot).to.equal('/test/pbadslot');\n expect(imp.ext.prebid.storedauctionresponse.id).to.equal('sample_video_response');\n });\n });\n\n it('should correctly set bidfloor on imp when getfloor in scope', function () {\n const bidderRequest = createVideoBidderRequest();\n // default getFloor response is empty object so should not break and not send hard_floor\n bidderRequest.bids[0].getFloor = () => getFloorResponse;\n sinon.spy(bidderRequest.bids[0], 'getFloor');\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // make sure banner bid called with right stuff\n expect(\n bidderRequest.bids[0].getFloor.calledWith({\n currency: 'USD',\n mediaType: '*',\n size: '*'\n })\n ).to.be.true;\n\n // not an object should work and not send\n expect(request.data.imp[0].bidfloor).to.be.undefined;\n\n // make it respond with a non USD floor should not send it\n getFloorResponse = {currency: 'EUR', floor: 1.0};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.be.undefined;\n\n // make it respond with a non USD floor should not send it\n getFloorResponse = {currency: 'EUR'};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.be.undefined;\n\n // make it respond with USD floor and string floor\n getFloorResponse = {currency: 'USD', floor: '1.23'};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.equal(1.23);\n\n // make it respond with USD floor and num floor\n getFloorResponse = {currency: 'USD', floor: 1.23};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.equal(1.23);\n });\n\n it('should continue with auction if getFloor throws error', function () {\n const bidderRequest = createVideoBidderRequest();\n // default getFloor response is empty object so should not break and not send hard_floor\n bidderRequest.bids[0].getFloor = () => {\n throw new Error('An exception!');\n };\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // should have an imp\n expect(request.data.imp).to.exist.and.to.be.a('array');\n expect(request.data.imp).to.have.lengthOf(1);\n\n // should be NO bidFloor\n expect(request.data.imp[0].bidfloor).to.be.undefined;\n expect(request.data.imp[0].bidfloorcur).to.be.undefined;\n });\n\n it('should add alias name to PBS Request', function () {\n const bidderRequest = createVideoBidderRequest();\n adapterManager.aliasRegistry['superRubicon'] = 'rubicon';\n bidderRequest.bidderCode = 'superRubicon';\n bidderRequest.bids[0].bidder = 'superRubicon';\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // should have the aliases object sent to PBS\n expect(request.data.ext.prebid).to.haveOwnProperty('aliases');\n expect(request.data.ext.prebid.aliases).to.deep.equal({superRubicon: 'rubicon'});\n\n // should have the imp ext bidder params be under the alias name not rubicon superRubicon\n expect(request.data.imp[0].ext.prebid.bidder).to.have.property('superRubicon').that.is.an('object');\n expect(request.data.imp[0].ext.prebid.bidder).to.not.haveOwnProperty('rubicon');\n });\n\n it('should add floors flag correctly to PBS Request', function () {\n const bidderRequest = createVideoBidderRequest();\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // should not pass if undefined\n expect(request.data.ext.prebid.floors).to.be.undefined;\n\n // should pass it as false\n bidderRequest.bids[0].floorData = {\n skipped: false,\n location: 'fetch',\n }\n const [newRequest] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(newRequest.data.ext.prebid.floors).to.deep.equal({ enabled: false });\n });\n\n it('should add multibid configuration to PBS Request', function () {\n const bidderRequest = createVideoBidderRequest();\n\n const multibid = [{\n bidder: 'bidderA',\n maxBids: 2\n }, {\n bidder: 'bidderB',\n maxBids: 2\n }];\n const expected = [{\n bidder: 'bidderA',\n maxbids: 2\n }, {\n bidder: 'bidderB',\n maxbids: 2\n }];\n\n config.setConfig({multibid: multibid});\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // should have the aliases object sent to PBS\n expect(request.data.ext.prebid).to.haveOwnProperty('multibid');\n expect(request.data.ext.prebid.multibid).to.deep.equal(expected);\n });\n\n it('should pass client analytics to PBS endpoint if all modules included', function () {\n const bidderRequest = createVideoBidderRequest();\n $$PREBID_GLOBAL$$.installedModules = [];\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const payload = request.data;\n\n expect(payload.ext.prebid.analytics).to.not.be.undefined;\n expect(payload.ext.prebid.analytics).to.deep.equal({'rubicon': {'client-analytics': true}});\n });\n\n it('should pass client analytics to PBS endpoint if rubicon analytics adapter is included', function () {\n const bidderRequest = createVideoBidderRequest();\n $$PREBID_GLOBAL$$.installedModules = ['rubiconBidAdapter', 'rubiconAnalyticsAdapter'];\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const payload = request.data;\n\n expect(payload.ext.prebid.analytics).to.not.be.undefined;\n expect(payload.ext.prebid.analytics).to.deep.equal({'rubicon': {'client-analytics': true}});\n });\n\n it('should not pass client analytics to PBS endpoint if rubicon analytics adapter is not included', function () {\n const bidderRequest = createVideoBidderRequest();\n $$PREBID_GLOBAL$$.installedModules = ['rubiconBidAdapter'];\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const payload = request.data;\n\n expect(payload.ext.prebid.analytics).to.be.undefined;\n });\n\n it('should not send video exp at all if not set in s2sConfig config', function () {\n const bidderRequest = createVideoBidderRequest();\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const post = request.data;\n\n // should exp set to the right value according to config\n const imp = post.imp[0];\n // bidderFactory stringifies request body before sending so removes undefined attributes:\n expect(imp.exp).to.equal(undefined);\n });\n\n it('should send tmax as the bidderRequest timeout value', function () {\n const bidderRequest = createVideoBidderRequest();\n bidderRequest.timeout = 3333;\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const post = request.data;\n expect(post.tmax).to.equal(3333);\n });\n\n it('should send correct bidfloor to PBS', function () {\n const bidderRequest = createVideoBidderRequest();\n\n bidderRequest.bids[0].params.floor = 0.1;\n let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.equal(0.1);\n\n bidderRequest.bids[0].params.floor = 5.5;\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.equal(5.5);\n\n bidderRequest.bids[0].params.floor = '1.7';\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.equal(1.7);\n\n bidderRequest.bids[0].params.floor = 0;\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.equal(0);\n\n bidderRequest.bids[0].params.floor = undefined;\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0]).to.not.haveOwnProperty('bidfloor');\n\n bidderRequest.bids[0].params.floor = null;\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0]).to.not.haveOwnProperty('bidfloor');\n });\n\n it('should send request with proper ad position', function () {\n const bidderRequest = createVideoBidderRequest();\n let positionBidderRequest = utils.deepClone(bidderRequest);\n positionBidderRequest.bids[0].mediaTypes.video.pos = 1;\n let [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);\n expect(request.data.imp[0].video.pos).to.equal(1);\n\n positionBidderRequest = utils.deepClone(bidderRequest);\n positionBidderRequest.bids[0].params.position = undefined;\n positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;\n [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);\n expect(request.data.imp[0].video.pos).to.equal(undefined);\n\n positionBidderRequest = utils.deepClone(bidderRequest);\n positionBidderRequest.bids[0].params.position = 'atf'\n positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;\n [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);\n expect(request.data.imp[0].video.pos).to.equal(1);\n\n positionBidderRequest = utils.deepClone(bidderRequest);\n positionBidderRequest.bids[0].params.position = 'btf';\n positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;\n [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);\n expect(request.data.imp[0].video.pos).to.equal(3);\n\n positionBidderRequest = utils.deepClone(bidderRequest);\n positionBidderRequest.bids[0].params.position = 'foobar';\n positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;\n [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);\n expect(request.data.imp[0].video.pos).to.equal(undefined);\n });\n\n it('should properly enforce video.context to be either instream or outstream', function () {\n const bid = bidderRequest.bids[0];\n bid.mediaTypes = {\n video: {\n context: 'instream',\n mimes: ['video/mp4', 'video/x-ms-wmv'],\n protocols: [2, 5],\n maxduration: 30,\n linearity: 1,\n api: [2]\n }\n }\n bid.params.video = {};\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const bidRequestCopy = utils.deepClone(bidderRequest.bids[0]);\n expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(true);\n\n // change context to outstream, still true\n bidRequestCopy.mediaTypes.video.context = 'outstream';\n expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(true);\n\n // change context to random, false now\n bidRequestCopy.mediaTypes.video.context = 'random';\n expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(false);\n\n // change context to undefined, still false\n bidRequestCopy.mediaTypes.video.context = undefined;\n expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(false);\n\n // remove context, still false\n delete bidRequestCopy.mediaTypes.video.context;\n expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(false);\n });\n\n it('should enforce the new required mediaTypes.video params', function () {\n let bidderRequest = createVideoBidderRequest();\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(true);\n\n // change mimes to a non array, no good\n bidderRequest = createVideoBidderRequest();\n bidderRequest.bids[0].mediaTypes.video.mimes = 'video/mp4';\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);\n\n // delete mimes, no good\n bidderRequest = createVideoBidderRequest();\n delete bidderRequest.bids[0].mediaTypes.video.mimes;\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);\n\n // change protocols to an int not array of ints, no good\n bidderRequest = createVideoBidderRequest();\n bidderRequest.bids[0].mediaTypes.video.protocols = 1;\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);\n\n // delete protocols, no good\n bidderRequest = createVideoBidderRequest();\n delete bidderRequest.bids[0].mediaTypes.video.protocols;\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);\n\n // change linearity to an string, no good\n bidderRequest = createVideoBidderRequest();\n bidderRequest.bids[0].mediaTypes.video.linearity = 'string';\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);\n\n // delete linearity, no good\n bidderRequest = createVideoBidderRequest();\n delete bidderRequest.bids[0].mediaTypes.video.linearity;\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);\n });\n\n it('bid request is valid when video context is outstream', function () {\n const bidderRequest = createVideoBidderRequestOutstream();\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const bidRequestCopy = utils.deepClone(bidderRequest);\n\n const [request] = spec.buildRequests(bidRequestCopy.bids, bidRequestCopy);\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(true);\n expect(request.data.imp[0].ext.prebid.bidder.rubicon.video.size_id).to.equal(203);\n });\n\n it('should send banner request when outstream or instream video included but no rubicon video obect is present', function () {\n // add banner and video mediaTypes\n bidderRequest.mediaTypes = {\n banner: {\n sizes: [[300, 250]]\n },\n video: {\n context: 'outstream'\n }\n };\n // no video object in rubicon params, so we should see one call made for banner\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n let requests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n expect(requests.length).to.equal(1);\n expect(requests[0].url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n\n bidderRequest.mediaTypes.video.context = 'instream';\n\n requests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n expect(requests.length).to.equal(1);\n expect(requests[0].url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n });\n\n it('should send request as banner when invalid video bid in multiple mediaType bidRequest', function () {\n removeVideoParamFromBidderRequest(bidderRequest);\n\n const bid = bidderRequest.bids[0];\n bid.mediaTypes.banner = {\n sizes: [[300, 250]]\n };\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const bidRequestCopy = utils.deepClone(bidderRequest);\n\n const requests = spec.buildRequests(bidRequestCopy.bids, bidRequestCopy);\n expect(requests.length).to.equal(1);\n expect(requests[0].url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n });\n\n it('should include coppa flag in video bid request', async () => {\n const bidderRequest = createVideoBidderRequest();\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n sandbox.stub(config, 'getConfig').callsFake(key => {\n const config = {\n 'coppa': true\n };\n return config[key];\n });\n const [request] = spec.buildRequests(bidderRequest.bids, await addFPDToBidderRequest(bidderRequest));\n expect(request.data.regs.coppa).to.equal(1);\n });\n\n it('should include first party data', () => {\n const bidderRequest = createVideoBidderRequest();\n\n const site = {\n ext: {\n data: {\n page: 'home'\n }\n },\n content: {\n data: [{foo: 'bar'}]\n },\n keywords: 'e,f',\n rating: '4-star',\n data: [{foo: 'bar'}]\n };\n const user = {\n ext: {\n data: {\n age: 31\n }\n },\n keywords: 'd',\n gender: 'M',\n yob: '1984',\n geo: {country: 'ca'},\n data: [{foo: 'bar'}]\n };\n\n const ortb2 = {\n site,\n user\n };\n\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2})), bidderRequest);\n\n const expected = {\n site: Object.assign({}, site, {keywords: bidderRequest.bids[0].params.keywords.join(',')}),\n user: Object.assign({}, user),\n siteData: Object.assign({}, site.ext.data, bidderRequest.bids[0].params.inventory),\n userData: Object.assign({}, user.ext.data, bidderRequest.bids[0].params.visitor),\n };\n\n delete request.data.site.page;\n delete request.data.site.content.language;\n\n expect(request.data.site.keywords).to.deep.equal('a,b,c');\n expect(request.data.user.keywords).to.deep.equal('d');\n expect(request.data.site.ext.data).to.deep.equal(expected.siteData);\n expect(request.data.user.ext.data).to.deep.equal(expected.userData);\n });\n\n it('should include pbadslot in bid request', function () {\n const bidderRequest = createVideoBidderRequest();\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n pbadslot: '1234567890'\n }\n }\n }\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].ext.data.pbadslot).to.equal('1234567890');\n });\n\n it('should NOT include storedrequests in pbs payload', function () {\n const bidderRequest = createVideoBidderRequest();\n bidderRequest.bids[0].ortb2 = {\n ext: {\n prebid: {\n storedrequest: 'no-send-top-level-sr'\n }\n }\n }\n\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n prebid: {\n storedrequest: 'no-send-imp-sr'\n }\n }\n }\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.ext.prebid.storedrequest).to.be.undefined;\n expect(request.data.imp[0].ext.prebid.storedrequest).to.be.undefined;\n });\n\n it('should include GAM ad unit in bid request', function () {\n const bidderRequest = createVideoBidderRequest();\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n adserver: {\n adslot: '1234567890',\n name: 'adServerName1'\n }\n }\n }\n };\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].ext.data.adserver.adslot).to.equal('1234567890');\n expect(request.data.imp[0].ext.data.adserver.name).to.equal('adServerName1');\n });\n\n it('should use the integration type provided in the config instead of the default', () => {\n const bidderRequest = createVideoBidderRequest();\n config.setConfig({rubicon: {int_type: 'testType'}});\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.ext.prebid.bidders.rubicon.integration).to.equal('testType');\n });\n\n it('should pass the user.id provided in the config', async function () {\n config.setConfig({user: {id: '123'}});\n const bidderRequest = createVideoBidderRequest();\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const [request] = spec.buildRequests(bidderRequest.bids, await addFPDToBidderRequest(bidderRequest));\n const post = request.data;\n\n expect(post).to.have.property('imp')\n // .with.length.of(1);\n const imp = post.imp[0];\n expect(imp.id).to.equal(bidderRequest.bids[0].adUnitCode);\n expect(imp.exp).to.equal(undefined);\n expect(imp.video.w).to.equal(640);\n expect(imp.video.h).to.equal(480);\n expect(imp.video.pos).to.equal(1);\n expect(imp.video.minduration).to.equal(15);\n expect(imp.video.maxduration).to.equal(30);\n expect(imp.video.startdelay).to.equal(0);\n expect(imp.video.skip).to.equal(1);\n expect(imp.video.skipafter).to.equal(15);\n expect(imp.ext.prebid.bidder.rubicon.video.playerWidth).to.equal(640);\n expect(imp.ext.prebid.bidder.rubicon.video.playerHeight).to.equal(480);\n expect(imp.ext.prebid.bidder.rubicon.video.language).to.equal('en');\n\n // Also want it to be in post.site.content.language\n expect(post.site.content.language).to.equal('en');\n expect(post.ext.prebid.auctiontimestamp).to.equal(1472239426000);\n expect(post.user.ext.consent).to.equal('BOJ/P2HOJ/P2HABABMAAAAAZ+A==');\n\n // Config user.id\n expect(post.user.id).to.equal('123');\n\n expect(post.regs.ext.gdpr).to.equal(1);\n expect(post.regs.ext.us_privacy).to.equal('1NYN');\n expect(post).to.have.property('ext').that.is.an('object');\n expect(post.ext.prebid.targeting.includewinners).to.equal(true);\n expect(post.ext.prebid).to.have.property('cache').that.is.an('object');\n expect(post.ext.prebid.cache).to.have.property('vastxml').that.is.an('object');\n expect(post.ext.prebid.cache.vastxml).to.have.property('returnCreative').that.is.an('boolean');\n expect(post.ext.prebid.cache.vastxml.returnCreative).to.equal(false);\n expect(post.ext.prebid.bidders.rubicon.integration).to.equal(PBS_INTEGRATION);\n })\n });\n }\n\n describe('combineSlotUrlParams', function () {\n it('should combine an array of slot url params', function () {\n expect(spec.combineSlotUrlParams([])).to.deep.equal({});\n\n expect(spec.combineSlotUrlParams([{p1: 'foo', p2: 'test', p3: ''}])).to.deep.equal({\n p1: 'foo',\n p2: 'test',\n p3: ''\n });\n\n expect(spec.combineSlotUrlParams([{}, {p1: 'foo', p2: 'test'}])).to.deep.equal({p1: ';foo', p2: ';test'});\n\n expect(spec.combineSlotUrlParams([{}, {}, {p1: 'foo', p2: ''}, {}])).to.deep.equal({p1: ';;foo;', p2: ''});\n\n expect(spec.combineSlotUrlParams([{}, {p1: 'foo'}, {p1: ''}])).to.deep.equal({p1: ';foo;'});\n\n expect(spec.combineSlotUrlParams([\n {p1: 'foo', p2: 'test'},\n {p2: 'test', p3: 'bar'},\n {p1: 'bar', p2: 'test', p4: 'bar'}\n ])).to.deep.equal({p1: 'foo;;bar', p2: 'test', p3: ';bar;', p4: ';;bar'});\n\n expect(spec.combineSlotUrlParams([\n {p1: 'foo', p2: 'test', p3: 'baz'},\n {p1: 'foo', p2: 'bar'},\n {p2: 'test'}\n ])).to.deep.equal({p1: 'foo;foo;', p2: 'test;bar;test', p3: 'baz;;'});\n });\n });\n\n describe('createSlotParams', function () {\n it('should return a valid slot params object', function () {\n const localBidderRequest = Object.assign({}, bidderRequest);\n const expectedQuery = {\n 'account_id': '14062',\n 'site_id': '70608',\n 'zone_id': '335918',\n 'size_id': 15,\n 'alt_size_ids': '43',\n 'p_pos': 'atf',\n 'rp_secure': /[01]/,\n 'tk_flint': INTEGRATION,\n 'x_source.tid': 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n 'p_screen_res': /\\d+x\\d+/,\n 'tk_user_key': '12346',\n 'kw': 'a,b,c',\n 'tg_v.ucat': 'new',\n 'tg_v.lastsearch': 'iphone',\n 'tg_v.likes': 'sports,video games',\n 'tg_i.rating': '5-star',\n 'tg_i.prodtype': 'tech,mobile',\n 'tg_fl.eid': 'div-1',\n 'rf': 'localhost'\n };\n\n const slotParams = spec.createSlotParams(bidderRequest.bids[0], localBidderRequest);\n\n // test that all values above are both present and correct\n Object.keys(expectedQuery).forEach(key => {\n const value = expectedQuery[key];\n if (value instanceof RegExp) {\n expect(slotParams[key]).to.match(value);\n } else {\n expect(slotParams[key]).to.equal(value);\n }\n });\n });\n\n it('should not fail if keywords param is not an array', function () {\n bidderRequest.bids[0].params.keywords = 'a,b,c';\n const slotParams = spec.createSlotParams(bidderRequest.bids[0], bidderRequest);\n expect(slotParams.kw).to.equal('a,b,c');\n });\n\n it('should pass along o_ae param when fledge is enabled', () => {\n const localBidRequest = Object.assign({}, bidderRequest.bids[0]);\n localBidRequest.ortb2Imp.ext.ae = true;\n\n const slotParams = spec.createSlotParams(localBidRequest, bidderRequest);\n\n expect(slotParams['o_ae']).to.equal(1)\n });\n\n it('should pass along desired segtaxes, but not non-desired ones', () => {\n const localBidderRequest = Object.assign({}, bidderRequest);\n localBidderRequest.refererInfo = {domain: 'bob'};\n config.setConfig({\n rubicon: {\n sendUserSegtax: [9],\n sendSiteSegtax: [10]\n }\n });\n localBidderRequest.ortb2.user = {\n data: [{\n ext: {\n segtax: '404'\n },\n segment: [{id: 5}, {id: 6}]\n }, {\n ext: {\n segtax: '508'\n },\n segment: [{id: 5}, {id: 2}]\n }, {\n ext: {\n segtax: '9'\n },\n segment: [{id: 1}, {id: 2}]\n }]\n }\n localBidderRequest.ortb2.site = {\n content: {\n data: [{\n ext: {\n segtax: '10'\n },\n segment: [{id: 2}, {id: 3}]\n }, {\n ext: {\n segtax: '507'\n },\n segment: [{id: 3}, {id: 4}]\n }]\n }\n }\n const slotParams = spec.createSlotParams(bidderRequest.bids[0], localBidderRequest);\n expect(slotParams['tg_i.tax507']).is.equal('3,4');\n expect(slotParams['tg_v.tax508']).is.equal('5,2');\n expect(slotParams['tg_v.tax9']).is.equal('1,2');\n expect(slotParams['tg_i.tax10']).is.equal('2,3');\n expect(slotParams['tg_v.tax404']).is.equal(undefined);\n });\n\n it('should support IAB segtax 7 in site segments', () => {\n const localBidderRequest = Object.assign({}, bidderRequest);\n localBidderRequest.refererInfo = {domain: 'bob'};\n config.setConfig({\n rubicon: {\n sendUserSegtax: [4],\n sendSiteSegtax: [1, 2, 5, 6, 7]\n }\n });\n localBidderRequest.ortb2.site = {\n content: {\n data: [{\n ext: {\n segtax: '7'\n },\n segment: [{id: 8}, {id: 9}]\n }]\n }\n };\n const slotParams = spec.createSlotParams(bidderRequest.bids[0], localBidderRequest);\n expect(slotParams['tg_i.tax7']).to.equal('8,9');\n });\n\n it('should add p_site.mobile if mobile is a number in ortb2.site', function () {\n // Set up a bidRequest with mobile property as a number\n const localBidderRequest = Object.assign({}, bidderRequest);\n localBidderRequest.bids[0].ortb2 = {\n site: {\n mobile: 1 // Valid mobile value (number)\n }\n };\n\n // Call the function\n const slotParams = spec.createSlotParams(localBidderRequest.bids[0], localBidderRequest);\n // Check that p_site.mobile was added to the slotParams with the correct value\n expect(slotParams['p_site.mobile']).to.equal(1);\n });\n it('should not add p_site.mobile if mobile is not a number in ortb2.site', function () {\n // Set up a bidRequest with mobile property as a string (invalid value)\n const localBidderRequest = Object.assign({}, bidderRequest);\n localBidderRequest.bids[0].ortb2 = {\n site: {\n mobile: 'not-a-number' // Invalid mobile value (string)\n }\n };\n\n // Call the function\n const slotParams = spec.createSlotParams(localBidderRequest.bids[0], localBidderRequest);\n\n // Check that p_site.mobile is not added to the slotParams\n expect(slotParams['p_site.mobile']).to.be.undefined;\n });\n });\n\n describe('classifiedAsVideo', function () {\n it('should return true if mediaTypes is video', function () {\n const bidderRequest = createVideoBidderRequest();\n const bidClassifiedAsVideo = classifiedAsVideo(bidderRequest.bids[0]);\n expect(bidClassifiedAsVideo).is.equal(true);\n });\n\n it('should return false if trying to use legacy mediaType with video', function () {\n const bidderRequest = createVideoBidderRequest();\n delete bidderRequest.bids[0].mediaTypes;\n bidderRequest.bids[0].mediaType = 'video';\n const legacyVideoTypeBidRequest = classifiedAsVideo(bidderRequest.bids[0]);\n expect(legacyVideoTypeBidRequest).is.equal(false);\n });\n\n it('should return false if bid.mediaTypes is not equal to video', function () {\n expect(classifiedAsVideo({\n mediaType: 'banner'\n })).is.equal(false);\n });\n\n it('should return false if bid.mediaTypes is not defined', function () {\n expect(classifiedAsVideo({})).is.equal(false);\n });\n\n it('Should return false if both banner and video mediaTypes are set and params.video is not an object', function () {\n removeVideoParamFromBidderRequest(bidderRequest);\n const bid = bidderRequest.bids[0];\n bid.mediaTypes.banner = {flag: true};\n expect(classifiedAsVideo(bid)).to.equal(false);\n });\n it('Should return true if both banner and video mediaTypes are set and params.video is an object', function () {\n removeVideoParamFromBidderRequest(bidderRequest);\n const bid = bidderRequest.bids[0];\n bid.mediaTypes.banner = {flag: true};\n bid.params.video = {};\n expect(classifiedAsVideo(bid)).to.equal(true);\n });\n\n it('Should return true and create a params.video object if one is not already present', function () {\n removeVideoParamFromBidderRequest(bidderRequest);\n const bid = bidderRequest.bids[0]\n expect(classifiedAsVideo(bid)).to.equal(true);\n expect(bid.params.video).to.not.be.undefined;\n });\n });\n\n if (FEATURES.NATIVE) {\n describe('when there is a native request', function () {\n describe('and bidonmultiformat = undefined (false)', () => {\n it('should send only one native bid to PBS endpoint', function () {\n const bidReq = addNativeToBidRequest(bidderRequest);\n bidReq.bids[0].params = {\n video: {}\n }\n const [request] = spec.buildRequests(bidReq.bids, bidReq);\n expect(request.method).to.equal('POST');\n expect(request.url).to.equal('https://prebid-server.rubiconproject.com/openrtb2/auction');\n expect(request.data.imp).to.have.nested.property('[0].native');\n });\n\n it('should not break if position is set and no video MT', function () {\n const bidReq = addNativeToBidRequest(bidderRequest);\n delete bidReq.bids[0].mediaTypes.banner;\n bidReq.bids[0].params = {\n position: 'atf'\n }\n const [request] = spec.buildRequests(bidReq.bids, bidReq);\n expect(request.method).to.equal('POST');\n expect(request.url).to.equal('https://prebid-server.rubiconproject.com/openrtb2/auction');\n expect(request.data.imp).to.have.nested.property('[0].native');\n });\n\n describe('that contains also a banner mediaType', function () {\n it('should send the banner to fastlane BUT NOT the native bid because missing params.video', function() {\n const bidReq = addNativeToBidRequest(bidderRequest);\n bidReq.bids[0].mediaTypes.banner = {\n sizes: [[300, 250]]\n }\n const [request] = spec.buildRequests(bidReq.bids, bidReq);\n expect(request.method).to.equal('GET');\n expect(request.url).to.include('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n });\n });\n describe('with another banner request', () => {\n it('should send the native bid to PBS and the banner to fastlane', function() {\n const bidReq = addNativeToBidRequest(bidderRequest);\n bidReq.bids[0].params = { video: {} };\n // add second bidRqeuest\n bidReq.bids.push({\n mediaTypes: {\n banner: {\n sizes: [[300, 250]]\n }\n },\n params: bidReq.bids[0].params\n })\n const [request1, request2] = spec.buildRequests(bidReq.bids, bidReq);\n expect(request1.method).to.equal('POST');\n expect(request1.url).to.equal('https://prebid-server.rubiconproject.com/openrtb2/auction');\n expect(request1.data.imp).to.have.nested.property('[0].native');\n expect(request2.method).to.equal('GET');\n expect(request2.url).to.include('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n });\n });\n });\n\n describe('with bidonmultiformat === true', () => {\n it('should send two requests, to PBS with 2 imps', () => {\n const bidReq = addNativeToBidRequest(bidderRequest);\n // add second mediaType\n bidReq.bids[0].mediaTypes = {\n ...bidReq.bids[0].mediaTypes,\n banner: {\n sizes: [[300, 250]]\n }\n };\n bidReq.bids[0].params.bidonmultiformat = true;\n const [pbsRequest, fastlanteRequest] = spec.buildRequests(bidReq.bids, bidReq);\n expect(pbsRequest.method).to.equal('POST');\n expect(pbsRequest.url).to.equal('https://prebid-server.rubiconproject.com/openrtb2/auction');\n expect(pbsRequest.data.imp).to.have.nested.property('[0].native');\n expect(fastlanteRequest.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n });\n\n it('should include multiformat data in the pbs request', () => {\n const bidReq = addNativeToBidRequest(bidderRequest);\n // add second mediaType\n bidReq.bids[0].mediaTypes = {\n ...bidReq.bids[0].mediaTypes,\n banner: {\n sizes: [[300, 250]]\n }\n };\n bidReq.bids[0].params.bidonmultiformat = true;\n const [pbsRequest, fastlanteRequest] = spec.buildRequests(bidReq.bids, bidReq);\n expect(pbsRequest.data.imp[0].ext.prebid.bidder.rubicon.formats).to.deep.equal(['native', 'banner']);\n });\n\n it('should include multiformat data in the fastlane request', () => {\n const bidReq = addNativeToBidRequest(bidderRequest);\n // add second mediaType\n bidReq.bids[0].mediaTypes = {\n ...bidReq.bids[0].mediaTypes,\n banner: {\n sizes: [[300, 250]]\n }\n };\n bidReq.bids[0].params.bidonmultiformat = true;\n const [pbsRequest, fastlanteRequest] = spec.buildRequests(bidReq.bids, bidReq);\n const formatsIncluded = fastlanteRequest.data.indexOf('formats=native%2Cbanner') !== -1;\n expect(formatsIncluded).to.equal(true);\n });\n });\n describe('with bidonmultiformat === false', () => {\n it('should send only banner request because there\\'s no params.video', () => {\n const bidReq = addNativeToBidRequest(bidderRequest);\n // add second mediaType\n bidReq.bids[0].mediaTypes = {\n ...bidReq.bids[0].mediaTypes,\n banner: {\n sizes: [[300, 250]]\n }\n };\n\n const [fastlanteRequest, ...others] = spec.buildRequests(bidReq.bids, bidReq);\n expect(fastlanteRequest.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n expect(others).to.be.empty;\n });\n\n it('should not send native to PBS even if there\\'s param.video', () => {\n const bidReq = addNativeToBidRequest(bidderRequest);\n // add second mediaType\n bidReq.bids[0].mediaTypes = {\n ...bidReq.bids[0].mediaTypes,\n banner: {\n sizes: [[300, 250]]\n }\n };\n // by adding this, when bidonmultiformat is false, the native request will be sent to pbs\n bidReq.bids[0].params = {\n video: {}\n }\n const [fastlaneRequest, ...other] = spec.buildRequests(bidReq.bids, bidReq);\n expect(fastlaneRequest.method).to.equal('GET');\n expect(fastlaneRequest.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n expect(other).to.be.empty;\n });\n });\n\n describe('with duplicate adUnitCodes', () => {\n it('should increment PBS request imp[].id starting at 2', () => {\n const nativeBidderRequest = addNativeToBidRequest(bidderRequest, {twin: true});\n const request = converter.toORTB({bidderRequest: nativeBidderRequest, bidRequests: nativeBidderRequest.bids});\n for (let i = 0; i < nativeBidderRequest.bids.length; i++) {\n var adUnitCode = nativeBidderRequest.bids[i].adUnitCode;\n if (i === 0) {\n expect(request.imp[i].id).to.equal(adUnitCode);\n } else {\n expect(request.imp[i].id).to.equal(adUnitCode + (i + 1));\n }\n }\n });\n });\n });\n }\n });\n\n describe('interpretResponse', function () {\n describe('for fastlane', function () {\n it('should handle a success response and sort by cpm', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '6',\n 'adomain': ['test.com'],\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.811,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '15_tier_all_test'\n ]\n }\n ]\n },\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '43',\n 'ad_id': '7',\n 'adomain': ['test.com'],\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ]\n }\n ]\n };\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n\n expect(bids).to.be.lengthOf(2);\n\n expect(bids[0].width).to.equal(320);\n expect(bids[0].height).to.equal(50);\n expect(bids[0].cpm).to.equal(0.911);\n expect(bids[0].ttl).to.equal(360);\n expect(bids[0].netRevenue).to.equal(true);\n expect(bids[0].rubicon.advertiserId).to.equal(7);\n expect(bids[0].rubicon.networkId).to.equal(8);\n expect(bids[0].creativeId).to.equal('crid-9');\n expect(bids[0].currency).to.equal('USD');\n expect(bids[0].meta.mediaType).to.equal('banner');\n expect(String(bids[0].meta.advertiserDomains)).to.equal('test.com');\n expect(bids[0].ad).to.contain(`alert('foo')`)\n .and.to.contain(`<html>`)\n .and.to.contain(`<div data-rp-impression-id='153dc240-8229-4604-b8f5-256933b9374d'>`);\n expect(bids[0].rubiconTargeting.rpfl_elemid).to.equal('/19968336/header-bid-tag-0');\n expect(bids[0].rubiconTargeting.rpfl_14062).to.equal('43_tier_all_test');\n\n expect(bids[1].width).to.equal(300);\n expect(bids[1].height).to.equal(250);\n expect(bids[1].cpm).to.equal(0.811);\n expect(bids[1].ttl).to.equal(360);\n expect(bids[1].netRevenue).to.equal(true);\n expect(bids[1].rubicon.advertiserId).to.equal(7);\n expect(bids[1].rubicon.networkId).to.equal(8);\n expect(bids[1].creativeId).to.equal('crid-9');\n expect(bids[1].currency).to.equal('USD');\n expect(bids[1].ad).to.contain(`alert('foo')`)\n .and.to.contain(`<html>`)\n .and.to.contain(`<div data-rp-impression-id='153dc240-8229-4604-b8f5-256933b9374c'>`);\n expect(bids[1].rubiconTargeting.rpfl_elemid).to.equal('/19968336/header-bid-tag-0');\n expect(bids[1].rubiconTargeting.rpfl_14062).to.equal('15_tier_all_test');\n });\n\n it('should pass netRevenue correctly if set in setConfig', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '6',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.811,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '15_tier_all_test'\n ]\n }\n ]\n },\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '43',\n 'ad_id': '7',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ]\n }\n ]\n };\n\n // Set to false => false\n config.setConfig({\n rubicon: {\n netRevenue: false\n }\n });\n let bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids).to.be.lengthOf(2);\n expect(bids[0].netRevenue).to.equal(false);\n expect(bids[1].netRevenue).to.equal(false);\n\n // Set to true => true\n config.setConfig({\n rubicon: {\n netRevenue: true\n }\n });\n bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids).to.be.lengthOf(2);\n expect(bids[0].netRevenue).to.equal(true);\n expect(bids[1].netRevenue).to.equal(true);\n\n // Set to undefined => true\n config.setConfig({\n rubicon: {\n netRevenue: undefined\n }\n });\n bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids).to.be.lengthOf(2);\n expect(bids[0].netRevenue).to.equal(true);\n expect(bids[1].netRevenue).to.equal(true);\n\n // Set to string => true\n config.setConfig({\n rubicon: {\n netRevenue: 'someString'\n }\n });\n bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids).to.be.lengthOf(2);\n expect(bids[0].netRevenue).to.equal(true);\n expect(bids[1].netRevenue).to.equal(true);\n\n config.resetConfig();\n });\n it('should use \"network-advertiser\" if no creative_id', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43, 10, 2\n ],\n 'tracking': '',\n 'inventory': {}\n };\n\n response.ads = [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '6',\n 'advertiser': 7,\n 'network': 8,\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.811,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '15_tier_all_test'\n ]\n }\n ]\n }\n ];\n\n let bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids[0].creativeId).to.equal('8-7');\n\n response.ads = [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '43',\n 'ad_id': '7',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ]\n }\n ];\n\n bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids[0].creativeId).to.equal('-');\n\n response.ads = [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '10',\n 'ad_id': '7',\n 'network': 8,\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '10_tier_all_test'\n ]\n }\n ]\n }\n ];\n\n bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids[0].creativeId).to.equal('8-');\n\n response.ads = [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '2',\n 'ad_id': '7',\n 'advertiser': 7,\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '2_tier_all_test'\n ]\n }\n ]\n }\n ];\n\n bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids[0].creativeId).to.equal('-7');\n });\n\n it('should be fine with a CPM of 0', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [{\n 'status': 'ok',\n 'cpm': 0,\n 'size_id': 15\n }]\n };\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n\n expect(bids).to.be.lengthOf(1);\n expect(bids[0].cpm).to.be.equal(0);\n });\n\n it('should handle DSA object from response', function() {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '6',\n 'adomain': ['test.com'],\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.811,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '15_tier_all_test'\n ]\n }\n ],\n 'dsa': {\n 'behalf': 'Advertiser',\n 'paid': 'Advertiser',\n 'transparency': [{\n 'domain': 'dsp1domain.com',\n 'dsaparams': [1, 2]\n }],\n 'adrender': 1\n }\n },\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '43',\n 'ad_id': '7',\n 'adomain': ['test.com'],\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ],\n 'dsa': {}\n }\n ]\n };\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids).to.be.lengthOf(2);\n expect(bids[1].meta.dsa).to.have.property('behalf');\n expect(bids[1].meta.dsa).to.have.property('paid');\n\n // if we dont have dsa field in response or the dsa object is empty\n expect(bids[0].meta).to.not.have.property('dsa');\n })\n\n it('should create bids with matching requestIds if imp id matches', function () {\n const bidRequests = [{\n 'bidder': 'rubicon',\n 'params': {\n 'accountId': 1001,\n 'siteId': 12345,\n 'zoneId': 67890,\n 'floor': null\n },\n 'mediaTypes': {\n 'banner': {\n 'sizes': [[300, 250]]\n }\n },\n 'adUnitCode': 'div-gpt-ad-1460505748561-0',\n 'transactionId': '404a7b28-f276-41cc-a5cf-c1d3dc5671f9',\n 'sizes': [[300, 250]],\n 'bidId': '557ba307cef098',\n 'bidderRequestId': '46a00704ffeb7',\n 'auctionId': '3fdc6494-da94-44a0-a292-b55a90b08b2c',\n 'src': 'client',\n 'bidRequestsCount': 1,\n 'bidderRequestsCount': 1,\n 'bidderWinsCount': 0,\n 'startTime': 1615412098213\n }, {\n 'bidder': 'rubicon',\n 'params': {\n 'accountId': 1001,\n 'siteId': 12345,\n 'zoneId': 67890,\n 'floor': null\n },\n 'mediaTypes': {\n 'banner': {\n 'sizes': [[300, 250]]\n }\n },\n 'adUnitCode': 'div-gpt-ad-1460505748561-1',\n 'transactionId': '404a7b28-f276-41cc-a5cf-c1d3dc5671f9',\n 'sizes': [[300, 250]],\n 'bidId': '456gt123jkl098',\n 'bidderRequestId': '46a00704ffeb7',\n 'auctionId': '3fdc6494-da94-44a0-a292-b55a90b08b2c',\n 'src': 'client',\n 'bidRequestsCount': 1,\n 'bidderRequestsCount': 1,\n 'bidderWinsCount': 0,\n 'startTime': 1615412098213\n }];\n\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '6',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.811,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '15_tier_all_test'\n ]\n }\n ]\n },\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '7',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ]\n },\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '43',\n 'ad_id': '7',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 1.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ]\n }\n ]\n };\n\n config.setConfig({ multibid: [{bidder: 'rubicon', maxbids: 2, targetbiddercodeprefix: 'rubi'}] });\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidRequests\n });\n\n expect(bids).to.be.lengthOf(3);\n expect(bids[0].requestId).to.not.equal(bids[1].requestId);\n expect(bids[1].requestId).to.equal(bids[2].requestId);\n });\n\n it('should handle an error with no ads returned', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': []\n };\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n\n expect(bids).to.be.lengthOf(0);\n });\n\n it('Should support recieving an auctionConfig and pass it along to Prebid', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [{\n 'status': 'ok',\n 'cpm': 0,\n 'size_id': 15\n }],\n 'component_auction_config': [{\n 'random': 'value',\n 'bidId': '5432'\n },\n {\n 'random': 'string',\n 'bidId': '6789'\n }]\n };\n\n const {bids, paapi} = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n\n expect(bids).to.be.lengthOf(1);\n expect(paapi[0].bidId).to.equal('5432');\n expect(paapi[0].config.random).to.equal('value');\n expect(paapi[1].bidId).to.equal('6789');\n });\n\n it('should handle an error', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [{\n 'status': 'not_ok',\n }]\n };\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n\n expect(bids).to.be.lengthOf(0);\n });\n\n it('should handle an error because of malformed json response', function () {\n const response = '{test{';\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n\n expect(bids).to.be.lengthOf(0);\n });\n\n it('should handle a bidRequest argument of type Array', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [{\n 'status': 'ok',\n 'cpm': 0,\n 'size_id': 15\n }]\n };\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: [utils.deepClone(bidderRequest.bids[0])]\n });\n\n expect(bids).to.be.lengthOf(1);\n expect(bids[0].cpm).to.be.equal(0);\n });\n\n it('should use ads.emulated_format if defined for bid.meta.mediaType', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '6',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.811,\n 'emulated_format': 'video',\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '15_tier_all_test'\n ]\n }\n ]\n },\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '43',\n 'ad_id': '7',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ]\n }\n ]\n };\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids[0].meta.mediaType).to.equal('banner');\n expect(bids[1].meta.mediaType).to.equal('video');\n });\n\n describe('singleRequest enabled', function () {\n it('handles bidRequest of type Array and returns associated adUnits', function () {\n const overrideMap = [];\n overrideMap[0] = {impression_id: '1'};\n\n const stubAds = [];\n for (let i = 0; i < 10; i++) {\n stubAds.push(createResponseAdByIndex(i, sizeMap[i].sizeId, overrideMap));\n }\n\n const stubBids = [];\n for (let i = 0; i < 10; i++) {\n stubBids.push(createBidRequestByIndex(i, sizeMap[i].sizeAsArray.slice()));\n }\n\n const bids = spec.interpretResponse({\n body: {\n 'status': 'ok',\n 'site_id': '1100',\n 'account_id': 14062,\n 'zone_id': 2100,\n 'size_id': '1',\n 'tracking': '',\n 'inventory': {},\n 'ads': stubAds\n }\n }, {bidRequest: stubBids});\n expect(bids).to.be.a('array').with.lengthOf(10);\n\n bids.forEach((bid) => {\n expect(bid).to.be.a('object');\n expect(bid).to.have.property('cpm').that.is.a('number');\n expect(bid).to.have.property('width').that.is.a('number');\n expect(bid).to.have.property('height').that.is.a('number');\n\n // verify that result bid 'sizeId' links to a size from the sizeMap\n const size = getSizeIdForBid(sizeMap, bid);\n expect(size).to.be.a('object');\n\n // use 'size' to verify that result bid links to the 'response.ad' passed to function\n const associateAd = getResponseAdBySize(stubAds, size);\n expect(associateAd).to.be.a('object');\n expect(associateAd).to.have.property('creative_id').that.is.a('string');\n\n // use 'size' to verify that result bid links to the 'bidRequest' passed to function\n const associateBidRequest = getBidRequestBySize(stubBids, size);\n expect(associateBidRequest).to.be.a('object');\n expect(associateBidRequest).to.have.property('bidId').that.is.a('string');\n\n // verify all bid properties set using 'ad' and 'bidRequest' match\n // 'ad.creative_id === bid.creativeId'\n expect(bid.requestId).to.equal(associateBidRequest.bidId);\n // 'bid.requestId === bidRequest.bidId'\n expect(bid.creativeId).to.equal(associateAd.creative_id);\n });\n });\n\n it('handles incorrect adUnits length by returning all bids with matching ads', function () {\n const overrideMap = [];\n overrideMap[0] = {impression_id: '1'};\n\n const stubAds = [];\n for (let i = 0; i < 6; i++) {\n stubAds.push(createResponseAdByIndex(i, sizeMap[i].sizeId, overrideMap));\n }\n\n const stubBids = [];\n for (let i = 0; i < 10; i++) {\n stubBids.push(createBidRequestByIndex(i, sizeMap[i].sizeAsArray.slice()));\n }\n\n const bids = spec.interpretResponse({\n body: {\n 'status': 'ok',\n 'site_id': '1100',\n 'account_id': 14062,\n 'zone_id': 2100,\n 'size_id': '1',\n 'tracking': '',\n 'inventory': {},\n 'ads': stubAds\n }\n }, {bidRequest: stubBids});\n\n // no bids expected because response didn't match requested bid number\n expect(bids).to.be.a('array').with.lengthOf(6);\n });\n\n it('skips adUnits with error status and returns all bids with ok status', function () {\n const stubAds = [];\n // Create overrides to break associations between bids and ads\n // Each override should cause one less bid to be returned by interpretResponse\n const overrideMap = [];\n overrideMap[0] = {impression_id: '1'};\n overrideMap[2] = {status: 'error'};\n overrideMap[4] = {status: 'error'};\n overrideMap[7] = {status: 'error'};\n overrideMap[8] = {status: 'error'};\n\n for (let i = 0; i < 10; i++) {\n stubAds.push(createResponseAdByIndex(i, sizeMap[i].sizeId, overrideMap));\n }\n\n const stubBids = [];\n for (let i = 0; i < 10; i++) {\n stubBids.push(createBidRequestByIndex(i, sizeMap[i].sizeAsArray.slice()));\n }\n\n const bids = spec.interpretResponse({\n body: {\n 'status': 'error',\n 'site_id': '1100',\n 'account_id': 14062,\n 'zone_id': 2100,\n 'size_id': '1',\n 'tracking': '',\n 'inventory': {},\n 'ads': stubAds\n }\n }, {bidRequest: stubBids});\n expect(bids).to.be.a('array').with.lengthOf(6);\n\n bids.forEach((bid) => {\n expect(bid).to.be.a('object');\n expect(bid).to.have.property('cpm').that.is.a('number');\n expect(bid).to.have.property('width').that.is.a('number');\n expect(bid).to.have.property('height').that.is.a('number');\n\n // verify that result bid 'sizeId' links to a size from the sizeMap\n const size = getSizeIdForBid(sizeMap, bid);\n expect(size).to.be.a('object');\n\n // use 'size' to verify that result bid links to the 'response.ad' passed to function\n const associateAd = getResponseAdBySize(stubAds, size);\n expect(associateAd).to.be.a('object');\n expect(associateAd).to.have.property('creative_id').that.is.a('string');\n expect(associateAd).to.have.property('status').that.is.a('string');\n expect(associateAd.status).to.equal('ok');\n\n // use 'size' to verify that result bid links to the 'bidRequest' passed to function\n const associateBidRequest = getBidRequestBySize(stubBids, size);\n expect(associateBidRequest).to.be.a('object');\n expect(associateBidRequest).to.have.property('bidId').that.is.a('string');\n\n // verify all bid properties set using 'ad' and 'bidRequest' match\n // 'ad.creative_id === bid.creativeId'\n expect(bid.requestId).to.equal(associateBidRequest.bidId);\n // 'bid.requestId === bidRequest.bidId'\n expect(bid.creativeId).to.equal(associateAd.creative_id);\n });\n });\n });\n });\n\n if (FEATURES.VIDEO) {\n describe('for video', function () {\n it('should register a successful bid', function () {\n const bidderRequest = createVideoBidderRequest();\n const response = {\n cur: 'USD',\n seatbid: [{\n bid: [{\n id: '0',\n impid: '/19968336/header-bid-tag-0',\n adomain: ['test.com'],\n price: 2,\n crid: '4259970',\n ext: {\n bidder: {\n rp: {\n mime: 'application/javascript',\n size_id: 201,\n advid: 12345\n }\n },\n prebid: {\n targeting: {\n hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'\n },\n type: 'video'\n }\n }\n }],\n group: 0,\n seat: 'rubicon'\n }],\n };\n\n const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});\n\n const bids = spec.interpretResponse({body: response}, {data: request});\n\n expect(bids).to.be.lengthOf(1);\n\n expect(bids[0].seatBidId).to.equal('0');\n expect(bids[0].creativeId).to.equal('4259970');\n expect(bids[0].cpm).to.equal(2);\n expect(bids[0].ttl).to.equal(360);\n expect(bids[0].netRevenue).to.equal(true);\n expect(bids[0].adserverTargeting).to.deep.equal({hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'});\n expect(bids[0].mediaType).to.equal('video');\n expect(bids[0].meta.mediaType).to.equal('video');\n expect(String(bids[0].meta.advertiserDomains)).to.equal('test.com');\n expect(bids[0].meta.advertiserId).to.equal(12345);\n expect(bids[0].bidderCode).to.equal('rubicon');\n expect(bids[0].currency).to.equal('USD');\n expect(bids[0].width).to.equal(640);\n expect(bids[0].height).to.equal(480);\n });\n });\n }\n\n if (FEATURES.NATIVE) {\n describe('for native', () => {\n it('should get a native bid', () => {\n const nativeBidderRequest = addNativeToBidRequest(bidderRequest);\n const request = converter.toORTB({bidderRequest: nativeBidderRequest, bidRequests: nativeBidderRequest.bids});\n const response = getNativeResponse({impid: request.imp[0].id});\n const bids = spec.interpretResponse({body: response}, {data: request});\n expect(bids).to.have.nested.property('[0].native');\n });\n it('should set 0 to bids width and height if `w` and `h` in response object not defined', () => {\n const nativeBidderRequest = addNativeToBidRequest(bidderRequest);\n const request = converter.toORTB({bidderRequest: nativeBidderRequest, bidRequests: nativeBidderRequest.bids});\n const response = getNativeResponse({impid: request.imp[0].id});\n delete response.seatbid[0].bid[0].w;\n delete response.seatbid[0].bid[0].h\n const bids = spec.interpretResponse({body: response}, {data: request});\n expect(bids[0].width).to.equal(0);\n expect(bids[0].height).to.equal(0);\n });\n });\n }\n\n if (FEATURES.VIDEO) {\n describe('for outstream video', function () {\n const sandbox = sinon.createSandbox();\n beforeEach(function () {\n config.setConfig({rubicon: {\n rendererConfig: {\n align: 'left',\n closeButton: true,\n collapse: false\n },\n rendererUrl: 'https://example.test/renderer.js'\n }});\n window.MagniteApex = {\n renderAd: function() {\n return null;\n }\n }\n });\n\n afterEach(function () {\n sandbox.restore();\n delete window.MagniteApex;\n });\n\n it('should register a successful bid', function () {\n const bidderRequest = createVideoBidderRequestOutstream();\n const response = {\n cur: 'USD',\n seatbid: [{\n bid: [{\n id: '0',\n impid: '/19968336/header-bid-tag-0',\n adomain: ['test.com'],\n price: 2,\n crid: '4259970',\n ext: {\n bidder: {\n rp: {\n mime: 'application/javascript',\n size_id: 201,\n advid: 12345\n }\n },\n prebid: {\n targeting: {\n hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'\n },\n type: 'video'\n }\n }\n }],\n group: 0,\n seat: 'rubicon'\n }],\n };\n\n const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});\n\n const bids = spec.interpretResponse({body: response}, { data: request });\n\n expect(bids).to.be.lengthOf(1);\n\n expect(bids[0].seatBidId).to.equal('0');\n expect(bids[0].creativeId).to.equal('4259970');\n expect(bids[0].cpm).to.equal(2);\n expect(bids[0].ttl).to.equal(360);\n expect(bids[0].netRevenue).to.equal(true);\n expect(bids[0].adserverTargeting).to.deep.equal({hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'});\n expect(bids[0].mediaType).to.equal('video');\n expect(bids[0].meta.mediaType).to.equal('video');\n expect(String(bids[0].meta.advertiserDomains)).to.equal('test.com');\n expect(bids[0].meta.advertiserId).to.equal(12345);\n expect(bids[0].bidderCode).to.equal('rubicon');\n expect(bids[0].currency).to.equal('USD');\n expect(bids[0].width).to.equal(640);\n expect(bids[0].height).to.equal(320);\n // check custom renderer\n expect(typeof bids[0].renderer).to.equal('object');\n expect(bids[0].renderer.getConfig()).to.deep.equal({\n align: 'left',\n closeButton: true,\n collapse: false\n });\n expect(bids[0].renderer.url).to.equal('https://example.test/renderer.js');\n });\n\n it('should render ad with Magnite renderer', function () {\n const bidderRequest = createVideoBidderRequestOutstream();\n const response = {\n cur: 'USD',\n seatbid: [{\n bid: [{\n id: '0',\n impid: '/19968336/header-bid-tag-0',\n adomain: ['test.com'],\n price: 2,\n crid: '4259970',\n ext: {\n bidder: {\n rp: {\n mime: 'application/javascript',\n size_id: 201,\n advid: 12345\n }\n },\n prebid: {\n targeting: {\n hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'\n },\n type: 'video'\n }\n },\n nurl: 'https://test.com/vast.xml'\n }],\n group: 0,\n seat: 'rubicon'\n }],\n };\n\n const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});\n\n sinon.spy(window.MagniteApex, 'renderAd');\n\n const bids = spec.interpretResponse({body: response}, {data: request});\n const bid = bids[0];\n bid.adUnitCode = 'outstream_video1_placement';\n const adUnit = document.createElement('div');\n const adUnitSelector = `#${bid.adUnitCode}`\n adUnit.id = bid.adUnitCode;\n document.body.appendChild(adUnit);\n\n bid.renderer.render(bid);\n\n const renderCall = window.MagniteApex.renderAd.getCall(0);\n expect(renderCall.args[0]).to.deep.equal({\n closeButton: true,\n collapse: false,\n height: 320,\n label: undefined,\n placement: {\n align: 'left',\n attachTo: adUnitSelector,\n position: 'append',\n },\n vastUrl: 'https://test.com/vast.xml',\n width: 640\n });\n // cleanup\n adUnit.parentNode.removeChild(adUnit);\n });\n\n it('should render ad with Magnite renderer without video object', function () {\n const bidderRequest = createVideoBidderRequestOutstream();\n delete bidderRequest.bids[0].params.video;\n bidderRequest.bids[0].params.bidonmultiformat = true;\n bidderRequest.bids[0].mediaTypes.video.placement = 3;\n bidderRequest.bids[0].mediaTypes.video.playerSize = [640, 480];\n\n const response = {\n cur: 'USD',\n seatbid: [{\n bid: [{\n id: '0',\n impid: '/19968336/header-bid-tag-0',\n adomain: ['test.com'],\n price: 2,\n crid: '4259970',\n ext: {\n bidder: {\n rp: {\n mime: 'application/javascript',\n size_id: 201,\n advid: 12345\n }\n },\n prebid: {\n targeting: {\n hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'\n },\n type: 'video'\n }\n },\n nurl: 'https://test.com/vast.xml'\n }],\n group: 0,\n seat: 'rubicon'\n }],\n };\n\n const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});\n\n sinon.spy(window.MagniteApex, 'renderAd');\n\n const bids = spec.interpretResponse({body: response}, {data: request});\n const bid = bids[0];\n bid.adUnitCode = 'outstream_video1_placement';\n const adUnit = document.createElement('div');\n const adUnitSelector = `#${bid.adUnitCode}`\n adUnit.id = bid.adUnitCode;\n document.body.appendChild(adUnit);\n\n bid.renderer.render(bid);\n\n const renderCall = window.MagniteApex.renderAd.getCall(0);\n expect(renderCall.args[0]).to.deep.equal({\n closeButton: true,\n collapse: false,\n height: 480,\n label: undefined,\n placement: {\n align: 'left',\n attachTo: adUnitSelector,\n position: 'append',\n },\n vastUrl: 'https://test.com/vast.xml',\n width: 640\n });\n // cleanup\n adUnit.parentNode.removeChild(adUnit);\n });\n });\n }\n\n describe('config with integration type', () => {\n it('should use the integration type provided in the config instead of the default', () => {\n config.setConfig({rubicon: {int_type: 'testType'}});\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(new URLSearchParams(request.data).get('tk_flint')).to.equal('testType_v$prebid.version$');\n });\n });\n });\n });\n\n describe('user sync', function () {\n const emilyUrl = 'https://eus.rubiconproject.com/usync.html';\n\n beforeEach(function () {\n resetUserSync();\n });\n\n it('should register the Emily iframe', function () {\n const syncs = spec.getUserSyncs({\n iframeEnabled: true\n });\n\n expect(syncs).to.deep.equal({type: 'iframe', url: emilyUrl});\n });\n\n it('should not register the Emily iframe more than once', function () {\n let syncs = spec.getUserSyncs({\n iframeEnabled: true\n });\n expect(syncs).to.deep.equal({type: 'iframe', url: emilyUrl});\n\n // when called again, should still have only been called once\n syncs = spec.getUserSyncs();\n expect(syncs).to.equal(undefined);\n });\n\n it('should pass gdpr params if consent is true', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n gdprApplies: true, consentString: 'foo'\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gdpr=1&gdpr_consent=foo`\n });\n });\n\n it('should pass gdpr params if consent is false', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n gdprApplies: false, consentString: 'foo'\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gdpr=0&gdpr_consent=foo`\n });\n });\n\n it('should pass gdpr param gdpr_consent only when gdprApplies is undefined', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n consentString: 'foo'\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gdpr_consent=foo`\n });\n });\n\n it('should pass no params if gdpr consentString is not defined', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {})).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}`\n });\n });\n\n it('should pass no params if gdpr consentString is a number', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n consentString: 0\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}`\n });\n });\n\n it('should pass no params if gdpr consentString is null', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n consentString: null\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}`\n });\n });\n\n it('should pass no params if gdpr consentString is a object', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n consentString: {}\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}`\n });\n });\n\n it('should pass no params if gdpr is not defined', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, undefined)).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}`\n });\n });\n\n it('should pass us_privacy if uspConsent is defined', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, undefined, '1NYN')).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?us_privacy=1NYN`\n });\n });\n\n it('should pass us_privacy after gdpr if both are present', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n consentString: 'foo'\n }, '1NYN')).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gdpr_consent=foo&us_privacy=1NYN`\n });\n });\n\n it('should pass gdprApplies', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n gdprApplies: true\n }, '1NYN')).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gdpr=1&us_privacy=1NYN`\n });\n });\n\n it('should pass all correctly', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n gdprApplies: true,\n consentString: 'foo'\n }, '1NYN')).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gdpr=1&gdpr_consent=foo&us_privacy=1NYN`\n });\n });\n\n it('should pass gpp params when gppConsent is present', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {}, undefined, {\n gppString: 'foo',\n applicableSections: [2]\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gpp=foo&gpp_sid=2`\n });\n });\n\n it('should pass multiple sid\\'s when multiple are present', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {}, undefined, {\n gppString: 'foo',\n applicableSections: [2, 5]\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gpp=foo&gpp_sid=2,5`\n });\n });\n });\n\n describe('get price granularity', function () {\n it('should return correct buckets for all price granularity values', function () {\n const CUSTOM_PRICE_BUCKET_ITEM = {max: 5, increment: 0.5};\n\n const mockConfig = {\n priceGranularity: undefined,\n customPriceBucket: {\n buckets: [CUSTOM_PRICE_BUCKET_ITEM]\n }\n };\n sandbox.stub(config, 'getConfig').callsFake(key => {\n return mockConfig[key];\n });\n\n [\n {key: 'low', val: {max: 5.00, increment: 0.50}},\n {key: 'medium', val: {max: 20.00, increment: 0.10}},\n {key: 'high', val: {max: 20.00, increment: 0.01}},\n {key: 'auto', val: {max: 5.00, increment: 0.05}},\n {key: 'dense', val: {max: 3.00, increment: 0.01}},\n {key: 'custom', val: CUSTOM_PRICE_BUCKET_ITEM},\n\n ].forEach(kvPair => {\n mockConfig.priceGranularity = kvPair.key;\n const result = getPriceGranularity(config);\n expect(typeof result).to.equal('object');\n expect(result).to.haveOwnProperty('ranges');\n expect(Array.isArray(result.ranges)).to.equal(true);\n expect(result.ranges.length).to.be.greaterThan(0)\n expect(result.ranges[0]).to.deep.equal(kvPair.val);\n });\n });\n });\n\n describe('Supply Chain Support', function () {\n const nodePropsOrder = ['asi', 'sid', 'hp', 'rid', 'name', 'domain'];\n let bidRequests;\n let schainConfig;\n\n const getSupplyChainConfig = () => {\n return {\n ver: '1.0',\n complete: 1,\n nodes: [\n {\n asi: 'rubicon.com',\n sid: '1234',\n hp: 1,\n rid: 'bid-request-1',\n name: 'pub one',\n domain: 'pub1.com'\n },\n {\n asi: 'theexchange.com',\n sid: '5678',\n hp: 1,\n rid: 'bid-request-2',\n name: 'pub two',\n domain: 'pub2.com'\n },\n {\n asi: 'wesellads.com',\n sid: '9876',\n hp: 1,\n rid: 'bid-request-3',\n // name: 'alladsallthetime',\n domain: 'alladsallthetime.com'\n }\n ]\n };\n };\n\n beforeEach(() => {\n bidRequests = getBidderRequest();\n schainConfig = getSupplyChainConfig();\n bidRequests.bids[0].ortb2.source.ext = bidRequests.bids[0].ortb2.source.ext || {};\n bidRequests.bids[0].ortb2.source.ext.schain = schainConfig;\n });\n\n it('should properly serialize schain object with correct delimiters', () => {\n const results = spec.buildRequests(bidRequests.bids, bidRequests);\n const numNodes = schainConfig.nodes.length;\n const schain = new URLSearchParams(results[0].data).get('rp_schain');\n\n // each node serialization should start with an !\n expect(schain.match(/!/g).length).to.equal(numNodes);\n\n // 5 commas per node plus 1 for version\n expect(schain.match(/,/g).length).to.equal(numNodes * 5 + 1);\n });\n\n it('should send the proper version for the schain', () => {\n const results = spec.buildRequests(bidRequests.bids, bidRequests);\n const schain = new URLSearchParams(results[0].data).get('rp_schain').split('!');\n const version = schain.shift().split(',')[0];\n expect(version).to.equal(bidRequests.bids[0].ortb2.source.ext.schain.ver);\n });\n\n it('should send the correct value for complete in schain', () => {\n const results = spec.buildRequests(bidRequests.bids, bidRequests);\n const schain = new URLSearchParams(results[0].data).get('rp_schain').split('!');\n const complete = schain.shift().split(',')[1];\n expect(complete).to.equal(String(bidRequests.bids[0].ortb2.source.ext.schain.complete));\n });\n\n it('should send available params in the right order', () => {\n const results = spec.buildRequests(bidRequests.bids, bidRequests);\n const schain = new URLSearchParams(results[0].data).get('rp_schain').split('!');\n schain.shift();\n\n schain.forEach((serializeNode, nodeIndex) => {\n const nodeProps = serializeNode.split(',');\n nodeProps.forEach((nodeProp, propIndex) => {\n const node = schainConfig.nodes[nodeIndex];\n const key = nodePropsOrder[propIndex];\n expect(nodeProp).to.equal(node[key] ? String(node[key]) : '');\n });\n });\n });\n\n it('should copy the schain JSON to to bid.source.ext.schain', () => {\n const bidderRequest = createVideoBidderRequest();\n const schain = getSupplyChainConfig();\n bidderRequest.bids[0].ortb2.source.ext = { schain: schain };\n const request = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request[0].data.source.ext.schain).to.deep.equal(schain);\n });\n });\n\n describe('configurable settings', function() {\n afterEach(() => {\n config.setConfig({\n rubicon: {\n bannerHost: 'rubicon',\n videoHost: 'prebid-server',\n syncHost: 'eus',\n returnVast: false\n }\n });\n config.resetConfig();\n });\n\n beforeEach(function () {\n resetUserSync();\n });\n\n it('should update fastlane endpoint if', function () {\n config.setConfig({\n rubicon: {\n bannerHost: 'fastlane-qa',\n videoHost: 'prebid-server-qa',\n syncHost: 'eus-qa',\n returnVast: true\n }\n });\n\n // banner\n const bannerBidderRequest = createGdprBidderRequest(false);\n const [bannerRequest] = spec.buildRequests(bannerBidderRequest.bids, bannerBidderRequest);\n expect(bannerRequest.url).to.equal('https://fastlane-qa.rubiconproject.com/a/api/fastlane.json');\n\n // video and returnVast\n const videoBidderRequest = createVideoBidderRequest();\n const [videoRequest] = spec.buildRequests(videoBidderRequest.bids, videoBidderRequest);\n const post = videoRequest.data;\n expect(videoRequest.url).to.equal('https://prebid-server-qa.rubiconproject.com/openrtb2/auction');\n expect(post.ext.prebid.cache.vastxml).to.have.property('returnCreative').that.is.an('boolean');\n expect(post.ext.prebid.cache.vastxml.returnCreative).to.equal(true);\n\n // user sync\n const syncs = spec.getUserSyncs({\n iframeEnabled: true\n });\n expect(syncs).to.deep.equal({type: 'iframe', url: 'https://eus-qa.rubiconproject.com/usync.html'});\n });\n });\n});\n\nfunction addNativeToBidRequest(bidderRequest, options = {twin: false}) {\n const nativeOrtbRequest = {\n assets: [{\n id: 0,\n required: 1,\n title: {\n len: 140\n }\n },\n {\n id: 1,\n required: 1,\n img: {\n type: 3,\n w: 300,\n h: 600\n }\n },\n {\n id: 2,\n required: 1,\n data: {\n type: 1\n }\n }]\n };\n bidderRequest.refererInfo = {\n page: 'localhost'\n }\n const numBids = !options.twin ? 1 : 2;\n for (let i = 0; i < numBids; i++) {\n bidderRequest.bids[i] = {\n bidder: 'rubicon',\n params: {\n accountId: '14062',\n siteId: '70608',\n zoneId: '335918',\n },\n adUnitCode: '/19968336/header-bid-tag-0',\n code: 'div-1',\n bidId: '2ffb201a808da7',\n bidderRequestId: '178e34bad3658f',\n auctionId: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n transactionId: 'd45dd707-a418-42ec-b8a7-b70a6c6fab0b',\n mediaTypes: {\n native: {\n ortb: {\n ...nativeOrtbRequest\n }\n }\n },\n nativeOrtbRequest\n }\n }\n return bidderRequest;\n}\n\nfunction getNativeResponse(options = {impid: 1234}) {\n return {\n 'id': 'd7786a80-bfb4-4541-859f-225a934e81d4',\n 'seatbid': [\n {\n 'bid': [\n {\n 'id': '971650',\n 'impid': options.impid,\n 'price': 20,\n 'adm': {\n 'ver': '1.2',\n 'assets': [\n {\n 'id': 0,\n 'title': {\n 'text': 'This is a title'\n },\n 'link': {\n 'clicktrackers': [\n 'http://localhost:5500/event?type=click1&component=card&asset=0'\n ]\n }\n },\n {\n 'id': 1,\n 'img': {\n 'url': 'https:\\\\\\\\/\\\\\\\\/vcdn.adnxs.com\\\\\\\\/p\\\\\\\\/creative-image\\\\\\\\/94\\\\\\\\/22\\\\\\\\/cd\\\\\\\\/0f\\\\\\\\/9422cd0f-f400-45d3-80f5-2b92629d9257.jpg',\n 'h': 2250,\n 'w': 3000\n },\n 'link': {\n 'clicktrackers': [\n 'http://localhost:5500/event?type=click1&component=card&asset=1'\n ]\n }\n },\n {\n 'id': 2,\n 'data': {\n 'value': 'this is asset data 1 that corresponds to sponsoredBy'\n }\n }\n ],\n 'link': {\n 'url': 'https://magnite.com',\n 'clicktrackers': [\n 'http://localhost:5500/event?type=click1&component=card',\n 'http://localhost:5500/event?type=click2&component=card'\n ]\n },\n 'jstracker': '<script>console.log(\\\\\"this is from a jstracker\\\\\")</script>',\n 'eventtrackers': [\n {\n 'event': 1,\n 'method': 2,\n 'url': 'http://localhost:5500/event?type=1&method=2'\n },\n {\n 'event': 2,\n 'method': 1,\n 'url': 'http://localhost:5500/event?type=v50&component=card'\n }\n ]\n },\n 'adid': '392180',\n 'adomain': [\n 'http://prebid.org'\n ],\n 'iurl': 'https://lax1-ib.adnxs.com/cr?id=97494403',\n 'cid': '9325',\n 'crid': '97494403',\n 'cat': [\n 'IAB3-1'\n ],\n 'w': 300,\n 'h': 600,\n 'ext': {\n 'prebid': {\n 'targeting': {\n 'hb_bidder': 'rubicon',\n 'hb_cache_host': 'prebid.lax1.adnxs-simple.com',\n 'hb_cache_path': '/pbc/v1/cache',\n 'hb_pb': '20.00'\n },\n 'type': 'native',\n 'video': {\n 'duration': 0,\n 'primary_category': ''\n }\n },\n 'rubicon': {\n 'auction_id': 642778043863823100,\n 'bid_ad_type': 3,\n 'bidder_id': 2,\n 'brand_id': 555545\n }\n }\n }\n ],\n 'seat': 'rubicon'\n }\n ],\n 'cur': 'USD'\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"rubiconBidAdapter_spec.js","names":["expect","spec","getPriceGranularity","masSizeOrdering","resetUserSync","classifiedAsVideo","resetRubiConf","resetImpIdMap","converter","config","utils","adapterManager","addFPDToBidderRequest","deepClone","INTEGRATION","PBS_INTEGRATION","describe","sandbox","bidderRequest","sizeMap","getFloorResponse","logErrorSpy","getSizeIdForBid","sizesMapConverted","bid","find","item","width","height","getResponseAdBySize","ads","size","size_id","sizeId","getBidRequestBySize","bidRequests","sizes","getBidderRequest","bidderCode","ortb2","source","tid","auctionId","bidderRequestId","bids","bidder","params","accountId","siteId","zoneId","userId","keywords","inventory","rating","prodtype","visitor","ucat","lastsearch","likes","position","referrer","latLong","mediaTypes","banner","adUnitCode","code","bidId","ortb2Imp","ext","start","auctionStart","timeout","createResponseAdByIndex","i","indexOverMap","overridePropMap","overrideProps","Object","keys","reduce","aggregate","key","getProp","propName","defaultValue","createBidRequestByIndex","toString","transactionId","createGdprBidderRequest","gdprApplies","gdprConsent","addUspToBidderRequest","uspConsent","createVideoBidderRequest","video","context","mimes","api","minduration","playerSize","maxduration","startdelay","playbackmethod","linearity","skip","skipafter","pos","protocols","lipb","lipbid","segments","idl_env","tdid","pubcid","pubProvidedId","uids","id","stype","criteoId","eids","user","removeVideoParamFromBidderRequest","createVideoBidderRequestOutstream","beforeEach","sinon","createSandbox","spy","map","sizeAsArray","split","s","parseInt","slice","afterEach","restore","logError","resetConfig","pbjs","installedModules","it","ordering","to","deep","equal","stub","Math","callsFake","duplicate","assign","floor","request","buildRequests","data","URLSearchParams","url","expectedQuery","forEach","value","RegExp","get","match","getFloor","calledWith","currency","mediaType","be","true","null","undefined","multibidRequest","bidLimit","noposRequest","bidRequest","badposRequest","setConfig","rubicon","singleRequest","sraPosRequest","bidCopy","push","bidCopy1","bidCopy2","bidCopy3","device","cdep","ipRequest","ip","ipv6Request","ipv6","referenceOrdering","refererInfo","page","reachedTop","numIframes","stack","exist","secure","sizesBidderRequest","result","isBidRequestValid","noAccountBidderRequest","floorBidderRequest","gppConsent","gppString","applicableSections","matchingExp","not","undefinedKeys","site","content","gender","yob","geo","country","age","b","serverRequests","a","have","lengthOf","aggregator","concat","bidRequestIndex","property","method","bidRequestItem","array","paramItem","contain","p","length","indexOf","serverRequest","netRevenue","that","is","an","of","bidCopy4","clonedBid","id5id","uid","linkType","atype","rtipartner","inserter","matcher","mm","expectedEidValue","rtiPartner","hasOwnProperty","pbadslot","gpid","regs","dsa","dsarequired","pubrender","datatopub","transparency","domain","dsaparams","ortb2Clone","JSON","parse","stringify","expectedTransparency","pop","adserver","adslot","name","but","standardSuaObject","platform","brand","version","browsers","mobile","model","bitness","architecture","bidRequestSua","sua","expectedValues","m_ch_arch","m_ch_bitness","m_ch_ua","m_ch_full_ver","m_ch_mobile","m_ch_platform","m_ch_platform_ver","errors","entries","accum","_ref","val","_ref2","highEntropyHints","hint","_ref3","Date","post","imp","exp","w","h","prebid","playerWidth","playerHeight","language","auctiontimestamp","channel","consent","gdpr","us_privacy","targeting","includewinners","cache","vastxml","returnCreative","bidders","integration","storedauctionresponse","bidfloor","Error","and","bidfloorcur","aliasRegistry","haveOwnProperty","aliases","superRubicon","floors","floorData","skipped","location","newRequest","enabled","multibid","maxBids","expected","maxbids","payload","analytics","tmax","positionBidderRequest","bidRequestCopy","requests","coppa","foo","join","siteData","userData","storedrequest","int_type","combineSlotUrlParams","p1","p2","p3","p4","localBidderRequest","slotParams","createSlotParams","kw","localBidRequest","ae","sendUserSegtax","sendSiteSegtax","segtax","segment","bidClassifiedAsVideo","legacyVideoTypeBidRequest","flag","bidReq","addNativeToBidRequest","nested","include","request1","request2","bidonmultiformat","pbsRequest","fastlanteRequest","formats","formatsIncluded","others","empty","fastlaneRequest","other","nativeBidderRequest","twin","toORTB","response","interpretResponse","body","cpm","ttl","advertiserId","networkId","creativeId","meta","String","advertiserDomains","ad","rubiconTargeting","rpfl_elemid","rpfl_14062","targetbiddercodeprefix","requestId","paapi","random","overrideMap","impression_id","stubAds","stubBids","with","associateAd","associateBidRequest","creative_id","status","cur","seatbid","impid","adomain","price","crid","rp","mime","advid","hb_uuid","type","group","seat","seatBidId","adserverTargeting","getNativeResponse","rendererConfig","align","closeButton","collapse","rendererUrl","window","MagniteApex","renderAd","renderer","getConfig","nurl","adUnit","document","createElement","adUnitSelector","appendChild","render","renderCall","getCall","args","label","placement","attachTo","vastUrl","parentNode","removeChild","emilyUrl","syncs","getUserSyncs","iframeEnabled","consentString","CUSTOM_PRICE_BUCKET_ITEM","max","increment","mockConfig","priceGranularity","customPriceBucket","buckets","kvPair","Array","isArray","ranges","greaterThan","nodePropsOrder","schainConfig","getSupplyChainConfig","ver","complete","nodes","asi","sid","hp","rid","schain","results","numNodes","shift","serializeNode","nodeIndex","nodeProps","nodeProp","propIndex","node","bannerHost","videoHost","syncHost","returnVast","bannerBidderRequest","bannerRequest","videoBidderRequest","videoRequest","options","arguments","nativeOrtbRequest","assets","required","title","len","img","numBids","native","ortb"],"sourceRoot":"../../../../..","sources":["test/spec/modules/rubiconBidAdapter_spec.js"],"sourcesContent":["import {expect} from 'chai';\nimport {\n spec,\n getPriceGranularity,\n masSizeOrdering,\n resetUserSync,\n classifiedAsVideo,\n resetRubiConf,\n resetImpIdMap,\n converter\n} from 'modules/rubiconBidAdapter.js';\nimport {config} from 'src/config.js';\nimport * as utils from 'src/utils.js';\nimport 'modules/consentManagementTcf.js';\nimport 'modules/consentManagementUsp.js';\nimport 'modules/userId/index.js';\nimport 'modules/priceFloors.js';\nimport 'modules/multibid/index.js';\nimport adapterManager from 'src/adapterManager.js';\nimport {addFPDToBidderRequest} from '../../helpers/fpd.js';\nimport { deepClone } from '../../../src/utils.js';\n\nconst INTEGRATION = `pbjs_lite_v$prebid.version$`; // $prebid.version$ will be substituted in by gulp in built prebid\nconst PBS_INTEGRATION = 'pbjs';\n\ndescribe('the rubicon adapter', function () {\n let sandbox,\n bidderRequest,\n sizeMap,\n getFloorResponse,\n logErrorSpy;\n\n /**\n * @typedef {import('../../../src/adapters/bidderFactory.js').BidRequest} BidRequest\n * @typedef {Object} sizeMapConverted\n * @property {string} sizeId\n * @property {string} size\n * @property {Array.<Array>} sizeAsArray\n * @property {number} width\n * @property {number} height\n */\n\n /**\n * @param {Array.<sizeMapConverted>} sizesMapConverted\n * @param {Object} bid\n * @return {sizeMapConverted}\n */\n function getSizeIdForBid(sizesMapConverted, bid) {\n return sizesMapConverted.find(item => (item.width === bid.width && item.height === bid.height));\n }\n\n /**\n * @param {Array.<Object>} ads\n * @param {sizeMapConverted} size\n * @return {Object}\n */\n function getResponseAdBySize(ads, size) {\n return ads.find(item => item.size_id === size.sizeId);\n }\n\n /**\n * @param {Array.<BidRequest>} bidRequests\n * @param {sizeMapConverted} size\n * @return {BidRequest}\n */\n function getBidRequestBySize(bidRequests, size) {\n return bidRequests.find(item => item.sizes[0][0] === size.width && item.sizes[0][1] === size.height);\n }\n\n /**\n * @typedef {Object} overrideProps\n * @property {string} status\n * @property {number} cpm\n * @property {number} zone_id\n * @property {number} ad_id\n * @property {string} creative_id\n * @property {string} targeting_key - rpfl_{id}\n */\n /**\n * @param {number} i - index\n * @param {string} sizeId - id that maps to size\n * @param {Array.<overrideProps>} [indexOverMap]\n * @return {{status: string, cpm: number, zone_id: *, size_id: *, impression_id: *, ad_id: *, creative_id: string, type: string, targeting: *[]}}\n */\n\n function getBidderRequest() {\n return {\n bidderCode: 'rubicon',\n ortb2: {\n source: {\n tid: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n }\n },\n auctionId: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n bidderRequestId: '178e34bad3658f',\n bids: [\n {\n bidder: 'rubicon',\n params: {\n accountId: '14062',\n siteId: '70608',\n zoneId: '335918',\n userId: '12346',\n keywords: ['a', 'b', 'c'],\n inventory: {\n rating: '5-star', // This actually should not be sent to frank!! causes 400\n prodtype: ['tech', 'mobile']\n },\n visitor: {\n ucat: 'new',\n lastsearch: 'iphone',\n likes: ['sports', 'video games']\n },\n position: 'atf',\n referrer: 'localhost',\n latLong: [40.7607823, '111.8910325']\n },\n mediaTypes: {\n banner: [[300, 250]]\n },\n adUnitCode: '/19968336/header-bid-tag-0',\n code: 'div-1',\n sizes: [[300, 250], [320, 50]],\n bidId: '2ffb201a808da7',\n bidderRequestId: '178e34bad3658f',\n auctionId: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n ortb2Imp: {\n ext: {\n tid: 'd45dd707-a418-42ec-b8a7-b70a6c6fab0b',\n }\n },\n ortb2: {\n source: {}\n }\n }\n ],\n start: 1472239426002,\n auctionStart: 1472239426000,\n timeout: 5000\n };\n };\n\n function createResponseAdByIndex(i, sizeId, indexOverMap) {\n const overridePropMap = (indexOverMap && indexOverMap[i] && typeof indexOverMap[i] === 'object') ? indexOverMap[i] : {};\n const overrideProps = Object.keys(overridePropMap).reduce((aggregate, key) => {\n aggregate[key] = overridePropMap[key];\n return aggregate;\n }, {});\n\n const getProp = (propName, defaultValue) => {\n return (overrideProps[propName]) ? overridePropMap[propName] : defaultValue;\n };\n\n return {\n 'status': getProp('status', 'ok'),\n 'cpm': getProp('cpm', i / 100),\n 'zone_id': getProp('zone_id', i + 1),\n 'size_id': sizeId,\n 'impression_id': getProp('impression_id', `1-${i}`),\n 'ad_id': getProp('ad_id', i + 1),\n 'advertiser': i + 1,\n 'network': i + 1,\n 'creative_id': getProp('creative_id', `crid-${i}`),\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': i + 1,\n 'targeting': [\n {\n 'key': getProp('targeting_key', `rpfl_${i}`),\n 'values': ['43_tier_all_test']\n }\n ]\n };\n }\n\n /**\n * @param {number} i\n * @param {Array.<Array>} size\n * @return {{ params: {accountId: string, siteId: string, zoneId: string }, adUnitCode: string, code: string, sizes: *[], bidId: string, bidderRequestId: string }}\n */\n function createBidRequestByIndex(i, size) {\n return {\n bidder: 'rubicon',\n params: {\n accountId: '14062',\n siteId: '70608',\n zoneId: (i + 1).toString(),\n userId: '12346',\n position: 'atf',\n referrer: 'localhost'\n },\n adUnitCode: `/19968336/header-bid-tag-${i}`,\n code: `div-${i}`,\n sizes: [size],\n bidId: i.toString(),\n bidderRequestId: i.toString(),\n auctionId: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n transactionId: 'd45dd707-a418-42ec-b8a7-b70a6c6fab0b'\n };\n }\n\n /**\n * @param {boolean} [gdprApplies]\n */\n function createGdprBidderRequest(gdprApplies) {\n const bidderRequest = getBidderRequest();\n if (typeof gdprApplies === 'boolean') {\n bidderRequest.gdprConsent = {\n 'consentString': 'BOJ/P2HOJ/P2HABABMAAAAAZ+A==',\n 'gdprApplies': gdprApplies\n };\n } else {\n bidderRequest.gdprConsent = {\n 'consentString': 'BOJ/P2HOJ/P2HABABMAAAAAZ+A=='\n };\n }\n return bidderRequest;\n }\n\n function addUspToBidderRequest(bidderRequest) {\n bidderRequest.uspConsent = '1NYN';\n }\n\n function createVideoBidderRequest() {\n const bidderRequest = createGdprBidderRequest(true);\n addUspToBidderRequest(bidderRequest);\n\n const bid = bidderRequest.bids[0];\n bid.mediaTypes = {\n video: {\n context: 'instream',\n mimes: ['video/mp4', 'video/x-flv'],\n api: [2],\n minduration: 15,\n playerSize: [640, 480],\n maxduration: 30,\n startdelay: 0,\n playbackmethod: [2],\n linearity: 1,\n skip: 1,\n skipafter: 15,\n pos: 1,\n protocols: [1, 2, 3, 4, 5, 6]\n }\n };\n bid.params.video = {\n 'language': 'en',\n 'skip': 1,\n 'skipafter': 15,\n 'playerHeight': 480,\n 'playerWidth': 640,\n 'size_id': 201,\n };\n bid.userId = {\n lipb: {lipbid: '0000-1111-2222-3333', segments: ['segA', 'segB']},\n idl_env: '1111-2222-3333-4444',\n tdid: '3000',\n pubcid: '4000',\n pubProvidedId: [{\n source: 'example.com',\n uids: [{\n id: '333333',\n ext: {\n stype: 'ppuid'\n }\n }]\n }, {\n source: 'id-partner.com',\n uids: [{\n id: '4444444'\n }]\n }],\n criteoId: '1111',\n };\n const eids = [\n {\n 'source': 'liveintent.com',\n 'uids': [\n {\n 'id': '0000-1111-2222-3333',\n 'atype': 3\n }\n ],\n 'ext': {\n 'segments': [\n 'segA',\n 'segB'\n ]\n }\n },\n {\n 'source': 'liveramp.com',\n 'uids': [\n {\n 'id': '1111-2222-3333-4444',\n 'atype': 3\n }\n ]\n },\n {\n 'source': 'adserver.org',\n 'uids': [\n {\n 'id': '3000',\n 'atype': 1,\n 'ext': {\n 'rtiPartner': 'TDID'\n }\n }\n ]\n },\n {\n 'source': 'pubcid.org',\n 'uids': [\n {\n 'id': '4000',\n 'atype': 1\n }\n ]\n },\n {\n 'source': 'example.com',\n 'uids': [\n {\n 'id': '333333',\n 'ext': {\n 'stype': 'ppuid'\n }\n }\n ]\n },\n {\n 'source': 'id-partner.com',\n 'uids': [\n {\n 'id': '4444444'\n }\n ]\n },\n {\n 'source': 'criteo.com',\n 'uids': [\n {\n 'id': '1111',\n 'atype': 1\n }\n ]\n }\n ];\n bidderRequest.ortb2 = {user: {ext: {eids}}};\n return bidderRequest;\n }\n\n function removeVideoParamFromBidderRequest(bidderRequest) {\n const bid = bidderRequest.bids[0];\n bid.mediaTypes = {\n video: {\n context: 'instream'\n },\n };\n bid.params.video = false;\n }\n\n function createVideoBidderRequestOutstream() {\n const bidderRequest = createGdprBidderRequest(false);\n const bid = bidderRequest.bids[0];\n delete bid.sizes;\n bid.mediaTypes = {\n video: {\n context: 'outstream',\n mimes: ['video/mp4', 'video/x-flv'],\n api: [2],\n minduration: 15,\n playerSize: [640, 480],\n maxduration: 30,\n startdelay: 0,\n playbackmethod: [2],\n linearity: 1,\n skip: 1,\n skipafter: 15,\n pos: 1,\n protocols: [1, 2, 3, 4, 5, 6]\n },\n };\n bid.params = {\n accountId: 14062,\n siteId: 70608,\n zoneId: 335918,\n video: {\n 'language': 'en',\n 'skip': 1,\n 'skipafter': 15,\n 'playerHeight': 320,\n 'playerWidth': 640,\n 'size_id': 203\n }\n }\n return bidderRequest;\n }\n\n beforeEach(function () {\n sandbox = sinon.createSandbox();\n logErrorSpy = sinon.spy(utils, 'logError');\n getFloorResponse = {};\n bidderRequest = {\n bidderCode: 'rubicon',\n auctionId: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n ortb2: {\n source: {\n tid: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n }\n },\n bidderRequestId: '178e34bad3658f',\n bids: [\n {\n bidder: 'rubicon',\n params: {\n accountId: '14062',\n siteId: '70608',\n zoneId: '335918',\n userId: '12346',\n keywords: ['a', 'b', 'c'],\n inventory: {\n rating: '5-star', // This actually should not be sent to frank!! causes 400\n prodtype: ['tech', 'mobile']\n },\n visitor: {\n ucat: 'new',\n lastsearch: 'iphone',\n likes: ['sports', 'video games']\n },\n position: 'atf',\n referrer: 'localhost',\n latLong: [40.7607823, '111.8910325']\n },\n mediaTypes: {\n banner: [[300, 250]]\n },\n adUnitCode: '/19968336/header-bid-tag-0',\n code: 'div-1',\n sizes: [[300, 250], [320, 50]],\n bidId: '2ffb201a808da7',\n bidderRequestId: '178e34bad3658f',\n auctionId: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n ortb2Imp: {\n ext: {\n tid: 'd45dd707-a418-42ec-b8a7-b70a6c6fab0b',\n }\n },\n }\n ],\n start: 1472239426002,\n auctionStart: 1472239426000,\n timeout: 5000\n };\n\n sizeMap = [\n {sizeId: 1, size: '468x60'},\n {sizeId: 2, size: '728x90'},\n {sizeId: 5, size: '120x90'},\n {sizeId: 8, size: '120x600'},\n {sizeId: 9, size: '160x600'},\n {sizeId: 10, size: '300x600'},\n {sizeId: 13, size: '200x200'},\n {sizeId: 14, size: '250x250'},\n {sizeId: 15, size: '300x250'},\n {sizeId: 16, size: '336x280'},\n {sizeId: 19, size: '300x100'},\n {sizeId: 31, size: '980x120'},\n {sizeId: 32, size: '250x360'}\n // Create convenience properties for [sizeAsArray, width, height] by parsing the size string\n ].map(item => {\n const sizeAsArray = item.size.split('x').map(s => parseInt(s));\n return {\n sizeId: item.sizeId,\n size: item.size,\n sizeAsArray: sizeAsArray.slice(),\n width: sizeAsArray[0],\n height: sizeAsArray[1]\n };\n });\n });\n\n afterEach(function () {\n sandbox.restore();\n utils.logError.restore();\n config.resetConfig();\n resetRubiConf();\n resetImpIdMap();\n delete $$PREBID_GLOBAL$$.installedModules;\n });\n\n describe('MAS mapping / ordering', function () {\n it('should sort values without any MAS priority sizes in regular ascending order', function () {\n const ordering = masSizeOrdering([126, 43, 65, 16]);\n expect(ordering).to.deep.equal([16, 43, 65, 126]);\n });\n\n it('should sort MAS priority sizes in the proper order w/ rest ascending', function () {\n let ordering = masSizeOrdering([43, 9, 65, 15, 16, 126]);\n expect(ordering).to.deep.equal([15, 9, 16, 43, 65, 126]);\n\n ordering = masSizeOrdering([43, 15, 9, 65, 16, 126, 2]);\n expect(ordering).to.deep.equal([15, 2, 9, 16, 43, 65, 126]);\n\n ordering = masSizeOrdering([8, 43, 9, 65, 16, 126, 2]);\n expect(ordering).to.deep.equal([2, 9, 8, 16, 43, 65, 126]);\n });\n });\n\n describe('buildRequests implementation', function () {\n describe('for requests', function () {\n describe('to fastlane', function () {\n it('should make a well-formed request object', function () {\n sandbox.stub(Math, 'random').callsFake(() => 0.1);\n const duplicate = Object.assign(bidderRequest);\n duplicate.bids[0].params.floor = 0.01;\n\n const [request] = spec.buildRequests(duplicate.bids, duplicate);\n const data = new URLSearchParams(request.data);\n\n expect(request.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n\n const expectedQuery = {\n 'account_id': '14062',\n 'site_id': '70608',\n 'zone_id': '335918',\n 'size_id': '15',\n 'alt_size_ids': '43',\n 'p_pos': 'atf',\n 'rp_floor': '0.01',\n 'rp_secure': /[01]/,\n 'rand': '0.1',\n 'tk_flint': INTEGRATION,\n 'x_source.tid': 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n 'p_screen_res': /\\d+x\\d+/,\n 'tk_user_key': '12346',\n 'kw': 'a,b,c',\n 'tg_v.ucat': 'new',\n 'tg_v.lastsearch': 'iphone',\n 'tg_v.likes': 'sports,video games',\n 'tg_i.rating': '5-star',\n 'tg_i.prodtype': 'tech,mobile',\n 'tg_fl.eid': 'div-1',\n 'rf': 'localhost'\n };\n\n // test that all values above are both present and correct\n Object.keys(expectedQuery).forEach(key => {\n const value = expectedQuery[key];\n if (value instanceof RegExp) {\n expect(data.get(key)).to.match(value);\n } else {\n expect(data.get(key)).to.equal(value);\n }\n });\n });\n\n it('should correctly send hard floors when getFloor function is present and returns valid floor', function () {\n // default getFloor response is empty object so should not break and not send hard_floor\n bidderRequest.bids[0].getFloor = () => getFloorResponse;\n sinon.spy(bidderRequest.bids[0], 'getFloor');\n let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // make sure banner bid called with right stuff\n expect(\n bidderRequest.bids[0].getFloor.calledWith({\n currency: 'USD',\n mediaType: 'banner',\n size: '*'\n })\n ).to.be.true;\n\n let data = new URLSearchParams(request.data);\n expect(data.get('rp_hard_floor')).to.be.null;\n\n // not an object should work and not send\n getFloorResponse = undefined;\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n expect(data.get('rp_hard_floor')).to.be.null;\n\n // make it respond with a non USD floor should not send it\n getFloorResponse = {currency: 'EUR', floor: 1.0};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n expect(data.get('rp_hard_floor')).to.be.null;\n\n // make it respond with a non USD floor should not send it\n getFloorResponse = {currency: 'EUR'};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n expect(data.get('rp_hard_floor')).to.be.null;\n\n // make it respond with USD floor and string floor\n getFloorResponse = {currency: 'USD', floor: '1.23'};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n expect(data.get('rp_hard_floor')).to.equal('1.23');\n\n // make it respond with USD floor and num floor\n getFloorResponse = {currency: 'USD', floor: 1.23};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n expect(data.get('rp_hard_floor')).to.equal('1.23');\n });\n\n it('should send rp_maxbids to AE if rubicon multibid config exists', function () {\n var multibidRequest = utils.deepClone(bidderRequest);\n multibidRequest.bidLimit = 5;\n\n const [request] = spec.buildRequests(multibidRequest.bids, multibidRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('rp_maxbids')).to.equal('5');\n });\n\n it('should not send p_pos to AE if not params.position specified', function () {\n var noposRequest = utils.deepClone(bidderRequest);\n delete noposRequest.bids[0].params.position;\n\n const [request] = spec.buildRequests(noposRequest.bids, noposRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('site_id')).to.equal('70608');\n expect(data.get('p_pos')).to.equal(null);\n });\n\n it('should not send p_pos to AE if not mediaTypes.banner.pos is invalid', function () {\n var bidRequest = utils.deepClone(bidderRequest);\n bidRequest.bids[0].mediaTypes = {\n banner: {\n pos: 5\n }\n };\n delete bidRequest.bids[0].params.position;\n\n const [request] = spec.buildRequests(bidRequest.bids, bidRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('site_id')).to.equal('70608');\n expect(data.get('p_pos')).to.equal(null);\n });\n\n it('should send p_pos to AE if mediaTypes.banner.pos is valid', function () {\n var bidRequest = utils.deepClone(bidderRequest);\n bidRequest.bids[0].mediaTypes = {\n banner: {\n pos: 1\n }\n };\n delete bidRequest.bids[0].params.position;\n\n const [request] = spec.buildRequests(bidRequest.bids, bidRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('site_id')).to.equal('70608');\n expect(data.get('p_pos')).to.equal('atf');\n });\n\n it('should not send p_pos to AE if not params.position is invalid', function () {\n var badposRequest = utils.deepClone(bidderRequest);\n badposRequest.bids[0].params.position = 'bad';\n\n const [request] = spec.buildRequests(badposRequest.bids, badposRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('site_id')).to.equal('70608');\n expect(data.get('p_pos')).to.equal(null);\n });\n\n it('should correctly send p_pos in sra fashion', function() {\n config.setConfig({rubicon: {singleRequest: true}});\n // first one is atf\n var sraPosRequest = utils.deepClone(bidderRequest);\n\n // second is not present\n const bidCopy = utils.deepClone(sraPosRequest.bids[0]);\n delete bidCopy.params.position;\n sraPosRequest.bids.push(bidCopy);\n\n // third is btf\n const bidCopy1 = utils.deepClone(sraPosRequest.bids[0]);\n bidCopy1.params.position = 'btf';\n sraPosRequest.bids.push(bidCopy1);\n\n // fourth is invalid (aka not atf or btf)\n const bidCopy2 = utils.deepClone(sraPosRequest.bids[0]);\n bidCopy2.params.position = 'unknown';\n sraPosRequest.bids.push(bidCopy2);\n\n // fifth is not present\n const bidCopy3 = utils.deepClone(sraPosRequest.bids[0]);\n delete bidCopy3.params.position;\n sraPosRequest.bids.push(bidCopy3);\n\n const [request] = spec.buildRequests(sraPosRequest.bids, sraPosRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('p_pos')).to.equal('atf;;btf;;');\n });\n\n it('should correctly send cdep signal when requested', () => {\n var badposRequest = utils.deepClone(bidderRequest);\n badposRequest.bids[0].ortb2 = {device: {ext: {cdep: 3}}};\n\n const [request] = spec.buildRequests(badposRequest.bids, badposRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('o_cdep')).to.equal('3');\n });\n\n it('should correctly send ip signal when ortb2.device.ip is provided', () => {\n const ipRequest = utils.deepClone(bidderRequest);\n ipRequest.bids[0].ortb2 = { device: { ip: '123.45.67.89' } };\n\n const [request] = spec.buildRequests(ipRequest.bids, ipRequest);\n const data = new URLSearchParams(request.data);\n\n // Verify if 'ip' is correctly added to the request data\n expect(data.get('ip')).to.equal('123.45.67.89');\n });\n\n it('should correctly send ipv6 signal when ortb2.device.ipv6 is provided', () => {\n const ipv6Request = utils.deepClone(bidderRequest);\n ipv6Request.bids[0].ortb2 = { device: { ipv6: '2001:db8::ff00:42:8329' } };\n\n const [request] = spec.buildRequests(ipv6Request.bids, ipv6Request);\n const data = new URLSearchParams(request.data);\n\n // Verify if 'ipv6' is correctly added to the request data\n expect(data.get('ipv6')).to.equal('2001:db8::ff00:42:8329');\n });\n\n it('ad engine query params should be ordered correctly', function () {\n sandbox.stub(Math, 'random').callsFake(() => 0.1);\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n const referenceOrdering = ['account_id', 'site_id', 'zone_id', 'size_id', 'alt_size_ids', 'p_pos', 'rf', 'p_geo.latitude', 'p_geo.longitude', 'kw', 'tg_v.ucat', 'tg_v.lastsearch', 'tg_v.likes', 'tg_i.rating', 'tg_i.prodtype', 'tk_flint', 'x_source.tid', 'l_pb_bid_id', 'p_screen_res', 'rp_secure', 'tk_user_key', 'x_imp.ext.tid', 'tg_fl.eid', 'slots', 'rand'];\n\n request.data.split('&').forEach((item, i) => {\n expect(item.split('=')[0]).to.equal(referenceOrdering[i]);\n });\n });\n\n it('should make a well-formed request object without latLong', function () {\n const expectedQuery = {\n 'account_id': '14062',\n 'site_id': '70608',\n 'zone_id': '335918',\n 'size_id': '15',\n 'alt_size_ids': '43',\n 'p_pos': 'atf',\n 'rp_secure': /[01]/,\n 'rand': '0.1',\n 'tk_flint': INTEGRATION,\n 'x_source.tid': 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n 'x_imp.ext.tid': 'd45dd707-a418-42ec-b8a7-b70a6c6fab0b',\n 'p_screen_res': /\\d+x\\d+/,\n 'tk_user_key': '12346',\n 'kw': 'a,b,c',\n 'tg_v.ucat': 'new',\n 'tg_v.lastsearch': 'iphone',\n 'tg_v.likes': 'sports,video games',\n 'tg_i.rating': '5-star',\n 'tg_i.prodtype': 'tech,mobile',\n 'rf': 'localhost',\n 'p_geo.latitude': null,\n 'p_geo.longitude': null\n };\n\n sandbox.stub(Math, 'random').callsFake(() => 0.1);\n\n delete bidderRequest.bids[0].params.latLong;\n let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n let data = new URLSearchParams(request.data);\n\n expect(request.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n\n // test that all values above are both present and correct\n Object.keys(expectedQuery).forEach(key => {\n const value = expectedQuery[key];\n if (value instanceof RegExp) {\n expect(data.get(key)).to.match(value);\n } else {\n expect(data.get(key)).to.equal(value);\n }\n });\n\n bidderRequest.bids[0].params.latLong = [];\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n\n expect(request.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n\n // test that all values above are both present and correct\n Object.keys(expectedQuery).forEach(key => {\n const value = expectedQuery[key];\n if (value instanceof RegExp) {\n expect(data.get(key)).to.match(value);\n } else {\n expect(data.get(key)).to.equal(value);\n }\n });\n });\n\n it('should add referer info to request data', function () {\n const refererInfo = {\n page: 'https://www.prebid.org',\n reachedTop: true,\n numIframes: 1,\n stack: [\n 'https://www.prebid.org/page.html',\n 'https://www.prebid.org/iframe1.html',\n ]\n };\n\n bidderRequest = Object.assign({refererInfo}, bidderRequest);\n delete bidderRequest.bids[0].params.referrer;\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n expect(new URLSearchParams(request.data).get('rf')).to.exist;\n expect(new URLSearchParams(request.data).get('rf')).to.equal('https://www.prebid.org');\n });\n\n it('page_url should use params.referrer, bidderRequest.refererInfo in that order', function () {\n let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(new URLSearchParams(request.data).get('rf')).to.equal('localhost');\n\n delete bidderRequest.bids[0].params.referrer;\n const refererInfo = {page: 'https://www.prebid.org'};\n bidderRequest = Object.assign({refererInfo}, bidderRequest);\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(new URLSearchParams(request.data).get('rf')).to.equal('https://www.prebid.org');\n\n bidderRequest.refererInfo.page = 'http://www.prebid.org';\n bidderRequest.bids[0].params.secure = true;\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(new URLSearchParams(request.data).get('rf')).to.equal('https://www.prebid.org');\n });\n\n it('should use rubicon sizes if present (including non-mappable sizes)', function () {\n var sizesBidderRequest = utils.deepClone(bidderRequest);\n sizesBidderRequest.bids[0].params.sizes = [55, 57, 59, 801];\n\n const [request] = spec.buildRequests(sizesBidderRequest.bids, sizesBidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('size_id')).to.equal('55');\n expect(data.get('alt_size_ids')).to.equal('57,59,801');\n });\n\n it('should not validate bid request if no valid sizes', function () {\n var sizesBidderRequest = utils.deepClone(bidderRequest);\n sizesBidderRequest.bids[0].sizes = [[621, 250], [300, 251]];\n\n const result = spec.isBidRequestValid(sizesBidderRequest.bids[0]);\n\n expect(result).to.equal(false);\n });\n\n it('should not validate bid request if no account id is present', function () {\n var noAccountBidderRequest = utils.deepClone(bidderRequest);\n delete noAccountBidderRequest.bids[0].params.accountId;\n\n const result = spec.isBidRequestValid(noAccountBidderRequest.bids[0]);\n\n expect(result).to.equal(false);\n });\n\n it('should allow a floor override', function () {\n var floorBidderRequest = utils.deepClone(bidderRequest);\n floorBidderRequest.bids[0].params.floor = 2;\n\n const [request] = spec.buildRequests(floorBidderRequest.bids, floorBidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('rp_floor')).to.equal('2');\n });\n\n describe('GDPR consent config', function () {\n it('should send \"gdpr\" and \"gdpr_consent\", when gdprConsent defines consentString and gdprApplies', function () {\n const bidderRequest = createGdprBidderRequest(true);\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('gdpr')).to.equal('1');\n expect(data.get('gdpr_consent')).to.equal('BOJ/P2HOJ/P2HABABMAAAAAZ+A==');\n });\n\n it('should send only \"gdpr_consent\", when gdprConsent defines only consentString', function () {\n const bidderRequest = createGdprBidderRequest();\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('gdpr_consent')).to.equal('BOJ/P2HOJ/P2HABABMAAAAAZ+A==');\n expect(data.get('gdpr')).to.equal(null);\n });\n\n it('should not send GDPR params if gdprConsent is not defined', function () {\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('gdpr')).to.equal(null);\n expect(data.get('gdpr_consent')).to.equal(null);\n });\n\n it('should set \"gdpr\" value as 1 or 0, using \"gdprApplies\" value of either true/false', function () {\n let bidderRequest = createGdprBidderRequest(true);\n let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n let data = new URLSearchParams(request.data);\n expect(data.get('gdpr')).to.equal('1');\n\n bidderRequest = createGdprBidderRequest(false);\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n data = new URLSearchParams(request.data);\n expect(data.get('gdpr')).to.equal('0');\n });\n });\n\n describe('USP Consent', function () {\n it('should send us_privacy if bidderRequest has a value for uspConsent', function () {\n addUspToBidderRequest(bidderRequest);\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('us_privacy')).to.equal('1NYN');\n });\n\n it('should not send us_privacy if bidderRequest has no uspConsent value', function () {\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('us_privacy')).to.equal(null);\n });\n });\n\n describe('GPP Consent', function () {\n it('should send gpp information if bidderRequest has a value for gppConsent', function () {\n bidderRequest.gppConsent = {\n gppString: 'consent',\n applicableSections: 2\n };\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n delete bidderRequest.gppConsent;\n\n expect(data.get('gpp')).to.equal('consent');\n expect(data.get('gpp_sid')).to.equal('2');\n });\n\n it('should not send gpp information if bidderRequest does not have a value for gppConsent', function () {\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('gpp')).to.equal(null);\n expect(data.get('gpp_sid')).to.equal(null);\n });\n });\n\n describe('first party data', function () {\n it('should not have any tg_v or tg_i params if all are undefined', function () {\n const params = {\n inventory: {\n rating: null,\n prodtype: undefined\n },\n visitor: {\n ucat: undefined,\n lastsearch: null,\n likes: undefined\n },\n };\n\n // Overwrite the bidder request params with the above ones\n Object.assign(bidderRequest.bids[0].params, params);\n\n // get the built request\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n // make sure that no tg_v or tg_i keys are present in the request\n const matchingExp = RegExp('^tg_(i|v)\\..*$');\n // Display the keys\n for (const key of data.keys()) {\n expect(key).to.not.match(matchingExp);\n }\n });\n\n it('should contain valid params when some are undefined', function () {\n const params = {\n inventory: {\n rating: undefined,\n prodtype: ['tech', 'mobile']\n },\n visitor: {\n ucat: null,\n lastsearch: 'iphone',\n likes: undefined\n },\n };\n const undefinedKeys = ['tg_i.rating', 'tg_v.ucat', 'tg_v.likes']\n const expectedQuery = {\n 'tg_v.lastsearch': 'iphone',\n 'tg_i.prodtype': 'tech,mobile',\n }\n\n // Overwrite the bidder request params with the above ones\n Object.assign(bidderRequest.bids[0].params, params);\n\n // get the built request\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n // make sure none of the undefined keys are in query\n undefinedKeys.forEach(key => {\n expect(data.get(key)).to.equal(null);\n });\n\n // make sure the expected and defined ones do show up still\n Object.keys(expectedQuery).forEach(key => {\n const value = expectedQuery[key];\n expect(data.get(key)).to.equal(value);\n });\n });\n\n it('should merge first party data from getConfig with the bid params, if present', () => {\n const site = {\n keywords: 'e,f',\n rating: '4-star',\n ext: {\n data: {\n page: 'home'\n }\n },\n content: {\n data: [{\n 'name': 'www.dataprovider1.com',\n 'ext': { 'segtax': 1 },\n 'segment': [\n { 'id': '987' }\n ]\n }, {\n 'name': 'www.dataprovider1.com',\n 'ext': { 'segtax': 2 },\n 'segment': [\n { 'id': '432' }\n ]\n }, {\n 'name': 'www.dataprovider1.com',\n 'ext': { 'segtax': 5 },\n 'segment': [\n { 'id': '55' }\n ]\n }, {\n 'name': 'www.dataprovider1.com',\n 'ext': { 'segtax': 6 },\n 'segment': [\n { 'id': '66' }\n ]\n }\n ]\n }\n };\n const user = {\n data: [{\n 'name': 'www.dataprovider1.com',\n 'ext': { 'segtax': 4 },\n 'segment': [\n { 'id': '687' },\n { 'id': '123' }\n ]\n }],\n gender: 'M',\n yob: '1984',\n geo: {country: 'ca'},\n keywords: 'd',\n ext: {\n data: {\n age: 40\n }\n }\n };\n\n const ortb2 = {\n site,\n user\n }\n\n const expectedQuery = {\n 'kw': 'a,b,c,d',\n 'tg_v.ucat': 'new',\n 'tg_v.lastsearch': 'iphone',\n 'tg_v.likes': 'sports,video games',\n 'tg_v.gender': 'M',\n 'tg_v.age': '40',\n 'tg_v.iab': '687,123',\n 'tg_i.iab': '987,432,55,66',\n 'tg_v.yob': '1984',\n 'tg_i.rating': '4-star,5-star',\n 'tg_i.page': 'home',\n 'tg_i.prodtype': 'tech,mobile',\n };\n\n // get the built request\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2})), bidderRequest);\n const data = new URLSearchParams(request.data);\n\n // make sure that tg_v, tg_i, and kw values are correct\n Object.keys(expectedQuery).forEach(key => {\n const value = expectedQuery[key];\n expect(data.get(key)).to.deep.equal(value);\n });\n });\n });\n\n describe('singleRequest config', function () {\n it('should group all bid requests with the same site id', function () {\n sandbox.stub(Math, 'random').callsFake(() => 0.1);\n\n config.setConfig({rubicon: {singleRequest: true}});\n\n const expectedQuery = {\n 'account_id': '14062',\n 'site_id': '70608',\n 'zone_id': '335918',\n 'size_id': '15',\n 'alt_size_ids': '43',\n 'p_pos': 'atf',\n 'rp_secure': /[01]/,\n 'rand': '0.1',\n 'tk_flint': INTEGRATION,\n 'x_source.tid': 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n 'p_screen_res': /\\d+x\\d+/,\n 'tk_user_key': '12346',\n 'kw': 'a,b,c',\n 'tg_v.ucat': 'new',\n 'tg_v.lastsearch': 'iphone',\n 'tg_v.likes': 'sports,video games',\n 'tg_i.rating': '5-star',\n 'tg_i.prodtype': 'tech,mobile',\n 'tg_fl.eid': 'div-1',\n 'rf': 'localhost'\n };\n\n const bidCopy = utils.deepClone(bidderRequest.bids[0]);\n bidCopy.params.siteId = '70608';\n bidCopy.params.zoneId = '1111';\n bidderRequest.bids.push(bidCopy);\n\n const bidCopy2 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy2.params.siteId = '99999';\n bidCopy2.params.zoneId = '2222';\n bidderRequest.bids.push(bidCopy2);\n\n const bidCopy3 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy3.params.siteId = '99999';\n bidCopy3.params.zoneId = '3333';\n bidderRequest.bids.push(bidCopy3);\n\n const serverRequests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // array length should match the num of unique 'siteIds'\n expect(serverRequests).to.be.a('array');\n expect(serverRequests).to.have.lengthOf(2);\n\n // collect all bidRequests so order can be checked against the url param slot order\n const bidRequests = serverRequests.reduce((aggregator, item) => aggregator.concat(item.bidRequest), []);\n let bidRequestIndex = 0;\n\n serverRequests.forEach(item => {\n expect(item).to.be.a('object');\n expect(item).to.have.property('method');\n expect(item).to.have.property('url');\n expect(item).to.have.property('data');\n expect(item).to.have.property('bidRequest');\n\n expect(item.method).to.equal('GET');\n expect(item.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n expect(item.data).to.be.a('string');\n\n // 'bidRequest' type must be 'array' if SRA enabled\n expect(item.bidRequest).to.be.a('array').to.have.lengthOf(2);\n\n item.bidRequest.forEach((bidRequestItem, i, array) => {\n expect(bidRequestItem).to.be.a('object');\n // every 'siteId' values need to match\n expect(bidRequestItem.params.siteId).to.equal(array[0].params.siteId);\n });\n\n const data = new URLSearchParams(item.data);\n\n Object.keys(expectedQuery).forEach(key => {\n expect(data.get(key)).to.be.exist;\n\n // extract semicolon delineated values\n const params = data.get(key).split(';');\n\n // skip value test for site and zone ids\n if (key !== 'site_id' && key !== 'zone_id') {\n if (expectedQuery[key] instanceof RegExp) {\n params.forEach(paramItem => {\n expect(paramItem).to.match(expectedQuery[key]);\n });\n } else {\n expect(params).to.contain(expectedQuery[key]);\n }\n }\n\n // check parsed url data list order with requestBid list, items must have same index in both lists\n if (key === 'zone_id') {\n params.forEach((p) => {\n expect(bidRequests[bidRequestIndex]).to.be.a('object');\n expect(bidRequests[bidRequestIndex].params).to.be.a('object');\n\n // 'zone_id' is used to verify so each bid must have a unique 'zone_id'\n expect(p).to.equal(bidRequests[bidRequestIndex].params.zoneId);\n\n // increment to next bidRequest index having verified that item positions match in url params and bidRequest lists\n bidRequestIndex++;\n });\n }\n });\n });\n });\n\n it('should not send more than 10 bids in a request (split into separate requests with <= 10 bids each)', function () {\n config.setConfig({rubicon: {singleRequest: true}});\n let serverRequests;\n let data;\n\n // TEST '10' BIDS, add 9 to 1 existing bid\n for (let i = 0; i < 9; i++) {\n const bidCopy = utils.deepClone(bidderRequest.bids[0]);\n bidCopy.params.zoneId = `${i}0000`;\n bidderRequest.bids.push(bidCopy);\n }\n serverRequests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n // '10' bids per SRA request: so there should be 1 request\n expect(serverRequests.length).to.equal(1);\n // and that one request should have data from 10 bids\n expect(serverRequests[0].bidRequest).to.have.lengthOf(10);\n // check that slots param value matches\n expect(serverRequests[0].data.indexOf('&slots=10&') !== -1).to.equal(true);\n // check that zone_id has 10 values (since all zone_ids are unique all should exist in get param)\n data = new URLSearchParams(serverRequests[0].data);\n expect(typeof data).to.equal('object');\n expect(data.get('zone_id')).to.be.exist;\n expect(data.get('zone_id').split(';')).to.have.lengthOf(10);\n\n // TEST '100' BIDS, add 90 to the previously added 10\n for (let i = 0; i < 90; i++) {\n const bidCopy = utils.deepClone(bidderRequest.bids[0]);\n bidCopy.params.zoneId = `${(i + 10)}0000`;\n bidderRequest.bids.push(bidCopy);\n }\n serverRequests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n // '100' bids: should be '10' SRA requests\n expect(serverRequests.length).to.equal(10);\n // check that each request has 10 items\n serverRequests.forEach((serverRequest) => {\n // and that one request should have data from 10 bids\n expect(serverRequest.bidRequest).to.have.lengthOf(10);\n // check that slots param value matches\n expect(serverRequest.data.indexOf('&slots=10&') !== -1).to.equal(true);\n });\n });\n\n it('should still use single request if other rubicon configs are set after', function () {\n // set single request to true\n config.setConfig({ rubicon: { singleRequest: true } });\n\n // execute some other rubicon setConfig\n config.setConfig({ rubicon: { netRevenue: true } });\n\n const bidCopy = utils.deepClone(bidderRequest.bids[0]);\n bidderRequest.bids.push(bidCopy);\n bidderRequest.bids.push(bidCopy);\n bidderRequest.bids.push(bidCopy);\n\n const serverRequests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // should have 1 request only\n expect(serverRequests).that.is.an('array').of.length(1);\n\n // get the built query\n const data = new URLSearchParams(serverRequests[0].data);\n\n // num slots should be 4\n expect(data.get('slots')).to.equal('4');\n });\n\n it('should not group bid requests if singleRequest does not equal true', function () {\n config.setConfig({rubicon: {singleRequest: false}});\n\n const bidCopy = utils.deepClone(bidderRequest.bids[0]);\n bidderRequest.bids.push(bidCopy);\n\n const bidCopy2 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy2.params.siteId = '32001';\n bidderRequest.bids.push(bidCopy2);\n\n const bidCopy3 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy3.params.siteId = '32001';\n bidderRequest.bids.push(bidCopy3);\n\n const serverRequests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(serverRequests).that.is.an('array').of.length(4);\n });\n\n it('should not group video bid requests', function () {\n config.setConfig({rubicon: {singleRequest: true}});\n\n const bidCopy = utils.deepClone(bidderRequest.bids[0]);\n bidderRequest.bids.push(bidCopy);\n\n const bidCopy2 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy2.params.siteId = '32001';\n bidderRequest.bids.push(bidCopy2);\n\n const bidCopy3 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy3.params.siteId = '32001';\n bidderRequest.bids.push(bidCopy3);\n\n const bidCopy4 = utils.deepClone(bidderRequest.bids[0]);\n bidCopy4.mediaTypes = {\n video: {\n context: 'instream',\n playerSize: [640, 480],\n mimes: ['video/mp4', 'video/x-ms-wmv'],\n protocols: [2, 5],\n maxduration: 30,\n linearity: 1,\n api: [2]\n }\n };\n bidCopy4.params.video = {\n 'language': 'en',\n 'p_aso.video.ext.skip': true,\n 'p_aso.video.ext.skipdelay': 15,\n 'playerHeight': 320,\n 'playerWidth': 640,\n 'size_id': 201,\n 'aeParams': {\n 'p_aso.video.ext.skip': '1',\n 'p_aso.video.ext.skipdelay': '15'\n }\n };\n bidderRequest.bids.push(bidCopy4);\n\n const serverRequests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(serverRequests).that.is.an('array').of.length(3);\n });\n });\n\n describe('user id config', function () {\n describe('pubcid support', function () {\n it('should send eid_pubcid.org when ortb2.user.ext.eids contains pubcid', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n clonedBid.userId = {\n pubcid: '1111'\n };\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n 'source': 'pubcid.org',\n 'uids': [{\n 'id': '1111',\n 'atype': 1\n }]\n }]\n }\n }\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('eid_pubcid.org')).to.equal('1111^1^^^^^');\n });\n });\n\n describe('Criteo support', function () {\n it('should send eid_criteo.com when ortb2.user.ext.eids contains criteo', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n clonedBid.userId = {\n criteoId: '1111'\n };\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n 'source': 'criteo.com',\n 'uids': [{\n 'id': '1111',\n 'atype': 1\n }]\n }]\n }\n }\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('eid_criteo.com')).to.equal('1111^1^^^^^');\n });\n });\n\n describe('pubProvidedId support', function () {\n it('should send pubProvidedId when ortb2.user.ext.eids contains pubProvidedId ids', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n clonedBid.userId = {\n pubProvidedId: [{\n source: 'example.com',\n uids: [{\n id: '11111',\n ext: {\n stype: 'ppuid'\n }\n }]\n }, {\n source: 'id-partner.com',\n uids: [{\n id: '222222'\n }]\n }]\n };\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n 'source': 'example.com',\n 'uids': [{\n 'id': '11111',\n 'ext': {\n 'stype': 'ppuid'\n }\n }]\n },\n {\n 'source': 'id-partner.com',\n 'uids': [{\n 'id': '222222'\n }]\n }]\n }\n }\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('ppuid')).to.equal('11111');\n });\n });\n\n describe('ID5 support', function () {\n it('should send ID5 id when ortb2.user.ext.eids contains ID5', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n clonedBid.userId = {\n id5id: {\n uid: '11111',\n ext: {\n linkType: '22222'\n }\n }\n };\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n 'source': 'id5-sync.com',\n 'uids': [{\n 'id': '11111',\n 'atype': 1,\n 'ext': {\n 'linkType': '22222'\n }\n }]\n }]\n }\n }\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('eid_id5-sync.com')).to.equal('11111^1^^^^^');\n });\n });\n\n describe('UserID catchall support', function () {\n it('should send user id with generic format', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n // Hardcoding userIdAsEids since createEidsArray returns empty array if source not found in eids.js\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n 'source': 'catchall',\n 'uids': [{\n 'id': '11111',\n 'atype': 2\n }]\n }]\n }\n }\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('eid_catchall')).to.equal('11111^2^^^^^');\n });\n\n it('should send rubiconproject special case', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n // Hardcoding userIdAsEids since createEidsArray returns empty array if source not found in eids.js\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n source: 'rubiconproject.com',\n uids: [{\n id: 'some-cool-id',\n atype: 3\n }]\n }]\n }\n }\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('eid_rubiconproject.com')).to.equal('some-cool-id^3^^^^^');\n });\n describe('Full eidValue format validation', function () {\n it('should send complete eidValue in the format uid^atype^third^inserter^matcher^mm^rtipartner', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n // Simulating a full EID object with multiple fields\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n source: 'example.com',\n uids: [{\n id: '11111', // UID\n atype: 2, // atype\n ext: {\n rtipartner: 'rtipartner123', // rtipartner\n stype: 'ppuid' // stype\n }\n }],\n inserter: 'inserter123', // inserter\n matcher: 'matcher123', // matcher\n mm: 'mm123' // mm\n }]\n }\n }\n };\n\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n // Expected format: uid^atype^third^inserter^matcher^mm^rtipartner\n const expectedEidValue = '11111^2^^inserter123^matcher123^mm123^rtipartner123';\n\n // Check if the generated EID value matches the expected format\n expect(data.get('eid_example.com')).to.equal(expectedEidValue);\n });\n it('should generate eidValue with all attributes including rtiPartner', function () {\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n // Simulating a full EID object with multiple fields\n clonedBid.ortb2 = {\n user: {\n ext: {\n eids: [{\n source: 'example.com',\n uids: [{\n id: '11111', // UID\n atype: 2, // atype\n ext: {\n rtiPartner: 'rtipartner123', // rtiPartner (note the different capitalization)\n stype: 'ppuid' // stype\n }\n }],\n inserter: 'inserter123', // inserter\n matcher: 'matcher123', // matcher\n mm: 'mm123' // mm\n }]\n }\n }\n };\n\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n // Expected format: uid^atype^third^inserter^matcher^mm^rtipartner\n const expectedEidValue = '11111^2^^inserter123^matcher123^mm123^rtipartner123';\n\n // Check if the generated EID value matches the expected format\n expect(data.get('eid_example.com')).to.equal(expectedEidValue);\n });\n });\n });\n describe('Config user.id support', function () {\n it('should send ppuid when config defines user.id', function () {\n config.setConfig({user: {id: '123'}});\n const clonedBid = utils.deepClone(bidderRequest.bids[0]);\n clonedBid.userId = {\n pubcid: '1111'\n };\n const [request] = spec.buildRequests([clonedBid], bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('ppuid')).to.equal('123');\n });\n });\n });\n\n describe('Prebid AdSlot', function () {\n beforeEach(function () {\n // enforce that the bid at 0 does not have a 'context' property\n if (bidderRequest.bids[0].hasOwnProperty('ortb2Imp')) {\n delete bidderRequest.bids[0].ortb2Imp;\n }\n });\n\n it('should not send \\\"tg_i.pbadslot’\\\" if \\\"ortb2Imp.ext.data\\\" object is not valid', function () {\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.pbadslot’')).to.be.null;\n });\n\n it('should not send \\\"tg_i.pbadslot’\\\" if \\\"ortb2Imp.ext.data.pbadslot\\\" is undefined', function () {\n bidderRequest.bids[0].ortb2Imp = {};\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.pbadslot’')).to.be.null;\n });\n\n it('should not send \\\"tg_i.pbadslot’\\\" if \\\"ortb2Imp.ext.data.pbadslot\\\" value is an empty string', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n pbadslot: ''\n }\n }\n };\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.pbadslot')).to.be.null;\n });\n\n it('should send \\\"tg_i.pbadslot\\\" if \\\"ortb2Imp.ext.data.pbadslot\\\" value is a valid string', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n pbadslot: 'abc'\n }\n }\n }\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.pbadslot')).to.be.exist;\n expect(data.get('tg_i.pbadslot')).to.equal('abc');\n });\n\n it('should send \\\"tg_i.pbadslot\\\" if \\\"ortb2Imp.ext.data.pbadslot\\\" value is a valid string', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n pbadslot: '/a/b/c'\n }\n }\n }\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.pbadslot')).to.be.exist;\n expect(data.get('tg_i.pbadslot')).to.equal('/a/b/c');\n });\n\n it('should send gpid as p_gpid if valid', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n gpid: '/1233/sports&div1'\n }\n }\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('p_gpid')).to.be.exist;\n expect(data.get('p_gpid')).to.equal('/1233/sports&div1');\n });\n\n describe('Pass DSA signals', function() {\n const ortb2 = {\n regs: {\n ext: {\n dsa: {\n dsarequired: 3,\n pubrender: 0,\n datatopub: 2,\n transparency: [\n {\n domain: 'testdomain.com',\n dsaparams: [1],\n },\n {\n domain: 'testdomain2.com',\n dsaparams: [1, 2]\n }\n ]\n }\n }\n }\n }\n it('should send valid dsaparams but filter out invalid ones', function () {\n const ortb2Clone = JSON.parse(JSON.stringify(ortb2));\n ortb2Clone.regs.ext.dsa.transparency = [\n {\n domain: 'testdomain.com',\n dsaparams: [1],\n },\n {\n domain: '',\n dsaparams: [2],\n }\n ];\n\n const expectedTransparency = 'testdomain.com~1';\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({ ...b, ortb2: ortb2Clone })), bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('dsatransparency')).to.equal(expectedTransparency);\n })\n it('should send dsaparams if \\\"ortb2.regs.ext.dsa.transparancy[0].params\\\"', function() {\n const ortb2Clone = JSON.parse(JSON.stringify(ortb2));\n\n ortb2Clone.regs.ext.dsa.transparency = [{\n domain: 'testdomain.com',\n dsaparams: [1],\n }];\n\n const expectedTransparency = 'testdomain.com~1';\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2: ortb2Clone})), bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('dsatransparency')).to.equal(expectedTransparency);\n })\n it('should pass an empty transparency param if \\\"ortb2.regs.ext.dsa.transparency[0].params\\\" is empty', function() {\n const ortb2Clone = JSON.parse(JSON.stringify(ortb2));\n\n ortb2Clone.regs.ext.dsa.transparency = [{\n domain: 'testdomain.com',\n params: [],\n }];\n\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2: ortb2Clone})), bidderRequest);\n const data = new URLSearchParams(request.data);\n expect(data.get('dsatransparency')).to.be.null\n })\n it('should send an empty transparency if \\\"ortb2.regs.ext.dsa.transparency[0].domain\\\" is empty', function() {\n const ortb2Clone = JSON.parse(JSON.stringify(ortb2));\n\n ortb2Clone.regs.ext.dsa.transparency = [{\n domain: '',\n dsaparams: [1],\n }];\n\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2: ortb2Clone})), bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(data.get('dsatransparency')).to.be.null\n })\n it('should send dsa signals if \\\"ortb2.regs.ext.dsa\\\"', function() {\n const expectedTransparency = 'testdomain.com~1~~testdomain2.com~1_2'\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2})), bidderRequest)\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('dsarequired')).to.be.exist;\n expect(data.get('dsapubrender')).to.be.exist;\n expect(data.get('dsadatatopubs')).to.be.exist;\n expect(data.get('dsatransparency')).to.be.exist;\n\n expect(data.get('dsarequired')).to.equal(ortb2.regs.ext.dsa.dsarequired.toString());\n expect(data.get('dsapubrender')).to.equal(ortb2.regs.ext.dsa.pubrender.toString());\n expect(data.get('dsadatatopubs')).to.equal(ortb2.regs.ext.dsa.datatopub.toString());\n expect(data.get('dsatransparency')).to.equal(expectedTransparency);\n })\n it('should return one transparency param', function() {\n const expectedTransparency = 'testdomain.com~1';\n const ortb2Clone = deepClone(ortb2);\n ortb2Clone.regs.ext.dsa.transparency.pop()\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2: ortb2Clone})), bidderRequest)\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('dsatransparency')).to.be.exist;\n expect(data.get('dsatransparency')).to.equal(expectedTransparency);\n })\n })\n\n it('should send gpid and pbadslot since it is prefered over dfp code', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n gpid: '/1233/sports&div1',\n data: {\n pbadslot: 'pb_slot',\n adserver: {\n adslot: '/1234/sports',\n name: 'gam'\n }\n }\n }\n }\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('p_gpid')).to.equal('/1233/sports&div1');\n expect(data.get('tg_i.dfp_ad_unit_code')).to.be.null;\n expect(data.get('tg_i.pbadslot')).to.equal('pb_slot');\n });\n });\n\n describe('GAM ad unit', function () {\n beforeEach(function () {\n // enforce that the bid at 0 does not have a 'context' property\n if (bidderRequest.bids[0].hasOwnProperty('ortb2Imp')) {\n delete bidderRequest.bids[0].ortb2Imp;\n }\n });\n\n it('should not send \\\"tg_i.dfp_ad_unit_code’\\\" if \\\"ortb2Imp.ext.data\\\" object is not valid', function () {\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.dfp_ad_unit_code’')).to.be.null;\n });\n\n it('should not send \\\"tg_i.dfp_ad_unit_code’\\\" if \\\"ortb2Imp.ext.data.adServer.adslot\\\" is undefined', function () {\n bidderRequest.bids[0].ortb2Imp = {};\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.dfp_ad_unit_code’')).to.be.null;\n });\n\n it('should not send \\\"tg_i.dfp_ad_unit_code’\\\" if \\\"ortb2Imp.ext.data.adServer.adslot\\\" value is an empty string', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n adserver: {\n adslot: ''\n }\n }\n }\n };\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.dfp_ad_unit_code')).to.be.null;\n });\n\n it('should send NOT \\\"tg_i.dfp_ad_unit_code\\\" if \\\"ortb2Imp.ext.data.adServer.adslot\\\" value is a valid string but not gam', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n adserver: {\n adslot: '/a/b/c',\n name: 'not gam'\n }\n }\n }\n }\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.dfp_ad_unit_code')).to.but.null;\n });\n\n it('should send \\\"tg_i.dfp_ad_unit_code\\\" if \\\"ortb2Imp.ext.data.adServer.adslot\\\" value is a valid string and name is gam', function () {\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n adserver: {\n name: 'gam',\n adslot: '/a/b/c'\n }\n }\n }\n };\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const data = new URLSearchParams(request.data);\n\n expect(typeof data).to.equal('object');\n expect(data.get('tg_i.dfp_ad_unit_code')).to.be.exist;\n expect(data.get('tg_i.dfp_ad_unit_code')).to.equal('/a/b/c');\n });\n });\n\n describe('client hints', function () {\n let standardSuaObject;\n beforeEach(function () {\n standardSuaObject = {\n source: 2,\n platform: {\n brand: 'macOS',\n version: [\n '12',\n '6',\n '0'\n ]\n },\n browsers: [\n {\n brand: 'Not.A/Brand',\n version: [\n '8',\n '0',\n '0',\n '0'\n ]\n },\n {\n brand: 'Chromium',\n version: [\n '114',\n '0',\n '5735',\n '198'\n ]\n },\n {\n brand: 'Google Chrome',\n version: [\n '114',\n '0',\n '5735',\n '198'\n ]\n }\n ],\n mobile: 0,\n model: '',\n bitness: '64',\n architecture: 'x86'\n }\n });\n it('should send m_ch_* params if ortb2.device.sua object is there with igh entropy', function () {\n const bidRequestSua = utils.deepClone(bidderRequest);\n bidRequestSua.bids[0].ortb2 = { device: { sua: standardSuaObject } };\n\n // How should fastlane query be constructed with default SUA\n const expectedValues = {\n m_ch_arch: 'x86',\n m_ch_bitness: '64',\n m_ch_ua: `\"Not.A/Brand\"|v=\"8\",\"Chromium\"|v=\"114\",\"Google Chrome\"|v=\"114\"`,\n m_ch_full_ver: `\"Not.A/Brand\"|v=\"8.0.0.0\",\"Chromium\"|v=\"114.0.5735.198\",\"Google Chrome\"|v=\"114.0.5735.198\"`,\n m_ch_mobile: '?0',\n m_ch_platform: 'macOS',\n m_ch_platform_ver: '12.6.0'\n }\n\n // Build Fastlane call\n const [request] = spec.buildRequests(bidRequestSua.bids, bidRequestSua);\n const data = new URLSearchParams(request.data);\n\n // Loop through expected values and if they do not match push an error\n const errors = Object.entries(expectedValues).reduce((accum, [key, val]) => {\n if (data.get(key) !== val) accum.push(`${key} - expect: ${val} - got: ${data[key]}`)\n return accum;\n }, []);\n\n // should be no errors\n expect(errors).to.deep.equal([]);\n });\n it('should not send invalid values for m_ch_*', function () {\n const bidRequestSua = utils.deepClone(bidderRequest);\n\n // Alter input SUA object\n // send model\n standardSuaObject.model = 'Suface Duo';\n // send mobile = 1\n standardSuaObject.mobile = 1;\n\n // make browsers not an array\n standardSuaObject.browsers = 'My Browser';\n\n // make platform not have version\n delete standardSuaObject.platform.version;\n\n // delete architecture\n delete standardSuaObject.architecture;\n\n // add SUA to bid\n bidRequestSua.bids[0].ortb2 = { device: { sua: standardSuaObject } };\n\n // Build Fastlane request\n const [request] = spec.buildRequests(bidRequestSua.bids, bidRequestSua);\n const data = new URLSearchParams(request.data);\n\n // should show new names\n expect(data.get('m_ch_model')).to.equal('Suface Duo');\n expect(data.get('m_ch_mobile')).to.equal('?1');\n\n // should still send platform\n expect(data.get('m_ch_platform')).to.equal('macOS');\n\n // platform version not sent\n expect(data.get('m_ch_platform_ver')).to.be.null;\n\n // both ua and full_ver not sent because browsers not array\n expect(data.get('m_ch_ua')).to.be.null;\n expect(data.get('m_ch_full_ver')).to.be.null;\n\n // arch not sent\n expect(data.get('m_ch_arch')).to.be.null;\n });\n it('should not send high entropy if not present when it is low entropy client hints', function () {\n const bidRequestSua = utils.deepClone(bidderRequest);\n bidRequestSua.bids[0].ortb2 = { device: { sua: {\n 'source': 1,\n 'platform': {\n 'brand': 'macOS'\n },\n 'browsers': [\n {\n 'brand': 'Not A(Brand',\n 'version': [\n '8'\n ]\n },\n {\n 'brand': 'Chromium',\n 'version': [\n '132'\n ]\n },\n {\n 'brand': 'Google Chrome',\n 'version': [\n '132'\n ]\n }\n ],\n 'mobile': 0\n } } };\n\n // How should fastlane query be constructed with default SUA\n const expectedValues = {\n m_ch_ua: `\"Not A(Brand\"|v=\"8\",\"Chromium\"|v=\"132\",\"Google Chrome\"|v=\"132\"`,\n m_ch_mobile: '?0',\n m_ch_platform: 'macOS',\n }\n\n // Build Fastlane call\n const [request] = spec.buildRequests(bidRequestSua.bids, bidRequestSua);\n const data = new URLSearchParams(request.data);\n\n // Loop through expected values and if they do not match push an error\n const errors = Object.entries(expectedValues).reduce((accum, [key, val]) => {\n if (data.get(key) !== val) accum.push(`${key} - expect: ${val} - got: ${data[key]}`)\n return accum;\n }, []);\n\n // should be no errors\n expect(errors).to.deep.equal([]);\n\n // make sure high entropy keys are not present\n const highEntropyHints = ['m_ch_full_ver', 'm_ch_arch', 'm_ch_bitness', 'm_ch_platform_ver'];\n highEntropyHints.forEach((hint) => { expect(data.get(hint)).to.be.null; });\n });\n it('should ignore invalid browser hints (missing version)', function () {\n const bidRequestSua = utils.deepClone(bidderRequest);\n bidRequestSua.bids[0].ortb2 = { device: { sua: {\n 'browsers': [\n {\n 'brand': 'Not A(Brand',\n // 'version': ['8'], // missing version\n },\n ],\n } } };\n\n // How should fastlane query be constructed with default SUA\n const expectedValues = {\n m_ch_ua: `\"Not A(Brand\"|v=\"undefined\"`,\n }\n\n // Build Fastlane call\n const [request] = spec.buildRequests(bidRequestSua.bids, bidRequestSua);\n const data = new URLSearchParams(request.data);\n\n // Loop through expected values and if they do not match push an error\n const errors = Object.entries(expectedValues).reduce((accum, [key, val]) => {\n if (data.get(key) !== val) accum.push(`${key} - expect: ${val} - got: ${data[key]}`)\n return accum;\n }, []);\n\n // should be no errors\n expect(errors).to.deep.equal([]);\n\n // make sure high entropy keys are not present\n const highEntropyHints = ['m_ch_full_ver'];\n highEntropyHints.forEach((hint) => { expect(data.get(hint)).to.be.null; });\n });\n });\n });\n\n if (FEATURES.VIDEO) {\n describe('for video requests', function () {\n it('should make a well-formed video request', async function () {\n const bidderRequest = createVideoBidderRequest();\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const [request] = spec.buildRequests(bidderRequest.bids, await addFPDToBidderRequest(bidderRequest));\n const post = request.data;\n\n expect(post).to.have.property('imp');\n // .with.length.of(1);\n const imp = post.imp[0];\n expect(imp.id).to.equal(bidderRequest.bids[0].adUnitCode);\n expect(imp.exp).to.equal(undefined); // now undefined\n expect(imp.video.w).to.equal(640);\n expect(imp.video.h).to.equal(480);\n expect(imp.video.pos).to.equal(1);\n expect(imp.video.minduration).to.equal(15);\n expect(imp.video.maxduration).to.equal(30);\n expect(imp.video.startdelay).to.equal(0);\n expect(imp.video.skip).to.equal(1);\n expect(imp.video.skipafter).to.equal(15);\n expect(imp.ext.prebid.bidder.rubicon.video.playerWidth).to.equal(640);\n expect(imp.ext.prebid.bidder.rubicon.video.playerHeight).to.equal(480);\n expect(imp.ext.prebid.bidder.rubicon.video.size_id).to.equal(201);\n expect(imp.ext.prebid.bidder.rubicon.video.language).to.equal('en');\n // Also want it to be in post.site.content.language\n expect(imp.ext.prebid.bidder.rubicon.video.skip).to.equal(1);\n expect(imp.ext.prebid.bidder.rubicon.video.skipafter).to.equal(15);\n expect(post.ext.prebid.auctiontimestamp).to.equal(1472239426000);\n // should contain version\n expect(post.ext.prebid.channel).to.deep.equal({name: 'pbjs', version: $$PREBID_GLOBAL$$.version});\n expect(post.user.ext.consent).to.equal('BOJ/P2HOJ/P2HABABMAAAAAZ+A==');\n // EIDs should exist\n expect(post.user.ext).to.have.property('eids').that.is.an('array');\n // LiveIntent should exist\n expect(post.user.ext.eids[0].source).to.equal('liveintent.com');\n expect(post.user.ext.eids[0].uids[0].id).to.equal('0000-1111-2222-3333');\n expect(post.user.ext.eids[0].uids[0].atype).to.equal(3);\n expect(post.user.ext.eids[0]).to.have.property('ext').that.is.an('object');\n expect(post.user.ext.eids[0].ext).to.have.property('segments').that.is.an('array');\n expect(post.user.ext.eids[0].ext.segments[0]).to.equal('segA');\n expect(post.user.ext.eids[0].ext.segments[1]).to.equal('segB');\n // LiveRamp should exist\n expect(post.user.ext.eids[1].source).to.equal('liveramp.com');\n expect(post.user.ext.eids[1].uids[0].id).to.equal('1111-2222-3333-4444');\n expect(post.user.ext.eids[1].uids[0].atype).to.equal(3);\n // UnifiedId should exist\n expect(post.user.ext.eids[2].source).to.equal('adserver.org');\n expect(post.user.ext.eids[2].uids[0].atype).to.equal(1);\n expect(post.user.ext.eids[2].uids[0].id).to.equal('3000');\n // PubCommonId should exist\n expect(post.user.ext.eids[3].source).to.equal('pubcid.org');\n expect(post.user.ext.eids[3].uids[0].atype).to.equal(1);\n expect(post.user.ext.eids[3].uids[0].id).to.equal('4000');\n // example should exist\n expect(post.user.ext.eids[4].source).to.equal('example.com');\n expect(post.user.ext.eids[4].uids[0].id).to.equal('333333');\n // id-partner.com\n expect(post.user.ext.eids[5].source).to.equal('id-partner.com');\n expect(post.user.ext.eids[5].uids[0].id).to.equal('4444444');\n // CriteoId should exist\n expect(post.user.ext.eids[6].source).to.equal('criteo.com');\n expect(post.user.ext.eids[6].uids[0].id).to.equal('1111');\n expect(post.user.ext.eids[6].uids[0].atype).to.equal(1);\n\n expect(post.regs.ext.gdpr).to.equal(1);\n expect(post.regs.ext.us_privacy).to.equal('1NYN');\n expect(post).to.have.property('ext').that.is.an('object');\n expect(post.ext.prebid.targeting.includewinners).to.equal(true);\n expect(post.ext.prebid).to.have.property('cache').that.is.an('object');\n expect(post.ext.prebid.cache).to.have.property('vastxml').that.is.an('object');\n expect(post.ext.prebid.cache.vastxml).to.have.property('returnCreative').that.is.an('boolean');\n expect(post.ext.prebid.cache.vastxml.returnCreative).to.equal(false);\n expect(post.ext.prebid.bidders.rubicon.integration).to.equal(PBS_INTEGRATION);\n });\n\n describe('ortb2imp sent to video bids', function () {\n beforeEach(function () {\n // initialize\n if (bidderRequest.bids[0].hasOwnProperty('ortb2Imp')) {\n delete bidderRequest.bids[0].ortb2Imp;\n }\n });\n\n it('should add ortb values to video requests', function () {\n const bidderRequest = createVideoBidderRequest();\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n gpid: '/test/gpid',\n data: {\n pbadslot: '/test/pbadslot'\n },\n prebid: {\n storedauctionresponse: {\n id: 'sample_video_response'\n }\n }\n }\n }\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const post = request.data;\n\n expect(post).to.have.property('imp');\n // .with.length.of(1);\n const imp = post.imp[0];\n expect(imp.ext.gpid).to.equal('/test/gpid');\n expect(imp.ext.data.pbadslot).to.equal('/test/pbadslot');\n expect(imp.ext.prebid.storedauctionresponse.id).to.equal('sample_video_response');\n });\n });\n\n it('should correctly set bidfloor on imp when getfloor in scope', function () {\n const bidderRequest = createVideoBidderRequest();\n // default getFloor response is empty object so should not break and not send hard_floor\n bidderRequest.bids[0].getFloor = () => getFloorResponse;\n sinon.spy(bidderRequest.bids[0], 'getFloor');\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // make sure banner bid called with right stuff\n expect(\n bidderRequest.bids[0].getFloor.calledWith({\n currency: 'USD',\n mediaType: '*',\n size: '*'\n })\n ).to.be.true;\n\n // not an object should work and not send\n expect(request.data.imp[0].bidfloor).to.be.undefined;\n\n // make it respond with a non USD floor should not send it\n getFloorResponse = {currency: 'EUR', floor: 1.0};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.be.undefined;\n\n // make it respond with a non USD floor should not send it\n getFloorResponse = {currency: 'EUR'};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.be.undefined;\n\n // make it respond with USD floor and string floor\n getFloorResponse = {currency: 'USD', floor: '1.23'};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.equal(1.23);\n\n // make it respond with USD floor and num floor\n getFloorResponse = {currency: 'USD', floor: 1.23};\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.equal(1.23);\n });\n\n it('should continue with auction if getFloor throws error', function () {\n const bidderRequest = createVideoBidderRequest();\n // default getFloor response is empty object so should not break and not send hard_floor\n bidderRequest.bids[0].getFloor = () => {\n throw new Error('An exception!');\n };\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // should have an imp\n expect(request.data.imp).to.exist.and.to.be.a('array');\n expect(request.data.imp).to.have.lengthOf(1);\n\n // should be NO bidFloor\n expect(request.data.imp[0].bidfloor).to.be.undefined;\n expect(request.data.imp[0].bidfloorcur).to.be.undefined;\n });\n\n it('should add alias name to PBS Request', function () {\n const bidderRequest = createVideoBidderRequest();\n adapterManager.aliasRegistry['superRubicon'] = 'rubicon';\n bidderRequest.bidderCode = 'superRubicon';\n bidderRequest.bids[0].bidder = 'superRubicon';\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // should have the aliases object sent to PBS\n expect(request.data.ext.prebid).to.haveOwnProperty('aliases');\n expect(request.data.ext.prebid.aliases).to.deep.equal({superRubicon: 'rubicon'});\n\n // should have the imp ext bidder params be under the alias name not rubicon superRubicon\n expect(request.data.imp[0].ext.prebid.bidder).to.have.property('superRubicon').that.is.an('object');\n expect(request.data.imp[0].ext.prebid.bidder).to.not.haveOwnProperty('rubicon');\n });\n\n it('should add floors flag correctly to PBS Request', function () {\n const bidderRequest = createVideoBidderRequest();\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // should not pass if undefined\n expect(request.data.ext.prebid.floors).to.be.undefined;\n\n // should pass it as false\n bidderRequest.bids[0].floorData = {\n skipped: false,\n location: 'fetch',\n }\n const [newRequest] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(newRequest.data.ext.prebid.floors).to.deep.equal({ enabled: false });\n });\n\n it('should add multibid configuration to PBS Request', function () {\n const bidderRequest = createVideoBidderRequest();\n\n const multibid = [{\n bidder: 'bidderA',\n maxBids: 2\n }, {\n bidder: 'bidderB',\n maxBids: 2\n }];\n const expected = [{\n bidder: 'bidderA',\n maxbids: 2\n }, {\n bidder: 'bidderB',\n maxbids: 2\n }];\n\n config.setConfig({multibid: multibid});\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n // should have the aliases object sent to PBS\n expect(request.data.ext.prebid).to.haveOwnProperty('multibid');\n expect(request.data.ext.prebid.multibid).to.deep.equal(expected);\n });\n\n it('should pass client analytics to PBS endpoint if all modules included', function () {\n const bidderRequest = createVideoBidderRequest();\n $$PREBID_GLOBAL$$.installedModules = [];\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const payload = request.data;\n\n expect(payload.ext.prebid.analytics).to.not.be.undefined;\n expect(payload.ext.prebid.analytics).to.deep.equal({'rubicon': {'client-analytics': true}});\n });\n\n it('should pass client analytics to PBS endpoint if rubicon analytics adapter is included', function () {\n const bidderRequest = createVideoBidderRequest();\n $$PREBID_GLOBAL$$.installedModules = ['rubiconBidAdapter', 'rubiconAnalyticsAdapter'];\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const payload = request.data;\n\n expect(payload.ext.prebid.analytics).to.not.be.undefined;\n expect(payload.ext.prebid.analytics).to.deep.equal({'rubicon': {'client-analytics': true}});\n });\n\n it('should not pass client analytics to PBS endpoint if rubicon analytics adapter is not included', function () {\n const bidderRequest = createVideoBidderRequest();\n $$PREBID_GLOBAL$$.installedModules = ['rubiconBidAdapter'];\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const payload = request.data;\n\n expect(payload.ext.prebid.analytics).to.be.undefined;\n });\n\n it('should not send video exp at all if not set in s2sConfig config', function () {\n const bidderRequest = createVideoBidderRequest();\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const post = request.data;\n\n // should exp set to the right value according to config\n const imp = post.imp[0];\n // bidderFactory stringifies request body before sending so removes undefined attributes:\n expect(imp.exp).to.equal(undefined);\n });\n\n it('should send tmax as the bidderRequest timeout value', function () {\n const bidderRequest = createVideoBidderRequest();\n bidderRequest.timeout = 3333;\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n const post = request.data;\n expect(post.tmax).to.equal(3333);\n });\n\n it('should send correct bidfloor to PBS', function () {\n const bidderRequest = createVideoBidderRequest();\n\n bidderRequest.bids[0].params.floor = 0.1;\n let [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.equal(0.1);\n\n bidderRequest.bids[0].params.floor = 5.5;\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.equal(5.5);\n\n bidderRequest.bids[0].params.floor = '1.7';\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.equal(1.7);\n\n bidderRequest.bids[0].params.floor = 0;\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].bidfloor).to.equal(0);\n\n bidderRequest.bids[0].params.floor = undefined;\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0]).to.not.haveOwnProperty('bidfloor');\n\n bidderRequest.bids[0].params.floor = null;\n [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0]).to.not.haveOwnProperty('bidfloor');\n });\n\n it('should send request with proper ad position', function () {\n const bidderRequest = createVideoBidderRequest();\n let positionBidderRequest = utils.deepClone(bidderRequest);\n positionBidderRequest.bids[0].mediaTypes.video.pos = 1;\n let [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);\n expect(request.data.imp[0].video.pos).to.equal(1);\n\n positionBidderRequest = utils.deepClone(bidderRequest);\n positionBidderRequest.bids[0].params.position = undefined;\n positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;\n [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);\n expect(request.data.imp[0].video.pos).to.equal(undefined);\n\n positionBidderRequest = utils.deepClone(bidderRequest);\n positionBidderRequest.bids[0].params.position = 'atf'\n positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;\n [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);\n expect(request.data.imp[0].video.pos).to.equal(1);\n\n positionBidderRequest = utils.deepClone(bidderRequest);\n positionBidderRequest.bids[0].params.position = 'btf';\n positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;\n [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);\n expect(request.data.imp[0].video.pos).to.equal(3);\n\n positionBidderRequest = utils.deepClone(bidderRequest);\n positionBidderRequest.bids[0].params.position = 'foobar';\n positionBidderRequest.bids[0].mediaTypes.video.pos = undefined;\n [request] = spec.buildRequests(positionBidderRequest.bids, positionBidderRequest);\n expect(request.data.imp[0].video.pos).to.equal(undefined);\n });\n\n it('should properly enforce video.context to be either instream or outstream', function () {\n const bid = bidderRequest.bids[0];\n bid.mediaTypes = {\n video: {\n context: 'instream',\n mimes: ['video/mp4', 'video/x-ms-wmv'],\n protocols: [2, 5],\n maxduration: 30,\n linearity: 1,\n api: [2]\n }\n }\n bid.params.video = {};\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const bidRequestCopy = utils.deepClone(bidderRequest.bids[0]);\n expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(true);\n\n // change context to outstream, still true\n bidRequestCopy.mediaTypes.video.context = 'outstream';\n expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(true);\n\n // change context to random, false now\n bidRequestCopy.mediaTypes.video.context = 'random';\n expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(false);\n\n // change context to undefined, still false\n bidRequestCopy.mediaTypes.video.context = undefined;\n expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(false);\n\n // remove context, still false\n delete bidRequestCopy.mediaTypes.video.context;\n expect(spec.isBidRequestValid(bidRequestCopy)).to.equal(false);\n });\n\n it('should enforce the new required mediaTypes.video params', function () {\n let bidderRequest = createVideoBidderRequest();\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(true);\n\n // change mimes to a non array, no good\n bidderRequest = createVideoBidderRequest();\n bidderRequest.bids[0].mediaTypes.video.mimes = 'video/mp4';\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);\n\n // delete mimes, no good\n bidderRequest = createVideoBidderRequest();\n delete bidderRequest.bids[0].mediaTypes.video.mimes;\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);\n\n // change protocols to an int not array of ints, no good\n bidderRequest = createVideoBidderRequest();\n bidderRequest.bids[0].mediaTypes.video.protocols = 1;\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);\n\n // delete protocols, no good\n bidderRequest = createVideoBidderRequest();\n delete bidderRequest.bids[0].mediaTypes.video.protocols;\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);\n\n // change linearity to an string, no good\n bidderRequest = createVideoBidderRequest();\n bidderRequest.bids[0].mediaTypes.video.linearity = 'string';\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);\n\n // delete linearity, no good\n bidderRequest = createVideoBidderRequest();\n delete bidderRequest.bids[0].mediaTypes.video.linearity;\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(false);\n });\n\n it('bid request is valid when video context is outstream', function () {\n const bidderRequest = createVideoBidderRequestOutstream();\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const bidRequestCopy = utils.deepClone(bidderRequest);\n\n const [request] = spec.buildRequests(bidRequestCopy.bids, bidRequestCopy);\n expect(spec.isBidRequestValid(bidderRequest.bids[0])).to.equal(true);\n expect(request.data.imp[0].ext.prebid.bidder.rubicon.video.size_id).to.equal(203);\n });\n\n it('should send banner request when outstream or instream video included but no rubicon video obect is present', function () {\n // add banner and video mediaTypes\n bidderRequest.mediaTypes = {\n banner: {\n sizes: [[300, 250]]\n },\n video: {\n context: 'outstream'\n }\n };\n // no video object in rubicon params, so we should see one call made for banner\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n let requests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n expect(requests.length).to.equal(1);\n expect(requests[0].url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n\n bidderRequest.mediaTypes.video.context = 'instream';\n\n requests = spec.buildRequests(bidderRequest.bids, bidderRequest);\n\n expect(requests.length).to.equal(1);\n expect(requests[0].url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n });\n\n it('should send request as banner when invalid video bid in multiple mediaType bidRequest', function () {\n removeVideoParamFromBidderRequest(bidderRequest);\n\n const bid = bidderRequest.bids[0];\n bid.mediaTypes.banner = {\n sizes: [[300, 250]]\n };\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const bidRequestCopy = utils.deepClone(bidderRequest);\n\n const requests = spec.buildRequests(bidRequestCopy.bids, bidRequestCopy);\n expect(requests.length).to.equal(1);\n expect(requests[0].url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n });\n\n it('should include coppa flag in video bid request', async () => {\n const bidderRequest = createVideoBidderRequest();\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n sandbox.stub(config, 'getConfig').callsFake(key => {\n const config = {\n 'coppa': true\n };\n return config[key];\n });\n const [request] = spec.buildRequests(bidderRequest.bids, await addFPDToBidderRequest(bidderRequest));\n expect(request.data.regs.coppa).to.equal(1);\n });\n\n it('should include first party data', () => {\n const bidderRequest = createVideoBidderRequest();\n\n const site = {\n ext: {\n data: {\n page: 'home'\n }\n },\n content: {\n data: [{foo: 'bar'}]\n },\n keywords: 'e,f',\n rating: '4-star',\n data: [{foo: 'bar'}]\n };\n const user = {\n ext: {\n data: {\n age: 31\n }\n },\n keywords: 'd',\n gender: 'M',\n yob: '1984',\n geo: {country: 'ca'},\n data: [{foo: 'bar'}]\n };\n\n const ortb2 = {\n site,\n user\n };\n\n const [request] = spec.buildRequests(bidderRequest.bids.map((b) => ({...b, ortb2})), bidderRequest);\n\n const expected = {\n site: Object.assign({}, site, {keywords: bidderRequest.bids[0].params.keywords.join(',')}),\n user: Object.assign({}, user),\n siteData: Object.assign({}, site.ext.data, bidderRequest.bids[0].params.inventory),\n userData: Object.assign({}, user.ext.data, bidderRequest.bids[0].params.visitor),\n };\n\n delete request.data.site.page;\n delete request.data.site.content.language;\n\n expect(request.data.site.keywords).to.deep.equal('a,b,c');\n expect(request.data.user.keywords).to.deep.equal('d');\n expect(request.data.site.ext.data).to.deep.equal(expected.siteData);\n expect(request.data.user.ext.data).to.deep.equal(expected.userData);\n });\n\n it('should include pbadslot in bid request', function () {\n const bidderRequest = createVideoBidderRequest();\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n pbadslot: '1234567890'\n }\n }\n }\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].ext.data.pbadslot).to.equal('1234567890');\n });\n\n it('should NOT include storedrequests in pbs payload', function () {\n const bidderRequest = createVideoBidderRequest();\n bidderRequest.bids[0].ortb2 = {\n ext: {\n prebid: {\n storedrequest: 'no-send-top-level-sr'\n }\n }\n }\n\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n prebid: {\n storedrequest: 'no-send-imp-sr'\n }\n }\n }\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.ext.prebid.storedrequest).to.be.undefined;\n expect(request.data.imp[0].ext.prebid.storedrequest).to.be.undefined;\n });\n\n it('should include GAM ad unit in bid request', function () {\n const bidderRequest = createVideoBidderRequest();\n bidderRequest.bids[0].ortb2Imp = {\n ext: {\n data: {\n adserver: {\n adslot: '1234567890',\n name: 'adServerName1'\n }\n }\n }\n };\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.imp[0].ext.data.adserver.adslot).to.equal('1234567890');\n expect(request.data.imp[0].ext.data.adserver.name).to.equal('adServerName1');\n });\n\n it('should use the integration type provided in the config instead of the default', () => {\n const bidderRequest = createVideoBidderRequest();\n config.setConfig({rubicon: {int_type: 'testType'}});\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request.data.ext.prebid.bidders.rubicon.integration).to.equal('testType');\n });\n\n it('should pass the user.id provided in the config', async function () {\n config.setConfig({user: {id: '123'}});\n const bidderRequest = createVideoBidderRequest();\n\n sandbox.stub(Date, 'now').callsFake(() =>\n bidderRequest.auctionStart + 100\n );\n\n const [request] = spec.buildRequests(bidderRequest.bids, await addFPDToBidderRequest(bidderRequest));\n const post = request.data;\n\n expect(post).to.have.property('imp')\n // .with.length.of(1);\n const imp = post.imp[0];\n expect(imp.id).to.equal(bidderRequest.bids[0].adUnitCode);\n expect(imp.exp).to.equal(undefined);\n expect(imp.video.w).to.equal(640);\n expect(imp.video.h).to.equal(480);\n expect(imp.video.pos).to.equal(1);\n expect(imp.video.minduration).to.equal(15);\n expect(imp.video.maxduration).to.equal(30);\n expect(imp.video.startdelay).to.equal(0);\n expect(imp.video.skip).to.equal(1);\n expect(imp.video.skipafter).to.equal(15);\n expect(imp.ext.prebid.bidder.rubicon.video.playerWidth).to.equal(640);\n expect(imp.ext.prebid.bidder.rubicon.video.playerHeight).to.equal(480);\n expect(imp.ext.prebid.bidder.rubicon.video.language).to.equal('en');\n\n // Also want it to be in post.site.content.language\n expect(post.site.content.language).to.equal('en');\n expect(post.ext.prebid.auctiontimestamp).to.equal(1472239426000);\n expect(post.user.ext.consent).to.equal('BOJ/P2HOJ/P2HABABMAAAAAZ+A==');\n\n // Config user.id\n expect(post.user.id).to.equal('123');\n\n expect(post.regs.ext.gdpr).to.equal(1);\n expect(post.regs.ext.us_privacy).to.equal('1NYN');\n expect(post).to.have.property('ext').that.is.an('object');\n expect(post.ext.prebid.targeting.includewinners).to.equal(true);\n expect(post.ext.prebid).to.have.property('cache').that.is.an('object');\n expect(post.ext.prebid.cache).to.have.property('vastxml').that.is.an('object');\n expect(post.ext.prebid.cache.vastxml).to.have.property('returnCreative').that.is.an('boolean');\n expect(post.ext.prebid.cache.vastxml.returnCreative).to.equal(false);\n expect(post.ext.prebid.bidders.rubicon.integration).to.equal(PBS_INTEGRATION);\n })\n });\n }\n\n describe('combineSlotUrlParams', function () {\n it('should combine an array of slot url params', function () {\n expect(spec.combineSlotUrlParams([])).to.deep.equal({});\n\n expect(spec.combineSlotUrlParams([{p1: 'foo', p2: 'test', p3: ''}])).to.deep.equal({\n p1: 'foo',\n p2: 'test',\n p3: ''\n });\n\n expect(spec.combineSlotUrlParams([{}, {p1: 'foo', p2: 'test'}])).to.deep.equal({p1: ';foo', p2: ';test'});\n\n expect(spec.combineSlotUrlParams([{}, {}, {p1: 'foo', p2: ''}, {}])).to.deep.equal({p1: ';;foo;', p2: ''});\n\n expect(spec.combineSlotUrlParams([{}, {p1: 'foo'}, {p1: ''}])).to.deep.equal({p1: ';foo;'});\n\n expect(spec.combineSlotUrlParams([\n {p1: 'foo', p2: 'test'},\n {p2: 'test', p3: 'bar'},\n {p1: 'bar', p2: 'test', p4: 'bar'}\n ])).to.deep.equal({p1: 'foo;;bar', p2: 'test', p3: ';bar;', p4: ';;bar'});\n\n expect(spec.combineSlotUrlParams([\n {p1: 'foo', p2: 'test', p3: 'baz'},\n {p1: 'foo', p2: 'bar'},\n {p2: 'test'}\n ])).to.deep.equal({p1: 'foo;foo;', p2: 'test;bar;test', p3: 'baz;;'});\n });\n });\n\n describe('createSlotParams', function () {\n it('should return a valid slot params object', function () {\n const localBidderRequest = Object.assign({}, bidderRequest);\n const expectedQuery = {\n 'account_id': '14062',\n 'site_id': '70608',\n 'zone_id': '335918',\n 'size_id': 15,\n 'alt_size_ids': '43',\n 'p_pos': 'atf',\n 'rp_secure': /[01]/,\n 'tk_flint': INTEGRATION,\n 'x_source.tid': 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n 'p_screen_res': /\\d+x\\d+/,\n 'tk_user_key': '12346',\n 'kw': 'a,b,c',\n 'tg_v.ucat': 'new',\n 'tg_v.lastsearch': 'iphone',\n 'tg_v.likes': 'sports,video games',\n 'tg_i.rating': '5-star',\n 'tg_i.prodtype': 'tech,mobile',\n 'tg_fl.eid': 'div-1',\n 'rf': 'localhost'\n };\n\n const slotParams = spec.createSlotParams(bidderRequest.bids[0], localBidderRequest);\n\n // test that all values above are both present and correct\n Object.keys(expectedQuery).forEach(key => {\n const value = expectedQuery[key];\n if (value instanceof RegExp) {\n expect(slotParams[key]).to.match(value);\n } else {\n expect(slotParams[key]).to.equal(value);\n }\n });\n });\n\n it('should not fail if keywords param is not an array', function () {\n bidderRequest.bids[0].params.keywords = 'a,b,c';\n const slotParams = spec.createSlotParams(bidderRequest.bids[0], bidderRequest);\n expect(slotParams.kw).to.equal('a,b,c');\n });\n\n it('should pass along o_ae param when fledge is enabled', () => {\n const localBidRequest = Object.assign({}, bidderRequest.bids[0]);\n localBidRequest.ortb2Imp.ext.ae = true;\n\n const slotParams = spec.createSlotParams(localBidRequest, bidderRequest);\n\n expect(slotParams['o_ae']).to.equal(1)\n });\n\n it('should pass along desired segtaxes, but not non-desired ones', () => {\n const localBidderRequest = Object.assign({}, bidderRequest);\n localBidderRequest.refererInfo = {domain: 'bob'};\n config.setConfig({\n rubicon: {\n sendUserSegtax: [9],\n sendSiteSegtax: [10]\n }\n });\n localBidderRequest.ortb2.user = {\n data: [{\n ext: {\n segtax: '404'\n },\n segment: [{id: 5}, {id: 6}]\n }, {\n ext: {\n segtax: '508'\n },\n segment: [{id: 5}, {id: 2}]\n }, {\n ext: {\n segtax: '9'\n },\n segment: [{id: 1}, {id: 2}]\n }]\n }\n localBidderRequest.ortb2.site = {\n content: {\n data: [{\n ext: {\n segtax: '10'\n },\n segment: [{id: 2}, {id: 3}]\n }, {\n ext: {\n segtax: '507'\n },\n segment: [{id: 3}, {id: 4}]\n }]\n }\n }\n const slotParams = spec.createSlotParams(bidderRequest.bids[0], localBidderRequest);\n expect(slotParams['tg_i.tax507']).is.equal('3,4');\n expect(slotParams['tg_v.tax508']).is.equal('5,2');\n expect(slotParams['tg_v.tax9']).is.equal('1,2');\n expect(slotParams['tg_i.tax10']).is.equal('2,3');\n expect(slotParams['tg_v.tax404']).is.equal(undefined);\n });\n\n it('should support IAB segtax 7 in site segments', () => {\n const localBidderRequest = Object.assign({}, bidderRequest);\n localBidderRequest.refererInfo = {domain: 'bob'};\n config.setConfig({\n rubicon: {\n sendUserSegtax: [4],\n sendSiteSegtax: [1, 2, 5, 6, 7]\n }\n });\n localBidderRequest.ortb2.site = {\n content: {\n data: [{\n ext: {\n segtax: '7'\n },\n segment: [{id: 8}, {id: 9}]\n }]\n }\n };\n const slotParams = spec.createSlotParams(bidderRequest.bids[0], localBidderRequest);\n expect(slotParams['tg_i.tax7']).to.equal('8,9');\n });\n\n it('should add p_site.mobile if mobile is a number in ortb2.site', function () {\n // Set up a bidRequest with mobile property as a number\n const localBidderRequest = Object.assign({}, bidderRequest);\n localBidderRequest.bids[0].ortb2 = {\n site: {\n mobile: 1 // Valid mobile value (number)\n }\n };\n\n // Call the function\n const slotParams = spec.createSlotParams(localBidderRequest.bids[0], localBidderRequest);\n // Check that p_site.mobile was added to the slotParams with the correct value\n expect(slotParams['p_site.mobile']).to.equal(1);\n });\n it('should not add p_site.mobile if mobile is not a number in ortb2.site', function () {\n // Set up a bidRequest with mobile property as a string (invalid value)\n const localBidderRequest = Object.assign({}, bidderRequest);\n localBidderRequest.bids[0].ortb2 = {\n site: {\n mobile: 'not-a-number' // Invalid mobile value (string)\n }\n };\n\n // Call the function\n const slotParams = spec.createSlotParams(localBidderRequest.bids[0], localBidderRequest);\n\n // Check that p_site.mobile is not added to the slotParams\n expect(slotParams['p_site.mobile']).to.be.undefined;\n });\n });\n\n describe('classifiedAsVideo', function () {\n it('should return true if mediaTypes is video', function () {\n const bidderRequest = createVideoBidderRequest();\n const bidClassifiedAsVideo = classifiedAsVideo(bidderRequest.bids[0]);\n expect(bidClassifiedAsVideo).is.equal(true);\n });\n\n it('should return false if trying to use legacy mediaType with video', function () {\n const bidderRequest = createVideoBidderRequest();\n delete bidderRequest.bids[0].mediaTypes;\n bidderRequest.bids[0].mediaType = 'video';\n const legacyVideoTypeBidRequest = classifiedAsVideo(bidderRequest.bids[0]);\n expect(legacyVideoTypeBidRequest).is.equal(false);\n });\n\n it('should return false if bid.mediaTypes is not equal to video', function () {\n expect(classifiedAsVideo({\n mediaType: 'banner'\n })).is.equal(false);\n });\n\n it('should return false if bid.mediaTypes is not defined', function () {\n expect(classifiedAsVideo({})).is.equal(false);\n });\n\n it('Should return false if both banner and video mediaTypes are set and params.video is not an object', function () {\n removeVideoParamFromBidderRequest(bidderRequest);\n const bid = bidderRequest.bids[0];\n bid.mediaTypes.banner = {flag: true};\n expect(classifiedAsVideo(bid)).to.equal(false);\n });\n it('Should return true if both banner and video mediaTypes are set and params.video is an object', function () {\n removeVideoParamFromBidderRequest(bidderRequest);\n const bid = bidderRequest.bids[0];\n bid.mediaTypes.banner = {flag: true};\n bid.params.video = {};\n expect(classifiedAsVideo(bid)).to.equal(true);\n });\n\n it('Should return true and create a params.video object if one is not already present', function () {\n removeVideoParamFromBidderRequest(bidderRequest);\n const bid = bidderRequest.bids[0]\n expect(classifiedAsVideo(bid)).to.equal(true);\n expect(bid.params.video).to.not.be.undefined;\n });\n });\n\n if (FEATURES.NATIVE) {\n describe('when there is a native request', function () {\n describe('and bidonmultiformat = undefined (false)', () => {\n it('should send only one native bid to PBS endpoint', function () {\n const bidReq = addNativeToBidRequest(bidderRequest);\n bidReq.bids[0].params = {\n video: {}\n }\n const [request] = spec.buildRequests(bidReq.bids, bidReq);\n expect(request.method).to.equal('POST');\n expect(request.url).to.equal('https://prebid-server.rubiconproject.com/openrtb2/auction');\n expect(request.data.imp).to.have.nested.property('[0].native');\n });\n\n it('should not break if position is set and no video MT', function () {\n const bidReq = addNativeToBidRequest(bidderRequest);\n delete bidReq.bids[0].mediaTypes.banner;\n bidReq.bids[0].params = {\n position: 'atf'\n }\n const [request] = spec.buildRequests(bidReq.bids, bidReq);\n expect(request.method).to.equal('POST');\n expect(request.url).to.equal('https://prebid-server.rubiconproject.com/openrtb2/auction');\n expect(request.data.imp).to.have.nested.property('[0].native');\n });\n\n describe('that contains also a banner mediaType', function () {\n it('should send the banner to fastlane BUT NOT the native bid because missing params.video', function() {\n const bidReq = addNativeToBidRequest(bidderRequest);\n bidReq.bids[0].mediaTypes.banner = {\n sizes: [[300, 250]]\n }\n const [request] = spec.buildRequests(bidReq.bids, bidReq);\n expect(request.method).to.equal('GET');\n expect(request.url).to.include('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n });\n });\n describe('with another banner request', () => {\n it('should send the native bid to PBS and the banner to fastlane', function() {\n const bidReq = addNativeToBidRequest(bidderRequest);\n bidReq.bids[0].params = { video: {} };\n // add second bidRqeuest\n bidReq.bids.push({\n mediaTypes: {\n banner: {\n sizes: [[300, 250]]\n }\n },\n params: bidReq.bids[0].params\n })\n const [request1, request2] = spec.buildRequests(bidReq.bids, bidReq);\n expect(request1.method).to.equal('POST');\n expect(request1.url).to.equal('https://prebid-server.rubiconproject.com/openrtb2/auction');\n expect(request1.data.imp).to.have.nested.property('[0].native');\n expect(request2.method).to.equal('GET');\n expect(request2.url).to.include('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n });\n });\n });\n\n describe('with bidonmultiformat === true', () => {\n it('should send two requests, to PBS with 2 imps', () => {\n const bidReq = addNativeToBidRequest(bidderRequest);\n // add second mediaType\n bidReq.bids[0].mediaTypes = {\n ...bidReq.bids[0].mediaTypes,\n banner: {\n sizes: [[300, 250]]\n }\n };\n bidReq.bids[0].params.bidonmultiformat = true;\n const [pbsRequest, fastlanteRequest] = spec.buildRequests(bidReq.bids, bidReq);\n expect(pbsRequest.method).to.equal('POST');\n expect(pbsRequest.url).to.equal('https://prebid-server.rubiconproject.com/openrtb2/auction');\n expect(pbsRequest.data.imp).to.have.nested.property('[0].native');\n expect(fastlanteRequest.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n });\n\n it('should include multiformat data in the pbs request', () => {\n const bidReq = addNativeToBidRequest(bidderRequest);\n // add second mediaType\n bidReq.bids[0].mediaTypes = {\n ...bidReq.bids[0].mediaTypes,\n banner: {\n sizes: [[300, 250]]\n }\n };\n bidReq.bids[0].params.bidonmultiformat = true;\n const [pbsRequest, fastlanteRequest] = spec.buildRequests(bidReq.bids, bidReq);\n expect(pbsRequest.data.imp[0].ext.prebid.bidder.rubicon.formats).to.deep.equal(['native', 'banner']);\n });\n\n it('should include multiformat data in the fastlane request', () => {\n const bidReq = addNativeToBidRequest(bidderRequest);\n // add second mediaType\n bidReq.bids[0].mediaTypes = {\n ...bidReq.bids[0].mediaTypes,\n banner: {\n sizes: [[300, 250]]\n }\n };\n bidReq.bids[0].params.bidonmultiformat = true;\n const [pbsRequest, fastlanteRequest] = spec.buildRequests(bidReq.bids, bidReq);\n const formatsIncluded = fastlanteRequest.data.indexOf('formats=native%2Cbanner') !== -1;\n expect(formatsIncluded).to.equal(true);\n });\n });\n describe('with bidonmultiformat === false', () => {\n it('should send only banner request because there\\'s no params.video', () => {\n const bidReq = addNativeToBidRequest(bidderRequest);\n // add second mediaType\n bidReq.bids[0].mediaTypes = {\n ...bidReq.bids[0].mediaTypes,\n banner: {\n sizes: [[300, 250]]\n }\n };\n\n const [fastlanteRequest, ...others] = spec.buildRequests(bidReq.bids, bidReq);\n expect(fastlanteRequest.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n expect(others).to.be.empty;\n });\n\n it('should not send native to PBS even if there\\'s param.video', () => {\n const bidReq = addNativeToBidRequest(bidderRequest);\n // add second mediaType\n bidReq.bids[0].mediaTypes = {\n ...bidReq.bids[0].mediaTypes,\n banner: {\n sizes: [[300, 250]]\n }\n };\n // by adding this, when bidonmultiformat is false, the native request will be sent to pbs\n bidReq.bids[0].params = {\n video: {}\n }\n const [fastlaneRequest, ...other] = spec.buildRequests(bidReq.bids, bidReq);\n expect(fastlaneRequest.method).to.equal('GET');\n expect(fastlaneRequest.url).to.equal('https://fastlane.rubiconproject.com/a/api/fastlane.json');\n expect(other).to.be.empty;\n });\n });\n\n describe('with duplicate adUnitCodes', () => {\n it('should increment PBS request imp[].id starting at 2', () => {\n const nativeBidderRequest = addNativeToBidRequest(bidderRequest, {twin: true});\n const request = converter.toORTB({bidderRequest: nativeBidderRequest, bidRequests: nativeBidderRequest.bids});\n for (let i = 0; i < nativeBidderRequest.bids.length; i++) {\n var adUnitCode = nativeBidderRequest.bids[i].adUnitCode;\n if (i === 0) {\n expect(request.imp[i].id).to.equal(adUnitCode);\n } else {\n expect(request.imp[i].id).to.equal(adUnitCode + (i + 1));\n }\n }\n });\n });\n });\n }\n });\n\n describe('interpretResponse', function () {\n describe('for fastlane', function () {\n it('should handle a success response and sort by cpm', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '6',\n 'adomain': ['test.com'],\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.811,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '15_tier_all_test'\n ]\n }\n ]\n },\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '43',\n 'ad_id': '7',\n 'adomain': ['test.com'],\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ]\n }\n ]\n };\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n\n expect(bids).to.be.lengthOf(2);\n\n expect(bids[0].width).to.equal(320);\n expect(bids[0].height).to.equal(50);\n expect(bids[0].cpm).to.equal(0.911);\n expect(bids[0].ttl).to.equal(360);\n expect(bids[0].netRevenue).to.equal(true);\n expect(bids[0].rubicon.advertiserId).to.equal(7);\n expect(bids[0].rubicon.networkId).to.equal(8);\n expect(bids[0].creativeId).to.equal('crid-9');\n expect(bids[0].currency).to.equal('USD');\n expect(bids[0].meta.mediaType).to.equal('banner');\n expect(String(bids[0].meta.advertiserDomains)).to.equal('test.com');\n expect(bids[0].ad).to.contain(`alert('foo')`)\n .and.to.contain(`<html>`)\n .and.to.contain(`<div data-rp-impression-id='153dc240-8229-4604-b8f5-256933b9374d'>`);\n expect(bids[0].rubiconTargeting.rpfl_elemid).to.equal('/19968336/header-bid-tag-0');\n expect(bids[0].rubiconTargeting.rpfl_14062).to.equal('43_tier_all_test');\n\n expect(bids[1].width).to.equal(300);\n expect(bids[1].height).to.equal(250);\n expect(bids[1].cpm).to.equal(0.811);\n expect(bids[1].ttl).to.equal(360);\n expect(bids[1].netRevenue).to.equal(true);\n expect(bids[1].rubicon.advertiserId).to.equal(7);\n expect(bids[1].rubicon.networkId).to.equal(8);\n expect(bids[1].creativeId).to.equal('crid-9');\n expect(bids[1].currency).to.equal('USD');\n expect(bids[1].ad).to.contain(`alert('foo')`)\n .and.to.contain(`<html>`)\n .and.to.contain(`<div data-rp-impression-id='153dc240-8229-4604-b8f5-256933b9374c'>`);\n expect(bids[1].rubiconTargeting.rpfl_elemid).to.equal('/19968336/header-bid-tag-0');\n expect(bids[1].rubiconTargeting.rpfl_14062).to.equal('15_tier_all_test');\n });\n\n it('should pass netRevenue correctly if set in setConfig', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '6',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.811,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '15_tier_all_test'\n ]\n }\n ]\n },\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '43',\n 'ad_id': '7',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ]\n }\n ]\n };\n\n // Set to false => false\n config.setConfig({\n rubicon: {\n netRevenue: false\n }\n });\n let bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids).to.be.lengthOf(2);\n expect(bids[0].netRevenue).to.equal(false);\n expect(bids[1].netRevenue).to.equal(false);\n\n // Set to true => true\n config.setConfig({\n rubicon: {\n netRevenue: true\n }\n });\n bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids).to.be.lengthOf(2);\n expect(bids[0].netRevenue).to.equal(true);\n expect(bids[1].netRevenue).to.equal(true);\n\n // Set to undefined => true\n config.setConfig({\n rubicon: {\n netRevenue: undefined\n }\n });\n bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids).to.be.lengthOf(2);\n expect(bids[0].netRevenue).to.equal(true);\n expect(bids[1].netRevenue).to.equal(true);\n\n // Set to string => true\n config.setConfig({\n rubicon: {\n netRevenue: 'someString'\n }\n });\n bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids).to.be.lengthOf(2);\n expect(bids[0].netRevenue).to.equal(true);\n expect(bids[1].netRevenue).to.equal(true);\n\n config.resetConfig();\n });\n it('should use \"network-advertiser\" if no creative_id', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43, 10, 2\n ],\n 'tracking': '',\n 'inventory': {}\n };\n\n response.ads = [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '6',\n 'advertiser': 7,\n 'network': 8,\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.811,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '15_tier_all_test'\n ]\n }\n ]\n }\n ];\n\n let bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids[0].creativeId).to.equal('8-7');\n\n response.ads = [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '43',\n 'ad_id': '7',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ]\n }\n ];\n\n bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids[0].creativeId).to.equal('-');\n\n response.ads = [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '10',\n 'ad_id': '7',\n 'network': 8,\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '10_tier_all_test'\n ]\n }\n ]\n }\n ];\n\n bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids[0].creativeId).to.equal('8-');\n\n response.ads = [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '2',\n 'ad_id': '7',\n 'advertiser': 7,\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '2_tier_all_test'\n ]\n }\n ]\n }\n ];\n\n bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids[0].creativeId).to.equal('-7');\n });\n\n it('should be fine with a CPM of 0', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [{\n 'status': 'ok',\n 'cpm': 0,\n 'size_id': 15\n }]\n };\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n\n expect(bids).to.be.lengthOf(1);\n expect(bids[0].cpm).to.be.equal(0);\n });\n\n it('should handle DSA object from response', function() {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '6',\n 'adomain': ['test.com'],\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.811,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '15_tier_all_test'\n ]\n }\n ],\n 'dsa': {\n 'behalf': 'Advertiser',\n 'paid': 'Advertiser',\n 'transparency': [{\n 'domain': 'dsp1domain.com',\n 'dsaparams': [1, 2]\n }],\n 'adrender': 1\n }\n },\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '43',\n 'ad_id': '7',\n 'adomain': ['test.com'],\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ],\n 'dsa': {}\n }\n ]\n };\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids).to.be.lengthOf(2);\n expect(bids[1].meta.dsa).to.have.property('behalf');\n expect(bids[1].meta.dsa).to.have.property('paid');\n\n // if we dont have dsa field in response or the dsa object is empty\n expect(bids[0].meta).to.not.have.property('dsa');\n })\n\n it('should create bids with matching requestIds if imp id matches', function () {\n const bidRequests = [{\n 'bidder': 'rubicon',\n 'params': {\n 'accountId': 1001,\n 'siteId': 12345,\n 'zoneId': 67890,\n 'floor': null\n },\n 'mediaTypes': {\n 'banner': {\n 'sizes': [[300, 250]]\n }\n },\n 'adUnitCode': 'div-gpt-ad-1460505748561-0',\n 'transactionId': '404a7b28-f276-41cc-a5cf-c1d3dc5671f9',\n 'sizes': [[300, 250]],\n 'bidId': '557ba307cef098',\n 'bidderRequestId': '46a00704ffeb7',\n 'auctionId': '3fdc6494-da94-44a0-a292-b55a90b08b2c',\n 'src': 'client',\n 'bidRequestsCount': 1,\n 'bidderRequestsCount': 1,\n 'bidderWinsCount': 0,\n 'startTime': 1615412098213\n }, {\n 'bidder': 'rubicon',\n 'params': {\n 'accountId': 1001,\n 'siteId': 12345,\n 'zoneId': 67890,\n 'floor': null\n },\n 'mediaTypes': {\n 'banner': {\n 'sizes': [[300, 250]]\n }\n },\n 'adUnitCode': 'div-gpt-ad-1460505748561-1',\n 'transactionId': '404a7b28-f276-41cc-a5cf-c1d3dc5671f9',\n 'sizes': [[300, 250]],\n 'bidId': '456gt123jkl098',\n 'bidderRequestId': '46a00704ffeb7',\n 'auctionId': '3fdc6494-da94-44a0-a292-b55a90b08b2c',\n 'src': 'client',\n 'bidRequestsCount': 1,\n 'bidderRequestsCount': 1,\n 'bidderWinsCount': 0,\n 'startTime': 1615412098213\n }];\n\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '6',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.811,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '15_tier_all_test'\n ]\n }\n ]\n },\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '7',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ]\n },\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '43',\n 'ad_id': '7',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 1.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ]\n }\n ]\n };\n\n config.setConfig({ multibid: [{bidder: 'rubicon', maxbids: 2, targetbiddercodeprefix: 'rubi'}] });\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidRequests\n });\n\n expect(bids).to.be.lengthOf(3);\n expect(bids[0].requestId).to.not.equal(bids[1].requestId);\n expect(bids[1].requestId).to.equal(bids[2].requestId);\n });\n\n it('should handle an error with no ads returned', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': []\n };\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n\n expect(bids).to.be.lengthOf(0);\n });\n\n it('Should support recieving an auctionConfig and pass it along to Prebid', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [{\n 'status': 'ok',\n 'cpm': 0,\n 'size_id': 15\n }],\n 'component_auction_config': [{\n 'random': 'value',\n 'bidId': '5432'\n },\n {\n 'random': 'string',\n 'bidId': '6789'\n }]\n };\n\n const {bids, paapi} = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n\n expect(bids).to.be.lengthOf(1);\n expect(paapi[0].bidId).to.equal('5432');\n expect(paapi[0].config.random).to.equal('value');\n expect(paapi[1].bidId).to.equal('6789');\n });\n\n it('should handle an error', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [{\n 'status': 'not_ok',\n }]\n };\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n\n expect(bids).to.be.lengthOf(0);\n });\n\n it('should handle an error because of malformed json response', function () {\n const response = '{test{';\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n\n expect(bids).to.be.lengthOf(0);\n });\n\n it('should handle a bidRequest argument of type Array', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [{\n 'status': 'ok',\n 'cpm': 0,\n 'size_id': 15\n }]\n };\n\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: [utils.deepClone(bidderRequest.bids[0])]\n });\n\n expect(bids).to.be.lengthOf(1);\n expect(bids[0].cpm).to.be.equal(0);\n });\n\n it('should use ads.emulated_format if defined for bid.meta.mediaType', function () {\n const response = {\n 'status': 'ok',\n 'account_id': 14062,\n 'site_id': 70608,\n 'zone_id': 530022,\n 'size_id': 15,\n 'alt_size_ids': [\n 43\n ],\n 'tracking': '',\n 'inventory': {},\n 'ads': [\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374c',\n 'size_id': '15',\n 'ad_id': '6',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.811,\n 'emulated_format': 'video',\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '15_tier_all_test'\n ]\n }\n ]\n },\n {\n 'status': 'ok',\n 'impression_id': '153dc240-8229-4604-b8f5-256933b9374d',\n 'size_id': '43',\n 'ad_id': '7',\n 'advertiser': 7,\n 'network': 8,\n 'creative_id': 'crid-9',\n 'type': 'script',\n 'script': 'alert(\\'foo\\')',\n 'campaign_id': 10,\n 'cpm': 0.911,\n 'targeting': [\n {\n 'key': 'rpfl_14062',\n 'values': [\n '43_tier_all_test'\n ]\n }\n ]\n }\n ]\n };\n const bids = spec.interpretResponse({body: response}, {\n bidRequest: bidderRequest.bids[0]\n });\n expect(bids[0].meta.mediaType).to.equal('banner');\n expect(bids[1].meta.mediaType).to.equal('video');\n });\n\n describe('singleRequest enabled', function () {\n it('handles bidRequest of type Array and returns associated adUnits', function () {\n const overrideMap = [];\n overrideMap[0] = {impression_id: '1'};\n\n const stubAds = [];\n for (let i = 0; i < 10; i++) {\n stubAds.push(createResponseAdByIndex(i, sizeMap[i].sizeId, overrideMap));\n }\n\n const stubBids = [];\n for (let i = 0; i < 10; i++) {\n stubBids.push(createBidRequestByIndex(i, sizeMap[i].sizeAsArray.slice()));\n }\n\n const bids = spec.interpretResponse({\n body: {\n 'status': 'ok',\n 'site_id': '1100',\n 'account_id': 14062,\n 'zone_id': 2100,\n 'size_id': '1',\n 'tracking': '',\n 'inventory': {},\n 'ads': stubAds\n }\n }, {bidRequest: stubBids});\n expect(bids).to.be.a('array').with.lengthOf(10);\n\n bids.forEach((bid) => {\n expect(bid).to.be.a('object');\n expect(bid).to.have.property('cpm').that.is.a('number');\n expect(bid).to.have.property('width').that.is.a('number');\n expect(bid).to.have.property('height').that.is.a('number');\n\n // verify that result bid 'sizeId' links to a size from the sizeMap\n const size = getSizeIdForBid(sizeMap, bid);\n expect(size).to.be.a('object');\n\n // use 'size' to verify that result bid links to the 'response.ad' passed to function\n const associateAd = getResponseAdBySize(stubAds, size);\n expect(associateAd).to.be.a('object');\n expect(associateAd).to.have.property('creative_id').that.is.a('string');\n\n // use 'size' to verify that result bid links to the 'bidRequest' passed to function\n const associateBidRequest = getBidRequestBySize(stubBids, size);\n expect(associateBidRequest).to.be.a('object');\n expect(associateBidRequest).to.have.property('bidId').that.is.a('string');\n\n // verify all bid properties set using 'ad' and 'bidRequest' match\n // 'ad.creative_id === bid.creativeId'\n expect(bid.requestId).to.equal(associateBidRequest.bidId);\n // 'bid.requestId === bidRequest.bidId'\n expect(bid.creativeId).to.equal(associateAd.creative_id);\n });\n });\n\n it('handles incorrect adUnits length by returning all bids with matching ads', function () {\n const overrideMap = [];\n overrideMap[0] = {impression_id: '1'};\n\n const stubAds = [];\n for (let i = 0; i < 6; i++) {\n stubAds.push(createResponseAdByIndex(i, sizeMap[i].sizeId, overrideMap));\n }\n\n const stubBids = [];\n for (let i = 0; i < 10; i++) {\n stubBids.push(createBidRequestByIndex(i, sizeMap[i].sizeAsArray.slice()));\n }\n\n const bids = spec.interpretResponse({\n body: {\n 'status': 'ok',\n 'site_id': '1100',\n 'account_id': 14062,\n 'zone_id': 2100,\n 'size_id': '1',\n 'tracking': '',\n 'inventory': {},\n 'ads': stubAds\n }\n }, {bidRequest: stubBids});\n\n // no bids expected because response didn't match requested bid number\n expect(bids).to.be.a('array').with.lengthOf(6);\n });\n\n it('skips adUnits with error status and returns all bids with ok status', function () {\n const stubAds = [];\n // Create overrides to break associations between bids and ads\n // Each override should cause one less bid to be returned by interpretResponse\n const overrideMap = [];\n overrideMap[0] = {impression_id: '1'};\n overrideMap[2] = {status: 'error'};\n overrideMap[4] = {status: 'error'};\n overrideMap[7] = {status: 'error'};\n overrideMap[8] = {status: 'error'};\n\n for (let i = 0; i < 10; i++) {\n stubAds.push(createResponseAdByIndex(i, sizeMap[i].sizeId, overrideMap));\n }\n\n const stubBids = [];\n for (let i = 0; i < 10; i++) {\n stubBids.push(createBidRequestByIndex(i, sizeMap[i].sizeAsArray.slice()));\n }\n\n const bids = spec.interpretResponse({\n body: {\n 'status': 'error',\n 'site_id': '1100',\n 'account_id': 14062,\n 'zone_id': 2100,\n 'size_id': '1',\n 'tracking': '',\n 'inventory': {},\n 'ads': stubAds\n }\n }, {bidRequest: stubBids});\n expect(bids).to.be.a('array').with.lengthOf(6);\n\n bids.forEach((bid) => {\n expect(bid).to.be.a('object');\n expect(bid).to.have.property('cpm').that.is.a('number');\n expect(bid).to.have.property('width').that.is.a('number');\n expect(bid).to.have.property('height').that.is.a('number');\n\n // verify that result bid 'sizeId' links to a size from the sizeMap\n const size = getSizeIdForBid(sizeMap, bid);\n expect(size).to.be.a('object');\n\n // use 'size' to verify that result bid links to the 'response.ad' passed to function\n const associateAd = getResponseAdBySize(stubAds, size);\n expect(associateAd).to.be.a('object');\n expect(associateAd).to.have.property('creative_id').that.is.a('string');\n expect(associateAd).to.have.property('status').that.is.a('string');\n expect(associateAd.status).to.equal('ok');\n\n // use 'size' to verify that result bid links to the 'bidRequest' passed to function\n const associateBidRequest = getBidRequestBySize(stubBids, size);\n expect(associateBidRequest).to.be.a('object');\n expect(associateBidRequest).to.have.property('bidId').that.is.a('string');\n\n // verify all bid properties set using 'ad' and 'bidRequest' match\n // 'ad.creative_id === bid.creativeId'\n expect(bid.requestId).to.equal(associateBidRequest.bidId);\n // 'bid.requestId === bidRequest.bidId'\n expect(bid.creativeId).to.equal(associateAd.creative_id);\n });\n });\n });\n });\n\n if (FEATURES.VIDEO) {\n describe('for video', function () {\n it('should register a successful bid', function () {\n const bidderRequest = createVideoBidderRequest();\n const response = {\n cur: 'USD',\n seatbid: [{\n bid: [{\n id: '0',\n impid: '/19968336/header-bid-tag-0',\n adomain: ['test.com'],\n price: 2,\n crid: '4259970',\n ext: {\n bidder: {\n rp: {\n mime: 'application/javascript',\n size_id: 201,\n advid: 12345\n }\n },\n prebid: {\n targeting: {\n hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'\n },\n type: 'video'\n }\n }\n }],\n group: 0,\n seat: 'rubicon'\n }],\n };\n\n const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});\n\n const bids = spec.interpretResponse({body: response}, {data: request});\n\n expect(bids).to.be.lengthOf(1);\n\n expect(bids[0].seatBidId).to.equal('0');\n expect(bids[0].creativeId).to.equal('4259970');\n expect(bids[0].cpm).to.equal(2);\n expect(bids[0].ttl).to.equal(360);\n expect(bids[0].netRevenue).to.equal(true);\n expect(bids[0].adserverTargeting).to.deep.equal({hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'});\n expect(bids[0].mediaType).to.equal('video');\n expect(bids[0].meta.mediaType).to.equal('video');\n expect(String(bids[0].meta.advertiserDomains)).to.equal('test.com');\n expect(bids[0].meta.advertiserId).to.equal(12345);\n expect(bids[0].bidderCode).to.equal('rubicon');\n expect(bids[0].currency).to.equal('USD');\n expect(bids[0].width).to.equal(640);\n expect(bids[0].height).to.equal(480);\n });\n });\n }\n\n if (FEATURES.NATIVE) {\n describe('for native', () => {\n it('should get a native bid', () => {\n const nativeBidderRequest = addNativeToBidRequest(bidderRequest);\n const request = converter.toORTB({bidderRequest: nativeBidderRequest, bidRequests: nativeBidderRequest.bids});\n const response = getNativeResponse({impid: request.imp[0].id});\n const bids = spec.interpretResponse({body: response}, {data: request});\n expect(bids).to.have.nested.property('[0].native');\n });\n it('should set 0 to bids width and height if `w` and `h` in response object not defined', () => {\n const nativeBidderRequest = addNativeToBidRequest(bidderRequest);\n const request = converter.toORTB({bidderRequest: nativeBidderRequest, bidRequests: nativeBidderRequest.bids});\n const response = getNativeResponse({impid: request.imp[0].id});\n delete response.seatbid[0].bid[0].w;\n delete response.seatbid[0].bid[0].h\n const bids = spec.interpretResponse({body: response}, {data: request});\n expect(bids[0].width).to.equal(0);\n expect(bids[0].height).to.equal(0);\n });\n });\n }\n\n if (FEATURES.VIDEO) {\n describe('for outstream video', function () {\n const sandbox = sinon.createSandbox();\n beforeEach(function () {\n config.setConfig({rubicon: {\n rendererConfig: {\n align: 'left',\n closeButton: true,\n collapse: false\n },\n rendererUrl: 'https://example.test/renderer.js'\n }});\n window.MagniteApex = {\n renderAd: function() {\n return null;\n }\n }\n });\n\n afterEach(function () {\n sandbox.restore();\n delete window.MagniteApex;\n });\n\n it('should register a successful bid', function () {\n const bidderRequest = createVideoBidderRequestOutstream();\n const response = {\n cur: 'USD',\n seatbid: [{\n bid: [{\n id: '0',\n impid: '/19968336/header-bid-tag-0',\n adomain: ['test.com'],\n price: 2,\n crid: '4259970',\n ext: {\n bidder: {\n rp: {\n mime: 'application/javascript',\n size_id: 201,\n advid: 12345\n }\n },\n prebid: {\n targeting: {\n hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'\n },\n type: 'video'\n }\n }\n }],\n group: 0,\n seat: 'rubicon'\n }],\n };\n\n const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});\n\n const bids = spec.interpretResponse({body: response}, { data: request });\n\n expect(bids).to.be.lengthOf(1);\n\n expect(bids[0].seatBidId).to.equal('0');\n expect(bids[0].creativeId).to.equal('4259970');\n expect(bids[0].cpm).to.equal(2);\n expect(bids[0].ttl).to.equal(360);\n expect(bids[0].netRevenue).to.equal(true);\n expect(bids[0].adserverTargeting).to.deep.equal({hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'});\n expect(bids[0].mediaType).to.equal('video');\n expect(bids[0].meta.mediaType).to.equal('video');\n expect(String(bids[0].meta.advertiserDomains)).to.equal('test.com');\n expect(bids[0].meta.advertiserId).to.equal(12345);\n expect(bids[0].bidderCode).to.equal('rubicon');\n expect(bids[0].currency).to.equal('USD');\n expect(bids[0].width).to.equal(640);\n expect(bids[0].height).to.equal(320);\n // check custom renderer\n expect(typeof bids[0].renderer).to.equal('object');\n expect(bids[0].renderer.getConfig()).to.deep.equal({\n align: 'left',\n closeButton: true,\n collapse: false\n });\n expect(bids[0].renderer.url).to.equal('https://example.test/renderer.js');\n });\n\n it('should render ad with Magnite renderer', function () {\n const bidderRequest = createVideoBidderRequestOutstream();\n const response = {\n cur: 'USD',\n seatbid: [{\n bid: [{\n id: '0',\n impid: '/19968336/header-bid-tag-0',\n adomain: ['test.com'],\n price: 2,\n crid: '4259970',\n ext: {\n bidder: {\n rp: {\n mime: 'application/javascript',\n size_id: 201,\n advid: 12345\n }\n },\n prebid: {\n targeting: {\n hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'\n },\n type: 'video'\n }\n },\n nurl: 'https://test.com/vast.xml'\n }],\n group: 0,\n seat: 'rubicon'\n }],\n };\n\n const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});\n\n sinon.spy(window.MagniteApex, 'renderAd');\n\n const bids = spec.interpretResponse({body: response}, {data: request});\n const bid = bids[0];\n bid.adUnitCode = 'outstream_video1_placement';\n const adUnit = document.createElement('div');\n const adUnitSelector = `#${bid.adUnitCode}`\n adUnit.id = bid.adUnitCode;\n document.body.appendChild(adUnit);\n\n bid.renderer.render(bid);\n\n const renderCall = window.MagniteApex.renderAd.getCall(0);\n expect(renderCall.args[0]).to.deep.equal({\n closeButton: true,\n collapse: false,\n height: 320,\n label: undefined,\n placement: {\n align: 'left',\n attachTo: adUnitSelector,\n position: 'append',\n },\n vastUrl: 'https://test.com/vast.xml',\n width: 640\n });\n // cleanup\n adUnit.parentNode.removeChild(adUnit);\n });\n\n it('should render ad with Magnite renderer without video object', function () {\n const bidderRequest = createVideoBidderRequestOutstream();\n delete bidderRequest.bids[0].params.video;\n bidderRequest.bids[0].params.bidonmultiformat = true;\n bidderRequest.bids[0].mediaTypes.video.placement = 3;\n bidderRequest.bids[0].mediaTypes.video.playerSize = [640, 480];\n\n const response = {\n cur: 'USD',\n seatbid: [{\n bid: [{\n id: '0',\n impid: '/19968336/header-bid-tag-0',\n adomain: ['test.com'],\n price: 2,\n crid: '4259970',\n ext: {\n bidder: {\n rp: {\n mime: 'application/javascript',\n size_id: 201,\n advid: 12345\n }\n },\n prebid: {\n targeting: {\n hb_uuid: '0c498f63-5111-4bed-98e2-9be7cb932a64'\n },\n type: 'video'\n }\n },\n nurl: 'https://test.com/vast.xml'\n }],\n group: 0,\n seat: 'rubicon'\n }],\n };\n\n const request = converter.toORTB({bidderRequest, bidRequests: bidderRequest.bids});\n\n sinon.spy(window.MagniteApex, 'renderAd');\n\n const bids = spec.interpretResponse({body: response}, {data: request});\n const bid = bids[0];\n bid.adUnitCode = 'outstream_video1_placement';\n const adUnit = document.createElement('div');\n const adUnitSelector = `#${bid.adUnitCode}`\n adUnit.id = bid.adUnitCode;\n document.body.appendChild(adUnit);\n\n bid.renderer.render(bid);\n\n const renderCall = window.MagniteApex.renderAd.getCall(0);\n expect(renderCall.args[0]).to.deep.equal({\n closeButton: true,\n collapse: false,\n height: 480,\n label: undefined,\n placement: {\n align: 'left',\n attachTo: adUnitSelector,\n position: 'append',\n },\n vastUrl: 'https://test.com/vast.xml',\n width: 640\n });\n // cleanup\n adUnit.parentNode.removeChild(adUnit);\n });\n });\n }\n\n describe('config with integration type', () => {\n it('should use the integration type provided in the config instead of the default', () => {\n config.setConfig({rubicon: {int_type: 'testType'}});\n const [request] = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(new URLSearchParams(request.data).get('tk_flint')).to.equal('testType_v$prebid.version$');\n });\n });\n });\n });\n\n describe('user sync', function () {\n const emilyUrl = 'https://eus.rubiconproject.com/usync.html';\n\n beforeEach(function () {\n resetUserSync();\n });\n\n it('should register the Emily iframe', function () {\n const syncs = spec.getUserSyncs({\n iframeEnabled: true\n });\n\n expect(syncs).to.deep.equal({type: 'iframe', url: emilyUrl});\n });\n\n it('should not register the Emily iframe more than once', function () {\n let syncs = spec.getUserSyncs({\n iframeEnabled: true\n });\n expect(syncs).to.deep.equal({type: 'iframe', url: emilyUrl});\n\n // when called again, should still have only been called once\n syncs = spec.getUserSyncs();\n expect(syncs).to.equal(undefined);\n });\n\n it('should pass gdpr params if consent is true', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n gdprApplies: true, consentString: 'foo'\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gdpr=1&gdpr_consent=foo`\n });\n });\n\n it('should pass gdpr params if consent is false', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n gdprApplies: false, consentString: 'foo'\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gdpr=0&gdpr_consent=foo`\n });\n });\n\n it('should pass gdpr param gdpr_consent only when gdprApplies is undefined', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n consentString: 'foo'\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gdpr_consent=foo`\n });\n });\n\n it('should pass no params if gdpr consentString is not defined', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {})).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}`\n });\n });\n\n it('should pass no params if gdpr consentString is a number', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n consentString: 0\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}`\n });\n });\n\n it('should pass no params if gdpr consentString is null', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n consentString: null\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}`\n });\n });\n\n it('should pass no params if gdpr consentString is a object', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n consentString: {}\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}`\n });\n });\n\n it('should pass no params if gdpr is not defined', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, undefined)).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}`\n });\n });\n\n it('should pass us_privacy if uspConsent is defined', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, undefined, '1NYN')).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?us_privacy=1NYN`\n });\n });\n\n it('should pass us_privacy after gdpr if both are present', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n consentString: 'foo'\n }, '1NYN')).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gdpr_consent=foo&us_privacy=1NYN`\n });\n });\n\n it('should pass gdprApplies', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n gdprApplies: true\n }, '1NYN')).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gdpr=1&us_privacy=1NYN`\n });\n });\n\n it('should pass all correctly', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {\n gdprApplies: true,\n consentString: 'foo'\n }, '1NYN')).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gdpr=1&gdpr_consent=foo&us_privacy=1NYN`\n });\n });\n\n it('should pass gpp params when gppConsent is present', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {}, undefined, {\n gppString: 'foo',\n applicableSections: [2]\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gpp=foo&gpp_sid=2`\n });\n });\n\n it('should pass multiple sid\\'s when multiple are present', function () {\n expect(spec.getUserSyncs({iframeEnabled: true}, {}, {}, undefined, {\n gppString: 'foo',\n applicableSections: [2, 5]\n })).to.deep.equal({\n type: 'iframe', url: `${emilyUrl}?gpp=foo&gpp_sid=2,5`\n });\n });\n });\n\n describe('get price granularity', function () {\n it('should return correct buckets for all price granularity values', function () {\n const CUSTOM_PRICE_BUCKET_ITEM = {max: 5, increment: 0.5};\n\n const mockConfig = {\n priceGranularity: undefined,\n customPriceBucket: {\n buckets: [CUSTOM_PRICE_BUCKET_ITEM]\n }\n };\n sandbox.stub(config, 'getConfig').callsFake(key => {\n return mockConfig[key];\n });\n\n [\n {key: 'low', val: {max: 5.00, increment: 0.50}},\n {key: 'medium', val: {max: 20.00, increment: 0.10}},\n {key: 'high', val: {max: 20.00, increment: 0.01}},\n {key: 'auto', val: {max: 5.00, increment: 0.05}},\n {key: 'dense', val: {max: 3.00, increment: 0.01}},\n {key: 'custom', val: CUSTOM_PRICE_BUCKET_ITEM},\n\n ].forEach(kvPair => {\n mockConfig.priceGranularity = kvPair.key;\n const result = getPriceGranularity(config);\n expect(typeof result).to.equal('object');\n expect(result).to.haveOwnProperty('ranges');\n expect(Array.isArray(result.ranges)).to.equal(true);\n expect(result.ranges.length).to.be.greaterThan(0)\n expect(result.ranges[0]).to.deep.equal(kvPair.val);\n });\n });\n });\n\n describe('Supply Chain Support', function () {\n const nodePropsOrder = ['asi', 'sid', 'hp', 'rid', 'name', 'domain'];\n let bidRequests;\n let schainConfig;\n\n const getSupplyChainConfig = () => {\n return {\n ver: '1.0',\n complete: 1,\n nodes: [\n {\n asi: 'rubicon.com',\n sid: '1234',\n hp: 1,\n rid: 'bid-request-1',\n name: 'pub one',\n domain: 'pub1.com'\n },\n {\n asi: 'theexchange.com',\n sid: '5678',\n hp: 1,\n rid: 'bid-request-2',\n name: 'pub two',\n domain: 'pub2.com'\n },\n {\n asi: 'wesellads.com',\n sid: '9876',\n hp: 1,\n rid: 'bid-request-3',\n // name: 'alladsallthetime',\n domain: 'alladsallthetime.com'\n }\n ]\n };\n };\n\n beforeEach(() => {\n bidRequests = getBidderRequest();\n schainConfig = getSupplyChainConfig();\n bidRequests.bids[0].ortb2.source.ext = bidRequests.bids[0].ortb2.source.ext || {};\n bidRequests.bids[0].ortb2.source.ext.schain = schainConfig;\n });\n\n it('should properly serialize schain object with correct delimiters', () => {\n const results = spec.buildRequests(bidRequests.bids, bidRequests);\n const numNodes = schainConfig.nodes.length;\n const schain = new URLSearchParams(results[0].data).get('rp_schain');\n\n // each node serialization should start with an !\n expect(schain.match(/!/g).length).to.equal(numNodes);\n\n // 5 commas per node plus 1 for version\n expect(schain.match(/,/g).length).to.equal(numNodes * 5 + 1);\n });\n\n it('should send the proper version for the schain', () => {\n const results = spec.buildRequests(bidRequests.bids, bidRequests);\n const schain = new URLSearchParams(results[0].data).get('rp_schain').split('!');\n const version = schain.shift().split(',')[0];\n expect(version).to.equal(bidRequests.bids[0].ortb2.source.ext.schain.ver);\n });\n\n it('should send the correct value for complete in schain', () => {\n const results = spec.buildRequests(bidRequests.bids, bidRequests);\n const schain = new URLSearchParams(results[0].data).get('rp_schain').split('!');\n const complete = schain.shift().split(',')[1];\n expect(complete).to.equal(String(bidRequests.bids[0].ortb2.source.ext.schain.complete));\n });\n\n it('should send available params in the right order', () => {\n const results = spec.buildRequests(bidRequests.bids, bidRequests);\n const schain = new URLSearchParams(results[0].data).get('rp_schain').split('!');\n schain.shift();\n\n schain.forEach((serializeNode, nodeIndex) => {\n const nodeProps = serializeNode.split(',');\n nodeProps.forEach((nodeProp, propIndex) => {\n const node = schainConfig.nodes[nodeIndex];\n const key = nodePropsOrder[propIndex];\n expect(nodeProp).to.equal(node[key] ? String(node[key]) : '');\n });\n });\n });\n\n it('should copy the schain JSON to to bid.source.ext.schain', () => {\n const bidderRequest = createVideoBidderRequest();\n const schain = getSupplyChainConfig();\n bidderRequest.bids[0].ortb2.source.ext = { schain: schain };\n const request = spec.buildRequests(bidderRequest.bids, bidderRequest);\n expect(request[0].data.source.ext.schain).to.deep.equal(schain);\n });\n });\n\n describe('configurable settings', function() {\n afterEach(() => {\n config.setConfig({\n rubicon: {\n bannerHost: 'rubicon',\n videoHost: 'prebid-server',\n syncHost: 'eus',\n returnVast: false\n }\n });\n config.resetConfig();\n });\n\n beforeEach(function () {\n resetUserSync();\n });\n\n it('should update fastlane endpoint if', function () {\n config.setConfig({\n rubicon: {\n bannerHost: 'fastlane-qa',\n videoHost: 'prebid-server-qa',\n syncHost: 'eus-qa',\n returnVast: true\n }\n });\n\n // banner\n const bannerBidderRequest = createGdprBidderRequest(false);\n const [bannerRequest] = spec.buildRequests(bannerBidderRequest.bids, bannerBidderRequest);\n expect(bannerRequest.url).to.equal('https://fastlane-qa.rubiconproject.com/a/api/fastlane.json');\n\n // video and returnVast\n const videoBidderRequest = createVideoBidderRequest();\n const [videoRequest] = spec.buildRequests(videoBidderRequest.bids, videoBidderRequest);\n const post = videoRequest.data;\n expect(videoRequest.url).to.equal('https://prebid-server-qa.rubiconproject.com/openrtb2/auction');\n expect(post.ext.prebid.cache.vastxml).to.have.property('returnCreative').that.is.an('boolean');\n expect(post.ext.prebid.cache.vastxml.returnCreative).to.equal(true);\n\n // user sync\n const syncs = spec.getUserSyncs({\n iframeEnabled: true\n });\n expect(syncs).to.deep.equal({type: 'iframe', url: 'https://eus-qa.rubiconproject.com/usync.html'});\n });\n });\n});\n\nfunction addNativeToBidRequest(bidderRequest, options = {twin: false}) {\n const nativeOrtbRequest = {\n assets: [{\n id: 0,\n required: 1,\n title: {\n len: 140\n }\n },\n {\n id: 1,\n required: 1,\n img: {\n type: 3,\n w: 300,\n h: 600\n }\n },\n {\n id: 2,\n required: 1,\n data: {\n type: 1\n }\n }]\n };\n bidderRequest.refererInfo = {\n page: 'localhost'\n }\n const numBids = !options.twin ? 1 : 2;\n for (let i = 0; i < numBids; i++) {\n bidderRequest.bids[i] = {\n bidder: 'rubicon',\n params: {\n accountId: '14062',\n siteId: '70608',\n zoneId: '335918',\n },\n adUnitCode: '/19968336/header-bid-tag-0',\n code: 'div-1',\n bidId: '2ffb201a808da7',\n bidderRequestId: '178e34bad3658f',\n auctionId: 'c45dd708-a418-42ec-b8a7-b70a6c6fab0a',\n transactionId: 'd45dd707-a418-42ec-b8a7-b70a6c6fab0b',\n mediaTypes: {\n native: {\n ortb: {\n ...nativeOrtbRequest\n }\n }\n },\n nativeOrtbRequest\n }\n }\n return bidderRequest;\n}\n\nfunction getNativeResponse(options = {impid: 1234}) {\n return {\n 'id': 'd7786a80-bfb4-4541-859f-225a934e81d4',\n 'seatbid': [\n {\n 'bid': [\n {\n 'id': '971650',\n 'impid': options.impid,\n 'price': 20,\n 'adm': {\n 'ver': '1.2',\n 'assets': [\n {\n 'id': 0,\n 'title': {\n 'text': 'This is a title'\n },\n 'link': {\n 'clicktrackers': [\n 'http://localhost:5500/event?type=click1&component=card&asset=0'\n ]\n }\n },\n {\n 'id': 1,\n 'img': {\n 'url': 'https:\\\\\\\\/\\\\\\\\/vcdn.adnxs.com\\\\\\\\/p\\\\\\\\/creative-image\\\\\\\\/94\\\\\\\\/22\\\\\\\\/cd\\\\\\\\/0f\\\\\\\\/9422cd0f-f400-45d3-80f5-2b92629d9257.jpg',\n 'h': 2250,\n 'w': 3000\n },\n 'link': {\n 'clicktrackers': [\n 'http://localhost:5500/event?type=click1&component=card&asset=1'\n ]\n }\n },\n {\n 'id': 2,\n 'data': {\n 'value': 'this is asset data 1 that corresponds to sponsoredBy'\n }\n }\n ],\n 'link': {\n 'url': 'https://magnite.com',\n 'clicktrackers': [\n 'http://localhost:5500/event?type=click1&component=card',\n 'http://localhost:5500/event?type=click2&component=card'\n ]\n },\n 'jstracker': '<script>console.log(\\\\\"this is from a jstracker\\\\\")</script>',\n 'eventtrackers': [\n {\n 'event': 1,\n 'method': 2,\n 'url': 'http://localhost:5500/event?type=1&method=2'\n },\n {\n 'event': 2,\n 'method': 1,\n 'url': 'http://localhost:5500/event?type=v50&component=card'\n }\n ]\n },\n 'adid': '392180',\n 'adomain': [\n 'http://prebid.org'\n ],\n 'iurl': 'https://lax1-ib.adnxs.com/cr?id=97494403',\n 'cid': '9325',\n 'crid': '97494403',\n 'cat': [\n 'IAB3-1'\n ],\n 'w': 300,\n 'h': 600,\n 'ext': {\n 'prebid': {\n 'targeting': {\n 'hb_bidder': 'rubicon',\n 'hb_cache_host': 'prebid.lax1.adnxs-simple.com',\n 'hb_cache_path': '/pbc/v1/cache',\n 'hb_pb': '20.00'\n },\n 'type': 'native',\n 'video': {\n 'duration': 0,\n 'primary_category': ''\n }\n },\n 'rubicon': {\n 'auction_id': 642778043863823100,\n 'bid_ad_type': 3,\n 'bidder_id': 2,\n 'brand_id': 555545\n }\n }\n }\n ],\n 'seat': 'rubicon'\n }\n ],\n 'cur': 'USD'\n };\n}\n"],"mappings":"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","ignoreList":[]}
|