prebid.js 8.43.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/discoveryBidAdapter.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/jwplayerRtdProvider.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/limelightDigitalBidAdapter.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/loyalBidAdapter.js +1 -0
- 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 +242 -239
- 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/sirdataRtdProvider.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/integrationExamples/{gpt → realTimeData}/jwplayerRtdProvider_example.html +28 -42
- 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 +49 -46
- package/modules/adkernelAdnAnalyticsAdapter.js +8 -8
- package/modules/adkernelBidAdapter.js +23 -102
- package/modules/adlooxAdServerVideo.js +2 -2
- package/modules/adlooxAnalyticsAdapter.js +4 -4
- package/modules/adnuntiusBidAdapter.js +50 -32
- 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 +6 -7
- package/modules/appierAnalyticsAdapter.js +5 -7
- package/modules/appnexusBidAdapter.js +1 -0
- 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 +53 -10
- 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/discoveryBidAdapter.js +21 -0
- 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/gridBidAdapter.js +2 -2
- package/modules/growthCodeAnalyticsAdapter.js +14 -14
- package/modules/gumgumBidAdapter.js +4 -1
- 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/jwplayerRtdProvider.js +93 -26
- package/modules/jwplayerRtdProvider.md +23 -2
- package/modules/kargoAnalyticsAdapter.js +3 -3
- package/modules/kargoBidAdapter.js +26 -31
- package/modules/konduitAnalyticsAdapter.js +13 -13
- package/modules/lassoBidAdapter.js +11 -2
- package/modules/limelightDigitalBidAdapter.js +2 -1
- package/modules/liveIntentAnalyticsAdapter.js +2 -2
- package/modules/livewrappedAnalyticsAdapter.js +10 -10
- package/modules/loyalBidAdapter.js +190 -0
- package/modules/loyalBidAdapter.md +79 -0
- 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/sirdataRtdProvider.js +2 -0
- package/modules/smaatoBidAdapter.js +1 -2
- package/modules/sonobiAnalyticsAdapter.js +10 -12
- package/modules/sonobiBidAdapter.js +2 -5
- package/modules/sovrnAnalyticsAdapter.js +7 -9
- package/modules/sovrnBidAdapter.js +1 -1
- package/modules/staqAnalyticsAdapter.js +9 -9
- package/modules/teadsBidAdapter.js +2 -0
- 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 +79 -55
- package/test/spec/modules/adkernelAdnAnalytics_spec.js +6 -6
- package/test/spec/modules/adkernelBidAdapter_spec.js +63 -24
- package/test/spec/modules/adlooxAnalyticsAdapter_spec.js +6 -6
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +10 -7
- 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 +18 -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 +112 -6
- package/test/spec/modules/currency_spec.js +6 -6
- package/test/spec/modules/dailymotionBidAdapter_spec.js +369 -0
- package/test/spec/modules/discoveryBidAdapter_spec.js +35 -1
- 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/gridBidAdapter_spec.js +3 -1
- package/test/spec/modules/growthCodeAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/gumgumBidAdapter_spec.js +23 -0
- 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/jwplayerRtdProvider_spec.js +672 -29
- package/test/spec/modules/kargoAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/kargoBidAdapter_spec.js +36 -0
- package/test/spec/modules/konduitAnalyticsAdapter_spec.js +13 -13
- package/test/spec/modules/lassoBidAdapter_spec.js +1 -0
- package/test/spec/modules/lemmaDigitalBidAdapter_spec.js +1 -1
- package/test/spec/modules/limelightDigitalBidAdapter_spec.js +16 -1
- package/test/spec/modules/liveIntentAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +15 -20
- package/test/spec/modules/loyalBidAdapter_spec .js +375 -0
- 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/sonobiBidAdapter_spec.js +4 -6
- 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/teadsBidAdapter_spec.js +35 -0
- 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
|
@@ -23,7 +23,7 @@ import {getStorageManager} from '../src/storageManager.js';
|
|
|
23
23
|
import {find, includes} from '../src/polyfill.js';
|
|
24
24
|
import {getGlobal} from '../src/prebidGlobal.js';
|
|
25
25
|
import * as events from '../src/events.js';
|
|
26
|
-
import
|
|
26
|
+
import {EVENTS} from '../src/constants.js';
|
|
27
27
|
import {MODULE_TYPE_RTD} from '../src/activities/modules.js';
|
|
28
28
|
|
|
29
29
|
/**
|
|
@@ -67,7 +67,7 @@ export function addBrowsiTag(data) {
|
|
|
67
67
|
export function sendPageviewEvent(eventType) {
|
|
68
68
|
if (eventType === 'PAGEVIEW') {
|
|
69
69
|
window.addEventListener('browsi_pageview', () => {
|
|
70
|
-
events.emit(
|
|
70
|
+
events.emit(EVENTS.BILLABLE_EVENT, {
|
|
71
71
|
vendor: 'browsi',
|
|
72
72
|
type: 'pageview',
|
|
73
73
|
billingId: generateUUID()
|
|
@@ -363,7 +363,7 @@ function getTargetingData(uc, c, us, a) {
|
|
|
363
363
|
}
|
|
364
364
|
if (sendAdRequestEvent) {
|
|
365
365
|
const transactionId = a.adUnits.find(adUnit => adUnit.code === auc).transactionId;
|
|
366
|
-
events.emit(
|
|
366
|
+
events.emit(EVENTS.BILLABLE_EVENT, {
|
|
367
367
|
vendor: 'browsi',
|
|
368
368
|
type: 'adRequest',
|
|
369
369
|
billingId: generateUUID(),
|
|
@@ -3,7 +3,7 @@ import Base64 from 'crypto-js/enc-base64';
|
|
|
3
3
|
import hmacSHA512 from 'crypto-js/hmac-sha512';
|
|
4
4
|
import enc from 'crypto-js/enc-utf8';
|
|
5
5
|
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
6
|
-
import
|
|
6
|
+
import { EVENTS, BID_STATUS } from '../src/constants.js';
|
|
7
7
|
import adapterManager from '../src/adapterManager.js';
|
|
8
8
|
import {getStorageManager} from '../src/storageManager.js';
|
|
9
9
|
import { auctionManager } from '../src/auctionManager.js';
|
|
@@ -12,7 +12,7 @@ import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
|
|
|
12
12
|
|
|
13
13
|
const versionCode = '4.4.1'
|
|
14
14
|
const secretKey = 'bydata@123456'
|
|
15
|
-
const {
|
|
15
|
+
const { NO_BID, BID_TIMEOUT, AUCTION_END, AUCTION_INIT, BID_WON } = EVENTS
|
|
16
16
|
const DEFAULT_EVENT_URL = 'https://pbjs-stream.bydata.com/topics/prebid'
|
|
17
17
|
const analyticsType = 'endpoint'
|
|
18
18
|
const isBydata = isKeyInUrl('bydata_debug')
|
|
@@ -342,7 +342,7 @@ ascAdapter.dataProcess = function (t) {
|
|
|
342
342
|
})
|
|
343
343
|
});
|
|
344
344
|
|
|
345
|
-
var prebidWinningBids = auctionManager.getBidsReceived().filter(bid => bid.status ===
|
|
345
|
+
var prebidWinningBids = auctionManager.getBidsReceived().filter(bid => bid.status === BID_STATUS.BID_TARGETING_SET);
|
|
346
346
|
prebidWinningBids && prebidWinningBids.length > 0 && prebidWinningBids.forEach(pbbid => {
|
|
347
347
|
payload['auctionData'] && payload['auctionData'].forEach(rwData => {
|
|
348
348
|
if (rwData['bid'] === pbbid.requestId && rwData['brs'] === pbbid.size) {
|
|
@@ -10,7 +10,7 @@ import { submodule } from '../src/hook.js';
|
|
|
10
10
|
import { loadExternalScript } from '../src/adloader.js';
|
|
11
11
|
import { logError, generateUUID, insertElement } from '../src/utils.js';
|
|
12
12
|
import * as events from '../src/events.js';
|
|
13
|
-
import
|
|
13
|
+
import { EVENTS } from '../src/constants.js';
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* @typedef {import('../modules/rtdModule/index.js').RtdSubmodule} RtdSubmodule
|
|
@@ -158,8 +158,8 @@ function readConfig(config) {
|
|
|
158
158
|
let startBillableEvents = function() {
|
|
159
159
|
// Upon clean.io submodule initialization, every winner bid is considered to be protected
|
|
160
160
|
// and therefore, subjected to billing
|
|
161
|
-
events.on(
|
|
162
|
-
events.emit(
|
|
161
|
+
events.on(EVENTS.BID_WON, winnerBidResponse => {
|
|
162
|
+
events.emit(EVENTS.BILLABLE_EVENT, {
|
|
163
163
|
vendor: 'clean.io',
|
|
164
164
|
billingId: generateUUID(),
|
|
165
165
|
type: 'impression',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { logMessage } from '../src/utils.js';
|
|
2
2
|
import {ajax} from '../src/ajax.js';
|
|
3
3
|
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
4
|
-
import
|
|
4
|
+
import { EVENTS } from '../src/constants.js';
|
|
5
5
|
import adapterManager from '../src/adapterManager.js';
|
|
6
6
|
|
|
7
7
|
const analyticsType = 'endpoint';
|
|
@@ -13,12 +13,10 @@ const pageIncludedInSample = sampleAnalytics();
|
|
|
13
13
|
const url = 'https://bids.concert.io/analytics';
|
|
14
14
|
|
|
15
15
|
const {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
} = CONSTANTS;
|
|
16
|
+
BID_RESPONSE,
|
|
17
|
+
BID_WON,
|
|
18
|
+
AUCTION_END
|
|
19
|
+
} = EVENTS;
|
|
22
20
|
|
|
23
21
|
let queue = [];
|
|
24
22
|
|
|
@@ -12,7 +12,7 @@ import { submodule } from '../src/hook.js';
|
|
|
12
12
|
import { logError, generateUUID } from '../src/utils.js';
|
|
13
13
|
import { loadExternalScript } from '../src/adloader.js';
|
|
14
14
|
import * as events from '../src/events.js';
|
|
15
|
-
import
|
|
15
|
+
import { EVENTS } from '../src/constants.js';
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Injects the Confiant Inc. configuration script into the page, based on proprtyId provided
|
|
@@ -89,7 +89,7 @@ function setUpMutationObserver() {
|
|
|
89
89
|
function getEventHandlerFunction(propertyId) {
|
|
90
90
|
return function reportBillableEvent(e) {
|
|
91
91
|
if (e.data.type.indexOf('cnft:reportBillableEvent:' + propertyId) > -1) {
|
|
92
|
-
events.emit(
|
|
92
|
+
events.emit(EVENTS.BILLABLE_EVENT, {
|
|
93
93
|
auctionId: e.data.auctionId,
|
|
94
94
|
billingId: generateUUID(),
|
|
95
95
|
transactionId: e.data.transactionId,
|
|
@@ -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 {getGlobal} from '../src/prebidGlobal.js';
|
|
5
5
|
import adapterManager from '../src/adapterManager.js';
|
|
6
6
|
import {logInfo, logWarn, logError, logMessage, deepAccess, isInteger} from '../src/utils.js';
|
|
@@ -8,9 +8,7 @@ import {getRefererInfo} from '../src/refererDetection.js';
|
|
|
8
8
|
|
|
9
9
|
// Maintainer: mediapsr@epsilon.com
|
|
10
10
|
|
|
11
|
-
const {
|
|
12
|
-
EVENTS: { AUCTION_END, AD_RENDER_FAILED, BID_TIMEOUT, BID_WON, BIDDER_ERROR }
|
|
13
|
-
} = CONSTANTS;
|
|
11
|
+
const { AUCTION_END, AD_RENDER_FAILED, BID_TIMEOUT, BID_WON, BIDDER_ERROR } = EVENTS;
|
|
14
12
|
// STALE_RENDER, TCF2_ENFORCEMENT would need to add extra calls for these as they likely occur after AUCTION_END?
|
|
15
13
|
const GVLID = 24;
|
|
16
14
|
const ANALYTICS_TYPE = 'endpoint';
|
|
@@ -55,16 +55,18 @@ export const spec = {
|
|
|
55
55
|
gvlid: GVLID,
|
|
56
56
|
supportedMediaTypes: [BANNER, VIDEO, NATIVE],
|
|
57
57
|
|
|
58
|
-
getUserSyncs: function (syncOptions, _, gdprConsent, uspConsent) {
|
|
59
|
-
|
|
60
|
-
if (canFastBid(fastBidVersion)) {
|
|
61
|
-
return [];
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const refererInfo = getRefererInfo();
|
|
65
|
-
const origin = 'criteoPrebidAdapter';
|
|
58
|
+
getUserSyncs: function (syncOptions, _, gdprConsent, uspConsent, gppConsent = {}) {
|
|
59
|
+
let { gppString = '', applicableSections = [] } = gppConsent;
|
|
66
60
|
|
|
67
61
|
if (syncOptions.iframeEnabled && hasPurpose1Consent(gdprConsent)) {
|
|
62
|
+
const fastBidVersion = config.getConfig('criteo.fastBidVersion');
|
|
63
|
+
if (canFastBid(fastBidVersion)) {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const refererInfo = getRefererInfo();
|
|
68
|
+
const origin = 'criteoPrebidAdapter';
|
|
69
|
+
|
|
68
70
|
const queryParams = [];
|
|
69
71
|
queryParams.push(`origin=${origin}`);
|
|
70
72
|
queryParams.push(`topUrl=${refererInfo.domain}`);
|
|
@@ -79,6 +81,12 @@ export const spec = {
|
|
|
79
81
|
if (uspConsent) {
|
|
80
82
|
queryParams.push(`us_privacy=${uspConsent}`);
|
|
81
83
|
}
|
|
84
|
+
queryParams.push(`gpp=${gppString}`);
|
|
85
|
+
if (Array.isArray(applicableSections)) {
|
|
86
|
+
for (const applicableSection of applicableSections) {
|
|
87
|
+
queryParams.push(`gpp_sid=${applicableSection}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
82
90
|
|
|
83
91
|
const requestId = Math.random().toString();
|
|
84
92
|
|
|
@@ -126,6 +134,32 @@ export const spec = {
|
|
|
126
134
|
type: 'iframe',
|
|
127
135
|
url: `https://gum.criteo.com/syncframe?${queryParams.join('&')}#${jsonHashSerialized}`
|
|
128
136
|
}];
|
|
137
|
+
} else if (syncOptions.pixelEnabled && hasPurpose1Consent(gdprConsent)) {
|
|
138
|
+
const queryParams = [];
|
|
139
|
+
queryParams.push(`profile=207`);
|
|
140
|
+
if (gdprConsent) {
|
|
141
|
+
if (gdprConsent.gdprApplies === true) {
|
|
142
|
+
queryParams.push(`gdprapplies=true`);
|
|
143
|
+
}
|
|
144
|
+
if (gdprConsent.consentString) {
|
|
145
|
+
queryParams.push(`gdpr=${gdprConsent.consentString}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (uspConsent) {
|
|
149
|
+
queryParams.push(`ccpa=${uspConsent}`);
|
|
150
|
+
}
|
|
151
|
+
queryParams.push(`gpp=${gppString}`);
|
|
152
|
+
if (Array.isArray(applicableSections)) {
|
|
153
|
+
for (const applicableSection of applicableSections) {
|
|
154
|
+
queryParams.push(`gpp_sid=${applicableSection}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// gpp
|
|
158
|
+
// gpp_sid
|
|
159
|
+
return [{
|
|
160
|
+
type: 'image',
|
|
161
|
+
url: `https://ssp-sync.criteo.com/user-sync/redirect?${queryParams.join('&')}`
|
|
162
|
+
}];
|
|
129
163
|
}
|
|
130
164
|
return [];
|
|
131
165
|
},
|
|
@@ -255,8 +289,8 @@ export const spec = {
|
|
|
255
289
|
if (slot.ext?.meta?.networkName) {
|
|
256
290
|
bid.meta = Object.assign({}, bid.meta, { networkName: slot.ext.meta.networkName })
|
|
257
291
|
}
|
|
258
|
-
if (slot.ext?.dsa
|
|
259
|
-
bid.meta = Object.assign({}, bid.meta, {
|
|
292
|
+
if (slot.ext?.dsa) {
|
|
293
|
+
bid.meta = Object.assign({}, bid.meta, { dsa: slot.ext.dsa })
|
|
260
294
|
}
|
|
261
295
|
if (slot.native) {
|
|
262
296
|
if (bidRequest.params.nativeCallback) {
|
|
@@ -473,6 +507,7 @@ function checkNativeSendId(bidRequest) {
|
|
|
473
507
|
*/
|
|
474
508
|
function buildCdbRequest(context, bidRequests, bidderRequest) {
|
|
475
509
|
let networkId;
|
|
510
|
+
let pubid;
|
|
476
511
|
let schain;
|
|
477
512
|
let userIdAsEids;
|
|
478
513
|
let regs = Object.assign({}, {
|
|
@@ -490,6 +525,7 @@ function buildCdbRequest(context, bidRequests, bidderRequest) {
|
|
|
490
525
|
userIdAsEids = bidRequest.userIdAsEids;
|
|
491
526
|
}
|
|
492
527
|
networkId = bidRequest.params.networkId || networkId;
|
|
528
|
+
pubid = bidRequest.params.pubid || pubid;
|
|
493
529
|
schain = bidRequest.schain || schain;
|
|
494
530
|
const slot = {
|
|
495
531
|
slotid: bidRequest.bidId,
|
|
@@ -513,6 +549,10 @@ function buildCdbRequest(context, bidRequests, bidderRequest) {
|
|
|
513
549
|
if (bidRequest.nativeOrtbRequest?.assets) {
|
|
514
550
|
slot.ext = Object.assign({}, slot.ext, { assets: bidRequest.nativeOrtbRequest.assets });
|
|
515
551
|
}
|
|
552
|
+
if (bidRequest.params.uid) {
|
|
553
|
+
slot.ext = Object.assign({}, slot.ext, { bidder: { uid: bidRequest.params.uid } });
|
|
554
|
+
}
|
|
555
|
+
|
|
516
556
|
if (bidRequest.params.publisherSubId) {
|
|
517
557
|
slot.publishersubid = bidRequest.params.publisherSubId;
|
|
518
558
|
}
|
|
@@ -581,6 +621,9 @@ function buildCdbRequest(context, bidRequests, bidderRequest) {
|
|
|
581
621
|
if (networkId) {
|
|
582
622
|
request.publisher.networkid = networkId;
|
|
583
623
|
}
|
|
624
|
+
if (pubid) {
|
|
625
|
+
request.publisher.id = pubid;
|
|
626
|
+
}
|
|
584
627
|
|
|
585
628
|
request.source = {
|
|
586
629
|
tid: bidderRequest.ortb2?.source?.tid
|
package/modules/currency.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {logError, logInfo, logMessage, logWarn} from '../src/utils.js';
|
|
2
2
|
import {getGlobal} from '../src/prebidGlobal.js';
|
|
3
|
-
import
|
|
3
|
+
import { EVENTS, REJECTION_REASON } from '../src/constants.js';
|
|
4
4
|
import {ajax} from '../src/ajax.js';
|
|
5
5
|
import {config} from '../src/config.js';
|
|
6
6
|
import {getHook} from '../src/hook.js';
|
|
@@ -163,8 +163,8 @@ function initCurrency() {
|
|
|
163
163
|
getGlobal().convertCurrency = (cpm, fromCurrency, toCurrency) => parseFloat(cpm) * getCurrencyConversion(fromCurrency, toCurrency);
|
|
164
164
|
getHook('addBidResponse').before(addBidResponseHook, 100);
|
|
165
165
|
getHook('responsesReady').before(responsesReadyHook);
|
|
166
|
-
onEvent(
|
|
167
|
-
onEvent(
|
|
166
|
+
onEvent(EVENTS.AUCTION_TIMEOUT, rejectOnAuctionTimeout);
|
|
167
|
+
onEvent(EVENTS.AUCTION_INIT, loadRates);
|
|
168
168
|
loadRates();
|
|
169
169
|
}
|
|
170
170
|
|
|
@@ -173,8 +173,8 @@ function resetCurrency() {
|
|
|
173
173
|
|
|
174
174
|
getHook('addBidResponse').getHooks({hook: addBidResponseHook}).remove();
|
|
175
175
|
getHook('responsesReady').getHooks({hook: responsesReadyHook}).remove();
|
|
176
|
-
offEvent(
|
|
177
|
-
offEvent(
|
|
176
|
+
offEvent(EVENTS.AUCTION_TIMEOUT, rejectOnAuctionTimeout);
|
|
177
|
+
offEvent(EVENTS.AUCTION_INIT, loadRates);
|
|
178
178
|
delete getGlobal().convertCurrency;
|
|
179
179
|
|
|
180
180
|
adServerCurrency = 'USD';
|
|
@@ -230,7 +230,7 @@ export const addBidResponseHook = timedBidResponseHook('currency', function addB
|
|
|
230
230
|
function rejectOnAuctionTimeout({auctionId}) {
|
|
231
231
|
bidResponseQueue = bidResponseQueue.filter(([fn, ctx, adUnitCode, bid, reject]) => {
|
|
232
232
|
if (bid.auctionId === auctionId) {
|
|
233
|
-
reject(
|
|
233
|
+
reject(REJECTION_REASON.CANNOT_CONVERT_CURRENCY)
|
|
234
234
|
} else {
|
|
235
235
|
return true;
|
|
236
236
|
}
|
|
@@ -250,7 +250,7 @@ function processBidResponseQueue() {
|
|
|
250
250
|
}
|
|
251
251
|
} catch (e) {
|
|
252
252
|
logWarn('getCurrencyConversion threw error: ', e);
|
|
253
|
-
reject(
|
|
253
|
+
reject(REJECTION_REASON.CANNOT_CONVERT_CURRENCY);
|
|
254
254
|
continue;
|
|
255
255
|
}
|
|
256
256
|
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
|
+
import { VIDEO } from '../src/mediaTypes.js';
|
|
3
|
+
import { deepAccess } from '../src/utils.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Get video metadata from bid request
|
|
7
|
+
*
|
|
8
|
+
* @param {BidRequest} bidRequest A valid bid requests that should be sent to the Server.
|
|
9
|
+
* @return video metadata
|
|
10
|
+
*/
|
|
11
|
+
function getVideoMetadata(bidRequest, bidderRequest) {
|
|
12
|
+
const videoAdUnit = deepAccess(bidRequest, 'mediaTypes.video', {});
|
|
13
|
+
const videoBidderParams = deepAccess(bidRequest, 'params.video', {});
|
|
14
|
+
|
|
15
|
+
const videoParams = {
|
|
16
|
+
...videoAdUnit,
|
|
17
|
+
...videoBidderParams, // Bidder Specific overrides
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// Store as object keys to ensure uniqueness
|
|
21
|
+
const iabcat1 = {};
|
|
22
|
+
const iabcat2 = {};
|
|
23
|
+
|
|
24
|
+
deepAccess(bidderRequest, 'ortb2.site.content.data', []).forEach((data) => {
|
|
25
|
+
if ([4, 5, 6, 7].includes(data?.ext?.segtax)) {
|
|
26
|
+
(Array.isArray(data.segment) ? data.segment : []).forEach((segment) => {
|
|
27
|
+
if (typeof segment.id === 'string') {
|
|
28
|
+
// See https://docs.prebid.org/features/firstPartyData.html#segments-and-taxonomy
|
|
29
|
+
// Only take IAB cats of taxonomy V1
|
|
30
|
+
if (data.ext.segtax === 4) iabcat1[segment.id] = 1;
|
|
31
|
+
// Only take IAB cats of taxonomy V2 or higher
|
|
32
|
+
if ([5, 6, 7].includes(data.ext.segtax)) iabcat2[segment.id] = 1;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const videoMetadata = {
|
|
39
|
+
description: videoParams.description || '',
|
|
40
|
+
duration: videoParams.duration || 0,
|
|
41
|
+
iabcat1: Object.keys(iabcat1),
|
|
42
|
+
iabcat2: Array.isArray(videoParams.iabcat2)
|
|
43
|
+
? videoParams.iabcat2
|
|
44
|
+
: Object.keys(iabcat2),
|
|
45
|
+
id: videoParams.id || '',
|
|
46
|
+
lang: videoParams.lang || '',
|
|
47
|
+
private: videoParams.private || false,
|
|
48
|
+
tags: videoParams.tags || '',
|
|
49
|
+
title: videoParams.title || '',
|
|
50
|
+
topics: videoParams.topics || '',
|
|
51
|
+
xid: videoParams.xid || '',
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
return videoMetadata;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export const spec = {
|
|
58
|
+
code: 'dailymotion',
|
|
59
|
+
gvlid: 573,
|
|
60
|
+
supportedMediaTypes: [VIDEO],
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Determines whether or not the given bid request is valid.
|
|
64
|
+
* The only mandatory parameter for a bid to be valid is the API key.
|
|
65
|
+
* Other parameters are optional.
|
|
66
|
+
*
|
|
67
|
+
* @return boolean True if this is a valid bid, and false otherwise.
|
|
68
|
+
*/
|
|
69
|
+
isBidRequestValid: function (bid) {
|
|
70
|
+
return typeof bid?.params?.apiKey === 'string' && bid.params.apiKey.length > 10;
|
|
71
|
+
},
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Make a server request from the list of valid BidRequests (that already passed the isBidRequestValid call)
|
|
75
|
+
*
|
|
76
|
+
* @param {BidRequest[]} validBidRequests A non-empty list of valid bid requests that should be sent to the Server.
|
|
77
|
+
* @param {BidderRequest} bidderRequest
|
|
78
|
+
* @return ServerRequest Info describing the request to the server.
|
|
79
|
+
*/
|
|
80
|
+
buildRequests: (validBidRequests = [], bidderRequest) => validBidRequests.map(bid => ({
|
|
81
|
+
method: 'POST',
|
|
82
|
+
url: 'https://pb.dmxleo.com',
|
|
83
|
+
data: {
|
|
84
|
+
bidder_request: {
|
|
85
|
+
gdprConsent: {
|
|
86
|
+
apiVersion: bidderRequest?.gdprConsent?.apiVersion || 1,
|
|
87
|
+
consentString: bidderRequest?.gdprConsent?.consentString || '',
|
|
88
|
+
// Cast boolean in any case (eg: if value is int) to ensure type
|
|
89
|
+
gdprApplies: !!bidderRequest?.gdprConsent?.gdprApplies,
|
|
90
|
+
},
|
|
91
|
+
refererInfo: {
|
|
92
|
+
page: bidderRequest?.refererInfo?.page || '',
|
|
93
|
+
},
|
|
94
|
+
uspConsent: bidderRequest?.uspConsent || '',
|
|
95
|
+
gppConsent: {
|
|
96
|
+
gppString: deepAccess(bidderRequest, 'gppConsent.gppString') ||
|
|
97
|
+
deepAccess(bidderRequest, 'ortb2.regs.gpp', ''),
|
|
98
|
+
applicableSections: deepAccess(bidderRequest, 'gppConsent.applicableSections') ||
|
|
99
|
+
deepAccess(bidderRequest, 'ortb2.regs.gpp_sid', []),
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
config: {
|
|
103
|
+
api_key: bid.params.apiKey
|
|
104
|
+
},
|
|
105
|
+
// Cast boolean in any case (value should be 0 or 1) to ensure type
|
|
106
|
+
coppa: !!deepAccess(bidderRequest, 'ortb2.regs.coppa'),
|
|
107
|
+
request: {
|
|
108
|
+
adUnitCode: bid.adUnitCode || '',
|
|
109
|
+
auctionId: bid.auctionId || '',
|
|
110
|
+
bidId: bid.bidId || '',
|
|
111
|
+
mediaTypes: {
|
|
112
|
+
video: {
|
|
113
|
+
playerSize: bid.mediaTypes?.[VIDEO]?.playerSize || [],
|
|
114
|
+
api: bid.mediaTypes?.[VIDEO]?.api || [],
|
|
115
|
+
startDelay: bid.mediaTypes?.[VIDEO]?.startdelay || 0,
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
sizes: bid.sizes || [],
|
|
119
|
+
},
|
|
120
|
+
video_metadata: getVideoMetadata(bid, bidderRequest),
|
|
121
|
+
},
|
|
122
|
+
options: {
|
|
123
|
+
withCredentials: true,
|
|
124
|
+
crossOrigin: true,
|
|
125
|
+
},
|
|
126
|
+
})),
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Map the response from the server into a list of bids.
|
|
130
|
+
* As dailymotion prebid server returns an entry with the correct Prebid structure,
|
|
131
|
+
* we directly include it as the only bid in the response.
|
|
132
|
+
*
|
|
133
|
+
* @param {*} serverResponse A successful response from the server.
|
|
134
|
+
* @return {Bid[]} An array of bids which were nested inside the server.
|
|
135
|
+
*/
|
|
136
|
+
interpretResponse: serverResponse => serverResponse?.body ? [serverResponse.body] : [],
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
registerBidder(spec);
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
Module Name: Dailymotion Bid Adapter
|
|
5
|
+
Module Type: Bidder Adapter
|
|
6
|
+
Maintainer: ad-leo-engineering@dailymotion.com
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
# Description
|
|
10
|
+
|
|
11
|
+
Dailymotion prebid adapter.
|
|
12
|
+
|
|
13
|
+
# Configuration options
|
|
14
|
+
|
|
15
|
+
Before calling this adapter, you need to set at least the API key in the bid parameters:
|
|
16
|
+
|
|
17
|
+
```javascript
|
|
18
|
+
const adUnits = [
|
|
19
|
+
{
|
|
20
|
+
bids: [{
|
|
21
|
+
bidder: 'dailymotion',
|
|
22
|
+
params: {
|
|
23
|
+
apiKey: 'fake_api_key'
|
|
24
|
+
}
|
|
25
|
+
}]
|
|
26
|
+
}
|
|
27
|
+
];
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`apiKey` is your publisher API key. For testing purpose, you can use "dailymotion-testing".
|
|
31
|
+
|
|
32
|
+
# Test Parameters
|
|
33
|
+
|
|
34
|
+
By setting the following bid parameters, you'll get a constant response to any request, to validate your adapter integration:
|
|
35
|
+
|
|
36
|
+
```javascript
|
|
37
|
+
const adUnits = [
|
|
38
|
+
{
|
|
39
|
+
bids: [{
|
|
40
|
+
bidder: 'dailymotion',
|
|
41
|
+
params: {
|
|
42
|
+
apiKey: 'dailymotion-testing'
|
|
43
|
+
}
|
|
44
|
+
}]
|
|
45
|
+
}
|
|
46
|
+
];
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Please note that failing to set these will result in the adapter not bidding at all.
|
|
50
|
+
|
|
51
|
+
# Sample video AdUnit
|
|
52
|
+
|
|
53
|
+
To allow better targeting, you should provide as much context about the video as possible.
|
|
54
|
+
There are two ways of doing this depending on if you're using Dailymotion player or a third party one.
|
|
55
|
+
|
|
56
|
+
If you are using the Dailymotion player, you should only provide the video `xid` in your ad unit, example:
|
|
57
|
+
|
|
58
|
+
```javascript
|
|
59
|
+
const adUnits = [
|
|
60
|
+
{
|
|
61
|
+
bids: [{
|
|
62
|
+
bidder: 'dailymotion',
|
|
63
|
+
params: {
|
|
64
|
+
apiKey: 'dailymotion-testing'
|
|
65
|
+
}
|
|
66
|
+
}],
|
|
67
|
+
code: 'test-ad-unit',
|
|
68
|
+
mediaTypes: {
|
|
69
|
+
video: {
|
|
70
|
+
api: [2, 7],
|
|
71
|
+
context: 'instream',
|
|
72
|
+
playerSize: [ [1280, 720] ],
|
|
73
|
+
startDelay: 0,
|
|
74
|
+
xid: 'x123456' // Dailymotion infrastructure unique video ID
|
|
75
|
+
},
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
];
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
This will automatically fetch the most up-to-date information about the video.
|
|
82
|
+
If you provide any other metadata in addition to the `xid`, they will be ignored.
|
|
83
|
+
|
|
84
|
+
If you are using a third party video player, you should not provide any `xid` and instead fill the following members:
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
const adUnits = [
|
|
88
|
+
{
|
|
89
|
+
bids: [{
|
|
90
|
+
bidder: 'dailymotion',
|
|
91
|
+
params: {
|
|
92
|
+
apiKey: 'dailymotion-testing',
|
|
93
|
+
video: {
|
|
94
|
+
description: 'overriden video description'
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}],
|
|
98
|
+
code: 'test-ad-unit',
|
|
99
|
+
mediaTypes: {
|
|
100
|
+
video: {
|
|
101
|
+
api: [2, 7],
|
|
102
|
+
context: 'instream',
|
|
103
|
+
description: 'this is a video description',
|
|
104
|
+
duration: 556,
|
|
105
|
+
iabcat2: ['6', '17'],
|
|
106
|
+
id: '54321',
|
|
107
|
+
lang: 'FR',
|
|
108
|
+
playerSize: [ [1280, 720] ],
|
|
109
|
+
private: false,
|
|
110
|
+
startDelay: 0,
|
|
111
|
+
tags: 'tag_1,tag_2,tag_3',
|
|
112
|
+
title: 'test video',
|
|
113
|
+
topics: 'topic_1, topic_2',
|
|
114
|
+
},
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
];
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Each of the following video metadata fields can be added in mediaTypes.video or bids.params.video.
|
|
121
|
+
If a field exists in both places, it will be overridden by bids.params.video.
|
|
122
|
+
|
|
123
|
+
* `description` - Video description
|
|
124
|
+
* `duration` - Video duration in seconds
|
|
125
|
+
* `iabcat2` - List of IAB category IDs from the [2.0 taxonomy](https://github.com/InteractiveAdvertisingBureau/Taxonomies/blob/main/Content%20Taxonomies/Content%20Taxonomy%202.0.tsv)
|
|
126
|
+
* `id` - Video unique ID in host video infrastructure
|
|
127
|
+
* `lang` - ISO 639-1 code for main language used in the video
|
|
128
|
+
* `private` - True if video is not publicly available
|
|
129
|
+
* `tags` - Tags for the video, comma separated
|
|
130
|
+
* `title` - Video title
|
|
131
|
+
* `topics` - Main topics for the video, comma separated
|
|
132
|
+
* `xid` - Dailymotion video identifier (only applicable if using the Dailymotion player)
|
|
133
|
+
|
|
134
|
+
# Integrating the adapter
|
|
135
|
+
|
|
136
|
+
To use the adapter with any non-test request, you first need to ask an API key from Dailymotion. Please contact us through **DailymotionPrebid.js@dailymotion.com**.
|
|
137
|
+
|
|
138
|
+
You will then be able to use it within the bid parameters before making a bid request.
|
|
139
|
+
|
|
140
|
+
This API key will ensure proper identification of your inventory and allow you to get real bids.
|
|
@@ -12,7 +12,7 @@ import { Renderer } from '../src/Renderer.js';
|
|
|
12
12
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
13
13
|
import { createBid } from '../src/bidfactory.js';
|
|
14
14
|
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
15
|
-
import
|
|
15
|
+
import { STATUS } from '../src/constants.js';
|
|
16
16
|
import { OUTSTREAM, INSTREAM } from '../src/video.js';
|
|
17
17
|
|
|
18
18
|
/**
|
|
@@ -416,7 +416,7 @@ function buildBannerResponse(bidRequest, bidResponse) {
|
|
|
416
416
|
if (bidRequest) {
|
|
417
417
|
let bidResponse = createBid(1);
|
|
418
418
|
placementCode = bidRequest.placementCode;
|
|
419
|
-
bidRequest.status =
|
|
419
|
+
bidRequest.status = STATUS.GOOD;
|
|
420
420
|
responseCPM = parseFloat(bidderBid.price);
|
|
421
421
|
if (responseCPM === 0 || isNaN(responseCPM)) {
|
|
422
422
|
let bid = createBid(2);
|
|
@@ -457,7 +457,7 @@ function buildNativeResponse(bidRequest, response) {
|
|
|
457
457
|
if (bidRequest) {
|
|
458
458
|
let bidResponse = createBid(1);
|
|
459
459
|
placementCode = bidRequest.placementCode;
|
|
460
|
-
bidRequest.status =
|
|
460
|
+
bidRequest.status = STATUS.GOOD;
|
|
461
461
|
responseCPM = parseFloat(bidderBid.price);
|
|
462
462
|
if (responseCPM === 0 || isNaN(responseCPM)) {
|
|
463
463
|
let bid = createBid(2);
|
|
@@ -506,7 +506,7 @@ function buildVideoResponse(bidRequest, response) {
|
|
|
506
506
|
if (bidRequest) {
|
|
507
507
|
let bidResponse = createBid(1);
|
|
508
508
|
placementCode = bidRequest.placementCode;
|
|
509
|
-
bidRequest.status =
|
|
509
|
+
bidRequest.status = STATUS.GOOD;
|
|
510
510
|
responseCPM = parseFloat(bidderBid.price);
|
|
511
511
|
if (responseCPM === 0 || isNaN(responseCPM)) {
|
|
512
512
|
let bid = createBid(2);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {deepClone, delayExecution} from '../../src/utils.js';
|
|
2
|
-
import
|
|
2
|
+
import { STATUS } from '../../src/constants.js';
|
|
3
3
|
|
|
4
4
|
export function makePbsInterceptor({createBid}) {
|
|
5
5
|
return function pbsBidInterceptor(next, interceptBids, s2sBidRequest, bidRequests, ajax, {
|
|
@@ -17,7 +17,7 @@ export function makePbsInterceptor({createBid}) {
|
|
|
17
17
|
function addBid(bid, bidRequest) {
|
|
18
18
|
onBid({
|
|
19
19
|
adUnit: bidRequest.adUnitCode,
|
|
20
|
-
bid: Object.assign(createBid(
|
|
20
|
+
bid: Object.assign(createBid(STATUS.GOOD, bidRequest), bid)
|
|
21
21
|
})
|
|
22
22
|
}
|
|
23
23
|
bidRequests = bidRequests
|
|
@@ -20,7 +20,7 @@ import {getHook, submodule} from '../src/hook.js';
|
|
|
20
20
|
import {auctionManager} from '../src/auctionManager.js';
|
|
21
21
|
import {gdprDataHandler} from '../src/adapterManager.js';
|
|
22
22
|
import * as events from '../src/events.js';
|
|
23
|
-
import
|
|
23
|
+
import { EVENTS } from '../src/constants.js';
|
|
24
24
|
import {getPPID} from '../src/adserver.js';
|
|
25
25
|
import {getRefererInfo} from '../src/refererDetection.js';
|
|
26
26
|
import {CLIENT_SECTIONS} from '../src/fpd/oneClient.js';
|
|
@@ -360,7 +360,7 @@ function getCustParams(bid, options, urlCustParams) {
|
|
|
360
360
|
);
|
|
361
361
|
|
|
362
362
|
// TODO: WTF is this? just firing random events, guessing at the argument, hoping noone notices?
|
|
363
|
-
events.emit(
|
|
363
|
+
events.emit(EVENTS.SET_TARGETING, {[adUnit.code]: prebidTargetingSet});
|
|
364
364
|
|
|
365
365
|
// merge the prebid + publisher targeting sets
|
|
366
366
|
const publisherTargetingSet = deepAccess(options, 'params.cust_params');
|