prebid.js 7.8.0 → 7.11.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 +0 -2
- package/RELEASE_SCHEDULE.md +1 -1
- package/allowedModules.js +3 -0
- package/babelConfig.js +10 -4
- package/dist/33acrossBidAdapter.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/adrelevantisBidAdapter.js +1 -1
- package/dist/adtelligentBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -0
- 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/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/analyticsAdapter.js +1 -0
- package/dist/andBeyondMediaBidAdapter.js +1 -0
- package/dist/aniviewBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/atsAnalyticsAdapter.js +1 -1
- package/dist/audiencerunBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bluebillywigBidAdapter.js +1 -1
- package/dist/boldwinBidAdapter.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/c1xBidAdapter.js +1 -0
- package/dist/cleanioRtdProvider.js +1 -1
- package/dist/concertAnalyticsAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/cpmstarBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/datablocksAnalyticsAdapter.js +1 -1
- package/dist/datawrkzBidAdapter.js +1 -0
- package/dist/debugging-standalone.js +1 -1
- package/dist/dependencies.json +171 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningAnalyticsAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fintezaAnalyticsAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/getOrigin.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronAnalyticsAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/imuIdSystem.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/invisiblyAnalyticsAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoAnalyticsAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/livewrappedAnalyticsAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/medianetAnalyticsAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +182 -176
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxAnalyticsAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/openxOrtbBidAdapter.js +1 -1
- package/dist/optimonAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/ozoneBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/pianoDmpAnalyticsAdapter.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
- package/dist/publinkIdSystem.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/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/realvuAnalyticsAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/relevantAnalyticsAdapter.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/rtbhouseBidAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/scaleableAnalyticsAdapter.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/showheroes-bsBidAdapter.js +1 -1
- package/dist/sigmoidAnalyticsAdapter.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/snigelBidAdapter.js +1 -0
- 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/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/trustpidSystem.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.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/gulpHelpers.js +22 -55
- package/gulpfile.js +12 -5
- package/integrationExamples/gpt/1plusXRtdProviderExample.html +2 -4
- package/integrationExamples/gpt/airgridRtdProvider_example.html +1 -4
- package/integrationExamples/gpt/amp/remote.html +1 -1
- package/integrationExamples/gpt/blueconicRtdProvider_example.html +2 -4
- package/integrationExamples/gpt/hadronRtdProvider_example.html +1 -3
- package/integrationExamples/gpt/inskin_example.html +1 -3
- package/integrationExamples/gpt/permutiveRtdProvider_example.html +1 -1
- package/integrationExamples/gpt/prebidServer_example.html +1 -3
- package/integrationExamples/gpt/serverbidServer_example.html +1 -3
- package/integrationExamples/gpt/userId_example.html +1 -3
- package/integrationExamples/postbid/oas/postbid-config.js +5 -5
- package/karma.conf.maker.js +2 -13
- package/libraries/LIBRARIES.md +5 -0
- package/{src → libraries/analyticsAdapter}/AnalyticsAdapter.js +5 -6
- package/{src/adapters/analytics → libraries/analyticsAdapter/examples}/example.js +1 -1
- package/{src/adapters/analytics → libraries/analyticsAdapter/examples}/example2.js +1 -1
- package/modules/.submodules.json +0 -12
- package/modules/1plusXRtdProvider.js +1 -1
- package/modules/33acrossBidAdapter.js +3 -3
- package/modules/adWMGAnalyticsAdapter.js +1 -1
- package/modules/adagioAnalyticsAdapter.js +1 -1
- package/modules/adagioBidAdapter.js +3 -4
- package/modules/adgenerationBidAdapter.js +1 -1
- package/modules/adkernelAdnAnalyticsAdapter.js +1 -1
- package/modules/adkernelBidAdapter.js +2 -1
- package/modules/adlooxAnalyticsAdapter.js +1 -1
- package/modules/admixerBidAdapter.js +1 -1
- package/modules/adnowBidAdapter.js +1 -1
- package/modules/adnuntiusBidAdapter.js +3 -1
- package/modules/adomikAnalyticsAdapter.js +1 -1
- package/modules/adpod.js +1 -1
- package/modules/adrelevantisBidAdapter.js +2 -2
- package/modules/adriverBidAdapter.js +1 -1
- package/modules/adtargetBidAdapter.js +1 -1
- package/modules/adtelligentBidAdapter.js +4 -2
- package/modules/adtrgtmeBidAdapter.js +333 -0
- package/modules/adtrgtmeBidAdapter.md +69 -0
- package/modules/adtrueBidAdapter.js +1 -1
- package/modules/adxcgAnalyticsAdapter.js +1 -1
- package/modules/adxpremiumAnalyticsAdapter.js +2 -2
- package/modules/adyoulikeBidAdapter.js +12 -8
- package/modules/akamaiDapRtdProvider.js +2 -2
- package/modules/andBeyondMediaBidAdapter.js +202 -0
- package/modules/andBeyondMediaBidAdapter.md +79 -0
- package/modules/aniviewBidAdapter.js +2 -2
- package/modules/apacdexBidAdapter.js +3 -3
- package/modules/appierAnalyticsAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +9 -9
- package/modules/apstreamBidAdapter.js +2 -2
- package/modules/atsAnalyticsAdapter.js +1 -1
- package/modules/betweenBidAdapter.js +1 -1
- package/modules/bidwatchAnalyticsAdapter.js +71 -12
- package/modules/bizzclickBidAdapter.js +1 -1
- package/modules/bliinkBidAdapter.js +1 -1
- package/modules/boldwinBidAdapter.js +16 -7
- package/modules/boldwinBidAdapter.md +17 -0
- package/modules/brightMountainMediaBidAdapter.js +1 -1
- package/modules/browsiRtdProvider.js +26 -12
- package/modules/byDataAnalyticsAdapter.js +2 -2
- package/modules/c1xBidAdapter.js +209 -0
- package/modules/c1xBidAdapter.md +70 -0
- package/modules/cleanioRtdProvider.js +29 -0
- package/modules/cleanmedianetBidAdapter.js +1 -1
- package/modules/colossussspBidAdapter.js +2 -2
- package/modules/concertAnalyticsAdapter.js +1 -1
- package/modules/consentManagementUsp.js +2 -2
- package/modules/consumableBidAdapter.js +21 -3
- package/modules/cpmstarBidAdapter.js +23 -13
- package/modules/criteoBidAdapter.js +47 -5
- package/modules/cwireBidAdapter.js +1 -1
- package/modules/datablocksAnalyticsAdapter.js +1 -1
- package/modules/datablocksBidAdapter.js +1 -1
- package/modules/datawrkzBidAdapter.js +633 -0
- package/modules/datawrkzBidAdapter.md +160 -0
- package/modules/dfpAdServerVideo.js +2 -2
- package/modules/dgkeywordRtdProvider.js +1 -1
- package/modules/dspxBidAdapter.js +1 -1
- package/modules/e_volutionBidAdapter.js +3 -3
- package/modules/ebdrBidAdapter.js +1 -1
- package/modules/emx_digitalBidAdapter.js +1 -1
- package/modules/eplanningAnalyticsAdapter.js +1 -1
- package/modules/eplanningBidAdapter.js +3 -3
- package/modules/fabrickIdSystem.js +2 -2
- package/modules/fintezaAnalyticsAdapter.js +2 -2
- package/modules/freewheel-sspBidAdapter.js +1 -1
- package/modules/gamoshiBidAdapter.js +1 -1
- package/modules/getintentBidAdapter.js +1 -1
- package/modules/gjirafaBidAdapter.js +2 -2
- package/modules/goldbachBidAdapter.js +8 -8
- package/modules/gothamadsBidAdapter.js +2 -2
- package/modules/gridBidAdapter.js +1 -1
- package/modules/gridNMBidAdapter.js +1 -1
- package/modules/gumgumBidAdapter.js +3 -3
- package/modules/h12mediaBidAdapter.js +1 -1
- package/modules/hadronAnalyticsAdapter.js +3 -3
- package/modules/hadronRtdProvider.js +1 -1
- package/modules/id5AnalyticsAdapter.js +2 -2
- package/modules/impactifyBidAdapter.js +1 -1
- package/modules/improvedigitalBidAdapter.js +5 -2
- package/modules/imuIdSystem.js +40 -28
- package/modules/imuIdSystem.md +1 -0
- package/modules/inskinBidAdapter.js +1 -1
- package/modules/integr8BidAdapter.js +2 -2
- package/modules/intentIqIdSystem.js +2 -2
- package/modules/interactiveOffersBidAdapter.js +1 -1
- package/modules/invisiblyAnalyticsAdapter.js +1 -1
- package/modules/iqmBidAdapter.js +1 -1
- package/modules/ixBidAdapter.js +15 -15
- package/modules/kargoAnalyticsAdapter.js +1 -1
- package/modules/kargoBidAdapter.js +4 -5
- package/modules/konduitAnalyticsAdapter.js +1 -1
- package/modules/krushmediaBidAdapter.js +2 -2
- package/modules/kueezBidAdapter.js +2 -2
- package/modules/lassoBidAdapter.js +3 -3
- package/modules/livewrappedAnalyticsAdapter.js +4 -4
- package/modules/liveyieldAnalyticsAdapter.js +1 -1
- package/modules/lkqdBidAdapter.js +3 -3
- package/modules/loganBidAdapter.js +2 -2
- package/modules/luponmediaBidAdapter.js +3 -3
- package/modules/malltvAnalyticsAdapter.js +1 -1
- package/modules/malltvBidAdapter.js +2 -2
- package/modules/marsmediaAnalyticsAdapter.js +1 -1
- package/modules/mediafuseBidAdapter.js +8 -8
- package/modules/mediakeysBidAdapter.js +2 -2
- package/modules/medianetAnalyticsAdapter.js +1 -1
- package/modules/merkleIdSystem.js +2 -2
- package/modules/mgidBidAdapter.js +2 -2
- package/modules/microadBidAdapter.js +1 -1
- package/modules/mobfoxpbBidAdapter.js +2 -2
- package/modules/newspassidBidAdapter.js +1 -1
- package/modules/nextMillenniumBidAdapter.js +21 -2
- package/modules/nobidBidAdapter.js +3 -3
- package/modules/novatiqIdSystem.js +1 -1
- package/modules/oguryBidAdapter.js +1 -1
- package/modules/ooloAnalyticsAdapter.js +1 -1
- package/modules/open8BidAdapter.js +1 -1
- package/modules/openwebBidAdapter.js +1 -1
- package/modules/openxAnalyticsAdapter.js +6 -745
- package/modules/openxAnalyticsAdapter.md +4 -0
- package/modules/openxBidAdapter.js +3 -5
- package/modules/openxOrtbBidAdapter.js +8 -4
- package/modules/operaadsBidAdapter.js +1 -1
- package/modules/optimonAnalyticsAdapter.js +1 -1
- package/modules/ozoneBidAdapter.js +102 -271
- package/modules/ozoneBidAdapter.md +37 -0
- package/modules/pianoDmpAnalyticsAdapter.js +1 -1
- package/modules/pixfutureBidAdapter.js +1 -1
- package/modules/prebidServerBidAdapter/index.js +7 -7
- package/modules/prebidmanagerAnalyticsAdapter.js +2 -2
- package/modules/priceFloors.js +1 -1
- package/modules/pubmaticAnalyticsAdapter.js +2 -2
- package/modules/pubmaticBidAdapter.js +28 -8
- package/modules/pubperfAnalyticsAdapter.js +1 -1
- package/modules/pubstackAnalyticsAdapter.js +1 -1
- package/modules/pubwiseAnalyticsAdapter.js +2 -2
- package/modules/pubwiseBidAdapter.js +3 -3
- package/modules/pubxBidAdapter.js +1 -1
- package/modules/pubxaiAnalyticsAdapter.js +3 -3
- package/modules/pulsepointAnalyticsAdapter.js +1 -1
- package/modules/pulsepointBidAdapter.js +1 -1
- package/modules/quantcastIdSystem.js +1 -1
- package/modules/radsBidAdapter.js +1 -1
- package/modules/realvuAnalyticsAdapter.js +1 -1
- package/modules/relaidoBidAdapter.js +23 -18
- package/modules/relevantAnalyticsAdapter.js +1 -1
- package/modules/revcontentBidAdapter.js +1 -1
- package/modules/richaudienceBidAdapter.js +1 -1
- package/modules/riseBidAdapter.js +8 -5
- package/modules/riseBidAdapter.md +3 -1
- package/modules/rivrAnalyticsAdapter.js +1 -1
- package/modules/roxotAnalyticsAdapter.js +1 -1
- package/modules/rtbhouseBidAdapter.js +1 -1
- package/modules/rubiconAnalyticsAdapter.js +1 -1
- package/modules/rubiconBidAdapter.js +2 -2
- package/modules/scaleableAnalyticsAdapter.js +1 -1
- package/modules/schain.js +1 -1
- package/modules/sharethroughAnalyticsAdapter.js +1 -1
- package/modules/sharethroughBidAdapter.js +3 -3
- package/modules/shinezBidAdapter.js +2 -2
- package/modules/showheroes-bsBidAdapter.js +131 -49
- package/modules/showheroes-bsBidAdapter.md +49 -0
- package/modules/sigmoidAnalyticsAdapter.js +1 -1
- package/modules/sirdataRtdProvider.js +3 -3
- package/modules/sizeMappingV2.js +1 -1
- package/modules/smaatoBidAdapter.js +2 -2
- package/modules/smartxBidAdapter.js +2 -2
- package/modules/snigelBidAdapter.js +150 -0
- package/modules/snigelBidAdapter.md +46 -0
- package/modules/sonobiAnalyticsAdapter.js +2 -2
- package/modules/sonobiBidAdapter.js +3 -3
- package/modules/sovrnAnalyticsAdapter.js +1 -1
- package/modules/spotxBidAdapter.js +5 -5
- package/modules/sspBCBidAdapter.js +15 -18
- package/modules/staqAnalyticsAdapter.js +2 -2
- package/modules/synacormediaBidAdapter.js +1 -1
- package/modules/taboolaBidAdapter.js +1 -1
- package/modules/tappxBidAdapter.js +4 -4
- package/modules/targetVideoBidAdapter.js +1 -1
- package/modules/terceptAnalyticsAdapter.js +1 -1
- package/modules/theAdxBidAdapter.js +2 -2
- package/modules/tpmnBidAdapter.js +1 -1
- package/modules/trionBidAdapter.js +2 -2
- package/modules/tripleliftBidAdapter.js +46 -20
- package/modules/trustpidSystem.js +2 -2
- package/modules/ttdBidAdapter.js +41 -26
- package/modules/ttdBidAdapter.md +4 -10
- package/modules/ucfunnelAnalyticsAdapter.js +1 -1
- package/modules/underdogmediaBidAdapter.js +1 -1
- package/modules/userId/eids.js +5 -0
- package/modules/userId/index.js +11 -7
- package/modules/vdoaiBidAdapter.js +1 -1
- package/modules/vidazooBidAdapter.js +9 -5
- package/modules/videoheroesBidAdapter.js +1 -1
- package/modules/vidoomyBidAdapter.js +1 -1
- package/modules/visxBidAdapter.js +1 -1
- package/modules/vrtcalBidAdapter.js +1 -1
- package/modules/weboramaRtdProvider.js +3 -3
- package/modules/winrBidAdapter.js +1 -1
- package/modules/yahoosspBidAdapter.js +4 -3
- package/modules/yandexBidAdapter.js +1 -1
- package/modules/yieldmoBidAdapter.js +3 -3
- package/modules/yieldoneAnalyticsAdapter.js +1 -1
- package/modules/yieldoneBidAdapter.js +2 -2
- package/modules/yuktamediaAnalyticsAdapter.js +1 -1
- package/modules/zeta_global_sspAnalyticsAdapter.js +1 -1
- package/modules/zeta_global_sspBidAdapter.js +25 -22
- package/package.json +4 -3
- package/src/Renderer.js +1 -1
- package/src/adapterManager.js +3 -3
- package/src/adapters/bidderFactory.js +1 -0
- package/src/auction.js +2 -2
- package/src/bidfactory.js +1 -1
- package/src/config.js +7 -7
- package/src/native.js +53 -58
- package/src/sizeMapping.js +1 -1
- package/src/targeting.js +1 -1
- package/src/userSync.js +1 -1
- package/src/utils.js +1 -1
- package/test/mocks/analyticsStub.js +1 -1
- package/test/spec/AnalyticsAdapter_spec.js +1 -1
- package/test/spec/config_spec.js +4 -0
- package/test/spec/modules/adagioBidAdapter_spec.js +2 -0
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +7 -3
- package/test/spec/modules/adtelligentBidAdapter_spec.js +1 -0
- package/test/spec/modules/adtrgtmeBidAdapter_spec.js +802 -0
- package/test/spec/modules/adyoulikeBidAdapter_spec.js +8 -3
- package/test/spec/modules/andBeyondMediaBidAdapter_spec.js +400 -0
- package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +17 -1
- package/test/spec/modules/boldwinBidAdapter_spec.js +2 -1
- package/test/spec/modules/browsiRtdProvider_spec.js +40 -1
- package/test/spec/modules/c1xBidAdapter_spec.js +189 -0
- package/test/spec/modules/cleanioRtdProvider_spec.js +23 -0
- package/test/spec/modules/concertAnalyticsAdapter_spec.js +2 -1
- package/test/spec/modules/consumableBidAdapter_spec.js +139 -0
- package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
- package/test/spec/modules/criteoBidAdapter_spec.js +169 -38
- package/test/spec/modules/datawrkzBidAdapter_spec.js +656 -0
- package/test/spec/modules/eids_spec.js +32 -0
- package/test/spec/modules/eplanningAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/fintezaAnalyticsAdapter_spec.js +2 -1
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +4 -4
- package/test/spec/modules/imuIdSystem_spec.js +20 -4
- package/test/spec/modules/invisiblyAnalyticsAdapter_spec.js +8 -3
- package/test/spec/modules/kargoBidAdapter_spec.js +11 -2
- package/test/spec/modules/konduitAnalyticsAdapter_spec.js +2 -1
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +17 -0
- package/test/spec/modules/openxAnalyticsAdapter_spec.js +6 -638
- package/test/spec/modules/openxOrtbBidAdapter_spec.js +32 -1
- package/test/spec/modules/optimonAnalyticsAdapter_spec.js +2 -1
- package/test/spec/modules/ozoneBidAdapter_spec.js +367 -511
- package/test/spec/modules/pianoDmpAnalyticsAdapter_spec.js +4 -0
- package/test/spec/modules/prebidmanagerAnalyticsAdapter_spec.js +2 -1
- package/test/spec/modules/pubmaticBidAdapter_spec.js +111 -5
- package/test/spec/modules/pubperfAnalyticsAdapter_spec.js +2 -1
- package/test/spec/modules/pubstackAnalyticsAdapter_spec.js +2 -1
- package/test/spec/modules/pubwiseAnalyticsAdapter_spec.js +3 -3
- package/test/spec/modules/relaidoBidAdapter_spec.js +40 -33
- package/test/spec/modules/riseBidAdapter_spec.js +17 -0
- package/test/spec/modules/sharethroughBidAdapter_spec.js +10 -1
- package/test/spec/modules/showheroes-bsBidAdapter_spec.js +173 -2
- package/test/spec/modules/sigmoidAnalyticsAdapter_spec.js +1 -1
- package/test/spec/modules/snigelBidAdapter_spec.js +296 -0
- package/test/spec/modules/sovrnAnalyticsAdapter_spec.js +2 -1
- package/test/spec/modules/sspBCBidAdapter_spec.js +2 -2
- package/test/spec/modules/tripleliftBidAdapter_spec.js +378 -10
- package/test/spec/modules/ttdBidAdapter_spec.js +113 -34
- package/test/spec/modules/userId_spec.js +38 -2
- package/test/spec/modules/vidazooBidAdapter_spec.js +39 -24
- package/test/spec/modules/yahoosspBidAdapter_spec.js +13 -0
- package/test/spec/modules/yieldoneAnalyticsAdapter_spec.js +5 -1
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +61 -2
- package/test/spec/native_spec.js +96 -0
- package/test/spec/unit/core/bidderFactory_spec.js +27 -2
- package/webpack.conf.js +47 -11
|
@@ -47,5 +47,22 @@ Module that connects to boldwin demand sources
|
|
|
47
47
|
}
|
|
48
48
|
]
|
|
49
49
|
}
|
|
50
|
+
// Will return static test banner
|
|
51
|
+
{
|
|
52
|
+
code: 'endpointId_0',
|
|
53
|
+
mediaTypes: {
|
|
54
|
+
banner: {
|
|
55
|
+
sizes: [[300, 250]],
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
bids: [
|
|
59
|
+
{
|
|
60
|
+
bidder: 'boldwin',
|
|
61
|
+
params: {
|
|
62
|
+
endpointId: 'testBanner',
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
},
|
|
50
67
|
];
|
|
51
68
|
```
|
|
@@ -57,6 +57,16 @@ export function addBrowsiTag(data) {
|
|
|
57
57
|
return script;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
export function sendPageviewEvent(eventType) {
|
|
61
|
+
if (eventType === 'PAGEVIEW') {
|
|
62
|
+
events.emit(CONSTANTS.EVENTS.BILLABLE_EVENT, {
|
|
63
|
+
vendor: 'browsi',
|
|
64
|
+
type: 'pageview',
|
|
65
|
+
billingId: generateUUID()
|
|
66
|
+
})
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
60
70
|
/**
|
|
61
71
|
* collect required data from page
|
|
62
72
|
* send data to browsi server to get predictions
|
|
@@ -93,7 +103,7 @@ export function collectData() {
|
|
|
93
103
|
function waitForData(callback) {
|
|
94
104
|
if (_browsiData) {
|
|
95
105
|
_dataReadyCallback = null;
|
|
96
|
-
callback(
|
|
106
|
+
callback();
|
|
97
107
|
} else {
|
|
98
108
|
_dataReadyCallback = callback;
|
|
99
109
|
}
|
|
@@ -102,7 +112,7 @@ function waitForData(callback) {
|
|
|
102
112
|
export function setData(data) {
|
|
103
113
|
_browsiData = data;
|
|
104
114
|
if (isFn(_dataReadyCallback)) {
|
|
105
|
-
_dataReadyCallback(
|
|
115
|
+
_dataReadyCallback();
|
|
106
116
|
_dataReadyCallback = null;
|
|
107
117
|
}
|
|
108
118
|
}
|
|
@@ -262,10 +272,11 @@ function getPredictionsFromServer(url) {
|
|
|
262
272
|
try {
|
|
263
273
|
const data = JSON.parse(response);
|
|
264
274
|
if (data && data.p && data.kn) {
|
|
265
|
-
setData({p: data.p, kn: data.kn, pmd: data.pmd});
|
|
275
|
+
setData({p: data.p, kn: data.kn, pmd: data.pmd, bet: data.bet});
|
|
266
276
|
} else {
|
|
267
277
|
setData({});
|
|
268
278
|
}
|
|
279
|
+
sendPageviewEvent(data.bet);
|
|
269
280
|
addBrowsiTag(data);
|
|
270
281
|
} catch (err) {
|
|
271
282
|
logError('unable to parse data');
|
|
@@ -336,19 +347,22 @@ export const browsiSubmodule = {
|
|
|
336
347
|
|
|
337
348
|
function getTargetingData(uc, c, us, a) {
|
|
338
349
|
const targetingData = getRTD(uc);
|
|
339
|
-
const auctionId = a.auctionId
|
|
350
|
+
const auctionId = a.auctionId;
|
|
351
|
+
const sendAdRequestEvent = _browsiData['bet'] === 'AD_REQUEST';
|
|
340
352
|
uc.forEach(auc => {
|
|
341
353
|
if (isNumber(_ic[auc])) {
|
|
342
354
|
_ic[auc] = _ic[auc] + 1;
|
|
343
355
|
}
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
356
|
+
if (sendAdRequestEvent) {
|
|
357
|
+
const transactionId = a.adUnits.find(adUnit => adUnit.code === auc).transactionId;
|
|
358
|
+
events.emit(CONSTANTS.EVENTS.BILLABLE_EVENT, {
|
|
359
|
+
vendor: 'browsi',
|
|
360
|
+
type: 'adRequest',
|
|
361
|
+
billingId: generateUUID(),
|
|
362
|
+
transactionId: transactionId,
|
|
363
|
+
auctionId: auctionId
|
|
364
|
+
})
|
|
365
|
+
}
|
|
352
366
|
});
|
|
353
367
|
logInfo('Browsi RTD provider returned targeting data', targetingData, 'for', uc)
|
|
354
368
|
return targetingData;
|
|
@@ -2,7 +2,7 @@ import { deepClone, logInfo, logError } from '../src/utils.js';
|
|
|
2
2
|
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
|
-
import adapter from '../
|
|
5
|
+
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
6
6
|
import CONSTANTS from '../src/constants.json';
|
|
7
7
|
import adapterManager from '../src/adapterManager.js';
|
|
8
8
|
import { getStorageManager } from '../src/storageManager.js';
|
|
@@ -266,7 +266,7 @@ ascAdapter.getVisitorData = function (data = {}) {
|
|
|
266
266
|
}
|
|
267
267
|
|
|
268
268
|
const { clientId } = initOptions;
|
|
269
|
-
var userId = storage.getDataFromLocalStorage('userId')
|
|
269
|
+
var userId = storage.getDataFromLocalStorage('userId');
|
|
270
270
|
if (!userId) {
|
|
271
271
|
userId = generateUid();
|
|
272
272
|
storage.setDataInLocalStorage('userId', userId);
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
|
+
import { logInfo, logError } from '../src/utils.js';
|
|
3
|
+
import { BANNER } from '../src/mediaTypes.js';
|
|
4
|
+
|
|
5
|
+
const BIDDER_CODE = 'c1x';
|
|
6
|
+
const URL = 'https://hb-stg.c1exchange.com/ht';
|
|
7
|
+
// const PIXEL_ENDPOINT = '//px.c1exchange.com/pubpixel/';
|
|
8
|
+
const LOG_MSG = {
|
|
9
|
+
invalidBid: 'C1X: [ERROR] bidder returns an invalid bid',
|
|
10
|
+
noSite: 'C1X: [ERROR] no site id supplied',
|
|
11
|
+
noBid: 'C1X: [INFO] creating a NO bid for Adunit: ',
|
|
12
|
+
bidWin: 'C1X: [INFO] creating a bid for Adunit: '
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Adapter for requesting bids from C1X header tag server.
|
|
17
|
+
* v3.1 (c) C1X Inc., 2018
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
export const c1xAdapter = {
|
|
21
|
+
code: BIDDER_CODE,
|
|
22
|
+
supportedMediaTypes: [BANNER],
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Determines whether or not the given bid request is valid.
|
|
26
|
+
*
|
|
27
|
+
* @param {object} bid The bid to validate.
|
|
28
|
+
* @return boolean True if this is a valid bid, and false otherwise.
|
|
29
|
+
*/
|
|
30
|
+
// check the bids sent to c1x bidder
|
|
31
|
+
isBidRequestValid: function (bid) {
|
|
32
|
+
if (bid.bidder !== BIDDER_CODE || typeof bid.params === 'undefined') {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
if (typeof bid.params.placementId === 'undefined') {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return true;
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Make a server request from the list of BidRequests.
|
|
43
|
+
*
|
|
44
|
+
* @param {BidRequest[]} validBidRequests A non-empty list of valid bid requests that should be sent to the Server.
|
|
45
|
+
* @return ServerRequest Info describing the request to the server.
|
|
46
|
+
*/
|
|
47
|
+
buildRequests: function (validBidRequests, bidderRequest) {
|
|
48
|
+
let payload = {};
|
|
49
|
+
let tagObj = {};
|
|
50
|
+
let bidRequest = [];
|
|
51
|
+
const adunits = validBidRequests.length;
|
|
52
|
+
const rnd = new Date().getTime();
|
|
53
|
+
const c1xTags = validBidRequests.map(bidToTag);
|
|
54
|
+
const bidIdTags = validBidRequests.map(bidToShortTag); // include only adUnitCode and bidId from request obj
|
|
55
|
+
|
|
56
|
+
// flattened tags in a tag object
|
|
57
|
+
tagObj = c1xTags.reduce((current, next) => Object.assign(current, next));
|
|
58
|
+
|
|
59
|
+
payload = {
|
|
60
|
+
adunits: adunits.toString(),
|
|
61
|
+
rnd: rnd.toString(),
|
|
62
|
+
response: 'json',
|
|
63
|
+
compress: 'gzip'
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// for GDPR support
|
|
67
|
+
if (bidderRequest && bidderRequest.gdprConsent) {
|
|
68
|
+
payload['consent_string'] = bidderRequest.gdprConsent.consentString;
|
|
69
|
+
payload['consent_required'] = (typeof bidderRequest.gdprConsent.gdprApplies === 'boolean') ? bidderRequest.gdprConsent.gdprApplies.toString() : 'true'
|
|
70
|
+
;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
Object.assign(payload, tagObj);
|
|
74
|
+
let payloadString = stringifyPayload(payload);
|
|
75
|
+
// ServerRequest object
|
|
76
|
+
bidRequest.push({
|
|
77
|
+
method: 'GET',
|
|
78
|
+
url: URL,
|
|
79
|
+
data: payloadString,
|
|
80
|
+
bids: bidIdTags
|
|
81
|
+
});
|
|
82
|
+
return bidRequest;
|
|
83
|
+
},
|
|
84
|
+
|
|
85
|
+
interpretResponse: function (serverResponse, requests) {
|
|
86
|
+
serverResponse = serverResponse.body;
|
|
87
|
+
requests = requests.bids || [];
|
|
88
|
+
const currency = 'USD';
|
|
89
|
+
const bidResponses = [];
|
|
90
|
+
let netRevenue = false;
|
|
91
|
+
|
|
92
|
+
if (!serverResponse || serverResponse.error) {
|
|
93
|
+
let errorMessage = serverResponse.error;
|
|
94
|
+
logError(LOG_MSG.invalidBid + errorMessage);
|
|
95
|
+
return bidResponses;
|
|
96
|
+
} else {
|
|
97
|
+
serverResponse.forEach(bid => {
|
|
98
|
+
logInfo(bid)
|
|
99
|
+
if (bid.bid) {
|
|
100
|
+
if (bid.bidType === 'NET_BID') {
|
|
101
|
+
netRevenue = !netRevenue;
|
|
102
|
+
}
|
|
103
|
+
const curBid = {
|
|
104
|
+
requestId: bid.bidId,
|
|
105
|
+
width: bid.width,
|
|
106
|
+
height: bid.height,
|
|
107
|
+
cpm: bid.cpm,
|
|
108
|
+
ad: bid.ad,
|
|
109
|
+
creativeId: bid.crid,
|
|
110
|
+
currency: currency,
|
|
111
|
+
ttl: 300,
|
|
112
|
+
netRevenue: netRevenue
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
if (bid.dealId) {
|
|
116
|
+
curBid['dealId'] = bid.dealId
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
for (let i = 0; i < requests.length; i++) {
|
|
120
|
+
if (bid.adId === requests[i].adUnitCode) {
|
|
121
|
+
curBid.requestId = requests[i].bidId;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
logInfo(LOG_MSG.bidWin + bid.adId + ' size: ' + curBid.width + 'x' + curBid.height);
|
|
125
|
+
bidResponses.push(curBid);
|
|
126
|
+
} else {
|
|
127
|
+
// no bid
|
|
128
|
+
logInfo(LOG_MSG.noBid + bid.adId);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return bidResponses;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function bidToTag(bid, index) {
|
|
139
|
+
const tag = {};
|
|
140
|
+
const adIndex = 'a' + (index + 1).toString(); // ad unit id for c1x
|
|
141
|
+
const sizeKey = adIndex + 's';
|
|
142
|
+
const priceKey = adIndex + 'p';
|
|
143
|
+
const dealKey = adIndex + 'd';
|
|
144
|
+
// TODO: Multiple Floor Prices
|
|
145
|
+
|
|
146
|
+
const sizesArr = bid.sizes;
|
|
147
|
+
const floorPriceMap = getBidFloor(bid);
|
|
148
|
+
|
|
149
|
+
const dealId = bid.params.dealId || '';
|
|
150
|
+
|
|
151
|
+
if (dealId) {
|
|
152
|
+
tag[dealKey] = dealId;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
tag[adIndex] = bid.adUnitCode;
|
|
156
|
+
tag[sizeKey] = sizesArr.reduce((prev, current) => prev + (prev === '' ? '' : ',') + current.join('x'), '');
|
|
157
|
+
const newSizeArr = tag[sizeKey].split(',');
|
|
158
|
+
if (floorPriceMap) {
|
|
159
|
+
newSizeArr.forEach(size => {
|
|
160
|
+
if (size in floorPriceMap) {
|
|
161
|
+
tag[priceKey] = floorPriceMap[size].toString();
|
|
162
|
+
} // we only accept one cpm price in floorPriceMap
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
if (bid.params.pageurl) {
|
|
166
|
+
tag['pageurl'] = bid.params.pageurl;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return tag;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
function getBidFloor(bidRequest) {
|
|
173
|
+
let floorInfo = {};
|
|
174
|
+
|
|
175
|
+
if (typeof bidRequest.getFloor === 'function') {
|
|
176
|
+
floorInfo = bidRequest.getFloor({
|
|
177
|
+
currency: 'USD',
|
|
178
|
+
mediaType: 'banner',
|
|
179
|
+
size: '*',
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
let floor =
|
|
184
|
+
floorInfo.floor ||
|
|
185
|
+
bidRequest.params.bidfloor ||
|
|
186
|
+
bidRequest.params.floorPriceMap ||
|
|
187
|
+
0;
|
|
188
|
+
|
|
189
|
+
return floor;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
function bidToShortTag(bid) {
|
|
193
|
+
const tag = {};
|
|
194
|
+
tag.adUnitCode = bid.adUnitCode;
|
|
195
|
+
tag.bidId = bid.bidId;
|
|
196
|
+
return tag;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
function stringifyPayload(payload) {
|
|
200
|
+
let payloadString = [];
|
|
201
|
+
for (var key in payload) {
|
|
202
|
+
if (payload.hasOwnProperty(key)) {
|
|
203
|
+
payloadString.push(key + '=' + payload[key]);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return payloadString.join('&');
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
registerBidder(c1xAdapter);
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
Module Name: C1X Bidder Adapter
|
|
4
|
+
Module Type: Bidder Adapter
|
|
5
|
+
Maintainer: vishnu@c1exchange.com
|
|
6
|
+
|
|
7
|
+
# Description
|
|
8
|
+
|
|
9
|
+
Module that connects to C1X's demand sources
|
|
10
|
+
|
|
11
|
+
# Test Parameters
|
|
12
|
+
```
|
|
13
|
+
var adUnits = [{
|
|
14
|
+
code: 'test-div-1',
|
|
15
|
+
mediaTypes: {
|
|
16
|
+
banner: {
|
|
17
|
+
sizes: [[750, 200]],
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
bids: [{
|
|
21
|
+
bidder: 'c1x',
|
|
22
|
+
params: {
|
|
23
|
+
placementId: 'div-gpt-ad-1654594619717-0',
|
|
24
|
+
'floorPriceMap': {
|
|
25
|
+
'300x250': 4.35
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}]
|
|
29
|
+
}, {
|
|
30
|
+
code: 'test-div-2',
|
|
31
|
+
mediaTypes: {
|
|
32
|
+
banner: {
|
|
33
|
+
sizes: [[300, 250], [750, 200]],
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
bids: [{
|
|
37
|
+
bidder: 'c1x',
|
|
38
|
+
params: {
|
|
39
|
+
placementId: 'div-gpt-ad-1654940683355-0',
|
|
40
|
+
'floorPriceMap': {
|
|
41
|
+
'300x250': 4.35
|
|
42
|
+
}
|
|
43
|
+
dealId: '1233' // optional parameter
|
|
44
|
+
}
|
|
45
|
+
}]
|
|
46
|
+
}];
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
pbjs.bidderSettings = {
|
|
50
|
+
c1x: {
|
|
51
|
+
siteId: 999,
|
|
52
|
+
adserverTargeting: [{
|
|
53
|
+
key: "hb_bidder",
|
|
54
|
+
val: function(bidResponse) {
|
|
55
|
+
return bidResponse.bidderCode;
|
|
56
|
+
}
|
|
57
|
+
}, {
|
|
58
|
+
key: "hb_adid",
|
|
59
|
+
val: function(bidResponse) {
|
|
60
|
+
return bidResponse.adId;
|
|
61
|
+
}
|
|
62
|
+
}, {
|
|
63
|
+
key: "hb_pb",
|
|
64
|
+
val: function(bidResponse) {
|
|
65
|
+
return bidResponse.pbLg;
|
|
66
|
+
}
|
|
67
|
+
}]
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
import { submodule } from '../src/hook.js';
|
|
10
10
|
import { logError, generateUUID, insertElement } from '../src/utils.js';
|
|
11
|
+
import * as events from '../src/events.js';
|
|
12
|
+
import CONSTANTS from '../src/constants.json';
|
|
11
13
|
|
|
12
14
|
// ============================ MODULE STATE ===============================
|
|
13
15
|
|
|
@@ -147,6 +149,26 @@ function readConfig(config) {
|
|
|
147
149
|
}
|
|
148
150
|
}
|
|
149
151
|
|
|
152
|
+
/**
|
|
153
|
+
* The function to be called upon module init
|
|
154
|
+
* Defined as a variable to be able to reset it naturally
|
|
155
|
+
*/
|
|
156
|
+
let startBillableEvents = function() {
|
|
157
|
+
// Upon clean.io submodule initialization, every winner bid is considered to be protected
|
|
158
|
+
// and therefore, subjected to billing
|
|
159
|
+
events.on(CONSTANTS.EVENTS.BID_WON, winnerBidResponse => {
|
|
160
|
+
events.emit(CONSTANTS.EVENTS.BILLABLE_EVENT, {
|
|
161
|
+
vendor: 'clean.io',
|
|
162
|
+
billingId: generateUUID(),
|
|
163
|
+
type: 'impression',
|
|
164
|
+
// TODO: if absolutely crucial, winnerBidResponse may be used
|
|
165
|
+
// to track down auctionId and transactionId
|
|
166
|
+
// However, those seem to be of importance for Demand Managers,
|
|
167
|
+
// while these billable events are for publishers
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
150
172
|
// ============================ MODULE REGISTRATION ===============================
|
|
151
173
|
|
|
152
174
|
/**
|
|
@@ -160,6 +182,13 @@ function beforeInit() {
|
|
|
160
182
|
try {
|
|
161
183
|
readConfig(config);
|
|
162
184
|
onModuleInit();
|
|
185
|
+
|
|
186
|
+
// Subscribing once to ensure no duplicate events
|
|
187
|
+
// in case module initialization code runs multiple times
|
|
188
|
+
// This should have been a part of submodule definition, but well...
|
|
189
|
+
// The assumption here is that in production init() will be called exactly once
|
|
190
|
+
startBillableEvents();
|
|
191
|
+
startBillableEvents = () => {};
|
|
163
192
|
return true;
|
|
164
193
|
} catch (err) {
|
|
165
194
|
if (err instanceof ConfigError) {
|
|
@@ -105,8 +105,8 @@ export const spec = {
|
|
|
105
105
|
request.ccpa = bidderRequest.uspConsent;
|
|
106
106
|
}
|
|
107
107
|
if (bidderRequest.gdprConsent) {
|
|
108
|
-
request.gdpr_consent = bidderRequest.gdprConsent.consentString || 'ALL'
|
|
109
|
-
request.gdpr_require = bidderRequest.gdprConsent.gdprApplies ? 1 : 0
|
|
108
|
+
request.gdpr_consent = bidderRequest.gdprConsent.consentString || 'ALL';
|
|
109
|
+
request.gdpr_require = bidderRequest.gdprConsent.gdprApplies ? 1 : 0;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { logMessage } from '../src/utils.js';
|
|
2
2
|
import {ajax} from '../src/ajax.js';
|
|
3
|
-
import adapter from '../
|
|
3
|
+
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
4
4
|
import CONSTANTS from '../src/constants.json';
|
|
5
5
|
import adapterManager from '../src/adapterManager.js';
|
|
6
6
|
|
|
@@ -44,7 +44,7 @@ function lookupUspConsent({onSuccess, onError}) {
|
|
|
44
44
|
let uspapiFrame;
|
|
45
45
|
let uspapiFunction;
|
|
46
46
|
|
|
47
|
-
while (
|
|
47
|
+
while (true) {
|
|
48
48
|
try {
|
|
49
49
|
if (typeof f.__uspapi === 'function') {
|
|
50
50
|
uspapiFunction = f.__uspapi;
|
|
@@ -304,4 +304,4 @@ function enableConsentManagement(configFromUser = false) {
|
|
|
304
304
|
loadConsentData(); // immediately look up consent data to make it available without requiring an auction
|
|
305
305
|
}
|
|
306
306
|
config.getConfig('consentManagement', config => setConsentConfig(config.consentManagement));
|
|
307
|
-
setTimeout(() => !addedConsentHook && enableConsentManagement())
|
|
307
|
+
setTimeout(() => !addedConsentHook && enableConsentManagement());
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { logWarn, createTrackPixelHtml, deepAccess, isArray, deepSetValue } from '../src/utils.js';
|
|
2
2
|
import {config} from '../src/config.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
|
+
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
4
5
|
|
|
5
6
|
const BIDDER_CODE = 'consumable';
|
|
6
7
|
|
|
7
|
-
const BASE_URI = 'https://e.serverbid.com/api/v2'
|
|
8
|
+
const BASE_URI = 'https://e.serverbid.com/api/v2';
|
|
8
9
|
|
|
9
10
|
let siteId = 0;
|
|
10
11
|
let bidder = 'consumable';
|
|
11
12
|
|
|
12
13
|
export const spec = {
|
|
13
14
|
code: BIDDER_CODE,
|
|
15
|
+
supportedMediaTypes: [BANNER, VIDEO],
|
|
14
16
|
|
|
15
17
|
/**
|
|
16
18
|
* Determines whether or not the given bid request is valid.
|
|
@@ -82,6 +84,10 @@ export const spec = {
|
|
|
82
84
|
adTypes: bid.adTypes || getSize(sizes)
|
|
83
85
|
}, bid.params);
|
|
84
86
|
|
|
87
|
+
if (bid.mediaTypes.video && bid.mediaTypes.video.playerSize) {
|
|
88
|
+
placement.video = bid.mediaTypes.video;
|
|
89
|
+
}
|
|
90
|
+
|
|
85
91
|
if (placement.networkId && placement.siteId && placement.unitId && placement.unitName) {
|
|
86
92
|
data.placements.push(placement);
|
|
87
93
|
}
|
|
@@ -155,6 +161,13 @@ export const spec = {
|
|
|
155
161
|
|
|
156
162
|
if (decision.mediaType) {
|
|
157
163
|
bid.meta.mediaType = decision.mediaType;
|
|
164
|
+
|
|
165
|
+
if (decision.mediaType === 'video') {
|
|
166
|
+
bid.mediaType = 'video';
|
|
167
|
+
bid.vastUrl = decision.vastUrl || undefined;
|
|
168
|
+
bid.vastXml = decision.vastXml || undefined;
|
|
169
|
+
bid.videoCacheKey = decision.uuid || undefined;
|
|
170
|
+
}
|
|
158
171
|
}
|
|
159
172
|
|
|
160
173
|
bidResponses.push(bid);
|
|
@@ -240,8 +253,13 @@ function getSize(sizes) {
|
|
|
240
253
|
}
|
|
241
254
|
|
|
242
255
|
function retrieveAd(decision, unitId, unitName) {
|
|
243
|
-
let ad
|
|
244
|
-
|
|
256
|
+
let ad;
|
|
257
|
+
if (decision.contents && decision.contents[0]) {
|
|
258
|
+
ad = decision.contents[0].body + createTrackPixelHtml(decision.impressionUrl);
|
|
259
|
+
}
|
|
260
|
+
if (decision.vastXml) {
|
|
261
|
+
ad = decision.vastXml;
|
|
262
|
+
}
|
|
245
263
|
return ad;
|
|
246
264
|
}
|
|
247
265
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
import * as utils from '../src/utils.js';
|
|
2
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
3
4
|
import { VIDEO, BANNER } from '../src/mediaTypes.js';
|
|
4
5
|
import { config } from '../src/config.js';
|
|
@@ -25,11 +26,11 @@ export const spec = {
|
|
|
25
26
|
|
|
26
27
|
getMediaType: function (bidRequest) {
|
|
27
28
|
if (bidRequest == null) return BANNER;
|
|
28
|
-
return !deepAccess(bidRequest, 'mediaTypes.video') ? BANNER : VIDEO;
|
|
29
|
+
return !utils.deepAccess(bidRequest, 'mediaTypes.video') ? BANNER : VIDEO;
|
|
29
30
|
},
|
|
30
31
|
|
|
31
32
|
getPlayerSize: function (bidRequest) {
|
|
32
|
-
var playerSize = deepAccess(bidRequest, 'mediaTypes.video.playerSize');
|
|
33
|
+
var playerSize = utils.deepAccess(bidRequest, 'mediaTypes.video.playerSize');
|
|
33
34
|
if (playerSize == null) return [640, 440];
|
|
34
35
|
if (playerSize[0] != null) playerSize = playerSize[0];
|
|
35
36
|
if (playerSize == null || playerSize[0] == null || playerSize[1] == null) return [640, 440];
|
|
@@ -46,15 +47,14 @@ export const spec = {
|
|
|
46
47
|
|
|
47
48
|
for (var i = 0; i < validBidRequests.length; i++) {
|
|
48
49
|
var bidRequest = validBidRequests[i];
|
|
49
|
-
|
|
50
|
-
var
|
|
51
|
-
var e = getBidIdParameter('endpoint', bidRequest.params);
|
|
50
|
+
var referer = encodeURIComponent(bidderRequest.refererInfo.referer);
|
|
51
|
+
var e = utils.getBidIdParameter('endpoint', bidRequest.params);
|
|
52
52
|
var ENDPOINT = e == 'dev' ? ENDPOINT_DEV : e == 'staging' ? ENDPOINT_STAGING : ENDPOINT_PRODUCTION;
|
|
53
53
|
var mediaType = spec.getMediaType(bidRequest);
|
|
54
54
|
var playerSize = spec.getPlayerSize(bidRequest);
|
|
55
55
|
var videoArgs = '&fv=0' + (playerSize ? ('&w=' + playerSize[0] + '&h=' + playerSize[1]) : '');
|
|
56
56
|
var url = ENDPOINT + '?media=' + mediaType + (mediaType == VIDEO ? videoArgs : '') +
|
|
57
|
-
'&json=c_b&mv=1&poolid=' + getBidIdParameter('placementId', bidRequest.params) +
|
|
57
|
+
'&json=c_b&mv=1&poolid=' + utils.getBidIdParameter('placementId', bidRequest.params) +
|
|
58
58
|
'&reachedTop=' + encodeURIComponent(bidderRequest.refererInfo.reachedTop) +
|
|
59
59
|
'&requestid=' + bidRequest.bidId +
|
|
60
60
|
'&referer=' + encodeURIComponent(referer);
|
|
@@ -73,7 +73,7 @@ export const spec = {
|
|
|
73
73
|
fixedEncodeURIComponent(node.name || '') + ',' +
|
|
74
74
|
fixedEncodeURIComponent(node.domain || '');
|
|
75
75
|
}
|
|
76
|
-
url += '&schain=' + schainString
|
|
76
|
+
url += '&schain=' + schainString;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
if (bidderRequest.gdprConsent) {
|
|
@@ -93,10 +93,20 @@ export const spec = {
|
|
|
93
93
|
url += '&tfcd=' + (config.getConfig('coppa') ? 1 : 0);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
let body = {};
|
|
97
|
+
let adUnitCode = bidRequest.adUnitCode;
|
|
98
|
+
if (adUnitCode) {
|
|
99
|
+
body.adUnitCode = adUnitCode;
|
|
100
|
+
}
|
|
101
|
+
if (mediaType == VIDEO) {
|
|
102
|
+
body.video = utils.deepAccess(bidRequest, 'mediaTypes.video');
|
|
103
|
+
}
|
|
104
|
+
|
|
96
105
|
requests.push({
|
|
97
|
-
method: '
|
|
106
|
+
method: 'POST',
|
|
98
107
|
url: url,
|
|
99
108
|
bidRequest: bidRequest,
|
|
109
|
+
data: body
|
|
100
110
|
});
|
|
101
111
|
}
|
|
102
112
|
|
|
@@ -117,13 +127,13 @@ export const spec = {
|
|
|
117
127
|
var raw = serverResponse.body[i];
|
|
118
128
|
var rawBid = raw.creatives[0];
|
|
119
129
|
if (!rawBid) {
|
|
120
|
-
logWarn('cpmstarBidAdapter: server response failed check');
|
|
130
|
+
utils.logWarn('cpmstarBidAdapter: server response failed check');
|
|
121
131
|
return;
|
|
122
132
|
}
|
|
123
133
|
var cpm = (parseFloat(rawBid.cpm) || 0);
|
|
124
134
|
|
|
125
135
|
if (!cpm) {
|
|
126
|
-
logWarn('cpmstarBidAdapter: server response failed check. Missing cpm')
|
|
136
|
+
utils.logWarn('cpmstarBidAdapter: server response failed check. Missing cpm');
|
|
127
137
|
return;
|
|
128
138
|
}
|
|
129
139
|
|
|
@@ -142,7 +152,7 @@ export const spec = {
|
|
|
142
152
|
};
|
|
143
153
|
|
|
144
154
|
if (rawBid.hasOwnProperty('dealId')) {
|
|
145
|
-
bidResponse.dealId = rawBid.dealId
|
|
155
|
+
bidResponse.dealId = rawBid.dealId;
|
|
146
156
|
}
|
|
147
157
|
|
|
148
158
|
if (mediaType == BANNER && rawBid.code) {
|
|
@@ -156,7 +166,7 @@ export const spec = {
|
|
|
156
166
|
bidResponse.mediaType = VIDEO;
|
|
157
167
|
bidResponse.vastXml = rawBid.creativemacros.HTML5VID_VASTSTRING;
|
|
158
168
|
} else {
|
|
159
|
-
return logError('bad response', rawBid);
|
|
169
|
+
return utils.logError('bad response', rawBid);
|
|
160
170
|
}
|
|
161
171
|
|
|
162
172
|
bidResponses.push(bidResponse);
|