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
|
@@ -5,11 +5,10 @@ import adapter from '../src/AnalyticsAdapter.js';
|
|
|
5
5
|
import CONSTANTS from '../src/constants.json';
|
|
6
6
|
import adapterManager from '../src/adapterManager.js';
|
|
7
7
|
import { getStorageManager } from '../src/storageManager.js';
|
|
8
|
+
import { generateUUID, logInfo, logError } from '../src/utils.js';
|
|
8
9
|
|
|
9
10
|
const storage = getStorageManager();
|
|
10
11
|
|
|
11
|
-
const utils = require('../src/utils.js');
|
|
12
|
-
|
|
13
12
|
const url = 'https://kinesis.us-east-1.amazonaws.com/';
|
|
14
13
|
const analyticsType = 'endpoint';
|
|
15
14
|
|
|
@@ -56,7 +55,7 @@ function buildSessionIdTimeoutLocalStorageKey() {
|
|
|
56
55
|
|
|
57
56
|
function updateSessionId() {
|
|
58
57
|
if (isSessionIdTimeoutExpired()) {
|
|
59
|
-
let newSessionId =
|
|
58
|
+
let newSessionId = generateUUID();
|
|
60
59
|
storage.setDataInLocalStorage(buildSessionIdLocalStorageKey(), newSessionId);
|
|
61
60
|
}
|
|
62
61
|
initOptions.sessionId = getSessionId();
|
|
@@ -206,7 +205,7 @@ sigmoidAdapter.originEnableAnalytics = sigmoidAdapter.enableAnalytics;
|
|
|
206
205
|
sigmoidAdapter.enableAnalytics = function (config) {
|
|
207
206
|
initOptions = config.options;
|
|
208
207
|
initOptions.utmTagData = this.buildUtmTagData();
|
|
209
|
-
|
|
208
|
+
logInfo('Sigmoid Analytics enabled with config', initOptions);
|
|
210
209
|
sigmoidAdapter.originEnableAnalytics(config);
|
|
211
210
|
};
|
|
212
211
|
|
|
@@ -246,7 +245,7 @@ function send(eventType, data, sendDataType) {
|
|
|
246
245
|
AWS.config.credentials.get(function(err) {
|
|
247
246
|
// attach event listener
|
|
248
247
|
if (err) {
|
|
249
|
-
|
|
248
|
+
logError(err);
|
|
250
249
|
return;
|
|
251
250
|
}
|
|
252
251
|
// create kinesis service object
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @requires module:modules/realTimeData
|
|
8
8
|
*/
|
|
9
9
|
import {getGlobal} from '../src/prebidGlobal.js';
|
|
10
|
-
import
|
|
10
|
+
import { deepAccess, logError, deepEqual, deepSetValue, isEmpty, mergeDeep } from '../src/utils.js';
|
|
11
11
|
import {submodule} from '../src/hook.js';
|
|
12
12
|
import {ajax} from '../src/ajax.js';
|
|
13
13
|
import findIndex from 'core-js-pure/features/array/find-index.js';
|
|
@@ -44,7 +44,7 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig,
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
// default global endpoint is cookie-based if no rules falls into cookieless or consent has been given or GDPR doesn't apply
|
|
47
|
-
if (!sirdataDomain || !gdprApplies || (
|
|
47
|
+
if (!sirdataDomain || !gdprApplies || (deepAccess(userConsent, 'gdpr.vendorData.vendor.consents') && userConsent.gdpr.vendorData.vendor.consents[53] && userConsent.gdpr.vendorData.purpose.consents[1] && userConsent.gdpr.vendorData.purpose.consents[4])) {
|
|
48
48
|
sirdataDomain = 'sddan.com';
|
|
49
49
|
sendWithCredentials = true;
|
|
50
50
|
}
|
|
@@ -64,7 +64,7 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig,
|
|
|
64
64
|
}
|
|
65
65
|
} catch (e) {
|
|
66
66
|
onDone();
|
|
67
|
-
|
|
67
|
+
logError('unable to parse Sirdata data' + e);
|
|
68
68
|
}
|
|
69
69
|
} else if (req.status === 204) {
|
|
70
70
|
onDone();
|
|
@@ -72,7 +72,7 @@ export function getSegmentsAndCategories(reqBidsConfigObj, onDone, moduleConfig,
|
|
|
72
72
|
},
|
|
73
73
|
error: function () {
|
|
74
74
|
onDone();
|
|
75
|
-
|
|
75
|
+
logError('unable to get Sirdata data');
|
|
76
76
|
}
|
|
77
77
|
},
|
|
78
78
|
null,
|
|
@@ -89,18 +89,18 @@ export function setGlobalOrtb2(segments, categories) {
|
|
|
89
89
|
try {
|
|
90
90
|
let addOrtb2 = {};
|
|
91
91
|
let testGlobal = getGlobal().getConfig('ortb2') || {};
|
|
92
|
-
if (!
|
|
93
|
-
|
|
92
|
+
if (!deepAccess(testGlobal, 'user.ext.data.sd_rtd') || !deepEqual(testGlobal.user.ext.data.sd_rtd, segments)) {
|
|
93
|
+
deepSetValue(addOrtb2, 'user.ext.data.sd_rtd', segments || {});
|
|
94
94
|
}
|
|
95
|
-
if (!
|
|
96
|
-
|
|
95
|
+
if (!deepAccess(testGlobal, 'site.ext.data.sd_rtd') || !deepEqual(testGlobal.site.ext.data.sd_rtd, categories)) {
|
|
96
|
+
deepSetValue(addOrtb2, 'site.ext.data.sd_rtd', categories || {});
|
|
97
97
|
}
|
|
98
|
-
if (!
|
|
99
|
-
let ortb2 = {ortb2:
|
|
98
|
+
if (!isEmpty(addOrtb2)) {
|
|
99
|
+
let ortb2 = {ortb2: mergeDeep({}, testGlobal, addOrtb2)};
|
|
100
100
|
getGlobal().setConfig(ortb2);
|
|
101
101
|
}
|
|
102
102
|
} catch (e) {
|
|
103
|
-
|
|
103
|
+
logError(e)
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
return true;
|
|
@@ -109,19 +109,19 @@ export function setGlobalOrtb2(segments, categories) {
|
|
|
109
109
|
export function setBidderOrtb2(bidder, segments, categories) {
|
|
110
110
|
try {
|
|
111
111
|
let addOrtb2 = {};
|
|
112
|
-
let testBidder =
|
|
113
|
-
if (!
|
|
114
|
-
|
|
112
|
+
let testBidder = deepAccess(config.getBidderConfig(), bidder + '.ortb2') || {};
|
|
113
|
+
if (!deepAccess(testBidder, 'user.ext.data.sd_rtd') || !deepEqual(testBidder.user.ext.data.sd_rtd, segments)) {
|
|
114
|
+
deepSetValue(addOrtb2, 'user.ext.data.sd_rtd', segments || {});
|
|
115
115
|
}
|
|
116
|
-
if (!
|
|
117
|
-
|
|
116
|
+
if (!deepAccess(testBidder, 'site.ext.data.sd_rtd') || !deepEqual(testBidder.site.ext.data.sd_rtd, categories)) {
|
|
117
|
+
deepSetValue(addOrtb2, 'site.ext.data.sd_rtd', categories || {});
|
|
118
118
|
}
|
|
119
|
-
if (!
|
|
120
|
-
let ortb2 = {ortb2:
|
|
119
|
+
if (!isEmpty(addOrtb2)) {
|
|
120
|
+
let ortb2 = {ortb2: mergeDeep({}, testBidder, addOrtb2)};
|
|
121
121
|
getGlobal().setBidderConfig({ bidders: [bidder], config: ortb2 });
|
|
122
122
|
}
|
|
123
123
|
} catch (e) {
|
|
124
|
-
|
|
124
|
+
logError(e)
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
return true;
|
|
@@ -132,7 +132,7 @@ export function loadCustomFunction (todo, adUnit, list, data, bid) {
|
|
|
132
132
|
if (typeof todo == 'function') {
|
|
133
133
|
todo(adUnit, list, data, bid);
|
|
134
134
|
}
|
|
135
|
-
} catch (e) {
|
|
135
|
+
} catch (e) { logError(e); }
|
|
136
136
|
return true;
|
|
137
137
|
}
|
|
138
138
|
|
|
@@ -148,14 +148,14 @@ export function getSegAndCatsArray(data, minScore) {
|
|
|
148
148
|
}
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
|
-
} catch (e) {
|
|
151
|
+
} catch (e) { logError(e); }
|
|
152
152
|
try {
|
|
153
153
|
if (data && data.segments) {
|
|
154
154
|
for (let segId in data.segments) {
|
|
155
155
|
sirdataData.segments.push(data.segments[segId].toString());
|
|
156
156
|
}
|
|
157
157
|
}
|
|
158
|
-
} catch (e) {
|
|
158
|
+
} catch (e) { logError(e); }
|
|
159
159
|
return sirdataData;
|
|
160
160
|
}
|
|
161
161
|
|
|
@@ -165,7 +165,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
|
|
|
165
165
|
const globalMinScore = moduleConfig.params.hasOwnProperty('contextualMinRelevancyScore') ? moduleConfig.params.contextualMinRelevancyScore : 30;
|
|
166
166
|
var sirdataData = getSegAndCatsArray(data, globalMinScore);
|
|
167
167
|
|
|
168
|
-
if (!sirdataData || (sirdataData.segments.length < 1 && sirdataData.categories.length < 1)) {
|
|
168
|
+
if (!sirdataData || (sirdataData.segments.length < 1 && sirdataData.categories.length < 1)) { logError('no cats'); onDone(); return adUnits; }
|
|
169
169
|
|
|
170
170
|
const sirdataList = sirdataData.segments.concat(sirdataData.categories);
|
|
171
171
|
|
|
@@ -191,7 +191,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
|
|
|
191
191
|
n.setTargeting('sd_rtd', sirdataList.concat(curationData.segments).concat(curationData.categories));
|
|
192
192
|
}
|
|
193
193
|
})
|
|
194
|
-
} catch (e) {
|
|
194
|
+
} catch (e) { logError(e); }
|
|
195
195
|
}
|
|
196
196
|
|
|
197
197
|
// Bid targeting level for FPD non-generic biders
|
|
@@ -199,8 +199,8 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
|
|
|
199
199
|
var indexFound = false;
|
|
200
200
|
|
|
201
201
|
adUnits.forEach(adUnit => {
|
|
202
|
-
if (!biddersParamsExist && !
|
|
203
|
-
|
|
202
|
+
if (!biddersParamsExist && !deepAccess(adUnit, 'ortb2Imp.ext.data.sd_rtd')) {
|
|
203
|
+
deepSetValue(adUnit, 'ortb2Imp.ext.data.sd_rtd', sirdataList);
|
|
204
204
|
}
|
|
205
205
|
|
|
206
206
|
adUnit.hasOwnProperty('bids') && adUnit.bids.forEach(bid => {
|
|
@@ -236,7 +236,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
|
|
|
236
236
|
if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) {
|
|
237
237
|
loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataList.concat(curationData.segments).concat(curationData.categories), data, bid);
|
|
238
238
|
} else {
|
|
239
|
-
|
|
239
|
+
deepSetValue(bid, 'params.keywords.sd_rtd', sirdataList.concat(curationData.segments).concat(curationData.categories));
|
|
240
240
|
}
|
|
241
241
|
break;
|
|
242
242
|
|
|
@@ -259,7 +259,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
|
|
|
259
259
|
target.push('sd_rtd=' + entry);
|
|
260
260
|
}
|
|
261
261
|
});
|
|
262
|
-
|
|
262
|
+
deepSetValue(bid, 'params.target', target.join(';'));
|
|
263
263
|
}
|
|
264
264
|
break;
|
|
265
265
|
|
|
@@ -313,7 +313,7 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
|
|
|
313
313
|
if (indexFound && moduleConfig.params.bidders[bidderIndex].hasOwnProperty('customFunction')) {
|
|
314
314
|
loadCustomFunction(moduleConfig.params.bidders[bidderIndex].customFunction, adUnit, sirdataList.concat(curationData.segments).concat(curationData.categories), data, bid);
|
|
315
315
|
} else {
|
|
316
|
-
|
|
316
|
+
deepSetValue(bid, 'ortb2.user.ext.data', {segments: sirdataData.segments.concat(curationData.segments), contextual_categories: {...data.contextual_categories, ...data.shared_taxonomy[curationId].contextual_categories}});
|
|
317
317
|
}
|
|
318
318
|
break;
|
|
319
319
|
|
|
@@ -372,16 +372,16 @@ export function addSegmentData(adUnits, data, moduleConfig, onDone) {
|
|
|
372
372
|
|
|
373
373
|
default:
|
|
374
374
|
if (!biddersParamsExist || indexFound) {
|
|
375
|
-
if (!
|
|
376
|
-
|
|
375
|
+
if (!deepAccess(bid, 'ortb2.site.ext.data.sd_rtd')) {
|
|
376
|
+
deepSetValue(bid, 'ortb2.site.ext.data.sd_rtd', sirdataData.categories);
|
|
377
377
|
}
|
|
378
|
-
if (!
|
|
379
|
-
|
|
378
|
+
if (!deepAccess(bid, 'ortb2.user.ext.data.sd_rtd')) {
|
|
379
|
+
deepSetValue(bid, 'ortb2.user.ext.data.sd_rtd', sirdataData.segments);
|
|
380
380
|
}
|
|
381
381
|
}
|
|
382
382
|
}
|
|
383
383
|
}
|
|
384
|
-
} catch (e) {
|
|
384
|
+
} catch (e) { logError(e) }
|
|
385
385
|
})
|
|
386
386
|
});
|
|
387
387
|
|
package/modules/sizeMappingV2.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* rendering. Read full API documentation on Prebid.org, http://prebid.org/dev-docs/modules/sizeMappingV2.html
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
import
|
|
7
|
+
import { isArray, logError, isArrayOfNums, deepClone, logWarn, getWindowTop, deepEqual, logInfo, isValidMediaTypes, deepAccess, getDefinedParams, getUniqueIdentifierStr, flatten } from '../src/utils.js';
|
|
8
8
|
import { processNativeAdUnitParams } from '../src/native.js';
|
|
9
9
|
import { adunitCounter } from '../src/adUnits.js';
|
|
10
10
|
import includes from 'core-js-pure/features/array/includes.js';
|
|
@@ -66,7 +66,7 @@ export function isUsingNewSizeMapping(adUnits) {
|
|
|
66
66
|
});
|
|
67
67
|
|
|
68
68
|
// checks for the presence of sizeConfig property at the adUnit.bids[].bidder object
|
|
69
|
-
adUnit.bids &&
|
|
69
|
+
adUnit.bids && isArray(adUnit.bids) && adUnit.bids.forEach(bidder => {
|
|
70
70
|
if (bidder.sizeConfig) {
|
|
71
71
|
if (isUsingSizeMappingBool === false) {
|
|
72
72
|
isUsingSizeMappingBool = true;
|
|
@@ -108,7 +108,7 @@ export function checkAdUnitSetupHook(adUnits) {
|
|
|
108
108
|
If they do not, return 'false'.
|
|
109
109
|
*/
|
|
110
110
|
if (!(includes(keys, 'minViewPort') && includes(keys, propertyName))) {
|
|
111
|
-
|
|
111
|
+
logError(`Ad unit ${adUnitCode}: Missing required property 'minViewPort' or 'sizes' from 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
|
|
112
112
|
isValid = false;
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
@@ -117,8 +117,8 @@ export function checkAdUnitSetupHook(adUnits) {
|
|
|
117
117
|
Verify that 'config.minViewPort' property is in [width, height] format.
|
|
118
118
|
If not, return false.
|
|
119
119
|
*/
|
|
120
|
-
if (!
|
|
121
|
-
|
|
120
|
+
if (!isArrayOfNums(config.minViewPort, 2)) {
|
|
121
|
+
logError(`Ad unit ${adUnitCode}: Invalid declaration of 'minViewPort' in 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
|
|
122
122
|
isValid = false
|
|
123
123
|
return;
|
|
124
124
|
}
|
|
@@ -141,7 +141,7 @@ export function checkAdUnitSetupHook(adUnits) {
|
|
|
141
141
|
showError = true;
|
|
142
142
|
}
|
|
143
143
|
if (showError) {
|
|
144
|
-
|
|
144
|
+
logError(`Ad unit ${adUnitCode}: Invalid declaration of '${propertyName}' in 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
|
|
145
145
|
return;
|
|
146
146
|
}
|
|
147
147
|
}
|
|
@@ -152,13 +152,13 @@ export function checkAdUnitSetupHook(adUnits) {
|
|
|
152
152
|
*/
|
|
153
153
|
if (mediaType === 'native') {
|
|
154
154
|
if (typeof config[propertyName] !== 'boolean') {
|
|
155
|
-
|
|
155
|
+
logError(`Ad unit ${adUnitCode}: Invalid declaration of 'active' in 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
|
|
156
156
|
isValid = false;
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
});
|
|
160
160
|
} else {
|
|
161
|
-
|
|
161
|
+
logError(`Ad unit ${adUnitCode}: Invalid declaration of 'sizeConfig' in 'mediaTypes.${mediaType}.sizeConfig'. ${conditionalLogMessages[mediaType]}`);
|
|
162
162
|
isValid = false;
|
|
163
163
|
return isValid;
|
|
164
164
|
}
|
|
@@ -172,13 +172,13 @@ export function checkAdUnitSetupHook(adUnits) {
|
|
|
172
172
|
const mediaTypes = adUnit.mediaTypes;
|
|
173
173
|
let validatedBanner, validatedVideo, validatedNative;
|
|
174
174
|
|
|
175
|
-
if (!bids || !
|
|
176
|
-
|
|
175
|
+
if (!bids || !isArray(bids)) {
|
|
176
|
+
logError(`Detected adUnit.code '${adUnit.code}' did not have 'adUnit.bids' defined or 'adUnit.bids' is not an array. Removing adUnit from auction.`);
|
|
177
177
|
return;
|
|
178
178
|
}
|
|
179
179
|
|
|
180
180
|
if (!mediaTypes || Object.keys(mediaTypes).length === 0) {
|
|
181
|
-
|
|
181
|
+
logError(`Detected adUnit.code '${adUnit.code}' did not have a 'mediaTypes' object defined. This is a required field for the auction, so this adUnit has been removed.`);
|
|
182
182
|
return;
|
|
183
183
|
}
|
|
184
184
|
if (mediaTypes.banner) {
|
|
@@ -187,7 +187,7 @@ export function checkAdUnitSetupHook(adUnits) {
|
|
|
187
187
|
validatedBanner = adUnitSetupChecks.validateBannerMediaType(adUnit);
|
|
188
188
|
} else if (mediaTypes.banner.sizeConfig) {
|
|
189
189
|
// Ad unit is using the 'sizeConfig' property, 'mediaTypes.banner.sizeConfig'. Apply the new checks!
|
|
190
|
-
validatedBanner =
|
|
190
|
+
validatedBanner = deepClone(adUnit);
|
|
191
191
|
const isBannerValid = validateSizeConfig('banner', mediaTypes.banner.sizeConfig, adUnit.code);
|
|
192
192
|
if (!isBannerValid) {
|
|
193
193
|
delete validatedBanner.mediaTypes.banner;
|
|
@@ -204,8 +204,8 @@ export function checkAdUnitSetupHook(adUnits) {
|
|
|
204
204
|
}
|
|
205
205
|
} else {
|
|
206
206
|
// Ad unit is invalid since it's mediaType property does not have either 'sizes' or 'sizeConfig' declared.
|
|
207
|
-
|
|
208
|
-
validatedBanner =
|
|
207
|
+
logError(`Ad unit ${adUnit.code}: 'mediaTypes.banner' does not contain either 'sizes' or 'sizeConfig' property. Removing 'mediaTypes.banner' from ad unit.`);
|
|
208
|
+
validatedBanner = deepClone(adUnit);
|
|
209
209
|
delete validatedBanner.mediaTypes.banner;
|
|
210
210
|
}
|
|
211
211
|
}
|
|
@@ -216,7 +216,7 @@ export function checkAdUnitSetupHook(adUnits) {
|
|
|
216
216
|
validatedVideo = validatedBanner ? adUnitSetupChecks.validateVideoMediaType(validatedBanner) : adUnitSetupChecks.validateVideoMediaType(adUnit);
|
|
217
217
|
} else if (mediaTypes.video.sizeConfig) {
|
|
218
218
|
// Ad unit is using the 'sizeConfig' property, 'mediaTypes.video.sizeConfig'. Apply the new checks!
|
|
219
|
-
validatedVideo = validatedBanner ||
|
|
219
|
+
validatedVideo = validatedBanner || deepClone(adUnit);
|
|
220
220
|
const isVideoValid = validateSizeConfig('video', mediaTypes.video.sizeConfig, adUnit.code);
|
|
221
221
|
if (!isVideoValid) {
|
|
222
222
|
delete validatedVideo.mediaTypes.video.sizeConfig;
|
|
@@ -274,7 +274,7 @@ export function checkBidderSizeConfigFormat(sizeConfig) {
|
|
|
274
274
|
const keys = Object.keys(config);
|
|
275
275
|
if ((includes(keys, 'minViewPort') &&
|
|
276
276
|
includes(keys, 'relevantMediaTypes')) &&
|
|
277
|
-
|
|
277
|
+
isArrayOfNums(config.minViewPort, 2) &&
|
|
278
278
|
Array.isArray(config.relevantMediaTypes) &&
|
|
279
279
|
config.relevantMediaTypes.length > 0 &&
|
|
280
280
|
(config.relevantMediaTypes.length > 1 ? (config.relevantMediaTypes.every(mt => (includes(['banner', 'video', 'native'], mt))))
|
|
@@ -322,14 +322,14 @@ export function isLabelActivated(bidOrAdUnit, activeLabels, adUnitCode, adUnitIn
|
|
|
322
322
|
let labelOperator;
|
|
323
323
|
const labelsFound = Object.keys(bidOrAdUnit).filter(prop => prop === 'labelAny' || prop === 'labelAll');
|
|
324
324
|
if (labelsFound && labelsFound.length > 1) {
|
|
325
|
-
|
|
325
|
+
logWarn(`Size Mapping V2:: ${(bidOrAdUnit.code)
|
|
326
326
|
? (`Ad Unit: ${bidOrAdUnit.code}(${adUnitInstance}) => Ad unit has multiple label operators. Using the first declared operator: ${labelsFound[0]}`)
|
|
327
327
|
: (`Ad Unit: ${adUnitCode}(${adUnitInstance}), Bidder: ${bidOrAdUnit.bidder} => Bidder has multiple label operators. Using the first declared operator: ${labelsFound[0]}`)}`);
|
|
328
328
|
}
|
|
329
329
|
labelOperator = labelsFound[0];
|
|
330
330
|
|
|
331
331
|
if (labelOperator && !activeLabels) {
|
|
332
|
-
|
|
332
|
+
logWarn(`Size Mapping V2:: ${(bidOrAdUnit.code)
|
|
333
333
|
? (`Ad Unit: ${bidOrAdUnit.code}(${adUnitInstance}) => Found '${labelOperator}' on ad unit, but 'labels' is not set. Did you pass 'labels' to pbjs.requestBids() ?`)
|
|
334
334
|
: (`Ad Unit: ${adUnitCode}(${adUnitInstance}), Bidder: ${bidOrAdUnit.bidder} => Found '${labelOperator}' on bidder, but 'labels' is not set. Did you pass 'labels' to pbjs.requestBids() ?`)}`);
|
|
335
335
|
return true;
|
|
@@ -337,13 +337,13 @@ export function isLabelActivated(bidOrAdUnit, activeLabels, adUnitCode, adUnitIn
|
|
|
337
337
|
|
|
338
338
|
if (labelOperator === 'labelAll' && Array.isArray(bidOrAdUnit[labelOperator])) {
|
|
339
339
|
if (bidOrAdUnit.labelAll.length === 0) {
|
|
340
|
-
|
|
340
|
+
logWarn(`Size Mapping V2:: Ad Unit: ${bidOrAdUnit.code}(${adUnitInstance}) => Ad unit has declared property 'labelAll' with an empty array.`);
|
|
341
341
|
return true;
|
|
342
342
|
}
|
|
343
343
|
return bidOrAdUnit.labelAll.every(label => includes(activeLabels, label));
|
|
344
344
|
} else if (labelOperator === 'labelAny' && Array.isArray(bidOrAdUnit[labelOperator])) {
|
|
345
345
|
if (bidOrAdUnit.labelAny.length === 0) {
|
|
346
|
-
|
|
346
|
+
logWarn(`Size Mapping V2:: Ad Unit: ${bidOrAdUnit.code}(${adUnitInstance}) => Ad unit has declared property 'labelAny' with an empty array.`);
|
|
347
347
|
return true;
|
|
348
348
|
}
|
|
349
349
|
return bidOrAdUnit.labelAny.some(label => includes(activeLabels, label));
|
|
@@ -363,7 +363,7 @@ export function getFilteredMediaTypes(mediaTypes) {
|
|
|
363
363
|
activeViewportHeight,
|
|
364
364
|
transformedMediaTypes;
|
|
365
365
|
|
|
366
|
-
transformedMediaTypes =
|
|
366
|
+
transformedMediaTypes = deepClone(mediaTypes);
|
|
367
367
|
|
|
368
368
|
let activeSizeBucket = {
|
|
369
369
|
banner: undefined,
|
|
@@ -372,10 +372,10 @@ export function getFilteredMediaTypes(mediaTypes) {
|
|
|
372
372
|
}
|
|
373
373
|
|
|
374
374
|
try {
|
|
375
|
-
activeViewportWidth =
|
|
376
|
-
activeViewportHeight =
|
|
375
|
+
activeViewportWidth = getWindowTop().innerWidth;
|
|
376
|
+
activeViewportHeight = getWindowTop().innerHeight;
|
|
377
377
|
} catch (e) {
|
|
378
|
-
|
|
378
|
+
logWarn(`SizeMappingv2:: Unfriendly iframe blocks viewport size to be evaluated correctly`);
|
|
379
379
|
activeViewportWidth = window.innerWidth;
|
|
380
380
|
activeViewportHeight = window.innerHeight;
|
|
381
381
|
}
|
|
@@ -490,7 +490,7 @@ export function getAdUnitDetail(auctionId, adUnit, labels) {
|
|
|
490
490
|
const adUnitsForAuction = sizeMappingInternalStore.getAuctionDetail(auctionId).adUnits;
|
|
491
491
|
|
|
492
492
|
// check if the adUnit exists already in the sizeMappingInterStore (check for equivalence of 'code' && 'mediaTypes' properties)
|
|
493
|
-
const adUnitDetail = adUnitsForAuction.filter(adUnitDetail => adUnitDetail.adUnitCode === adUnit.code &&
|
|
493
|
+
const adUnitDetail = adUnitsForAuction.filter(adUnitDetail => adUnitDetail.adUnitCode === adUnit.code && deepEqual(adUnitDetail.mediaTypes, adUnit.mediaTypes));
|
|
494
494
|
|
|
495
495
|
if (adUnitDetail.length > 0) {
|
|
496
496
|
adUnitDetail[0].cacheHits++;
|
|
@@ -514,7 +514,7 @@ export function getAdUnitDetail(auctionId, adUnit, labels) {
|
|
|
514
514
|
|
|
515
515
|
// set adUnitDetail in sizeMappingInternalStore against the correct 'auctionId'.
|
|
516
516
|
sizeMappingInternalStore.setAuctionDetail(auctionId, adUnitDetail);
|
|
517
|
-
isLabelActivated &&
|
|
517
|
+
isLabelActivated && logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}) => Active size buckets after filtration: `, sizeBucketToSizeMap);
|
|
518
518
|
|
|
519
519
|
return adUnitDetail;
|
|
520
520
|
}
|
|
@@ -522,13 +522,13 @@ export function getAdUnitDetail(auctionId, adUnit, labels) {
|
|
|
522
522
|
|
|
523
523
|
export function getBids({ bidderCode, auctionId, bidderRequestId, adUnits, labels, src }) {
|
|
524
524
|
return adUnits.reduce((result, adUnit) => {
|
|
525
|
-
if (adUnit.mediaTypes &&
|
|
525
|
+
if (adUnit.mediaTypes && isValidMediaTypes(adUnit.mediaTypes)) {
|
|
526
526
|
const { activeViewport, transformedMediaTypes, instance: adUnitInstance, isLabelActivated, cacheHits } = internal.getAdUnitDetail(auctionId, adUnit, labels);
|
|
527
527
|
if (isLabelActivated) {
|
|
528
528
|
// check if adUnit has any active media types remaining, if not drop the adUnit from auction,
|
|
529
529
|
// else proceed to evaluate the bids object.
|
|
530
530
|
if (Object.keys(transformedMediaTypes).length === 0) {
|
|
531
|
-
cacheHits === 0 &&
|
|
531
|
+
cacheHits === 0 && logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}) => Ad unit disabled since there are no active media types after sizeConfig filtration.`);
|
|
532
532
|
return result;
|
|
533
533
|
}
|
|
534
534
|
result
|
|
@@ -536,19 +536,19 @@ export function getBids({ bidderCode, auctionId, bidderRequestId, adUnits, label
|
|
|
536
536
|
.reduce((bids, bid) => {
|
|
537
537
|
if (internal.isLabelActivated(bid, labels, adUnit.code, adUnitInstance)) {
|
|
538
538
|
// handle native params
|
|
539
|
-
const nativeParams = adUnit.nativeParams ||
|
|
539
|
+
const nativeParams = adUnit.nativeParams || deepAccess(adUnit, 'mediaTypes.native');
|
|
540
540
|
if (nativeParams) {
|
|
541
541
|
bid = Object.assign({}, bid, {
|
|
542
542
|
nativeParams: processNativeAdUnitParams(nativeParams)
|
|
543
543
|
});
|
|
544
544
|
}
|
|
545
545
|
|
|
546
|
-
bid = Object.assign({}, bid,
|
|
546
|
+
bid = Object.assign({}, bid, getDefinedParams(adUnit, ['mediaType', 'renderer']));
|
|
547
547
|
|
|
548
548
|
if (bid.sizeConfig) {
|
|
549
549
|
const relevantMediaTypes = internal.getRelevantMediaTypesForBidder(bid.sizeConfig, activeViewport);
|
|
550
550
|
if (relevantMediaTypes.length === 0) {
|
|
551
|
-
|
|
551
|
+
logError(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}), Bidder: ${bidderCode} => 'sizeConfig' is not configured properly. This bidder won't be eligible for sizeConfig checks and will remail active.`);
|
|
552
552
|
bid = Object.assign({}, bid);
|
|
553
553
|
} else if (relevantMediaTypes[0] !== 'none') {
|
|
554
554
|
const bidderMediaTypes = Object
|
|
@@ -562,20 +562,20 @@ export function getBids({ bidderCode, auctionId, bidderRequestId, adUnits, label
|
|
|
562
562
|
if (Object.keys(bidderMediaTypes).length > 0) {
|
|
563
563
|
bid = Object.assign({}, bid, { mediaTypes: bidderMediaTypes });
|
|
564
564
|
} else {
|
|
565
|
-
|
|
565
|
+
logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}), Bidder: ${bid.bidder} => 'relevantMediaTypes' does not match with any of the active mediaTypes at the Ad Unit level. This bidder is disabled.`);
|
|
566
566
|
return bids;
|
|
567
567
|
}
|
|
568
568
|
} else {
|
|
569
|
-
|
|
569
|
+
logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}), Bidder: ${bid.bidder} => 'relevantMediaTypes' is set to 'none' in sizeConfig for current viewport size. This bidder is disabled.`);
|
|
570
570
|
return bids;
|
|
571
571
|
}
|
|
572
572
|
}
|
|
573
573
|
bids.push(Object.assign({}, bid, {
|
|
574
574
|
adUnitCode: adUnit.code,
|
|
575
575
|
transactionId: adUnit.transactionId,
|
|
576
|
-
sizes:
|
|
576
|
+
sizes: deepAccess(transformedMediaTypes, 'banner.sizes') || deepAccess(transformedMediaTypes, 'video.playerSize') || [],
|
|
577
577
|
mediaTypes: bid.mediaTypes || transformedMediaTypes,
|
|
578
|
-
bidId: bid.bid_id ||
|
|
578
|
+
bidId: bid.bid_id || getUniqueIdentifierStr(),
|
|
579
579
|
bidderRequestId,
|
|
580
580
|
auctionId,
|
|
581
581
|
src,
|
|
@@ -585,17 +585,17 @@ export function getBids({ bidderCode, auctionId, bidderRequestId, adUnits, label
|
|
|
585
585
|
}));
|
|
586
586
|
return bids;
|
|
587
587
|
} else {
|
|
588
|
-
|
|
588
|
+
logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}), Bidder: ${bid.bidder} => Label check for this bidder has failed. This bidder is disabled.`);
|
|
589
589
|
return bids;
|
|
590
590
|
}
|
|
591
591
|
}, []));
|
|
592
592
|
} else {
|
|
593
|
-
cacheHits === 0 &&
|
|
593
|
+
cacheHits === 0 && logInfo(`Size Mapping V2:: Ad Unit: ${adUnit.code}(${adUnitInstance}) => Ad unit is disabled due to failing label check.`);
|
|
594
594
|
}
|
|
595
595
|
} else {
|
|
596
|
-
|
|
596
|
+
logWarn(`Size Mapping V2:: Ad Unit: ${adUnit.code} => Ad unit has declared invalid 'mediaTypes' or has not declared a 'mediaTypes' property`);
|
|
597
597
|
return result;
|
|
598
598
|
}
|
|
599
599
|
return result;
|
|
600
|
-
}, []).reduce(
|
|
600
|
+
}, []).reduce(flatten, []).filter(val => val !== '');
|
|
601
601
|
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { getValue, parseSizesInput, getBidIdParameter } from '../src/utils.js';
|
|
2
|
+
import {
|
|
3
|
+
registerBidder
|
|
4
|
+
} from '../src/adapters/bidderFactory.js';
|
|
5
|
+
import {
|
|
6
|
+
ajax
|
|
7
|
+
} from '../src/ajax.js';
|
|
8
|
+
const BIDDER_CODE = 'slimcut';
|
|
9
|
+
const ENDPOINT_URL = 'https://sb.freeskreen.com/pbr';
|
|
10
|
+
export const spec = {
|
|
11
|
+
code: BIDDER_CODE,
|
|
12
|
+
aliases: ['scm'],
|
|
13
|
+
supportedMediaTypes: ['video', 'banner'],
|
|
14
|
+
/**
|
|
15
|
+
* Determines whether or not the given bid request is valid.
|
|
16
|
+
*
|
|
17
|
+
* @param {BidRequest} bid The bid params to validate.
|
|
18
|
+
* @return boolean True if this is a valid bid, and false otherwise.
|
|
19
|
+
*/
|
|
20
|
+
isBidRequestValid: function(bid) {
|
|
21
|
+
let isValid = false;
|
|
22
|
+
if (typeof bid.params !== 'undefined' && !isNaN(parseInt(getValue(bid.params, 'placementId'))) && parseInt(getValue(bid.params, 'placementId')) > 0) {
|
|
23
|
+
isValid = true;
|
|
24
|
+
}
|
|
25
|
+
return isValid;
|
|
26
|
+
},
|
|
27
|
+
/**
|
|
28
|
+
* Make a server request from the list of BidRequests.
|
|
29
|
+
*
|
|
30
|
+
* @param {validBidRequests[]} an array of bids
|
|
31
|
+
* @return ServerRequest Info describing the request to the server.
|
|
32
|
+
*/
|
|
33
|
+
buildRequests: function(validBidRequests, bidderRequest) {
|
|
34
|
+
const bids = validBidRequests.map(buildRequestObject);
|
|
35
|
+
const payload = {
|
|
36
|
+
referrer: getReferrerInfo(bidderRequest),
|
|
37
|
+
data: bids,
|
|
38
|
+
deviceWidth: screen.width
|
|
39
|
+
};
|
|
40
|
+
let gdpr = bidderRequest.gdprConsent;
|
|
41
|
+
if (bidderRequest && gdpr) {
|
|
42
|
+
let isCmp = (typeof gdpr.gdprApplies === 'boolean')
|
|
43
|
+
let isConsentString = (typeof gdpr.consentString === 'string')
|
|
44
|
+
payload.gdpr_iab = {
|
|
45
|
+
consent: isConsentString ? gdpr.consentString : '',
|
|
46
|
+
status: isCmp ? gdpr.gdprApplies : -1
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const payloadString = JSON.stringify(payload);
|
|
50
|
+
return {
|
|
51
|
+
method: 'POST',
|
|
52
|
+
url: ENDPOINT_URL,
|
|
53
|
+
data: payloadString,
|
|
54
|
+
};
|
|
55
|
+
},
|
|
56
|
+
/**
|
|
57
|
+
* Unpack the response from the server into a list of bids.
|
|
58
|
+
*
|
|
59
|
+
* @param {*} serverResponse A successful response from the server.
|
|
60
|
+
* @return {Bid[]} An array of bids which were nested inside the server.
|
|
61
|
+
*/
|
|
62
|
+
interpretResponse: function(serverResponse, request) {
|
|
63
|
+
const bidResponses = [];
|
|
64
|
+
serverResponse = serverResponse.body;
|
|
65
|
+
if (serverResponse.responses) {
|
|
66
|
+
serverResponse.responses.forEach(function(bid) {
|
|
67
|
+
const bidResponse = {
|
|
68
|
+
cpm: bid.cpm,
|
|
69
|
+
width: bid.width,
|
|
70
|
+
height: bid.height,
|
|
71
|
+
currency: bid.currency,
|
|
72
|
+
netRevenue: bid.netRevenue,
|
|
73
|
+
ttl: bid.ttl,
|
|
74
|
+
ad: bid.ad,
|
|
75
|
+
requestId: bid.requestId,
|
|
76
|
+
creativeId: bid.creativeId,
|
|
77
|
+
transactionId: bid.tranactionId,
|
|
78
|
+
winUrl: bid.winUrl,
|
|
79
|
+
meta: {
|
|
80
|
+
advertiserDomains: bid.adomain || []
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
bidResponses.push(bidResponse);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return bidResponses;
|
|
87
|
+
},
|
|
88
|
+
getUserSyncs: function(syncOptions, serverResponses) {
|
|
89
|
+
if (syncOptions.iframeEnabled) {
|
|
90
|
+
return [{
|
|
91
|
+
type: 'iframe',
|
|
92
|
+
url: 'https://sb.freeskreen.com/async_usersync.html'
|
|
93
|
+
}];
|
|
94
|
+
}
|
|
95
|
+
return [];
|
|
96
|
+
},
|
|
97
|
+
onBidWon: function(bid) {
|
|
98
|
+
ajax(bid.winUrl + bid.cpm, null);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function buildRequestObject(bid) {
|
|
102
|
+
const reqObj = {};
|
|
103
|
+
let placementId = getValue(bid.params, 'placementId');
|
|
104
|
+
reqObj.sizes = parseSizesInput(bid.sizes);
|
|
105
|
+
reqObj.bidId = getBidIdParameter('bidId', bid);
|
|
106
|
+
reqObj.bidderRequestId = getBidIdParameter('bidderRequestId', bid);
|
|
107
|
+
reqObj.placementId = parseInt(placementId);
|
|
108
|
+
reqObj.adUnitCode = getBidIdParameter('adUnitCode', bid);
|
|
109
|
+
reqObj.auctionId = getBidIdParameter('auctionId', bid);
|
|
110
|
+
reqObj.transactionId = getBidIdParameter('transactionId', bid);
|
|
111
|
+
return reqObj;
|
|
112
|
+
}
|
|
113
|
+
function getReferrerInfo(bidderRequest) {
|
|
114
|
+
let ref = window.location.href;
|
|
115
|
+
if (bidderRequest && bidderRequest.refererInfo && bidderRequest.refererInfo.referer) {
|
|
116
|
+
ref = bidderRequest.refererInfo.referer;
|
|
117
|
+
}
|
|
118
|
+
return ref;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
registerBidder(spec);
|