prebid.js 8.44.0 → 8.45.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/README.md +7 -1
- package/creative/constants.js +7 -7
- package/creative/renderers/display/constants.js +2 -2
- package/creative/renderers/native/constants.js +2 -2
- package/dist/33acrossAnalyticsAdapter.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/BTBidAdapter.js +1 -1
- package/dist/adWMGAnalyticsAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelAdnAnalyticsAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adlooxAdServerVideo.js +1 -1
- package/dist/adlooxAnalyticsAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adnuntiusBidAdapter.js +1 -1
- package/dist/adomikAnalyticsAdapter.js +1 -1
- package/dist/adpod.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adstirBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adxpremiumAnalyticsAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/agmaAnalyticsAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/analyticsAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/asteriobidAnalyticsAdapter.js +1 -1
- package/dist/atsAnalyticsAdapter.js +1 -1
- package/dist/automatadAnalyticsAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidViewability.js +1 -1
- package/dist/bidViewabilityIO.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/brandmetricsRtdProvider.js +1 -1
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/browsiRtdProvider.js +1 -1
- package/dist/byDataAnalyticsAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/chunk-core.js +1 -1
- package/dist/chunk-paapi.js +1 -1
- package/dist/cleanioRtdProvider.js +1 -1
- package/dist/concertAnalyticsAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/confiantRtdProvider.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/creative-renderer-native.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/currency.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dailymotionBidAdapter.js +1 -0
- package/dist/datablocksAnalyticsAdapter.js +1 -1
- package/dist/datawrkzBidAdapter.js +1 -1
- package/dist/debugging-standalone.js +1 -1
- package/dist/debugging.js +1 -1
- package/dist/dependencies.json +3 -3
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/dsaControl.js +1 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/eplanningAnalyticsAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fintezaAnalyticsAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/genericAnalyticsAdapter.js +1 -1
- package/dist/geoedgeRtdProvider.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/growthCodeAnalyticsAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronAnalyticsAdapter.js +1 -1
- package/dist/holidBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/illuminBidAdapter.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/instreamTracking.js +1 -1
- package/dist/invisiblyAnalyticsAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoAnalyticsAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/kimberliteBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentAnalyticsAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/livewrappedAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/luceadBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafilterRtdProvider.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/multibid.js +1 -1
- package/dist/neuwoRtdProvider.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +237 -235
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openwebBidAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/optimonAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/oxxionAnalyticsAdapter.js +1 -1
- package/dist/oxxionRtdProvider.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pbsExtensions.js +1 -1
- package/dist/permutiveRtdProvider.js +1 -1
- package/dist/pgamsspBidAdapter.js +1 -1
- package/dist/pianoDmpAnalyticsAdapter.js +1 -1
- package/dist/pirIdSystem.js +1 -0
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
- package/dist/priceFloors.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/publirBidAdapter.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubperfAnalyticsAdapter.js +1 -1
- package/dist/pubstackAnalyticsAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pulsepointAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/qortexRtdProvider.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/relevantAnalyticsAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rivrAnalyticsAdapter.js +1 -1
- package/dist/roxotAnalyticsAdapter.js +1 -1
- package/dist/rtdModule.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/s2sTesting.js +1 -1
- package/dist/scaleableAnalyticsAdapter.js +1 -1
- package/dist/schain.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/shinezRtbBidAdapter.js +1 -1
- package/dist/sigmoidAnalyticsAdapter.js +1 -1
- package/dist/sizeMapping.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiAnalyticsAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/staqAnalyticsAdapter.js +1 -1
- package/dist/stnBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tagorasBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.js +1 -1
- package/dist/topicsFpdModule.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/unrulyBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videoModule.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/weboramaRtdProvider.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yandexAnalyticsAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yuktamediaAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/gulpfile.js +9 -1
- package/integrationExamples/gpt/adnuntius_example.html +7 -1
- package/integrationExamples/gpt/azerionedgeRtdProvider_example.html +3 -3
- package/integrationExamples/gpt/top-level-paapi/decisionLogic.js +57 -0
- package/integrationExamples/gpt/top-level-paapi/tl_paapi_example.html +188 -0
- package/integrationExamples/gpt/x-domain/creative.html +1 -1
- package/libraries/analyticsAdapter/AnalyticsAdapter.js +4 -4
- package/libraries/creative-renderer-native/renderer.js +1 -1
- package/modules/33acrossAnalyticsAdapter.js +2 -4
- package/modules/33acrossIdSystem.js +1 -1
- package/modules/adWMGAnalyticsAdapter.js +9 -11
- package/modules/adagioAnalyticsAdapter.js +8 -8
- package/modules/adkernelAdnAnalyticsAdapter.js +8 -8
- package/modules/adkernelBidAdapter.js +9 -3
- package/modules/adlooxAdServerVideo.js +2 -2
- package/modules/adlooxAnalyticsAdapter.js +4 -4
- package/modules/adnuntiusBidAdapter.js +49 -31
- package/modules/adomikAnalyticsAdapter.js +7 -7
- package/modules/adpod.js +3 -3
- package/modules/adxcgAnalyticsAdapter.js +10 -10
- package/modules/adxpremiumAnalyticsAdapter.js +8 -10
- package/modules/agmaAnalyticsAdapter.js +2 -6
- package/modules/appierAnalyticsAdapter.js +5 -7
- package/modules/asteriobidAnalyticsAdapter.js +14 -14
- package/modules/atsAnalyticsAdapter.js +4 -4
- package/modules/automatadAnalyticsAdapter.js +20 -20
- package/modules/azerionedgeRtdProvider.md +4 -2
- package/modules/bidViewability.js +3 -3
- package/modules/bidViewabilityIO.js +3 -3
- package/modules/bidwatchAnalyticsAdapter.js +7 -9
- package/modules/brandmetricsRtdProvider.js +6 -6
- package/modules/browsiRtdProvider.js +3 -3
- package/modules/byDataAnalyticsAdapter.js +3 -3
- package/modules/cleanioRtdProvider.js +3 -3
- package/modules/concertAnalyticsAdapter.js +5 -7
- package/modules/confiantRtdProvider.js +2 -2
- package/modules/conversantAnalyticsAdapter.js +2 -4
- package/modules/criteoBidAdapter.js +51 -8
- package/modules/currency.js +7 -7
- package/modules/dailymotionBidAdapter.js +139 -0
- package/modules/dailymotionBidAdapter.md +140 -0
- package/modules/datawrkzBidAdapter.js +4 -4
- package/modules/debugging/pbsInterceptor.js +2 -2
- package/modules/dfpAdServerVideo.js +2 -2
- package/modules/dsaControl.js +5 -5
- package/modules/eplanningAnalyticsAdapter.js +8 -8
- package/modules/fintezaAnalyticsAdapter.js +5 -5
- package/modules/gdprEnforcement.js +3 -3
- package/modules/geoedgeRtdProvider.js +2 -2
- package/modules/greenbidsAnalyticsAdapter.js +13 -10
- package/modules/greenbidsRtdProvider.js +2 -2
- package/modules/growthCodeAnalyticsAdapter.js +14 -14
- package/modules/hadronAnalyticsAdapter.js +14 -14
- package/modules/holidBidAdapter.js +2 -2
- package/modules/id5AnalyticsAdapter.js +7 -9
- package/modules/improvedigitalBidAdapter.js +2 -1
- package/modules/insticatorBidAdapter.js +137 -27
- package/modules/instreamTracking.js +4 -4
- package/modules/invisiblyAnalyticsAdapter.js +15 -17
- package/modules/ixBidAdapter.js +3 -3
- package/modules/kargoAnalyticsAdapter.js +3 -3
- package/modules/kargoBidAdapter.js +5 -11
- package/modules/konduitAnalyticsAdapter.js +13 -13
- package/modules/liveIntentAnalyticsAdapter.js +2 -2
- package/modules/livewrappedAnalyticsAdapter.js +10 -10
- package/modules/magniteAnalyticsAdapter.js +25 -23
- package/modules/malltvAnalyticsAdapter.js +4 -6
- package/modules/mediafilterRtdProvider.js +2 -2
- package/modules/medianetAnalyticsAdapter.js +12 -12
- package/modules/medianetBidAdapter.js +1 -1
- package/modules/multibid/index.js +2 -2
- package/modules/neuwoRtdProvider.js +2 -2
- package/modules/nextMillenniumBidAdapter.js +4 -4
- package/modules/nobidAnalyticsAdapter.js +9 -11
- package/modules/ooloAnalyticsAdapter.js +2 -2
- package/modules/oxxionAnalyticsAdapter.js +7 -9
- package/modules/paapi.js +20 -6
- package/modules/permutiveRtdProvider.js +21 -2
- package/modules/pgamsspBidAdapter.js +26 -3
- package/modules/pirIdSystem.js +62 -0
- package/modules/pirIdSystem.md +27 -0
- package/modules/prebidServerBidAdapter/index.js +8 -8
- package/modules/prebidServerBidAdapter/ortbConverter.js +3 -3
- package/modules/prebidmanagerAnalyticsAdapter.js +14 -14
- package/modules/priceFloors.js +10 -5
- package/modules/pubmaticAnalyticsAdapter.js +32 -22
- package/modules/pubmaticBidAdapter.js +1 -17
- package/modules/pubwiseAnalyticsAdapter.js +11 -11
- package/modules/pubxaiAnalyticsAdapter.js +6 -6
- package/modules/qortexRtdProvider.js +2 -2
- package/modules/roxotAnalyticsAdapter.js +8 -10
- package/modules/rtdModule/index.js +7 -7
- package/modules/scaleableAnalyticsAdapter.js +5 -5
- package/modules/seedtagBidAdapter.js +12 -3
- package/modules/sigmoidAnalyticsAdapter.js +7 -7
- package/modules/smaatoBidAdapter.js +1 -2
- package/modules/sonobiAnalyticsAdapter.js +10 -12
- package/modules/sovrnAnalyticsAdapter.js +7 -9
- package/modules/sovrnBidAdapter.js +1 -1
- package/modules/staqAnalyticsAdapter.js +9 -9
- package/modules/terceptAnalyticsAdapter.js +7 -7
- package/modules/topicsFpdModule.js +3 -0
- package/modules/topicsFpdModule.md +4 -0
- package/modules/ucfunnelAnalyticsAdapter.js +5 -7
- package/modules/userId/index.js +3 -3
- package/modules/videoModule/index.js +4 -4
- package/modules/yandexAnalyticsAdapter.js +2 -2
- package/modules/yieldoneAnalyticsAdapter.js +7 -7
- package/modules/yuktamediaAnalyticsAdapter.js +9 -9
- package/modules/zeta_global_sspAnalyticsAdapter.js +5 -5
- package/modules/zeta_global_sspBidAdapter.js +8 -1
- package/package.json +1 -1
- package/src/adRendering.js +15 -15
- package/src/adUnits.js +9 -21
- package/src/adapterManager.js +23 -13
- package/src/adapters/bidderFactory.js +8 -8
- package/src/auction.js +26 -28
- package/src/auctionManager.js +4 -4
- package/src/bidderSettings.js +2 -2
- package/src/config.js +2 -2
- package/src/constants.js +190 -0
- package/src/events.js +3 -3
- package/src/native.js +6 -8
- package/src/prebid.js +6 -10
- package/src/secureCreatives.js +5 -5
- package/src/targeting.js +13 -13
- package/src/utils.js +4 -4
- package/test/fixtures/fixtures.js +44 -44
- package/test/helpers/analytics.js +6 -6
- package/test/spec/AnalyticsAdapter_spec.js +3 -3
- package/test/spec/auctionmanager_spec.js +82 -82
- package/test/spec/modules/33acrossAnalyticsAdapter_spec.js +1 -2
- package/test/spec/modules/33acrossIdSystem_spec.js +3 -3
- package/test/spec/modules/adWMGAnalyticsAdapter_spec.js +14 -14
- package/test/spec/modules/adagioAnalyticsAdapter_spec.js +26 -26
- package/test/spec/modules/adkernelAdnAnalytics_spec.js +6 -6
- package/test/spec/modules/adkernelBidAdapter_spec.js +9 -4
- package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +8 -5
- package/test/spec/modules/adomikAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/adxcgAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/adxpremiumAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/agmaAnalyticsAdapter_spec.js +14 -14
- package/test/spec/modules/appierAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/asteriobidAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/atsAnalyticsAdapter_spec.js +8 -8
- package/test/spec/modules/automatadAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/bidViewabilityIO_spec.js +2 -2
- package/test/spec/modules/bidViewability_spec.js +4 -4
- package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +7 -6
- package/test/spec/modules/byDataAnalyticsAdapter_spec.js +5 -4
- package/test/spec/modules/cleanioRtdProvider_spec.js +6 -6
- package/test/spec/modules/concertAnalyticsAdapter_spec.js +7 -6
- package/test/spec/modules/confiantRtdProvider_spec.js +2 -2
- package/test/spec/modules/conversantAnalyticsAdapter_spec.js +61 -61
- package/test/spec/modules/criteoBidAdapter_spec.js +111 -5
- package/test/spec/modules/currency_spec.js +6 -6
- package/test/spec/modules/dailymotionBidAdapter_spec.js +369 -0
- package/test/spec/modules/dsaControl_spec.js +4 -4
- package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +20 -13
- package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +5 -5
- package/test/spec/modules/genericAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/geoedgeRtdProvider_spec.js +37 -37
- package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +15 -2
- package/test/spec/modules/greenbidsRtdProvider_spec.js +2 -2
- package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/hadronAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/id5AnalyticsAdapter_spec.js +5 -5
- package/test/spec/modules/id5IdSystem_spec.js +2 -2
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +3 -3
- package/test/spec/modules/insticatorBidAdapter_spec.js +275 -22
- package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +40 -40
- package/test/spec/modules/kargoAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/konduitAnalyticsAdapter_spec.js +13 -13
- package/test/spec/modules/lemmaDigitalBidAdapter_spec.js +1 -1
- package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +15 -20
- package/test/spec/modules/magniteAnalyticsAdapter_spec.js +31 -15
- package/test/spec/modules/malltvAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/mediafilterRtdProvider_spec.js +2 -2
- package/test/spec/modules/medianetAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/nobidAnalyticsAdapter_spec.js +23 -23
- package/test/spec/modules/ooloAnalyticsAdapter_spec.js +33 -33
- package/test/spec/modules/optimonAnalyticsAdapter_spec.js +0 -1
- package/test/spec/modules/oxxionAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/paapi_spec.js +40 -14
- package/test/spec/modules/permutiveRtdProvider_spec.js +29 -1
- package/test/spec/modules/pgamsspBidAdapter_spec.js +50 -4
- package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +9 -9
- package/test/spec/modules/pirIdSystem_spec.js +77 -0
- package/test/spec/modules/prebidServerBidAdapter_spec.js +7 -7
- package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/priceFloors_spec.js +6 -5
- package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +12 -14
- package/test/spec/modules/pubmaticBidAdapter_spec.js +1 -1
- package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +0 -1
- package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +14 -14
- package/test/spec/modules/pubxaiAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/qortexRtdProvider_spec.js +2 -2
- package/test/spec/modules/realTimeDataModule_spec.js +9 -9
- package/test/spec/modules/relevantAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/relevantdigitalBidAdapter_spec.js +2 -2
- package/test/spec/modules/rivrAnalyticsAdapter_spec.js +4 -4
- package/test/spec/modules/roxotAnalyticsAdapter_spec.js +25 -25
- package/test/spec/modules/scaleableAnalyticsAdapter_spec.js +5 -5
- package/test/spec/modules/seedtagBidAdapter_spec.js +56 -3
- package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +0 -1
- package/test/spec/modules/sonobiAnalyticsAdapter_spec.js +8 -7
- package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/sovrnBidAdapter_spec.js +5 -5
- package/test/spec/modules/staqAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/terceptAnalyticsAdapter_spec.js +7 -7
- package/test/spec/modules/trionBidAdapter_spec.js +1 -1
- package/test/spec/modules/ucfunnelAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/userId_spec.js +4 -4
- package/test/spec/modules/videoModule/pbVideo_spec.js +3 -3
- package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +22 -21
- package/test/spec/modules/yuktamediaAnalyticsAdapter_spec.js +33 -32
- package/test/spec/modules/zeta_global_sspAnalyticsAdapter_spec.js +8 -8
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +1 -1
- package/test/spec/native_spec.js +19 -19
- package/test/spec/unit/adRendering_spec.js +14 -14
- package/test/spec/unit/adUnits_spec.js +1 -1
- package/test/spec/unit/core/adapterManager_spec.js +99 -59
- package/test/spec/unit/core/bidderFactory_spec.js +6 -6
- package/test/spec/unit/core/targeting_spec.js +47 -47
- package/test/spec/unit/pbjs_api_spec.js +81 -81
- package/test/spec/unit/secureCreatives_spec.js +27 -27
- package/test/spec/utils_spec.js +2 -2
- package/src/constants.json +0 -196
package/src/adRendering.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {createIframe, deepAccess, inIframe, insertElement, logError, logWarn, replaceMacros} from './utils.js';
|
|
2
2
|
import * as events from './events.js';
|
|
3
|
-
import
|
|
3
|
+
import { AD_RENDER_FAILED_REASON, BID_STATUS, EVENTS, MESSAGES } from './constants.js';
|
|
4
4
|
import {config} from './config.js';
|
|
5
5
|
import {executeRenderer, isRendererRequired} from './Renderer.js';
|
|
6
6
|
import {VIDEO} from './mediaTypes.js';
|
|
@@ -9,14 +9,14 @@ import {getCreativeRenderer} from './creativeRenderers.js';
|
|
|
9
9
|
import {hook} from './hook.js';
|
|
10
10
|
import {fireNativeTrackers} from './native.js';
|
|
11
11
|
|
|
12
|
-
const {AD_RENDER_FAILED, AD_RENDER_SUCCEEDED, STALE_RENDER, BID_WON} =
|
|
13
|
-
const {EXCEPTION} =
|
|
12
|
+
const { AD_RENDER_FAILED, AD_RENDER_SUCCEEDED, STALE_RENDER, BID_WON } = EVENTS;
|
|
13
|
+
const { EXCEPTION } = AD_RENDER_FAILED_REASON;
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Emit the AD_RENDER_FAILED event.
|
|
17
17
|
*
|
|
18
18
|
* @param {Object} data
|
|
19
|
-
* @param data.reason one of the values in
|
|
19
|
+
* @param data.reason one of the values in AD_RENDER_FAILED_REASON
|
|
20
20
|
* @param data.message failure description
|
|
21
21
|
* @param [data.bid] bid response object that failed to render
|
|
22
22
|
* @param [data.id] adId that failed to render
|
|
@@ -52,7 +52,7 @@ export function emitAdRenderSucceeded({ doc, bid, id }) {
|
|
|
52
52
|
|
|
53
53
|
export function handleCreativeEvent(data, bidResponse) {
|
|
54
54
|
switch (data.event) {
|
|
55
|
-
case
|
|
55
|
+
case EVENTS.AD_RENDER_FAILED:
|
|
56
56
|
emitAdRenderFail({
|
|
57
57
|
bid: bidResponse,
|
|
58
58
|
id: bidResponse.adId,
|
|
@@ -60,7 +60,7 @@ export function handleCreativeEvent(data, bidResponse) {
|
|
|
60
60
|
message: data.info.message
|
|
61
61
|
});
|
|
62
62
|
break;
|
|
63
|
-
case
|
|
63
|
+
case EVENTS.AD_RENDER_SUCCEEDED:
|
|
64
64
|
emitAdRenderSucceeded({
|
|
65
65
|
doc: null,
|
|
66
66
|
bid: bidResponse,
|
|
@@ -83,11 +83,11 @@ export function handleNativeMessage(data, bidResponse, {resizeFn, fireTrackers =
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
const HANDLERS = {
|
|
86
|
-
[
|
|
86
|
+
[MESSAGES.EVENT]: handleCreativeEvent
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
if (FEATURES.NATIVE) {
|
|
90
|
-
HANDLERS[
|
|
90
|
+
HANDLERS[MESSAGES.NATIVE] = handleNativeMessage;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
function creativeMessageHandler(deps) {
|
|
@@ -115,7 +115,7 @@ export const getRenderingData = hook('sync', function (bidResponse, options) {
|
|
|
115
115
|
export const doRender = hook('sync', function({renderFn, resizeFn, bidResponse, options}) {
|
|
116
116
|
if (FEATURES.VIDEO && bidResponse.mediaType === VIDEO) {
|
|
117
117
|
emitAdRenderFail({
|
|
118
|
-
reason:
|
|
118
|
+
reason: AD_RENDER_FAILED_REASON.PREVENT_WRITING_ON_MAIN_DOCUMENT,
|
|
119
119
|
message: 'Cannot render video ad',
|
|
120
120
|
bid: bidResponse,
|
|
121
121
|
id: bidResponse.adId
|
|
@@ -145,13 +145,13 @@ doRender.before(function (next, args) {
|
|
|
145
145
|
export function handleRender({renderFn, resizeFn, adId, options, bidResponse, doc}) {
|
|
146
146
|
if (bidResponse == null) {
|
|
147
147
|
emitAdRenderFail({
|
|
148
|
-
reason:
|
|
148
|
+
reason: AD_RENDER_FAILED_REASON.CANNOT_FIND_AD,
|
|
149
149
|
message: `Cannot find ad '${adId}'`,
|
|
150
150
|
id: adId
|
|
151
151
|
});
|
|
152
152
|
return;
|
|
153
153
|
}
|
|
154
|
-
if (bidResponse.status ===
|
|
154
|
+
if (bidResponse.status === BID_STATUS.RENDERED) {
|
|
155
155
|
logWarn(`Ad id ${adId} has been rendered before`);
|
|
156
156
|
events.emit(STALE_RENDER, bidResponse);
|
|
157
157
|
if (deepAccess(config.getConfig('auctionOptions'), 'suppressStaleRender')) {
|
|
@@ -162,7 +162,7 @@ export function handleRender({renderFn, resizeFn, adId, options, bidResponse, do
|
|
|
162
162
|
doRender({renderFn, resizeFn, bidResponse, options, doc});
|
|
163
163
|
} catch (e) {
|
|
164
164
|
emitAdRenderFail({
|
|
165
|
-
reason:
|
|
165
|
+
reason: AD_RENDER_FAILED_REASON.EXCEPTION,
|
|
166
166
|
message: e.message,
|
|
167
167
|
id: adId,
|
|
168
168
|
bid: bidResponse
|
|
@@ -198,7 +198,7 @@ export function renderAdDirect(doc, adId, options) {
|
|
|
198
198
|
.then(
|
|
199
199
|
() => emitAdRenderSucceeded({doc, bid, adId: bid.adId}),
|
|
200
200
|
(e) => {
|
|
201
|
-
fail(e?.reason ||
|
|
201
|
+
fail(e?.reason || AD_RENDER_FAILED_REASON.EXCEPTION, e?.message)
|
|
202
202
|
e?.stack && logError(e);
|
|
203
203
|
}
|
|
204
204
|
);
|
|
@@ -209,12 +209,12 @@ export function renderAdDirect(doc, adId, options) {
|
|
|
209
209
|
}
|
|
210
210
|
try {
|
|
211
211
|
if (!adId || !doc) {
|
|
212
|
-
fail(
|
|
212
|
+
fail(AD_RENDER_FAILED_REASON.MISSING_DOC_OR_ADID, `missing ${adId ? 'doc' : 'adId'}`);
|
|
213
213
|
} else {
|
|
214
214
|
bid = auctionManager.findBidByAdId(adId);
|
|
215
215
|
|
|
216
216
|
if ((doc === document && !inIframe())) {
|
|
217
|
-
fail(
|
|
217
|
+
fail(AD_RENDER_FAILED_REASON.PREVENT_WRITING_ON_MAIN_DOCUMENT, `renderAd was prevented from writing to the main document.`);
|
|
218
218
|
} else {
|
|
219
219
|
handleRender({renderFn, resizeFn, adId, options: {clickUrl: options?.clickThrough}, bidResponse: bid, doc});
|
|
220
220
|
}
|
package/src/adUnits.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { deepAccess } from './utils.js';
|
|
2
2
|
|
|
3
3
|
let adUnits = {};
|
|
4
|
+
export function reset() {
|
|
5
|
+
adUnits = {}
|
|
6
|
+
}
|
|
4
7
|
|
|
5
8
|
function ensureAdUnit(adunit, bidderCode) {
|
|
6
9
|
let adUnit = adUnits[adunit] = adUnits[adunit] || { bidders: {} };
|
|
@@ -21,7 +24,7 @@ function incrementAdUnitCount(adunit, counter, bidderCode) {
|
|
|
21
24
|
* @param {string} adunit id
|
|
22
25
|
* @returns {number} current adunit count
|
|
23
26
|
*/
|
|
24
|
-
function incrementRequestsCounter(adunit) {
|
|
27
|
+
export function incrementRequestsCounter(adunit) {
|
|
25
28
|
return incrementAdUnitCount(adunit, 'requestsCounter');
|
|
26
29
|
}
|
|
27
30
|
|
|
@@ -31,7 +34,7 @@ function incrementRequestsCounter(adunit) {
|
|
|
31
34
|
* @param {string} bidderCode code
|
|
32
35
|
* @returns {number} current adunit bidder requests count
|
|
33
36
|
*/
|
|
34
|
-
function incrementBidderRequestsCounter(adunit, bidderCode) {
|
|
37
|
+
export function incrementBidderRequestsCounter(adunit, bidderCode) {
|
|
35
38
|
return incrementAdUnitCount(adunit, 'requestsCounter', bidderCode);
|
|
36
39
|
}
|
|
37
40
|
|
|
@@ -41,7 +44,7 @@ function incrementBidderRequestsCounter(adunit, bidderCode) {
|
|
|
41
44
|
* @param {string} bidderCode code
|
|
42
45
|
* @returns {number} current adunit bidder requests count
|
|
43
46
|
*/
|
|
44
|
-
function incrementBidderWinsCounter(adunit, bidderCode) {
|
|
47
|
+
export function incrementBidderWinsCounter(adunit, bidderCode) {
|
|
45
48
|
return incrementAdUnitCount(adunit, 'winsCounter', bidderCode);
|
|
46
49
|
}
|
|
47
50
|
|
|
@@ -50,7 +53,7 @@ function incrementBidderWinsCounter(adunit, bidderCode) {
|
|
|
50
53
|
* @param {string} adunit id
|
|
51
54
|
* @returns {number} current adunit count
|
|
52
55
|
*/
|
|
53
|
-
function getRequestsCounter(adunit) {
|
|
56
|
+
export function getRequestsCounter(adunit) {
|
|
54
57
|
return deepAccess(adUnits, `${adunit}.requestsCounter`) || 0;
|
|
55
58
|
}
|
|
56
59
|
|
|
@@ -60,7 +63,7 @@ function getRequestsCounter(adunit) {
|
|
|
60
63
|
* @param {string} bidder code
|
|
61
64
|
* @returns {number} current adunit bidder requests count
|
|
62
65
|
*/
|
|
63
|
-
function getBidderRequestsCounter(adunit, bidder) {
|
|
66
|
+
export function getBidderRequestsCounter(adunit, bidder) {
|
|
64
67
|
return deepAccess(adUnits, `${adunit}.bidders.${bidder}.requestsCounter`) || 0;
|
|
65
68
|
}
|
|
66
69
|
|
|
@@ -70,21 +73,6 @@ function getBidderRequestsCounter(adunit, bidder) {
|
|
|
70
73
|
* @param {string} bidder code
|
|
71
74
|
* @returns {number} current adunit bidder requests count
|
|
72
75
|
*/
|
|
73
|
-
function getBidderWinsCounter(adunit, bidder) {
|
|
76
|
+
export function getBidderWinsCounter(adunit, bidder) {
|
|
74
77
|
return deepAccess(adUnits, `${adunit}.bidders.${bidder}.winsCounter`) || 0;
|
|
75
78
|
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* A module which counts how many times an adunit was called
|
|
79
|
-
* @module adunitCounter
|
|
80
|
-
*/
|
|
81
|
-
let adunitCounter = {
|
|
82
|
-
incrementRequestsCounter,
|
|
83
|
-
incrementBidderRequestsCounter,
|
|
84
|
-
incrementBidderWinsCounter,
|
|
85
|
-
getRequestsCounter,
|
|
86
|
-
getBidderRequestsCounter,
|
|
87
|
-
getBidderWinsCounter
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export { adunitCounter };
|
package/src/adapterManager.js
CHANGED
|
@@ -27,11 +27,16 @@ import {ajaxBuilder} from './ajax.js';
|
|
|
27
27
|
import {config, RANDOM} from './config.js';
|
|
28
28
|
import {hook} from './hook.js';
|
|
29
29
|
import {find, includes} from './polyfill.js';
|
|
30
|
-
import {
|
|
30
|
+
import {
|
|
31
|
+
getBidderRequestsCounter,
|
|
32
|
+
getBidderWinsCounter,
|
|
33
|
+
getRequestsCounter, incrementBidderRequestsCounter,
|
|
34
|
+
incrementBidderWinsCounter, incrementRequestsCounter
|
|
35
|
+
} from './adUnits.js';
|
|
31
36
|
import {getRefererInfo} from './refererDetection.js';
|
|
32
37
|
import {GDPR_GVLIDS, gdprDataHandler, gppDataHandler, uspDataHandler, } from './consentHandler.js';
|
|
33
38
|
import * as events from './events.js';
|
|
34
|
-
import
|
|
39
|
+
import { EVENTS, S2S } from './constants.js';
|
|
35
40
|
import {useMetrics} from './utils/perfMetrics.js';
|
|
36
41
|
import {auctionManager} from './auctionManager.js';
|
|
37
42
|
import {MODULE_TYPE_ANALYTICS, MODULE_TYPE_BIDDER, MODULE_TYPE_PREBID} from './activities/modules.js';
|
|
@@ -112,6 +117,10 @@ function getBids({bidderCode, auctionId, bidderRequestId, adUnits, src, metrics}
|
|
|
112
117
|
);
|
|
113
118
|
}
|
|
114
119
|
|
|
120
|
+
if (src === 'client') {
|
|
121
|
+
incrementBidderRequestsCounter(adUnit.code, bidderCode);
|
|
122
|
+
}
|
|
123
|
+
|
|
115
124
|
bids.push(Object.assign({}, bid, {
|
|
116
125
|
adUnitCode: adUnit.code,
|
|
117
126
|
transactionId: adUnit.transactionId,
|
|
@@ -122,9 +131,9 @@ function getBids({bidderCode, auctionId, bidderRequestId, adUnits, src, metrics}
|
|
|
122
131
|
auctionId,
|
|
123
132
|
src,
|
|
124
133
|
metrics,
|
|
125
|
-
bidRequestsCount:
|
|
126
|
-
bidderRequestsCount:
|
|
127
|
-
bidderWinsCount:
|
|
134
|
+
bidRequestsCount: getRequestsCounter(adUnit.code),
|
|
135
|
+
bidderRequestsCount: getBidderRequestsCounter(adUnit.code, bid.bidder),
|
|
136
|
+
bidderWinsCount: getBidderWinsCounter(adUnit.code, bid.bidder),
|
|
128
137
|
}));
|
|
129
138
|
return bids;
|
|
130
139
|
}, [])
|
|
@@ -242,7 +251,7 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
|
|
|
242
251
|
* emit and pass adunits for external modification
|
|
243
252
|
* @see {@link https://github.com/prebid/Prebid.js/issues/4149|Issue}
|
|
244
253
|
*/
|
|
245
|
-
events.emit(
|
|
254
|
+
events.emit(EVENTS.BEFORE_REQUEST_BIDS, adUnits);
|
|
246
255
|
if (FEATURES.NATIVE) {
|
|
247
256
|
decorateAdUnitsWithNativeParams(adUnits);
|
|
248
257
|
}
|
|
@@ -253,6 +262,7 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
|
|
|
253
262
|
}
|
|
254
263
|
// filter out bidders that cannot participate in the auction
|
|
255
264
|
au.bids = au.bids.filter((bid) => !bid.bidder || dep.isAllowed(ACTIVITY_FETCH_BIDS, activityParams(MODULE_TYPE_BIDDER, bid.bidder)))
|
|
265
|
+
incrementRequestsCounter(au.code);
|
|
256
266
|
});
|
|
257
267
|
|
|
258
268
|
adUnits = setupAdUnitMediaTypes(adUnits, labels);
|
|
@@ -300,10 +310,10 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
|
|
|
300
310
|
auctionId,
|
|
301
311
|
bidderRequestId,
|
|
302
312
|
uniquePbsTid,
|
|
303
|
-
bids: hookedGetBids({bidderCode, auctionId, bidderRequestId, 'adUnits': deepClone(adUnitsS2SCopy), src:
|
|
313
|
+
bids: hookedGetBids({ bidderCode, auctionId, bidderRequestId, 'adUnits': deepClone(adUnitsS2SCopy), src: S2S.SRC, metrics }),
|
|
304
314
|
auctionStart: auctionStart,
|
|
305
315
|
timeout: s2sConfig.timeout,
|
|
306
|
-
src:
|
|
316
|
+
src: S2S.SRC,
|
|
307
317
|
refererInfo,
|
|
308
318
|
metrics,
|
|
309
319
|
}, s2sParams);
|
|
@@ -375,7 +385,7 @@ adapterManager.callBids = (adUnits, bidRequests, addBidResponse, doneCb, request
|
|
|
375
385
|
}
|
|
376
386
|
|
|
377
387
|
let [clientBidderRequests, serverBidderRequests] = bidRequests.reduce((partitions, bidRequest) => {
|
|
378
|
-
partitions[Number(typeof bidRequest.src !== 'undefined' && bidRequest.src ===
|
|
388
|
+
partitions[Number(typeof bidRequest.src !== 'undefined' && bidRequest.src === S2S.SRC)].push(bidRequest);
|
|
379
389
|
return partitions;
|
|
380
390
|
}, [[], []]);
|
|
381
391
|
|
|
@@ -428,7 +438,7 @@ adapterManager.callBids = (adUnits, bidRequests, addBidResponse, doneCb, request
|
|
|
428
438
|
// fire BID_REQUESTED event for each s2s bidRequest
|
|
429
439
|
uniqueServerRequests.forEach(bidRequest => {
|
|
430
440
|
// add the new sourceTid
|
|
431
|
-
events.emit(
|
|
441
|
+
events.emit(EVENTS.BID_REQUESTED, { ...bidRequest, tid: bidRequest.auctionId });
|
|
432
442
|
});
|
|
433
443
|
|
|
434
444
|
// make bid requests
|
|
@@ -454,7 +464,7 @@ adapterManager.callBids = (adUnits, bidRequests, addBidResponse, doneCb, request
|
|
|
454
464
|
const adapter = _bidderRegistry[bidderRequest.bidderCode];
|
|
455
465
|
config.runWithBidder(bidderRequest.bidderCode, () => {
|
|
456
466
|
logMessage(`CALLING BIDDER`);
|
|
457
|
-
events.emit(
|
|
467
|
+
events.emit(EVENTS.BID_REQUESTED, bidderRequest);
|
|
458
468
|
});
|
|
459
469
|
let ajax = ajaxBuilder(requestBidsTimeout, requestCallbacks ? {
|
|
460
470
|
request: requestCallbacks.request.bind(null, bidderRequest.bidderCode),
|
|
@@ -630,7 +640,7 @@ function invokeBidderMethod(bidder, method, spec, fn, ...params) {
|
|
|
630
640
|
}
|
|
631
641
|
|
|
632
642
|
function tryCallBidderMethod(bidder, method, param) {
|
|
633
|
-
if (param?.src !==
|
|
643
|
+
if (param?.src !== S2S.SRC) {
|
|
634
644
|
const target = getBidderMethod(bidder, method);
|
|
635
645
|
if (target != null) {
|
|
636
646
|
invokeBidderMethod(bidder, method, ...target, param);
|
|
@@ -655,7 +665,7 @@ adapterManager.callTimedOutBidders = function(adUnits, timedOutBidders, cbTimeou
|
|
|
655
665
|
adapterManager.callBidWonBidder = function(bidder, bid, adUnits) {
|
|
656
666
|
// Adding user configured params to bidWon event data
|
|
657
667
|
bid.params = getUserConfiguredParams(adUnits, bid.adUnitCode, bid.bidder);
|
|
658
|
-
|
|
668
|
+
incrementBidderWinsCounter(bid.adUnitCode, bid.bidder);
|
|
659
669
|
tryCallBidderMethod(bidder, 'onBidWon', bid);
|
|
660
670
|
};
|
|
661
671
|
|
|
@@ -5,7 +5,7 @@ import {createBid} from '../bidfactory.js';
|
|
|
5
5
|
import {userSync} from '../userSync.js';
|
|
6
6
|
import {nativeBidIsValid} from '../native.js';
|
|
7
7
|
import {isValidVideoBid} from '../video.js';
|
|
8
|
-
import
|
|
8
|
+
import { EVENTS, STATUS, REJECTION_REASON } from '../constants.js';
|
|
9
9
|
import * as events from '../events.js';
|
|
10
10
|
import {includes} from '../polyfill.js';
|
|
11
11
|
import {
|
|
@@ -256,7 +256,7 @@ export function newBidder(spec) {
|
|
|
256
256
|
if (metrics.measureTime('addBidResponse.validate', () => isValid(adUnitCode, bid))) {
|
|
257
257
|
addBidResponse(adUnitCode, bid);
|
|
258
258
|
} else {
|
|
259
|
-
addBidResponse.reject(adUnitCode, bid,
|
|
259
|
+
addBidResponse.reject(adUnitCode, bid, REJECTION_REASON.INVALID)
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
262
|
|
|
@@ -266,7 +266,7 @@ export function newBidder(spec) {
|
|
|
266
266
|
function afterAllResponses() {
|
|
267
267
|
done();
|
|
268
268
|
config.runWithBidder(spec.code, () => {
|
|
269
|
-
events.emit(
|
|
269
|
+
events.emit(EVENTS.BIDDER_DONE, bidderRequest);
|
|
270
270
|
registerSyncs(responses, bidderRequest.gdprConsent, bidderRequest.uspConsent, bidderRequest.gppConsent);
|
|
271
271
|
});
|
|
272
272
|
}
|
|
@@ -288,7 +288,7 @@ export function newBidder(spec) {
|
|
|
288
288
|
});
|
|
289
289
|
|
|
290
290
|
processBidderRequests(spec, validBidRequests.map(tidGuard.bidRequest), tidGuard.bidderRequest(bidderRequest), ajax, configEnabledCallback, {
|
|
291
|
-
onRequest: requestObject => events.emit(
|
|
291
|
+
onRequest: requestObject => events.emit(EVENTS.BEFORE_BIDDER_HTTP, bidderRequest, requestObject),
|
|
292
292
|
onResponse: (resp) => {
|
|
293
293
|
onTimelyResponse(spec.code);
|
|
294
294
|
responses.push(resp)
|
|
@@ -307,7 +307,7 @@ export function newBidder(spec) {
|
|
|
307
307
|
onTimelyResponse(spec.code);
|
|
308
308
|
}
|
|
309
309
|
adapterManager.callBidderError(spec.code, error, bidderRequest)
|
|
310
|
-
events.emit(
|
|
310
|
+
events.emit(EVENTS.BIDDER_ERROR, { error, bidderRequest });
|
|
311
311
|
logError(`Server call for ${spec.code} failed: ${errorMessage} ${error.status}. Continuing without bids.`);
|
|
312
312
|
},
|
|
313
313
|
onBid: (bid) => {
|
|
@@ -316,18 +316,18 @@ export function newBidder(spec) {
|
|
|
316
316
|
bid.adapterCode = bidRequest.bidder;
|
|
317
317
|
if (isInvalidAlternateBidder(bid.bidderCode, bidRequest.bidder)) {
|
|
318
318
|
logWarn(`${bid.bidderCode} is not a registered partner or known bidder of ${bidRequest.bidder}, hence continuing without bid. If you wish to support this bidder, please mark allowAlternateBidderCodes as true in bidderSettings.`);
|
|
319
|
-
addBidResponse.reject(bidRequest.adUnitCode, bid,
|
|
319
|
+
addBidResponse.reject(bidRequest.adUnitCode, bid, REJECTION_REASON.BIDDER_DISALLOWED)
|
|
320
320
|
return;
|
|
321
321
|
}
|
|
322
322
|
// creating a copy of original values as cpm and currency are modified later
|
|
323
323
|
bid.originalCpm = bid.cpm;
|
|
324
324
|
bid.originalCurrency = bid.currency;
|
|
325
325
|
bid.meta = bid.meta || Object.assign({}, bid[bidRequest.bidder]);
|
|
326
|
-
const prebidBid = Object.assign(createBid(
|
|
326
|
+
const prebidBid = Object.assign(createBid(STATUS.GOOD, bidRequest), bid, pick(bidRequest, TIDS));
|
|
327
327
|
addBidWithCode(bidRequest.adUnitCode, prebidBid);
|
|
328
328
|
} else {
|
|
329
329
|
logWarn(`Bidder ${spec.code} made bid for unknown request ID: ${bid.requestId}. Ignoring.`);
|
|
330
|
-
addBidResponse.reject(null, bid,
|
|
330
|
+
addBidResponse.reject(null, bid, REJECTION_REASON.INVALID_REQUEST_ID);
|
|
331
331
|
}
|
|
332
332
|
},
|
|
333
333
|
onCompletion: afterAllResponses,
|
package/src/auction.js
CHANGED
|
@@ -94,7 +94,7 @@ import {auctionManager} from './auctionManager.js';
|
|
|
94
94
|
import {bidderSettings} from './bidderSettings.js';
|
|
95
95
|
import * as events from './events.js';
|
|
96
96
|
import adapterManager from './adapterManager.js';
|
|
97
|
-
import
|
|
97
|
+
import { EVENTS, GRANULARITY_OPTIONS, JSON_MAPPING, S2S, TARGETING_KEYS } from './constants.js';
|
|
98
98
|
import {defer, GreedyPromise} from './utils/promise.js';
|
|
99
99
|
import {useMetrics} from './utils/perfMetrics.js';
|
|
100
100
|
import {adjustCpm} from './utils/cpm.js';
|
|
@@ -107,7 +107,7 @@ export const AUCTION_IN_PROGRESS = 'inProgress';
|
|
|
107
107
|
export const AUCTION_COMPLETED = 'completed';
|
|
108
108
|
|
|
109
109
|
// register event for bid adjustment
|
|
110
|
-
events.on(
|
|
110
|
+
events.on(EVENTS.BID_ADJUSTMENT, function (bid) {
|
|
111
111
|
adjustBids(bid);
|
|
112
112
|
});
|
|
113
113
|
|
|
@@ -196,7 +196,7 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels, a
|
|
|
196
196
|
if (!timedOut) {
|
|
197
197
|
clearTimeout(_timeoutTimer);
|
|
198
198
|
} else {
|
|
199
|
-
events.emit(
|
|
199
|
+
events.emit(EVENTS.AUCTION_TIMEOUT, getProperties());
|
|
200
200
|
}
|
|
201
201
|
if (_auctionEnd === undefined) {
|
|
202
202
|
let timedOutRequests = [];
|
|
@@ -204,7 +204,7 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels, a
|
|
|
204
204
|
logMessage(`Auction ${_auctionId} timedOut`);
|
|
205
205
|
timedOutRequests = _bidderRequests.filter(rq => !_timelyRequests.has(rq.bidderRequestId)).flatMap(br => br.bids)
|
|
206
206
|
if (timedOutRequests.length) {
|
|
207
|
-
events.emit(
|
|
207
|
+
events.emit(EVENTS.BID_TIMEOUT, timedOutRequests);
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
|
|
@@ -215,7 +215,7 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels, a
|
|
|
215
215
|
metrics.timeBetween('callBids', 'auctionEnd', 'requestBids.callBids');
|
|
216
216
|
done.resolve();
|
|
217
217
|
|
|
218
|
-
events.emit(
|
|
218
|
+
events.emit(EVENTS.AUCTION_END, getProperties());
|
|
219
219
|
bidsBackCallback(_adUnits, function () {
|
|
220
220
|
try {
|
|
221
221
|
if (_callback != null) {
|
|
@@ -293,7 +293,7 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels, a
|
|
|
293
293
|
|
|
294
294
|
_auctionStatus = AUCTION_IN_PROGRESS;
|
|
295
295
|
|
|
296
|
-
events.emit(
|
|
296
|
+
events.emit(EVENTS.AUCTION_INIT, getProperties());
|
|
297
297
|
|
|
298
298
|
let callbacks = auctionCallbacks(auctionDone, this);
|
|
299
299
|
adapterManager.callBids(_adUnits, bidRequests, callbacks.addBidResponse, callbacks.adapterDone, {
|
|
@@ -335,7 +335,7 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels, a
|
|
|
335
335
|
|
|
336
336
|
call.bidRequests.some(bidRequest => {
|
|
337
337
|
let requests = 1;
|
|
338
|
-
let source = (typeof bidRequest.src !== 'undefined' && bidRequest.src ===
|
|
338
|
+
let source = (typeof bidRequest.src !== 'undefined' && bidRequest.src === S2S.SRC) ? 's2s'
|
|
339
339
|
: bidRequest.bidderCode;
|
|
340
340
|
// if we have no previous info on this source just let them through
|
|
341
341
|
if (sourceInfo[source]) {
|
|
@@ -381,7 +381,7 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels, a
|
|
|
381
381
|
adapterManager.callSetTargetingBidder(bid.adapterCode || bid.bidder, bid);
|
|
382
382
|
}
|
|
383
383
|
|
|
384
|
-
events.on(
|
|
384
|
+
events.on(EVENTS.SEAT_NON_BID, (event) => {
|
|
385
385
|
if (event.auctionId === _auctionId) {
|
|
386
386
|
addNonBids(event.seatnonbid)
|
|
387
387
|
}
|
|
@@ -465,7 +465,7 @@ export function auctionCallbacks(auctionDone, auctionInstance, {index = auctionM
|
|
|
465
465
|
function acceptBidResponse(adUnitCode, bid) {
|
|
466
466
|
handleBidResponse(adUnitCode, bid, (done) => {
|
|
467
467
|
let bidResponse = getPreparedBidForAuction(bid);
|
|
468
|
-
events.emit(
|
|
468
|
+
events.emit(EVENTS.BID_ACCEPTED, bidResponse);
|
|
469
469
|
if (FEATURES.VIDEO && bidResponse.mediaType === VIDEO) {
|
|
470
470
|
tryAddVideoBid(auctionInstance, bidResponse, done);
|
|
471
471
|
} else {
|
|
@@ -482,7 +482,7 @@ export function auctionCallbacks(auctionDone, auctionInstance, {index = auctionM
|
|
|
482
482
|
return handleBidResponse(adUnitCode, bid, (done) => {
|
|
483
483
|
bid.rejectionReason = reason;
|
|
484
484
|
logWarn(`Bid from ${bid.bidder || 'unknown bidder'} was rejected: ${reason}`, bid)
|
|
485
|
-
events.emit(
|
|
485
|
+
events.emit(EVENTS.BID_REJECTED, bid);
|
|
486
486
|
auctionInstance.addBidRejected(bid);
|
|
487
487
|
done();
|
|
488
488
|
})
|
|
@@ -507,7 +507,7 @@ export function auctionCallbacks(auctionDone, auctionInstance, {index = auctionM
|
|
|
507
507
|
bidderRequest.bids.forEach(bid => {
|
|
508
508
|
if (!bidResponseMap[bid.bidId]) {
|
|
509
509
|
auctionInstance.addNoBid(bid);
|
|
510
|
-
events.emit(
|
|
510
|
+
events.emit(EVENTS.NO_BID, bid);
|
|
511
511
|
}
|
|
512
512
|
});
|
|
513
513
|
|
|
@@ -546,7 +546,7 @@ export function addBidToAuction(auctionInstance, bidResponse) {
|
|
|
546
546
|
|
|
547
547
|
useMetrics(bidResponse.metrics).timeSince('addBidResponse', 'addBidResponse.total');
|
|
548
548
|
auctionInstance.addBidReceived(bidResponse);
|
|
549
|
-
events.emit(
|
|
549
|
+
events.emit(EVENTS.BID_RESPONSE, bidResponse);
|
|
550
550
|
}
|
|
551
551
|
|
|
552
552
|
// Video bids may fail if the cache is down, or there's trouble on the network.
|
|
@@ -672,7 +672,7 @@ function getPreparedBidForAuction(bid, {index = auctionManager.index} = {}) {
|
|
|
672
672
|
//
|
|
673
673
|
// CAREFUL: Publishers rely on certain bid properties to be available (like cpm),
|
|
674
674
|
// but others to not be set yet (like priceStrings). See #1372 and #1389.
|
|
675
|
-
events.emit(
|
|
675
|
+
events.emit(EVENTS.BID_ADJUSTMENT, bid);
|
|
676
676
|
|
|
677
677
|
// a publisher-defined renderer can be used to render bids
|
|
678
678
|
const bidRenderer = index.getBidRequest(bid)?.renderer || index.getAdUnit(bid).renderer;
|
|
@@ -767,17 +767,17 @@ export const getPriceGranularity = (bid, {index = auctionManager.index} = {}) =>
|
|
|
767
767
|
export const getPriceByGranularity = (granularity) => {
|
|
768
768
|
return (bid) => {
|
|
769
769
|
const bidGranularity = granularity || getPriceGranularity(bid);
|
|
770
|
-
if (bidGranularity ===
|
|
770
|
+
if (bidGranularity === GRANULARITY_OPTIONS.AUTO) {
|
|
771
771
|
return bid.pbAg;
|
|
772
|
-
} else if (bidGranularity ===
|
|
772
|
+
} else if (bidGranularity === GRANULARITY_OPTIONS.DENSE) {
|
|
773
773
|
return bid.pbDg;
|
|
774
|
-
} else if (bidGranularity ===
|
|
774
|
+
} else if (bidGranularity === GRANULARITY_OPTIONS.LOW) {
|
|
775
775
|
return bid.pbLg;
|
|
776
|
-
} else if (bidGranularity ===
|
|
776
|
+
} else if (bidGranularity === GRANULARITY_OPTIONS.MEDIUM) {
|
|
777
777
|
return bid.pbMg;
|
|
778
|
-
} else if (bidGranularity ===
|
|
778
|
+
} else if (bidGranularity === GRANULARITY_OPTIONS.HIGH) {
|
|
779
779
|
return bid.pbHg;
|
|
780
|
-
} else if (bidGranularity ===
|
|
780
|
+
} else if (bidGranularity === GRANULARITY_OPTIONS.CUSTOM) {
|
|
781
781
|
return bid.pbCg;
|
|
782
782
|
}
|
|
783
783
|
}
|
|
@@ -838,7 +838,6 @@ function createKeyVal(key, value) {
|
|
|
838
838
|
}
|
|
839
839
|
|
|
840
840
|
function defaultAdserverTargeting() {
|
|
841
|
-
const TARGETING_KEYS = CONSTANTS.TARGETING_KEYS;
|
|
842
841
|
return [
|
|
843
842
|
createKeyVal(TARGETING_KEYS.BIDDER, 'bidderCode'),
|
|
844
843
|
createKeyVal(TARGETING_KEYS.AD_ID, 'adId'),
|
|
@@ -860,15 +859,14 @@ function defaultAdserverTargeting() {
|
|
|
860
859
|
* @returns {*}
|
|
861
860
|
*/
|
|
862
861
|
export function getStandardBidderSettings(mediaType, bidderCode) {
|
|
863
|
-
const TARGETING_KEYS = CONSTANTS.TARGETING_KEYS;
|
|
864
862
|
const standardSettings = Object.assign({}, bidderSettings.settingsFor(null));
|
|
865
|
-
if (!standardSettings[
|
|
866
|
-
standardSettings[
|
|
863
|
+
if (!standardSettings[JSON_MAPPING.ADSERVER_TARGETING]) {
|
|
864
|
+
standardSettings[JSON_MAPPING.ADSERVER_TARGETING] = defaultAdserverTargeting();
|
|
867
865
|
}
|
|
868
866
|
|
|
869
867
|
if (FEATURES.VIDEO && mediaType === 'video') {
|
|
870
|
-
const adserverTargeting = standardSettings[
|
|
871
|
-
standardSettings[
|
|
868
|
+
const adserverTargeting = standardSettings[JSON_MAPPING.ADSERVER_TARGETING].slice();
|
|
869
|
+
standardSettings[JSON_MAPPING.ADSERVER_TARGETING] = adserverTargeting;
|
|
872
870
|
|
|
873
871
|
// Adding hb_uuid + hb_cache_id
|
|
874
872
|
[TARGETING_KEYS.UUID, TARGETING_KEYS.CACHE_ID].forEach(targetingKeyVal => {
|
|
@@ -906,7 +904,7 @@ export function getKeyValueTargetingPairs(bidderCode, custBidObj, {index = aucti
|
|
|
906
904
|
setKeys(keyValues, standardSettings, custBidObj, bidRequest);
|
|
907
905
|
|
|
908
906
|
// 2) set keys from specific bidder setting override if they exist
|
|
909
|
-
if (bidderCode && bidderSettings.getOwn(bidderCode,
|
|
907
|
+
if (bidderCode && bidderSettings.getOwn(bidderCode, JSON_MAPPING.ADSERVER_TARGETING)) {
|
|
910
908
|
setKeys(keyValues, bidderSettings.ownSettingsFor(bidderCode), custBidObj, bidRequest);
|
|
911
909
|
custBidObj.sendStandardTargeting = bidderSettings.get(bidderCode, 'sendStandardTargeting');
|
|
912
910
|
}
|
|
@@ -920,7 +918,7 @@ export function getKeyValueTargetingPairs(bidderCode, custBidObj, {index = aucti
|
|
|
920
918
|
}
|
|
921
919
|
|
|
922
920
|
function setKeys(keyValues, bidderSettings, custBidObj, bidReq) {
|
|
923
|
-
var targeting = bidderSettings[
|
|
921
|
+
var targeting = bidderSettings[JSON_MAPPING.ADSERVER_TARGETING];
|
|
924
922
|
custBidObj.size = custBidObj.getSize();
|
|
925
923
|
|
|
926
924
|
(targeting || []).forEach(function (kvPair) {
|
|
@@ -941,7 +939,7 @@ function setKeys(keyValues, bidderSettings, custBidObj, bidReq) {
|
|
|
941
939
|
|
|
942
940
|
if (
|
|
943
941
|
((typeof bidderSettings.suppressEmptyKeys !== 'undefined' && bidderSettings.suppressEmptyKeys === true) ||
|
|
944
|
-
|
|
942
|
+
key === TARGETING_KEYS.DEAL || key === TARGETING_KEYS.ACAT || key === TARGETING_KEYS.DSP || key === TARGETING_KEYS.CRID) && // hb_deal & hb_acat are suppressed automatically if not set
|
|
945
943
|
(
|
|
946
944
|
isEmptyStr(value) ||
|
|
947
945
|
value === null ||
|
package/src/auctionManager.js
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
import { uniques, logWarn } from './utils.js';
|
|
24
24
|
import { newAuction, getStandardBidderSettings, AUCTION_COMPLETED } from './auction.js';
|
|
25
25
|
import {AuctionIndex} from './auctionIndex.js';
|
|
26
|
-
import
|
|
26
|
+
import { BID_STATUS, JSON_MAPPING } from './constants.js';
|
|
27
27
|
import {useMetrics} from './utils/perfMetrics.js';
|
|
28
28
|
import {ttlCollection} from './utils/ttlCollection.js';
|
|
29
29
|
import {getTTL, onTTLBufferChange} from './bidTTL.js';
|
|
@@ -77,7 +77,7 @@ export function newAuctionManager() {
|
|
|
77
77
|
metrics.timeBetween('requestBids', 'bidWon', 'render.e2e');
|
|
78
78
|
const auction = getAuction(bid.auctionId);
|
|
79
79
|
if (auction) {
|
|
80
|
-
bid.status =
|
|
80
|
+
bid.status = BID_STATUS.RENDERED;
|
|
81
81
|
auction.addWinningBid(bid);
|
|
82
82
|
} else {
|
|
83
83
|
logWarn(`Auction not found when adding winning bid`);
|
|
@@ -134,14 +134,14 @@ export function newAuctionManager() {
|
|
|
134
134
|
};
|
|
135
135
|
|
|
136
136
|
auctionManager.getStandardBidderAdServerTargeting = function() {
|
|
137
|
-
return getStandardBidderSettings()[
|
|
137
|
+
return getStandardBidderSettings()[JSON_MAPPING.ADSERVER_TARGETING];
|
|
138
138
|
};
|
|
139
139
|
|
|
140
140
|
auctionManager.setStatusForBids = function(adId, status) {
|
|
141
141
|
let bid = auctionManager.findBidByAdId(adId);
|
|
142
142
|
if (bid) bid.status = status;
|
|
143
143
|
|
|
144
|
-
if (bid && status ===
|
|
144
|
+
if (bid && status === BID_STATUS.BID_TARGETING_SET) {
|
|
145
145
|
const auction = getAuction(bid.auctionId);
|
|
146
146
|
if (auction) auction.setBidTargeting(bid);
|
|
147
147
|
}
|
package/src/bidderSettings.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {deepAccess, mergeDeep} from './utils.js';
|
|
2
2
|
import {getGlobal} from './prebidGlobal.js';
|
|
3
|
-
import
|
|
3
|
+
import { JSON_MAPPING } from './constants.js';
|
|
4
4
|
|
|
5
5
|
export class ScopedSettings {
|
|
6
6
|
constructor(getSettings, defaultScope) {
|
|
@@ -65,4 +65,4 @@ export class ScopedSettings {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
export const bidderSettings = new ScopedSettings(() => getGlobal().bidderSettings || {},
|
|
68
|
+
export const bidderSettings = new ScopedSettings(() => getGlobal().bidderSettings || {}, JSON_MAPPING.BD_SETTING_STANDARD);
|
package/src/config.js
CHANGED
|
@@ -27,9 +27,9 @@ import {
|
|
|
27
27
|
logWarn,
|
|
28
28
|
mergeDeep
|
|
29
29
|
} from './utils.js';
|
|
30
|
-
import
|
|
30
|
+
import {DEBUG_MODE} from './constants.js';
|
|
31
31
|
|
|
32
|
-
const DEFAULT_DEBUG = getParameterByName(
|
|
32
|
+
const DEFAULT_DEBUG = getParameterByName(DEBUG_MODE).toUpperCase() === 'TRUE';
|
|
33
33
|
const DEFAULT_BIDDER_TIMEOUT = 3000;
|
|
34
34
|
const DEFAULT_ENABLE_SEND_ALL_BIDS = true;
|
|
35
35
|
const DEFAULT_DISABLE_AJAX_TIMEOUT = false;
|