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
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from '../src/utils.js';
|
|
20
20
|
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
21
21
|
import adapterManager from '../src/adapterManager.js';
|
|
22
|
-
import
|
|
22
|
+
import { EVENTS, REJECTION_REASON } from '../src/constants.js';
|
|
23
23
|
import {ajax} from '../src/ajax.js';
|
|
24
24
|
import {config} from '../src/config.js';
|
|
25
25
|
import {getGlobal} from '../src/prebidGlobal.js';
|
|
@@ -34,6 +34,7 @@ const LAST_SEEN_EXPIRE_TIME = 1800000; // 30 mins
|
|
|
34
34
|
const END_EXPIRE_TIME = 21600000; // 6 hours
|
|
35
35
|
const MODULE_NAME = 'Magnite Analytics';
|
|
36
36
|
const BID_REJECTED_IPF = 'rejected-ipf';
|
|
37
|
+
const DEFAULT_INTEGRATION = 'pbjs';
|
|
37
38
|
|
|
38
39
|
// List of known rubicon aliases
|
|
39
40
|
// This gets updated on auction init to account for any custom aliases present
|
|
@@ -48,21 +49,25 @@ const pbsErrorMap = {
|
|
|
48
49
|
}
|
|
49
50
|
let cookieless;
|
|
50
51
|
|
|
52
|
+
let browser;
|
|
53
|
+
let pageReferer;
|
|
54
|
+
let auctionIndex = 0; // count of auctions on page
|
|
55
|
+
let accountId;
|
|
56
|
+
let endpoint;
|
|
57
|
+
|
|
51
58
|
let prebidGlobal = getGlobal();
|
|
52
59
|
const {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
} = CONSTANTS;
|
|
60
|
+
AUCTION_INIT,
|
|
61
|
+
AUCTION_END,
|
|
62
|
+
BID_REQUESTED,
|
|
63
|
+
BID_RESPONSE,
|
|
64
|
+
BIDDER_DONE,
|
|
65
|
+
BID_TIMEOUT,
|
|
66
|
+
BID_WON,
|
|
67
|
+
BILLABLE_EVENT,
|
|
68
|
+
SEAT_NON_BID,
|
|
69
|
+
BID_REJECTED
|
|
70
|
+
} = EVENTS;
|
|
66
71
|
|
|
67
72
|
// The saved state of rubicon specific setConfig controls
|
|
68
73
|
export let rubiConf;
|
|
@@ -107,8 +112,6 @@ config.getConfig('s2sConfig', ({ s2sConfig }) => {
|
|
|
107
112
|
serverConfig = s2sConfig;
|
|
108
113
|
});
|
|
109
114
|
|
|
110
|
-
const DEFAULT_INTEGRATION = 'pbjs';
|
|
111
|
-
|
|
112
115
|
const adUnitIsOnlyInstream = adUnit => {
|
|
113
116
|
return adUnit.mediaTypes && Object.keys(adUnit.mediaTypes).length === 1 && deepAccess(adUnit, 'mediaTypes.video.context') === 'instream';
|
|
114
117
|
}
|
|
@@ -311,8 +314,6 @@ const addFloorData = floorData => {
|
|
|
311
314
|
}
|
|
312
315
|
}
|
|
313
316
|
|
|
314
|
-
let pageReferer;
|
|
315
|
-
|
|
316
317
|
const getTopLevelDetails = () => {
|
|
317
318
|
let payload = {
|
|
318
319
|
channel: 'web',
|
|
@@ -647,9 +648,6 @@ export const detectBrowserFromUa = userAgent => {
|
|
|
647
648
|
return 'OTHER';
|
|
648
649
|
}
|
|
649
650
|
|
|
650
|
-
let accountId;
|
|
651
|
-
let endpoint;
|
|
652
|
-
|
|
653
651
|
let magniteAdapter = adapter({ analyticsType: 'endpoint' });
|
|
654
652
|
|
|
655
653
|
magniteAdapter.originEnableAnalytics = magniteAdapter.enableAnalytics;
|
|
@@ -705,6 +703,7 @@ magniteAdapter.disableAnalytics = function () {
|
|
|
705
703
|
magniteAdapter._oldEnable = enableMgniAnalytics;
|
|
706
704
|
endpoint = undefined;
|
|
707
705
|
accountId = undefined;
|
|
706
|
+
auctionIndex = 0;
|
|
708
707
|
resetConfs();
|
|
709
708
|
getHook('callPrebidCache').getHooks({ hook: callPrebidCacheHook }).remove();
|
|
710
709
|
magniteAdapter.originDisableAnalytics();
|
|
@@ -793,10 +792,10 @@ const getLatencies = (args, auctionStart) => {
|
|
|
793
792
|
}
|
|
794
793
|
}
|
|
795
794
|
|
|
796
|
-
let browser;
|
|
797
795
|
magniteAdapter.track = ({ eventType, args }) => {
|
|
798
796
|
switch (eventType) {
|
|
799
797
|
case AUCTION_INIT:
|
|
798
|
+
auctionIndex += 1;
|
|
800
799
|
// Update session
|
|
801
800
|
cache.sessionData = storage.localStorageIsEnabled() && updateRpaCookie();
|
|
802
801
|
// set the rubicon aliases
|
|
@@ -812,6 +811,7 @@ magniteAdapter.track = ({ eventType, args }) => {
|
|
|
812
811
|
'timeout as clientTimeoutMillis',
|
|
813
812
|
]);
|
|
814
813
|
auctionData.accountId = accountId;
|
|
814
|
+
auctionData.auctionIndex = auctionIndex;
|
|
815
815
|
|
|
816
816
|
// get browser
|
|
817
817
|
if (!browser) {
|
|
@@ -907,6 +907,8 @@ magniteAdapter.track = ({ eventType, args }) => {
|
|
|
907
907
|
'source', () => bid.src === 's2s' ? 'server' : 'client',
|
|
908
908
|
'status', () => 'no-bid'
|
|
909
909
|
]);
|
|
910
|
+
// add a pbs flag if one of the bids has a server source
|
|
911
|
+
if (adUnit.bids[bid.bidId].source === 'server') adUnit.pbsRequest = 1;
|
|
910
912
|
// set acct site zone id on adunit
|
|
911
913
|
if ((!adUnit.siteId || !adUnit.zoneId) && rubiconAliases.indexOf(bid.bidder) !== -1) {
|
|
912
914
|
if (deepAccess(bid, 'params.accountId') == accountId) {
|
|
@@ -921,7 +923,7 @@ magniteAdapter.track = ({ eventType, args }) => {
|
|
|
921
923
|
handleBidResponse(args, 'success');
|
|
922
924
|
break;
|
|
923
925
|
case BID_REJECTED:
|
|
924
|
-
const bidStatus = args.rejectionReason ===
|
|
926
|
+
const bidStatus = args.rejectionReason === REJECTION_REASON.FLOOR_NOT_MET ? BID_REJECTED_IPF : 'rejected';
|
|
925
927
|
handleBidResponse(args, bidStatus);
|
|
926
928
|
break;
|
|
927
929
|
case SEAT_NON_BID:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {ajax} from '../src/ajax.js'
|
|
2
2
|
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js'
|
|
3
|
-
import
|
|
3
|
+
import { EVENTS } from '../src/constants.js'
|
|
4
4
|
import adapterManager from '../src/adapterManager.js'
|
|
5
5
|
import {getGlobal} from '../src/prebidGlobal.js'
|
|
6
6
|
import {logInfo, logError, deepClone} from '../src/utils.js'
|
|
@@ -10,11 +10,9 @@ export const ANALYTICS_VERSION = '1.0.0'
|
|
|
10
10
|
export const DEFAULT_SERVER = 'https://central.mall.tv/analytics'
|
|
11
11
|
|
|
12
12
|
const {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
17
|
-
} = CONSTANTS
|
|
13
|
+
AUCTION_END,
|
|
14
|
+
BID_TIMEOUT
|
|
15
|
+
} = EVENTS
|
|
18
16
|
|
|
19
17
|
export const BIDDER_STATUS = {
|
|
20
18
|
BID: 1,
|
|
@@ -14,7 +14,7 @@ import { submodule } from '../src/hook.js';
|
|
|
14
14
|
import { logError, generateUUID } from '../src/utils.js';
|
|
15
15
|
import { loadExternalScript } from '../src/adloader.js';
|
|
16
16
|
import * as events from '../src/events.js';
|
|
17
|
-
import
|
|
17
|
+
import { EVENTS } from '../src/constants.js';
|
|
18
18
|
|
|
19
19
|
/** The event type for Media Filter. */
|
|
20
20
|
export const MEDIAFILTER_EVENT_TYPE = 'com.mediatrust.pbjs.';
|
|
@@ -65,7 +65,7 @@ export const MediaFilter = {
|
|
|
65
65
|
generateEventHandler: function(configurationHash) {
|
|
66
66
|
return (windowEvent) => {
|
|
67
67
|
if (windowEvent.data.type === MEDIAFILTER_EVENT_TYPE.concat('.', configurationHash)) {
|
|
68
|
-
events.emit(
|
|
68
|
+
events.emit(EVENTS.BILLABLE_EVENT, {
|
|
69
69
|
'billingId': generateUUID(),
|
|
70
70
|
'configurationHash': configurationHash,
|
|
71
71
|
'type': 'impression',
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
} from '../src/utils.js';
|
|
13
13
|
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
14
14
|
import adapterManager from '../src/adapterManager.js';
|
|
15
|
-
import
|
|
15
|
+
import { BID_STATUS, EVENTS, TARGETING_KEYS } from '../src/constants.js';
|
|
16
16
|
import {ajax} from '../src/ajax.js';
|
|
17
17
|
import {getRefererInfo} from '../src/refererDetection.js';
|
|
18
18
|
import {AUCTION_COMPLETED, AUCTION_IN_PROGRESS, getPriceGranularity} from '../src/auction.js';
|
|
@@ -590,7 +590,7 @@ function bidResponseHandler(bid) {
|
|
|
590
590
|
dfpbd = bid[priceGranularityKey] || cpm;
|
|
591
591
|
}
|
|
592
592
|
bidObj.dfpbd = dfpbd;
|
|
593
|
-
if (bid.status ===
|
|
593
|
+
if (bid.status === BID_STATUS.BID_REJECTED) {
|
|
594
594
|
bidObj.status = BID_FLOOR_REJECTED;
|
|
595
595
|
} else {
|
|
596
596
|
bidObj.status = BID_SUCCESS;
|
|
@@ -660,12 +660,12 @@ function setTargetingHandler(params) {
|
|
|
660
660
|
adunitObj.targeting = params[adunit];
|
|
661
661
|
auctionObj.setTargetingTime = Date.now();
|
|
662
662
|
let targetingObj = Object.keys(params[adunit]).reduce((result, key) => {
|
|
663
|
-
if (key.indexOf(
|
|
663
|
+
if (key.indexOf(TARGETING_KEYS.AD_ID) !== -1) {
|
|
664
664
|
result[key] = params[adunit][key]
|
|
665
665
|
}
|
|
666
666
|
return result;
|
|
667
667
|
}, {});
|
|
668
|
-
const winnerAdId = params[adunit][
|
|
668
|
+
const winnerAdId = params[adunit][TARGETING_KEYS.AD_ID];
|
|
669
669
|
let winningBid;
|
|
670
670
|
let bidAdIds = Object.keys(targetingObj).map(k => targetingObj[k]);
|
|
671
671
|
auctionObj.bidWrapper.bidObjs.filter((bid) => bidAdIds.indexOf(bid.adId) !== -1).map(function(bid) {
|
|
@@ -845,35 +845,35 @@ let medianetAnalytics = Object.assign(adapter({URL, analyticsType}), {
|
|
|
845
845
|
logInfo(eventType, args);
|
|
846
846
|
}
|
|
847
847
|
switch (eventType) {
|
|
848
|
-
case
|
|
848
|
+
case EVENTS.AUCTION_INIT: {
|
|
849
849
|
auctionInitHandler(args);
|
|
850
850
|
break;
|
|
851
851
|
}
|
|
852
|
-
case
|
|
852
|
+
case EVENTS.BID_REQUESTED: {
|
|
853
853
|
bidRequestedHandler(args);
|
|
854
854
|
break;
|
|
855
855
|
}
|
|
856
|
-
case
|
|
856
|
+
case EVENTS.BID_RESPONSE: {
|
|
857
857
|
bidResponseHandler(args);
|
|
858
858
|
break;
|
|
859
859
|
}
|
|
860
|
-
case
|
|
860
|
+
case EVENTS.BID_TIMEOUT: {
|
|
861
861
|
bidTimeoutHandler(args);
|
|
862
862
|
break;
|
|
863
863
|
}
|
|
864
|
-
case
|
|
864
|
+
case EVENTS.NO_BID: {
|
|
865
865
|
noBidResponseHandler(args);
|
|
866
866
|
break;
|
|
867
867
|
}
|
|
868
|
-
case
|
|
868
|
+
case EVENTS.AUCTION_END: {
|
|
869
869
|
auctionEndHandler(args);
|
|
870
870
|
break;
|
|
871
871
|
}
|
|
872
|
-
case
|
|
872
|
+
case EVENTS.SET_TARGETING: {
|
|
873
873
|
setTargetingHandler(args);
|
|
874
874
|
break;
|
|
875
875
|
}
|
|
876
|
-
case
|
|
876
|
+
case EVENTS.BID_WON: {
|
|
877
877
|
bidWonHandler(args);
|
|
878
878
|
break;
|
|
879
879
|
}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
logWarn, deepAccess, getUniqueIdentifierStr, deepSetValue, groupBy
|
|
10
10
|
} from '../../src/utils.js';
|
|
11
11
|
import * as events from '../../src/events.js';
|
|
12
|
-
import
|
|
12
|
+
import { EVENTS } from '../../src/constants.js';
|
|
13
13
|
import {addBidderRequests} from '../../src/auction.js';
|
|
14
14
|
import {getHighestCpmBidsFromBidPool, sortByDealAndPriceBucketOrCpm} from '../../src/targeting.js';
|
|
15
15
|
import {PBS, registerOrtbProcessor, REQUEST} from '../../src/pbjsORTB.js';
|
|
@@ -230,7 +230,7 @@ export const resetMultibidUnits = () => multibidUnits = {};
|
|
|
230
230
|
*/
|
|
231
231
|
function init() {
|
|
232
232
|
// TODO: does this reset logic make sense - what about simultaneous auctions?
|
|
233
|
-
events.on(
|
|
233
|
+
events.on(EVENTS.AUCTION_INIT, resetMultibidUnits);
|
|
234
234
|
setupBeforeHookFnOnce(addBidderRequests, adjustBidderRequestsHook);
|
|
235
235
|
getHook('addBidResponse').before(addBidResponseHook, 3);
|
|
236
236
|
setupBeforeHookFnOnce(getHighestCpmBidsFromBidPool, targetBidPoolHook);
|
|
@@ -3,7 +3,7 @@ import { getRefererInfo } from '../src/refererDetection.js';
|
|
|
3
3
|
import { ajax } from '../src/ajax.js';
|
|
4
4
|
import { submodule } from '../src/hook.js';
|
|
5
5
|
import * as events from '../src/events.js';
|
|
6
|
-
import
|
|
6
|
+
import { EVENTS } from '../src/constants.js';
|
|
7
7
|
|
|
8
8
|
export const DATA_PROVIDER = 'neuwo.ai';
|
|
9
9
|
const SEGTAX_IAB = 6 // IAB - Content Taxonomy version 2
|
|
@@ -42,7 +42,7 @@ export function getBidRequestData(reqBidsConfigObj, callback, config, userConsen
|
|
|
42
42
|
try {
|
|
43
43
|
const jsonContent = JSON.parse(responseContent);
|
|
44
44
|
if (jsonContent.marketing_categories) {
|
|
45
|
-
events.emit(
|
|
45
|
+
events.emit(EVENTS.BILLABLE_EVENT, { type: 'request', billingId, vendor: neuwoRtdModule.name })
|
|
46
46
|
}
|
|
47
47
|
injectTopics(jsonContent, reqBidsConfigObj, billingId)
|
|
48
48
|
} catch (ex) {
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from '../src/utils.js';
|
|
15
15
|
|
|
16
16
|
import {getGlobal} from '../src/prebidGlobal.js';
|
|
17
|
-
import
|
|
17
|
+
import { EVENTS } from '../src/constants.js';
|
|
18
18
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
19
19
|
import {config} from '../src/config.js';
|
|
20
20
|
|
|
@@ -139,7 +139,7 @@ export const spec = {
|
|
|
139
139
|
auctionId,
|
|
140
140
|
});
|
|
141
141
|
|
|
142
|
-
this.getUrlPixelMetric(
|
|
142
|
+
this.getUrlPixelMetric(EVENTS.BID_REQUESTED, bid);
|
|
143
143
|
});
|
|
144
144
|
|
|
145
145
|
return requests;
|
|
@@ -183,7 +183,7 @@ export const spec = {
|
|
|
183
183
|
|
|
184
184
|
bidResponses.push(bidResponse);
|
|
185
185
|
|
|
186
|
-
this.getUrlPixelMetric(
|
|
186
|
+
this.getUrlPixelMetric(EVENTS.BID_RESPONSE, bid);
|
|
187
187
|
});
|
|
188
188
|
});
|
|
189
189
|
|
|
@@ -263,7 +263,7 @@ export const spec = {
|
|
|
263
263
|
|
|
264
264
|
onTimeout(bids) {
|
|
265
265
|
for (const bid of bids) {
|
|
266
|
-
this.getUrlPixelMetric(
|
|
266
|
+
this.getUrlPixelMetric(EVENTS.BID_TIMEOUT, bid);
|
|
267
267
|
};
|
|
268
268
|
},
|
|
269
269
|
};
|
|
@@ -2,7 +2,7 @@ import {deepClone, logError, getParameterByName} from '../src/utils.js';
|
|
|
2
2
|
import {ajax} from '../src/ajax.js';
|
|
3
3
|
import {getStorageManager} from '../src/storageManager.js';
|
|
4
4
|
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
5
|
-
import
|
|
5
|
+
import { EVENTS } from '../src/constants.js';
|
|
6
6
|
import adapterManager from '../src/adapterManager.js';
|
|
7
7
|
import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
|
|
8
8
|
|
|
@@ -17,16 +17,14 @@ const url = 'localhost:8383/event';
|
|
|
17
17
|
const GVLID = 816;
|
|
18
18
|
const storage = getStorageManager({gvlid: GVLID, moduleName: MODULE_NAME, moduleType: MODULE_TYPE_ANALYTICS});
|
|
19
19
|
const {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
} = CONSTANTS;
|
|
20
|
+
AUCTION_INIT,
|
|
21
|
+
BID_REQUESTED,
|
|
22
|
+
BID_TIMEOUT,
|
|
23
|
+
BID_RESPONSE,
|
|
24
|
+
BID_WON,
|
|
25
|
+
AUCTION_END,
|
|
26
|
+
AD_RENDER_SUCCEEDED
|
|
27
|
+
} = EVENTS;
|
|
30
28
|
function log (msg) {
|
|
31
29
|
// eslint-disable-next-line no-console
|
|
32
30
|
console.log(`%cNoBid Analytics ${VERSION}`, 'padding: 2px 8px 2px 8px; background-color:#f50057; color: white', msg);
|
|
@@ -2,7 +2,7 @@ import { _each, deepClone, pick, deepSetValue, logError, logInfo } from '../src/
|
|
|
2
2
|
import { getOrigin } from '../libraries/getOrigin/index.js';
|
|
3
3
|
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js'
|
|
4
4
|
import adapterManager from '../src/adapterManager.js'
|
|
5
|
-
import
|
|
5
|
+
import { EVENTS } from '../src/constants.js'
|
|
6
6
|
import { ajax } from '../src/ajax.js'
|
|
7
7
|
import { config } from '../src/config.js'
|
|
8
8
|
|
|
@@ -33,7 +33,7 @@ const {
|
|
|
33
33
|
BID_WON,
|
|
34
34
|
BID_TIMEOUT,
|
|
35
35
|
AD_RENDER_FAILED
|
|
36
|
-
} =
|
|
36
|
+
} = EVENTS
|
|
37
37
|
|
|
38
38
|
const SERVER_EVENTS = {
|
|
39
39
|
AUCTION: 'auction',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
2
2
|
import adapterManager from '../src/adapterManager.js';
|
|
3
|
-
import
|
|
3
|
+
import { EVENTS } from '../src/constants.js';
|
|
4
4
|
import { ajax } from '../src/ajax.js';
|
|
5
5
|
import { getRefererInfo } from '../src/refererDetection.js';
|
|
6
6
|
|
|
@@ -8,14 +8,12 @@ const analyticsType = 'endpoint';
|
|
|
8
8
|
const url = 'URL_TO_SERVER_ENDPOINT';
|
|
9
9
|
|
|
10
10
|
const {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
} = CONSTANTS;
|
|
11
|
+
AUCTION_END,
|
|
12
|
+
BID_WON,
|
|
13
|
+
BID_RESPONSE,
|
|
14
|
+
BID_REQUESTED,
|
|
15
|
+
BID_TIMEOUT,
|
|
16
|
+
} = EVENTS;
|
|
19
17
|
|
|
20
18
|
let saveEvents = {}
|
|
21
19
|
let allEvents = {}
|
package/modules/paapi.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import {config} from '../src/config.js';
|
|
5
5
|
import {getHook, module} from '../src/hook.js';
|
|
6
|
-
import {deepSetValue, logInfo, logWarn, mergeDeep} from '../src/utils.js';
|
|
6
|
+
import {deepSetValue, logInfo, logWarn, mergeDeep, parseSizesInput} from '../src/utils.js';
|
|
7
7
|
import {IMP, PBS, registerOrtbProcessor, RESPONSE} from '../src/pbjsORTB.js';
|
|
8
8
|
import * as events from '../src/events.js';
|
|
9
|
-
import
|
|
9
|
+
import {EVENTS} from '../src/constants.js';
|
|
10
10
|
import {currencyCompare} from '../libraries/currencyUtils/currency.js';
|
|
11
11
|
import {maximum, minimum} from '../src/utils/reducers.js';
|
|
12
12
|
import {auctionManager} from '../src/auctionManager.js';
|
|
@@ -67,7 +67,7 @@ export function init(cfg, configNamespace) {
|
|
|
67
67
|
|
|
68
68
|
getHook('addComponentAuction').before(addComponentAuctionHook);
|
|
69
69
|
getHook('makeBidRequests').after(markForFledge);
|
|
70
|
-
events.on(
|
|
70
|
+
events.on(EVENTS.AUCTION_END, onAuctionEnd);
|
|
71
71
|
|
|
72
72
|
function getSlotSignals(bidsReceived = [], bidRequests = []) {
|
|
73
73
|
let bidfloor, bidfloorcur;
|
|
@@ -89,19 +89,33 @@ function getSlotSignals(bidsReceived = [], bidRequests = []) {
|
|
|
89
89
|
return cfg;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
function onAuctionEnd({auctionId, bidsReceived, bidderRequests, adUnitCodes}) {
|
|
92
|
+
function onAuctionEnd({auctionId, bidsReceived, bidderRequests, adUnitCodes, adUnits}) {
|
|
93
|
+
const adUnitsByCode = Object.fromEntries(adUnits?.map(au => [au.code, au]) || [])
|
|
93
94
|
const allReqs = bidderRequests?.flatMap(br => br.bids);
|
|
94
95
|
const paapiConfigs = {};
|
|
95
96
|
(adUnitCodes || []).forEach(au => {
|
|
96
97
|
paapiConfigs[au] = null;
|
|
97
98
|
!latestAuctionForAdUnit.hasOwnProperty(au) && (latestAuctionForAdUnit[au] = null);
|
|
98
|
-
})
|
|
99
|
+
});
|
|
99
100
|
Object.entries(pendingForAuction(auctionId) || {}).forEach(([adUnitCode, auctionConfigs]) => {
|
|
100
101
|
const forThisAdUnit = (bid) => bid.adUnitCode === adUnitCode;
|
|
101
102
|
const slotSignals = getSlotSignals(bidsReceived?.filter(forThisAdUnit), allReqs?.filter(forThisAdUnit));
|
|
102
103
|
paapiConfigs[adUnitCode] = {
|
|
104
|
+
...slotSignals,
|
|
103
105
|
componentAuctions: auctionConfigs.map(cfg => mergeDeep({}, slotSignals, cfg))
|
|
104
106
|
};
|
|
107
|
+
// TODO: need to flesh out size treatment:
|
|
108
|
+
// - which size should the paapi auction pick? (this uses the first one defined)
|
|
109
|
+
// - should we signal it to SSPs, and how?
|
|
110
|
+
// - what should we do if adapters pick a different one?
|
|
111
|
+
// - what does size mean for video and native?
|
|
112
|
+
const size = parseSizesInput(adUnitsByCode[adUnitCode]?.mediaTypes?.banner?.sizes)?.[0]?.split('x');
|
|
113
|
+
if (size) {
|
|
114
|
+
paapiConfigs[adUnitCode].requestedSize = {
|
|
115
|
+
width: size[0],
|
|
116
|
+
height: size[1],
|
|
117
|
+
};
|
|
118
|
+
}
|
|
105
119
|
latestAuctionForAdUnit[adUnitCode] = auctionId;
|
|
106
120
|
});
|
|
107
121
|
configsForAuction(auctionId, paapiConfigs);
|
|
@@ -159,7 +173,7 @@ export function getPAAPIConfig({auctionId, adUnitCode} = {}, includeBlanks = fal
|
|
|
159
173
|
output[au] = null;
|
|
160
174
|
}
|
|
161
175
|
}
|
|
162
|
-
})
|
|
176
|
+
});
|
|
163
177
|
return output;
|
|
164
178
|
}
|
|
165
179
|
|
|
@@ -104,6 +104,7 @@ export function setBidderRtb (bidderOrtb2, moduleConfig, segmentData) {
|
|
|
104
104
|
|
|
105
105
|
const ssps = segmentData?.ssp?.ssps ?? []
|
|
106
106
|
const sspCohorts = segmentData?.ssp?.cohorts ?? []
|
|
107
|
+
const topics = segmentData?.topics ?? {}
|
|
107
108
|
|
|
108
109
|
const bidders = new Set([...acBidders, ...ssps])
|
|
109
110
|
bidders.forEach(function (bidder) {
|
|
@@ -121,7 +122,7 @@ export function setBidderRtb (bidderOrtb2, moduleConfig, segmentData) {
|
|
|
121
122
|
cohorts = [...new Set([...cohorts, ...sspCohorts])].slice(0, maxSegs)
|
|
122
123
|
}
|
|
123
124
|
|
|
124
|
-
const nextConfig = updateOrtbConfig(bidder, currConfig, cohorts, sspCohorts, transformationConfigs, segmentData)
|
|
125
|
+
const nextConfig = updateOrtbConfig(bidder, currConfig, cohorts, sspCohorts, topics, transformationConfigs, segmentData)
|
|
125
126
|
bidderOrtb2[bidder] = nextConfig.ortb2
|
|
126
127
|
})
|
|
127
128
|
}
|
|
@@ -134,10 +135,11 @@ export function setBidderRtb (bidderOrtb2, moduleConfig, segmentData) {
|
|
|
134
135
|
* the transformations on user data to include the ORTB2 object
|
|
135
136
|
* @param {string[]} segmentIDs - Permutive segment IDs
|
|
136
137
|
* @param {string[]} sspSegmentIDs - Permutive SSP segment IDs
|
|
138
|
+
* @param {Object} topics - Privacy Sandbox Topics, keyed by IAB taxonomy version (600, 601, etc.)
|
|
137
139
|
* @param {Object} segmentData - The segments available for targeting
|
|
138
140
|
* @return {Object} Merged ortb2 object
|
|
139
141
|
*/
|
|
140
|
-
function updateOrtbConfig(bidder, currConfig, segmentIDs, sspSegmentIDs, transformationConfigs, segmentData) {
|
|
142
|
+
function updateOrtbConfig(bidder, currConfig, segmentIDs, sspSegmentIDs, topics, transformationConfigs, segmentData) {
|
|
141
143
|
logger.logInfo(`Current ortb2 config`, { bidder, config: currConfig })
|
|
142
144
|
|
|
143
145
|
const customCohortsData = deepAccess(segmentData, bidder) || []
|
|
@@ -161,9 +163,21 @@ function updateOrtbConfig(bidder, currConfig, segmentIDs, sspSegmentIDs, transfo
|
|
|
161
163
|
const ortbConfig = mergeDeep({}, currConfig)
|
|
162
164
|
const currentUserData = deepAccess(ortbConfig, 'ortb2.user.data') || []
|
|
163
165
|
|
|
166
|
+
let topicsUserData = []
|
|
167
|
+
for (const [k, value] of Object.entries(topics)) {
|
|
168
|
+
topicsUserData.push({
|
|
169
|
+
name,
|
|
170
|
+
ext: {
|
|
171
|
+
segtax: Number(k)
|
|
172
|
+
},
|
|
173
|
+
segment: value.map(topic => ({ id: topic.toString() })),
|
|
174
|
+
})
|
|
175
|
+
}
|
|
176
|
+
|
|
164
177
|
const updatedUserData = currentUserData
|
|
165
178
|
.filter(el => el.name !== permutiveUserData.name && el.name !== customCohortsUserData.name)
|
|
166
179
|
.concat(permutiveUserData, transformedUserData, customCohortsUserData)
|
|
180
|
+
.concat(topicsUserData)
|
|
167
181
|
|
|
168
182
|
logger.logInfo(`Updating ortb2.user.data`, { bidder, user_data: updatedUserData })
|
|
169
183
|
deepSetValue(ortbConfig, 'ortb2.user.data', updatedUserData)
|
|
@@ -311,6 +325,7 @@ export function getSegments (maxSegs) {
|
|
|
311
325
|
cohorts: [],
|
|
312
326
|
ssps: []
|
|
313
327
|
}),
|
|
328
|
+
topics: readSegments('_ppsts', {}),
|
|
314
329
|
}
|
|
315
330
|
|
|
316
331
|
for (const bidder in segments) {
|
|
@@ -318,6 +333,10 @@ export function getSegments (maxSegs) {
|
|
|
318
333
|
if (segments[bidder].cohorts && Array.isArray(segments[bidder].cohorts)) {
|
|
319
334
|
segments[bidder].cohorts = segments[bidder].cohorts.slice(0, maxSegs)
|
|
320
335
|
}
|
|
336
|
+
} else if (bidder === 'topics') {
|
|
337
|
+
for (const taxonomy in segments[bidder]) {
|
|
338
|
+
segments[bidder][taxonomy] = segments[bidder][taxonomy].slice(0, maxSegs)
|
|
339
|
+
}
|
|
321
340
|
} else {
|
|
322
341
|
segments[bidder] = segments[bidder].slice(0, maxSegs)
|
|
323
342
|
}
|
|
@@ -171,11 +171,27 @@ export const spec = {
|
|
|
171
171
|
page,
|
|
172
172
|
placements,
|
|
173
173
|
coppa: config.getConfig('coppa') === true ? 1 : 0,
|
|
174
|
-
ccpa: bidderRequest.uspConsent || undefined,
|
|
175
|
-
gdpr: bidderRequest.gdprConsent || undefined,
|
|
176
174
|
tmax: bidderRequest.timeout
|
|
177
175
|
};
|
|
178
176
|
|
|
177
|
+
if (bidderRequest.uspConsent) {
|
|
178
|
+
request.ccpa = bidderRequest.uspConsent;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
if (bidderRequest.gdprConsent) {
|
|
182
|
+
request.gdpr = {
|
|
183
|
+
consentString: bidderRequest.gdprConsent.consentString
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (bidderRequest.gppConsent) {
|
|
188
|
+
request.gpp = bidderRequest.gppConsent.gppString;
|
|
189
|
+
request.gpp_sid = bidderRequest.gppConsent.applicableSections;
|
|
190
|
+
} else if (bidderRequest.ortb2?.regs?.gpp) {
|
|
191
|
+
request.gpp = bidderRequest.ortb2.regs.gpp;
|
|
192
|
+
request.gpp_sid = bidderRequest.ortb2.regs.gpp_sid;
|
|
193
|
+
}
|
|
194
|
+
|
|
179
195
|
const len = validBidRequests.length;
|
|
180
196
|
for (let i = 0; i < len; i++) {
|
|
181
197
|
const bid = validBidRequests[i];
|
|
@@ -203,9 +219,10 @@ export const spec = {
|
|
|
203
219
|
return response;
|
|
204
220
|
},
|
|
205
221
|
|
|
206
|
-
getUserSyncs: (syncOptions, serverResponses, gdprConsent, uspConsent) => {
|
|
222
|
+
getUserSyncs: (syncOptions, serverResponses, gdprConsent, uspConsent, gppConsent) => {
|
|
207
223
|
let syncType = syncOptions.iframeEnabled ? 'iframe' : 'image';
|
|
208
224
|
let syncUrl = SYNC_URL + `/${syncType}?pbjs=1`;
|
|
225
|
+
|
|
209
226
|
if (gdprConsent && gdprConsent.consentString) {
|
|
210
227
|
if (typeof gdprConsent.gdprApplies === 'boolean') {
|
|
211
228
|
syncUrl += `&gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`;
|
|
@@ -213,10 +230,16 @@ export const spec = {
|
|
|
213
230
|
syncUrl += `&gdpr=0&gdpr_consent=${gdprConsent.consentString}`;
|
|
214
231
|
}
|
|
215
232
|
}
|
|
233
|
+
|
|
216
234
|
if (uspConsent && uspConsent.consentString) {
|
|
217
235
|
syncUrl += `&ccpa_consent=${uspConsent.consentString}`;
|
|
218
236
|
}
|
|
219
237
|
|
|
238
|
+
if (gppConsent?.gppString && gppConsent?.applicableSections?.length) {
|
|
239
|
+
syncUrl += '&gpp=' + gppConsent.gppString;
|
|
240
|
+
syncUrl += '&gpp_sid=' + gppConsent.applicableSections.join(',');
|
|
241
|
+
}
|
|
242
|
+
|
|
220
243
|
const coppa = config.getConfig('coppa') ? 1 : 0;
|
|
221
244
|
syncUrl += `&coppa=${coppa}`;
|
|
222
245
|
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module adds pirId to the User ID module
|
|
3
|
+
* The {@link module:modules/userId} module is required
|
|
4
|
+
* @module modules/pirId
|
|
5
|
+
* @requires module:modules/userId
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { MODULE_TYPE_UID } from '../src/activities/modules.js';
|
|
9
|
+
import { getStorageManager } from '../src/storageManager.js';
|
|
10
|
+
import { submodule } from '../src/hook.js';
|
|
11
|
+
import {domainOverrideToRootDomain} from '../libraries/domainOverrideToRootDomain/index.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @typedef {import('../modules/userId/index.js').Submodule} Submodule
|
|
15
|
+
* @typedef {import('../modules/userId/index.js').IdResponse} IdResponse
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
const MODULE_NAME = 'pirId';
|
|
19
|
+
const ID_TOKEN = 'WPxid';
|
|
20
|
+
export const storage = getStorageManager({ moduleName: MODULE_NAME, moduleType: MODULE_TYPE_UID });
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Reads the ID token from local storage or cookies.
|
|
24
|
+
* @returns {string|undefined} The ID token, or undefined if not found.
|
|
25
|
+
*/
|
|
26
|
+
export const readId = () => storage.getDataFromLocalStorage(ID_TOKEN) || storage.getCookie(ID_TOKEN);
|
|
27
|
+
|
|
28
|
+
/** @type {Submodule} */
|
|
29
|
+
export const pirIdSubmodule = {
|
|
30
|
+
name: MODULE_NAME,
|
|
31
|
+
gvlid: 676,
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* decode the stored id value for passing to bid requests
|
|
35
|
+
* @function decode
|
|
36
|
+
* @param {string} value
|
|
37
|
+
* @returns {(Object|undefined)}
|
|
38
|
+
*/
|
|
39
|
+
decode(value) {
|
|
40
|
+
return typeof value === 'string' ? { 'pirId': value } : undefined;
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* performs action to obtain id and return a value
|
|
45
|
+
* @function
|
|
46
|
+
* @returns {(IdResponse|undefined)}
|
|
47
|
+
*/
|
|
48
|
+
getId() {
|
|
49
|
+
const pirIdToken = readId();
|
|
50
|
+
|
|
51
|
+
return pirIdToken ? { id: pirIdToken } : undefined;
|
|
52
|
+
},
|
|
53
|
+
domainOverride: domainOverrideToRootDomain(storage, MODULE_NAME),
|
|
54
|
+
eids: {
|
|
55
|
+
'pirId': {
|
|
56
|
+
source: 'pir.wp.pl',
|
|
57
|
+
atype: 1
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
submodule('userId', pirIdSubmodule);
|