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
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { logError } 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
|
-
import * as utils from '../src/utils.js';
|
|
5
5
|
|
|
6
6
|
const CONSTANTS = require('../src/constants.json');
|
|
7
7
|
|
|
@@ -110,7 +110,7 @@ eplAnalyticsAdapter.originEnableAnalytics = eplAnalyticsAdapter.enableAnalytics;
|
|
|
110
110
|
|
|
111
111
|
eplAnalyticsAdapter.enableAnalytics = function (config) {
|
|
112
112
|
if (!config.options.ci) {
|
|
113
|
-
|
|
113
|
+
logError('Client ID (ci) option is not defined. Analytics won\'t work');
|
|
114
114
|
return;
|
|
115
115
|
}
|
|
116
116
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { isEmpty, getWindowSelf, parseSizesInput } from '../src/utils.js';
|
|
2
2
|
import { getGlobal } from '../src/prebidGlobal.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import { getStorageManager } from '../src/storageManager.js';
|
|
@@ -7,10 +7,10 @@ export const storage = getStorageManager();
|
|
|
7
7
|
|
|
8
8
|
const BIDDER_CODE = 'eplanning';
|
|
9
9
|
const rnd = Math.random();
|
|
10
|
-
const DEFAULT_SV = '
|
|
10
|
+
const DEFAULT_SV = 'pbjs.e-planning.net';
|
|
11
11
|
const DEFAULT_ISV = 'i.e-planning.net';
|
|
12
12
|
const PARAMS = ['ci', 'sv', 't', 'ml', 'sn'];
|
|
13
|
-
const
|
|
13
|
+
const DOLLAR_CODE = 'USD';
|
|
14
14
|
const NET_REVENUE = true;
|
|
15
15
|
const TTL = 120;
|
|
16
16
|
const NULL_SIZE = '1x1';
|
|
@@ -102,9 +102,9 @@ export const spec = {
|
|
|
102
102
|
const response = serverResponse.body;
|
|
103
103
|
let bidResponses = [];
|
|
104
104
|
|
|
105
|
-
if (response && !
|
|
105
|
+
if (response && !isEmpty(response.sp)) {
|
|
106
106
|
response.sp.forEach(space => {
|
|
107
|
-
if (!
|
|
107
|
+
if (!isEmpty(space.a)) {
|
|
108
108
|
space.a.forEach(ad => {
|
|
109
109
|
const bidResponse = {
|
|
110
110
|
requestId: request.adUnitToBidId[space.k],
|
|
@@ -115,7 +115,7 @@ export const spec = {
|
|
|
115
115
|
ttl: TTL,
|
|
116
116
|
creativeId: ad.crid,
|
|
117
117
|
netRevenue: NET_REVENUE,
|
|
118
|
-
currency:
|
|
118
|
+
currency: DOLLAR_CODE,
|
|
119
119
|
};
|
|
120
120
|
if (ad.adom) {
|
|
121
121
|
bidResponse.meta = {
|
|
@@ -132,9 +132,9 @@ export const spec = {
|
|
|
132
132
|
},
|
|
133
133
|
getUserSyncs: function(syncOptions, serverResponses) {
|
|
134
134
|
const syncs = [];
|
|
135
|
-
const response = !
|
|
135
|
+
const response = !isEmpty(serverResponses) && serverResponses[0].body;
|
|
136
136
|
|
|
137
|
-
if (response && !
|
|
137
|
+
if (response && !isEmpty(response.cs)) {
|
|
138
138
|
const responseSyncs = response.cs;
|
|
139
139
|
responseSyncs.forEach(sync => {
|
|
140
140
|
if (typeof sync === 'string' && syncOptions.pixelEnabled) {
|
|
@@ -159,7 +159,7 @@ function getUserAgent() {
|
|
|
159
159
|
return window.navigator.userAgent;
|
|
160
160
|
}
|
|
161
161
|
function getInnerWidth() {
|
|
162
|
-
return
|
|
162
|
+
return getWindowSelf().innerWidth;
|
|
163
163
|
}
|
|
164
164
|
function isMobileUserAgent() {
|
|
165
165
|
return getUserAgent().match(/(mobile)|(ip(hone|ad))|(android)|(blackberry)|(nokia)|(phone)|(opera\smini)/i);
|
|
@@ -216,7 +216,7 @@ function compareSizesByPriority(size1, size2) {
|
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
function getSizesSortedByPriority(sizes) {
|
|
219
|
-
return
|
|
219
|
+
return parseSizesInput(sizes).sort(compareSizesByPriority);
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
function getSize(bid, first) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { deepSetValue, isFn, isPlainObject } 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';
|
|
@@ -145,7 +145,7 @@ export const spec = {
|
|
|
145
145
|
bidObject.gdpr_consent = bidRequest.gdpr.gdpr_consent;
|
|
146
146
|
}
|
|
147
147
|
if (bid.adomain) {
|
|
148
|
-
|
|
148
|
+
deepSetValue(bidObject, 'meta.advertiserDomains', Array.isArray(bid.adomain) ? bid.adomain : [bid.adomain]);
|
|
149
149
|
}
|
|
150
150
|
bidRespones.push(bidObject);
|
|
151
151
|
}
|
|
@@ -165,7 +165,7 @@ export const spec = {
|
|
|
165
165
|
}
|
|
166
166
|
};
|
|
167
167
|
function getBidFloor(bid) {
|
|
168
|
-
if (!
|
|
168
|
+
if (!isFn(bid.getFloor)) {
|
|
169
169
|
return null;
|
|
170
170
|
}
|
|
171
171
|
let floor = bid.getFloor({
|
|
@@ -173,7 +173,7 @@ function getBidFloor(bid) {
|
|
|
173
173
|
mediaType: '*',
|
|
174
174
|
size: '*'
|
|
175
175
|
});
|
|
176
|
-
if (
|
|
176
|
+
if (isPlainObject(floor) && !isNaN(floor.floor)) {
|
|
177
177
|
return floor.floor;
|
|
178
178
|
}
|
|
179
179
|
return null;
|
package/modules/express.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import * as utils from '../src/utils.js';
|
|
1
|
+
import { logMessage, logWarn, logError, logInfo } from '../src/utils.js';
|
|
3
2
|
|
|
4
3
|
const MODULE_NAME = 'express';
|
|
5
4
|
|
|
@@ -14,10 +13,10 @@ const MODULE_NAME = 'express';
|
|
|
14
13
|
* @param {Object[]} [adUnits = pbjs.adUnits] - an array of adUnits for express to operate on.
|
|
15
14
|
*/
|
|
16
15
|
$$PREBID_GLOBAL$$.express = function(adUnits = $$PREBID_GLOBAL$$.adUnits) {
|
|
17
|
-
|
|
16
|
+
logMessage('loading ' + MODULE_NAME);
|
|
18
17
|
|
|
19
18
|
if (adUnits.length === 0) {
|
|
20
|
-
|
|
19
|
+
logWarn('no valid adUnits found, not loading ' + MODULE_NAME);
|
|
21
20
|
}
|
|
22
21
|
|
|
23
22
|
// store gpt slots in a more performant hash lookup by elementId (adUnit code)
|
|
@@ -27,7 +26,7 @@ $$PREBID_GLOBAL$$.express = function(adUnits = $$PREBID_GLOBAL$$.adUnits) {
|
|
|
27
26
|
if (adUnit.code && adUnit.bids) {
|
|
28
27
|
cache[adUnit.code] = adUnit;
|
|
29
28
|
} else {
|
|
30
|
-
|
|
29
|
+
logError('misconfigured adUnit', null, adUnit);
|
|
31
30
|
}
|
|
32
31
|
return cache;
|
|
33
32
|
}, {});
|
|
@@ -39,10 +38,10 @@ $$PREBID_GLOBAL$$.express = function(adUnits = $$PREBID_GLOBAL$$.adUnits) {
|
|
|
39
38
|
var gpt = window.googletag;
|
|
40
39
|
var pads = gpt.pubads;
|
|
41
40
|
if (!gpt.display || !gpt.enableServices || typeof pads !== 'function' || !pads().refresh || !pads().disableInitialLoad || !pads().getSlots || !pads().enableSingleRequest) {
|
|
42
|
-
|
|
41
|
+
logError('could not bind to gpt googletag api');
|
|
43
42
|
return;
|
|
44
43
|
}
|
|
45
|
-
|
|
44
|
+
logMessage('running');
|
|
46
45
|
|
|
47
46
|
// function to convert google tag slot sizes to [[w,h],...]
|
|
48
47
|
function mapGptSlotSizes(aGPTSlotSizes) {
|
|
@@ -51,7 +50,7 @@ $$PREBID_GLOBAL$$.express = function(adUnits = $$PREBID_GLOBAL$$.adUnits) {
|
|
|
51
50
|
try {
|
|
52
51
|
aSlotSizes.push([aGPTSlotSizes[i].getWidth(), aGPTSlotSizes[i].getHeight()]);
|
|
53
52
|
} catch (e) {
|
|
54
|
-
|
|
53
|
+
logWarn('slot size ' + aGPTSlotSizes[i].toString() + ' not supported by' + MODULE_NAME);
|
|
55
54
|
}
|
|
56
55
|
}
|
|
57
56
|
return aSlotSizes;
|
|
@@ -110,7 +109,7 @@ $$PREBID_GLOBAL$$.express = function(adUnits = $$PREBID_GLOBAL$$.adUnits) {
|
|
|
110
109
|
// - else run an auction and call the real fGptRefresh() to
|
|
111
110
|
// initiate the DFP request
|
|
112
111
|
gpt.display = function (sElementId) {
|
|
113
|
-
|
|
112
|
+
logInfo('display:', sElementId);
|
|
114
113
|
// call original gpt display() function
|
|
115
114
|
fGptDisplay.apply(gpt, arguments);
|
|
116
115
|
|
|
@@ -157,7 +156,7 @@ $$PREBID_GLOBAL$$.express = function(adUnits = $$PREBID_GLOBAL$$.adUnits) {
|
|
|
157
156
|
// override gpt refresh() function
|
|
158
157
|
// - run auctions for provided gpt slots, then initiate ad-server call
|
|
159
158
|
pads().refresh = function (aGptSlots, options) {
|
|
160
|
-
|
|
159
|
+
logInfo('refresh:', aGptSlots);
|
|
161
160
|
// get already displayed adUnits from aGptSlots if provided, else all defined gptSlots
|
|
162
161
|
aGptSlots = defaultSlots(aGptSlots);
|
|
163
162
|
var adUnits = pickAdUnits(/* mutated: */ aGptSlots).filter(function (adUnit) {
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @requires module:modules/userId
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import
|
|
8
|
+
import { logError } from '../src/utils.js';
|
|
9
9
|
import { ajax } from '../src/ajax.js';
|
|
10
10
|
import { submodule } from '../src/hook.js';
|
|
11
11
|
import { getRefererInfo } from '../src/refererDetection.js';
|
|
@@ -47,7 +47,7 @@ export const fabrickIdSubmodule = {
|
|
|
47
47
|
window.fabrickMod1(configParams, consentData, cacheIdObj);
|
|
48
48
|
}
|
|
49
49
|
if (!configParams || !configParams.apiKey || typeof configParams.apiKey !== 'string') {
|
|
50
|
-
|
|
50
|
+
logError('fabrick submodule requires an apiKey.');
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
53
|
try {
|
|
@@ -96,7 +96,7 @@ export const fabrickIdSubmodule = {
|
|
|
96
96
|
try {
|
|
97
97
|
responseObj = JSON.parse(response);
|
|
98
98
|
} catch (error) {
|
|
99
|
-
|
|
99
|
+
logError(error);
|
|
100
100
|
responseObj = {};
|
|
101
101
|
}
|
|
102
102
|
}
|
|
@@ -104,7 +104,7 @@ export const fabrickIdSubmodule = {
|
|
|
104
104
|
}
|
|
105
105
|
},
|
|
106
106
|
error: error => {
|
|
107
|
-
|
|
107
|
+
logError(`fabrickId fetch encountered an error`, error);
|
|
108
108
|
callback();
|
|
109
109
|
}
|
|
110
110
|
};
|
|
@@ -112,10 +112,10 @@ export const fabrickIdSubmodule = {
|
|
|
112
112
|
};
|
|
113
113
|
return {callback: resp};
|
|
114
114
|
} catch (e) {
|
|
115
|
-
|
|
115
|
+
logError(`fabrickIdSystem encountered an error`, e);
|
|
116
116
|
}
|
|
117
117
|
} catch (e) {
|
|
118
|
-
|
|
118
|
+
logError(`fabrickIdSystem encountered an error`, e);
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { deepAccess, logWarn } from '../src/utils.js';
|
|
2
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import {BANNER} from '../src/mediaTypes.js';
|
|
4
4
|
import {ajax} from '../src/ajax.js';
|
|
@@ -107,15 +107,15 @@ const BID_METADATA = {};
|
|
|
107
107
|
* @return {boolean} true if the bid is valid
|
|
108
108
|
*/
|
|
109
109
|
function isBidRequestValid(bid) {
|
|
110
|
-
const clientToken =
|
|
110
|
+
const clientToken = deepAccess(bid, 'params.clientToken');
|
|
111
111
|
if (!clientToken || !isValidClientToken(clientToken)) {
|
|
112
|
-
|
|
112
|
+
logWarn(TAG, "missing or invalid parameter 'clientToken'. found value:", clientToken);
|
|
113
113
|
return false;
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
const placementId =
|
|
116
|
+
const placementId = deepAccess(bid, 'params.placementId');
|
|
117
117
|
if (!placementId || !isValidPlacementId(placementId)) {
|
|
118
|
-
|
|
118
|
+
logWarn(TAG, "missing or invalid parameter 'placementId'. found value:", placementId);
|
|
119
119
|
return false;
|
|
120
120
|
}
|
|
121
121
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { parseUrl, logError } 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
|
-
import * as utils from '../src/utils.js';
|
|
5
5
|
import { getStorageManager } from '../src/storageManager.js';
|
|
6
6
|
|
|
7
7
|
const storage = getStorageManager();
|
|
@@ -28,7 +28,7 @@ function getPageInfo() {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
if (document.referrer) {
|
|
31
|
-
pageInfo.referrerDomain =
|
|
31
|
+
pageInfo.referrerDomain = parseUrl(document.referrer).hostname;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
return pageInfo;
|
|
@@ -399,7 +399,7 @@ function sendTrackRequest(trackData) {
|
|
|
399
399
|
);
|
|
400
400
|
saveTrackRequestTime();
|
|
401
401
|
} catch (err) {
|
|
402
|
-
|
|
402
|
+
logError('Error on send data: ', err);
|
|
403
403
|
}
|
|
404
404
|
}
|
|
405
405
|
|
|
@@ -424,7 +424,7 @@ fntzAnalyticsAdapter.originEnableAnalytics = fntzAnalyticsAdapter.enableAnalytic
|
|
|
424
424
|
|
|
425
425
|
fntzAnalyticsAdapter.enableAnalytics = function (config) {
|
|
426
426
|
if (!config.options.id) {
|
|
427
|
-
|
|
427
|
+
logError('Client ID (id) option is not defined. Analytics won\'t work');
|
|
428
428
|
return;
|
|
429
429
|
}
|
|
430
430
|
|
package/modules/flocIdSystem.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @requires module:modules/userId
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import
|
|
8
|
+
import { logInfo, logError } from '../src/utils.js';
|
|
9
9
|
import {submodule} from '../src/hook.js'
|
|
10
10
|
|
|
11
11
|
const MODULE_NAME = 'flocId';
|
|
@@ -45,7 +45,7 @@ function encodeId(value) {
|
|
|
45
45
|
const result = {};
|
|
46
46
|
if (value) {
|
|
47
47
|
result.flocId = value;
|
|
48
|
-
|
|
48
|
+
logInfo('Decoded value ' + JSON.stringify(result));
|
|
49
49
|
return result;
|
|
50
50
|
}
|
|
51
51
|
return undefined;
|
|
@@ -78,7 +78,7 @@ export const flocIdSubmodule = {
|
|
|
78
78
|
// Block usage of storage of cohort ID
|
|
79
79
|
const checkStorage = (config && config.storage);
|
|
80
80
|
if (checkStorage) {
|
|
81
|
-
|
|
81
|
+
logError('User ID - flocId submodule storage should not defined');
|
|
82
82
|
return;
|
|
83
83
|
}
|
|
84
84
|
// Validate feature is enabled
|
|
@@ -94,10 +94,10 @@ export const flocIdSubmodule = {
|
|
|
94
94
|
let returnCallback = (cb) => {
|
|
95
95
|
getFlocData((data) => {
|
|
96
96
|
returnCallback = () => { return data; }
|
|
97
|
-
|
|
97
|
+
logInfo('Cohort id: ' + JSON.stringify(data));
|
|
98
98
|
cb(data);
|
|
99
99
|
}, (err) => {
|
|
100
|
-
|
|
100
|
+
logInfo(err);
|
|
101
101
|
cb(undefined);
|
|
102
102
|
});
|
|
103
103
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { _each, isEmpty } from '../src/utils.js';
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
3
|
+
import URLSearchParams from 'core-js-pure/web/url-search-params'
|
|
3
4
|
|
|
4
5
|
const BIDDER_CODE = 'fluct';
|
|
5
6
|
const END_POINT = 'https://hb.adingo.jp/prebid';
|
|
@@ -31,7 +32,7 @@ export const spec = {
|
|
|
31
32
|
const serverRequests = [];
|
|
32
33
|
const referer = bidderRequest.refererInfo.referer;
|
|
33
34
|
|
|
34
|
-
|
|
35
|
+
_each(validBidRequests, (request) => {
|
|
35
36
|
const data = Object();
|
|
36
37
|
|
|
37
38
|
data.referer = referer;
|
|
@@ -40,7 +41,7 @@ export const spec = {
|
|
|
40
41
|
data.transactionId = request.transactionId;
|
|
41
42
|
|
|
42
43
|
data.sizes = [];
|
|
43
|
-
|
|
44
|
+
_each(request.sizes, (size) => {
|
|
44
45
|
data.sizes.push({
|
|
45
46
|
w: size[0],
|
|
46
47
|
h: size[1]
|
|
@@ -79,7 +80,7 @@ export const spec = {
|
|
|
79
80
|
const bidResponses = [];
|
|
80
81
|
|
|
81
82
|
const res = serverResponse.body;
|
|
82
|
-
if (!
|
|
83
|
+
if (!isEmpty(res) && !isEmpty(res.seatbid) && !isEmpty(res.seatbid[0].bid)) {
|
|
83
84
|
const bid = res.seatbid[0].bid[0];
|
|
84
85
|
const dealId = bid.dealid;
|
|
85
86
|
const beaconUrl = bid.burl;
|
|
@@ -101,7 +102,7 @@ export const spec = {
|
|
|
101
102
|
advertiserDomains: bid.adomain || [],
|
|
102
103
|
},
|
|
103
104
|
};
|
|
104
|
-
if (!
|
|
105
|
+
if (!isEmpty(dealId)) {
|
|
105
106
|
data.dealId = dealId;
|
|
106
107
|
}
|
|
107
108
|
bidResponses.push(data);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { logWarn, isArray } from '../src/utils.js';
|
|
2
2
|
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
4
|
|
|
@@ -72,7 +72,7 @@ function getPricing(xmlNode) {
|
|
|
72
72
|
price: priceNode.textContent || priceNode.innerText
|
|
73
73
|
};
|
|
74
74
|
} else {
|
|
75
|
-
|
|
75
|
+
logWarn('PREBID - ' + BIDDER_CODE + ': No bid received or missing pricing extension.');
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
return princingData;
|
|
@@ -329,7 +329,7 @@ export const spec = {
|
|
|
329
329
|
var playerSize = [];
|
|
330
330
|
if (currentBidRequest.mediaTypes.video && currentBidRequest.mediaTypes.video.playerSize) {
|
|
331
331
|
// If mediaTypes is video, get size from mediaTypes.video.playerSize per http://prebid.org/blog/pbjs-3
|
|
332
|
-
if (
|
|
332
|
+
if (isArray(currentBidRequest.mediaTypes.video.playerSize[0])) {
|
|
333
333
|
playerSize = currentBidRequest.mediaTypes.video.playerSize[0];
|
|
334
334
|
} else {
|
|
335
335
|
playerSize = currentBidRequest.mediaTypes.video.playerSize;
|
|
@@ -371,7 +371,7 @@ export const spec = {
|
|
|
371
371
|
var playerSize = [];
|
|
372
372
|
if (bidrequest.mediaTypes.video && bidrequest.mediaTypes.video.playerSize) {
|
|
373
373
|
// If mediaTypes is video, get size from mediaTypes.video.playerSize per http://prebid.org/blog/pbjs-3
|
|
374
|
-
if (
|
|
374
|
+
if (isArray(bidrequest.mediaTypes.video.playerSize[0])) {
|
|
375
375
|
playerSize = bidrequest.mediaTypes.video.playerSize[0];
|
|
376
376
|
} else {
|
|
377
377
|
playerSize = bidrequest.mediaTypes.video.playerSize;
|
|
@@ -393,7 +393,7 @@ export const spec = {
|
|
|
393
393
|
var parser = new DOMParser();
|
|
394
394
|
xmlDoc = parser.parseFromString(serverResponse, 'application/xml');
|
|
395
395
|
} catch (err) {
|
|
396
|
-
|
|
396
|
+
logWarn('Prebid.js - ' + BIDDER_CODE + ' : ' + err);
|
|
397
397
|
return;
|
|
398
398
|
}
|
|
399
399
|
|
|
@@ -420,7 +420,7 @@ export const spec = {
|
|
|
420
420
|
currency: princingData.currency,
|
|
421
421
|
netRevenue: true,
|
|
422
422
|
ttl: 360,
|
|
423
|
-
meta: { advertiserDomains: princingData.adomain &&
|
|
423
|
+
meta: { advertiserDomains: princingData.adomain && isArray(princingData.adomain) ? princingData.adomain : [] },
|
|
424
424
|
dealId: dealId,
|
|
425
425
|
campaignId: campaignId,
|
|
426
426
|
bannerId: bannerId
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { isFn, isPlainObject, isStr, isNumber, getDNT, deepSetValue, inIframe, isArray, deepAccess, logError, logWarn } from '../src/utils.js';
|
|
2
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import {config} from '../src/config.js';
|
|
4
4
|
import {Renderer} from '../src/Renderer.js';
|
|
@@ -40,7 +40,7 @@ export const helper = {
|
|
|
40
40
|
return BANNER;
|
|
41
41
|
},
|
|
42
42
|
getBidFloor(bid) {
|
|
43
|
-
if (!
|
|
43
|
+
if (!isFn(bid.getFloor)) {
|
|
44
44
|
return bid.params.bidfloor ? bid.params.bidfloor : null;
|
|
45
45
|
}
|
|
46
46
|
|
|
@@ -50,7 +50,7 @@ export const helper = {
|
|
|
50
50
|
currency: 'USD'
|
|
51
51
|
});
|
|
52
52
|
|
|
53
|
-
if (
|
|
53
|
+
if (isPlainObject(bidFloor) && !isNaN(bidFloor.floor) && bidFloor.currency === 'USD') {
|
|
54
54
|
return bidFloor.floor;
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -64,10 +64,10 @@ export const spec = {
|
|
|
64
64
|
supportedMediaTypes: ['banner', 'video'],
|
|
65
65
|
|
|
66
66
|
isBidRequestValid: function (bid) {
|
|
67
|
-
return !!bid.params.supplyPartnerId &&
|
|
68
|
-
(!bid.params['rtbEndpoint'] ||
|
|
69
|
-
(!bid.params.bidfloor ||
|
|
70
|
-
(!bid.params['adpos'] ||
|
|
67
|
+
return !!bid.params.supplyPartnerId && isStr(bid.params.supplyPartnerId) &&
|
|
68
|
+
(!bid.params['rtbEndpoint'] || isStr(bid.params['rtbEndpoint'])) &&
|
|
69
|
+
(!bid.params.bidfloor || isNumber(bid.params.bidfloor)) &&
|
|
70
|
+
(!bid.params['adpos'] || isNumber(bid.params['adpos'])) &&
|
|
71
71
|
(!bid.params['protocols'] || Array.isArray(bid.params['protocols'])) &&
|
|
72
72
|
(!bid.params.instl || bid.params.instl === 0 || bid.params.instl === 1);
|
|
73
73
|
},
|
|
@@ -88,7 +88,7 @@ export const spec = {
|
|
|
88
88
|
},
|
|
89
89
|
device: {
|
|
90
90
|
ua: navigator.userAgent,
|
|
91
|
-
dnt:
|
|
91
|
+
dnt: getDNT() ? 1 : 0,
|
|
92
92
|
h: screen.height,
|
|
93
93
|
w: screen.width,
|
|
94
94
|
language: navigator.language
|
|
@@ -107,16 +107,16 @@ export const spec = {
|
|
|
107
107
|
consent_required: gdprConsent.gdprApplies
|
|
108
108
|
};
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
deepSetValue(rtbBidRequest, 'regs.ext.gdpr', gdprConsent.gdprApplies === true ? 1 : 0);
|
|
111
|
+
deepSetValue(rtbBidRequest, 'user.ext.consent', gdprConsent.consentString);
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
if (validBidRequests[0].schain) {
|
|
115
|
-
|
|
115
|
+
deepSetValue(rtbBidRequest, 'source.ext.schain', validBidRequests[0].schain);
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
if (bidderRequest && bidderRequest.uspConsent) {
|
|
119
|
-
|
|
119
|
+
deepSetValue(rtbBidRequest, 'regs.ext.us_privacy', bidderRequest.uspConsent);
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
const imp = {
|
|
@@ -138,7 +138,7 @@ export const spec = {
|
|
|
138
138
|
w: sizes.length ? sizes[0][0] : 300,
|
|
139
139
|
h: sizes.length ? sizes[0][1] : 250,
|
|
140
140
|
pos: params.pos || 0,
|
|
141
|
-
topframe:
|
|
141
|
+
topframe: inIframe() ? 0 : 1
|
|
142
142
|
}
|
|
143
143
|
});
|
|
144
144
|
rtbBidRequest.imp.push(bannerImp);
|
|
@@ -166,10 +166,10 @@ export const spec = {
|
|
|
166
166
|
}
|
|
167
167
|
});
|
|
168
168
|
|
|
169
|
-
if (
|
|
169
|
+
if (isArray(playerSize[0])) {
|
|
170
170
|
videoImp.video.w = playerSize[0][0];
|
|
171
171
|
videoImp.video.h = playerSize[0][1];
|
|
172
|
-
} else if (
|
|
172
|
+
} else if (isNumber(playerSize[0])) {
|
|
173
173
|
videoImp.video.w = playerSize[0];
|
|
174
174
|
videoImp.video.h = playerSize[1];
|
|
175
175
|
} else {
|
|
@@ -183,8 +183,8 @@ export const spec = {
|
|
|
183
183
|
|
|
184
184
|
let eids = [];
|
|
185
185
|
if (bidRequest && bidRequest.userId) {
|
|
186
|
-
addExternalUserId(eids,
|
|
187
|
-
addExternalUserId(eids,
|
|
186
|
+
addExternalUserId(eids, deepAccess(bidRequest, `userId.id5id.uid`), 'id5-sync.com', 'ID5ID');
|
|
187
|
+
addExternalUserId(eids, deepAccess(bidRequest, `userId.tdid`), 'adserver.org', 'TDID');
|
|
188
188
|
}
|
|
189
189
|
if (eids.length > 0) {
|
|
190
190
|
rtbBidRequest.user.ext.eids = eids;
|
|
@@ -206,7 +206,7 @@ export const spec = {
|
|
|
206
206
|
interpretResponse: function (serverResponse, bidRequest) {
|
|
207
207
|
const response = serverResponse && serverResponse.body;
|
|
208
208
|
if (!response) {
|
|
209
|
-
|
|
209
|
+
logError('empty response');
|
|
210
210
|
return [];
|
|
211
211
|
}
|
|
212
212
|
|
|
@@ -232,11 +232,11 @@ export const spec = {
|
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
-
if (
|
|
235
|
+
if (deepAccess(bidRequest.bidRequest, 'mediaTypes.' + outBid.mediaType)) {
|
|
236
236
|
if (outBid.mediaType === BANNER) {
|
|
237
237
|
outBids.push(Object.assign({}, outBid, {ad: bid.adm}));
|
|
238
238
|
} else if (outBid.mediaType === VIDEO) {
|
|
239
|
-
const context =
|
|
239
|
+
const context = deepAccess(bidRequest.bidRequest, 'mediaTypes.video.context');
|
|
240
240
|
outBids.push(Object.assign({}, outBid, {
|
|
241
241
|
vastUrl: bid.ext.vast_url,
|
|
242
242
|
vastXml: bid.adm,
|
|
@@ -315,7 +315,7 @@ function newRenderer(bidRequest, bid, rendererOptions = {}) {
|
|
|
315
315
|
try {
|
|
316
316
|
renderer.setRender(renderOutstream);
|
|
317
317
|
} catch (err) {
|
|
318
|
-
|
|
318
|
+
logWarn('Prebid Error calling setRender on renderer', err);
|
|
319
319
|
}
|
|
320
320
|
return renderer;
|
|
321
321
|
}
|
|
@@ -341,7 +341,7 @@ function renderOutstream(bid) {
|
|
|
341
341
|
}
|
|
342
342
|
|
|
343
343
|
function addExternalUserId(eids, value, source, rtiPartner) {
|
|
344
|
-
if (
|
|
344
|
+
if (isStr(value)) {
|
|
345
345
|
eids.push({
|
|
346
346
|
source,
|
|
347
347
|
uids: [{
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* This module gives publishers extra set of features to enforce individual purposes of TCF v2
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import { deepAccess, logWarn, isArray, hasDeviceAccess } from '../src/utils.js';
|
|
6
6
|
import { config } from '../src/config.js';
|
|
7
|
-
import { hasDeviceAccess } from '../src/utils.js';
|
|
8
7
|
import adapterManager, { gdprDataHandler } from '../src/adapterManager.js';
|
|
9
8
|
import find from 'core-js-pure/features/array/find.js';
|
|
10
9
|
import includes from 'core-js-pure/features/array/includes.js';
|
|
@@ -136,9 +135,9 @@ export function validateRules(rule, consentData, currentModule, gvlId) {
|
|
|
136
135
|
}
|
|
137
136
|
|
|
138
137
|
// get data from the consent string
|
|
139
|
-
const purposeConsent =
|
|
140
|
-
const vendorConsent =
|
|
141
|
-
const liTransparency =
|
|
138
|
+
const purposeConsent = deepAccess(consentData, `vendorData.purpose.consents.${purposeId}`);
|
|
139
|
+
const vendorConsent = deepAccess(consentData, `vendorData.vendor.consents.${gvlId}`);
|
|
140
|
+
const liTransparency = deepAccess(consentData, `vendorData.purpose.legitimateInterests.${purposeId}`);
|
|
142
141
|
|
|
143
142
|
/*
|
|
144
143
|
Since vendor exceptions have already been handled, the purpose as a whole is allowed if it's not being enforced
|
|
@@ -170,7 +169,7 @@ export function deviceAccessHook(fn, gvlid, moduleName, result) {
|
|
|
170
169
|
hasEnforcementHook: true
|
|
171
170
|
});
|
|
172
171
|
if (!hasDeviceAccess()) {
|
|
173
|
-
|
|
172
|
+
logWarn('Device access is disabled by Publisher');
|
|
174
173
|
result.valid = false;
|
|
175
174
|
fn.call(this, gvlid, moduleName, result);
|
|
176
175
|
} else {
|
|
@@ -190,7 +189,7 @@ export function deviceAccessHook(fn, gvlid, moduleName, result) {
|
|
|
190
189
|
result.valid = true;
|
|
191
190
|
fn.call(this, gvlid, moduleName, result);
|
|
192
191
|
} else {
|
|
193
|
-
curModule &&
|
|
192
|
+
curModule && logWarn(`TCF2 denied device access for ${curModule}`);
|
|
194
193
|
result.valid = false;
|
|
195
194
|
storageBlocked.push(curModule);
|
|
196
195
|
fn.call(this, gvlid, moduleName, result);
|
|
@@ -222,7 +221,7 @@ export function userSyncHook(fn, ...args) {
|
|
|
222
221
|
if (isAllowed) {
|
|
223
222
|
fn.call(this, ...args);
|
|
224
223
|
} else {
|
|
225
|
-
|
|
224
|
+
logWarn(`User sync not allowed for ${curBidder}`);
|
|
226
225
|
storageBlocked.push(curBidder);
|
|
227
226
|
}
|
|
228
227
|
} else {
|
|
@@ -250,7 +249,7 @@ export function userIdHook(fn, submodules, consentData) {
|
|
|
250
249
|
if (isAllowed) {
|
|
251
250
|
return submodule;
|
|
252
251
|
} else {
|
|
253
|
-
|
|
252
|
+
logWarn(`User denied permission to fetch user id for ${moduleName} User id module`);
|
|
254
253
|
storageBlocked.push(moduleName);
|
|
255
254
|
}
|
|
256
255
|
return undefined;
|
|
@@ -282,7 +281,7 @@ export function makeBidRequestsHook(fn, adUnits, ...args) {
|
|
|
282
281
|
if (includes(biddersBlocked, currBidder)) return false;
|
|
283
282
|
const isAllowed = !!validateRules(purpose2Rule, consentData, currBidder, gvlId);
|
|
284
283
|
if (!isAllowed) {
|
|
285
|
-
|
|
284
|
+
logWarn(`TCF2 blocked auction for ${currBidder}`);
|
|
286
285
|
biddersBlocked.push(currBidder);
|
|
287
286
|
}
|
|
288
287
|
return isAllowed;
|
|
@@ -308,7 +307,7 @@ export function enableAnalyticsHook(fn, config) {
|
|
|
308
307
|
const consentData = gdprDataHandler.getConsentData();
|
|
309
308
|
if (consentData && consentData.gdprApplies) {
|
|
310
309
|
if (consentData.apiVersion === 2) {
|
|
311
|
-
if (!
|
|
310
|
+
if (!isArray(config)) {
|
|
312
311
|
config = [config]
|
|
313
312
|
}
|
|
314
313
|
config = config.filter(conf => {
|
|
@@ -317,7 +316,7 @@ export function enableAnalyticsHook(fn, config) {
|
|
|
317
316
|
const isAllowed = !!validateRules(purpose7Rule, consentData, analyticsAdapterCode, gvlid);
|
|
318
317
|
if (!isAllowed) {
|
|
319
318
|
analyticsBlocked.push(analyticsAdapterCode);
|
|
320
|
-
|
|
319
|
+
logWarn(`TCF2 blocked analytics adapter ${conf.provider}`);
|
|
321
320
|
}
|
|
322
321
|
return isAllowed;
|
|
323
322
|
});
|
|
@@ -362,9 +361,9 @@ const hasPurpose7 = (rule) => { return rule.purpose === TCF2.purpose7.name }
|
|
|
362
361
|
* @param {Object} config - GDPR enforcement config object
|
|
363
362
|
*/
|
|
364
363
|
export function setEnforcementConfig(config) {
|
|
365
|
-
const rules =
|
|
364
|
+
const rules = deepAccess(config, 'gdpr.rules');
|
|
366
365
|
if (!rules) {
|
|
367
|
-
|
|
366
|
+
logWarn('TCF2: enforcing P1 and P2 by default');
|
|
368
367
|
enforcementRules = DEFAULT_RULES;
|
|
369
368
|
} else {
|
|
370
369
|
enforcementRules = rules;
|