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,6 +1,6 @@
|
|
|
1
|
+
import { getWindowTop, isGptPubadsDefined, deepAccess, getAdUnitSizes, isEmpty } 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 { BANNER, NATIVE } from '../src/mediaTypes.js';
|
|
5
5
|
import { getStorageManager } from '../src/storageManager.js';
|
|
6
6
|
import { ajax } from '../src/ajax.js';
|
|
@@ -199,7 +199,7 @@ export const spec = {
|
|
|
199
199
|
// GET BASIC CLIENT INFORMATION
|
|
200
200
|
get_client_info: function () {
|
|
201
201
|
let botTest = new BotClientTests();
|
|
202
|
-
let win =
|
|
202
|
+
let win = getWindowTop();
|
|
203
203
|
return {
|
|
204
204
|
'wiw': win.innerWidth,
|
|
205
205
|
'wih': win.innerHeight,
|
|
@@ -226,7 +226,7 @@ export const spec = {
|
|
|
226
226
|
|
|
227
227
|
// ADD GPT EVENT LISTENERS
|
|
228
228
|
let scope = this;
|
|
229
|
-
if (
|
|
229
|
+
if (isGptPubadsDefined()) {
|
|
230
230
|
if (typeof window['googletag'].pubads().addEventListener == 'function') {
|
|
231
231
|
window['googletag'].pubads().addEventListener('impressionViewable', function(event) {
|
|
232
232
|
scope.queue_metric({type: 'slot_view', source_id: scope.db_obj.source_id, auction_id: bid.auctionId, div_id: event.slot.getSlotElementId(), slot_id: event.slot.getSlotId().getAdUnitPath()});
|
|
@@ -306,7 +306,7 @@ export const spec = {
|
|
|
306
306
|
tagid: bidRequest.params.tagid || bidRequest.adUnitCode,
|
|
307
307
|
placement_id: bidRequest.params.placement_id || 0,
|
|
308
308
|
secure: window.location.protocol == 'https:',
|
|
309
|
-
ortb2:
|
|
309
|
+
ortb2: deepAccess(bidRequest, `ortb2Imp`) || {},
|
|
310
310
|
floor: {}
|
|
311
311
|
}
|
|
312
312
|
|
|
@@ -320,8 +320,8 @@ export const spec = {
|
|
|
320
320
|
}
|
|
321
321
|
|
|
322
322
|
// BUILD THE SIZES
|
|
323
|
-
if (
|
|
324
|
-
let sizes =
|
|
323
|
+
if (deepAccess(bidRequest, `mediaTypes.banner`)) {
|
|
324
|
+
let sizes = getAdUnitSizes(bidRequest);
|
|
325
325
|
if (sizes.length) {
|
|
326
326
|
imp.banner = {
|
|
327
327
|
w: sizes[0][0],
|
|
@@ -332,7 +332,7 @@ export const spec = {
|
|
|
332
332
|
// ADD TO THE LIST OF IMP REQUESTS
|
|
333
333
|
imps.push(imp);
|
|
334
334
|
}
|
|
335
|
-
} else if (
|
|
335
|
+
} else if (deepAccess(bidRequest, `mediaTypes.native`)) {
|
|
336
336
|
// ADD TO THE LIST OF IMP REQUESTS
|
|
337
337
|
imp.native = createNativeRequest(bidRequest);
|
|
338
338
|
imps.push(imp);
|
|
@@ -521,15 +521,15 @@ export const spec = {
|
|
|
521
521
|
const {id, img, data, title} = asset;
|
|
522
522
|
const key = NATIVE_ID_MAP[id];
|
|
523
523
|
if (key) {
|
|
524
|
-
if (!
|
|
524
|
+
if (!isEmpty(title)) {
|
|
525
525
|
result.title = title.text
|
|
526
|
-
} else if (!
|
|
526
|
+
} else if (!isEmpty(img)) {
|
|
527
527
|
result[key] = {
|
|
528
528
|
url: img.url,
|
|
529
529
|
height: img.h,
|
|
530
530
|
width: img.w
|
|
531
531
|
}
|
|
532
|
-
} else if (!
|
|
532
|
+
} else if (!isEmpty(data)) {
|
|
533
533
|
result[key] = data.value;
|
|
534
534
|
}
|
|
535
535
|
}
|
|
@@ -539,11 +539,11 @@ export const spec = {
|
|
|
539
539
|
}
|
|
540
540
|
|
|
541
541
|
let bids = [];
|
|
542
|
-
let resBids =
|
|
542
|
+
let resBids = deepAccess(rtbResponse, 'body.seatbid') || [];
|
|
543
543
|
resBids.forEach(bid => {
|
|
544
544
|
let resultItem = {requestId: bid.id, cpm: bid.price, creativeId: bid.crid, currency: bid.currency || 'USD', netRevenue: true, ttl: bid.ttl || 360, meta: {advertiserDomains: bid.adomain}};
|
|
545
545
|
|
|
546
|
-
let mediaType =
|
|
546
|
+
let mediaType = deepAccess(bid, 'ext.mtype') || '';
|
|
547
547
|
switch (mediaType) {
|
|
548
548
|
case 'banner':
|
|
549
549
|
bids.push(Object.assign({}, resultItem, {mediaType: BANNER, width: bid.w, height: bid.h, ad: bid.adm}));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { generateUUID, deepSetValue, deepAccess, isArray } from '../src/utils.js';
|
|
1
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
2
3
|
import {BANNER} from '../src/mediaTypes.js';
|
|
3
|
-
import * as utils from '../src/utils.js';
|
|
4
4
|
const BIDDER_CODE = 'deepintent';
|
|
5
5
|
const BIDDER_ENDPOINT = 'https://prebid.deepintent.com/prebid';
|
|
6
6
|
const USER_SYNC_URL = 'https://cdn.deepintent.com/syncpixel.html';
|
|
@@ -32,7 +32,7 @@ export const spec = {
|
|
|
32
32
|
var user = validBidRequests.map(bid => buildUser(bid));
|
|
33
33
|
clean(user);
|
|
34
34
|
const openRtbBidRequest = {
|
|
35
|
-
id:
|
|
35
|
+
id: generateUUID(),
|
|
36
36
|
at: 1,
|
|
37
37
|
imp: validBidRequests.map(bid => buildImpression(bid)),
|
|
38
38
|
site: buildSite(bidderRequest),
|
|
@@ -41,12 +41,12 @@ export const spec = {
|
|
|
41
41
|
};
|
|
42
42
|
|
|
43
43
|
if (bidderRequest && bidderRequest.uspConsent) {
|
|
44
|
-
|
|
44
|
+
deepSetValue(openRtbBidRequest, 'regs.ext.us_privacy', bidderRequest.uspConsent);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
if (bidderRequest && bidderRequest.gdprConsent) {
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
deepSetValue(openRtbBidRequest, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
|
|
49
|
+
deepSetValue(openRtbBidRequest, 'regs.ext.gdpr', (bidderRequest.gdprConsent.gdprApplies ? 1 : 0));
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
injectEids(openRtbBidRequest, validBidRequests);
|
|
@@ -134,19 +134,19 @@ function buildUser(bid) {
|
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
function injectEids(openRtbBidRequest, validBidRequests) {
|
|
137
|
-
const bidUserIdAsEids =
|
|
138
|
-
if (
|
|
139
|
-
|
|
140
|
-
|
|
137
|
+
const bidUserIdAsEids = deepAccess(validBidRequests, '0.userIdAsEids');
|
|
138
|
+
if (isArray(bidUserIdAsEids) && bidUserIdAsEids.length > 0) {
|
|
139
|
+
deepSetValue(openRtbBidRequest, 'user.eids', bidUserIdAsEids);
|
|
140
|
+
deepSetValue(openRtbBidRequest, 'user.ext.eids', bidUserIdAsEids);
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
function buildBanner(bid) {
|
|
145
|
-
if (
|
|
145
|
+
if (deepAccess(bid, 'mediaTypes.banner')) {
|
|
146
146
|
// Get Sizes from MediaTypes Object, Will always take first size, will be overrided by params for exact w,h
|
|
147
|
-
if (
|
|
148
|
-
let sizes =
|
|
149
|
-
if (
|
|
147
|
+
if (deepAccess(bid, 'mediaTypes.banner.sizes') && !bid.params.height && !bid.params.width) {
|
|
148
|
+
let sizes = deepAccess(bid, 'mediaTypes.banner.sizes');
|
|
149
|
+
if (isArray(sizes) && sizes.length > 0) {
|
|
150
150
|
return {
|
|
151
151
|
h: sizes[0][1],
|
|
152
152
|
w: sizes[0][0],
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @requires module:modules/realTimeData
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import
|
|
10
|
+
import { logMessage, deepSetValue, logError, logInfo } from '../src/utils.js';
|
|
11
11
|
import { ajax } from '../src/ajax.js';
|
|
12
12
|
import { submodule } from '../src/hook.js';
|
|
13
13
|
import { getGlobal } from '../src/prebidGlobal.js';
|
|
@@ -26,19 +26,19 @@ export function getDgKeywordsAndSet(reqBidsConfigObj, callback, moduleConfig, us
|
|
|
26
26
|
const url = (moduleConfig && moduleConfig.params && moduleConfig.params.url) ? moduleConfig.params.url : URL + encodeURIComponent(window.location.href);
|
|
27
27
|
const adUnits = reqBidsConfigObj.adUnits || getGlobal().adUnits;
|
|
28
28
|
let isFinish = false;
|
|
29
|
-
|
|
29
|
+
logMessage('[dgkeyword sub module]', adUnits, timeout);
|
|
30
30
|
let setKeywordTargetBidders = getTargetBidderOfDgKeywords(adUnits);
|
|
31
31
|
if (setKeywordTargetBidders.length <= 0) {
|
|
32
|
-
|
|
32
|
+
logMessage('[dgkeyword sub module] no dgkeyword targets.');
|
|
33
33
|
callback();
|
|
34
34
|
} else {
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
logMessage('[dgkeyword sub module] dgkeyword targets:', setKeywordTargetBidders);
|
|
36
|
+
logMessage('[dgkeyword sub module] get targets from profile api start.');
|
|
37
37
|
ajax(url, {
|
|
38
38
|
success: function(response) {
|
|
39
39
|
const res = JSON.parse(response);
|
|
40
40
|
if (!isFinish) {
|
|
41
|
-
|
|
41
|
+
logMessage('[dgkeyword sub module] get targets from profile api end.');
|
|
42
42
|
if (res) {
|
|
43
43
|
let keywords = {};
|
|
44
44
|
if (res['s'] != null && res['s'].length > 0) {
|
|
@@ -60,8 +60,8 @@ export function getDgKeywordsAndSet(reqBidsConfigObj, callback, moduleConfig, us
|
|
|
60
60
|
if (!reqBidsConfigObj._ignoreSetOrtb2) {
|
|
61
61
|
// set keywrods to ortb2
|
|
62
62
|
let addOrtb2 = {};
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
deepSetValue(addOrtb2, 'site.keywords', keywords);
|
|
64
|
+
deepSetValue(addOrtb2, 'user.keywords', keywords);
|
|
65
65
|
const ortb2 = {ortb2: addOrtb2};
|
|
66
66
|
reqBidsConfigObj.setBidderConfig({ bidders: Object.keys(targetBidKeys), config: ortb2 });
|
|
67
67
|
}
|
|
@@ -73,17 +73,16 @@ export function getDgKeywordsAndSet(reqBidsConfigObj, callback, moduleConfig, us
|
|
|
73
73
|
},
|
|
74
74
|
error: function(errorStatus) {
|
|
75
75
|
// error occur
|
|
76
|
-
|
|
76
|
+
logError('[dgkeyword sub module] profile api access error.', errorStatus);
|
|
77
77
|
callback();
|
|
78
78
|
}
|
|
79
79
|
}, null, {
|
|
80
80
|
withCredentials: true,
|
|
81
|
-
contentType: 'application/json',
|
|
82
81
|
});
|
|
83
82
|
setTimeout(function () {
|
|
84
83
|
if (!isFinish) {
|
|
85
84
|
// profile api timeout
|
|
86
|
-
|
|
85
|
+
logInfo('[dgkeyword sub module] profile api timeout. [timeout: ' + timeout + 'ms]');
|
|
87
86
|
isFinish = true;
|
|
88
87
|
}
|
|
89
88
|
callback();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { isArray, generateUUID, deepAccess, isStr } 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';
|
|
@@ -30,7 +30,7 @@ export const spec = {
|
|
|
30
30
|
interpretResponse(response, bidRequest) {
|
|
31
31
|
response = response.body || {};
|
|
32
32
|
if (response.seatbid) {
|
|
33
|
-
if (
|
|
33
|
+
if (isArray(response.seatbid)) {
|
|
34
34
|
const { seatbid } = response;
|
|
35
35
|
let winners = seatbid.reduce((bid, ads) => {
|
|
36
36
|
let ad = ads.bid.reduce(function (oBid, nBid) {
|
|
@@ -89,7 +89,7 @@ export const spec = {
|
|
|
89
89
|
let timeout = config.getConfig('bidderTimeout');
|
|
90
90
|
let schain = null;
|
|
91
91
|
let dmxRequest = {
|
|
92
|
-
id:
|
|
92
|
+
id: generateUUID(),
|
|
93
93
|
cur: ['USD'],
|
|
94
94
|
tmax: (timeout - 300),
|
|
95
95
|
test: this.test() || 0,
|
|
@@ -109,17 +109,17 @@ export const spec = {
|
|
|
109
109
|
|
|
110
110
|
let eids = [];
|
|
111
111
|
if (bidRequest[0] && bidRequest[0].userId) {
|
|
112
|
-
bindUserId(eids,
|
|
113
|
-
bindUserId(eids,
|
|
114
|
-
bindUserId(eids,
|
|
115
|
-
bindUserId(eids,
|
|
116
|
-
bindUserId(eids,
|
|
117
|
-
bindUserId(eids,
|
|
118
|
-
bindUserId(eids,
|
|
119
|
-
bindUserId(eids,
|
|
120
|
-
bindUserId(eids,
|
|
121
|
-
bindUserId(eids,
|
|
122
|
-
bindUserId(eids,
|
|
112
|
+
bindUserId(eids, deepAccess(bidRequest[0], `userId.idl_env`), 'liveramp.com', 1);
|
|
113
|
+
bindUserId(eids, deepAccess(bidRequest[0], `userId.id5id.uid`), 'id5-sync.com', 1);
|
|
114
|
+
bindUserId(eids, deepAccess(bidRequest[0], `userId.pubcid`), 'pubcid.org', 1);
|
|
115
|
+
bindUserId(eids, deepAccess(bidRequest[0], `userId.tdid`), 'adserver.org', 1);
|
|
116
|
+
bindUserId(eids, deepAccess(bidRequest[0], `userId.criteoId`), 'criteo.com', 1);
|
|
117
|
+
bindUserId(eids, deepAccess(bidRequest[0], `userId.britepoolid`), 'britepool.com', 1);
|
|
118
|
+
bindUserId(eids, deepAccess(bidRequest[0], `userId.lipb.lipbid`), 'liveintent.com', 1);
|
|
119
|
+
bindUserId(eids, deepAccess(bidRequest[0], `userId.intentiqid`), 'intentiq.com', 1);
|
|
120
|
+
bindUserId(eids, deepAccess(bidRequest[0], `userId.lotamePanoramaId`), 'lotame.com', 1);
|
|
121
|
+
bindUserId(eids, deepAccess(bidRequest[0], `userId.parrableId`), 'parrable.com', 1);
|
|
122
|
+
bindUserId(eids, deepAccess(bidRequest[0], `userId.netId`), 'netid.de', 1);
|
|
123
123
|
dmxRequest.user = dmxRequest.user || {};
|
|
124
124
|
dmxRequest.user.ext = dmxRequest.user.ext || {};
|
|
125
125
|
dmxRequest.user.ext.eids = eids;
|
|
@@ -370,7 +370,7 @@ export function defaultSize(thebidObj) {
|
|
|
370
370
|
}
|
|
371
371
|
|
|
372
372
|
export function bindUserId(eids, value, source, atype) {
|
|
373
|
-
if (
|
|
373
|
+
if (isStr(value) && Array.isArray(eids)) {
|
|
374
374
|
eids.push({
|
|
375
375
|
source,
|
|
376
376
|
uids: [
|
package/modules/dmdIdSystem.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @requires module:modules/userId
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import
|
|
8
|
+
import { logError, getWindowLocation } from '../src/utils.js';
|
|
9
9
|
import { submodule } from '../src/hook.js';
|
|
10
10
|
import { ajax } from '../src/ajax.js';
|
|
11
11
|
|
|
@@ -46,7 +46,7 @@ export const dmdIdSubmodule = {
|
|
|
46
46
|
!configParams.api_key ||
|
|
47
47
|
typeof configParams.api_key !== 'string'
|
|
48
48
|
) {
|
|
49
|
-
|
|
49
|
+
logError('dmd submodule requires an api_key.');
|
|
50
50
|
return;
|
|
51
51
|
}
|
|
52
52
|
// If cahceIdObj is null or undefined - calling AIX-API
|
|
@@ -59,7 +59,7 @@ export const dmdIdSubmodule = {
|
|
|
59
59
|
// Setting headers
|
|
60
60
|
const headers = {};
|
|
61
61
|
headers['x-api-key'] = configParams.api_key;
|
|
62
|
-
headers['x-domain'] =
|
|
62
|
+
headers['x-domain'] = getWindowLocation();
|
|
63
63
|
// Response callbacks
|
|
64
64
|
const resp = function (callback) {
|
|
65
65
|
const callbacks = {
|
|
@@ -72,12 +72,12 @@ export const dmdIdSubmodule = {
|
|
|
72
72
|
responseId = responseObj.dgid;
|
|
73
73
|
}
|
|
74
74
|
} catch (error) {
|
|
75
|
-
|
|
75
|
+
logError(error);
|
|
76
76
|
}
|
|
77
77
|
callback(responseId);
|
|
78
78
|
},
|
|
79
79
|
error: error => {
|
|
80
|
-
|
|
80
|
+
logError(`${MODULE_NAME}: ID fetch encountered an error`, error);
|
|
81
81
|
callback();
|
|
82
82
|
}
|
|
83
83
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { tryAppendQueryString } 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 } from '../src/mediaTypes.js';
|
|
@@ -24,14 +24,14 @@ export const spec = {
|
|
|
24
24
|
const { publisherUrl, placementId } = validBidRequest.params;
|
|
25
25
|
const url = publisherUrl || page
|
|
26
26
|
let queryString = '';
|
|
27
|
-
queryString =
|
|
28
|
-
queryString =
|
|
29
|
-
queryString =
|
|
30
|
-
queryString =
|
|
31
|
-
queryString =
|
|
32
|
-
queryString =
|
|
33
|
-
queryString =
|
|
34
|
-
queryString =
|
|
27
|
+
queryString = tryAppendQueryString(queryString, 'id', placementId);
|
|
28
|
+
queryString = tryAppendQueryString(queryString, 'publisherDomain', domain);
|
|
29
|
+
queryString = tryAppendQueryString(queryString, 'pubRequestedURL', encodeURIComponent(url));
|
|
30
|
+
queryString = tryAppendQueryString(queryString, 'loggedInUser', encodedUserInfo);
|
|
31
|
+
queryString = tryAppendQueryString(queryString, 'currentUrl', url);
|
|
32
|
+
queryString = tryAppendQueryString(queryString, 'prebidjs', true);
|
|
33
|
+
queryString = tryAppendQueryString(queryString, 'token', token);
|
|
34
|
+
queryString = tryAppendQueryString(queryString, 'requestId', validBidRequest.bidId);
|
|
35
35
|
|
|
36
36
|
serverRequests.push({
|
|
37
37
|
method: 'GET',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { deepAccess } from '../src/utils.js';
|
|
2
2
|
import {config} from '../src/config.js';
|
|
3
3
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
@@ -199,7 +199,7 @@ function objectToQueryString(obj, prefix) {
|
|
|
199
199
|
* @returns {boolean} True if it's a banner bid
|
|
200
200
|
*/
|
|
201
201
|
function isBannerRequest(bid) {
|
|
202
|
-
return bid.mediaType === 'banner' || !!
|
|
202
|
+
return bid.mediaType === 'banner' || !!deepAccess(bid, 'mediaTypes.banner') || !isVideoRequest(bid);
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
/**
|
|
@@ -209,7 +209,7 @@ function isBannerRequest(bid) {
|
|
|
209
209
|
* @returns {boolean} True if it's a video bid
|
|
210
210
|
*/
|
|
211
211
|
function isVideoRequest(bid) {
|
|
212
|
-
return bid.mediaType === 'video' || !!
|
|
212
|
+
return bid.mediaType === 'video' || !!deepAccess(bid, 'mediaTypes.video');
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
/**
|
|
@@ -219,7 +219,7 @@ function isVideoRequest(bid) {
|
|
|
219
219
|
* @returns {object} True if it's a video bid
|
|
220
220
|
*/
|
|
221
221
|
function getVideoSizes(bid) {
|
|
222
|
-
return parseSizes(
|
|
222
|
+
return parseSizes(deepAccess(bid, 'mediaTypes.video.playerSize') || bid.sizes);
|
|
223
223
|
}
|
|
224
224
|
|
|
225
225
|
/**
|
|
@@ -229,7 +229,7 @@ function getVideoSizes(bid) {
|
|
|
229
229
|
* @returns {object} True if it's a video bid
|
|
230
230
|
*/
|
|
231
231
|
function getBannerSizes(bid) {
|
|
232
|
-
return parseSizes(
|
|
232
|
+
return parseSizes(deepAccess(bid, 'mediaTypes.banner.sizes') || bid.sizes);
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { logInfo, getBidIdParameter } from '../src/utils.js';
|
|
2
2
|
import { VIDEO, BANNER } from '../src/mediaTypes.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
4
|
const BIDDER_CODE = 'ebdr';
|
|
@@ -18,11 +18,11 @@ export const spec = {
|
|
|
18
18
|
let zoneid = '';
|
|
19
19
|
let requestId = '';
|
|
20
20
|
bids.forEach(bid => {
|
|
21
|
-
|
|
22
|
-
let bidFloor =
|
|
21
|
+
logInfo('Log bid', bid);
|
|
22
|
+
let bidFloor = getBidIdParameter('bidfloor', bid.params);
|
|
23
23
|
let whArr = getWidthAndHeight(bid);
|
|
24
24
|
let _mediaTypes = (bid.mediaTypes && bid.mediaTypes.video) ? VIDEO : BANNER;
|
|
25
|
-
zoneid =
|
|
25
|
+
zoneid = getBidIdParameter('zoneid', bid.params);
|
|
26
26
|
requestId = bid.bidderRequestId;
|
|
27
27
|
ebdrImps.push({
|
|
28
28
|
id: bid.bidId,
|
|
@@ -36,9 +36,9 @@ export const spec = {
|
|
|
36
36
|
w: whArr[0],
|
|
37
37
|
h: whArr[1]
|
|
38
38
|
};
|
|
39
|
-
ebdrParams['latitude'] =
|
|
40
|
-
ebdrParams['longitude'] =
|
|
41
|
-
ebdrParams['ifa'] = (
|
|
39
|
+
ebdrParams['latitude'] = getBidIdParameter('latitude', bid.params);
|
|
40
|
+
ebdrParams['longitude'] = getBidIdParameter('longitude', bid.params);
|
|
41
|
+
ebdrParams['ifa'] = (getBidIdParameter('IDFA', bid.params).length > getBidIdParameter('ADID', bid.params).length) ? getBidIdParameter('IDFA', bid.params) : getBidIdParameter('ADID', bid.params);
|
|
42
42
|
});
|
|
43
43
|
let ebdrBidReq = {
|
|
44
44
|
id: requestId,
|
|
@@ -62,8 +62,8 @@ export const spec = {
|
|
|
62
62
|
};
|
|
63
63
|
},
|
|
64
64
|
interpretResponse: function(serverResponse, bidRequest) {
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
logInfo('Log serverResponse', serverResponse);
|
|
66
|
+
logInfo('Log bidRequest', bidRequest);
|
|
67
67
|
let ebdrResponseImps = [];
|
|
68
68
|
const ebdrResponseObj = serverResponse.body;
|
|
69
69
|
if (!ebdrResponseObj || !ebdrResponseObj.seatbid || ebdrResponseObj.seatbid.length === 0 || !ebdrResponseObj.seatbid[0].bid || ebdrResponseObj.seatbid[0].bid.length === 0) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { isArray, logWarn, logError, parseUrl, deepAccess, isStr, _each, getBidIdParameter, isFn, isPlainObject } from '../src/utils.js';
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
4
4
|
import { Renderer } from '../src/Renderer.js';
|
|
@@ -18,11 +18,11 @@ const EIDS_SUPPORTED = [
|
|
|
18
18
|
|
|
19
19
|
export const emxAdapter = {
|
|
20
20
|
validateSizes: (sizes) => {
|
|
21
|
-
if (!
|
|
22
|
-
|
|
21
|
+
if (!isArray(sizes) || typeof sizes[0] === 'undefined') {
|
|
22
|
+
logWarn(BIDDER_CODE + ': Sizes should be an array');
|
|
23
23
|
return false;
|
|
24
24
|
}
|
|
25
|
-
return sizes.every(size =>
|
|
25
|
+
return sizes.every(size => isArray(size) && size.length === 2);
|
|
26
26
|
},
|
|
27
27
|
checkVideoContext: (bid) => {
|
|
28
28
|
return ((bid && bid.mediaTypes && bid.mediaTypes.video && bid.mediaTypes.video.context) && ((bid.mediaTypes.video.context === 'instream') || (bid.mediaTypes.video.context === 'outstream')));
|
|
@@ -31,7 +31,7 @@ export const emxAdapter = {
|
|
|
31
31
|
let sizes = [];
|
|
32
32
|
bid.mediaTypes && bid.mediaTypes.banner && bid.mediaTypes.banner.sizes ? sizes = bid.mediaTypes.banner.sizes : sizes = bid.sizes;
|
|
33
33
|
if (!emxAdapter.validateSizes(sizes)) {
|
|
34
|
-
|
|
34
|
+
logWarn(BIDDER_CODE + ': could not detect mediaType banner sizes. Assigning to bid sizes instead');
|
|
35
35
|
sizes = bid.sizes
|
|
36
36
|
}
|
|
37
37
|
return {
|
|
@@ -78,7 +78,7 @@ export const emxAdapter = {
|
|
|
78
78
|
cleanProtocols: (video) => {
|
|
79
79
|
if (video.protocols && includes(video.protocols, 7)) {
|
|
80
80
|
// not supporting VAST protocol 7 (VAST 4.0);
|
|
81
|
-
|
|
81
|
+
logWarn(BIDDER_CODE + ': VAST 4.0 is currently not supported. This protocol has been filtered out of the request.');
|
|
82
82
|
video.protocols = video.protocols.filter(protocol => protocol !== 7);
|
|
83
83
|
}
|
|
84
84
|
return video;
|
|
@@ -106,7 +106,7 @@ export const emxAdapter = {
|
|
|
106
106
|
try {
|
|
107
107
|
renderer.setRender(emxAdapter.outstreamRender);
|
|
108
108
|
} catch (err) {
|
|
109
|
-
|
|
109
|
+
logWarn('Prebid Error calling setRender on renderer', err);
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
return renderer;
|
|
@@ -114,7 +114,7 @@ export const emxAdapter = {
|
|
|
114
114
|
buildVideo: (bid) => {
|
|
115
115
|
let videoObj = Object.assign(bid.mediaTypes.video, bid.params.video);
|
|
116
116
|
|
|
117
|
-
if (
|
|
117
|
+
if (isArray(bid.mediaTypes.video.playerSize[0])) {
|
|
118
118
|
videoObj['w'] = bid.mediaTypes.video.playerSize[0][0];
|
|
119
119
|
videoObj['h'] = bid.mediaTypes.video.playerSize[0][1];
|
|
120
120
|
} else {
|
|
@@ -127,7 +127,7 @@ export const emxAdapter = {
|
|
|
127
127
|
try {
|
|
128
128
|
return decodeURIComponent(bidResponseAdm.replace(/%(?![0-9][0-9a-fA-F]+)/g, '%25'));
|
|
129
129
|
} catch (err) {
|
|
130
|
-
|
|
130
|
+
logError('emx_digitalBidAdapter', 'error', err);
|
|
131
131
|
}
|
|
132
132
|
},
|
|
133
133
|
getReferrer: () => {
|
|
@@ -138,7 +138,7 @@ export const emxAdapter = {
|
|
|
138
138
|
}
|
|
139
139
|
},
|
|
140
140
|
getSite: (refInfo) => {
|
|
141
|
-
let url =
|
|
141
|
+
let url = parseUrl(refInfo.referer);
|
|
142
142
|
return {
|
|
143
143
|
domain: url.hostname,
|
|
144
144
|
page: refInfo.referer,
|
|
@@ -182,7 +182,7 @@ export const emxAdapter = {
|
|
|
182
182
|
},
|
|
183
183
|
getUserId(bidRequests) {
|
|
184
184
|
return ({ key, source, rtiPartner }) => {
|
|
185
|
-
let id =
|
|
185
|
+
let id = deepAccess(bidRequests, `userId.${key}`);
|
|
186
186
|
return id ? emxAdapter.formatEid(id, source, rtiPartner) : null;
|
|
187
187
|
};
|
|
188
188
|
},
|
|
@@ -203,17 +203,17 @@ export const spec = {
|
|
|
203
203
|
supportedMediaTypes: [BANNER, VIDEO],
|
|
204
204
|
isBidRequestValid: function (bid) {
|
|
205
205
|
if (!bid || !bid.params) {
|
|
206
|
-
|
|
206
|
+
logWarn(BIDDER_CODE + ': Missing bid or bid params.');
|
|
207
207
|
return false;
|
|
208
208
|
}
|
|
209
209
|
|
|
210
210
|
if (bid.bidder !== BIDDER_CODE) {
|
|
211
|
-
|
|
211
|
+
logWarn(BIDDER_CODE + ': Must use "emx_digital" as bidder code.');
|
|
212
212
|
return false;
|
|
213
213
|
}
|
|
214
214
|
|
|
215
|
-
if (!bid.params.tagid || !
|
|
216
|
-
|
|
215
|
+
if (!bid.params.tagid || !isStr(bid.params.tagid)) {
|
|
216
|
+
logWarn(BIDDER_CODE + ': Missing tagid param or tagid present and not type String.');
|
|
217
217
|
return false;
|
|
218
218
|
}
|
|
219
219
|
|
|
@@ -221,17 +221,17 @@ export const spec = {
|
|
|
221
221
|
let sizes;
|
|
222
222
|
bid.mediaTypes.banner.sizes ? sizes = bid.mediaTypes.banner.sizes : sizes = bid.sizes;
|
|
223
223
|
if (!emxAdapter.validateSizes(sizes)) {
|
|
224
|
-
|
|
224
|
+
logWarn(BIDDER_CODE + ': Missing sizes in bid');
|
|
225
225
|
return false;
|
|
226
226
|
}
|
|
227
227
|
} else if (bid.mediaTypes && bid.mediaTypes.video) {
|
|
228
228
|
if (!emxAdapter.checkVideoContext(bid)) {
|
|
229
|
-
|
|
229
|
+
logWarn(BIDDER_CODE + ': Missing video context: instream or outstream');
|
|
230
230
|
return false;
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
if (!bid.mediaTypes.video.playerSize) {
|
|
234
|
-
|
|
234
|
+
logWarn(BIDDER_CODE + ': Missing video playerSize');
|
|
235
235
|
return false;
|
|
236
236
|
}
|
|
237
237
|
}
|
|
@@ -247,8 +247,8 @@ export const spec = {
|
|
|
247
247
|
const device = emxAdapter.getDevice();
|
|
248
248
|
const site = emxAdapter.getSite(bidderRequest.refererInfo);
|
|
249
249
|
|
|
250
|
-
|
|
251
|
-
let tagid =
|
|
250
|
+
_each(validBidRequests, function (bid) {
|
|
251
|
+
let tagid = getBidIdParameter('tagid', bid.params);
|
|
252
252
|
let bidfloor = parseFloat(getBidFloor(bid)) || 0;
|
|
253
253
|
let isVideo = !!bid.mediaTypes.video;
|
|
254
254
|
let data = {
|
|
@@ -364,8 +364,8 @@ export const spec = {
|
|
|
364
364
|
|
|
365
365
|
// support floors module in prebid 5.0
|
|
366
366
|
function getBidFloor(bid) {
|
|
367
|
-
if (!
|
|
368
|
-
return parseFloat(
|
|
367
|
+
if (!isFn(bid.getFloor)) {
|
|
368
|
+
return parseFloat(getBidIdParameter('bidfloor', bid.params));
|
|
369
369
|
}
|
|
370
370
|
|
|
371
371
|
let floor = bid.getFloor({
|
|
@@ -373,7 +373,7 @@ function getBidFloor(bid) {
|
|
|
373
373
|
mediaType: '*',
|
|
374
374
|
size: '*'
|
|
375
375
|
});
|
|
376
|
-
if (
|
|
376
|
+
if (isPlainObject(floor) && !isNaN(floor.floor) && floor.currency === 'USD') {
|
|
377
377
|
return floor.floor;
|
|
378
378
|
}
|
|
379
379
|
return null;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
|
|
1
2
|
/**
|
|
2
3
|
* This module sets default values and validates ortb2 first part data
|
|
3
4
|
* @module modules/firstPartyData
|
|
4
5
|
*/
|
|
5
|
-
import
|
|
6
|
+
import { timestamp, mergeDeep } from '../src/utils.js';
|
|
6
7
|
import { submodule } from '../src/hook.js';
|
|
7
8
|
import { getRefererInfo } from '../src/refererDetection.js';
|
|
8
9
|
import { getCoreStorageManager } from '../src/storageManager.js';
|
|
@@ -32,7 +33,7 @@ export function findRootDomain(fullDomain = window.location.hostname) {
|
|
|
32
33
|
const TEST_COOKIE_VALUE = 'writeable';
|
|
33
34
|
do {
|
|
34
35
|
rootDomain = domainParts.slice(startIndex).join('.');
|
|
35
|
-
let expirationDate = new Date(
|
|
36
|
+
let expirationDate = new Date(timestamp() + 10 * 1000).toUTCString();
|
|
36
37
|
|
|
37
38
|
// Write a test cookie
|
|
38
39
|
coreStorage.setCookie(
|
|
@@ -69,14 +70,14 @@ export function findRootDomain(fullDomain = window.location.hostname) {
|
|
|
69
70
|
* Checks for referer and if exists merges into ortb2 global data
|
|
70
71
|
*/
|
|
71
72
|
function setReferer() {
|
|
72
|
-
if (getRefererInfo().referer)
|
|
73
|
+
if (getRefererInfo().referer) mergeDeep(ortb2, { site: { ref: getRefererInfo().referer } });
|
|
73
74
|
}
|
|
74
75
|
|
|
75
76
|
/**
|
|
76
77
|
* Checks for canonical url and if exists merges into ortb2 global data
|
|
77
78
|
*/
|
|
78
79
|
function setPage() {
|
|
79
|
-
if (getRefererInfo().canonicalUrl)
|
|
80
|
+
if (getRefererInfo().canonicalUrl) mergeDeep(ortb2, { site: { page: getRefererInfo().canonicalUrl } });
|
|
80
81
|
}
|
|
81
82
|
|
|
82
83
|
/**
|
|
@@ -94,8 +95,8 @@ function setDomain() {
|
|
|
94
95
|
let domain = parseDomain(getRefererInfo().canonicalUrl)
|
|
95
96
|
|
|
96
97
|
if (domain) {
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
mergeDeep(ortb2, { site: { domain: domain } });
|
|
99
|
+
mergeDeep(ortb2, { site: { publisher: { domain: findRootDomain(domain) } } });
|
|
99
100
|
};
|
|
100
101
|
}
|
|
101
102
|
|
|
@@ -114,7 +115,7 @@ function setDimensions() {
|
|
|
114
115
|
height = window.innerHeight || window.document.documentElement.clientHeight || window.document.body.clientHeight;
|
|
115
116
|
}
|
|
116
117
|
|
|
117
|
-
|
|
118
|
+
mergeDeep(ortb2, { device: { w: width, h: height } });
|
|
118
119
|
}
|
|
119
120
|
|
|
120
121
|
/**
|
|
@@ -129,7 +130,7 @@ function setKeywords() {
|
|
|
129
130
|
keywords = window.document.querySelector("meta[name='keywords']");
|
|
130
131
|
}
|
|
131
132
|
|
|
132
|
-
if (keywords && keywords.content)
|
|
133
|
+
if (keywords && keywords.content) mergeDeep(ortb2, { site: { keywords: keywords.content.replace(/\s/g, '') } });
|
|
133
134
|
}
|
|
134
135
|
|
|
135
136
|
/**
|
|
@@ -153,7 +154,7 @@ function runEnrichments() {
|
|
|
153
154
|
export function initSubmodule(fpdConf, data) {
|
|
154
155
|
resetOrtb2();
|
|
155
156
|
|
|
156
|
-
return (!fpdConf.skipEnrichments) ?
|
|
157
|
+
return (!fpdConf.skipEnrichments) ? mergeDeep(runEnrichments(), data) : data;
|
|
157
158
|
}
|
|
158
159
|
|
|
159
160
|
/** @type {firstPartyDataSubmodule} */
|