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
package/src/adapterManager.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/** @module adaptermanger */
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
_each, getUserConfiguredParams, groupBy, logInfo, deepAccess, isValidMediaTypes,
|
|
5
|
+
getUniqueIdentifierStr, deepClone, logWarn, logError, logMessage, isArray, generateUUID,
|
|
6
|
+
flatten, getBidderCodes, getDefinedParams, shuffle, timestamp, getBidderRequest, bind
|
|
7
|
+
} from './utils.js';
|
|
4
8
|
import { getLabels, resolveStatus } from './sizeMapping.js';
|
|
5
9
|
import { processNativeAdUnitParams, nativeAdapters } from './native.js';
|
|
6
10
|
import { newBidder } from './adapters/bidderFactory.js';
|
|
@@ -12,7 +16,6 @@ import find from 'core-js-pure/features/array/find.js';
|
|
|
12
16
|
import { adunitCounter } from './adUnits.js';
|
|
13
17
|
import { getRefererInfo } from './refererDetection.js';
|
|
14
18
|
|
|
15
|
-
var utils = require('./utils.js');
|
|
16
19
|
var CONSTANTS = require('./constants.json');
|
|
17
20
|
var events = require('./events.js');
|
|
18
21
|
let s2sTestingModule; // store s2sTesting module if it's loaded
|
|
@@ -25,7 +28,7 @@ let _aliasRegistry = adapterManager.aliasRegistry = {};
|
|
|
25
28
|
let _s2sConfigs = [];
|
|
26
29
|
config.getConfig('s2sConfig', config => {
|
|
27
30
|
if (config && config.s2sConfig) {
|
|
28
|
-
_s2sConfigs =
|
|
31
|
+
_s2sConfigs = isArray(config.s2sConfig) ? config.s2sConfig : [config.s2sConfig];
|
|
29
32
|
}
|
|
30
33
|
});
|
|
31
34
|
|
|
@@ -51,16 +54,16 @@ function getBids({bidderCode, auctionId, bidderRequestId, adUnits, labels, src})
|
|
|
51
54
|
);
|
|
52
55
|
|
|
53
56
|
if (!active) {
|
|
54
|
-
|
|
57
|
+
logInfo(`Size mapping disabled adUnit "${adUnit.code}"`);
|
|
55
58
|
} else if (filterResults) {
|
|
56
|
-
|
|
59
|
+
logInfo(`Size mapping filtered adUnit "${adUnit.code}" banner sizes from `, filterResults.before, 'to ', filterResults.after);
|
|
57
60
|
}
|
|
58
61
|
|
|
59
62
|
if (active) {
|
|
60
63
|
result.push(adUnit.bids.filter(bid => bid.bidder === bidderCode)
|
|
61
64
|
.reduce((bids, bid) => {
|
|
62
65
|
const nativeParams =
|
|
63
|
-
adUnit.nativeParams ||
|
|
66
|
+
adUnit.nativeParams || deepAccess(adUnit, 'mediaTypes.native');
|
|
64
67
|
if (nativeParams) {
|
|
65
68
|
bid = Object.assign({}, bid, {
|
|
66
69
|
nativeParams: processNativeAdUnitParams(nativeParams),
|
|
@@ -81,17 +84,17 @@ function getBids({bidderCode, auctionId, bidderRequestId, adUnits, labels, src})
|
|
|
81
84
|
} = resolveStatus(getLabels(bid, labels), filteredMediaTypes);
|
|
82
85
|
|
|
83
86
|
if (!active) {
|
|
84
|
-
|
|
87
|
+
logInfo(`Size mapping deactivated adUnit "${adUnit.code}" bidder "${bid.bidder}"`);
|
|
85
88
|
} else if (filterResults) {
|
|
86
|
-
|
|
89
|
+
logInfo(`Size mapping filtered adUnit "${adUnit.code}" bidder "${bid.bidder}" banner sizes from `, filterResults.before, 'to ', filterResults.after);
|
|
87
90
|
}
|
|
88
91
|
|
|
89
|
-
if (
|
|
92
|
+
if (isValidMediaTypes(mediaTypes)) {
|
|
90
93
|
bid = Object.assign({}, bid, {
|
|
91
94
|
mediaTypes
|
|
92
95
|
});
|
|
93
96
|
} else {
|
|
94
|
-
|
|
97
|
+
logError(
|
|
95
98
|
`mediaTypes is not correctly configured for adunit ${adUnit.code}`
|
|
96
99
|
);
|
|
97
100
|
}
|
|
@@ -100,8 +103,8 @@ function getBids({bidderCode, auctionId, bidderRequestId, adUnits, labels, src})
|
|
|
100
103
|
bids.push(Object.assign({}, bid, {
|
|
101
104
|
adUnitCode: adUnit.code,
|
|
102
105
|
transactionId: adUnit.transactionId,
|
|
103
|
-
sizes:
|
|
104
|
-
bidId: bid.bid_id ||
|
|
106
|
+
sizes: deepAccess(mediaTypes, 'banner.sizes') || deepAccess(mediaTypes, 'video.playerSize') || [],
|
|
107
|
+
bidId: bid.bid_id || getUniqueIdentifierStr(),
|
|
105
108
|
bidderRequestId,
|
|
106
109
|
auctionId,
|
|
107
110
|
src,
|
|
@@ -122,7 +125,7 @@ const hookedGetBids = hook('sync', getBids, 'getBids');
|
|
|
122
125
|
|
|
123
126
|
function getAdUnitCopyForPrebidServer(adUnits, s2sConfig) {
|
|
124
127
|
let adaptersServerSide = s2sConfig.bidders;
|
|
125
|
-
let adUnitsCopy =
|
|
128
|
+
let adUnitsCopy = deepClone(adUnits);
|
|
126
129
|
|
|
127
130
|
adUnitsCopy.forEach((adUnit) => {
|
|
128
131
|
// filter out client side bids
|
|
@@ -130,7 +133,7 @@ function getAdUnitCopyForPrebidServer(adUnits, s2sConfig) {
|
|
|
130
133
|
return includes(adaptersServerSide, bid.bidder) &&
|
|
131
134
|
(!doingS2STesting(s2sConfig) || bid.finalSource !== s2sTestingModule.CLIENT);
|
|
132
135
|
}).map((bid) => {
|
|
133
|
-
bid.bid_id =
|
|
136
|
+
bid.bid_id = getUniqueIdentifierStr();
|
|
134
137
|
return bid;
|
|
135
138
|
});
|
|
136
139
|
});
|
|
@@ -143,7 +146,7 @@ function getAdUnitCopyForPrebidServer(adUnits, s2sConfig) {
|
|
|
143
146
|
}
|
|
144
147
|
|
|
145
148
|
function getAdUnitCopyForClientAdapters(adUnits) {
|
|
146
|
-
let adUnitsClientCopy =
|
|
149
|
+
let adUnitsClientCopy = deepClone(adUnits);
|
|
147
150
|
// filter out s2s bids
|
|
148
151
|
adUnitsClientCopy.forEach((adUnit) => {
|
|
149
152
|
adUnit.bids = adUnit.bids.filter((bid) => {
|
|
@@ -254,20 +257,20 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
|
|
|
254
257
|
_s2sConfigs.forEach(s2sConfig => {
|
|
255
258
|
if (s2sConfig && s2sConfig.enabled) {
|
|
256
259
|
if ((isTestingServerOnly(s2sConfig) && adUnitsContainServerRequests(adUnits, s2sConfig))) {
|
|
257
|
-
|
|
260
|
+
logWarn('testServerOnly: True. All client requests will be suppressed.');
|
|
258
261
|
clientBidderCodes.length = 0;
|
|
259
262
|
}
|
|
260
263
|
|
|
261
264
|
let adUnitsS2SCopy = getAdUnitCopyForPrebidServer(adUnits, s2sConfig);
|
|
262
|
-
let tid =
|
|
265
|
+
let tid = generateUUID();
|
|
263
266
|
adaptersServerSide.forEach(bidderCode => {
|
|
264
|
-
const bidderRequestId =
|
|
267
|
+
const bidderRequestId = getUniqueIdentifierStr();
|
|
265
268
|
const bidderRequest = {
|
|
266
269
|
bidderCode,
|
|
267
270
|
auctionId,
|
|
268
271
|
bidderRequestId,
|
|
269
272
|
tid,
|
|
270
|
-
bids: hookedGetBids({bidderCode, auctionId, bidderRequestId, 'adUnits':
|
|
273
|
+
bids: hookedGetBids({bidderCode, auctionId, bidderRequestId, 'adUnits': deepClone(adUnitsS2SCopy), labels, src: CONSTANTS.S2S.SRC}),
|
|
271
274
|
auctionStart: auctionStart,
|
|
272
275
|
timeout: s2sConfig.timeout,
|
|
273
276
|
src: CONSTANTS.S2S.SRC,
|
|
@@ -298,19 +301,19 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
|
|
|
298
301
|
// client adapters
|
|
299
302
|
let adUnitsClientCopy = getAdUnitCopyForClientAdapters(adUnits);
|
|
300
303
|
clientBidderCodes.forEach(bidderCode => {
|
|
301
|
-
const bidderRequestId =
|
|
304
|
+
const bidderRequestId = getUniqueIdentifierStr();
|
|
302
305
|
const bidderRequest = {
|
|
303
306
|
bidderCode,
|
|
304
307
|
auctionId,
|
|
305
308
|
bidderRequestId,
|
|
306
|
-
bids: hookedGetBids({bidderCode, auctionId, bidderRequestId, 'adUnits':
|
|
309
|
+
bids: hookedGetBids({bidderCode, auctionId, bidderRequestId, 'adUnits': deepClone(adUnitsClientCopy), labels, src: 'client'}),
|
|
307
310
|
auctionStart: auctionStart,
|
|
308
311
|
timeout: cbTimeout,
|
|
309
312
|
refererInfo
|
|
310
313
|
};
|
|
311
314
|
const adapter = _bidderRegistry[bidderCode];
|
|
312
315
|
if (!adapter) {
|
|
313
|
-
|
|
316
|
+
logError(`Trying to make a request for bidder that does not exist: ${bidderCode}`);
|
|
314
317
|
}
|
|
315
318
|
|
|
316
319
|
if (adapter && bidderRequest.bids && bidderRequest.bids.length !== 0) {
|
|
@@ -334,7 +337,7 @@ adapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, a
|
|
|
334
337
|
|
|
335
338
|
adapterManager.callBids = (adUnits, bidRequests, addBidResponse, doneCb, requestCallbacks, requestBidsTimeout, onTimelyResponse) => {
|
|
336
339
|
if (!bidRequests.length) {
|
|
337
|
-
|
|
340
|
+
logWarn('callBids executed with no bidRequests. Were they filtered by labels or sizing?');
|
|
338
341
|
return;
|
|
339
342
|
}
|
|
340
343
|
|
|
@@ -384,7 +387,7 @@ adapterManager.callBids = (adUnits, bidRequests, addBidResponse, doneCb, request
|
|
|
384
387
|
let allBidders = s2sBidRequest.ad_units.reduce((adapters, adUnit) => {
|
|
385
388
|
return adapters.concat((adUnit.bids || []).reduce((adapters, bid) => adapters.concat(bid.bidder), []));
|
|
386
389
|
}, []);
|
|
387
|
-
|
|
390
|
+
logMessage(`CALLING S2S HEADER BIDDERS ==== ${adaptersServerSide.filter(adapter => includes(allBidders, adapter)).join(',')}`);
|
|
388
391
|
|
|
389
392
|
// fire BID_REQUESTED event for each s2s bidRequest
|
|
390
393
|
uniqueServerRequests.forEach(bidRequest => {
|
|
@@ -406,7 +409,7 @@ adapterManager.callBids = (adUnits, bidRequests, addBidResponse, doneCb, request
|
|
|
406
409
|
);
|
|
407
410
|
}
|
|
408
411
|
} else {
|
|
409
|
-
|
|
412
|
+
logError('missing ' + s2sConfig.adapter);
|
|
410
413
|
}
|
|
411
414
|
counter++
|
|
412
415
|
}
|
|
@@ -418,7 +421,7 @@ adapterManager.callBids = (adUnits, bidRequests, addBidResponse, doneCb, request
|
|
|
418
421
|
// TODO : Do we check for bid in pool from here and skip calling adapter again ?
|
|
419
422
|
const adapter = _bidderRegistry[bidRequest.bidderCode];
|
|
420
423
|
config.runWithBidder(bidRequest.bidderCode, () => {
|
|
421
|
-
|
|
424
|
+
logMessage(`CALLING BIDDER`);
|
|
422
425
|
events.emit(CONSTANTS.EVENTS.BID_REQUESTED, bidRequest);
|
|
423
426
|
});
|
|
424
427
|
let ajax = ajaxBuilder(requestBidsTimeout, requestCallbacks ? {
|
|
@@ -441,7 +444,7 @@ adapterManager.callBids = (adUnits, bidRequests, addBidResponse, doneCb, request
|
|
|
441
444
|
)
|
|
442
445
|
);
|
|
443
446
|
} catch (e) {
|
|
444
|
-
|
|
447
|
+
logError(`${bidRequest.bidderCode} Bid Adapter emitted an uncaught error when parsing their bidRequest`, {e, bidRequest});
|
|
445
448
|
adapterDone();
|
|
446
449
|
}
|
|
447
450
|
});
|
|
@@ -476,10 +479,10 @@ adapterManager.registerBidAdapter = function (bidAdapter, bidderCode, {supported
|
|
|
476
479
|
nativeAdapters.push(bidderCode);
|
|
477
480
|
}
|
|
478
481
|
} else {
|
|
479
|
-
|
|
482
|
+
logError('Bidder adaptor error for bidder code: ' + bidderCode + 'bidder must implement a callBids() function');
|
|
480
483
|
}
|
|
481
484
|
} else {
|
|
482
|
-
|
|
485
|
+
logError('bidAdapter or bidderCode not specified');
|
|
483
486
|
}
|
|
484
487
|
};
|
|
485
488
|
|
|
@@ -502,7 +505,7 @@ adapterManager.aliasBidAdapter = function (bidderCode, alias, options) {
|
|
|
502
505
|
}
|
|
503
506
|
});
|
|
504
507
|
nonS2SAlias.forEach(bidderCode => {
|
|
505
|
-
|
|
508
|
+
logError('bidderCode "' + bidderCode + '" is not an existing bidder.', 'adapterManager.aliasBidAdapter');
|
|
506
509
|
})
|
|
507
510
|
} else {
|
|
508
511
|
try {
|
|
@@ -524,11 +527,11 @@ adapterManager.aliasBidAdapter = function (bidderCode, alias, options) {
|
|
|
524
527
|
supportedMediaTypes
|
|
525
528
|
});
|
|
526
529
|
} catch (e) {
|
|
527
|
-
|
|
530
|
+
logError(bidderCode + ' bidder does not currently support aliasing.', 'adapterManager.aliasBidAdapter');
|
|
528
531
|
}
|
|
529
532
|
}
|
|
530
533
|
} else {
|
|
531
|
-
|
|
534
|
+
logMessage('alias name "' + alias + '" has been already specified.');
|
|
532
535
|
}
|
|
533
536
|
};
|
|
534
537
|
|
|
@@ -538,25 +541,25 @@ adapterManager.registerAnalyticsAdapter = function ({adapter, code, gvlid}) {
|
|
|
538
541
|
adapter.code = code;
|
|
539
542
|
_analyticsRegistry[code] = { adapter, gvlid };
|
|
540
543
|
} else {
|
|
541
|
-
|
|
544
|
+
logError(`Prebid Error: Analytics adaptor error for analytics "${code}"
|
|
542
545
|
analytics adapter must implement an enableAnalytics() function`);
|
|
543
546
|
}
|
|
544
547
|
} else {
|
|
545
|
-
|
|
548
|
+
logError('Prebid Error: analyticsAdapter or analyticsCode not specified');
|
|
546
549
|
}
|
|
547
550
|
};
|
|
548
551
|
|
|
549
552
|
adapterManager.enableAnalytics = function (config) {
|
|
550
|
-
if (!
|
|
553
|
+
if (!isArray(config)) {
|
|
551
554
|
config = [config];
|
|
552
555
|
}
|
|
553
556
|
|
|
554
|
-
|
|
557
|
+
_each(config, adapterConfig => {
|
|
555
558
|
var adapter = _analyticsRegistry[adapterConfig.provider].adapter;
|
|
556
559
|
if (adapter) {
|
|
557
560
|
adapter.enableAnalytics(adapterConfig);
|
|
558
561
|
} else {
|
|
559
|
-
|
|
562
|
+
logError(`Prebid Error: no analytics adapter found in registry for
|
|
560
563
|
${adapterConfig.provider}.`);
|
|
561
564
|
}
|
|
562
565
|
});
|
|
@@ -581,22 +584,22 @@ function tryCallBidderMethod(bidder, method, param) {
|
|
|
581
584
|
const adapter = _bidderRegistry[bidder];
|
|
582
585
|
const spec = adapter.getSpec();
|
|
583
586
|
if (spec && spec[method] && typeof spec[method] === 'function') {
|
|
584
|
-
|
|
587
|
+
logInfo(`Invoking ${bidder}.${method}`);
|
|
585
588
|
config.runWithBidder(bidder, bind.call(spec[method], spec, param));
|
|
586
589
|
}
|
|
587
590
|
} catch (e) {
|
|
588
|
-
|
|
591
|
+
logWarn(`Error calling ${method} of ${bidder}`);
|
|
589
592
|
}
|
|
590
593
|
}
|
|
591
594
|
|
|
592
595
|
adapterManager.callTimedOutBidders = function(adUnits, timedOutBidders, cbTimeout) {
|
|
593
596
|
timedOutBidders = timedOutBidders.map((timedOutBidder) => {
|
|
594
597
|
// Adding user configured params & timeout to timeout event data
|
|
595
|
-
timedOutBidder.params =
|
|
598
|
+
timedOutBidder.params = getUserConfiguredParams(adUnits, timedOutBidder.adUnitCode, timedOutBidder.bidder);
|
|
596
599
|
timedOutBidder.timeout = cbTimeout;
|
|
597
600
|
return timedOutBidder;
|
|
598
601
|
});
|
|
599
|
-
timedOutBidders =
|
|
602
|
+
timedOutBidders = groupBy(timedOutBidders, 'bidder');
|
|
600
603
|
|
|
601
604
|
Object.keys(timedOutBidders).forEach((bidder) => {
|
|
602
605
|
tryCallBidderMethod(bidder, 'onTimeout', timedOutBidders[bidder]);
|
|
@@ -605,7 +608,7 @@ adapterManager.callTimedOutBidders = function(adUnits, timedOutBidders, cbTimeou
|
|
|
605
608
|
|
|
606
609
|
adapterManager.callBidWonBidder = function(bidder, bid, adUnits) {
|
|
607
610
|
// Adding user configured params to bidWon event data
|
|
608
|
-
bid.params =
|
|
611
|
+
bid.params = getUserConfiguredParams(adUnits, bid.adUnitCode, bid.bidder);
|
|
609
612
|
adunitCounter.incrementBidderWinsCounter(bid.adUnitCode, bid.bidder);
|
|
610
613
|
tryCallBidderMethod(bidder, 'onBidWon', bid);
|
|
611
614
|
};
|
package/src/adloader.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import includes from 'core-js-pure/features/array/includes.js';
|
|
2
|
-
import
|
|
2
|
+
import { logError, logWarn, insertElement } from './utils.js';
|
|
3
3
|
|
|
4
4
|
const _requestCache = {};
|
|
5
5
|
// The below list contains modules or vendors whom Prebid allows to load external JS.
|
|
@@ -20,11 +20,11 @@ const _approvedLoadExternalJSList = [
|
|
|
20
20
|
*/
|
|
21
21
|
export function loadExternalScript(url, moduleCode, callback) {
|
|
22
22
|
if (!moduleCode || !url) {
|
|
23
|
-
|
|
23
|
+
logError('cannot load external script without url and moduleCode');
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
26
|
if (!includes(_approvedLoadExternalJSList, moduleCode)) {
|
|
27
|
-
|
|
27
|
+
logError(`${moduleCode} not whitelisted for loading external JavaScript`);
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
30
|
// only load each asset once
|
|
@@ -49,7 +49,7 @@ export function loadExternalScript(url, moduleCode, callback) {
|
|
|
49
49
|
_requestCache[url].callbacks.push(callback);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
logWarn(`module ${moduleCode} is loading external JavaScript`);
|
|
53
53
|
return requestResource(url, function () {
|
|
54
54
|
_requestCache[url].loaded = true;
|
|
55
55
|
try {
|
|
@@ -57,7 +57,7 @@ export function loadExternalScript(url, moduleCode, callback) {
|
|
|
57
57
|
_requestCache[url].callbacks[i]();
|
|
58
58
|
}
|
|
59
59
|
} catch (e) {
|
|
60
|
-
|
|
60
|
+
logError('Error executing callback', 'adloader.js:loadExternalScript', e);
|
|
61
61
|
}
|
|
62
62
|
});
|
|
63
63
|
|
|
@@ -84,7 +84,7 @@ export function loadExternalScript(url, moduleCode, callback) {
|
|
|
84
84
|
jptScript.src = tagSrc;
|
|
85
85
|
|
|
86
86
|
// add the new script tag to the page
|
|
87
|
-
|
|
87
|
+
insertElement(jptScript);
|
|
88
88
|
|
|
89
89
|
return jptScript;
|
|
90
90
|
}
|
package/src/ajax.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { config } from './config.js';
|
|
2
|
-
|
|
3
|
-
var utils = require('./utils.js');
|
|
2
|
+
import { logMessage, logError, parseUrl, buildUrl, _each } from './utils.js';
|
|
4
3
|
|
|
5
4
|
const XHR_DONE = 4;
|
|
6
5
|
|
|
@@ -25,10 +24,10 @@ export function ajaxBuilder(timeout = 3000, {request, done} = {}) {
|
|
|
25
24
|
|
|
26
25
|
let callbacks = typeof callback === 'object' && callback !== null ? callback : {
|
|
27
26
|
success: function() {
|
|
28
|
-
|
|
27
|
+
logMessage('xhr success');
|
|
29
28
|
},
|
|
30
29
|
error: function(e) {
|
|
31
|
-
|
|
30
|
+
logError('xhr error', null, e);
|
|
32
31
|
}
|
|
33
32
|
};
|
|
34
33
|
|
|
@@ -55,14 +54,14 @@ export function ajaxBuilder(timeout = 3000, {request, done} = {}) {
|
|
|
55
54
|
// Disabled timeout temporarily to avoid xhr failed requests. https://github.com/prebid/Prebid.js/issues/2648
|
|
56
55
|
if (!config.getConfig('disableAjaxTimeout')) {
|
|
57
56
|
x.ontimeout = function () {
|
|
58
|
-
|
|
57
|
+
logError(' xhr timeout after ', x.timeout, 'ms');
|
|
59
58
|
};
|
|
60
59
|
}
|
|
61
60
|
|
|
62
61
|
if (method === 'GET' && data) {
|
|
63
|
-
let urlInfo =
|
|
62
|
+
let urlInfo = parseUrl(url, options);
|
|
64
63
|
Object.assign(urlInfo.search, data);
|
|
65
|
-
url =
|
|
64
|
+
url = buildUrl(urlInfo);
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
x.open(method, url, true);
|
|
@@ -75,7 +74,7 @@ export function ajaxBuilder(timeout = 3000, {request, done} = {}) {
|
|
|
75
74
|
if (options.withCredentials) {
|
|
76
75
|
x.withCredentials = true;
|
|
77
76
|
}
|
|
78
|
-
|
|
77
|
+
_each(options.customHeaders, (value, header) => {
|
|
79
78
|
x.setRequestHeader(header, value);
|
|
80
79
|
});
|
|
81
80
|
if (options.preflight) {
|
|
@@ -93,7 +92,7 @@ export function ajaxBuilder(timeout = 3000, {request, done} = {}) {
|
|
|
93
92
|
x.send();
|
|
94
93
|
}
|
|
95
94
|
} catch (error) {
|
|
96
|
-
|
|
95
|
+
logError('xhr construction', error);
|
|
97
96
|
typeof callback === 'object' && callback !== null && callback.error(error);
|
|
98
97
|
}
|
|
99
98
|
}
|
package/src/auction.js
CHANGED
|
@@ -57,7 +57,10 @@
|
|
|
57
57
|
* @property {function(): void} callBids - sends requests to all adapters for bids
|
|
58
58
|
*/
|
|
59
59
|
|
|
60
|
-
import {
|
|
60
|
+
import {
|
|
61
|
+
flatten, timestamp, adUnitsFilter, deepAccess, getBidRequest, getValue, parseUrl, generateUUID,
|
|
62
|
+
logMessage, bind, logError, logInfo, logWarn, isEmpty, _each, isFn, isEmptyStr
|
|
63
|
+
} from './utils.js';
|
|
61
64
|
import { getPriceBucketString } from './cpmBucketManager.js';
|
|
62
65
|
import { getNativeTargeting } from './native.js';
|
|
63
66
|
import { getCacheUrl, store } from './videoCache.js';
|
|
@@ -71,7 +74,7 @@ import { OUTSTREAM } from './video.js';
|
|
|
71
74
|
import { VIDEO } from './mediaTypes.js';
|
|
72
75
|
|
|
73
76
|
const { syncUsers } = userSync;
|
|
74
|
-
|
|
77
|
+
|
|
75
78
|
const adapterManager = require('./adapterManager.js').default;
|
|
76
79
|
const events = require('./events.js');
|
|
77
80
|
const CONSTANTS = require('./constants.json');
|
|
@@ -112,7 +115,7 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels, a
|
|
|
112
115
|
let _noBids = [];
|
|
113
116
|
let _auctionStart;
|
|
114
117
|
let _auctionEnd;
|
|
115
|
-
let _auctionId = auctionId ||
|
|
118
|
+
let _auctionId = auctionId || generateUUID();
|
|
116
119
|
let _auctionStatus;
|
|
117
120
|
let _callback = callback;
|
|
118
121
|
let _timer;
|
|
@@ -157,7 +160,7 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels, a
|
|
|
157
160
|
if (_auctionEnd === undefined) {
|
|
158
161
|
let timedOutBidders = [];
|
|
159
162
|
if (timedOut) {
|
|
160
|
-
|
|
163
|
+
logMessage(`Auction ${_auctionId} timedOut`);
|
|
161
164
|
timedOutBidders = getTimedOutBids(_bidderRequests, _timelyBidders);
|
|
162
165
|
if (timedOutBidders.length) {
|
|
163
166
|
events.emit(CONSTANTS.EVENTS.BID_TIMEOUT, timedOutBidders);
|
|
@@ -173,13 +176,13 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels, a
|
|
|
173
176
|
if (_callback != null) {
|
|
174
177
|
const adUnitCodes = _adUnitCodes;
|
|
175
178
|
const bids = _bidsReceived
|
|
176
|
-
.filter(
|
|
179
|
+
.filter(bind.call(adUnitsFilter, this, adUnitCodes))
|
|
177
180
|
.reduce(groupByPlacement, {});
|
|
178
181
|
_callback.apply($$PREBID_GLOBAL$$, [bids, timedOut, _auctionId]);
|
|
179
182
|
_callback = null;
|
|
180
183
|
}
|
|
181
184
|
} catch (e) {
|
|
182
|
-
|
|
185
|
+
logError('Error executing bidsBackHandler', null, e);
|
|
183
186
|
} finally {
|
|
184
187
|
// Calling timed out bidders
|
|
185
188
|
if (timedOutBidders.length) {
|
|
@@ -199,7 +202,7 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels, a
|
|
|
199
202
|
function auctionDone() {
|
|
200
203
|
config.resetBidder();
|
|
201
204
|
// when all bidders have called done callback atleast once it means auction is complete
|
|
202
|
-
|
|
205
|
+
logInfo(`Bids Received for Auction with id: ${_auctionId}`, _bidsReceived);
|
|
203
206
|
_auctionStatus = AUCTION_COMPLETED;
|
|
204
207
|
executeCallback(false, true);
|
|
205
208
|
}
|
|
@@ -213,10 +216,10 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels, a
|
|
|
213
216
|
_auctionStart = Date.now();
|
|
214
217
|
|
|
215
218
|
let bidRequests = adapterManager.makeBidRequests(_adUnits, _auctionStart, _auctionId, _timeout, _labels);
|
|
216
|
-
|
|
219
|
+
logInfo(`Bids Requested for Auction with id: ${_auctionId}`, bidRequests);
|
|
217
220
|
|
|
218
221
|
if (bidRequests.length < 1) {
|
|
219
|
-
|
|
222
|
+
logWarn('No valid bid requests returned for auction');
|
|
220
223
|
auctionDone();
|
|
221
224
|
} else {
|
|
222
225
|
addBidderRequests.call({
|
|
@@ -279,7 +282,7 @@ export function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels, a
|
|
|
279
282
|
};
|
|
280
283
|
|
|
281
284
|
if (!runIfOriginHasCapacity(call)) {
|
|
282
|
-
|
|
285
|
+
logWarn('queueing auction due to limited endpoint capacity');
|
|
283
286
|
queuedCalls.push(call);
|
|
284
287
|
}
|
|
285
288
|
|
|
@@ -404,7 +407,7 @@ export function auctionCallbacks(auctionDone, auctionInstance) {
|
|
|
404
407
|
|
|
405
408
|
bidderRequestsDone.add(bidderRequest);
|
|
406
409
|
|
|
407
|
-
if (auctionOptionsConfig && !
|
|
410
|
+
if (auctionOptionsConfig && !isEmpty(auctionOptionsConfig)) {
|
|
408
411
|
const secondaryBidders = auctionOptionsConfig.secondaryBidders;
|
|
409
412
|
if (secondaryBidders && !bidderRequests.every(bidder => includes(secondaryBidders, bidder.bidderCode))) {
|
|
410
413
|
bidderRequests = bidderRequests.filter(request => !includes(secondaryBidders, request.bidderCode));
|
|
@@ -463,7 +466,7 @@ function tryAddVideoBid(auctionInstance, bidResponse, bidRequests, afterBidAdded
|
|
|
463
466
|
addBid = false;
|
|
464
467
|
callPrebidCache(auctionInstance, bidResponse, afterBidAdded, bidderRequest);
|
|
465
468
|
} else if (!bidResponse.vastUrl) {
|
|
466
|
-
|
|
469
|
+
logError('videoCacheKey specified but not required vastUrl for video bid');
|
|
467
470
|
addBid = false;
|
|
468
471
|
}
|
|
469
472
|
}
|
|
@@ -476,12 +479,12 @@ function tryAddVideoBid(auctionInstance, bidResponse, bidRequests, afterBidAdded
|
|
|
476
479
|
export const callPrebidCache = hook('async', function(auctionInstance, bidResponse, afterBidAdded, bidderRequest) {
|
|
477
480
|
store([bidResponse], function (error, cacheIds) {
|
|
478
481
|
if (error) {
|
|
479
|
-
|
|
482
|
+
logWarn(`Failed to save to the video cache: ${error}. Video bid must be discarded.`);
|
|
480
483
|
|
|
481
484
|
doCallbacksIfTimedout(auctionInstance, bidResponse);
|
|
482
485
|
} else {
|
|
483
486
|
if (cacheIds[0].uuid === '') {
|
|
484
|
-
|
|
487
|
+
logWarn(`Supplied video cache key was already in use by Prebid Cache; caching attempt was rejected. Video bid must be discarded.`);
|
|
485
488
|
|
|
486
489
|
doCallbacksIfTimedout(auctionInstance, bidResponse);
|
|
487
490
|
} else {
|
|
@@ -688,12 +691,12 @@ export function getStandardBidderSettings(mediaType, bidderCode, bidReq) {
|
|
|
688
691
|
});
|
|
689
692
|
|
|
690
693
|
// Adding hb_cache_host
|
|
691
|
-
if (config.getConfig('cache.url') && (!bidderCode ||
|
|
694
|
+
if (config.getConfig('cache.url') && (!bidderCode || deepAccess(bidderSettings, `${bidderCode}.sendStandardTargeting`) !== false)) {
|
|
692
695
|
const urlInfo = parseUrl(config.getConfig('cache.url'));
|
|
693
696
|
|
|
694
697
|
if (typeof find(adserverTargeting, targetingKeyVal => targetingKeyVal.key === TARGETING_KEYS.CACHE_HOST) === 'undefined') {
|
|
695
698
|
adserverTargeting.push(createKeyVal(TARGETING_KEYS.CACHE_HOST, function(bidResponse) {
|
|
696
|
-
return
|
|
699
|
+
return deepAccess(bidResponse, `adserverTargeting.${TARGETING_KEYS.CACHE_HOST}`)
|
|
697
700
|
? bidResponse.adserverTargeting[TARGETING_KEYS.CACHE_HOST] : urlInfo.hostname;
|
|
698
701
|
}));
|
|
699
702
|
}
|
|
@@ -735,19 +738,19 @@ function setKeys(keyValues, bidderSettings, custBidObj) {
|
|
|
735
738
|
var targeting = bidderSettings[CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING];
|
|
736
739
|
custBidObj.size = custBidObj.getSize();
|
|
737
740
|
|
|
738
|
-
|
|
741
|
+
_each(targeting, function (kvPair) {
|
|
739
742
|
var key = kvPair.key;
|
|
740
743
|
var value = kvPair.val;
|
|
741
744
|
|
|
742
745
|
if (keyValues[key]) {
|
|
743
|
-
|
|
746
|
+
logWarn('The key: ' + key + ' is getting ovewritten');
|
|
744
747
|
}
|
|
745
748
|
|
|
746
|
-
if (
|
|
749
|
+
if (isFn(value)) {
|
|
747
750
|
try {
|
|
748
751
|
value = value(custBidObj);
|
|
749
752
|
} catch (e) {
|
|
750
|
-
|
|
753
|
+
logError('bidmanager', 'ERROR', e);
|
|
751
754
|
}
|
|
752
755
|
}
|
|
753
756
|
|
|
@@ -755,12 +758,12 @@ function setKeys(keyValues, bidderSettings, custBidObj) {
|
|
|
755
758
|
((typeof bidderSettings.suppressEmptyKeys !== 'undefined' && bidderSettings.suppressEmptyKeys === true) ||
|
|
756
759
|
key === CONSTANTS.TARGETING_KEYS.DEAL) && // hb_deal is suppressed automatically if not set
|
|
757
760
|
(
|
|
758
|
-
|
|
761
|
+
isEmptyStr(value) ||
|
|
759
762
|
value === null ||
|
|
760
763
|
value === undefined
|
|
761
764
|
)
|
|
762
765
|
) {
|
|
763
|
-
|
|
766
|
+
logInfo("suppressing empty key '" + key + "' from adserver targeting");
|
|
764
767
|
} else {
|
|
765
768
|
keyValues[key] = value;
|
|
766
769
|
}
|
|
@@ -783,7 +786,7 @@ export function adjustBids(bid) {
|
|
|
783
786
|
try {
|
|
784
787
|
bidPriceAdjusted = bidCpmAdjustment(bid.cpm, Object.assign({}, bid));
|
|
785
788
|
} catch (e) {
|
|
786
|
-
|
|
789
|
+
logError('Error during bid adjustment', 'bidmanager.js', e);
|
|
787
790
|
}
|
|
788
791
|
}
|
|
789
792
|
}
|
package/src/bidfactory.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import { getUniqueIdentifierStr } from './utils.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
Required paramaters
|
|
@@ -22,7 +22,7 @@ function Bid(statusCode, bidRequest) {
|
|
|
22
22
|
this.width = 0;
|
|
23
23
|
this.height = 0;
|
|
24
24
|
this.statusMessage = _getStatus();
|
|
25
|
-
this.adId =
|
|
25
|
+
this.adId = getUniqueIdentifierStr();
|
|
26
26
|
this.requestId = bidRequest && bidRequest.bidId;
|
|
27
27
|
this.mediaType = 'banner';
|
|
28
28
|
this.source = _bidSrc;
|