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,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { mergeDeep, _each, logError, deepAccess, deepSetValue, isStr, isNumber, logWarn, convertTypes, isArray, parseSizesInput, logMessage } from '../src/utils.js';
|
|
2
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import {config} from '../src/config.js';
|
|
4
4
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
@@ -15,7 +15,7 @@ let rubiConf = {};
|
|
|
15
15
|
// we are saving these as global to this module so that if a pub accidentally overwrites the entire
|
|
16
16
|
// rubicon object, then we do not lose other data
|
|
17
17
|
config.getConfig('rubicon', config => {
|
|
18
|
-
|
|
18
|
+
mergeDeep(rubiConf, config.rubicon);
|
|
19
19
|
});
|
|
20
20
|
|
|
21
21
|
const GVLID = 52;
|
|
@@ -122,7 +122,7 @@ var sizeMap = {
|
|
|
122
122
|
578: '980x552',
|
|
123
123
|
580: '505x656'
|
|
124
124
|
};
|
|
125
|
-
|
|
125
|
+
_each(sizeMap, (item, key) => sizeMap[item] = key);
|
|
126
126
|
|
|
127
127
|
export const spec = {
|
|
128
128
|
code: 'rubicon',
|
|
@@ -140,7 +140,7 @@ export const spec = {
|
|
|
140
140
|
for (let i = 0, props = ['accountId', 'siteId', 'zoneId']; i < props.length; i++) {
|
|
141
141
|
bid.params[props[i]] = parseInt(bid.params[props[i]])
|
|
142
142
|
if (isNaN(bid.params[props[i]])) {
|
|
143
|
-
|
|
143
|
+
logError('Rubicon: wrong format of accountId or siteId or zoneId.')
|
|
144
144
|
return false
|
|
145
145
|
}
|
|
146
146
|
}
|
|
@@ -180,7 +180,7 @@ export const spec = {
|
|
|
180
180
|
ext: {
|
|
181
181
|
[bidRequest.bidder]: bidRequest.params
|
|
182
182
|
},
|
|
183
|
-
video:
|
|
183
|
+
video: deepAccess(bidRequest, 'mediaTypes.video') || {}
|
|
184
184
|
}],
|
|
185
185
|
ext: {
|
|
186
186
|
prebid: {
|
|
@@ -217,7 +217,7 @@ export const spec = {
|
|
|
217
217
|
|
|
218
218
|
let modules = (getGlobal()).installedModules;
|
|
219
219
|
if (modules && (!modules.length || modules.indexOf('rubiconAnalyticsAdapter') !== -1)) {
|
|
220
|
-
|
|
220
|
+
deepSetValue(data, 'ext.prebid.analytics', {'rubicon': {'client-analytics': true}});
|
|
221
221
|
}
|
|
222
222
|
|
|
223
223
|
let bidFloor;
|
|
@@ -230,11 +230,11 @@ export const spec = {
|
|
|
230
230
|
size: parseSizes(bidRequest, 'video')
|
|
231
231
|
});
|
|
232
232
|
} catch (e) {
|
|
233
|
-
|
|
233
|
+
logError('Rubicon: getFloor threw an error: ', e);
|
|
234
234
|
}
|
|
235
235
|
bidFloor = typeof floorInfo === 'object' && floorInfo.currency === 'USD' && !isNaN(parseInt(floorInfo.floor)) ? parseFloat(floorInfo.floor) : undefined;
|
|
236
236
|
} else {
|
|
237
|
-
bidFloor = parseFloat(
|
|
237
|
+
bidFloor = parseFloat(deepAccess(bidRequest, 'params.floor'));
|
|
238
238
|
}
|
|
239
239
|
if (!isNaN(bidFloor)) {
|
|
240
240
|
data.imp[0].bidfloor = bidFloor;
|
|
@@ -253,36 +253,36 @@ export const spec = {
|
|
|
253
253
|
gdprApplies = bidderRequest.gdprConsent.gdprApplies ? 1 : 0;
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
-
|
|
257
|
-
|
|
256
|
+
deepSetValue(data, 'regs.ext.gdpr', gdprApplies);
|
|
257
|
+
deepSetValue(data, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
if (bidderRequest.uspConsent) {
|
|
261
|
-
|
|
261
|
+
deepSetValue(data, 'regs.ext.us_privacy', bidderRequest.uspConsent);
|
|
262
262
|
}
|
|
263
263
|
|
|
264
|
-
const eids =
|
|
264
|
+
const eids = deepAccess(bidderRequest, 'bids.0.userIdAsEids');
|
|
265
265
|
if (eids && eids.length) {
|
|
266
|
-
|
|
266
|
+
deepSetValue(data, 'user.ext.eids', eids);
|
|
267
267
|
}
|
|
268
268
|
|
|
269
269
|
// set user.id value from config value
|
|
270
270
|
const configUserId = config.getConfig('user.id');
|
|
271
271
|
if (configUserId) {
|
|
272
|
-
|
|
272
|
+
deepSetValue(data, 'user.id', configUserId);
|
|
273
273
|
}
|
|
274
274
|
|
|
275
275
|
if (config.getConfig('coppa') === true) {
|
|
276
|
-
|
|
276
|
+
deepSetValue(data, 'regs.coppa', 1);
|
|
277
277
|
}
|
|
278
278
|
|
|
279
279
|
if (bidRequest.schain && hasValidSupplyChainParams(bidRequest.schain)) {
|
|
280
|
-
|
|
280
|
+
deepSetValue(data, 'source.ext.schain', bidRequest.schain);
|
|
281
281
|
}
|
|
282
282
|
|
|
283
283
|
const multibid = config.getConfig('multibid');
|
|
284
284
|
if (multibid) {
|
|
285
|
-
|
|
285
|
+
deepSetValue(data, 'ext.prebid.multibid', multibid.reduce((result, i) => {
|
|
286
286
|
let obj = {};
|
|
287
287
|
|
|
288
288
|
Object.keys(i).forEach(key => {
|
|
@@ -299,11 +299,11 @@ export const spec = {
|
|
|
299
299
|
|
|
300
300
|
// if storedAuctionResponse has been set, pass SRID
|
|
301
301
|
if (bidRequest.storedAuctionResponse) {
|
|
302
|
-
|
|
302
|
+
deepSetValue(data.imp[0], 'ext.prebid.storedauctionresponse.id', bidRequest.storedAuctionResponse.toString());
|
|
303
303
|
}
|
|
304
304
|
|
|
305
305
|
// set ext.prebid.auctiontimestamp using auction time
|
|
306
|
-
|
|
306
|
+
deepSetValue(data.imp[0], 'ext.prebid.auctiontimestamp', bidderRequest.auctionStart);
|
|
307
307
|
|
|
308
308
|
return {
|
|
309
309
|
method: 'POST',
|
|
@@ -322,14 +322,14 @@ export const spec = {
|
|
|
322
322
|
url: `https://${rubiConf.bannerHost || 'fastlane'}.rubiconproject.com/a/api/fastlane.json`,
|
|
323
323
|
data: spec.getOrderedParams(bidParams).reduce((paramString, key) => {
|
|
324
324
|
const propValue = bidParams[key];
|
|
325
|
-
return ((
|
|
325
|
+
return ((isStr(propValue) && propValue !== '') || isNumber(propValue)) ? `${paramString}${encodeParam(key, propValue)}&` : paramString;
|
|
326
326
|
}, '') + `slots=1&rand=${Math.random()}`,
|
|
327
327
|
bidRequest
|
|
328
328
|
};
|
|
329
329
|
}));
|
|
330
330
|
} else {
|
|
331
331
|
// single request requires bids to be grouped by site id into a single request
|
|
332
|
-
// note:
|
|
332
|
+
// note: groupBy wasn't used because deep property access was needed
|
|
333
333
|
const nonVideoRequests = bidRequests.filter(bidRequest => bidType(bidRequest) === 'banner');
|
|
334
334
|
const groupedBidRequests = nonVideoRequests.reduce((groupedBids, bid) => {
|
|
335
335
|
(groupedBids[bid.params['siteId']] = groupedBids[bid.params['siteId']] || []).push(bid);
|
|
@@ -353,7 +353,7 @@ export const spec = {
|
|
|
353
353
|
url: `https://${rubiConf.bannerHost || 'fastlane'}.rubiconproject.com/a/api/fastlane.json`,
|
|
354
354
|
data: spec.getOrderedParams(combinedSlotParams).reduce((paramString, key) => {
|
|
355
355
|
const propValue = combinedSlotParams[key];
|
|
356
|
-
return ((
|
|
356
|
+
return ((isStr(propValue) && propValue !== '') || isNumber(propValue)) ? `${paramString}${encodeParam(key, propValue)}&` : paramString;
|
|
357
357
|
}, '') + `slots=${bidsInGroup.length}&rand=${Math.random()}`,
|
|
358
358
|
bidRequest: bidsInGroup
|
|
359
359
|
});
|
|
@@ -485,7 +485,7 @@ export const spec = {
|
|
|
485
485
|
size: '*'
|
|
486
486
|
});
|
|
487
487
|
} catch (e) {
|
|
488
|
-
|
|
488
|
+
logError('Rubicon: getFloor threw an error: ', e);
|
|
489
489
|
}
|
|
490
490
|
data['rp_hard_floor'] = typeof floorInfo === 'object' && floorInfo.currency === 'USD' && !isNaN(parseInt(floorInfo.floor)) ? floorInfo.floor : undefined;
|
|
491
491
|
}
|
|
@@ -493,7 +493,7 @@ export const spec = {
|
|
|
493
493
|
// add p_pos only if specified and valid
|
|
494
494
|
// For SRA we need to explicitly put empty semi colons so AE treats it as empty, instead of copying the latter value
|
|
495
495
|
let posMapping = {1: 'atf', 3: 'btf'};
|
|
496
|
-
let pos = posMapping[
|
|
496
|
+
let pos = posMapping[deepAccess(bidRequest, 'mediaTypes.banner.pos')] || '';
|
|
497
497
|
data['p_pos'] = (params.position === 'atf' || params.position === 'btf') ? params.position : pos;
|
|
498
498
|
|
|
499
499
|
// pass publisher provided userId if configured
|
|
@@ -532,7 +532,7 @@ export const spec = {
|
|
|
532
532
|
}
|
|
533
533
|
}
|
|
534
534
|
} catch (e) {
|
|
535
|
-
|
|
535
|
+
logWarn('Rubicon: error reading eid:', eid, e);
|
|
536
536
|
}
|
|
537
537
|
});
|
|
538
538
|
}
|
|
@@ -605,9 +605,9 @@ export const spec = {
|
|
|
605
605
|
|
|
606
606
|
// video response from PBS Java openRTB
|
|
607
607
|
if (responseObj.seatbid) {
|
|
608
|
-
const responseErrors =
|
|
608
|
+
const responseErrors = deepAccess(responseObj, 'ext.errors.rubicon');
|
|
609
609
|
if (Array.isArray(responseErrors) && responseErrors.length > 0) {
|
|
610
|
-
|
|
610
|
+
logWarn('Rubicon: Error in video response');
|
|
611
611
|
}
|
|
612
612
|
const bids = [];
|
|
613
613
|
responseObj.seatbid.forEach(seatbid => {
|
|
@@ -620,8 +620,8 @@ export const spec = {
|
|
|
620
620
|
bidderCode: seatbid.seat,
|
|
621
621
|
ttl: 300,
|
|
622
622
|
netRevenue: rubiConf.netRevenue !== false, // If anything other than false, netRev is true
|
|
623
|
-
width: bid.w ||
|
|
624
|
-
height: bid.h ||
|
|
623
|
+
width: bid.w || deepAccess(bidRequest, 'mediaTypes.video.w') || deepAccess(bidRequest, 'params.video.playerWidth'),
|
|
624
|
+
height: bid.h || deepAccess(bidRequest, 'mediaTypes.video.h') || deepAccess(bidRequest, 'params.video.playerHeight'),
|
|
625
625
|
};
|
|
626
626
|
|
|
627
627
|
if (bid.id) {
|
|
@@ -633,22 +633,22 @@ export const spec = {
|
|
|
633
633
|
}
|
|
634
634
|
|
|
635
635
|
if (bid.adomain) {
|
|
636
|
-
|
|
636
|
+
deepSetValue(bidObject, 'meta.advertiserDomains', Array.isArray(bid.adomain) ? bid.adomain : [bid.adomain]);
|
|
637
637
|
}
|
|
638
638
|
|
|
639
|
-
if (
|
|
640
|
-
|
|
639
|
+
if (deepAccess(bid, 'ext.bidder.rp.advid')) {
|
|
640
|
+
deepSetValue(bidObject, 'meta.advertiserId', bid.ext.bidder.rp.advid);
|
|
641
641
|
}
|
|
642
642
|
|
|
643
|
-
let serverResponseTimeMs =
|
|
643
|
+
let serverResponseTimeMs = deepAccess(responseObj, 'ext.responsetimemillis.rubicon');
|
|
644
644
|
if (bidRequest && serverResponseTimeMs) {
|
|
645
645
|
bidRequest.serverResponseTimeMs = serverResponseTimeMs;
|
|
646
646
|
}
|
|
647
647
|
|
|
648
|
-
if (
|
|
648
|
+
if (deepAccess(bid, 'ext.prebid.type') === VIDEO) {
|
|
649
649
|
bidObject.mediaType = VIDEO;
|
|
650
|
-
|
|
651
|
-
const extPrebidTargeting =
|
|
650
|
+
deepSetValue(bidObject, 'meta.mediaType', VIDEO);
|
|
651
|
+
const extPrebidTargeting = deepAccess(bid, 'ext.prebid.targeting');
|
|
652
652
|
|
|
653
653
|
// If ext.prebid.targeting exists, add it as a property value named 'adserverTargeting'
|
|
654
654
|
if (extPrebidTargeting && typeof extPrebidTargeting === 'object') {
|
|
@@ -670,12 +670,12 @@ export const spec = {
|
|
|
670
670
|
if (bid.nurl) { bidObject.vastUrl = bid.nurl; }
|
|
671
671
|
if (!bidObject.vastUrl && bid.nurl) { bidObject.vastUrl = bid.nurl; }
|
|
672
672
|
|
|
673
|
-
const videoContext =
|
|
673
|
+
const videoContext = deepAccess(bidRequest, 'mediaTypes.video.context');
|
|
674
674
|
if (videoContext.toLowerCase() === 'outstream') {
|
|
675
675
|
bidObject.renderer = outstreamRenderer(bidObject);
|
|
676
676
|
}
|
|
677
677
|
} else {
|
|
678
|
-
|
|
678
|
+
logWarn('Rubicon: video response received non-video media type');
|
|
679
679
|
}
|
|
680
680
|
|
|
681
681
|
bids.push(bidObject);
|
|
@@ -754,7 +754,7 @@ export const spec = {
|
|
|
754
754
|
|
|
755
755
|
bids.push(bid);
|
|
756
756
|
} else {
|
|
757
|
-
|
|
757
|
+
logError(`Rubicon: bidRequest undefined at index position:${i}`, bidRequest, responseObj);
|
|
758
758
|
}
|
|
759
759
|
|
|
760
760
|
return bids;
|
|
@@ -794,7 +794,7 @@ export const spec = {
|
|
|
794
794
|
* @return {Object} params bid params
|
|
795
795
|
*/
|
|
796
796
|
transformBidParams: function(params, isOpenRtb) {
|
|
797
|
-
return
|
|
797
|
+
return convertTypes({
|
|
798
798
|
'accountId': 'number',
|
|
799
799
|
'siteId': 'number',
|
|
800
800
|
'zoneId': 'number'
|
|
@@ -885,7 +885,7 @@ function outstreamRenderer(rtbBid) {
|
|
|
885
885
|
try {
|
|
886
886
|
renderer.setRender(renderBid);
|
|
887
887
|
} catch (err) {
|
|
888
|
-
|
|
888
|
+
logWarn('Prebid Error calling setRender on renderer', err);
|
|
889
889
|
}
|
|
890
890
|
|
|
891
891
|
return renderer;
|
|
@@ -900,7 +900,7 @@ function parseSizes(bid, mediaType) {
|
|
|
900
900
|
params.video.playerWidth,
|
|
901
901
|
params.video.playerHeight
|
|
902
902
|
];
|
|
903
|
-
} else if (Array.isArray(
|
|
903
|
+
} else if (Array.isArray(deepAccess(bid, 'mediaTypes.video.playerSize')) && bid.mediaTypes.video.playerSize.length === 1) {
|
|
904
904
|
size = bid.mediaTypes.video.playerSize[0];
|
|
905
905
|
} else if (Array.isArray(bid.sizes) && bid.sizes.length > 0 && Array.isArray(bid.sizes[0]) && bid.sizes[0].length > 1) {
|
|
906
906
|
size = bid.sizes[0];
|
|
@@ -912,12 +912,12 @@ function parseSizes(bid, mediaType) {
|
|
|
912
912
|
let sizes = [];
|
|
913
913
|
if (Array.isArray(params.sizes)) {
|
|
914
914
|
sizes = params.sizes;
|
|
915
|
-
} else if (typeof
|
|
915
|
+
} else if (typeof deepAccess(bid, 'mediaTypes.banner.sizes') !== 'undefined') {
|
|
916
916
|
sizes = mapSizes(bid.mediaTypes.banner.sizes);
|
|
917
917
|
} else if (Array.isArray(bid.sizes) && bid.sizes.length > 0) {
|
|
918
918
|
sizes = mapSizes(bid.sizes)
|
|
919
919
|
} else {
|
|
920
|
-
|
|
920
|
+
logWarn('Rubicon: no sizes are setup or found');
|
|
921
921
|
}
|
|
922
922
|
|
|
923
923
|
return masSizeOrdering(sizes);
|
|
@@ -946,7 +946,11 @@ function appendSiteAppDevice(data, bidRequest, bidderRequest) {
|
|
|
946
946
|
if (bidRequest.params.video.language) {
|
|
947
947
|
['site', 'device'].forEach(function(param) {
|
|
948
948
|
if (data[param]) {
|
|
949
|
-
|
|
949
|
+
if (param === 'site') {
|
|
950
|
+
data[param].content = Object.assign({language: bidRequest.params.video.language}, data[param].content)
|
|
951
|
+
} else {
|
|
952
|
+
data[param] = Object.assign({language: bidRequest.params.video.language}, data[param])
|
|
953
|
+
}
|
|
950
954
|
}
|
|
951
955
|
});
|
|
952
956
|
}
|
|
@@ -984,16 +988,16 @@ function applyFPD(bidRequest, mediaType, data) {
|
|
|
984
988
|
site: {ext: {data: {...bidRequest.params.inventory}}}
|
|
985
989
|
};
|
|
986
990
|
|
|
987
|
-
if (bidRequest.params.keywords) BID_FPD.site.keywords = (
|
|
991
|
+
if (bidRequest.params.keywords) BID_FPD.site.keywords = (isArray(bidRequest.params.keywords)) ? bidRequest.params.keywords.join(',') : bidRequest.params.keywords;
|
|
988
992
|
|
|
989
|
-
let fpd =
|
|
990
|
-
let impData =
|
|
993
|
+
let fpd = mergeDeep({}, config.getConfig('ortb2') || {}, BID_FPD);
|
|
994
|
+
let impData = deepAccess(bidRequest.ortb2Imp, 'ext.data') || {};
|
|
991
995
|
const SEGTAX = {user: [4], site: [1, 2, 5, 6]};
|
|
992
996
|
const MAP = {user: 'tg_v.', site: 'tg_i.', adserver: 'tg_i.dfp_ad_unit_code', pbadslot: 'tg_i.pbadslot', keywords: 'kw'};
|
|
993
997
|
const validate = function(prop, key, parentName) {
|
|
994
998
|
if (key === 'data' && Array.isArray(prop)) {
|
|
995
|
-
return prop.filter(name => name.segment &&
|
|
996
|
-
SEGTAX[parentName].indexOf(
|
|
999
|
+
return prop.filter(name => name.segment && deepAccess(name, 'ext.segtax') && SEGTAX[parentName] &&
|
|
1000
|
+
SEGTAX[parentName].indexOf(deepAccess(name, 'ext.segtax')) !== -1).map(value => {
|
|
997
1001
|
let segments = value.segment.filter(obj => obj.id).reduce((result, obj) => {
|
|
998
1002
|
result.push(obj.id);
|
|
999
1003
|
return result;
|
|
@@ -1001,12 +1005,12 @@ function applyFPD(bidRequest, mediaType, data) {
|
|
|
1001
1005
|
if (segments.length > 0) return segments.toString();
|
|
1002
1006
|
}).toString();
|
|
1003
1007
|
} else if (typeof prop === 'object' && !Array.isArray(prop)) {
|
|
1004
|
-
|
|
1008
|
+
logWarn('Rubicon: Filtered FPD key: ', key, ': Expected value to be string, integer, or an array of strings/ints');
|
|
1005
1009
|
} else if (typeof prop !== 'undefined') {
|
|
1006
1010
|
return (Array.isArray(prop)) ? prop.filter(value => {
|
|
1007
1011
|
if (typeof value !== 'object' && typeof value !== 'undefined') return value.toString();
|
|
1008
1012
|
|
|
1009
|
-
|
|
1013
|
+
logWarn('Rubicon: Filtered value: ', value, 'for key', key, ': Expected value to be string, integer, or an array of strings/ints');
|
|
1010
1014
|
}).toString() : prop.toString();
|
|
1011
1015
|
}
|
|
1012
1016
|
};
|
|
@@ -1045,10 +1049,10 @@ function applyFPD(bidRequest, mediaType, data) {
|
|
|
1045
1049
|
});
|
|
1046
1050
|
} else {
|
|
1047
1051
|
if (Object.keys(impData).length) {
|
|
1048
|
-
|
|
1052
|
+
mergeDeep(data.imp[0].ext, {data: impData});
|
|
1049
1053
|
}
|
|
1050
1054
|
|
|
1051
|
-
|
|
1055
|
+
mergeDeep(data, fpd);
|
|
1052
1056
|
}
|
|
1053
1057
|
}
|
|
1054
1058
|
|
|
@@ -1057,7 +1061,7 @@ function applyFPD(bidRequest, mediaType, data) {
|
|
|
1057
1061
|
* @returns {*}
|
|
1058
1062
|
*/
|
|
1059
1063
|
function mapSizes(sizes) {
|
|
1060
|
-
return
|
|
1064
|
+
return parseSizesInput(sizes)
|
|
1061
1065
|
// map sizes while excluding non-matches
|
|
1062
1066
|
.reduce((result, size) => {
|
|
1063
1067
|
let mappedSize = parseInt(sizeMap[size], 10);
|
|
@@ -1075,10 +1079,10 @@ function mapSizes(sizes) {
|
|
|
1075
1079
|
* @returns {boolean}
|
|
1076
1080
|
*/
|
|
1077
1081
|
export function hasVideoMediaType(bidRequest) {
|
|
1078
|
-
if (typeof
|
|
1082
|
+
if (typeof deepAccess(bidRequest, 'params.video') !== 'object') {
|
|
1079
1083
|
return false;
|
|
1080
1084
|
}
|
|
1081
|
-
return (typeof
|
|
1085
|
+
return (typeof deepAccess(bidRequest, `mediaTypes.${VIDEO}`) !== 'undefined');
|
|
1082
1086
|
}
|
|
1083
1087
|
|
|
1084
1088
|
/**
|
|
@@ -1092,9 +1096,9 @@ function bidType(bid, log = false) {
|
|
|
1092
1096
|
if (hasVideoMediaType(bid)) {
|
|
1093
1097
|
// Removed legacy mediaType support. new way using mediaTypes.video object is now required
|
|
1094
1098
|
// We require either context as instream or outstream
|
|
1095
|
-
if (['outstream', 'instream'].indexOf(
|
|
1099
|
+
if (['outstream', 'instream'].indexOf(deepAccess(bid, `mediaTypes.${VIDEO}.context`)) === -1) {
|
|
1096
1100
|
if (log) {
|
|
1097
|
-
|
|
1101
|
+
logError('Rubicon: mediaTypes.video.context must be outstream or instream');
|
|
1098
1102
|
}
|
|
1099
1103
|
return;
|
|
1100
1104
|
}
|
|
@@ -1102,13 +1106,13 @@ function bidType(bid, log = false) {
|
|
|
1102
1106
|
// we require playerWidth and playerHeight to come from one of params.playerWidth/playerHeight or mediaTypes.video.playerSize or adUnit.sizes
|
|
1103
1107
|
if (parseSizes(bid, 'video').length < 2) {
|
|
1104
1108
|
if (log) {
|
|
1105
|
-
|
|
1109
|
+
logError('Rubicon: could not determine the playerSize of the video');
|
|
1106
1110
|
}
|
|
1107
1111
|
return;
|
|
1108
1112
|
}
|
|
1109
1113
|
|
|
1110
1114
|
if (log) {
|
|
1111
|
-
|
|
1115
|
+
logMessage('Rubicon: making video request for adUnit', bid.adUnitCode);
|
|
1112
1116
|
}
|
|
1113
1117
|
return 'video';
|
|
1114
1118
|
} else {
|
|
@@ -1116,14 +1120,14 @@ function bidType(bid, log = false) {
|
|
|
1116
1120
|
// if we cannot determine them, we reject it!
|
|
1117
1121
|
if (parseSizes(bid, 'banner').length === 0) {
|
|
1118
1122
|
if (log) {
|
|
1119
|
-
|
|
1123
|
+
logError('Rubicon: could not determine the sizes for banner request');
|
|
1120
1124
|
}
|
|
1121
1125
|
return;
|
|
1122
1126
|
}
|
|
1123
1127
|
|
|
1124
1128
|
// everything looks good for banner so lets do it
|
|
1125
1129
|
if (log) {
|
|
1126
|
-
|
|
1130
|
+
logMessage('Rubicon: making banner request for adUnit', bid.adUnitCode);
|
|
1127
1131
|
}
|
|
1128
1132
|
return 'banner';
|
|
1129
1133
|
}
|
|
@@ -1155,13 +1159,13 @@ export function masSizeOrdering(sizes) {
|
|
|
1155
1159
|
|
|
1156
1160
|
export function determineRubiconVideoSizeId(bid) {
|
|
1157
1161
|
// If we have size_id in the bid then use it
|
|
1158
|
-
let rubiconSizeId = parseInt(
|
|
1162
|
+
let rubiconSizeId = parseInt(deepAccess(bid, 'params.video.size_id'));
|
|
1159
1163
|
if (!isNaN(rubiconSizeId)) {
|
|
1160
1164
|
return rubiconSizeId;
|
|
1161
1165
|
}
|
|
1162
1166
|
// otherwise 203 for outstream and 201 for instream
|
|
1163
1167
|
// When this function is used we know it has to be one of outstream or instream
|
|
1164
|
-
return
|
|
1168
|
+
return deepAccess(bid, `mediaTypes.${VIDEO}.context`) === 'outstream' ? 203 : 201;
|
|
1165
1169
|
}
|
|
1166
1170
|
|
|
1167
1171
|
/**
|
|
@@ -1204,9 +1208,9 @@ export function hasValidVideoParams(bid) {
|
|
|
1204
1208
|
}
|
|
1205
1209
|
// loop through each param and verify it has the correct
|
|
1206
1210
|
Object.keys(requiredParams).forEach(function(param) {
|
|
1207
|
-
if (Object.prototype.toString.call(
|
|
1211
|
+
if (Object.prototype.toString.call(deepAccess(bid, 'mediaTypes.video.' + param)) !== requiredParams[param]) {
|
|
1208
1212
|
isValid = false;
|
|
1209
|
-
|
|
1213
|
+
logError('Rubicon: mediaTypes.video.' + param + ' is required and must be of type: ' + requiredParams[param]);
|
|
1210
1214
|
}
|
|
1211
1215
|
})
|
|
1212
1216
|
return isValid;
|
|
@@ -1225,7 +1229,7 @@ export function hasValidSupplyChainParams(schain) {
|
|
|
1225
1229
|
if (!status) return status;
|
|
1226
1230
|
return requiredFields.every(field => node.hasOwnProperty(field));
|
|
1227
1231
|
}, true);
|
|
1228
|
-
if (!isValid)
|
|
1232
|
+
if (!isValid) logError('Rubicon: required schain params missing');
|
|
1229
1233
|
return isValid;
|
|
1230
1234
|
}
|
|
1231
1235
|
|
|
@@ -4,7 +4,7 @@ import { ajax } from '../src/ajax.js';
|
|
|
4
4
|
import CONSTANTS from '../src/constants.json';
|
|
5
5
|
import adapter from '../src/AnalyticsAdapter.js';
|
|
6
6
|
import adapterManager from '../src/adapterManager.js';
|
|
7
|
-
import
|
|
7
|
+
import { logMessage } from '../src/utils.js';
|
|
8
8
|
|
|
9
9
|
// Object.entries polyfill
|
|
10
10
|
const entries = Object.entries || function(obj) {
|
|
@@ -62,7 +62,7 @@ scaleableAnalytics.enableAnalytics = config => {
|
|
|
62
62
|
scaleableAnalytics.originEnableAnalytics(config);
|
|
63
63
|
|
|
64
64
|
scaleableAnalytics.enableAnalytics = function _enable() {
|
|
65
|
-
return
|
|
65
|
+
return logMessage(`Analytics adapter for "${global}" already enabled, unnecessary call to \`enableAnalytics\`.`);
|
|
66
66
|
};
|
|
67
67
|
}
|
|
68
68
|
|