prebid.js 7.43.0 → 7.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/acuityAdsBidAdapter.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/admixerIdSystem.js +1 -1
- package/dist/adnuntiusBidAdapter.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adqueryIdSystem.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adrinoBidAdapter.js +1 -1
- package/dist/adriverIdSystem.js +1 -1
- package/dist/adsinteractiveBidAdapter.js +1 -0
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/aidemBidAdapter.js +1 -1
- package/dist/airgridRtdProvider.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/akamaiDapRtdProvider.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/appushBidAdapter.js +1 -1
- package/dist/apstreamBidAdapter.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/bedigitechBidAdapter.js +1 -0
- package/dist/beyondmediaBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bluebillywigBidAdapter.js +1 -1
- package/dist/blueconicRtdProvider.js +1 -1
- package/dist/braveBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/brightcomBidAdapter.js +1 -1
- package/dist/brightcomSSPBidAdapter.js +1 -1
- package/dist/browsiRtdProvider.js +1 -1
- package/dist/byDataAnalyticsAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/coinzillaBidAdapter.js +1 -1
- package/dist/compassBidAdapter.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectIdSystem.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/contentexchangeBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/criteoIdSystem.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/czechAdIdSystem.js +1 -1
- package/dist/dacIdSystem.js +1 -1
- package/dist/deepintentDpesIdSystem.js +1 -1
- package/dist/dependencies.json +15 -0
- package/dist/discoveryBidAdapter.js +1 -1
- package/dist/domainOverrideToRootDomain.js +1 -0
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/fintezaAnalyticsAdapter.js +1 -1
- package/dist/fledgeForGpt.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/ftrackIdSystem.js +1 -1
- package/dist/gdprEnforcement.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/globalsunBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/gnetBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gravitoIdSystem.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -0
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/growthCodeAnalyticsAdapter.js +1 -1
- package/dist/growthCodeIdSystem.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hadronAnalyticsAdapter.js +1 -1
- package/dist/hadronIdSystem.js +1 -1
- package/dist/hadronRtdProvider.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/idWardRtdProvider.js +1 -1
- package/dist/identityLinkIdSystem.js +1 -1
- package/dist/idxIdSystem.js +1 -1
- package/dist/imRtdProvider.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/intentIqIdSystem.js +1 -1
- package/dist/invibesBidAdapter.js +1 -1
- package/dist/iqzoneBidAdapter.js +1 -1
- package/dist/ivsBidAdapter.js +1 -0
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/jwplayerVideoProvider.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/koblerBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/kueezRtbBidAdapter.js +1 -1
- package/dist/kulturemediaBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -1
- package/dist/liveIntentIdSystem.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/lotamePanoramaIdSystem.js +1 -1
- package/dist/luponmediaBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mathildeadsBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediagoBidAdapter.js +1 -1
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/merkleIdSystem.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/mgidRtdProvider.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/minutemediaplusBidAdapter.js +1 -1
- package/dist/mwOpenLinkIdSystem.js +1 -1
- package/dist/naveggIdSystem.js +1 -1
- package/dist/nexx360BidAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +232 -227
- package/dist/novatiqIdSystem.js +1 -1
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/onomagicBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/openxOrtbBidAdapter.js +1 -1
- package/dist/operaadsBidAdapter.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/ortbConverter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/permutiveRtdProvider.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +1 -1
- package/dist/prebidServerBidAdapter.js +1 -1
- package/dist/prebidmanagerAnalyticsAdapter.js +1 -1
- package/dist/pubCommonId.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxBidAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/quantcastIdSystem.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/realvuAnalyticsAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/roxotAnalyticsAdapter.js +1 -1
- package/dist/rtbhouseBidAdapter.js +1 -1
- package/dist/rtdModule.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharedIdSystem.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/sigmoidAnalyticsAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smarthubBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.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/stroeerCoreBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/teadsIdSystem.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/truereachBidAdapter.js +1 -1
- package/dist/trustpidSystem.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/validationFpdModule.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/videoheroesBidAdapter.js +1 -1
- package/dist/vidoomyBidAdapter.js +1 -1
- package/dist/visiblemeasuresBidAdapter.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vrtcalBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/weboramaRtdProvider.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/yieldoneBidAdapter.js +1 -1
- package/dist/yuktamediaAnalyticsAdapter.js +1 -1
- package/dist/zeotapIdPlusIdSystem.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/libraries/domainOverrideToRootDomain/index.js +39 -0
- package/libraries/ortbConverter/converter.js +3 -2
- package/modules/33acrossIdSystem.js +5 -2
- package/modules/acuityAdsBidAdapter.js +1 -1
- package/modules/adagioBidAdapter.js +3 -4
- package/modules/adkernelAdnAnalyticsAdapter.js +4 -2
- package/modules/admixerIdSystem.js +4 -2
- package/modules/adnuntiusBidAdapter.js +1 -1
- package/modules/adqueryBidAdapter.js +1 -1
- package/modules/adqueryIdSystem.js +2 -1
- package/modules/adrinoBidAdapter.js +24 -16
- package/modules/adriverIdSystem.js +3 -2
- package/modules/adsinteractiveBidAdapter.js +144 -0
- package/modules/adsinteractiveBidAdapter.md +31 -0
- package/modules/adyoulikeBidAdapter.js +2 -3
- package/modules/aidemBidAdapter.js +5 -0
- package/modules/airgridRtdProvider.js +4 -2
- package/modules/ajaBidAdapter.js +38 -16
- package/modules/akamaiDapRtdProvider.js +2 -1
- package/modules/amxBidAdapter.js +12 -10
- package/modules/amxIdSystem.js +23 -20
- package/modules/amxIdSystem.md +7 -7
- package/modules/appnexusBidAdapter.js +8 -8
- package/modules/appushBidAdapter.js +1 -1
- package/modules/apstreamBidAdapter.js +1 -1
- package/modules/atsAnalyticsAdapter.js +4 -2
- package/modules/audiencerunBidAdapter.js +9 -10
- package/modules/bedigitechBidAdapter.js +67 -0
- package/modules/bedigitechBidAdapter.md +32 -0
- package/modules/beyondmediaBidAdapter.js +1 -1
- package/modules/bluebillywigBidAdapter.js +2 -4
- package/modules/blueconicRtdProvider.js +2 -1
- package/modules/braveBidAdapter.js +1 -1
- package/modules/brightcomBidAdapter.js +1 -2
- package/modules/brightcomSSPBidAdapter.js +1 -2
- package/modules/browsiRtdProvider.js +4 -2
- package/modules/byDataAnalyticsAdapter.js +6 -3
- package/modules/coinzillaBidAdapter.js +1 -2
- package/modules/compassBidAdapter.js +1 -1
- package/modules/concertBidAdapter.js +14 -7
- package/modules/connectIdSystem.js +96 -21
- package/modules/connectIdSystem.md +6 -5
- package/modules/connectadBidAdapter.js +2 -4
- package/modules/contentexchangeBidAdapter.js +1 -1
- package/modules/craftBidAdapter.js +29 -24
- package/modules/criteoBidAdapter.js +4 -2
- package/modules/criteoIdSystem.js +6 -2
- package/modules/czechAdIdSystem.js +3 -2
- package/modules/dacIdSystem.js +4 -3
- package/modules/deepintentDpesIdSystem.js +3 -2
- package/modules/discoveryBidAdapter.js +1 -1
- package/modules/dspxBidAdapter.js +223 -15
- package/modules/fintezaAnalyticsAdapter.js +5 -3
- package/modules/fledgeForGpt.js +54 -6
- package/modules/freewheel-sspBidAdapter.js +8 -0
- package/modules/ftrackIdSystem.js +6 -6
- package/modules/gdprEnforcement.js +56 -68
- package/modules/glimpseBidAdapter.js +2 -6
- package/modules/globalsunBidAdapter.js +1 -1
- package/modules/gnetBidAdapter.js +1 -2
- package/modules/gravitoIdSystem.js +5 -3
- package/modules/greenbidsAnalyticsAdapter.js +181 -0
- package/modules/greenbidsAnalyticsAdapter.md +23 -0
- package/modules/gridBidAdapter.js +14 -8
- package/modules/gridNMBidAdapter.js +1 -1
- package/modules/growthCodeAnalyticsAdapter.js +3 -2
- package/modules/growthCodeIdSystem.js +21 -17
- package/modules/gumgumBidAdapter.js +8 -18
- package/modules/hadronAnalyticsAdapter.js +5 -3
- package/modules/hadronIdSystem.js +3 -1
- package/modules/hadronRtdProvider.js +4 -2
- package/modules/id5IdSystem.js +4 -2
- package/modules/idWardRtdProvider.js +2 -1
- package/modules/identityLinkIdSystem.js +5 -2
- package/modules/idxIdSystem.js +3 -2
- package/modules/imRtdProvider.js +3 -1
- package/modules/impactifyBidAdapter.js +2 -4
- package/modules/imuIdSystem.js +6 -3
- package/modules/insticatorBidAdapter.js +1 -1
- package/modules/intentIqIdSystem.js +3 -2
- package/modules/invibesBidAdapter.js +1 -1
- package/modules/iqzoneBidAdapter.js +1 -1
- package/modules/ivsBidAdapter.js +85 -0
- package/modules/ivsBidAdapter.md +34 -0
- package/modules/ixBidAdapter.js +43 -106
- package/modules/jixieBidAdapter.js +3 -6
- package/modules/jwplayerVideoProvider.js +25 -32
- package/modules/kargoBidAdapter.js +1 -1
- package/modules/koblerBidAdapter.js +1 -2
- package/modules/kueezBidAdapter.js +1 -1
- package/modules/kueezRtbBidAdapter.js +1 -1
- package/modules/liveIntentIdSystem.js +11 -2
- package/modules/lotamePanoramaIdSystem.js +3 -2
- package/modules/luponmediaBidAdapter.js +1 -1
- package/modules/magniteAnalyticsAdapter.js +101 -9
- package/modules/mathildeadsBidAdapter.js +1 -1
- package/modules/mediafuseBidAdapter.js +1 -1
- package/modules/mediagoBidAdapter.js +1 -1
- package/modules/mediakeysBidAdapter.js +2 -3
- package/modules/medianetBidAdapter.js +1 -1
- package/modules/merkleIdSystem.js +2 -1
- package/modules/mgidBidAdapter.js +179 -27
- package/modules/mgidRtdProvider.js +3 -1
- package/modules/minutemediaBidAdapter.js +1 -1
- package/modules/minutemediaplusBidAdapter.js +1 -1
- package/modules/mwOpenLinkIdSystem.js +3 -2
- package/modules/naveggIdSystem.js +3 -2
- package/modules/nexx360BidAdapter.js +0 -1
- package/modules/nobidBidAdapter.js +1 -1
- package/modules/novatiqIdSystem.js +6 -3
- package/modules/oguryBidAdapter.js +3 -2
- package/modules/onetagBidAdapter.js +1 -1
- package/modules/onomagicBidAdapter.js +1 -2
- package/modules/openxBidAdapter.js +192 -563
- package/modules/openxBidAdapter.md +22 -20
- package/modules/openxOrtbBidAdapter.js +24 -10
- package/modules/openxOrtbBidAdapter.md +11 -8
- package/modules/operaadsBidAdapter.js +1 -1
- package/modules/parrableIdSystem.js +4 -2
- package/modules/permutiveRtdProvider.js +2 -1
- package/modules/prebidServerBidAdapter/index.js +9 -3
- package/modules/prebidServerBidAdapter/ortbConverter.js +12 -2
- package/modules/prebidmanagerAnalyticsAdapter.js +3 -2
- package/modules/pubCommonId.js +6 -3
- package/modules/publinkIdSystem.js +2 -1
- package/modules/pubmaticAnalyticsAdapter.js +12 -1
- package/modules/pubmaticBidAdapter.js +193 -223
- package/modules/pubwiseAnalyticsAdapter.js +5 -3
- package/modules/pubxBidAdapter.js +5 -2
- package/modules/quantcastBidAdapter.js +1 -1
- package/modules/quantcastIdSystem.js +5 -3
- package/modules/realvuAnalyticsAdapter.js +6 -3
- package/modules/riseBidAdapter.js +1 -1
- package/modules/roxotAnalyticsAdapter.js +5 -2
- package/modules/rtbhouseBidAdapter.js +5 -3
- package/modules/rtdModule/index.js +3 -0
- package/modules/rubiconAnalyticsAdapter.js +3 -2
- package/modules/rubiconBidAdapter.js +1 -0
- package/modules/sharedIdSystem.js +16 -36
- package/modules/sharethroughBidAdapter.js +2 -3
- package/modules/shinezBidAdapter.js +1 -1
- package/modules/sigmoidAnalyticsAdapter.js +4 -2
- package/modules/smartadserverBidAdapter.js +2 -3
- package/modules/smarthubBidAdapter.js +1 -1
- package/modules/sovrnBidAdapter.js +2 -3
- package/modules/staqAnalyticsAdapter.js +5 -3
- package/modules/stroeerCoreBidAdapter.js +3 -2
- package/modules/synacormediaBidAdapter.js +1 -3
- package/modules/taboolaBidAdapter.js +4 -2
- package/modules/teadsBidAdapter.js +1 -1
- package/modules/teadsIdSystem.js +2 -1
- package/modules/tripleliftBidAdapter.js +1 -1
- package/modules/truereachBidAdapter.js +1 -2
- package/modules/trustpidSystem.js +3 -2
- package/modules/ttdBidAdapter.js +11 -5
- package/modules/uid2IdSystem.js +3 -2
- package/modules/undertoneBidAdapter.js +1 -0
- package/modules/userId/eids.js +18 -0
- package/modules/userId/eids.md +16 -0
- package/modules/userId/index.js +5 -2
- package/modules/validationFpdModule/index.js +3 -2
- package/modules/vidazooBidAdapter.js +14 -5
- package/modules/videoheroesBidAdapter.js +1 -1
- package/modules/vidoomyBidAdapter.js +51 -2
- package/modules/visiblemeasuresBidAdapter.js +1 -1
- package/modules/vrtcalBidAdapter.js +1 -1
- package/modules/weboramaRtdProvider.js +3 -1
- package/modules/yieldmoBidAdapter.js +2 -3
- package/modules/yieldoneBidAdapter.js +1 -1
- package/modules/yuktamediaAnalyticsAdapter.js +4 -2
- package/modules/zeotapIdPlusIdSystem.js +3 -2
- package/modules/zeta_global_sspBidAdapter.js +3 -0
- package/package.json +1 -1
- package/plugins/eslint/validateImports.js +13 -14
- package/plugins/pbjsGlobals.js +3 -1
- package/src/Renderer.js +2 -1
- package/src/activities/modules.js +5 -0
- package/src/adapterManager.js +4 -8
- package/src/adapters/bidderFactory.js +30 -16
- package/src/consentHandler.js +42 -0
- package/src/native.js +5 -1
- package/src/refererDetection.js +39 -21
- package/src/secureCreatives.js +2 -2
- package/src/storageManager.js +33 -47
- package/src/userSync.js +7 -4
- package/test/spec/auctionmanager_spec.js +2 -2
- package/test/spec/libraries/domainOverrideToRootDomain/index_spec.js +77 -0
- package/test/spec/modules/33acrossIdSystem_spec.js +1 -1
- package/test/spec/modules/acuityAdsBidAdapter_spec.js +2 -1
- package/test/spec/modules/adagioBidAdapter_spec.js +11 -17
- package/test/spec/modules/admixerIdSystem_spec.js +0 -3
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +6 -6
- package/test/spec/modules/adrinoBidAdapter_spec.js +65 -34
- package/test/spec/modules/adsinteractiveBidAdapter_spec.js +207 -0
- package/test/spec/modules/adyoulikeBidAdapter_spec.js +13 -11
- package/test/spec/modules/aidemBidAdapter_spec.js +72 -8
- package/test/spec/modules/amxBidAdapter_spec.js +4 -1
- package/test/spec/modules/amxIdSystem_spec.js +13 -26
- package/test/spec/modules/appushBidAdapter_spec.js +2 -1
- package/test/spec/modules/atsAnalyticsAdapter_spec.js +2 -2
- package/test/spec/modules/audiencerunBidAdapter_spec.js +8 -11
- package/test/spec/modules/bedigitechBidAdapter_spec.js +145 -0
- package/test/spec/modules/beyondmediaBidAdapter_spec.js +2 -1
- package/test/spec/modules/bluebillywigBidAdapter_spec.js +1 -3
- package/test/spec/modules/compassBidAdapter_spec.js +2 -1
- package/test/spec/modules/concertBidAdapter_spec.js +3 -8
- package/test/spec/modules/connectIdSystem_spec.js +420 -242
- package/test/spec/modules/connectadBidAdapter_spec.js +11 -3
- package/test/spec/modules/contentexchangeBidAdapter_spec.js +2 -1
- package/test/spec/modules/criteoBidAdapter_spec.js +29 -0
- package/test/spec/modules/criteoIdSystem_spec.js +38 -0
- package/test/spec/modules/datablocksBidAdapter_spec.js +0 -1
- package/test/spec/modules/dspxBidAdapter_spec.js +184 -13
- package/test/spec/modules/eids_spec.js +30 -0
- package/test/spec/modules/fledge_spec.js +173 -2
- package/test/spec/modules/freewheel-sspBidAdapter_spec.js +37 -0
- package/test/spec/modules/gdprEnforcement_spec.js +134 -164
- package/test/spec/modules/globalsunBidAdapter_spec.js +2 -1
- package/test/spec/modules/greenbidsAnalyticsAdapter_spec.js +418 -0
- package/test/spec/modules/gridBidAdapter_spec.js +9 -5
- package/test/spec/modules/growthCodeIdSystem_spec.js +2 -1
- package/test/spec/modules/id5IdSystem_spec.js +41 -4
- package/test/spec/modules/identityLinkIdSystem_spec.js +2 -2
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +10 -3
- package/test/spec/modules/iqzoneBidAdapter_spec.js +2 -1
- package/test/spec/modules/ivsBidAdapter_spec.js +197 -0
- package/test/spec/modules/ixBidAdapter_spec.js +84 -71
- package/test/spec/modules/jixieBidAdapter_spec.js +42 -60
- package/test/spec/modules/koblerBidAdapter_spec.js +0 -20
- package/test/spec/modules/liveIntentIdSystem_spec.js +10 -0
- package/test/spec/modules/luponmediaBidAdapter_spec.js +1 -1
- package/test/spec/modules/magniteAnalyticsAdapter_spec.js +129 -1
- package/test/spec/modules/mathildeadsBidAdapter_spec.js +2 -1
- package/test/spec/modules/mediakeysBidAdapter_spec.js +12 -16
- package/test/spec/modules/mgidBidAdapter_spec.js +184 -36
- package/test/spec/modules/oguryBidAdapter_spec.js +19 -4
- package/test/spec/modules/openxBidAdapter_spec.js +1157 -1936
- package/test/spec/modules/openxOrtbBidAdapter_spec.js +108 -50
- package/test/spec/modules/prebidServerBidAdapter_spec.js +68 -2
- package/test/spec/modules/publinkIdSystem_spec.js +3 -2
- package/test/spec/modules/pubmaticBidAdapter_spec.js +67 -10
- package/test/spec/modules/pubxBidAdapter_spec.js +10 -2
- package/test/spec/modules/realTimeDataModule_spec.js +22 -0
- package/test/spec/modules/realvuAnalyticsAdapter_spec.js +0 -1
- package/test/spec/modules/relaidoBidAdapter_spec.js +5 -5
- package/test/spec/modules/rubiconBidAdapter_spec.js +2 -1
- package/test/spec/modules/sharedIdSystem_spec.js +0 -46
- package/test/spec/modules/sharethroughBidAdapter_spec.js +99 -22
- package/test/spec/modules/smartadserverBidAdapter_spec.js +74 -12
- package/test/spec/modules/smarthubBidAdapter_spec.js +2 -1
- package/test/spec/modules/sovrnBidAdapter_spec.js +25 -6
- package/test/spec/modules/stroeerCoreBidAdapter_spec.js +13 -18
- package/test/spec/modules/synacormediaBidAdapter_spec.js +0 -26
- package/test/spec/modules/taboolaBidAdapter_spec.js +101 -0
- package/test/spec/modules/ttdBidAdapter_spec.js +25 -7
- package/test/spec/modules/userId_spec.js +68 -0
- package/test/spec/modules/vidazooBidAdapter_spec.js +13 -0
- package/test/spec/modules/videoModule/submodules/jwplayerVideoProvider_spec.js +17 -4
- package/test/spec/modules/vidoomyBidAdapter_spec.js +68 -0
- package/test/spec/modules/visiblemeasuresBidAdapter_spec.js +2 -1
- package/test/spec/modules/vrtcalBidAdapter_spec.js +3 -2
- package/test/spec/modules/yieldmoBidAdapter_spec.js +18 -2
- package/test/spec/modules/zeotapIdPlusIdSystem_spec.js +3 -2
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +8 -0
- package/test/spec/refererDetection_spec.js +56 -1
- package/test/spec/renderer_spec.js +1 -2
- package/test/spec/unit/core/adapterManager_spec.js +21 -58
- package/test/spec/unit/core/bidderFactory_spec.js +28 -10
- package/test/spec/unit/core/consentHandler_spec.js +29 -1
- package/test/spec/unit/core/storageManager_spec.js +31 -21
- package/test/spec/userSync_spec.js +2 -1
|
@@ -46,6 +46,54 @@ const isBidRequestValid = bid => {
|
|
|
46
46
|
return true;
|
|
47
47
|
};
|
|
48
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Schain Object needed encodes URI Component with exlamation mark
|
|
51
|
+
* @param {String} str
|
|
52
|
+
* @returns {String}
|
|
53
|
+
*/
|
|
54
|
+
function encodeURIComponentWithExlamation(str) {
|
|
55
|
+
return encodeURIComponent(str).replace(/!/g, '%21');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Serializes the supply chain object based on IAB standards
|
|
60
|
+
* @see https://github.com/InteractiveAdvertisingBureau/openrtb/blob/master/supplychainobject.md
|
|
61
|
+
* @param {Object} schainObj supply chain object
|
|
62
|
+
* @returns {string} serialized supply chain value
|
|
63
|
+
*/
|
|
64
|
+
function serializeSupplyChainObj(schainObj) {
|
|
65
|
+
if (!schainObj || !schainObj.nodes) {
|
|
66
|
+
return '';
|
|
67
|
+
}
|
|
68
|
+
const nodeProps = ['asi', 'sid', 'hp', 'rid', 'name', 'domain'];
|
|
69
|
+
const serializedNodes = schainObj.nodes.map(node =>
|
|
70
|
+
nodeProps.map(prop => encodeURIComponentWithExlamation(node[prop] || '')).join(',')
|
|
71
|
+
).join('!');
|
|
72
|
+
|
|
73
|
+
const serializedSchain = `${schainObj.ver},${schainObj.complete}!${serializedNodes}`;
|
|
74
|
+
return serializedSchain;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Gets highest floor between getFloor.floor and params.bidfloor
|
|
79
|
+
* @param {Object} bid
|
|
80
|
+
* @param {Object} mediaType
|
|
81
|
+
* @param {Array} sizes
|
|
82
|
+
* @param {Number} bidfloor
|
|
83
|
+
* @returns {Number} floor
|
|
84
|
+
*/
|
|
85
|
+
function getBidFloor(bid, mediaType, sizes, bidfloor) {
|
|
86
|
+
let floor = bidfloor;
|
|
87
|
+
var size = sizes && sizes.length > 0 ? sizes[0] : '*';
|
|
88
|
+
if (typeof bid.getFloor === 'function') {
|
|
89
|
+
const floorInfo = bid.getFloor({currency: 'USD', mediaType, size});
|
|
90
|
+
if (typeof floorInfo === 'object' && floorInfo.currency === 'USD' && !isNaN(parseFloat(floorInfo.floor))) {
|
|
91
|
+
floor = Math.max(bidfloor, parseFloat(floorInfo.floor));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return floor;
|
|
95
|
+
}
|
|
96
|
+
|
|
49
97
|
const isBidResponseValid = bid => {
|
|
50
98
|
if (!bid || !bid.requestId || !bid.cpm || !bid.ttl || !bid.currency) {
|
|
51
99
|
return false;
|
|
@@ -78,6 +126,7 @@ const buildRequests = (validBidRequests, bidderRequest) => {
|
|
|
78
126
|
|
|
79
127
|
const videoContext = deepAccess(bid, 'mediaTypes.video.context');
|
|
80
128
|
const bidfloor = deepAccess(bid, `params.bidfloor`, 0);
|
|
129
|
+
const floor = getBidFloor(bid, adType, sizes, bidfloor);
|
|
81
130
|
|
|
82
131
|
const queryParams = {
|
|
83
132
|
id: bid.params.id,
|
|
@@ -91,8 +140,8 @@ const buildRequests = (validBidRequests, bidderRequest) => {
|
|
|
91
140
|
dt: /Mobi/.test(navigator.userAgent) ? 2 : 1,
|
|
92
141
|
pid: bid.params.pid,
|
|
93
142
|
requestId: bid.bidId,
|
|
94
|
-
schain: bid.schain || '',
|
|
95
|
-
bidfloor,
|
|
143
|
+
schain: serializeSupplyChainObj(bid.schain) || '',
|
|
144
|
+
bidfloor: floor,
|
|
96
145
|
d: getDomainWithoutSubdomain(hostname), // 'vidoomy.com',
|
|
97
146
|
// TODO: does the fallback make sense here?
|
|
98
147
|
sp: encodeURIComponent(bidderRequest.refererInfo.page || bidderRequest.refererInfo.topmostLocation),
|
|
@@ -155,7 +155,7 @@ export const spec = {
|
|
|
155
155
|
coppa: config.getConfig('coppa') === true ? 1 : 0,
|
|
156
156
|
ccpa: bidderRequest.uspConsent || undefined,
|
|
157
157
|
gdpr: bidderRequest.gdprConsent || undefined,
|
|
158
|
-
tmax:
|
|
158
|
+
tmax: bidderRequest.timeout
|
|
159
159
|
};
|
|
160
160
|
|
|
161
161
|
const len = validBidRequests.length;
|
|
@@ -122,6 +122,7 @@ import {
|
|
|
122
122
|
getStorageManager
|
|
123
123
|
} from '../src/storageManager.js';
|
|
124
124
|
import adapterManager from '../src/adapterManager.js';
|
|
125
|
+
import {MODULE_TYPE_RTD} from '../src/activities/modules.js';
|
|
125
126
|
|
|
126
127
|
/** @type {string} */
|
|
127
128
|
const MODULE_NAME = 'realTimeData';
|
|
@@ -153,7 +154,7 @@ const SFBX_LITE_DATA_SOURCE_LABEL = 'lite';
|
|
|
153
154
|
const GVLID = 284;
|
|
154
155
|
|
|
155
156
|
export const storage = getStorageManager({
|
|
156
|
-
|
|
157
|
+
moduleType: MODULE_TYPE_RTD,
|
|
157
158
|
moduleName: SUBMODULE_NAME
|
|
158
159
|
});
|
|
159
160
|
|
|
@@ -180,6 +181,7 @@ export const storage = getStorageManager({
|
|
|
180
181
|
class WeboramaRtdProvider {
|
|
181
182
|
#components;
|
|
182
183
|
name = SUBMODULE_NAME;
|
|
184
|
+
gvlid = GVLID;
|
|
183
185
|
/**
|
|
184
186
|
* @param {Components} components
|
|
185
187
|
*/
|
|
@@ -17,7 +17,6 @@ import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
|
17
17
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
18
18
|
import {Renderer} from '../src/Renderer.js';
|
|
19
19
|
import {find, includes} from '../src/polyfill.js';
|
|
20
|
-
import {createEidsArray} from './userId/eids.js';
|
|
21
20
|
|
|
22
21
|
const BIDDER_CODE = 'yieldmo';
|
|
23
22
|
const GVLID = 173;
|
|
@@ -652,8 +651,8 @@ function shortcutProperty(extraCharacters, target, propertyName) {
|
|
|
652
651
|
* @return array of eids objects
|
|
653
652
|
*/
|
|
654
653
|
function getEids(bidRequest) {
|
|
655
|
-
if (deepAccess(bidRequest, '
|
|
656
|
-
return
|
|
654
|
+
if (deepAccess(bidRequest, 'userIdAsEids')) {
|
|
655
|
+
return bidRequest.userIdAsEids || [];
|
|
657
656
|
}
|
|
658
657
|
};
|
|
659
658
|
|
|
@@ -53,7 +53,7 @@ export const spec = {
|
|
|
53
53
|
const bidId = bidRequest.bidId;
|
|
54
54
|
const transactionId = bidRequest.transactionId;
|
|
55
55
|
const unitCode = bidRequest.adUnitCode;
|
|
56
|
-
const timeout =
|
|
56
|
+
const timeout = bidderRequest.timeout;
|
|
57
57
|
const language = window.navigator.language;
|
|
58
58
|
const screenSize = window.screen.width + 'x' + window.screen.height;
|
|
59
59
|
const payload = {
|
|
@@ -7,8 +7,10 @@ import {getStorageManager} from '../src/storageManager.js';
|
|
|
7
7
|
import {getRefererInfo} from '../src/refererDetection.js';
|
|
8
8
|
import {includes as strIncludes} from '../src/polyfill.js';
|
|
9
9
|
import {getGlobal} from '../src/prebidGlobal.js';
|
|
10
|
+
import {MODULE_TYPE_ANALYTICS} from '../src/activities/modules.js';
|
|
10
11
|
|
|
11
|
-
const
|
|
12
|
+
const MODULE_CODE = 'yuktamedia';
|
|
13
|
+
const storage = getStorageManager({moduleType: MODULE_TYPE_ANALYTICS, moduleName: MODULE_CODE});
|
|
12
14
|
const yuktamediaAnalyticsVersion = 'v3.1.0';
|
|
13
15
|
|
|
14
16
|
let initOptions;
|
|
@@ -261,7 +263,7 @@ yuktamediaAnalyticsAdapter.enableAnalytics = function (config) {
|
|
|
261
263
|
|
|
262
264
|
adapterManager.registerAnalyticsAdapter({
|
|
263
265
|
adapter: yuktamediaAnalyticsAdapter,
|
|
264
|
-
code:
|
|
266
|
+
code: MODULE_CODE,
|
|
265
267
|
});
|
|
266
268
|
|
|
267
269
|
export default yuktamediaAnalyticsAdapter;
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { isStr, isPlainObject } from '../src/utils.js';
|
|
8
8
|
import {submodule} from '../src/hook.js';
|
|
9
|
-
import {
|
|
9
|
+
import {getStorageManager} from '../src/storageManager.js';
|
|
10
|
+
import {MODULE_TYPE_UID} from '../src/activities/modules.js';
|
|
10
11
|
|
|
11
12
|
const ZEOTAP_COOKIE_NAME = 'IDP';
|
|
12
13
|
const ZEOTAP_VENDOR_ID = 301;
|
|
@@ -21,7 +22,7 @@ function readFromLocalStorage() {
|
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
export function getStorage() {
|
|
24
|
-
return getStorageManager({
|
|
25
|
+
return getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: ZEOTAP_MODULE_NAME});
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
export const storage = getStorage();
|
package/package.json
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const _ = require('lodash');
|
|
4
|
+
const resolveFrom = require('resolve-from');
|
|
5
|
+
const MODULES_PATH = path.resolve(__dirname, '../../modules');
|
|
6
|
+
|
|
7
|
+
function isInDirectory(filename, dir) {
|
|
8
|
+
const rel = path.relative(dir, filename);
|
|
9
|
+
return rel && !rel.startsWith('..') && !path.isAbsolute(rel);
|
|
10
|
+
}
|
|
5
11
|
|
|
6
12
|
function flagErrors(context, node, importPath) {
|
|
7
13
|
let absFileDir = path.dirname(context.getFilename());
|
|
8
|
-
let absImportPath = path.resolve(absFileDir, importPath);
|
|
14
|
+
let absImportPath = importPath.startsWith('.') ? path.resolve(absFileDir, importPath) : require.resolve(importPath);
|
|
9
15
|
|
|
10
16
|
try {
|
|
11
17
|
resolveFrom(absFileDir, importPath);
|
|
@@ -20,16 +26,9 @@ function flagErrors(context, node, importPath) {
|
|
|
20
26
|
) {
|
|
21
27
|
context.report(node, `import "${importPath}" not in import whitelist`);
|
|
22
28
|
} else {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (
|
|
27
|
-
path.dirname(absImportPath) === absModulePath || (
|
|
28
|
-
absImportPath.startsWith(absModulePath) &&
|
|
29
|
-
path.basename(absImportPath) === 'index.js'
|
|
30
|
-
)
|
|
31
|
-
) {
|
|
32
|
-
context.report(node, `import "${importPath}" cannot require module entry point`);
|
|
29
|
+
// do not allow cross-module imports
|
|
30
|
+
if (isInDirectory(absImportPath, MODULES_PATH) && (!isInDirectory(absImportPath, absFileDir) || absFileDir === MODULES_PATH)) {
|
|
31
|
+
context.report(node, `import "${importPath}": importing from modules is not allowed`);
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
// don't allow extension-less local imports
|
package/plugins/pbjsGlobals.js
CHANGED
|
@@ -42,9 +42,11 @@ module.exports = function(api, options) {
|
|
|
42
42
|
];
|
|
43
43
|
|
|
44
44
|
const PREBID_ROOT = path.resolve(__dirname, '..');
|
|
45
|
+
// on Windows, require paths are not filesystem paths
|
|
46
|
+
const SEP_PAT = new RegExp(path.sep.replace(/\\/g, '\\\\'), 'g')
|
|
45
47
|
|
|
46
48
|
function relPath(from, toRelToProjectRoot) {
|
|
47
|
-
return path.relative(path.dirname(from), path.join(PREBID_ROOT, toRelToProjectRoot));
|
|
49
|
+
return path.relative(path.dirname(from), path.join(PREBID_ROOT, toRelToProjectRoot)).replace(SEP_PAT, '/');
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
function getModuleName(filename) {
|
package/src/Renderer.js
CHANGED
|
@@ -22,6 +22,7 @@ export function Renderer(options) {
|
|
|
22
22
|
this.config = config;
|
|
23
23
|
this.handlers = {};
|
|
24
24
|
this.id = id;
|
|
25
|
+
this.renderNow = renderNow;
|
|
25
26
|
|
|
26
27
|
// a renderer may push to the command queue to delay rendering until the
|
|
27
28
|
// render function is loaded by loadExternalScript, at which point the the command
|
|
@@ -110,7 +111,7 @@ Renderer.prototype.process = function() {
|
|
|
110
111
|
* @returns {Boolean}
|
|
111
112
|
*/
|
|
112
113
|
export function isRendererRequired(renderer) {
|
|
113
|
-
return !!(renderer && renderer.url);
|
|
114
|
+
return !!(renderer && (renderer.url || renderer.renderNow));
|
|
114
115
|
}
|
|
115
116
|
|
|
116
117
|
/**
|
package/src/adapterManager.js
CHANGED
|
@@ -31,11 +31,12 @@ import {hook} from './hook.js';
|
|
|
31
31
|
import {find, includes} from './polyfill.js';
|
|
32
32
|
import {adunitCounter} from './adUnits.js';
|
|
33
33
|
import {getRefererInfo} from './refererDetection.js';
|
|
34
|
-
import {GdprConsentHandler, UspConsentHandler, GppConsentHandler} from './consentHandler.js';
|
|
34
|
+
import {GdprConsentHandler, UspConsentHandler, GppConsentHandler, GDPR_GVLIDS} from './consentHandler.js';
|
|
35
35
|
import * as events from './events.js';
|
|
36
36
|
import CONSTANTS from './constants.json';
|
|
37
37
|
import {useMetrics} from './utils/perfMetrics.js';
|
|
38
38
|
import {auctionManager} from './auctionManager.js';
|
|
39
|
+
import {MODULE_TYPE_ANALYTICS, MODULE_TYPE_BIDDER} from './activities/modules.js';
|
|
39
40
|
|
|
40
41
|
export const PARTITIONS = {
|
|
41
42
|
CLIENT: 'client',
|
|
@@ -338,13 +339,6 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
|
|
|
338
339
|
}
|
|
339
340
|
});
|
|
340
341
|
|
|
341
|
-
bidRequests.forEach(bidRequest => {
|
|
342
|
-
config.runWithBidder(bidRequest.bidderCode, () => {
|
|
343
|
-
const fledgeEnabledFromConfig = config.getConfig('fledgeEnabled');
|
|
344
|
-
bidRequest['fledgeEnabled'] = navigator.runAdAuction && fledgeEnabledFromConfig
|
|
345
|
-
});
|
|
346
|
-
});
|
|
347
|
-
|
|
348
342
|
return bidRequests;
|
|
349
343
|
}, 'makeBidRequests');
|
|
350
344
|
|
|
@@ -470,6 +464,7 @@ adapterManager.registerBidAdapter = function (bidAdapter, bidderCode, {supported
|
|
|
470
464
|
if (bidAdapter && bidderCode) {
|
|
471
465
|
if (typeof bidAdapter.callBids === 'function') {
|
|
472
466
|
_bidderRegistry[bidderCode] = bidAdapter;
|
|
467
|
+
GDPR_GVLIDS.register(MODULE_TYPE_BIDDER, bidderCode, bidAdapter.getSpec?.().gvlid);
|
|
473
468
|
|
|
474
469
|
if (FEATURES.VIDEO && includes(supportedMediaTypes, 'video')) {
|
|
475
470
|
adapterManager.videoAdapters.push(bidderCode);
|
|
@@ -539,6 +534,7 @@ adapterManager.registerAnalyticsAdapter = function ({adapter, code, gvlid}) {
|
|
|
539
534
|
if (typeof adapter.enableAnalytics === 'function') {
|
|
540
535
|
adapter.code = code;
|
|
541
536
|
_analyticsRegistry[code] = { adapter, gvlid };
|
|
537
|
+
GDPR_GVLIDS.register(MODULE_TYPE_ANALYTICS, code, gvlid);
|
|
542
538
|
} else {
|
|
543
539
|
logError(`Prebid Error: Analytics adaptor error for analytics "${code}"
|
|
544
540
|
analytics adapter must implement an enableAnalytics() function`);
|
|
@@ -1,20 +1,32 @@
|
|
|
1
1
|
import Adapter from '../adapter.js';
|
|
2
2
|
import adapterManager from '../adapterManager.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
3
|
+
import {config} from '../config.js';
|
|
4
|
+
import {createBid} from '../bidfactory.js';
|
|
5
|
+
import {userSync} from '../userSync.js';
|
|
6
|
+
import {nativeBidIsValid} from '../native.js';
|
|
7
|
+
import {isValidVideoBid} from '../video.js';
|
|
8
8
|
import CONSTANTS from '../constants.json';
|
|
9
9
|
import * as events from '../events.js';
|
|
10
10
|
import {includes} from '../polyfill.js';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
import {ajax} from '../ajax.js';
|
|
12
|
+
import {
|
|
13
|
+
deepAccess,
|
|
14
|
+
delayExecution,
|
|
15
|
+
flatten,
|
|
16
|
+
isArray,
|
|
17
|
+
isPlainObject,
|
|
18
|
+
logError,
|
|
19
|
+
logWarn,
|
|
20
|
+
parseQueryStringParameters,
|
|
21
|
+
parseSizesInput,
|
|
22
|
+
timestamp,
|
|
23
|
+
uniques
|
|
24
|
+
} from '../utils.js';
|
|
25
|
+
import {ADPOD} from '../mediaTypes.js';
|
|
26
|
+
import {getHook, hook} from '../hook.js';
|
|
27
|
+
import {getCoreStorageManager} from '../storageManager.js';
|
|
16
28
|
import {auctionManager} from '../auctionManager.js';
|
|
17
|
-
import {
|
|
29
|
+
import {bidderSettings} from '../bidderSettings.js';
|
|
18
30
|
import {useMetrics} from '../utils/perfMetrics.js';
|
|
19
31
|
|
|
20
32
|
export const storage = getCoreStorageManager('bidderFactory');
|
|
@@ -187,7 +199,7 @@ export function registerBidder(spec) {
|
|
|
187
199
|
export function newBidder(spec) {
|
|
188
200
|
return Object.assign(new Adapter(spec.code), {
|
|
189
201
|
getSpec: function() {
|
|
190
|
-
return Object.freeze(spec);
|
|
202
|
+
return Object.freeze(Object.assign({}, spec));
|
|
191
203
|
},
|
|
192
204
|
registerSyncs,
|
|
193
205
|
callBids: function(bidderRequest, addBidResponse, done, ajax, onTimelyResponse, configEnabledCallback) {
|
|
@@ -247,7 +259,9 @@ export function newBidder(spec) {
|
|
|
247
259
|
fledgeAuctionConfigs.forEach((fledgeAuctionConfig) => {
|
|
248
260
|
const bidRequest = bidRequestMap[fledgeAuctionConfig.bidId];
|
|
249
261
|
if (bidRequest) {
|
|
250
|
-
addComponentAuction(bidRequest, fledgeAuctionConfig);
|
|
262
|
+
addComponentAuction(bidRequest.adUnitCode, fledgeAuctionConfig.config);
|
|
263
|
+
} else {
|
|
264
|
+
logWarn('Received fledge auction configuration for an unknown bidId', fledgeAuctionConfig);
|
|
251
265
|
}
|
|
252
266
|
});
|
|
253
267
|
},
|
|
@@ -463,13 +477,13 @@ export const registerSyncInner = hook('async', function(spec, responses, gdprCon
|
|
|
463
477
|
syncs.forEach((sync) => {
|
|
464
478
|
userSync.registerSync(sync.type, spec.code, sync.url)
|
|
465
479
|
});
|
|
480
|
+
userSync.bidderDone(spec.code);
|
|
466
481
|
}
|
|
467
482
|
}
|
|
468
483
|
}, 'registerSyncs')
|
|
469
484
|
|
|
470
|
-
export const addComponentAuction = hook('sync', (
|
|
471
|
-
|
|
472
|
-
}, 'addComponentAuction')
|
|
485
|
+
export const addComponentAuction = hook('sync', (adUnitCode, fledgeAuctionConfig) => {
|
|
486
|
+
}, 'addComponentAuction');
|
|
473
487
|
|
|
474
488
|
export function preloadBidderMappingFile(fn, adUnits) {
|
|
475
489
|
if (FEATURES.VIDEO) {
|
package/src/consentHandler.js
CHANGED
|
@@ -118,3 +118,45 @@ export class GppConsentHandler extends ConsentHandler {
|
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
+
|
|
122
|
+
export function gvlidRegistry() {
|
|
123
|
+
const registry = {};
|
|
124
|
+
const flat = {};
|
|
125
|
+
const none = {};
|
|
126
|
+
return {
|
|
127
|
+
/**
|
|
128
|
+
* Register a module's GVL ID.
|
|
129
|
+
* @param {string} moduleType defined in `activities/modules.js`
|
|
130
|
+
* @param {string} moduleName
|
|
131
|
+
* @param {number} gvlid
|
|
132
|
+
*/
|
|
133
|
+
register(moduleType, moduleName, gvlid) {
|
|
134
|
+
if (gvlid) {
|
|
135
|
+
(registry[moduleName] = registry[moduleName] || {})[moduleType] = gvlid;
|
|
136
|
+
if (flat.hasOwnProperty(moduleName)) {
|
|
137
|
+
if (flat[moduleName] !== gvlid) flat[moduleName] = none;
|
|
138
|
+
} else {
|
|
139
|
+
flat[moduleName] = gvlid;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
/**
|
|
144
|
+
* Get a module's GVL ID(s).
|
|
145
|
+
*
|
|
146
|
+
* @param {string} moduleName
|
|
147
|
+
* @return {{modules: {[moduleType]: number}, gvlid?: number}} an object where:
|
|
148
|
+
* `modules` is a map from module type to that module's GVL ID;
|
|
149
|
+
* `gvlid` is the single GVL ID for this family of modules (only defined
|
|
150
|
+
* if all modules with this name declared the same ID).
|
|
151
|
+
*/
|
|
152
|
+
get(moduleName) {
|
|
153
|
+
const result = {modules: registry[moduleName] || {}};
|
|
154
|
+
if (flat.hasOwnProperty(moduleName) && flat[moduleName] !== none) {
|
|
155
|
+
result.gvlid = flat[moduleName];
|
|
156
|
+
}
|
|
157
|
+
return result;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export const GDPR_GVLIDS = gvlidRegistry();
|
package/src/native.js
CHANGED
|
@@ -750,7 +750,11 @@ export function toLegacyResponse(ortbResponse, ortbRequest) {
|
|
|
750
750
|
if (asset.title) {
|
|
751
751
|
legacyResponse.title = asset.title.text;
|
|
752
752
|
} else if (asset.img) {
|
|
753
|
-
legacyResponse[requestAsset.img.type === NATIVE_IMAGE_TYPES.MAIN ? 'image' : 'icon'] =
|
|
753
|
+
legacyResponse[requestAsset.img.type === NATIVE_IMAGE_TYPES.MAIN ? 'image' : 'icon'] = {
|
|
754
|
+
url: asset.img.url,
|
|
755
|
+
width: asset.img.w,
|
|
756
|
+
height: asset.img.h
|
|
757
|
+
};
|
|
754
758
|
} else if (asset.data) {
|
|
755
759
|
legacyResponse[PREBID_NATIVE_DATA_KEYS_TO_ORTB_INVERSE[NATIVE_ASSET_TYPES_INVERSE[requestAsset.data.type]]] = asset.data.value;
|
|
756
760
|
}
|
package/src/refererDetection.js
CHANGED
|
@@ -51,6 +51,26 @@ export function parseDomain(url, {noLeadingWww = false, noPort = false} = {}) {
|
|
|
51
51
|
return url;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
/**
|
|
55
|
+
* This function returns canonical URL which refers to an HTML link element, with the attribute of rel="canonical", found in the <head> element of your webpage
|
|
56
|
+
*
|
|
57
|
+
* @param {Object} doc document
|
|
58
|
+
* @returns {string|null}
|
|
59
|
+
*/
|
|
60
|
+
function getCanonicalUrl(doc) {
|
|
61
|
+
try {
|
|
62
|
+
const element = doc.querySelector("link[rel='canonical']");
|
|
63
|
+
|
|
64
|
+
if (element !== null) {
|
|
65
|
+
return element.href;
|
|
66
|
+
}
|
|
67
|
+
} catch (e) {
|
|
68
|
+
// Ignore error
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
|
|
54
74
|
/**
|
|
55
75
|
* @param {Window} win Window
|
|
56
76
|
* @returns {Function}
|
|
@@ -75,26 +95,6 @@ export function detectReferer(win) {
|
|
|
75
95
|
}
|
|
76
96
|
}
|
|
77
97
|
|
|
78
|
-
/**
|
|
79
|
-
* This function returns canonical URL which refers to an HTML link element, with the attribute of rel="canonical", found in the <head> element of your webpage
|
|
80
|
-
*
|
|
81
|
-
* @param {Object} doc document
|
|
82
|
-
* @returns {string|null}
|
|
83
|
-
*/
|
|
84
|
-
function getCanonicalUrl(doc) {
|
|
85
|
-
try {
|
|
86
|
-
const element = doc.querySelector("link[rel='canonical']");
|
|
87
|
-
|
|
88
|
-
if (element !== null) {
|
|
89
|
-
return element.href;
|
|
90
|
-
}
|
|
91
|
-
} catch (e) {
|
|
92
|
-
// Ignore error
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
return null;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
98
|
// TODO: the meaning of "reachedTop" seems to be intentionally ambiguous - best to leave them out of
|
|
99
99
|
// the typedef for now. (for example, unit tests enforce that "reachedTop" should be false in some situations where we
|
|
100
100
|
// happily provide a location for the top).
|
|
@@ -260,7 +260,25 @@ export function detectReferer(win) {
|
|
|
260
260
|
return refererInfo;
|
|
261
261
|
}
|
|
262
262
|
|
|
263
|
+
// cache result of fn (= referer info) as long as:
|
|
264
|
+
// - we are the top window
|
|
265
|
+
// - canonical URL tag and window location have not changed
|
|
266
|
+
export function cacheWithLocation(fn, win = window) {
|
|
267
|
+
if (win.top !== win) return fn;
|
|
268
|
+
let canonical, href, value;
|
|
269
|
+
return function () {
|
|
270
|
+
const newCanonical = getCanonicalUrl(win.document);
|
|
271
|
+
const newHref = win.location.href;
|
|
272
|
+
if (canonical !== newCanonical || newHref !== href) {
|
|
273
|
+
canonical = newCanonical;
|
|
274
|
+
href = newHref;
|
|
275
|
+
value = fn();
|
|
276
|
+
}
|
|
277
|
+
return value;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
263
281
|
/**
|
|
264
282
|
* @type {function(): refererInfo}
|
|
265
283
|
*/
|
|
266
|
-
export const getRefererInfo = detectReferer(window);
|
|
284
|
+
export const getRefererInfo = cacheWithLocation(detectReferer(window));
|
package/src/secureCreatives.js
CHANGED
|
@@ -73,7 +73,7 @@ function handleRenderRequest(reply, data, adObject) {
|
|
|
73
73
|
if (adObject == null) {
|
|
74
74
|
emitAdRenderFail({
|
|
75
75
|
reason: constants.AD_RENDER_FAILED_REASON.CANNOT_FIND_AD,
|
|
76
|
-
message: `Cannot find ad
|
|
76
|
+
message: `Cannot find ad for cross-origin render request: '${data.adId}'`,
|
|
77
77
|
id: data.adId
|
|
78
78
|
});
|
|
79
79
|
return;
|
|
@@ -111,7 +111,7 @@ function handleNativeRequest(reply, data, adObject) {
|
|
|
111
111
|
// adId: '%%PATTERN:hb_adid%%'
|
|
112
112
|
// }), '*');
|
|
113
113
|
if (adObject == null) {
|
|
114
|
-
logError(`Cannot find ad
|
|
114
|
+
logError(`Cannot find ad for x-origin event request: '${data.adId}'`);
|
|
115
115
|
return;
|
|
116
116
|
}
|
|
117
117
|
|