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
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { isFn, deepAccess, logMessage, logError } from '../src/utils.js';
|
|
2
|
+
|
|
3
|
+
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
|
+
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
5
|
+
import { config } from '../src/config.js';
|
|
6
|
+
|
|
7
|
+
const BIDDER_CODE = 'beyondmedia';
|
|
8
|
+
const AD_URL = 'https://backend.andbeyond.media/pbjs';
|
|
9
|
+
const SYNC_URL = 'https://cookies.andbeyond.media';
|
|
10
|
+
|
|
11
|
+
function isBidResponseValid(bid) {
|
|
12
|
+
if (!bid.requestId || !bid.cpm || !bid.creativeId || !bid.ttl || !bid.currency) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
switch (bid.mediaType) {
|
|
17
|
+
case BANNER:
|
|
18
|
+
return Boolean(bid.width && bid.height && bid.ad);
|
|
19
|
+
case VIDEO:
|
|
20
|
+
return Boolean(bid.vastUrl || bid.vastXml);
|
|
21
|
+
case NATIVE:
|
|
22
|
+
return Boolean(bid.native && bid.native.impressionTrackers && bid.native.impressionTrackers.length);
|
|
23
|
+
default:
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function getPlacementReqData(bid) {
|
|
29
|
+
const { params, bidId, mediaTypes } = bid;
|
|
30
|
+
const schain = bid.schain || {};
|
|
31
|
+
const { placementId } = params;
|
|
32
|
+
const bidfloor = getBidFloor(bid);
|
|
33
|
+
|
|
34
|
+
const placement = {
|
|
35
|
+
bidId,
|
|
36
|
+
schain,
|
|
37
|
+
bidfloor
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
placement.placementId = placementId;
|
|
41
|
+
placement.type = 'publisher';
|
|
42
|
+
|
|
43
|
+
if (mediaTypes && mediaTypes[BANNER]) {
|
|
44
|
+
placement.adFormat = BANNER;
|
|
45
|
+
placement.sizes = mediaTypes[BANNER].sizes;
|
|
46
|
+
} else if (mediaTypes && mediaTypes[VIDEO]) {
|
|
47
|
+
placement.adFormat = VIDEO;
|
|
48
|
+
placement.playerSize = mediaTypes[VIDEO].playerSize;
|
|
49
|
+
placement.minduration = mediaTypes[VIDEO].minduration;
|
|
50
|
+
placement.maxduration = mediaTypes[VIDEO].maxduration;
|
|
51
|
+
placement.mimes = mediaTypes[VIDEO].mimes;
|
|
52
|
+
placement.protocols = mediaTypes[VIDEO].protocols;
|
|
53
|
+
placement.startdelay = mediaTypes[VIDEO].startdelay;
|
|
54
|
+
placement.placement = mediaTypes[VIDEO].placement;
|
|
55
|
+
placement.skip = mediaTypes[VIDEO].skip;
|
|
56
|
+
placement.skipafter = mediaTypes[VIDEO].skipafter;
|
|
57
|
+
placement.minbitrate = mediaTypes[VIDEO].minbitrate;
|
|
58
|
+
placement.maxbitrate = mediaTypes[VIDEO].maxbitrate;
|
|
59
|
+
placement.delivery = mediaTypes[VIDEO].delivery;
|
|
60
|
+
placement.playbackmethod = mediaTypes[VIDEO].playbackmethod;
|
|
61
|
+
placement.api = mediaTypes[VIDEO].api;
|
|
62
|
+
placement.linearity = mediaTypes[VIDEO].linearity;
|
|
63
|
+
} else if (mediaTypes && mediaTypes[NATIVE]) {
|
|
64
|
+
placement.native = mediaTypes[NATIVE];
|
|
65
|
+
placement.adFormat = NATIVE;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return placement;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function getBidFloor(bid) {
|
|
72
|
+
if (!isFn(bid.getFloor)) {
|
|
73
|
+
return deepAccess(bid, 'params.bidfloor', 0);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
try {
|
|
77
|
+
const bidFloor = bid.getFloor({
|
|
78
|
+
currency: 'USD',
|
|
79
|
+
mediaType: '*',
|
|
80
|
+
size: '*',
|
|
81
|
+
});
|
|
82
|
+
return bidFloor.floor;
|
|
83
|
+
} catch (err) {
|
|
84
|
+
logError(err);
|
|
85
|
+
return 0;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export const spec = {
|
|
90
|
+
code: BIDDER_CODE,
|
|
91
|
+
supportedMediaTypes: [BANNER, VIDEO, NATIVE],
|
|
92
|
+
|
|
93
|
+
isBidRequestValid: (bid = {}) => {
|
|
94
|
+
const { params, bidId, mediaTypes } = bid;
|
|
95
|
+
let valid = Boolean(bidId && params && params.placementId);
|
|
96
|
+
|
|
97
|
+
if (mediaTypes && mediaTypes[BANNER]) {
|
|
98
|
+
valid = valid && Boolean(mediaTypes[BANNER] && mediaTypes[BANNER].sizes);
|
|
99
|
+
} else if (mediaTypes && mediaTypes[VIDEO]) {
|
|
100
|
+
valid = valid && Boolean(mediaTypes[VIDEO] && mediaTypes[VIDEO].playerSize);
|
|
101
|
+
} else if (mediaTypes && mediaTypes[NATIVE]) {
|
|
102
|
+
valid = valid && Boolean(mediaTypes[NATIVE]);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return valid;
|
|
106
|
+
},
|
|
107
|
+
|
|
108
|
+
buildRequests: (validBidRequests = [], bidderRequest = {}) => {
|
|
109
|
+
let deviceWidth = 0;
|
|
110
|
+
let deviceHeight = 0;
|
|
111
|
+
|
|
112
|
+
let winLocation;
|
|
113
|
+
try {
|
|
114
|
+
const winTop = window.top;
|
|
115
|
+
deviceWidth = winTop.screen.width;
|
|
116
|
+
deviceHeight = winTop.screen.height;
|
|
117
|
+
winLocation = winTop.location;
|
|
118
|
+
} catch (e) {
|
|
119
|
+
logMessage(e);
|
|
120
|
+
winLocation = window.location;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const refferUrl = bidderRequest.refererInfo && bidderRequest.refererInfo.page;
|
|
124
|
+
let refferLocation;
|
|
125
|
+
try {
|
|
126
|
+
refferLocation = refferUrl && new URL(refferUrl);
|
|
127
|
+
} catch (e) {
|
|
128
|
+
logMessage(e);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
let location = refferLocation || winLocation;
|
|
132
|
+
const language = (navigator && navigator.language) ? navigator.language.split('-')[0] : '';
|
|
133
|
+
const host = location.host;
|
|
134
|
+
const page = location.pathname;
|
|
135
|
+
const secure = location.protocol === 'https:' ? 1 : 0;
|
|
136
|
+
const placements = [];
|
|
137
|
+
const request = {
|
|
138
|
+
deviceWidth,
|
|
139
|
+
deviceHeight,
|
|
140
|
+
language,
|
|
141
|
+
secure,
|
|
142
|
+
host,
|
|
143
|
+
page,
|
|
144
|
+
placements,
|
|
145
|
+
coppa: config.getConfig('coppa') === true ? 1 : 0,
|
|
146
|
+
ccpa: bidderRequest.uspConsent || undefined,
|
|
147
|
+
gdpr: bidderRequest.gdprConsent || undefined,
|
|
148
|
+
tmax: config.getConfig('bidderTimeout')
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
const len = validBidRequests.length;
|
|
152
|
+
for (let i = 0; i < len; i++) {
|
|
153
|
+
const bid = validBidRequests[i];
|
|
154
|
+
placements.push(getPlacementReqData(bid));
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return {
|
|
158
|
+
method: 'POST',
|
|
159
|
+
url: AD_URL,
|
|
160
|
+
data: request
|
|
161
|
+
};
|
|
162
|
+
},
|
|
163
|
+
|
|
164
|
+
interpretResponse: (serverResponse) => {
|
|
165
|
+
let response = [];
|
|
166
|
+
for (let i = 0; i < serverResponse.body.length; i++) {
|
|
167
|
+
let resItem = serverResponse.body[i];
|
|
168
|
+
if (isBidResponseValid(resItem)) {
|
|
169
|
+
const advertiserDomains = resItem.adomain && resItem.adomain.length ? resItem.adomain : [];
|
|
170
|
+
resItem.meta = { ...resItem.meta, advertiserDomains };
|
|
171
|
+
|
|
172
|
+
response.push(resItem);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return response;
|
|
176
|
+
},
|
|
177
|
+
|
|
178
|
+
getUserSyncs: (syncOptions, serverResponses, gdprConsent, uspConsent) => {
|
|
179
|
+
let syncType = syncOptions.iframeEnabled ? 'iframe' : 'image';
|
|
180
|
+
let syncUrl = SYNC_URL + `/${syncType}?pbjs=1`;
|
|
181
|
+
if (gdprConsent && gdprConsent.consentString) {
|
|
182
|
+
if (typeof gdprConsent.gdprApplies === 'boolean') {
|
|
183
|
+
syncUrl += `&gdpr=${Number(gdprConsent.gdprApplies)}&gdpr_consent=${gdprConsent.consentString}`;
|
|
184
|
+
} else {
|
|
185
|
+
syncUrl += `&gdpr=0&gdpr_consent=${gdprConsent.consentString}`;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (uspConsent && uspConsent.consentString) {
|
|
189
|
+
syncUrl += `&ccpa_consent=${uspConsent.consentString}`;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const coppa = config.getConfig('coppa') ? 1 : 0;
|
|
193
|
+
syncUrl += `&coppa=${coppa}`;
|
|
194
|
+
|
|
195
|
+
return [{
|
|
196
|
+
type: syncType,
|
|
197
|
+
url: syncUrl
|
|
198
|
+
}];
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
registerBidder(spec);
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Overview
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
Module Name: AndBeyond.Media Bidder Adapter
|
|
5
|
+
Module Type: AndBeyond.Media Bidder Adapter
|
|
6
|
+
Maintainer: sysengg@andbeyond.media
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
# Description
|
|
10
|
+
|
|
11
|
+
Connects to AndBeyond.Media exchange for bids.
|
|
12
|
+
AndBeyond.Media bid adapter supports Banner, Video (instream and outstream) and Native.
|
|
13
|
+
|
|
14
|
+
# Test Parameters
|
|
15
|
+
```
|
|
16
|
+
var adUnits = [
|
|
17
|
+
// Will return static test banner
|
|
18
|
+
{
|
|
19
|
+
code: 'adunit1',
|
|
20
|
+
mediaTypes: {
|
|
21
|
+
banner: {
|
|
22
|
+
sizes: [ [300, 250], [320, 50] ],
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
bids: [
|
|
26
|
+
{
|
|
27
|
+
bidder: 'beyondmedia',
|
|
28
|
+
params: {
|
|
29
|
+
placementId: 'testBanner',
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
code: 'addunit2',
|
|
36
|
+
mediaTypes: {
|
|
37
|
+
video: {
|
|
38
|
+
playerSize: [ [640, 480] ],
|
|
39
|
+
context: 'instream',
|
|
40
|
+
minduration: 5,
|
|
41
|
+
maxduration: 60,
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
bids: [
|
|
45
|
+
{
|
|
46
|
+
bidder: 'beyondmedia',
|
|
47
|
+
params: {
|
|
48
|
+
placementId: 'testVideo',
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
code: 'addunit3',
|
|
55
|
+
mediaTypes: {
|
|
56
|
+
native: {
|
|
57
|
+
title: {
|
|
58
|
+
required: true
|
|
59
|
+
},
|
|
60
|
+
body: {
|
|
61
|
+
required: true
|
|
62
|
+
},
|
|
63
|
+
icon: {
|
|
64
|
+
required: true,
|
|
65
|
+
size: [64, 64]
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
bids: [
|
|
70
|
+
{
|
|
71
|
+
bidder: 'beyondmedia',
|
|
72
|
+
params: {
|
|
73
|
+
placementId: 'testNative',
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
}
|
|
78
|
+
];
|
|
79
|
+
```
|
|
@@ -203,7 +203,7 @@ function interpretResponse(serverResponse, bidRequest) {
|
|
|
203
203
|
let xml = new window.DOMParser().parseFromString(xmlStr, 'text/xml');
|
|
204
204
|
if (xml && xml.getElementsByTagName('parsererror').length == 0) {
|
|
205
205
|
let cpmData = getCpmData(xml);
|
|
206
|
-
if (cpmData
|
|
206
|
+
if (cpmData.cpm > 0) {
|
|
207
207
|
bidResponse.requestId = bidRequest.data.bidId;
|
|
208
208
|
bidResponse.ad = '';
|
|
209
209
|
bidResponse.cpm = cpmData.cpm;
|
|
@@ -306,7 +306,7 @@ function getUserSyncs(syncOptions, serverResponses) {
|
|
|
306
306
|
export const spec = {
|
|
307
307
|
code: BIDDER_CODE,
|
|
308
308
|
gvlid: GVLID,
|
|
309
|
-
aliases: ['avantisvideo', 'selectmediavideo', 'vidcrunch', 'openwebvideo', 'didnavideo', 'ottadvisors'],
|
|
309
|
+
aliases: ['avantisvideo', 'selectmediavideo', 'vidcrunch', 'openwebvideo', 'didnavideo', 'ottadvisors', 'pgammedia'],
|
|
310
310
|
supportedMediaTypes: [VIDEO, BANNER],
|
|
311
311
|
isBidRequestValid,
|
|
312
312
|
buildRequests,
|
|
@@ -103,7 +103,7 @@ export const spec = {
|
|
|
103
103
|
|
|
104
104
|
var pageUrl = _extractTopWindowUrlFromBidderRequest(bidderRequest);
|
|
105
105
|
payload.site = {};
|
|
106
|
-
payload.site.page = pageUrl
|
|
106
|
+
payload.site.page = pageUrl;
|
|
107
107
|
payload.site.referrer = _extractTopWindowReferrerFromBidderRequest(bidderRequest);
|
|
108
108
|
// TODO: does it make sense to fall back to window.location for the domain?
|
|
109
109
|
payload.site.hostname = bidderRequest.refererInfo?.domain || parseDomain(pageUrl);
|
|
@@ -124,12 +124,12 @@ export const spec = {
|
|
|
124
124
|
|
|
125
125
|
// Apply schain.
|
|
126
126
|
if (schain) {
|
|
127
|
-
payload.schain = schain
|
|
127
|
+
payload.schain = schain;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
// Apply eids.
|
|
131
131
|
if (eids) {
|
|
132
|
-
payload.eids = eids
|
|
132
|
+
payload.eids = eids;
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
// Apply geo
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {ajax} from '../src/ajax.js';
|
|
2
|
-
import adapter from '../
|
|
2
|
+
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
3
3
|
import CONSTANTS from '../src/constants.json';
|
|
4
4
|
import adapterManager from '../src/adapterManager.js';
|
|
5
5
|
import {getGlobal} from '../src/prebidGlobal.js';
|
|
@@ -215,7 +215,7 @@ export const spec = {
|
|
|
215
215
|
payload['iab_support'] = {
|
|
216
216
|
omidpn: 'Appnexus',
|
|
217
217
|
omidpv: '$prebid.version$'
|
|
218
|
-
}
|
|
218
|
+
};
|
|
219
219
|
}
|
|
220
220
|
|
|
221
221
|
if (member > 0) {
|
|
@@ -223,7 +223,7 @@ export const spec = {
|
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
if (appDeviceObjBid) {
|
|
226
|
-
payload.device = appDeviceObj
|
|
226
|
+
payload.device = appDeviceObj;
|
|
227
227
|
}
|
|
228
228
|
if (appIdObjBid) {
|
|
229
229
|
payload.app = appIdObj;
|
|
@@ -265,7 +265,7 @@ export const spec = {
|
|
|
265
265
|
}
|
|
266
266
|
|
|
267
267
|
if (bidderRequest && bidderRequest.uspConsent) {
|
|
268
|
-
payload.us_privacy = bidderRequest.uspConsent
|
|
268
|
+
payload.us_privacy = bidderRequest.uspConsent;
|
|
269
269
|
}
|
|
270
270
|
|
|
271
271
|
if (bidderRequest && bidderRequest.refererInfo) {
|
|
@@ -275,7 +275,7 @@ export const spec = {
|
|
|
275
275
|
rd_top: bidderRequest.refererInfo.reachedTop,
|
|
276
276
|
rd_ifs: bidderRequest.refererInfo.numIframes,
|
|
277
277
|
rd_stk: bidderRequest.refererInfo.stack.map((url) => encodeURIComponent(url)).join(',')
|
|
278
|
-
}
|
|
278
|
+
};
|
|
279
279
|
let pubPageUrl = bidderRequest.refererInfo.canonicalUrl;
|
|
280
280
|
if (isStr(pubPageUrl) && pubPageUrl !== '') {
|
|
281
281
|
refererinfo.rd_can = pubPageUrl;
|
|
@@ -410,7 +410,7 @@ export const spec = {
|
|
|
410
410
|
if (includes(s2sCfg.bidders, adUnit.bids[0].bidder)) {
|
|
411
411
|
s2sEndpointUrl = deepAccess(s2sCfg, 'endpoint.p1Consent');
|
|
412
412
|
}
|
|
413
|
-
})
|
|
413
|
+
});
|
|
414
414
|
}
|
|
415
415
|
|
|
416
416
|
if (s2sEndpointUrl && s2sEndpointUrl.match('/openrtb2/prebid')) {
|
|
@@ -455,7 +455,7 @@ export const spec = {
|
|
|
455
455
|
reloadViewabilityScriptWithCorrectParameters(bid);
|
|
456
456
|
}
|
|
457
457
|
}
|
|
458
|
-
}
|
|
458
|
+
};
|
|
459
459
|
|
|
460
460
|
function isPopulatedArray(arr) {
|
|
461
461
|
return !!(isArray(arr) && arr.length > 0);
|
|
@@ -473,7 +473,7 @@ function reloadViewabilityScriptWithCorrectParameters(bid) {
|
|
|
473
473
|
if (viewJsPayload) {
|
|
474
474
|
let prebidParams = 'pbjs_adid=' + bid.adId + ';pbjs_auc=' + bid.adUnitCode;
|
|
475
475
|
|
|
476
|
-
let jsTrackerSrc = getViewabilityScriptUrlFromPayload(viewJsPayload)
|
|
476
|
+
let jsTrackerSrc = getViewabilityScriptUrlFromPayload(viewJsPayload);
|
|
477
477
|
|
|
478
478
|
let newJsTrackerSrc = jsTrackerSrc.replace('dom_id=%native_dom_id%', prebidParams);
|
|
479
479
|
|
|
@@ -567,7 +567,7 @@ function formatRequest(payload, bidderRequest) {
|
|
|
567
567
|
if (getParameterByName('apn_test').toUpperCase() === 'TRUE' || config.getConfig('apn_test') === true) {
|
|
568
568
|
options.customHeaders = {
|
|
569
569
|
'X-Is-Test': 1
|
|
570
|
-
}
|
|
570
|
+
};
|
|
571
571
|
}
|
|
572
572
|
|
|
573
573
|
if (payload.tags.length > MAX_IMPS_PER_REQUEST) {
|
|
@@ -805,7 +805,7 @@ function bidToTag(bid) {
|
|
|
805
805
|
tag.code = bid.params.invCode;
|
|
806
806
|
}
|
|
807
807
|
tag.allow_smaller_sizes = bid.params.allowSmallerSizes || false;
|
|
808
|
-
tag.use_pmt_rule = bid.params.usePaymentRule || false
|
|
808
|
+
tag.use_pmt_rule = bid.params.usePaymentRule || false;
|
|
809
809
|
tag.prebid = true;
|
|
810
810
|
tag.disable_psa = true;
|
|
811
811
|
let bidFloor = getBidFloor(bid);
|
|
@@ -267,7 +267,7 @@ var dsuModule = (function() {
|
|
|
267
267
|
|
|
268
268
|
return {
|
|
269
269
|
readOrCreateDsu: readOrCreateDsu
|
|
270
|
-
}
|
|
270
|
+
};
|
|
271
271
|
})();
|
|
272
272
|
|
|
273
273
|
function serializeSizes(sizes) {
|
|
@@ -343,7 +343,7 @@ function getBids(bids) {
|
|
|
343
343
|
const bidId = bid.bidId;
|
|
344
344
|
|
|
345
345
|
let mediaType = '';
|
|
346
|
-
const mediaTypes = Object.keys(bid.mediaTypes)
|
|
346
|
+
const mediaTypes = Object.keys(bid.mediaTypes);
|
|
347
347
|
switch (mediaTypes[0]) {
|
|
348
348
|
case 'video':
|
|
349
349
|
mediaType = 'v';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { logError, logInfo } from '../src/utils.js';
|
|
2
|
-
import adapter from '../
|
|
2
|
+
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
3
3
|
import CONSTANTS from '../src/constants.json';
|
|
4
4
|
import adaptermanager from '../src/adapterManager.js';
|
|
5
5
|
import {ajax} from '../src/ajax.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import adapter from '../
|
|
1
|
+
import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js';
|
|
2
2
|
import adapterManager from '../src/adapterManager.js';
|
|
3
3
|
import CONSTANTS from '../src/constants.json';
|
|
4
4
|
import { ajax } from '../src/ajax.js';
|
|
@@ -10,10 +10,14 @@ const {
|
|
|
10
10
|
EVENTS: {
|
|
11
11
|
AUCTION_END,
|
|
12
12
|
BID_WON,
|
|
13
|
+
BID_RESPONSE,
|
|
14
|
+
BID_REQUESTED,
|
|
13
15
|
}
|
|
14
16
|
} = CONSTANTS;
|
|
15
17
|
|
|
18
|
+
let saveEvents = {}
|
|
16
19
|
let allEvents = {}
|
|
20
|
+
let auctionEnd = {}
|
|
17
21
|
let initOptions = {}
|
|
18
22
|
let endpoint = 'https://default'
|
|
19
23
|
let objectToSearchForBidderCode = ['bidderRequests', 'bidsReceived', 'noBids']
|
|
@@ -22,38 +26,87 @@ function getAdapterNameForAlias(aliasName) {
|
|
|
22
26
|
return adapterManager.aliasRegistry[aliasName] || aliasName;
|
|
23
27
|
}
|
|
24
28
|
|
|
25
|
-
function
|
|
29
|
+
function cleanArgObject(arg, removead) {
|
|
30
|
+
if (typeof arg['bidderCode'] == 'string') { arg['originalBidder'] = getAdapterNameForAlias(arg['bidderCode']); }
|
|
31
|
+
if (typeof arg['creativeId'] == 'number') {
|
|
32
|
+
arg['creativeId'] = arg['creativeId'].toString();
|
|
33
|
+
}
|
|
34
|
+
if (removead && typeof arg['ad'] != 'undefined') {
|
|
35
|
+
arg['ad'] = 'emptied';
|
|
36
|
+
}
|
|
37
|
+
if (typeof arg['gdprConsent'] != 'undefined' && typeof arg['gdprConsent']['vendorData'] != 'undefined') {
|
|
38
|
+
arg['gdprConsent']['vendorData'] = 'emptied';
|
|
39
|
+
}
|
|
40
|
+
return arg;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function cleanArgs(arg, removead) {
|
|
26
44
|
Object.keys(arg).forEach(key => {
|
|
27
|
-
arg[key]
|
|
28
|
-
if (typeof arg[key]['creativeId'] == 'number') { arg[key]['creativeId'] = arg[key]['creativeId'].toString(); }
|
|
45
|
+
arg[key] = cleanArgObject(arg[key], removead);
|
|
29
46
|
});
|
|
30
47
|
return arg
|
|
31
48
|
}
|
|
32
49
|
|
|
33
|
-
function checkBidderCode(args) {
|
|
50
|
+
function checkBidderCode(args, removead) {
|
|
34
51
|
if (typeof args == 'object') {
|
|
35
52
|
for (let i = 0; i < objectToSearchForBidderCode.length; i++) {
|
|
36
|
-
if (typeof args[objectToSearchForBidderCode[i]] == 'object') { args[objectToSearchForBidderCode[i]] =
|
|
53
|
+
if (typeof args[objectToSearchForBidderCode[i]] == 'object') { args[objectToSearchForBidderCode[i]] = cleanArgs(args[objectToSearchForBidderCode[i]], removead) }
|
|
37
54
|
}
|
|
38
55
|
}
|
|
39
56
|
if (typeof args['bidderCode'] == 'string') { args['originalBidder'] = getAdapterNameForAlias(args['bidderCode']); } else if (typeof args['bidder'] == 'string') { args['originalBidder'] = getAdapterNameForAlias(args['bidder']); }
|
|
40
57
|
if (typeof args['creativeId'] == 'number') { args['creativeId'] = args['creativeId'].toString(); }
|
|
58
|
+
|
|
41
59
|
return args
|
|
42
60
|
}
|
|
43
61
|
|
|
44
62
|
function addEvent(eventType, args) {
|
|
45
|
-
|
|
46
|
-
if (eventType && args) {
|
|
47
|
-
|
|
63
|
+
let argsCleaned;
|
|
64
|
+
if (eventType && args) {
|
|
65
|
+
if (allEvents[eventType] == undefined) { allEvents[eventType] = [] }
|
|
66
|
+
if (saveEvents[eventType] == undefined) { saveEvents[eventType] = [] }
|
|
67
|
+
argsCleaned = checkBidderCode(JSON.parse(JSON.stringify(args)), false);
|
|
68
|
+
allEvents[eventType].push(argsCleaned);
|
|
69
|
+
saveEvents[eventType].push(argsCleaned);
|
|
70
|
+
argsCleaned = checkBidderCode(JSON.parse(JSON.stringify(args)), true);
|
|
71
|
+
if (['auctionend', 'bidtimeout'].includes(eventType.toLowerCase())) {
|
|
72
|
+
if (auctionEnd[eventType] == undefined) { auctionEnd[eventType] = [] }
|
|
73
|
+
auctionEnd[eventType].push(argsCleaned);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
48
76
|
}
|
|
49
77
|
|
|
50
78
|
function handleBidWon(args) {
|
|
51
|
-
|
|
79
|
+
args = cleanArgObject(JSON.parse(JSON.stringify(args)), true);
|
|
80
|
+
let increment = args['cpm'];
|
|
81
|
+
if (typeof saveEvents['auctionEnd'] == 'object') {
|
|
82
|
+
for (let i = 0; i < saveEvents['auctionEnd'].length; i++) {
|
|
83
|
+
let tmpAuction = saveEvents['auctionEnd'][i];
|
|
84
|
+
if (tmpAuction['auctionId'] == args['auctionId'] && typeof tmpAuction['bidsReceived'] == 'object') {
|
|
85
|
+
for (let j = 0; j < tmpAuction['bidsReceived'].length; j++) {
|
|
86
|
+
let tmpBid = tmpAuction['bidsReceived'][j];
|
|
87
|
+
if (tmpBid['transactionId'] == args['transactionId'] && tmpBid['adId'] != args['adId']) {
|
|
88
|
+
if (args['cpm'] < tmpBid['cpm']) {
|
|
89
|
+
increment = 0;
|
|
90
|
+
} else if (increment > args['cpm'] - tmpBid['cpm']) {
|
|
91
|
+
increment = args['cpm'] - tmpBid['cpm'];
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
args['cpmIncrement'] = increment;
|
|
99
|
+
if (typeof saveEvents.bidRequested == 'object' && saveEvents.bidRequested.length > 0 && saveEvents.bidRequested[0].gdprConsent) { args.gdpr = saveEvents.bidRequested[0].gdprConsent; }
|
|
52
100
|
ajax(endpoint + '.bidwatch.io/analytics/bid_won', null, JSON.stringify(args), {method: 'POST', withCredentials: true});
|
|
53
101
|
}
|
|
54
102
|
|
|
55
103
|
function handleAuctionEnd() {
|
|
56
|
-
ajax(endpoint + '.bidwatch.io/analytics/auctions', null, JSON.stringify(
|
|
104
|
+
ajax(endpoint + '.bidwatch.io/analytics/auctions', null, JSON.stringify(auctionEnd), {method: 'POST', withCredentials: true});
|
|
105
|
+
auctionEnd = {}
|
|
106
|
+
if (typeof allEvents['bidResponse'] != 'undefined') {
|
|
107
|
+
for (let i = 0; i < allEvents['bidResponse'].length; i++) { ajax(endpoint + '.bidwatch.io/analytics/creatives', null, JSON.stringify(allEvents['bidResponse'][i]), {method: 'POST', withCredentials: true}); }
|
|
108
|
+
}
|
|
109
|
+
allEvents = {}
|
|
57
110
|
}
|
|
58
111
|
|
|
59
112
|
let bidwatchAnalytics = Object.assign(adapter({url, analyticsType}), {
|
|
@@ -61,14 +114,20 @@ let bidwatchAnalytics = Object.assign(adapter({url, analyticsType}), {
|
|
|
61
114
|
eventType,
|
|
62
115
|
args
|
|
63
116
|
}) {
|
|
64
|
-
addEvent(eventType, args);
|
|
65
117
|
switch (eventType) {
|
|
66
118
|
case AUCTION_END:
|
|
119
|
+
addEvent(eventType, args);
|
|
67
120
|
handleAuctionEnd();
|
|
68
121
|
break;
|
|
69
122
|
case BID_WON:
|
|
70
123
|
handleBidWon(args);
|
|
71
124
|
break;
|
|
125
|
+
case BID_RESPONSE:
|
|
126
|
+
addEvent(eventType, args);
|
|
127
|
+
break;
|
|
128
|
+
case BID_REQUESTED:
|
|
129
|
+
addEvent(eventType, args);
|
|
130
|
+
break;
|
|
72
131
|
}
|
|
73
132
|
}});
|
|
74
133
|
|
|
@@ -256,7 +256,7 @@ const addNativeParameters = bidRequest => {
|
|
|
256
256
|
wmin = sizes[0];
|
|
257
257
|
hmin = sizes[1];
|
|
258
258
|
}
|
|
259
|
-
asset[props.name] = {}
|
|
259
|
+
asset[props.name] = {};
|
|
260
260
|
if (bidParams.len) asset[props.name]['len'] = bidParams.len;
|
|
261
261
|
if (props.type) asset[props.name]['type'] = props.type;
|
|
262
262
|
if (wmin) asset[props.name]['wmin'] = wmin;
|
|
@@ -96,7 +96,7 @@ export function getKeywords() {
|
|
|
96
96
|
* @return {({cpm, netRevenue: boolean, requestId, width: number, currency, ttl: number, creativeId, height: number}&{mediaType: string, vastXml})|null}
|
|
97
97
|
*/
|
|
98
98
|
export const buildBid = (bidResponse) => {
|
|
99
|
-
const mediaType = deepAccess(bidResponse, 'creative.media_type')
|
|
99
|
+
const mediaType = deepAccess(bidResponse, 'creative.media_type');
|
|
100
100
|
if (!mediaType) return null;
|
|
101
101
|
|
|
102
102
|
let bid;
|
|
@@ -46,7 +46,7 @@ export const spec = {
|
|
|
46
46
|
supportedMediaTypes: [BANNER, VIDEO, NATIVE],
|
|
47
47
|
|
|
48
48
|
isBidRequestValid: (bid) => {
|
|
49
|
-
return Boolean(bid.bidId && bid.params && bid.params.placementId);
|
|
49
|
+
return Boolean(bid.bidId && bid.params && (bid.params.placementId || bid.params.endpointId));
|
|
50
50
|
},
|
|
51
51
|
|
|
52
52
|
buildRequests: (validBidRequests = [], bidderRequest) => {
|
|
@@ -57,7 +57,7 @@ export const spec = {
|
|
|
57
57
|
let location;
|
|
58
58
|
// TODO: this odd try-catch block was copied in several adapters; it doesn't seem to be correct for cross-origin
|
|
59
59
|
try {
|
|
60
|
-
location = new URL(bidderRequest.refererInfo.page)
|
|
60
|
+
location = new URL(bidderRequest.refererInfo.page);
|
|
61
61
|
winTop = window.top;
|
|
62
62
|
} catch (e) {
|
|
63
63
|
location = winTop.location;
|
|
@@ -78,23 +78,23 @@ export const spec = {
|
|
|
78
78
|
request.ccpa = bidderRequest.uspConsent;
|
|
79
79
|
}
|
|
80
80
|
if (bidderRequest.gdprConsent) {
|
|
81
|
-
request.gdpr = bidderRequest.gdprConsent
|
|
81
|
+
request.gdpr = bidderRequest.gdprConsent;
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
const len = validBidRequests.length;
|
|
85
85
|
|
|
86
86
|
for (let i = 0; i < len; i++) {
|
|
87
87
|
let bid = validBidRequests[i];
|
|
88
|
-
const { mediaTypes } = bid;
|
|
88
|
+
const { mediaTypes, params } = bid;
|
|
89
89
|
const placement = {};
|
|
90
90
|
let sizes;
|
|
91
91
|
if (mediaTypes) {
|
|
92
92
|
if (mediaTypes[BANNER] && mediaTypes[BANNER].sizes) {
|
|
93
93
|
placement.adFormat = BANNER;
|
|
94
|
-
sizes = mediaTypes[BANNER].sizes
|
|
94
|
+
sizes = mediaTypes[BANNER].sizes;
|
|
95
95
|
} else if (mediaTypes[VIDEO] && mediaTypes[VIDEO].playerSize) {
|
|
96
96
|
placement.adFormat = VIDEO;
|
|
97
|
-
sizes = mediaTypes[VIDEO].playerSize
|
|
97
|
+
sizes = mediaTypes[VIDEO].playerSize;
|
|
98
98
|
placement.minduration = mediaTypes[VIDEO].minduration;
|
|
99
99
|
placement.maxduration = mediaTypes[VIDEO].maxduration;
|
|
100
100
|
placement.mimes = mediaTypes[VIDEO].mimes;
|
|
@@ -114,9 +114,18 @@ export const spec = {
|
|
|
114
114
|
placement.native = mediaTypes[NATIVE];
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
|
+
|
|
118
|
+
const { placementId, endpointId } = params;
|
|
119
|
+
if (placementId) {
|
|
120
|
+
placement.placementId = placementId;
|
|
121
|
+
placement.type = 'publisher';
|
|
122
|
+
} else if (endpointId) {
|
|
123
|
+
placement.endpointId = endpointId;
|
|
124
|
+
placement.type = 'network';
|
|
125
|
+
}
|
|
126
|
+
|
|
117
127
|
placements.push({
|
|
118
128
|
...placement,
|
|
119
|
-
placementId: bid.params.placementId,
|
|
120
129
|
bidId: bid.bidId,
|
|
121
130
|
sizes: sizes || [],
|
|
122
131
|
wPlayer: sizes ? sizes[0] : 0,
|