prebid.js 5.14.0 → 5.18.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/.devcontainer/Dockerfile +11 -0
- package/.devcontainer/devcontainer.json +27 -0
- package/.devcontainer/postCreate.sh +6 -0
- package/allowedModules.js +2 -1
- package/integrationExamples/gpt/afpExample.html +242 -0
- package/integrationExamples/gpt/afpGamExample.html +152 -0
- package/integrationExamples/gpt/weboramaRtdProvider_example.html +126 -0
- package/modules/.submodules.json +29 -27
- package/modules/33acrossBidAdapter.js +23 -20
- package/modules/a4gBidAdapter.js +3 -3
- package/modules/ablidaBidAdapter.js +2 -2
- package/modules/adWMGBidAdapter.js +4 -4
- package/modules/adagioAnalyticsAdapter.js +4 -4
- package/modules/adagioBidAdapter.js +85 -82
- package/modules/adbookpspBidAdapter.js +56 -54
- package/modules/adfBidAdapter.js +24 -16
- package/modules/adgenerationBidAdapter.js +42 -18
- package/modules/adhashBidAdapter.js +105 -0
- package/modules/adhashBidAdapter.md +1 -1
- package/modules/adkernelAdnAnalyticsAdapter.js +6 -6
- package/modules/adkernelAdnBidAdapter.js +23 -23
- package/modules/adkernelBidAdapter.js +49 -44
- package/modules/adlooxAdServerVideo.js +26 -26
- package/modules/adlooxAnalyticsAdapter.js +38 -35
- package/modules/adlooxRtdProvider.js +49 -46
- package/modules/admanBidAdapter.js +4 -4
- package/modules/admixerBidAdapter.js +13 -2
- package/modules/admixerIdSystem.js +4 -4
- package/modules/adnowBidAdapter.js +4 -4
- package/modules/adnuntiusBidAdapter.js +6 -5
- package/modules/adoceanBidAdapter.js +10 -10
- package/modules/adpartnerBidAdapter.js +3 -3
- package/modules/adpod.js +45 -42
- package/modules/adprimeBidAdapter.js +4 -4
- package/modules/adqueryBidAdapter.js +204 -0
- package/modules/adqueryBidAdapter.md +32 -0
- package/modules/adrelevantisBidAdapter.js +30 -27
- package/modules/adriverBidAdapter.js +13 -13
- package/modules/adtargetBidAdapter.js +24 -24
- package/modules/adtelligentBidAdapter.js +29 -29
- package/modules/adtrueBidAdapter.js +35 -35
- package/modules/aduptechBidAdapter.js +10 -10
- package/modules/advangelistsBidAdapter.js +14 -14
- package/modules/adxcgAnalyticsAdapter.js +5 -5
- package/modules/adxcgBidAdapter.js +56 -56
- package/modules/adxpremiumAnalyticsAdapter.js +17 -17
- package/modules/adyoulikeBidAdapter.js +11 -11
- package/modules/afpBidAdapter.js +166 -0
- package/modules/afpBidAdapter.md +348 -0
- package/modules/ajaBidAdapter.js +12 -12
- package/modules/akamaiDAPIdSystem.js +9 -9
- package/modules/aniviewBidAdapter.js +2 -2
- package/modules/aolBidAdapter.js +15 -14
- package/modules/apacdexBidAdapter.js +16 -16
- package/modules/appnexusBidAdapter.js +59 -59
- package/modules/apstreamBidAdapter.js +5 -5
- package/modules/asoBidAdapter.js +30 -30
- package/modules/astraoneBidAdapter.js +2 -2
- package/modules/atsAnalyticsAdapter.js +35 -30
- package/modules/audiencerunBidAdapter.js +15 -15
- package/modules/automatadBidAdapter.js +2 -2
- package/modules/axonixBidAdapter.js +7 -7
- package/modules/beachfrontBidAdapter.js +23 -23
- package/modules/beopBidAdapter.js +22 -22
- package/modules/bidViewabilityIO.js +7 -7
- package/modules/bidglassBidAdapter.js +8 -8
- package/modules/bidscubeBidAdapter.js +3 -3
- package/modules/bizzclickBidAdapter.js +10 -10
- package/modules/bliinkBidAdapter.js +58 -32
- package/modules/bliinkBidAdapter.md +29 -6
- package/modules/bluebillywigBidAdapter.js +30 -30
- package/modules/boldwinBidAdapter.js +4 -4
- package/modules/braveBidAdapter.js +5 -5
- package/modules/bridgewellBidAdapter.js +5 -5
- package/modules/brightMountainMediaBidAdapter.js +10 -10
- package/modules/brightcomBidAdapter.js +18 -18
- package/modules/britepoolIdSystem.js +7 -7
- package/modules/browsiRtdProvider.js +8 -8
- package/modules/bucksenseBidAdapter.js +9 -9
- package/modules/buzzoolaBidAdapter.js +4 -4
- package/modules/byDataAnalyticsAdapter.js +12 -12
- package/modules/ccxBidAdapter.js +38 -38
- package/modules/cleanmedianetBidAdapter.js +9 -9
- package/modules/clickforceBidAdapter.js +4 -4
- package/modules/cointrafficBidAdapter.js +4 -4
- package/modules/coinzillaBidAdapter.js +2 -2
- package/modules/colossussspBidAdapter.js +7 -3
- package/modules/concertAnalyticsAdapter.js +3 -3
- package/modules/concertBidAdapter.js +16 -17
- package/modules/connectadBidAdapter.js +13 -13
- package/modules/consentManagement.js +29 -28
- package/modules/consentManagementUsp.js +14 -14
- package/modules/consumableBidAdapter.js +3 -3
- package/modules/contentexchangeBidAdapter.js +5 -5
- package/modules/conversantBidAdapter.js +32 -31
- package/modules/cpmstarBidAdapter.js +8 -9
- package/modules/craftBidAdapter.js +10 -10
- package/modules/criteoBidAdapter.js +16 -16
- package/modules/criteoIdSystem.js +5 -5
- package/modules/currency.js +18 -18
- package/modules/cwireBidAdapter.js +272 -0
- package/modules/cwireBidAdapter.md +43 -0
- package/modules/datablocksBidAdapter.js +12 -12
- package/modules/deepintentBidAdapter.js +13 -13
- package/modules/dgkeywordRtdProvider.js +10 -11
- package/modules/districtmDMXBidAdapter.js +15 -15
- package/modules/dmdIdSystem.js +5 -5
- package/modules/docereeBidAdapter.js +9 -9
- package/modules/dspxBidAdapter.js +5 -5
- package/modules/ebdrBidAdapter.js +9 -9
- package/modules/emx_digitalBidAdapter.js +23 -23
- package/modules/enrichmentFpdModule.js +10 -9
- package/modules/eplanningAnalyticsAdapter.js +2 -2
- package/modules/eplanningBidAdapter.js +10 -10
- package/modules/etargetBidAdapter.js +4 -4
- package/modules/express.js +9 -10
- package/modules/fabrickIdSystem.js +6 -6
- package/modules/feedadBidAdapter.js +5 -5
- package/modules/fintezaAnalyticsAdapter.js +4 -4
- package/modules/flocIdSystem.js +5 -5
- package/modules/fluctBidAdapter.js +6 -5
- package/modules/freewheel-sspBidAdapter.js +6 -6
- package/modules/gamoshiBidAdapter.js +22 -22
- package/modules/gdprEnforcement.js +13 -14
- package/modules/getintentBidAdapter.js +3 -4
- package/modules/glimpseBidAdapter.js +160 -48
- package/modules/glimpseBidAdapter.md +11 -74
- package/modules/gmosspBidAdapter.js +17 -17
- package/modules/gnetBidAdapter.js +5 -5
- package/modules/googleAnalyticsAdapter.js +6 -6
- package/modules/gothamadsBidAdapter.js +9 -9
- package/modules/gptPreAuction.js +7 -7
- package/modules/gridBidAdapter.js +15 -16
- package/modules/gridNMBidAdapter.js +214 -63
- package/modules/growadvertisingBidAdapter.js +7 -8
- package/modules/gumgumBidAdapter.js +19 -13
- package/modules/h12mediaBidAdapter.js +12 -12
- package/modules/haloIdSystem.js +8 -8
- package/modules/hybridBidAdapter.js +7 -7
- package/modules/iasRtdProvider.js +79 -63
- package/modules/id5IdSystem.js +24 -24
- package/modules/idImportLibrary.js +35 -35
- package/modules/idxIdSystem.js +3 -3
- package/modules/impactifyBidAdapter.js +10 -10
- package/modules/improvedigitalBidAdapter.js +36 -36
- package/modules/imuIdSystem.js +6 -6
- package/modules/inmarBidAdapter.js +2 -2
- package/modules/innityBidAdapter.js +3 -3
- package/modules/inskinBidAdapter.js +14 -2
- package/modules/inskinBidAdapter.md +5 -4
- package/modules/instreamTracking.js +5 -5
- package/modules/integr8BidAdapter.js +4 -4
- package/modules/intentIqIdSystem.js +7 -7
- package/modules/interactiveOffersBidAdapter.js +5 -5
- package/modules/invibesBidAdapter.js +53 -19
- package/modules/invisiblyAnalyticsAdapter.js +5 -5
- package/modules/iqmBidAdapter.js +19 -19
- package/modules/iqzoneBidAdapter.js +5 -5
- package/modules/ixBidAdapter.js +73 -73
- package/modules/jixieBidAdapter.js +6 -6
- package/modules/justpremiumBidAdapter.js +5 -1
- package/modules/kargoBidAdapter.js +16 -9
- package/modules/kargoBidAdapter.md +20 -0
- package/modules/kinessoIdSystem.js +8 -8
- package/modules/koblerBidAdapter.js +12 -12
- package/modules/konduitAnalyticsAdapter.js +4 -4
- package/modules/konduitWrapper.js +14 -14
- package/modules/krushmediaBidAdapter.js +4 -4
- package/modules/kubientBidAdapter.js +5 -5
- package/modules/limelightDigitalBidAdapter.js +4 -4
- package/modules/liveIntentIdSystem.js +4 -5
- package/modules/livewrappedAnalyticsAdapter.js +27 -15
- package/modules/livewrappedBidAdapter.js +7 -7
- package/modules/liveyieldAnalyticsAdapter.js +13 -13
- package/modules/lockerdomeBidAdapter.js +2 -2
- package/modules/loganBidAdapter.js +4 -4
- package/modules/lotamePanoramaIdSystem.js +13 -13
- package/modules/lunamediahbBidAdapter.js +2 -2
- package/modules/madvertiseBidAdapter.js +3 -3
- package/modules/marsmediaBidAdapter.js +26 -26
- package/modules/mathildeadsBidAdapter.js +5 -5
- package/modules/mediaforceBidAdapter.js +11 -11
- package/modules/mediakeysBidAdapter.js +444 -53
- package/modules/mediakeysBidAdapter.md +108 -0
- package/modules/medianetAnalyticsAdapter.js +48 -125
- package/modules/medianetBidAdapter.js +38 -33
- package/modules/medianetRtdProvider.js +7 -7
- package/modules/merkleIdSystem.js +19 -19
- package/modules/mgidBidAdapter.js +50 -50
- package/modules/microadBidAdapter.js +3 -3
- package/modules/multibid/index.js +15 -13
- package/modules/mwOpenLinkIdSystem.js +7 -7
- package/modules/mytargetBidAdapter.js +112 -0
- package/modules/nativoBidAdapter.js +46 -31
- package/modules/nativoBidAdapter.md +0 -1
- package/modules/naveggIdSystem.js +3 -3
- package/modules/nextMillenniumBidAdapter.js +6 -6
- package/modules/nextrollBidAdapter.js +375 -0
- package/modules/nobidBidAdapter.js +12 -11
- package/modules/novatiqIdSystem.js +8 -8
- package/modules/oguryBidAdapter.js +22 -6
- package/modules/oneVideoBidAdapter.js +20 -20
- package/modules/onomagicBidAdapter.js +16 -16
- package/modules/ooloAnalyticsAdapter.js +13 -13
- package/modules/openwebBidAdapter.js +26 -26
- package/modules/openxAnalyticsAdapter.js +33 -33
- package/modules/openxBidAdapter.js +29 -29
- package/modules/operaadsBidAdapter.js +53 -53
- package/modules/optimeraRtdProvider.js +9 -9
- package/modules/optoutBidAdapter.js +3 -3
- package/modules/orbidderBidAdapter.js +3 -3
- package/modules/outbrainBidAdapter.js +13 -13
- package/modules/ozoneBidAdapter.js +131 -131
- package/modules/padsquadBidAdapter.js +4 -4
- package/modules/parrableIdSystem.js +17 -17
- package/modules/pixfutureBidAdapter.js +45 -25
- package/modules/pixfutureBidAdapter.md +127 -0
- package/modules/prebidServerBidAdapter/index.js +109 -105
- package/modules/prebidmanagerAnalyticsAdapter.js +7 -7
- package/modules/priceFloors.js +47 -47
- package/modules/proxistoreBidAdapter.js +6 -8
- package/modules/pubCommonId.js +11 -11
- package/modules/pubProvidedIdSystem.js +3 -3
- package/modules/publinkIdSystem.js +23 -7
- package/modules/publinkIdSystem.md +7 -2
- package/modules/pubmaticAnalyticsAdapter.js +16 -16
- package/modules/pubmaticBidAdapter.js +109 -93
- package/modules/pubmaticBidAdapter.md +1 -1
- package/modules/pubperfAnalyticsAdapter.js +3 -3
- package/modules/pubwiseAnalyticsAdapter.js +6 -6
- package/modules/pubwiseBidAdapter.js +23 -23
- package/modules/pubxBidAdapter.js +2 -2
- package/modules/pubxaiAnalyticsAdapter.js +7 -7
- package/modules/pulsepointBidAdapter.js +13 -13
- package/modules/pxyzBidAdapter.js +7 -7
- package/modules/quantcastBidAdapter.js +16 -16
- package/modules/radsBidAdapter.js +5 -5
- package/modules/realvuAnalyticsAdapter.js +5 -7
- package/modules/reconciliationRtdProvider.js +6 -6
- package/modules/relaidoBidAdapter.js +44 -38
- package/modules/resetdigitalBidAdapter.js +3 -4
- package/modules/revcontentBidAdapter.js +9 -9
- package/modules/rhythmoneBidAdapter.js +17 -16
- package/modules/richaudienceBidAdapter.js +9 -9
- package/modules/riseBidAdapter.js +26 -26
- package/modules/riseBidAdapter.md +1 -3
- package/modules/roxotAnalyticsAdapter.js +14 -14
- package/modules/rtbhouseBidAdapter.js +7 -7
- package/modules/rtbsapeBidAdapter.js +3 -4
- package/modules/rtdModule/index.js +3 -3
- package/modules/rubiconAnalyticsAdapter.js +82 -82
- package/modules/rubiconBidAdapter.js +72 -68
- package/modules/scaleableAnalyticsAdapter.js +2 -2
- package/modules/seedingAllianceBidAdapter.js +231 -0
- package/modules/seedtagBidAdapter.js +10 -10
- package/modules/sharedIdSystem.js +11 -11
- package/modules/sharethroughAnalyticsAdapter.js +8 -8
- package/modules/sharethroughBidAdapter.js +20 -27
- package/modules/showheroes-bsBidAdapter.js +23 -23
- package/modules/sigmoidAnalyticsAdapter.js +4 -5
- package/modules/sirdataRtdProvider.js +34 -34
- package/modules/sizeMappingV2.js +39 -39
- package/modules/slimcutBidAdapter.js +121 -0
- package/modules/smaatoBidAdapter.js +44 -44
- package/modules/smartadserverBidAdapter.js +7 -7
- package/modules/smartxBidAdapter.js +72 -72
- package/modules/smartyadsBidAdapter.js +2 -2
- package/modules/smilewantedBidAdapter.js +6 -6
- package/modules/sonobiAnalyticsAdapter.js +23 -23
- package/modules/sortableAnalyticsAdapter.js +5 -5
- package/modules/sortableBidAdapter.js +28 -28
- package/modules/sovrnAnalyticsAdapter.js +5 -5
- package/modules/sovrnBidAdapter.js +22 -22
- package/modules/spotxBidAdapter.js +97 -83
- package/modules/sspBCBidAdapter.js +216 -21
- package/modules/sspBCBidAdapter.md +1 -1
- package/modules/staqAnalyticsAdapter.js +9 -9
- package/modules/stroeerCoreBidAdapter.js +16 -16
- package/modules/sublimeBidAdapter.js +6 -6
- package/modules/talkadsBidAdapter.js +129 -0
- package/modules/talkadsBidAdapter.md +60 -0
- package/modules/tapadIdSystem.js +3 -3
- package/modules/tappxBidAdapter.js +63 -64
- package/modules/teadsBidAdapter.js +20 -20
- package/modules/telariaBidAdapter.js +17 -17
- package/modules/temedyaBidAdapter.js +4 -4
- package/modules/terceptAnalyticsAdapter.js +4 -4
- package/modules/theAdxBidAdapter.js +16 -16
- package/modules/timeoutRtdProvider.js +15 -15
- package/modules/tpmnBidAdapter.js +3 -3
- package/modules/trionBidAdapter.js +15 -15
- package/modules/tripleliftBidAdapter.js +27 -24
- package/modules/truereachBidAdapter.js +4 -4
- package/modules/trustxBidAdapter.js +22 -18
- package/modules/ucfunnelBidAdapter.js +3 -3
- package/modules/uid2IdSystem.js +6 -6
- package/modules/underdogmediaBidAdapter.js +4 -4
- package/modules/unicornBidAdapter.js +15 -15
- package/modules/unifiedIdSystem.js +4 -4
- package/modules/unrulyBidAdapter.js +16 -16
- package/modules/userId/eids.js +9 -9
- package/modules/userId/index.js +37 -35
- package/modules/validationFpdModule/index.js +15 -15
- package/modules/vdoaiBidAdapter.js +2 -2
- package/modules/verizonMediaIdSystem.js +5 -5
- package/modules/vidazooBidAdapter.js +5 -5
- package/modules/videobyteBidAdapter.js +24 -24
- package/modules/videoreachBidAdapter.js +7 -7
- package/modules/vidoomyBidAdapter.js +105 -22
- package/modules/viewdeosDXBidAdapter.js +17 -17
- package/modules/visxBidAdapter.js +21 -29
- package/modules/voxBidAdapter.js +7 -7
- package/modules/vuukleBidAdapter.js +2 -2
- package/modules/waardexBidAdapter.js +26 -26
- package/modules/weboramaRtdProvider.js +174 -0
- package/modules/weboramaRtdProvider.md +70 -0
- package/modules/winrBidAdapter.js +27 -27
- package/modules/wipesBidAdapter.js +2 -2
- package/modules/yahoosspBidAdapter.js +637 -0
- package/modules/yahoosspBidAdapter.md +795 -0
- package/modules/yieldlabBidAdapter.js +57 -12
- package/modules/yieldlabBidAdapter.md +16 -1
- package/modules/yieldliftBidAdapter.js +9 -9
- package/modules/yieldmoBidAdapter.js +64 -50
- package/modules/yieldoneAnalyticsAdapter.js +6 -6
- package/modules/yieldoneBidAdapter.js +11 -11
- package/modules/yuktamediaAnalyticsAdapter.js +15 -15
- package/modules/zeotapIdPlusIdSystem.js +2 -2
- package/modules/zetaBidAdapter.js +6 -6
- package/modules/zeta_global_sspBidAdapter.js +14 -14
- package/package.json +1 -1
- package/src/AnalyticsAdapter.js +6 -6
- package/src/Renderer.js +10 -8
- package/src/adapterManager.js +45 -42
- package/src/adloader.js +6 -6
- package/src/ajax.js +8 -9
- package/src/auction.js +26 -23
- package/src/bidfactory.js +2 -2
- package/src/config.js +52 -50
- package/src/cpmBucketManager.js +2 -2
- package/src/prebid.js +85 -81
- package/src/storageManager.js +5 -5
- package/src/targeting.js +25 -26
- package/src/userSync.js +35 -22
- package/src/videoCache.js +2 -2
- package/test/.eslintrc.js +2 -1
- package/test/spec/modules/adfBidAdapter_spec.js +55 -0
- package/test/spec/modules/adgenerationBidAdapter_spec.js +121 -50
- package/test/spec/modules/adhashBidAdapter_spec.js +155 -0
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +68 -0
- package/test/spec/modules/adqueryBidAdapter_spec.js +185 -0
- package/test/spec/modules/afpBidAdapter_spec.js +306 -0
- package/test/spec/modules/atsAnalyticsAdapter_spec.js +37 -2
- package/test/spec/modules/bliinkBidAdapter_spec.js +87 -36
- package/test/spec/modules/colossussspBidAdapter_spec.js +14 -6
- package/test/spec/modules/cwireBidAdapter_spec.js +246 -0
- package/test/spec/modules/eplanningBidAdapter_spec.js +3 -3
- package/test/spec/modules/glimpseBidAdapter_spec.js +302 -204
- package/test/spec/modules/gridBidAdapter_spec.js +38 -2
- package/test/spec/modules/gridNMBidAdapter_spec.js +121 -47
- package/test/spec/modules/gumgumBidAdapter_spec.js +27 -6
- package/test/spec/modules/iasRtdProvider_spec.js +71 -6
- package/test/spec/modules/inskinBidAdapter_spec.js +10 -1
- package/test/spec/modules/invibesBidAdapter_spec.js +114 -2
- package/test/spec/modules/justpremiumBidAdapter_spec.js +16 -2
- package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +33 -7
- package/test/spec/modules/mediakeysBidAdapter_spec.js +406 -51
- package/test/spec/modules/medianetAnalyticsAdapter_spec.js +39 -7
- package/test/spec/modules/medianetBidAdapter_spec.js +62 -1
- package/test/spec/modules/mytargetBidAdapter_spec.js +199 -0
- package/test/spec/modules/nativoBidAdapter_spec.js +50 -3
- package/test/spec/modules/nextrollBidAdapter_spec.js +290 -0
- package/test/spec/modules/nobidBidAdapter_spec.js +65 -1
- package/test/spec/modules/oguryBidAdapter_spec.js +120 -7
- package/test/spec/modules/publinkIdSystem_spec.js +42 -12
- package/test/spec/modules/pubmaticBidAdapter_spec.js +217 -1
- package/test/spec/modules/relaidoBidAdapter_spec.js +21 -20
- package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +100 -81
- package/test/spec/modules/rubiconAnalyticsSchema.json +5 -2
- package/test/spec/modules/seedingAllianceAdapter_spec.js +186 -0
- package/test/spec/modules/sharethroughBidAdapter_spec.js +156 -136
- package/test/spec/modules/slimcutBidAdapter_spec.js +200 -0
- package/test/spec/modules/spotxBidAdapter_spec.js +36 -0
- package/test/spec/modules/sspBCBidAdapter_spec.js +210 -62
- package/test/spec/modules/talkadsBidAdapter_spec.js +231 -0
- package/test/spec/modules/tappxBidAdapter_spec.js +39 -3
- package/test/spec/modules/tripleliftBidAdapter_spec.js +2 -0
- package/test/spec/modules/trustxBidAdapter_spec.js +35 -2
- package/test/spec/modules/unicornBidAdapter_spec.js +4 -4
- package/test/spec/modules/visxBidAdapter_spec.js +48 -4
- package/test/spec/modules/weboramaRtdProvider_spec.js +288 -0
- package/test/spec/modules/yahoosspBidAdapter_spec.js +1332 -0
- package/test/spec/modules/yieldlabBidAdapter_spec.js +65 -1
- package/test/spec/modules/yieldmoBidAdapter_spec.js +30 -9
- package/test/spec/unit/pbjs_api_spec.js +4 -0
- package/test/spec/userSync_spec.js +30 -2
- package/modules/turktelekomBidAdapter.md +0 -49
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import adapter from '../src/AnalyticsAdapter.js';
|
|
6
6
|
import adapterManager from '../src/adapterManager.js';
|
|
7
|
-
import
|
|
7
|
+
import { logError } from '../src/utils.js';
|
|
8
8
|
|
|
9
9
|
var pubperfAdapter = adapter({
|
|
10
10
|
global: 'pubperf_pbjs',
|
|
@@ -16,11 +16,11 @@ pubperfAdapter.originEnableAnalytics = pubperfAdapter.enableAnalytics;
|
|
|
16
16
|
|
|
17
17
|
pubperfAdapter.enableAnalytics = config => {
|
|
18
18
|
if (!config || !config.provider || config.provider !== 'pubperf') {
|
|
19
|
-
|
|
19
|
+
logError('expected config.provider to equal pubperf');
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
if (!window['pubperf_pbjs']) {
|
|
23
|
-
|
|
23
|
+
logError(
|
|
24
24
|
`Make sure that Pubperf tag from https://www.pubperf.com is included before the Prebid configuration.`
|
|
25
25
|
);
|
|
26
26
|
return;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { getParameterByName, logInfo, generateUUID, debugTurnedOn } from '../src/utils.js';
|
|
1
2
|
import {ajax} from '../src/ajax.js';
|
|
2
3
|
import adapter from '../src/AnalyticsAdapter.js';
|
|
3
4
|
import adapterManager from '../src/adapterManager.js';
|
|
4
5
|
import CONSTANTS from '../src/constants.json';
|
|
5
6
|
import { getStorageManager } from '../src/storageManager.js';
|
|
6
|
-
const utils = require('../src/utils.js');
|
|
7
7
|
const storage = getStorageManager();
|
|
8
8
|
|
|
9
9
|
/****
|
|
@@ -76,7 +76,7 @@ function enrichWithUTM(dataBag) {
|
|
|
76
76
|
let newUtm = false;
|
|
77
77
|
try {
|
|
78
78
|
for (let prop in utmKeys) {
|
|
79
|
-
utmKeys[prop] =
|
|
79
|
+
utmKeys[prop] = getParameterByName(prop);
|
|
80
80
|
if (utmKeys[prop]) {
|
|
81
81
|
newUtm = true;
|
|
82
82
|
dataBag[prop] = utmKeys[prop];
|
|
@@ -192,7 +192,7 @@ function markEnabled() {
|
|
|
192
192
|
}
|
|
193
193
|
|
|
194
194
|
function pwInfo(info, context) {
|
|
195
|
-
|
|
195
|
+
logInfo(`${analyticsName} ` + info, context);
|
|
196
196
|
}
|
|
197
197
|
|
|
198
198
|
function filterBidResponse(data) {
|
|
@@ -304,7 +304,7 @@ pubwiseAnalytics.storeSessionID = function (userSessID) {
|
|
|
304
304
|
// ensure a session exists, if not make one, always store it
|
|
305
305
|
pubwiseAnalytics.ensureSession = function () {
|
|
306
306
|
if (sessionExpired() === true || userSessionID() === null || userSessionID() === '') {
|
|
307
|
-
let generatedId =
|
|
307
|
+
let generatedId = generateUUID();
|
|
308
308
|
expireUtmData();
|
|
309
309
|
this.storeSessionID(generatedId);
|
|
310
310
|
sessionData.sessionId = generatedId;
|
|
@@ -320,10 +320,10 @@ pubwiseAnalytics.enableAnalytics = function (config) {
|
|
|
320
320
|
configOptions = Object.assign(configOptions, config.options);
|
|
321
321
|
// take the PBJS debug for our debug setting if no PW debug is defined
|
|
322
322
|
if (configOptions.debug === null) {
|
|
323
|
-
configOptions.debug =
|
|
323
|
+
configOptions.debug = debugTurnedOn();
|
|
324
324
|
}
|
|
325
325
|
markEnabled();
|
|
326
|
-
sessionData.activationId =
|
|
326
|
+
sessionData.activationId = generateUUID();
|
|
327
327
|
this.ensureSession();
|
|
328
328
|
pubwiseAnalytics.adapterEnableAnalytics(config);
|
|
329
329
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { _each, isStr, deepClone, isArray, deepSetValue, inIframe, logMessage, logInfo, logWarn, logError } from '../src/utils.js';
|
|
2
2
|
import { config } from '../src/config.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import { BANNER, NATIVE } from '../src/mediaTypes.js';
|
|
@@ -81,9 +81,9 @@ let NATIVE_ASSET_KEY_TO_ASSET_MAP = {};
|
|
|
81
81
|
|
|
82
82
|
// together allows traversal of NATIVE_ASSETS_LIST in any direction
|
|
83
83
|
// id -> key
|
|
84
|
-
|
|
84
|
+
_each(NATIVE_ASSETS, anAsset => { NATIVE_ASSET_ID_TO_KEY_MAP[anAsset.ID] = anAsset.KEY });
|
|
85
85
|
// key -> asset
|
|
86
|
-
|
|
86
|
+
_each(NATIVE_ASSETS, anAsset => { NATIVE_ASSET_KEY_TO_ASSET_MAP[anAsset.KEY] = anAsset });
|
|
87
87
|
|
|
88
88
|
export const spec = {
|
|
89
89
|
code: BIDDER_CODE,
|
|
@@ -99,7 +99,7 @@ export const spec = {
|
|
|
99
99
|
// siteId is required
|
|
100
100
|
if (bid.params && bid.params.siteId) {
|
|
101
101
|
// it must be a string
|
|
102
|
-
if (!
|
|
102
|
+
if (!isStr(bid.params.siteId)) {
|
|
103
103
|
_logWarn('siteId is required for bid', bid);
|
|
104
104
|
return false;
|
|
105
105
|
}
|
|
@@ -127,7 +127,7 @@ export const spec = {
|
|
|
127
127
|
var blockedIabCategories = [];
|
|
128
128
|
|
|
129
129
|
validBidRequests.forEach(originalBid => {
|
|
130
|
-
bid =
|
|
130
|
+
bid = deepClone(originalBid);
|
|
131
131
|
bid.params.adSlot = bid.params.adSlot || '';
|
|
132
132
|
_parseAdSlot(bid);
|
|
133
133
|
|
|
@@ -136,7 +136,7 @@ export const spec = {
|
|
|
136
136
|
bidCurrency = bid.params.currency || UNDEFINED;
|
|
137
137
|
bid.params.currency = bidCurrency;
|
|
138
138
|
|
|
139
|
-
if (bid.params.hasOwnProperty('bcat') &&
|
|
139
|
+
if (bid.params.hasOwnProperty('bcat') && isArray(bid.params.bcat)) {
|
|
140
140
|
blockedIabCategories = blockedIabCategories.concat(bid.params.bcat);
|
|
141
141
|
}
|
|
142
142
|
|
|
@@ -180,27 +180,27 @@ export const spec = {
|
|
|
180
180
|
}
|
|
181
181
|
|
|
182
182
|
// passing transactionId in source.tid
|
|
183
|
-
|
|
183
|
+
deepSetValue(payload, 'source.tid', conf.transactionId);
|
|
184
184
|
|
|
185
185
|
// schain
|
|
186
186
|
if (validBidRequests[0].schain) {
|
|
187
|
-
|
|
187
|
+
deepSetValue(payload, 'source.ext.schain', validBidRequests[0].schain);
|
|
188
188
|
}
|
|
189
189
|
|
|
190
190
|
// gdpr consent
|
|
191
191
|
if (bidderRequest && bidderRequest.gdprConsent) {
|
|
192
|
-
|
|
193
|
-
|
|
192
|
+
deepSetValue(payload, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
|
|
193
|
+
deepSetValue(payload, 'regs.ext.gdpr', (bidderRequest.gdprConsent.gdprApplies ? 1 : 0));
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
// ccpa on the root object
|
|
197
197
|
if (bidderRequest && bidderRequest.uspConsent) {
|
|
198
|
-
|
|
198
|
+
deepSetValue(payload, 'regs.ext.us_privacy', bidderRequest.uspConsent);
|
|
199
199
|
}
|
|
200
200
|
|
|
201
201
|
// if coppa is in effect then note it
|
|
202
202
|
if (config.getConfig('coppa') === true) {
|
|
203
|
-
|
|
203
|
+
deepSetValue(payload, 'regs.coppa', 1);
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
var options = {contentType: 'text/plain'}
|
|
@@ -230,12 +230,12 @@ export const spec = {
|
|
|
230
230
|
// let parsedReferrer = parsedRequest.site && parsedRequest.site.ref ? parsedRequest.site.ref : '';
|
|
231
231
|
|
|
232
232
|
// try {
|
|
233
|
-
if (response.body && response.body.seatbid &&
|
|
233
|
+
if (response.body && response.body.seatbid && isArray(response.body.seatbid)) {
|
|
234
234
|
// Supporting multiple bid responses for same adSize
|
|
235
235
|
respCur = response.body.cur || respCur;
|
|
236
236
|
response.body.seatbid.forEach(seatbidder => {
|
|
237
237
|
seatbidder.bid &&
|
|
238
|
-
|
|
238
|
+
isArray(seatbidder.bid) &&
|
|
239
239
|
seatbidder.bid.forEach(bid => {
|
|
240
240
|
let newBid = {
|
|
241
241
|
requestId: bid.impid,
|
|
@@ -388,7 +388,7 @@ function _handleCustomParams(params, conf) {
|
|
|
388
388
|
value = entry.f(value, conf);
|
|
389
389
|
}
|
|
390
390
|
|
|
391
|
-
if (
|
|
391
|
+
if (isStr(value)) {
|
|
392
392
|
conf[key] = value;
|
|
393
393
|
} else {
|
|
394
394
|
_logWarn('Ignoring param : ' + key + ' with value : ' + CUSTOM_PARAMS[key] + ', expects string-value, found ' + typeof value);
|
|
@@ -469,7 +469,7 @@ function _createImpressionObject(bid, conf) {
|
|
|
469
469
|
}
|
|
470
470
|
|
|
471
471
|
function _parseSlotParam(paramName, paramValue) {
|
|
472
|
-
if (!
|
|
472
|
+
if (!isStr(paramValue)) {
|
|
473
473
|
paramValue && _logWarn('Ignoring param key: ' + paramName + ', expects string-value, found ' + typeof paramValue);
|
|
474
474
|
return UNDEFINED;
|
|
475
475
|
}
|
|
@@ -520,7 +520,7 @@ function _parseAdSlot(bid) {
|
|
|
520
520
|
}
|
|
521
521
|
|
|
522
522
|
function _cleanSlotName(slotName) {
|
|
523
|
-
if (
|
|
523
|
+
if (isStr(slotName)) {
|
|
524
524
|
return slotName.replace(/^\s+/g, '').replace(/\s+$/g, '');
|
|
525
525
|
}
|
|
526
526
|
return '';
|
|
@@ -705,7 +705,7 @@ function _createBannerRequest(bid) {
|
|
|
705
705
|
var sizes = bid.mediaTypes.banner.sizes;
|
|
706
706
|
var format = [];
|
|
707
707
|
var bannerObj;
|
|
708
|
-
if (sizes !== UNDEFINED &&
|
|
708
|
+
if (sizes !== UNDEFINED && isArray(sizes)) {
|
|
709
709
|
bannerObj = {};
|
|
710
710
|
if (!bid.params.width && !bid.params.height) {
|
|
711
711
|
if (sizes.length === 0) {
|
|
@@ -734,7 +734,7 @@ function _createBannerRequest(bid) {
|
|
|
734
734
|
}
|
|
735
735
|
}
|
|
736
736
|
bannerObj.pos = 0;
|
|
737
|
-
bannerObj.topframe =
|
|
737
|
+
bannerObj.topframe = inIframe() ? 0 : 1;
|
|
738
738
|
} else {
|
|
739
739
|
_logWarn('Error: mediaTypes.banner.size missing for adunit: ' + bid.params.adUnit + '. Ignoring the banner impression in the adunit.');
|
|
740
740
|
bannerObj = UNDEFINED;
|
|
@@ -745,22 +745,22 @@ function _createBannerRequest(bid) {
|
|
|
745
745
|
// various error levels are not always used
|
|
746
746
|
// eslint-disable-next-line no-unused-vars
|
|
747
747
|
function _logMessage(textValue, objectValue) {
|
|
748
|
-
|
|
748
|
+
logMessage('PubWise: ' + textValue, objectValue);
|
|
749
749
|
}
|
|
750
750
|
|
|
751
751
|
// eslint-disable-next-line no-unused-vars
|
|
752
752
|
function _logInfo(textValue, objectValue) {
|
|
753
|
-
|
|
753
|
+
logInfo('PubWise: ' + textValue, objectValue);
|
|
754
754
|
}
|
|
755
755
|
|
|
756
756
|
// eslint-disable-next-line no-unused-vars
|
|
757
757
|
function _logWarn(textValue, objectValue) {
|
|
758
|
-
|
|
758
|
+
logWarn('PubWise: ' + textValue, objectValue);
|
|
759
759
|
}
|
|
760
760
|
|
|
761
761
|
// eslint-disable-next-line no-unused-vars
|
|
762
762
|
function _logError(textValue, objectValue) {
|
|
763
|
-
|
|
763
|
+
logError('PubWise: ' + textValue, objectValue);
|
|
764
764
|
}
|
|
765
765
|
|
|
766
766
|
// function _decorateLog() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { deepSetValue } from '../src/utils.js';
|
|
1
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
|
-
import * as utils from '../src/utils.js';
|
|
3
3
|
|
|
4
4
|
const BIDDER_CODE = 'pubx';
|
|
5
5
|
const BID_ENDPOINT = 'https://api.primecaster.net/adlogue/api/slot/bid';
|
|
@@ -43,7 +43,7 @@ export const spec = {
|
|
|
43
43
|
ad: body.adm
|
|
44
44
|
};
|
|
45
45
|
if (body.adomains) {
|
|
46
|
-
|
|
46
|
+
deepSetValue(bidResponse, 'meta.advertiserDomains', Array.isArray(body.adomains) ? body.adomains : [body.adomains]);
|
|
47
47
|
}
|
|
48
48
|
bidResponses.push(bidResponse);
|
|
49
49
|
} else {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { deepAccess, getGptSlotInfoForAdUnitCode, parseSizesInput, getWindowLocation, buildUrl } from '../src/utils.js';
|
|
1
2
|
import { ajax } from '../src/ajax.js';
|
|
2
3
|
import adapter from '../src/AnalyticsAdapter.js';
|
|
3
4
|
import adapterManager from '../src/adapterManager.js';
|
|
4
5
|
import CONSTANTS from '../src/constants.json';
|
|
5
|
-
import * as utils from '../src/utils.js';
|
|
6
6
|
|
|
7
7
|
const emptyUrl = '';
|
|
8
8
|
const analyticsType = 'endpoint';
|
|
@@ -34,7 +34,7 @@ var pubxaiAnalyticsAdapter = Object.assign(adapter(
|
|
|
34
34
|
events.auctionInit = args;
|
|
35
35
|
events.floorDetail = {};
|
|
36
36
|
events.bids = [];
|
|
37
|
-
const floorData =
|
|
37
|
+
const floorData = deepAccess(args, 'bidderRequests.0.bids.0.floorData');
|
|
38
38
|
if (typeof floorData !== 'undefined') {
|
|
39
39
|
Object.assign(events.floorDetail, floorData);
|
|
40
40
|
}
|
|
@@ -57,7 +57,7 @@ function mapBidResponse(bidResponse, status) {
|
|
|
57
57
|
if (typeof bidResponse !== 'undefined') {
|
|
58
58
|
let bid = {
|
|
59
59
|
adUnitCode: bidResponse.adUnitCode,
|
|
60
|
-
gptSlotCode:
|
|
60
|
+
gptSlotCode: getGptSlotInfoForAdUnitCode(bidResponse.adUnitCode).gptSlot || null,
|
|
61
61
|
auctionId: bidResponse.auctionId,
|
|
62
62
|
bidderCode: bidResponse.bidder,
|
|
63
63
|
cpm: bidResponse.cpm,
|
|
@@ -77,7 +77,7 @@ function mapBidResponse(bidResponse, status) {
|
|
|
77
77
|
Object.assign(bid, {
|
|
78
78
|
bidId: status === 'timeout' ? bidResponse.bidId : bidResponse.requestId,
|
|
79
79
|
renderStatus: status === 'timeout' ? 3 : 2,
|
|
80
|
-
sizes:
|
|
80
|
+
sizes: parseSizesInput(bidResponse.size).toString(),
|
|
81
81
|
});
|
|
82
82
|
events.bids.push(bid);
|
|
83
83
|
} else {
|
|
@@ -85,7 +85,7 @@ function mapBidResponse(bidResponse, status) {
|
|
|
85
85
|
bidId: bidResponse.requestId,
|
|
86
86
|
floorProvider: events.floorDetail ? events.floorDetail.floorProvider : null,
|
|
87
87
|
isWinningBid: true,
|
|
88
|
-
placementId: bidResponse.params ?
|
|
88
|
+
placementId: bidResponse.params ? deepAccess(bidResponse, 'params.0.placementId') : null,
|
|
89
89
|
renderedSize: bidResponse.size,
|
|
90
90
|
renderStatus: 4
|
|
91
91
|
});
|
|
@@ -131,7 +131,7 @@ pubxaiAnalyticsAdapter.shouldFireEventRequest = function (samplingRate = 1) {
|
|
|
131
131
|
|
|
132
132
|
function send(data, status) {
|
|
133
133
|
if (pubxaiAnalyticsAdapter.shouldFireEventRequest(initOptions.samplingRate)) {
|
|
134
|
-
let location =
|
|
134
|
+
let location = getWindowLocation();
|
|
135
135
|
data.initOptions = initOptions;
|
|
136
136
|
if (typeof data !== 'undefined' && typeof data.auctionInit !== 'undefined') {
|
|
137
137
|
Object.assign(data.pageDetail, {
|
|
@@ -150,7 +150,7 @@ function send(data, status) {
|
|
|
150
150
|
deviceOS: getOS(),
|
|
151
151
|
browser: getBrowser()
|
|
152
152
|
});
|
|
153
|
-
let pubxaiAnalyticsRequestUrl =
|
|
153
|
+
let pubxaiAnalyticsRequestUrl = buildUrl({
|
|
154
154
|
protocol: 'https',
|
|
155
155
|
hostname: (initOptions && initOptions.hostName) || defaultHost,
|
|
156
156
|
pathname: status == 'bidwon' ? winningBidPath : auctionPath,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint dot-notation:0, quote-props:0 */
|
|
2
|
-
import
|
|
2
|
+
import { convertTypes, deepAccess, isArray, logError, isFn } from '../src/utils.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import { Renderer } from '../src/Renderer.js';
|
|
5
5
|
|
|
@@ -77,7 +77,7 @@ export const spec = {
|
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
79
|
transformBidParams: function(params, isOpenRtb) {
|
|
80
|
-
return
|
|
80
|
+
return convertTypes({
|
|
81
81
|
'cf': 'string',
|
|
82
82
|
'cp': 'number',
|
|
83
83
|
'ct': 'number'
|
|
@@ -124,8 +124,8 @@ function bidResponseAvailable(request, response) {
|
|
|
124
124
|
};
|
|
125
125
|
if (idToImpMap[id].video) {
|
|
126
126
|
// for outstream, a renderer is specified
|
|
127
|
-
if (idToSlotConfig[id] &&
|
|
128
|
-
bid.renderer = outstreamRenderer(
|
|
127
|
+
if (idToSlotConfig[id] && deepAccess(idToSlotConfig[id], 'mediaTypes.video.context') === 'outstream') {
|
|
128
|
+
bid.renderer = outstreamRenderer(deepAccess(idToSlotConfig[id], 'renderer.options'), deepAccess(idToBidMap[id], 'ext.outstream'));
|
|
129
129
|
}
|
|
130
130
|
bid.vastXml = idToBidMap[id].adm;
|
|
131
131
|
bid.mediaType = 'video';
|
|
@@ -178,9 +178,9 @@ function banner(slot) {
|
|
|
178
178
|
* Produce openrtb format objects based on the sizes configured for the slot.
|
|
179
179
|
*/
|
|
180
180
|
function parseSizes(slot) {
|
|
181
|
-
const sizes =
|
|
182
|
-
if (sizes &&
|
|
183
|
-
return sizes.filter(sz =>
|
|
181
|
+
const sizes = deepAccess(slot, 'mediaTypes.banner.sizes');
|
|
182
|
+
if (sizes && isArray(sizes)) {
|
|
183
|
+
return sizes.filter(sz => isArray(sz) && sz.length === 2).map(sz => ({
|
|
184
184
|
w: sz[0],
|
|
185
185
|
h: sz[1]
|
|
186
186
|
}));
|
|
@@ -387,7 +387,7 @@ function parse(rawResponse) {
|
|
|
387
387
|
return JSON.parse(rawResponse);
|
|
388
388
|
}
|
|
389
389
|
} catch (ex) {
|
|
390
|
-
|
|
390
|
+
logError('pulsepointLite.safeParse', 'ERROR', ex);
|
|
391
391
|
}
|
|
392
392
|
return null;
|
|
393
393
|
}
|
|
@@ -425,14 +425,14 @@ function user(bidRequest, bidderRequest) {
|
|
|
425
425
|
addExternalUserId(ext.eids, bidRequest.userId.britepoolid, 'britepool.com');
|
|
426
426
|
addExternalUserId(ext.eids, bidRequest.userId.criteoId, 'criteo.com');
|
|
427
427
|
addExternalUserId(ext.eids, bidRequest.userId.idl_env, 'liveramp.com');
|
|
428
|
-
addExternalUserId(ext.eids,
|
|
429
|
-
addExternalUserId(ext.eids,
|
|
428
|
+
addExternalUserId(ext.eids, deepAccess(bidRequest, 'userId.id5id.uid'), 'id5-sync.com', deepAccess(bidRequest, 'userId.id5id.ext'));
|
|
429
|
+
addExternalUserId(ext.eids, deepAccess(bidRequest, 'userId.parrableId.eid'), 'parrable.com');
|
|
430
430
|
addExternalUserId(ext.eids, bidRequest.userId.fabrickId, 'neustar.biz');
|
|
431
|
-
addExternalUserId(ext.eids,
|
|
431
|
+
addExternalUserId(ext.eids, deepAccess(bidRequest, 'userId.haloId.haloId'), 'audigent.com');
|
|
432
432
|
addExternalUserId(ext.eids, bidRequest.userId.merkleId, 'merkleinc.com');
|
|
433
433
|
addExternalUserId(ext.eids, bidRequest.userId.lotamePanoramaId, 'crwdcntrl.net');
|
|
434
434
|
addExternalUserId(ext.eids, bidRequest.userId.connectid, 'verizonmedia.com');
|
|
435
|
-
addExternalUserId(ext.eids,
|
|
435
|
+
addExternalUserId(ext.eids, deepAccess(bidRequest, 'userId.uid2.id'), 'uidapi.com');
|
|
436
436
|
// liveintent
|
|
437
437
|
if (bidRequest.userId.lipb && bidRequest.userId.lipb.lipbid) {
|
|
438
438
|
addExternalUserId(ext.eids, bidRequest.userId.lipb.lipbid, 'liveintent.com');
|
|
@@ -532,7 +532,7 @@ function nativeResponse(imp, bid) {
|
|
|
532
532
|
|
|
533
533
|
function bidFloor(slot) {
|
|
534
534
|
let floor = slot.params.bidfloor;
|
|
535
|
-
if (
|
|
535
|
+
if (isFn(slot.getFloor)) {
|
|
536
536
|
const floorData = slot.getFloor({
|
|
537
537
|
mediaType: slot.mediaTypes.banner ? 'banner' : slot.mediaTypes.video ? 'video' : 'Native',
|
|
538
538
|
size: '*',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
2
|
import { BANNER } from '../src/mediaTypes.js';
|
|
3
|
-
import
|
|
3
|
+
import { logInfo, logError, isArray } from '../src/utils.js';
|
|
4
4
|
|
|
5
5
|
const BIDDER_CODE = 'pxyz';
|
|
6
6
|
const URL = 'https://ads.playground.xyz/host-config/prebid?v=2';
|
|
@@ -61,15 +61,15 @@ export const spec = {
|
|
|
61
61
|
if (bidderRequest && bidderRequest.gdprConsent) {
|
|
62
62
|
const gdpr = bidderRequest.gdprConsent.gdprApplies ? 1 : 0;
|
|
63
63
|
const consentString = bidderRequest.gdprConsent.consentString;
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
logInfo(`PXYZ: GDPR applies ${gdpr}`);
|
|
65
|
+
logInfo(`PXYZ: GDPR consent string ${consentString}`);
|
|
66
66
|
payload.Regs.ext.gdpr = gdpr;
|
|
67
67
|
payload.User = { ext: { consent: consentString } };
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
// CCPA
|
|
71
71
|
if (bidderRequest && bidderRequest.uspConsent) {
|
|
72
|
-
|
|
72
|
+
logInfo(`PXYZ: USP Consent ${bidderRequest.uspConsent}`);
|
|
73
73
|
payload.Regs.ext['us_privacy'] = bidderRequest.uspConsent;
|
|
74
74
|
}
|
|
75
75
|
|
|
@@ -95,14 +95,14 @@ export const spec = {
|
|
|
95
95
|
let errorMessage = `in response for ${bidderRequest.bidderCode} adapter`;
|
|
96
96
|
if (serverResponse && serverResponse.error) {
|
|
97
97
|
errorMessage += `: ${serverResponse.error}`;
|
|
98
|
-
|
|
98
|
+
logError(errorMessage);
|
|
99
99
|
}
|
|
100
100
|
return bids;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
if (!
|
|
103
|
+
if (!isArray(serverResponse.seatbid)) {
|
|
104
104
|
let errorMessage = `in response for ${bidderRequest.bidderCode} adapter `;
|
|
105
|
-
|
|
105
|
+
logError(errorMessage += 'Malformed seatbid response');
|
|
106
106
|
return bids;
|
|
107
107
|
}
|
|
108
108
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { deepAccess, logInfo, logError, isEmpty, isArray } from '../src/utils.js';
|
|
2
2
|
import { ajax } from '../src/ajax.js';
|
|
3
3
|
import { config } from '../src/config.js';
|
|
4
4
|
import { getStorageManager } from '../src/storageManager.js';
|
|
@@ -24,8 +24,8 @@ export const QUANTCAST_FPA = '__qca';
|
|
|
24
24
|
export const storage = getStorageManager(QUANTCAST_VENDOR_ID, BIDDER_CODE);
|
|
25
25
|
|
|
26
26
|
function makeVideoImp(bid) {
|
|
27
|
-
const videoInMediaType =
|
|
28
|
-
const videoInParams =
|
|
27
|
+
const videoInMediaType = deepAccess(bid, 'mediaTypes.video') || {};
|
|
28
|
+
const videoInParams = deepAccess(bid, 'params.video') || {};
|
|
29
29
|
const video = Object.assign({}, videoInParams, videoInMediaType);
|
|
30
30
|
|
|
31
31
|
if (video.playerSize) {
|
|
@@ -142,10 +142,10 @@ export const spec = {
|
|
|
142
142
|
*/
|
|
143
143
|
buildRequests(bidRequests, bidderRequest) {
|
|
144
144
|
const bids = bidRequests || [];
|
|
145
|
-
const gdprConsent =
|
|
146
|
-
const uspConsent =
|
|
147
|
-
const referrer =
|
|
148
|
-
const page =
|
|
145
|
+
const gdprConsent = deepAccess(bidderRequest, 'gdprConsent') || {};
|
|
146
|
+
const uspConsent = deepAccess(bidderRequest, 'uspConsent');
|
|
147
|
+
const referrer = deepAccess(bidderRequest, 'refererInfo.referer');
|
|
148
|
+
const page = deepAccess(bidderRequest, 'refererInfo.canonicalUrl') || config.getConfig('pageUrl') || deepAccess(window, 'location.href');
|
|
149
149
|
const domain = getDomain(page);
|
|
150
150
|
|
|
151
151
|
// Check for GDPR consent for purpose 1, and drop request if consent has not been given
|
|
@@ -153,11 +153,11 @@ export const spec = {
|
|
|
153
153
|
if (gdprConsent.gdprApplies) {
|
|
154
154
|
if (gdprConsent.vendorData) {
|
|
155
155
|
if (gdprConsent.apiVersion === 1 && !checkTCFv1(gdprConsent.vendorData)) {
|
|
156
|
-
|
|
156
|
+
logInfo(`${BIDDER_CODE}: No purpose 1 consent for TCF v1`);
|
|
157
157
|
return;
|
|
158
158
|
}
|
|
159
159
|
if (gdprConsent.apiVersion === 2 && !checkTCFv2(gdprConsent.vendorData)) {
|
|
160
|
-
|
|
160
|
+
logInfo(`${BIDDER_CODE}: No purpose 1 consent for TCF v2`);
|
|
161
161
|
return;
|
|
162
162
|
}
|
|
163
163
|
}
|
|
@@ -174,7 +174,7 @@ export const spec = {
|
|
|
174
174
|
imp = makeBannerImp(bid);
|
|
175
175
|
} else {
|
|
176
176
|
// Unsupported mediaType
|
|
177
|
-
|
|
177
|
+
logInfo(`${BIDDER_CODE}: No supported mediaTypes found in ${JSON.stringify(bid.mediaTypes)}`);
|
|
178
178
|
return;
|
|
179
179
|
}
|
|
180
180
|
} else {
|
|
@@ -231,18 +231,18 @@ export const spec = {
|
|
|
231
231
|
*/
|
|
232
232
|
interpretResponse(serverResponse) {
|
|
233
233
|
if (serverResponse === undefined) {
|
|
234
|
-
|
|
234
|
+
logError('Server Response is undefined');
|
|
235
235
|
return [];
|
|
236
236
|
}
|
|
237
237
|
|
|
238
238
|
const response = serverResponse['body'];
|
|
239
239
|
|
|
240
240
|
if (response === undefined || !response.hasOwnProperty('bids')) {
|
|
241
|
-
|
|
241
|
+
logError('Sub-optimal JSON received from Quantcast server');
|
|
242
242
|
return [];
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
-
if (
|
|
245
|
+
if (isEmpty(response.bids)) {
|
|
246
246
|
// Shortcut response handling if no bids are present
|
|
247
247
|
return [];
|
|
248
248
|
}
|
|
@@ -271,7 +271,7 @@ export const spec = {
|
|
|
271
271
|
result['dealId'] = dealId;
|
|
272
272
|
}
|
|
273
273
|
|
|
274
|
-
if (meta !== undefined && meta.advertiserDomains &&
|
|
274
|
+
if (meta !== undefined && meta.advertiserDomains && isArray(meta.advertiserDomains)) {
|
|
275
275
|
result.meta = {};
|
|
276
276
|
result.meta.advertiserDomains = meta.advertiserDomains;
|
|
277
277
|
}
|
|
@@ -289,11 +289,11 @@ export const spec = {
|
|
|
289
289
|
const syncs = []
|
|
290
290
|
if (!hasUserSynced && syncOptions.pixelEnabled) {
|
|
291
291
|
const responseWithUrl = find(serverResponses, serverResponse =>
|
|
292
|
-
|
|
292
|
+
deepAccess(serverResponse.body, 'userSync.url')
|
|
293
293
|
);
|
|
294
294
|
|
|
295
295
|
if (responseWithUrl) {
|
|
296
|
-
const url =
|
|
296
|
+
const url = deepAccess(responseWithUrl.body, 'userSync.url')
|
|
297
297
|
syncs.push({
|
|
298
298
|
type: 'image',
|
|
299
299
|
url: url
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { deepAccess } from '../src/utils.js';
|
|
2
2
|
import {config} from '../src/config.js';
|
|
3
3
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
@@ -216,7 +216,7 @@ function prepareExtraParams(params, payload, bidderRequest, bidRequest) {
|
|
|
216
216
|
* @returns {boolean} True if it's a banner bid
|
|
217
217
|
*/
|
|
218
218
|
function isBannerRequest(bid) {
|
|
219
|
-
return bid.mediaType === 'banner' || !!
|
|
219
|
+
return bid.mediaType === 'banner' || !!deepAccess(bid, 'mediaTypes.banner') || !isVideoRequest(bid);
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
/**
|
|
@@ -226,7 +226,7 @@ function isBannerRequest(bid) {
|
|
|
226
226
|
* @returns {boolean} True if it's a video bid
|
|
227
227
|
*/
|
|
228
228
|
function isVideoRequest(bid) {
|
|
229
|
-
return bid.mediaType === 'video' || !!
|
|
229
|
+
return bid.mediaType === 'video' || !!deepAccess(bid, 'mediaTypes.video');
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
/**
|
|
@@ -236,7 +236,7 @@ function isVideoRequest(bid) {
|
|
|
236
236
|
* @returns {object} True if it's a video bid
|
|
237
237
|
*/
|
|
238
238
|
function getVideoSizes(bid) {
|
|
239
|
-
return parseSizes(
|
|
239
|
+
return parseSizes(deepAccess(bid, 'mediaTypes.video.playerSize') || bid.sizes);
|
|
240
240
|
}
|
|
241
241
|
|
|
242
242
|
/**
|
|
@@ -246,7 +246,7 @@ function getVideoSizes(bid) {
|
|
|
246
246
|
* @returns {object} True if it's a video bid
|
|
247
247
|
*/
|
|
248
248
|
function getBannerSizes(bid) {
|
|
249
|
-
return parseSizes(
|
|
249
|
+
return parseSizes(deepAccess(bid, 'mediaTypes.banner.sizes') || bid.sizes);
|
|
250
250
|
}
|
|
251
251
|
|
|
252
252
|
/**
|
|
@@ -3,11 +3,9 @@ import adapter from '../src/AnalyticsAdapter.js';
|
|
|
3
3
|
import adapterManager from '../src/adapterManager.js';
|
|
4
4
|
import CONSTANTS from '../src/constants.json';
|
|
5
5
|
import { getStorageManager } from '../src/storageManager.js';
|
|
6
|
-
|
|
6
|
+
import { logMessage, logError } from '../src/utils.js';
|
|
7
7
|
const storage = getStorageManager();
|
|
8
8
|
|
|
9
|
-
const utils = require('../src/utils.js');
|
|
10
|
-
|
|
11
9
|
let realvuAnalyticsAdapter = adapter({
|
|
12
10
|
global: 'realvuAnalytics',
|
|
13
11
|
handler: 'on',
|
|
@@ -401,7 +399,7 @@ export let lib = {
|
|
|
401
399
|
// @if NODE_ENV='debug'
|
|
402
400
|
let now = new Date();
|
|
403
401
|
let msg = (now.getTime() - time0) / 1000 + ' RENDERED ' + a.unit_id;
|
|
404
|
-
|
|
402
|
+
logMessage(msg);
|
|
405
403
|
// @endif
|
|
406
404
|
let rpt = z.bids_rpt(a, true);
|
|
407
405
|
z.track(a, 'rend', rpt);
|
|
@@ -885,7 +883,7 @@ realvuAnalyticsAdapter.originEnableAnalytics = realvuAnalyticsAdapter.enableAnal
|
|
|
885
883
|
realvuAnalyticsAdapter.enableAnalytics = function (config) {
|
|
886
884
|
_options = config.options;
|
|
887
885
|
if (typeof (_options.partnerId) == 'undefined' || _options.partnerId == '') {
|
|
888
|
-
|
|
886
|
+
logError('Missed realvu.com partnerId parameter', 101, 'Missed partnerId parameter');
|
|
889
887
|
}
|
|
890
888
|
realvuAnalyticsAdapter.originEnableAnalytics(config);
|
|
891
889
|
return _options.partnerId;
|
|
@@ -905,7 +903,7 @@ realvuAnalyticsAdapter.track = function ({eventType, args}) {
|
|
|
905
903
|
' creativei_id=' + args.creative_id;
|
|
906
904
|
}
|
|
907
905
|
// msg += '\nargs=' + JSON.stringify(args) + '<br>';
|
|
908
|
-
|
|
906
|
+
logMessage(msg);
|
|
909
907
|
// @endif
|
|
910
908
|
|
|
911
909
|
const boost = window.top1.realvu_aa;
|
|
@@ -935,7 +933,7 @@ realvuAnalyticsAdapter.track = function ({eventType, args}) {
|
|
|
935
933
|
realvuAnalyticsAdapter.checkIn = function (bid, partnerId) {
|
|
936
934
|
// find (or add if not registered yet) the unit in boost
|
|
937
935
|
if (typeof (partnerId) == 'undefined' || partnerId == '') {
|
|
938
|
-
|
|
936
|
+
logError('Missed realvu.com partnerId parameter', 102, 'Missed partnerId parameter');
|
|
939
937
|
}
|
|
940
938
|
let a = window.top1.realvu_aa.check({
|
|
941
939
|
unit_id: bid.adUnitCode,
|