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 { deepAccess, isPlainObject, isArray, replaceAuctionPrice, isFn } from '../src/utils.js';
|
|
2
2
|
import { config } from '../src/config.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
4
|
const BIDDER_CODE = 'apacdex';
|
|
@@ -32,16 +32,16 @@ export const spec = {
|
|
|
32
32
|
if (!bid.params.siteId && !bid.params.placementId) {
|
|
33
33
|
return false;
|
|
34
34
|
}
|
|
35
|
-
if (!
|
|
35
|
+
if (!deepAccess(bid, 'mediaTypes.banner') && !deepAccess(bid, 'mediaTypes.video')) {
|
|
36
36
|
return false;
|
|
37
37
|
}
|
|
38
|
-
if (
|
|
39
|
-
if (!
|
|
38
|
+
if (deepAccess(bid, 'mediaTypes.banner')) { // Not support multi type bids, favor banner over video
|
|
39
|
+
if (!deepAccess(bid, 'mediaTypes.banner.sizes')) {
|
|
40
40
|
// sizes at the banner is required.
|
|
41
41
|
return false;
|
|
42
42
|
}
|
|
43
|
-
} else if (
|
|
44
|
-
if (!
|
|
43
|
+
} else if (deepAccess(bid, 'mediaTypes.video')) {
|
|
44
|
+
if (!deepAccess(bid, 'mediaTypes.video.playerSize')) {
|
|
45
45
|
// playerSize is required for instream adUnits.
|
|
46
46
|
return false;
|
|
47
47
|
}
|
|
@@ -170,12 +170,12 @@ export const spec = {
|
|
|
170
170
|
},
|
|
171
171
|
interpretResponse: function (serverResponse, bidRequest) {
|
|
172
172
|
const serverBody = serverResponse.body;
|
|
173
|
-
if (!serverBody || !
|
|
173
|
+
if (!serverBody || !isPlainObject(serverBody)) {
|
|
174
174
|
return [];
|
|
175
175
|
}
|
|
176
176
|
|
|
177
177
|
const serverBids = serverBody.bids;
|
|
178
|
-
if (!serverBids || !
|
|
178
|
+
if (!serverBids || !isArray(serverBids)) {
|
|
179
179
|
return [];
|
|
180
180
|
}
|
|
181
181
|
|
|
@@ -197,12 +197,12 @@ export const spec = {
|
|
|
197
197
|
bidResponse.dealId = dealId;
|
|
198
198
|
}
|
|
199
199
|
if (bid.vastXml) {
|
|
200
|
-
bidResponse.vastXml =
|
|
200
|
+
bidResponse.vastXml = replaceAuctionPrice(bid.vastXml, bid.cpm);
|
|
201
201
|
} else {
|
|
202
|
-
bidResponse.ad =
|
|
202
|
+
bidResponse.ad = replaceAuctionPrice(bid.ad, bid.cpm);
|
|
203
203
|
}
|
|
204
204
|
bidResponse.meta = {};
|
|
205
|
-
if (bid.meta && bid.meta.advertiserDomains &&
|
|
205
|
+
if (bid.meta && bid.meta.advertiserDomains && isArray(bid.meta.advertiserDomains)) {
|
|
206
206
|
bidResponse.meta.advertiserDomains = bid.meta.advertiserDomains;
|
|
207
207
|
}
|
|
208
208
|
bidResponses.push(bidResponse);
|
|
@@ -285,7 +285,7 @@ function _extractTopWindowUrlFromBidderRequest(bidderRequest) {
|
|
|
285
285
|
if (config.getConfig('pageUrl')) {
|
|
286
286
|
return config.getConfig('pageUrl');
|
|
287
287
|
}
|
|
288
|
-
if (
|
|
288
|
+
if (deepAccess(bidderRequest, 'refererInfo.referer')) {
|
|
289
289
|
return bidderRequest.refererInfo.referer;
|
|
290
290
|
}
|
|
291
291
|
|
|
@@ -303,7 +303,7 @@ function _extractTopWindowUrlFromBidderRequest(bidderRequest) {
|
|
|
303
303
|
* @returns {string}
|
|
304
304
|
*/
|
|
305
305
|
function _extractTopWindowReferrerFromBidderRequest(bidderRequest) {
|
|
306
|
-
if (bidderRequest &&
|
|
306
|
+
if (bidderRequest && deepAccess(bidderRequest, 'refererInfo.referer')) {
|
|
307
307
|
return bidderRequest.refererInfo.referer;
|
|
308
308
|
}
|
|
309
309
|
|
|
@@ -340,7 +340,7 @@ export function getDomain(pageUrl) {
|
|
|
340
340
|
* @returns {boolean}
|
|
341
341
|
*/
|
|
342
342
|
export function validateGeoObject(geo) {
|
|
343
|
-
if (!
|
|
343
|
+
if (!isPlainObject(geo)) {
|
|
344
344
|
return false;
|
|
345
345
|
}
|
|
346
346
|
if (!geo.lat) {
|
|
@@ -362,7 +362,7 @@ export function validateGeoObject(geo) {
|
|
|
362
362
|
* @returns {float||null}
|
|
363
363
|
*/
|
|
364
364
|
function getBidFloor(bid) {
|
|
365
|
-
if (!
|
|
365
|
+
if (!isFn(bid.getFloor)) {
|
|
366
366
|
return (bid.params.floorPrice) ? bid.params.floorPrice : null;
|
|
367
367
|
}
|
|
368
368
|
|
|
@@ -371,7 +371,7 @@ function getBidFloor(bid) {
|
|
|
371
371
|
mediaType: '*',
|
|
372
372
|
size: '*'
|
|
373
373
|
});
|
|
374
|
-
if (
|
|
374
|
+
if (isPlainObject(floor) && !isNaN(floor.floor) && floor.currency === 'USD') {
|
|
375
375
|
return floor.floor;
|
|
376
376
|
}
|
|
377
377
|
return null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { convertCamelToUnderscore, isArray, isNumber, isPlainObject, logError, logInfo, deepAccess, logMessage, convertTypes, isStr, getParameterByName, deepClone, chunk, logWarn, getBidRequest, createTrackPixelHtml, isEmpty, transformBidderParamKeywords, getMaxValueFromArray, fill, getMinValueFromArray, isArrayOfNums, isFn } from '../src/utils.js';
|
|
1
2
|
import { Renderer } from '../src/Renderer.js';
|
|
2
|
-
import * as utils from '../src/utils.js';
|
|
3
3
|
import { config } from '../src/config.js';
|
|
4
4
|
import { registerBidder, getIabSubCategory } from '../src/adapters/bidderFactory.js';
|
|
5
5
|
import { BANNER, NATIVE, VIDEO, ADPOD } from '../src/mediaTypes.js';
|
|
@@ -109,13 +109,13 @@ export const spec = {
|
|
|
109
109
|
Object.keys(userObjBid.params.user)
|
|
110
110
|
.filter(param => includes(USER_PARAMS, param))
|
|
111
111
|
.forEach((param) => {
|
|
112
|
-
let uparam =
|
|
113
|
-
if (param === 'segments' &&
|
|
112
|
+
let uparam = convertCamelToUnderscore(param);
|
|
113
|
+
if (param === 'segments' && isArray(userObjBid.params.user[param])) {
|
|
114
114
|
let segs = [];
|
|
115
115
|
userObjBid.params.user[param].forEach(val => {
|
|
116
|
-
if (
|
|
116
|
+
if (isNumber(val)) {
|
|
117
117
|
segs.push({'id': val});
|
|
118
|
-
} else if (
|
|
118
|
+
} else if (isPlainObject(val)) {
|
|
119
119
|
segs.push(val);
|
|
120
120
|
}
|
|
121
121
|
});
|
|
@@ -152,7 +152,7 @@ export const spec = {
|
|
|
152
152
|
try {
|
|
153
153
|
debugObj = JSON.parse(debugCookie);
|
|
154
154
|
} catch (e) {
|
|
155
|
-
|
|
155
|
+
logError('AppNexus Debug Auction Cookie Error:\n\n' + e);
|
|
156
156
|
}
|
|
157
157
|
} else {
|
|
158
158
|
const debugBidRequest = find(bidRequests, hasDebug);
|
|
@@ -208,7 +208,7 @@ export const spec = {
|
|
|
208
208
|
|
|
209
209
|
if (debugObjParams.enabled) {
|
|
210
210
|
payload.debug = debugObjParams;
|
|
211
|
-
|
|
211
|
+
logInfo('AppNexus Debug Auction Settings:\n\n' + JSON.stringify(debugObjParams, null, 4));
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
if (bidderRequest && bidderRequest.gdprConsent) {
|
|
@@ -253,12 +253,12 @@ export const spec = {
|
|
|
253
253
|
if (bidRequests[0].userId) {
|
|
254
254
|
let eids = [];
|
|
255
255
|
|
|
256
|
-
addUserId(eids,
|
|
257
|
-
addUserId(eids,
|
|
258
|
-
addUserId(eids,
|
|
259
|
-
addUserId(eids,
|
|
260
|
-
addUserId(eids,
|
|
261
|
-
addUserId(eids,
|
|
256
|
+
addUserId(eids, deepAccess(bidRequests[0], `userId.flocId.id`), 'chrome.com', null);
|
|
257
|
+
addUserId(eids, deepAccess(bidRequests[0], `userId.criteoId`), 'criteo.com', null);
|
|
258
|
+
addUserId(eids, deepAccess(bidRequests[0], `userId.netId`), 'netid.de', null);
|
|
259
|
+
addUserId(eids, deepAccess(bidRequests[0], `userId.idl_env`), 'liveramp.com', null);
|
|
260
|
+
addUserId(eids, deepAccess(bidRequests[0], `userId.tdid`), 'adserver.org', 'TDID');
|
|
261
|
+
addUserId(eids, deepAccess(bidRequests[0], `userId.uid2.id`), 'uidapi.com', 'UID2');
|
|
262
262
|
|
|
263
263
|
if (eids.length) {
|
|
264
264
|
payload.eids = eids;
|
|
@@ -285,7 +285,7 @@ export const spec = {
|
|
|
285
285
|
if (!serverResponse || serverResponse.error) {
|
|
286
286
|
let errorMessage = `in response for ${bidderRequest.bidderCode} adapter`;
|
|
287
287
|
if (serverResponse && serverResponse.error) { errorMessage += `: ${serverResponse.error}`; }
|
|
288
|
-
|
|
288
|
+
logError(errorMessage);
|
|
289
289
|
return bids;
|
|
290
290
|
}
|
|
291
291
|
|
|
@@ -313,8 +313,8 @@ export const spec = {
|
|
|
313
313
|
.replace(/<h1>(.*)<\/h1>/gm, '\n\n===== $1 =====\n\n') // Header H1
|
|
314
314
|
.replace(/<h[2-6]>(.*)<\/h[2-6]>/gm, '\n\n*** $1 ***\n\n') // Headers
|
|
315
315
|
.replace(/(<([^>]+)>)/igm, ''); // Remove any other tags
|
|
316
|
-
|
|
317
|
-
|
|
316
|
+
logMessage('https://console.appnexus.com/docs/understanding-the-debug-auction');
|
|
317
|
+
logMessage(debugText);
|
|
318
318
|
}
|
|
319
319
|
|
|
320
320
|
return bids;
|
|
@@ -348,11 +348,11 @@ export const spec = {
|
|
|
348
348
|
},
|
|
349
349
|
|
|
350
350
|
transformBidParams: function (params, isOpenRtb) {
|
|
351
|
-
params =
|
|
351
|
+
params = convertTypes({
|
|
352
352
|
'member': 'string',
|
|
353
353
|
'invCode': 'string',
|
|
354
354
|
'placementId': 'number',
|
|
355
|
-
'keywords':
|
|
355
|
+
'keywords': transformBidderParamKeywords,
|
|
356
356
|
'publisherId': 'number'
|
|
357
357
|
}, params);
|
|
358
358
|
|
|
@@ -365,7 +365,7 @@ export const spec = {
|
|
|
365
365
|
}
|
|
366
366
|
|
|
367
367
|
Object.keys(params).forEach(paramKey => {
|
|
368
|
-
let convertedKey =
|
|
368
|
+
let convertedKey = convertCamelToUnderscore(paramKey);
|
|
369
369
|
if (convertedKey !== paramKey) {
|
|
370
370
|
params[convertedKey] = params[paramKey];
|
|
371
371
|
delete params[paramKey];
|
|
@@ -388,7 +388,7 @@ export const spec = {
|
|
|
388
388
|
}
|
|
389
389
|
|
|
390
390
|
function isPopulatedArray(arr) {
|
|
391
|
-
return !!(
|
|
391
|
+
return !!(isArray(arr) && arr.length > 0);
|
|
392
392
|
}
|
|
393
393
|
|
|
394
394
|
function deleteValues(keyPairObj) {
|
|
@@ -460,9 +460,9 @@ function strIsAppnexusViewabilityScript(str) {
|
|
|
460
460
|
|
|
461
461
|
function getAppnexusViewabilityScriptFromJsTrackers(jsTrackerArray) {
|
|
462
462
|
let viewJsPayload;
|
|
463
|
-
if (
|
|
463
|
+
if (isStr(jsTrackerArray) && strIsAppnexusViewabilityScript(jsTrackerArray)) {
|
|
464
464
|
viewJsPayload = jsTrackerArray;
|
|
465
|
-
} else if (
|
|
465
|
+
} else if (isArray(jsTrackerArray)) {
|
|
466
466
|
for (let i = 0; i < jsTrackerArray.length; i++) {
|
|
467
467
|
let currentJsTracker = jsTrackerArray[i];
|
|
468
468
|
if (strIsAppnexusViewabilityScript(currentJsTracker)) {
|
|
@@ -486,7 +486,7 @@ function hasPurpose1Consent(bidderRequest) {
|
|
|
486
486
|
let result = true;
|
|
487
487
|
if (bidderRequest && bidderRequest.gdprConsent) {
|
|
488
488
|
if (bidderRequest.gdprConsent.gdprApplies && bidderRequest.gdprConsent.apiVersion === 2) {
|
|
489
|
-
result = !!(
|
|
489
|
+
result = !!(deepAccess(bidderRequest.gdprConsent, 'vendorData.purpose.consents.1') === true);
|
|
490
490
|
}
|
|
491
491
|
}
|
|
492
492
|
return result;
|
|
@@ -504,16 +504,16 @@ function formatRequest(payload, bidderRequest) {
|
|
|
504
504
|
endpointUrl = URL_SIMPLE;
|
|
505
505
|
}
|
|
506
506
|
|
|
507
|
-
if (
|
|
507
|
+
if (getParameterByName('apn_test').toUpperCase() === 'TRUE' || config.getConfig('apn_test') === true) {
|
|
508
508
|
options.customHeaders = {
|
|
509
509
|
'X-Is-Test': 1
|
|
510
510
|
}
|
|
511
511
|
}
|
|
512
512
|
|
|
513
513
|
if (payload.tags.length > MAX_IMPS_PER_REQUEST) {
|
|
514
|
-
const clonedPayload =
|
|
514
|
+
const clonedPayload = deepClone(payload);
|
|
515
515
|
|
|
516
|
-
|
|
516
|
+
chunk(payload.tags, MAX_IMPS_PER_REQUEST).forEach(tags => {
|
|
517
517
|
clonedPayload.tags = tags;
|
|
518
518
|
const payloadString = JSON.stringify(clonedPayload);
|
|
519
519
|
request.push({
|
|
@@ -550,14 +550,14 @@ function newRenderer(adUnitCode, rtbBid, rendererOptions = {}) {
|
|
|
550
550
|
try {
|
|
551
551
|
renderer.setRender(outstreamRender);
|
|
552
552
|
} catch (err) {
|
|
553
|
-
|
|
553
|
+
logWarn('Prebid Error calling setRender on renderer', err);
|
|
554
554
|
}
|
|
555
555
|
|
|
556
556
|
renderer.setEventHandlers({
|
|
557
|
-
impression: () =>
|
|
558
|
-
loaded: () =>
|
|
557
|
+
impression: () => logMessage('AppNexus outstream video impression event'),
|
|
558
|
+
loaded: () => logMessage('AppNexus outstream video loaded event'),
|
|
559
559
|
ended: () => {
|
|
560
|
-
|
|
560
|
+
logMessage('AppNexus outstream renderer video event');
|
|
561
561
|
document.querySelector(`#${adUnitCode}`).style.display = 'none';
|
|
562
562
|
}
|
|
563
563
|
});
|
|
@@ -572,7 +572,7 @@ function newRenderer(adUnitCode, rtbBid, rendererOptions = {}) {
|
|
|
572
572
|
* @return Bid
|
|
573
573
|
*/
|
|
574
574
|
function newBid(serverBid, rtbBid, bidderRequest) {
|
|
575
|
-
const bidRequest =
|
|
575
|
+
const bidRequest = getBidRequest(serverBid.uuid, [bidderRequest]);
|
|
576
576
|
const bid = {
|
|
577
577
|
requestId: serverBid.uuid,
|
|
578
578
|
cpm: rtbBid.cpm,
|
|
@@ -607,7 +607,7 @@ function newBid(serverBid, rtbBid, bidderRequest) {
|
|
|
607
607
|
ttl: 3600
|
|
608
608
|
});
|
|
609
609
|
|
|
610
|
-
const videoContext =
|
|
610
|
+
const videoContext = deepAccess(bidRequest, 'mediaTypes.video.context');
|
|
611
611
|
switch (videoContext) {
|
|
612
612
|
case ADPOD:
|
|
613
613
|
const primaryCatId = getIabSubCategory(bidRequest.bidder, rtbBid.brand_category_id);
|
|
@@ -628,7 +628,7 @@ function newBid(serverBid, rtbBid, bidderRequest) {
|
|
|
628
628
|
|
|
629
629
|
if (rtbBid.renderer_url) {
|
|
630
630
|
const videoBid = find(bidderRequest.bids, bid => bid.bidId === serverBid.uuid);
|
|
631
|
-
const rendererOptions =
|
|
631
|
+
const rendererOptions = deepAccess(videoBid, 'renderer.options');
|
|
632
632
|
bid.renderer = newRenderer(bid.adUnitCode, rtbBid, rendererOptions);
|
|
633
633
|
}
|
|
634
634
|
break;
|
|
@@ -648,7 +648,7 @@ function newBid(serverBid, rtbBid, bidderRequest) {
|
|
|
648
648
|
|
|
649
649
|
if (jsTrackers == undefined) {
|
|
650
650
|
jsTrackers = jsTrackerDisarmed;
|
|
651
|
-
} else if (
|
|
651
|
+
} else if (isStr(jsTrackers)) {
|
|
652
652
|
jsTrackers = [jsTrackers, jsTrackerDisarmed];
|
|
653
653
|
} else {
|
|
654
654
|
jsTrackers.push(jsTrackerDisarmed);
|
|
@@ -697,11 +697,11 @@ function newBid(serverBid, rtbBid, bidderRequest) {
|
|
|
697
697
|
try {
|
|
698
698
|
if (rtbBid.rtb.trackers) {
|
|
699
699
|
const url = rtbBid.rtb.trackers[0].impression_urls[0];
|
|
700
|
-
const tracker =
|
|
700
|
+
const tracker = createTrackPixelHtml(url);
|
|
701
701
|
bid.ad += tracker;
|
|
702
702
|
}
|
|
703
703
|
} catch (error) {
|
|
704
|
-
|
|
704
|
+
logError('Error appending tracking pixel', error);
|
|
705
705
|
}
|
|
706
706
|
}
|
|
707
707
|
|
|
@@ -751,8 +751,8 @@ function bidToTag(bid) {
|
|
|
751
751
|
if (bid.params.externalImpId) {
|
|
752
752
|
tag.external_imp_id = bid.params.externalImpId;
|
|
753
753
|
}
|
|
754
|
-
if (!
|
|
755
|
-
let keywords =
|
|
754
|
+
if (!isEmpty(bid.params.keywords)) {
|
|
755
|
+
let keywords = transformBidderParamKeywords(bid.params.keywords);
|
|
756
756
|
|
|
757
757
|
if (keywords.length > 0) {
|
|
758
758
|
keywords.forEach(deleteValues);
|
|
@@ -760,12 +760,12 @@ function bidToTag(bid) {
|
|
|
760
760
|
tag.keywords = keywords;
|
|
761
761
|
}
|
|
762
762
|
|
|
763
|
-
let gpid =
|
|
763
|
+
let gpid = deepAccess(bid, 'ortb2Imp.ext.data.pbadslot');
|
|
764
764
|
if (gpid) {
|
|
765
765
|
tag.gpid = gpid;
|
|
766
766
|
}
|
|
767
767
|
|
|
768
|
-
if (bid.mediaType === NATIVE ||
|
|
768
|
+
if (bid.mediaType === NATIVE || deepAccess(bid, `mediaTypes.${NATIVE}`)) {
|
|
769
769
|
tag.ad_types.push(NATIVE);
|
|
770
770
|
if (tag.sizes.length === 0) {
|
|
771
771
|
tag.sizes = transformSizes([1, 1]);
|
|
@@ -777,8 +777,8 @@ function bidToTag(bid) {
|
|
|
777
777
|
}
|
|
778
778
|
}
|
|
779
779
|
|
|
780
|
-
const videoMediaType =
|
|
781
|
-
const context =
|
|
780
|
+
const videoMediaType = deepAccess(bid, `mediaTypes.${VIDEO}`);
|
|
781
|
+
const context = deepAccess(bid, 'mediaTypes.video.context');
|
|
782
782
|
|
|
783
783
|
if (videoMediaType && context === 'adpod') {
|
|
784
784
|
tag.hb_source = 7;
|
|
@@ -804,7 +804,7 @@ function bidToTag(bid) {
|
|
|
804
804
|
case 'context':
|
|
805
805
|
case 'playback_method':
|
|
806
806
|
let type = bid.params.video[param];
|
|
807
|
-
type = (
|
|
807
|
+
type = (isArray(type)) ? type[0] : type;
|
|
808
808
|
tag.video[param] = VIDEO_MAPPING[param][type];
|
|
809
809
|
break;
|
|
810
810
|
// Deprecating tags[].video.frameworks in favor of tags[].video_frameworks
|
|
@@ -815,7 +815,7 @@ function bidToTag(bid) {
|
|
|
815
815
|
}
|
|
816
816
|
});
|
|
817
817
|
|
|
818
|
-
if (bid.params.video.frameworks &&
|
|
818
|
+
if (bid.params.video.frameworks && isArray(bid.params.video.frameworks)) {
|
|
819
819
|
tag['video_frameworks'] = bid.params.video.frameworks;
|
|
820
820
|
}
|
|
821
821
|
}
|
|
@@ -840,7 +840,7 @@ function bidToTag(bid) {
|
|
|
840
840
|
case 'playbackmethod':
|
|
841
841
|
if (typeof tag.video['playback_method'] !== 'number') {
|
|
842
842
|
let type = videoMediaType[param];
|
|
843
|
-
type = (
|
|
843
|
+
type = (isArray(type)) ? type[0] : type;
|
|
844
844
|
|
|
845
845
|
// we only support iab's options 1-4 at this time.
|
|
846
846
|
if (type >= 1 && type <= 4) {
|
|
@@ -849,7 +849,7 @@ function bidToTag(bid) {
|
|
|
849
849
|
}
|
|
850
850
|
break;
|
|
851
851
|
case 'api':
|
|
852
|
-
if (!tag['video_frameworks'] &&
|
|
852
|
+
if (!tag['video_frameworks'] && isArray(videoMediaType[param])) {
|
|
853
853
|
// need to read thru array; remove 6 (we don't support it), swap 4 <> 5 if found (to match our adserver mapping for these specific values)
|
|
854
854
|
let apiTmp = videoMediaType[param].map(val => {
|
|
855
855
|
let v = (val === 4) ? 5 : (val === 5) ? 4 : val;
|
|
@@ -869,7 +869,7 @@ function bidToTag(bid) {
|
|
|
869
869
|
tag.video = Object.assign({}, tag.video, { custom_renderer_present: true });
|
|
870
870
|
}
|
|
871
871
|
|
|
872
|
-
if (bid.params.frameworks &&
|
|
872
|
+
if (bid.params.frameworks && isArray(bid.params.frameworks)) {
|
|
873
873
|
tag['banner_frameworks'] = bid.params.frameworks;
|
|
874
874
|
}
|
|
875
875
|
|
|
@@ -890,8 +890,8 @@ function transformSizes(requestSizes) {
|
|
|
890
890
|
let sizes = [];
|
|
891
891
|
let sizeObj = {};
|
|
892
892
|
|
|
893
|
-
if (
|
|
894
|
-
!
|
|
893
|
+
if (isArray(requestSizes) && requestSizes.length === 2 &&
|
|
894
|
+
!isArray(requestSizes[0])) {
|
|
895
895
|
sizeObj.width = parseInt(requestSizes[0], 10);
|
|
896
896
|
sizeObj.height = parseInt(requestSizes[1], 10);
|
|
897
897
|
sizes.push(sizeObj);
|
|
@@ -945,10 +945,10 @@ function hasOmidSupport(bid) {
|
|
|
945
945
|
let hasOmid = false;
|
|
946
946
|
const bidderParams = bid.params;
|
|
947
947
|
const videoParams = bid.params.video;
|
|
948
|
-
if (bidderParams.frameworks &&
|
|
948
|
+
if (bidderParams.frameworks && isArray(bidderParams.frameworks)) {
|
|
949
949
|
hasOmid = includes(bid.params.frameworks, 6);
|
|
950
950
|
}
|
|
951
|
-
if (!hasOmid && videoParams && videoParams.frameworks &&
|
|
951
|
+
if (!hasOmid && videoParams && videoParams.frameworks && isArray(videoParams.frameworks)) {
|
|
952
952
|
hasOmid = includes(bid.params.video.frameworks, 6);
|
|
953
953
|
}
|
|
954
954
|
return hasOmid;
|
|
@@ -963,14 +963,14 @@ function createAdPodRequest(tags, adPodBid) {
|
|
|
963
963
|
const { durationRangeSec, requireExactDuration } = adPodBid.mediaTypes.video;
|
|
964
964
|
|
|
965
965
|
const numberOfPlacements = getAdPodPlacementNumber(adPodBid.mediaTypes.video);
|
|
966
|
-
const maxDuration =
|
|
966
|
+
const maxDuration = getMaxValueFromArray(durationRangeSec);
|
|
967
967
|
|
|
968
968
|
const tagToDuplicate = tags.filter(tag => tag.uuid === adPodBid.bidId);
|
|
969
|
-
let request =
|
|
969
|
+
let request = fill(...tagToDuplicate, numberOfPlacements);
|
|
970
970
|
|
|
971
971
|
if (requireExactDuration) {
|
|
972
972
|
const divider = Math.ceil(numberOfPlacements / durationRangeSec.length);
|
|
973
|
-
const chunked =
|
|
973
|
+
const chunked = chunk(request, divider);
|
|
974
974
|
|
|
975
975
|
// each configured duration is set as min/maxduration for a subset of requests
|
|
976
976
|
durationRangeSec.forEach((duration, index) => {
|
|
@@ -989,7 +989,7 @@ function createAdPodRequest(tags, adPodBid) {
|
|
|
989
989
|
|
|
990
990
|
function getAdPodPlacementNumber(videoParams) {
|
|
991
991
|
const { adPodDurationSec, durationRangeSec, requireExactDuration } = videoParams;
|
|
992
|
-
const minAllowedDuration =
|
|
992
|
+
const minAllowedDuration = getMinValueFromArray(durationRangeSec);
|
|
993
993
|
const numberOfPlacements = Math.floor(adPodDurationSec / minAllowedDuration);
|
|
994
994
|
|
|
995
995
|
return requireExactDuration
|
|
@@ -998,7 +998,7 @@ function getAdPodPlacementNumber(videoParams) {
|
|
|
998
998
|
}
|
|
999
999
|
|
|
1000
1000
|
function setVideoProperty(tag, key, value) {
|
|
1001
|
-
if (
|
|
1001
|
+
if (isEmpty(tag.video)) { tag.video = {}; }
|
|
1002
1002
|
tag.video[key] = value;
|
|
1003
1003
|
}
|
|
1004
1004
|
|
|
@@ -1029,7 +1029,7 @@ function buildNativeRequest(params) {
|
|
|
1029
1029
|
const isImageAsset = !!(requestKey === NATIVE_MAPPING.image.serverName || requestKey === NATIVE_MAPPING.icon.serverName);
|
|
1030
1030
|
if (isImageAsset && request[requestKey].sizes) {
|
|
1031
1031
|
let sizes = request[requestKey].sizes;
|
|
1032
|
-
if (
|
|
1032
|
+
if (isArrayOfNums(sizes) || (isArray(sizes) && sizes.length > 0 && sizes.every(sz => isArrayOfNums(sz)))) {
|
|
1033
1033
|
request[requestKey].sizes = transformSizes(request[requestKey].sizes);
|
|
1034
1034
|
}
|
|
1035
1035
|
}
|
|
@@ -1108,7 +1108,7 @@ function addUserId(eids, id, source, rti) {
|
|
|
1108
1108
|
}
|
|
1109
1109
|
|
|
1110
1110
|
function getBidFloor(bid) {
|
|
1111
|
-
if (!
|
|
1111
|
+
if (!isFn(bid.getFloor)) {
|
|
1112
1112
|
return (bid.params.reserve) ? bid.params.reserve : null;
|
|
1113
1113
|
}
|
|
1114
1114
|
|
|
@@ -1117,7 +1117,7 @@ function getBidFloor(bid) {
|
|
|
1117
1117
|
mediaType: '*',
|
|
1118
1118
|
size: '*'
|
|
1119
1119
|
});
|
|
1120
|
-
if (
|
|
1120
|
+
if (isPlainObject(floor) && !isNaN(floor.floor) && floor.currency === 'USD') {
|
|
1121
1121
|
return floor.floor;
|
|
1122
1122
|
}
|
|
1123
1123
|
return null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { generateUUID, deepAccess, createTrackPixelHtml, getDNT } from '../src/utils.js';
|
|
1
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
3
|
import { config } from '../src/config.js';
|
|
3
|
-
import * as utils from '../src/utils.js';
|
|
4
4
|
import { getStorageManager } from '../src/storageManager.js';
|
|
5
5
|
|
|
6
6
|
const CONSTANTS = {
|
|
@@ -221,7 +221,7 @@ var dsuModule = (function() {
|
|
|
221
221
|
}
|
|
222
222
|
|
|
223
223
|
function generateDsu() {
|
|
224
|
-
var dsuId =
|
|
224
|
+
var dsuId = generateUUID();
|
|
225
225
|
var loc = location();
|
|
226
226
|
|
|
227
227
|
var dsuIdSuffix = hashWithKey(dsuId + loc.toString());
|
|
@@ -303,7 +303,7 @@ function getConsentStringFromPrebid(gdprConsentConfig) {
|
|
|
303
303
|
}
|
|
304
304
|
|
|
305
305
|
function getIabConsentString(bidderRequest) {
|
|
306
|
-
if (
|
|
306
|
+
if (deepAccess(bidderRequest, 'gdprConsent')) {
|
|
307
307
|
return getConsentStringFromPrebid(bidderRequest.gdprConsent);
|
|
308
308
|
}
|
|
309
309
|
|
|
@@ -318,7 +318,7 @@ function injectPixels(ad, pixels, scripts) {
|
|
|
318
318
|
let trackedAd = ad;
|
|
319
319
|
if (pixels) {
|
|
320
320
|
pixels.forEach(pixel => {
|
|
321
|
-
const tracker =
|
|
321
|
+
const tracker = createTrackPixelHtml(pixel);
|
|
322
322
|
trackedAd += tracker;
|
|
323
323
|
});
|
|
324
324
|
}
|
|
@@ -420,7 +420,7 @@ function buildRequests(bidRequests, bidderRequest) {
|
|
|
420
420
|
med: encodeURIComponent(window.location.href),
|
|
421
421
|
auid: bidderRequest.auctionId,
|
|
422
422
|
ref: document.referrer,
|
|
423
|
-
dnt:
|
|
423
|
+
dnt: getDNT() ? 1 : 0,
|
|
424
424
|
sr: getScreenParams()
|
|
425
425
|
};
|
|
426
426
|
|