prebid.js 8.44.0 → 8.46.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/alkimiBidAdapter.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 +15 -6
- 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/engageyaBidAdapter.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/jwplayerBidAdapter.js +1 -0
- 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 +245 -241
- 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/optableBidAdapter.js +1 -0
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/optimonAnalyticsAdapter.js +1 -1
- package/dist/ortbConverter.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/stroeerCoreBidAdapter.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/viantOrtbBidAdapter.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/noadserver/jwplayerBidAdapter_sample.html +75 -0
- package/integrationExamples/realTimeData/jwplayerRtdProvider_example.html +7 -0
- package/integrationExamples/videoModule/jwplayer/bidMarkedAsUsed.html +7 -0
- package/integrationExamples/videoModule/jwplayer/bidRequestScheduling.html +9 -4
- package/integrationExamples/videoModule/jwplayer/bidsBackHandlerOverride.html +7 -0
- package/integrationExamples/videoModule/jwplayer/eventListeners.html +7 -0
- package/integrationExamples/videoModule/jwplayer/eventsUI.html +7 -0
- package/integrationExamples/videoModule/jwplayer/gamAdServerMediation.html +7 -0
- package/integrationExamples/videoModule/jwplayer/mediaMetadata.html +7 -0
- package/integrationExamples/videoModule/jwplayer/playlist.html +7 -0
- package/integrationExamples/videoModule/videojs/bidMarkedAsUsed.html +7 -0
- package/integrationExamples/videoModule/videojs/bidRequestScheduling.html +7 -0
- package/integrationExamples/videoModule/videojs/bidsBackHandlerOverride.html +7 -0
- package/integrationExamples/videoModule/videojs/eventListeners.html +7 -0
- package/integrationExamples/videoModule/videojs/eventsUI.html +7 -0
- package/integrationExamples/videoModule/videojs/gamAdServerMediation.html +7 -0
- package/integrationExamples/videoModule/videojs/mediaMetadata.html +7 -0
- package/integrationExamples/videoModule/videojs/playlist.html +7 -0
- package/libraries/analyticsAdapter/AnalyticsAdapter.js +4 -4
- package/libraries/creative-renderer-native/renderer.js +1 -1
- package/libraries/ortbConverter/processors/banner.js +2 -2
- 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/adgenerationBidAdapter.js +6 -10
- 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 +54 -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/alkimiBidAdapter.js +48 -8
- 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/engageyaBidAdapter.js +1 -1
- 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/gumgumBidAdapter.js +1 -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/jwplayerBidAdapter.js +412 -0
- package/modules/jwplayerBidAdapter.md +72 -0
- 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/optableBidAdapter.js +42 -0
- package/modules/optableBidAdapter.md +41 -0
- package/modules/optidigitalBidAdapter.js +20 -4
- 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 +22 -18
- package/modules/pubwiseAnalyticsAdapter.js +11 -11
- package/modules/pubxaiAnalyticsAdapter.js +6 -6
- package/modules/qortexRtdProvider.js +2 -2
- package/modules/relaidoBidAdapter.js +70 -9
- 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 +33 -43
- 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/stroeerCoreBidAdapter.js +7 -5
- 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/viantOrtbBidAdapter.js +2 -0
- package/modules/videoModule/index.js +4 -4
- package/modules/yandexAnalyticsAdapter.js +8 -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 +19 -6
- 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/adgenerationBidAdapter_spec.js +6 -6
- 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 +26 -6
- 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/alkimiBidAdapter_spec.js +11 -5
- 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/gumgumBidAdapter_spec.js +1 -1
- 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/jwplayerBidAdapter_spec.js +412 -0
- 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/liveIntentIdSystem_spec.js +13 -15
- 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/optableBidAdapter_spec.js +89 -0
- package/test/spec/modules/optidigitalBidAdapter_spec.js +34 -4
- 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 +25 -2
- 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/relaidoBidAdapter_spec.js +62 -0
- 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/stroeerCoreBidAdapter_spec.js +21 -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 +19 -3
- package/src/constants.json +0 -196
|
@@ -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);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
Module Name: pirIDSystem
|
|
4
|
+
Module Type: UserID Module
|
|
5
|
+
Maintainer: pawel.grudzien@grupawp.pl
|
|
6
|
+
|
|
7
|
+
# Description
|
|
8
|
+
|
|
9
|
+
User identification system for WPM
|
|
10
|
+
|
|
11
|
+
### Prebid Params example
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
pbjs.setConfig({
|
|
15
|
+
userSync: {
|
|
16
|
+
userIds: [{
|
|
17
|
+
name: 'pirID',
|
|
18
|
+
storage: {
|
|
19
|
+
type: 'cookie',
|
|
20
|
+
name: 'pirIdToken',
|
|
21
|
+
expires: 7,
|
|
22
|
+
refreshInSeconds: 360
|
|
23
|
+
},
|
|
24
|
+
}]
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
```
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
triggerPixel,
|
|
17
17
|
uniques,
|
|
18
18
|
} from '../../src/utils.js';
|
|
19
|
-
import
|
|
19
|
+
import { EVENTS, REJECTION_REASON, S2S } from '../../src/constants.js';
|
|
20
20
|
import adapterManager, {s2sActivityParams} from '../../src/adapterManager.js';
|
|
21
21
|
import {config} from '../../src/config.js';
|
|
22
22
|
import {addComponentAuction, isValid} from '../../src/adapters/bidderFactory.js';
|
|
@@ -33,7 +33,7 @@ import {ACTIVITY_TRANSMIT_UFPD} from '../../src/activities/activities.js';
|
|
|
33
33
|
|
|
34
34
|
const getConfig = config.getConfig;
|
|
35
35
|
|
|
36
|
-
const TYPE =
|
|
36
|
+
const TYPE = S2S.SRC;
|
|
37
37
|
let _syncCount = 0;
|
|
38
38
|
let _s2sConfigs;
|
|
39
39
|
|
|
@@ -467,10 +467,10 @@ export function PrebidServer() {
|
|
|
467
467
|
processPBSRequest(s2sBidRequest, bidRequests, ajax, {
|
|
468
468
|
onResponse: function (isValid, requestedBidders, response) {
|
|
469
469
|
if (isValid) {
|
|
470
|
-
bidRequests.forEach(bidderRequest => events.emit(
|
|
470
|
+
bidRequests.forEach(bidderRequest => events.emit(EVENTS.BIDDER_DONE, bidderRequest));
|
|
471
471
|
}
|
|
472
472
|
if (shouldEmitNonbids(s2sBidRequest.s2sConfig, response)) {
|
|
473
|
-
events.emit(
|
|
473
|
+
events.emit(EVENTS.SEAT_NON_BID, {
|
|
474
474
|
seatnonbid: response.ext.seatnonbid,
|
|
475
475
|
auctionId: bidRequests[0].auctionId,
|
|
476
476
|
requestedBidders,
|
|
@@ -483,7 +483,7 @@ export function PrebidServer() {
|
|
|
483
483
|
},
|
|
484
484
|
onError(msg, error) {
|
|
485
485
|
logError(`Prebid server call failed: '${msg}'`, error);
|
|
486
|
-
bidRequests.forEach(bidderRequest => events.emit(
|
|
486
|
+
bidRequests.forEach(bidderRequest => events.emit(EVENTS.BIDDER_ERROR, { error, bidderRequest }));
|
|
487
487
|
done(error.timedOut);
|
|
488
488
|
},
|
|
489
489
|
onBid: function ({adUnit, bid}) {
|
|
@@ -491,7 +491,7 @@ export function PrebidServer() {
|
|
|
491
491
|
metrics.checkpoint('addBidResponse');
|
|
492
492
|
if ((bid.requestId == null || bid.requestBidder == null) && !s2sBidRequest.s2sConfig.allowUnknownBidderCodes) {
|
|
493
493
|
logWarn(`PBS adapter received bid from unknown bidder (${bid.bidder}), but 's2sConfig.allowUnknownBidderCodes' is not set. Ignoring bid.`);
|
|
494
|
-
addBidResponse.reject(adUnit, bid,
|
|
494
|
+
addBidResponse.reject(adUnit, bid, REJECTION_REASON.BIDDER_DISALLOWED);
|
|
495
495
|
} else {
|
|
496
496
|
if (metrics.measureTime('addBidResponse.validate', () => isValid(adUnit, bid))) {
|
|
497
497
|
addBidResponse(adUnit, bid);
|
|
@@ -499,7 +499,7 @@ export function PrebidServer() {
|
|
|
499
499
|
addWurl(bid.auctionId, bid.adId, bid.pbsWurl);
|
|
500
500
|
}
|
|
501
501
|
} else {
|
|
502
|
-
addBidResponse.reject(adUnit, bid,
|
|
502
|
+
addBidResponse.reject(adUnit, bid, REJECTION_REASON.INVALID);
|
|
503
503
|
}
|
|
504
504
|
}
|
|
505
505
|
},
|
|
@@ -511,7 +511,7 @@ export function PrebidServer() {
|
|
|
511
511
|
};
|
|
512
512
|
|
|
513
513
|
// Listen for bid won to call wurl
|
|
514
|
-
events.on(
|
|
514
|
+
events.on(EVENTS.BID_WON, bidWonHandler);
|
|
515
515
|
|
|
516
516
|
return Object.assign(this, {
|
|
517
517
|
callBids: baseAdapter.callBids,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
timestamp
|
|
12
12
|
} from '../../src/utils.js';
|
|
13
13
|
import {config} from '../../src/config.js';
|
|
14
|
-
import
|
|
14
|
+
import { STATUS, S2S } from '../../src/constants.js';
|
|
15
15
|
import {createBid} from '../../src/bidfactory.js';
|
|
16
16
|
import {pbsExtensions} from '../../libraries/pbsExtensions/pbsExtensions.js';
|
|
17
17
|
import {setImpBidParams} from '../../libraries/pbsExtensions/processors/params.js';
|
|
@@ -114,8 +114,8 @@ const PBS_CONVERTER = ortbConverter({
|
|
|
114
114
|
// because core has special treatment for PBS adapter responses, we need some additional processing
|
|
115
115
|
bidResponse.requestTimestamp = context.requestTimestamp;
|
|
116
116
|
return {
|
|
117
|
-
bid: Object.assign(createBid(
|
|
118
|
-
src:
|
|
117
|
+
bid: Object.assign(createBid(STATUS.GOOD, {
|
|
118
|
+
src: S2S.SRC,
|
|
119
119
|
bidId: bidRequest ? (bidRequest.bidId || bidRequest.bid_Id) : null,
|
|
120
120
|
transactionId: context.adUnit.transactionId,
|
|
121
121
|
adUnitId: context.adUnit.adUnitId,
|
|
@@ -3,7 +3,7 @@ import {ajaxBuilder} from '../src/ajax.js';
|
|
|
3
3
|
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
4
4
|
import adapterManager from '../src/adapterManager.js';
|
|
5
5
|
import {getStorageManager} from '../src/storageManager.js';
|
|
6
|
-
import
|
|
6
|
+
import { EVENTS } from '../src/constants.js';
|
|
7
7
|
import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -208,7 +208,7 @@ function handleEvent(eventType, eventArgs) {
|
|
|
208
208
|
const pmEvent = {};
|
|
209
209
|
|
|
210
210
|
switch (eventType) {
|
|
211
|
-
case
|
|
211
|
+
case EVENTS.AUCTION_INIT: {
|
|
212
212
|
pmEvent.auctionId = eventArgs.auctionId;
|
|
213
213
|
pmEvent.timeout = eventArgs.timeout;
|
|
214
214
|
pmEvent.eventType = eventArgs.eventType;
|
|
@@ -218,7 +218,7 @@ function handleEvent(eventType, eventArgs) {
|
|
|
218
218
|
_bidRequestTimeout = pmEvent.timeout;
|
|
219
219
|
break;
|
|
220
220
|
}
|
|
221
|
-
case
|
|
221
|
+
case EVENTS.AUCTION_END: {
|
|
222
222
|
pmEvent.auctionId = eventArgs.auctionId;
|
|
223
223
|
pmEvent.end = eventArgs.end;
|
|
224
224
|
pmEvent.start = eventArgs.start;
|
|
@@ -228,15 +228,15 @@ function handleEvent(eventType, eventArgs) {
|
|
|
228
228
|
pmEvent.end = Date.now();
|
|
229
229
|
break;
|
|
230
230
|
}
|
|
231
|
-
case
|
|
231
|
+
case EVENTS.BID_ADJUSTMENT: {
|
|
232
232
|
break;
|
|
233
233
|
}
|
|
234
|
-
case
|
|
234
|
+
case EVENTS.BID_TIMEOUT: {
|
|
235
235
|
pmEvent.bidders = eventArgs && eventArgs.map ? eventArgs.map(trimBid) : eventArgs;
|
|
236
236
|
pmEvent.duration = _bidRequestTimeout;
|
|
237
237
|
break;
|
|
238
238
|
}
|
|
239
|
-
case
|
|
239
|
+
case EVENTS.BID_REQUESTED: {
|
|
240
240
|
pmEvent.auctionId = eventArgs.auctionId;
|
|
241
241
|
pmEvent.bidderCode = eventArgs.bidderCode;
|
|
242
242
|
pmEvent.doneCbCallCount = eventArgs.doneCbCallCount;
|
|
@@ -247,7 +247,7 @@ function handleEvent(eventType, eventArgs) {
|
|
|
247
247
|
pmEvent.timeout = eventArgs.timeout;
|
|
248
248
|
break;
|
|
249
249
|
}
|
|
250
|
-
case
|
|
250
|
+
case EVENTS.BID_RESPONSE: {
|
|
251
251
|
pmEvent.bidderCode = eventArgs.bidderCode;
|
|
252
252
|
pmEvent.width = eventArgs.width;
|
|
253
253
|
pmEvent.height = eventArgs.height;
|
|
@@ -266,7 +266,7 @@ function handleEvent(eventType, eventArgs) {
|
|
|
266
266
|
pmEvent.adserverTargeting = eventArgs.adserverTargeting;
|
|
267
267
|
break;
|
|
268
268
|
}
|
|
269
|
-
case
|
|
269
|
+
case EVENTS.BID_WON: {
|
|
270
270
|
pmEvent.auctionId = eventArgs.auctionId;
|
|
271
271
|
pmEvent.adId = eventArgs.adId;
|
|
272
272
|
pmEvent.adserverTargeting = eventArgs.adserverTargeting;
|
|
@@ -284,7 +284,7 @@ function handleEvent(eventType, eventArgs) {
|
|
|
284
284
|
pmEvent.bidder = eventArgs.bidder;
|
|
285
285
|
break;
|
|
286
286
|
}
|
|
287
|
-
case
|
|
287
|
+
case EVENTS.BIDDER_DONE: {
|
|
288
288
|
pmEvent.auctionId = eventArgs.auctionId;
|
|
289
289
|
pmEvent.auctionStart = eventArgs.auctionStart;
|
|
290
290
|
pmEvent.bidderCode = eventArgs.bidderCode;
|
|
@@ -297,16 +297,16 @@ function handleEvent(eventType, eventArgs) {
|
|
|
297
297
|
pmEvent.src = eventArgs.src;
|
|
298
298
|
break;
|
|
299
299
|
}
|
|
300
|
-
case
|
|
300
|
+
case EVENTS.SET_TARGETING: {
|
|
301
301
|
break;
|
|
302
302
|
}
|
|
303
|
-
case
|
|
303
|
+
case EVENTS.REQUEST_BIDS: {
|
|
304
304
|
break;
|
|
305
305
|
}
|
|
306
|
-
case
|
|
306
|
+
case EVENTS.ADD_AD_UNITS: {
|
|
307
307
|
break;
|
|
308
308
|
}
|
|
309
|
-
case
|
|
309
|
+
case EVENTS.AD_RENDER_FAILED: {
|
|
310
310
|
pmEvent.bid = eventArgs.bid;
|
|
311
311
|
pmEvent.message = eventArgs.message;
|
|
312
312
|
pmEvent.reason = eventArgs.reason;
|
|
@@ -326,7 +326,7 @@ function sendEvent(event) {
|
|
|
326
326
|
_eventQueue.push(event);
|
|
327
327
|
logInfo(`${analyticsName} Event ${event.eventType}:`, event);
|
|
328
328
|
|
|
329
|
-
if (event.eventType ===
|
|
329
|
+
if (event.eventType === EVENTS.AUCTION_END) {
|
|
330
330
|
flush();
|
|
331
331
|
}
|
|
332
332
|
}
|
package/modules/priceFloors.js
CHANGED
|
@@ -19,7 +19,7 @@ import {getGlobal} from '../src/prebidGlobal.js';
|
|
|
19
19
|
import {config} from '../src/config.js';
|
|
20
20
|
import {ajaxBuilder} from '../src/ajax.js';
|
|
21
21
|
import * as events from '../src/events.js';
|
|
22
|
-
import
|
|
22
|
+
import { EVENTS, REJECTION_REASON } from '../src/constants.js';
|
|
23
23
|
import {getHook} from '../src/hook.js';
|
|
24
24
|
import {find} from '../src/polyfill.js';
|
|
25
25
|
import {getRefererInfo} from '../src/refererDetection.js';
|
|
@@ -31,6 +31,11 @@ import {adjustCpm} from '../src/utils/cpm.js';
|
|
|
31
31
|
import {getGptSlotInfoForAdUnitCode} from '../libraries/gptUtils/gptUtils.js';
|
|
32
32
|
import {convertCurrency} from '../libraries/currencyUtils/currency.js';
|
|
33
33
|
|
|
34
|
+
export const FLOOR_SKIPPED_REASON = {
|
|
35
|
+
NOT_FOUND: 'not_found',
|
|
36
|
+
RANDOM: 'random'
|
|
37
|
+
};
|
|
38
|
+
|
|
34
39
|
/**
|
|
35
40
|
* @summary This Module is intended to provide users with the ability to dynamically set and enforce price floors on a per auction basis.
|
|
36
41
|
*/
|
|
@@ -412,13 +417,13 @@ export function createFloorsDataForAuction(adUnits, auctionId) {
|
|
|
412
417
|
// if we still do not have a valid floor data then floors is not on for this auction, so skip
|
|
413
418
|
if (Object.keys(deepAccess(resolvedFloorsData, 'data.values') || {}).length === 0) {
|
|
414
419
|
resolvedFloorsData.skipped = true;
|
|
415
|
-
resolvedFloorsData.skippedReason =
|
|
420
|
+
resolvedFloorsData.skippedReason = FLOOR_SKIPPED_REASON.NOT_FOUND
|
|
416
421
|
} else {
|
|
417
422
|
// determine the skip rate now
|
|
418
423
|
const auctionSkipRate = getParameterByName('pbjs_skipRate') || (deepAccess(resolvedFloorsData, 'data.skipRate') ?? resolvedFloorsData.skipRate);
|
|
419
424
|
const isSkipped = Math.random() * 100 < parseFloat(auctionSkipRate);
|
|
420
425
|
resolvedFloorsData.skipped = isSkipped;
|
|
421
|
-
if (isSkipped) resolvedFloorsData.skippedReason =
|
|
426
|
+
if (isSkipped) resolvedFloorsData.skippedReason = FLOOR_SKIPPED_REASON.RANDOM
|
|
422
427
|
}
|
|
423
428
|
// copy FloorMin to floorData.data
|
|
424
429
|
if (resolvedFloorsData.hasOwnProperty('floorMin')) resolvedFloorsData.data.floorMin = resolvedFloorsData.floorMin;
|
|
@@ -701,7 +706,7 @@ export function handleSetFloorsConfig(config) {
|
|
|
701
706
|
if (!addedFloorsHook) {
|
|
702
707
|
// register hooks / listening events
|
|
703
708
|
// when auction finishes remove it's associated floor data after 3 seconds so we stil have it for latent responses
|
|
704
|
-
events.on(
|
|
709
|
+
events.on(EVENTS.AUCTION_END, (args) => {
|
|
705
710
|
setTimeout(() => delete _floorDataForAuction[args.auctionId], 3000);
|
|
706
711
|
});
|
|
707
712
|
|
|
@@ -802,7 +807,7 @@ export const addBidResponseHook = timedBidResponseHook('priceFloors', function a
|
|
|
802
807
|
// now do the compare!
|
|
803
808
|
if (shouldFloorBid(floorData, floorInfo, bid)) {
|
|
804
809
|
// bid fails floor -> throw it out
|
|
805
|
-
reject(
|
|
810
|
+
reject(REJECTION_REASON.FLOOR_NOT_MET);
|
|
806
811
|
logWarn(`${MODULE_NAME}: ${bid.bidderCode}'s Bid Response for ${adUnitCode} was rejected due to floor not met (adjusted cpm: ${bid?.floorData?.cpmAfterAdjustments}, floor: ${floorInfo?.matchingFloor})`, bid);
|
|
807
812
|
return;
|
|
808
813
|
}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import {_each, isArray, isStr, logError, logWarn, pick, generateUUID} from '../src/utils.js';
|
|
2
2
|
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
3
3
|
import adapterManager from '../src/adapterManager.js';
|
|
4
|
-
import
|
|
4
|
+
import { BID_STATUS, EVENTS, STATUS, REJECTION_REASON } from '../src/constants.js';
|
|
5
5
|
import {ajax} from '../src/ajax.js';
|
|
6
6
|
import {config} from '../src/config.js';
|
|
7
7
|
import {getGlobal} from '../src/prebidGlobal.js';
|
|
8
8
|
import {getGptSlotInfoForAdUnitCode} from '../libraries/gptUtils/gptUtils.js';
|
|
9
9
|
|
|
10
|
+
const FLOOR_VALUES = {
|
|
11
|
+
NO_DATA: 'noData',
|
|
12
|
+
AD_UNIT: 'adUnit',
|
|
13
|
+
SET_CONFIG: 'setConfig',
|
|
14
|
+
FETCH: 'fetch',
|
|
15
|
+
SUCCESS: 'success',
|
|
16
|
+
ERROR: 'error',
|
|
17
|
+
TIMEOUT: 'timeout'
|
|
18
|
+
};
|
|
19
|
+
|
|
10
20
|
/// /////////// CONSTANTS //////////////
|
|
11
21
|
const ADAPTER_CODE = 'pubmatic';
|
|
12
22
|
const VENDOR_OPENWRAP = 'openwrap';
|
|
@@ -109,7 +119,7 @@ function copyRequiredBidDetails(bid) {
|
|
|
109
119
|
|
|
110
120
|
function setBidStatus(bid, args) {
|
|
111
121
|
switch (args.getStatusCode()) {
|
|
112
|
-
case
|
|
122
|
+
case STATUS.GOOD:
|
|
113
123
|
bid.status = SUCCESS;
|
|
114
124
|
delete bid.error; // it's possible for this to be set by a previous timeout
|
|
115
125
|
break;
|
|
@@ -346,9 +356,9 @@ function getFloorFetchStatus(floorData) {
|
|
|
346
356
|
return false;
|
|
347
357
|
}
|
|
348
358
|
const { location, fetchStatus } = floorData?.floorRequestData;
|
|
349
|
-
const isDataValid = location !==
|
|
350
|
-
const isFetchSuccessful = location ===
|
|
351
|
-
const isAdUnitOrSetConfig = location ===
|
|
359
|
+
const isDataValid = location !== FLOOR_VALUES.NO_DATA;
|
|
360
|
+
const isFetchSuccessful = location === FLOOR_VALUES.FETCH && fetchStatus === FLOOR_VALUES.SUCCESS;
|
|
361
|
+
const isAdUnitOrSetConfig = location === FLOOR_VALUES.AD_UNIT || location === FLOOR_VALUES.SET_CONFIG;
|
|
352
362
|
return isDataValid && (isAdUnitOrSetConfig || isFetchSuccessful);
|
|
353
363
|
}
|
|
354
364
|
|
|
@@ -404,16 +414,16 @@ function executeBidsLoggerCall(e, highestCpmBids) {
|
|
|
404
414
|
if (floorData?.floorRequestData) {
|
|
405
415
|
const { location, fetchStatus, floorProvider } = floorData?.floorRequestData;
|
|
406
416
|
slotObject.ffs = {
|
|
407
|
-
[
|
|
408
|
-
[
|
|
409
|
-
[
|
|
417
|
+
[FLOOR_VALUES.SUCCESS]: 1,
|
|
418
|
+
[FLOOR_VALUES.ERROR]: 2,
|
|
419
|
+
[FLOOR_VALUES.TIMEOUT]: 4,
|
|
410
420
|
undefined: 0
|
|
411
421
|
}[fetchStatus];
|
|
412
422
|
slotObject.fsrc = {
|
|
413
|
-
[
|
|
414
|
-
[
|
|
415
|
-
[
|
|
416
|
-
[
|
|
423
|
+
[FLOOR_VALUES.FETCH]: 2,
|
|
424
|
+
[FLOOR_VALUES.NO_DATA]: 2,
|
|
425
|
+
[FLOOR_VALUES.AD_UNIT]: 1,
|
|
426
|
+
[FLOOR_VALUES.SET_CONFIG]: 1
|
|
417
427
|
}[location];
|
|
418
428
|
slotObject.fp = floorProvider;
|
|
419
429
|
}
|
|
@@ -578,9 +588,9 @@ function bidResponseHandler(args) {
|
|
|
578
588
|
function bidRejectedHandler(args) {
|
|
579
589
|
// If bid is rejected due to floors value did not met
|
|
580
590
|
// make cpm as 0, status as bidRejected and forward the bid for logging
|
|
581
|
-
if (args.rejectionReason ===
|
|
591
|
+
if (args.rejectionReason === REJECTION_REASON.FLOOR_NOT_MET) {
|
|
582
592
|
args.cpm = 0;
|
|
583
|
-
args.status =
|
|
593
|
+
args.status = BID_STATUS.BID_REJECTED;
|
|
584
594
|
bidResponseHandler(args);
|
|
585
595
|
}
|
|
586
596
|
}
|
|
@@ -674,28 +684,28 @@ let pubmaticAdapter = Object.assign({}, baseAdapter, {
|
|
|
674
684
|
|
|
675
685
|
track({eventType, args}) {
|
|
676
686
|
switch (eventType) {
|
|
677
|
-
case
|
|
687
|
+
case EVENTS.AUCTION_INIT:
|
|
678
688
|
auctionInitHandler(args);
|
|
679
689
|
break;
|
|
680
|
-
case
|
|
690
|
+
case EVENTS.BID_REQUESTED:
|
|
681
691
|
bidRequestedHandler(args);
|
|
682
692
|
break;
|
|
683
|
-
case
|
|
693
|
+
case EVENTS.BID_RESPONSE:
|
|
684
694
|
bidResponseHandler(args);
|
|
685
695
|
break;
|
|
686
|
-
case
|
|
696
|
+
case EVENTS.BID_REJECTED:
|
|
687
697
|
bidRejectedHandler(args)
|
|
688
698
|
break;
|
|
689
|
-
case
|
|
699
|
+
case EVENTS.BIDDER_DONE:
|
|
690
700
|
bidderDoneHandler(args);
|
|
691
701
|
break;
|
|
692
|
-
case
|
|
702
|
+
case EVENTS.BID_WON:
|
|
693
703
|
bidWonHandler(args);
|
|
694
704
|
break;
|
|
695
|
-
case
|
|
705
|
+
case EVENTS.AUCTION_END:
|
|
696
706
|
auctionEndHandler(args);
|
|
697
707
|
break;
|
|
698
|
-
case
|
|
708
|
+
case EVENTS.BID_TIMEOUT:
|
|
699
709
|
bidTimeoutHandler(args);
|
|
700
710
|
break;
|
|
701
711
|
}
|
|
@@ -4,8 +4,7 @@ import { BANNER, VIDEO, NATIVE, ADPOD } from '../src/mediaTypes.js';
|
|
|
4
4
|
import { config } from '../src/config.js';
|
|
5
5
|
import { Renderer } from '../src/Renderer.js';
|
|
6
6
|
import { bidderSettings } from '../src/bidderSettings.js';
|
|
7
|
-
import
|
|
8
|
-
import {convertTypes} from '../libraries/transformParamsUtils/convertTypes.js';
|
|
7
|
+
import { NATIVE_IMAGE_TYPES, NATIVE_KEYS_THAT_ARE_NOT_ASSETS, NATIVE_KEYS, NATIVE_ASSET_TYPES } from '../src/constants.js';
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* @typedef {import('../src/adapters/bidderFactory.js').BidRequest} BidRequest
|
|
@@ -264,6 +263,25 @@ function _handleCustomParams(params, conf) {
|
|
|
264
263
|
return conf;
|
|
265
264
|
}
|
|
266
265
|
|
|
266
|
+
export function getDeviceConnectionType() {
|
|
267
|
+
let connection = window.navigator && (window.navigator.connection || window.navigator.mozConnection || window.navigator.webkitConnection);
|
|
268
|
+
switch (connection?.effectiveType) {
|
|
269
|
+
case 'ethernet':
|
|
270
|
+
return 1;
|
|
271
|
+
case 'wifi':
|
|
272
|
+
return 2;
|
|
273
|
+
case 'slow-2g':
|
|
274
|
+
case '2g':
|
|
275
|
+
return 4;
|
|
276
|
+
case '3g':
|
|
277
|
+
return 5;
|
|
278
|
+
case '4g':
|
|
279
|
+
return 6;
|
|
280
|
+
default:
|
|
281
|
+
return 0;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
267
285
|
function _createOrtbTemplate(conf) {
|
|
268
286
|
return {
|
|
269
287
|
id: '' + new Date().getTime(),
|
|
@@ -281,7 +299,8 @@ function _createOrtbTemplate(conf) {
|
|
|
281
299
|
dnt: (navigator.doNotTrack == 'yes' || navigator.doNotTrack == '1' || navigator.msDoNotTrack == '1') ? 1 : 0,
|
|
282
300
|
h: screen.height,
|
|
283
301
|
w: screen.width,
|
|
284
|
-
language: navigator.language
|
|
302
|
+
language: navigator.language,
|
|
303
|
+
connectiontype: getDeviceConnectionType()
|
|
285
304
|
},
|
|
286
305
|
user: {},
|
|
287
306
|
ext: {}
|
|
@@ -332,7 +351,6 @@ const PREBID_NATIVE_DATA_KEYS_TO_ORTB = {
|
|
|
332
351
|
'displayurl': 'displayurl'
|
|
333
352
|
};
|
|
334
353
|
|
|
335
|
-
const { NATIVE_IMAGE_TYPES, NATIVE_KEYS_THAT_ARE_NOT_ASSETS, NATIVE_KEYS, NATIVE_ASSET_TYPES } = CONSTANTS;
|
|
336
354
|
const PREBID_NATIVE_DATA_KEY_VALUES = Object.values(PREBID_NATIVE_DATA_KEYS_TO_ORTB);
|
|
337
355
|
|
|
338
356
|
// TODO remove this function when the support for 1.1 is removed
|
|
@@ -1448,20 +1466,6 @@ export const spec = {
|
|
|
1448
1466
|
url: USER_SYNC_URL_IMAGE + syncurl
|
|
1449
1467
|
}];
|
|
1450
1468
|
}
|
|
1451
|
-
},
|
|
1452
|
-
|
|
1453
|
-
/**
|
|
1454
|
-
* Covert bid param types for S2S
|
|
1455
|
-
* @param {Object} params bid params
|
|
1456
|
-
* @param {Boolean} isOpenRtb boolean to check openrtb2 protocol
|
|
1457
|
-
* @return {Object} params bid params
|
|
1458
|
-
*/
|
|
1459
|
-
|
|
1460
|
-
transformBidParams: function (params, isOpenRtb, adUnit, bidRequests) {
|
|
1461
|
-
return convertTypes({
|
|
1462
|
-
'publisherId': 'string',
|
|
1463
|
-
'adSlot': 'string'
|
|
1464
|
-
}, params);
|
|
1465
1469
|
}
|
|
1466
1470
|
};
|
|
1467
1471
|
|