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,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { isArray, deepAccess, logWarn, parseUrl } from '../src/utils.js';
|
|
2
2
|
import { ajax } from '../src/ajax.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
|
-
import { BANNER } from '../src/mediaTypes.js';
|
|
4
|
+
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
5
5
|
import strIncludes from 'core-js-pure/features/string/includes.js';
|
|
6
6
|
|
|
7
7
|
const BIDDER_CODE = 'sspBC';
|
|
@@ -9,7 +9,7 @@ const BIDDER_URL = 'https://ssp.wp.pl/bidder/';
|
|
|
9
9
|
const SYNC_URL = 'https://ssp.wp.pl/bidder/usersync';
|
|
10
10
|
const NOTIFY_URL = 'https://ssp.wp.pl/bidder/notify';
|
|
11
11
|
const TMAX = 450;
|
|
12
|
-
const BIDDER_VERSION = '5.
|
|
12
|
+
const BIDDER_VERSION = '5.2';
|
|
13
13
|
const W = window;
|
|
14
14
|
const { navigator } = W;
|
|
15
15
|
const oneCodeDetection = {};
|
|
@@ -22,7 +22,7 @@ var consentApiVersion;
|
|
|
22
22
|
*/
|
|
23
23
|
const getNotificationPayload = bidData => {
|
|
24
24
|
if (bidData) {
|
|
25
|
-
const bids =
|
|
25
|
+
const bids = isArray(bidData) ? bidData : [bidData];
|
|
26
26
|
if (bids.length > 0) {
|
|
27
27
|
const result = {
|
|
28
28
|
requestId: undefined,
|
|
@@ -31,7 +31,7 @@ const getNotificationPayload = bidData => {
|
|
|
31
31
|
slotId: [],
|
|
32
32
|
}
|
|
33
33
|
bids.forEach(bid => {
|
|
34
|
-
let params =
|
|
34
|
+
let params = isArray(bid.params) ? bid.params[0] : bid.params;
|
|
35
35
|
params = params || {};
|
|
36
36
|
|
|
37
37
|
// check for stored detection
|
|
@@ -122,7 +122,7 @@ const applyGdpr = (bidderRequest, ortbRequest) => {
|
|
|
122
122
|
/**
|
|
123
123
|
* Get value for first occurence of key within the collection
|
|
124
124
|
*/
|
|
125
|
-
const setOnAny = (collection, key) => collection.reduce((prev, next) => prev ||
|
|
125
|
+
const setOnAny = (collection, key) => collection.reduce((prev, next) => prev || deepAccess(next, key), false);
|
|
126
126
|
|
|
127
127
|
/**
|
|
128
128
|
* Send payload to notification endpoint
|
|
@@ -141,7 +141,7 @@ const sendNotification = payload => {
|
|
|
141
141
|
*/
|
|
142
142
|
const mapBanner = slot => {
|
|
143
143
|
if (slot.mediaType === 'banner' ||
|
|
144
|
-
|
|
144
|
+
deepAccess(slot, 'mediaTypes.banner') ||
|
|
145
145
|
(!slot.mediaType && !slot.mediaTypes)) {
|
|
146
146
|
const format = slot.sizes.map(size => ({
|
|
147
147
|
w: size[0],
|
|
@@ -155,6 +155,108 @@ const mapBanner = slot => {
|
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
+
/**
|
|
159
|
+
* @param {string} paramName Native parameter name
|
|
160
|
+
* @param {object} paramValue Native parameter value
|
|
161
|
+
* @returns {object} native asset object that conforms to ortb native ads spec
|
|
162
|
+
*/
|
|
163
|
+
const mapAsset = (paramName, paramValue) => {
|
|
164
|
+
let asset;
|
|
165
|
+
switch (paramName) {
|
|
166
|
+
case 'title':
|
|
167
|
+
asset = {
|
|
168
|
+
id: 0,
|
|
169
|
+
required: paramValue.required,
|
|
170
|
+
title: { len: paramValue.len }
|
|
171
|
+
}
|
|
172
|
+
break;
|
|
173
|
+
case 'cta':
|
|
174
|
+
asset = {
|
|
175
|
+
id: 1,
|
|
176
|
+
required: paramValue.required,
|
|
177
|
+
data: { type: 12 }
|
|
178
|
+
}
|
|
179
|
+
break;
|
|
180
|
+
case 'icon':
|
|
181
|
+
asset = {
|
|
182
|
+
id: 2,
|
|
183
|
+
required: paramValue.required,
|
|
184
|
+
img: { type: 1, w: paramValue.sizes[0], h: paramValue.sizes[1] }
|
|
185
|
+
}
|
|
186
|
+
break;
|
|
187
|
+
case 'image':
|
|
188
|
+
asset = {
|
|
189
|
+
id: 3,
|
|
190
|
+
required: paramValue.required,
|
|
191
|
+
img: { type: 3, w: paramValue.sizes[0], h: paramValue.sizes[1] }
|
|
192
|
+
}
|
|
193
|
+
break;
|
|
194
|
+
case 'body':
|
|
195
|
+
asset = {
|
|
196
|
+
id: 4,
|
|
197
|
+
required: paramValue.required,
|
|
198
|
+
data: { type: 2 }
|
|
199
|
+
}
|
|
200
|
+
break;
|
|
201
|
+
case 'sponsoredBy':
|
|
202
|
+
asset = {
|
|
203
|
+
id: 5,
|
|
204
|
+
required: paramValue.required,
|
|
205
|
+
data: { type: 1 }
|
|
206
|
+
}
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
return asset;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* @param {object} slot Ad Unit Params by Prebid
|
|
214
|
+
* @returns {object} native object that conforms to ortb native ads spec
|
|
215
|
+
*/
|
|
216
|
+
const mapNative = slot => {
|
|
217
|
+
const native = deepAccess(slot, 'mediaTypes.native');
|
|
218
|
+
let assets;
|
|
219
|
+
if (native) {
|
|
220
|
+
const nativeParams = Object.keys(native);
|
|
221
|
+
assets = [];
|
|
222
|
+
nativeParams.forEach(par => {
|
|
223
|
+
const newAsset = mapAsset(par, native[par]);
|
|
224
|
+
if (newAsset) { assets.push(newAsset) };
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
return assets ? { request: JSON.stringify({ native: { assets } }) } : undefined;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
var mapVideo = slot => {
|
|
231
|
+
var video = deepAccess(slot, 'mediaTypes.video');
|
|
232
|
+
var videoParamsUsed = ['api', 'context', 'linearity', 'maxduration', 'mimes', 'protocols'];
|
|
233
|
+
var videoAssets;
|
|
234
|
+
|
|
235
|
+
if (video) {
|
|
236
|
+
var videoParams = Object.keys(video);
|
|
237
|
+
var playerSize = video.playerSize;
|
|
238
|
+
videoAssets = {}; // player width / height
|
|
239
|
+
|
|
240
|
+
if (playerSize) {
|
|
241
|
+
var maxSize = playerSize.reduce(function (prev, next) {
|
|
242
|
+
return next[0] >= prev[0] && next[1] >= prev[1] ? next : prev;
|
|
243
|
+
}, [1, 1]);
|
|
244
|
+
videoAssets.w = maxSize[0];
|
|
245
|
+
videoAssets.h = maxSize[1];
|
|
246
|
+
} // remaining supported params
|
|
247
|
+
|
|
248
|
+
videoParams.forEach(function (par) {
|
|
249
|
+
if (videoParamsUsed.indexOf(par) >= 0) {
|
|
250
|
+
videoAssets[par] = video[par];
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
;
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return videoAssets;
|
|
258
|
+
};
|
|
259
|
+
|
|
158
260
|
const mapImpression = slot => {
|
|
159
261
|
const { adUnitCode, bidId, params = {}, ortb2Imp = {} } = slot;
|
|
160
262
|
const { id, siteId } = params;
|
|
@@ -165,32 +267,100 @@ const mapImpression = slot => {
|
|
|
165
267
|
send this info as ext.pbsize
|
|
166
268
|
*/
|
|
167
269
|
const slotSize = slot.sizes.length ? slot.sizes.reduce((prev, next) => prev[0] * prev[1] <= next[0] * next[1] ? next : prev).join('x') : '1x1';
|
|
168
|
-
adSizesCalled[slotSize] = adSizesCalled[slotSize] ? adSizesCalled[slotSize]
|
|
270
|
+
adSizesCalled[slotSize] = adSizesCalled[slotSize] ? adSizesCalled[slotSize] += 1 : 1;
|
|
169
271
|
ext.data = Object.assign({ pbsize: `${slotSize}_${adSizesCalled[slotSize]}` }, ext.data);
|
|
170
272
|
|
|
171
273
|
const imp = {
|
|
172
274
|
id: id && siteId ? id : 'bidid-' + bidId,
|
|
173
275
|
banner: mapBanner(slot),
|
|
174
|
-
|
|
276
|
+
native: mapNative(slot),
|
|
277
|
+
video: mapVideo(slot),
|
|
175
278
|
tagid: adUnitCode,
|
|
176
279
|
ext,
|
|
177
280
|
};
|
|
178
281
|
|
|
179
282
|
// Check floorprices for this imp
|
|
180
283
|
if (typeof slot.getFloor === 'function') {
|
|
181
|
-
|
|
182
|
-
|
|
284
|
+
var bannerFloor = 0;
|
|
285
|
+
var nativeFloor = 0;
|
|
286
|
+
var videoFloor = 0; // sspBC adapter accepts only floor per imp - check for maximum value for requested ad types and sizes
|
|
287
|
+
|
|
183
288
|
if (slot.sizes.length) {
|
|
184
|
-
bannerFloor = slot.sizes.reduce((prev, next)
|
|
185
|
-
|
|
289
|
+
bannerFloor = slot.sizes.reduce(function (prev, next) {
|
|
290
|
+
var currentFloor = slot.getFloor({
|
|
291
|
+
mediaType: 'banner',
|
|
292
|
+
size: next
|
|
293
|
+
}).floor;
|
|
186
294
|
return prev > currentFloor ? prev : currentFloor;
|
|
187
295
|
}, 0);
|
|
188
296
|
}
|
|
189
|
-
|
|
297
|
+
|
|
298
|
+
nativeFloor = slot.getFloor({
|
|
299
|
+
mediaType: 'native'
|
|
300
|
+
});
|
|
301
|
+
videoFloor = slot.getFloor({
|
|
302
|
+
mediaType: 'video'
|
|
303
|
+
});
|
|
304
|
+
imp.bidfloor = Math.max(bannerFloor, nativeFloor, videoFloor);
|
|
190
305
|
}
|
|
191
306
|
return imp;
|
|
192
307
|
}
|
|
193
308
|
|
|
309
|
+
const isVideoAd = bid => {
|
|
310
|
+
const xmlTester = new RegExp(/^<\?xml/);
|
|
311
|
+
return bid.adm && bid.adm.match(xmlTester);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
const isNativeAd = bid => {
|
|
315
|
+
const xmlTester = new RegExp(/^{['"]native['"]/);
|
|
316
|
+
|
|
317
|
+
return bid.adm && bid.adm.match(xmlTester);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
const parseNative = nativeData => {
|
|
321
|
+
const result = {};
|
|
322
|
+
nativeData.assets.forEach(asset => {
|
|
323
|
+
const id = parseInt(asset.id);
|
|
324
|
+
switch (id) {
|
|
325
|
+
case 0:
|
|
326
|
+
result.title = asset.title.text;
|
|
327
|
+
break;
|
|
328
|
+
case 2:
|
|
329
|
+
result.icon = {
|
|
330
|
+
url: asset.img.url,
|
|
331
|
+
width: asset.img.w,
|
|
332
|
+
height: asset.img.h,
|
|
333
|
+
};
|
|
334
|
+
break;
|
|
335
|
+
case 3:
|
|
336
|
+
result.image = {
|
|
337
|
+
url: asset.img.url,
|
|
338
|
+
width: asset.img.w,
|
|
339
|
+
height: asset.img.h,
|
|
340
|
+
};
|
|
341
|
+
break;
|
|
342
|
+
case 4:
|
|
343
|
+
result.body = asset.data.value;
|
|
344
|
+
break;
|
|
345
|
+
case 5:
|
|
346
|
+
result.sponsoredBy = asset.data.value;
|
|
347
|
+
break;
|
|
348
|
+
|
|
349
|
+
default:
|
|
350
|
+
logWarn('Unrecognized native asset', asset);
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
result.clickUrl = nativeData.link.url;
|
|
354
|
+
result.impressionTrackers = nativeData.imptrackers;
|
|
355
|
+
|
|
356
|
+
if (isArray(nativeData.jstracker)) {
|
|
357
|
+
result.javascriptTrackers = nativeData.jstracker;
|
|
358
|
+
} else if (nativeData.jstracker) {
|
|
359
|
+
result.javascriptTrackers = [nativeData.jstracker];
|
|
360
|
+
}
|
|
361
|
+
return result;
|
|
362
|
+
}
|
|
363
|
+
|
|
194
364
|
const renderCreative = (site, auctionId, bid, seat, request) => {
|
|
195
365
|
let gam;
|
|
196
366
|
|
|
@@ -225,7 +395,7 @@ const renderCreative = (site, auctionId, bid, seat, request) => {
|
|
|
225
395
|
gam.targeting = {};
|
|
226
396
|
}
|
|
227
397
|
} catch (err) {
|
|
228
|
-
|
|
398
|
+
logWarn('Could not parse adm data', bid.adm);
|
|
229
399
|
}
|
|
230
400
|
}
|
|
231
401
|
|
|
@@ -243,6 +413,7 @@ const renderCreative = (site, auctionId, bid, seat, request) => {
|
|
|
243
413
|
<script>
|
|
244
414
|
window.rekid = ${site.id};
|
|
245
415
|
window.slot = ${parseInt(site.slot, 10)};
|
|
416
|
+
window.responseTimestamp = ${Date.now()};
|
|
246
417
|
window.wp_sn = "${site.sn}";
|
|
247
418
|
window.mcad = JSON.parse(decodeURI(atob("${mcbase}")));
|
|
248
419
|
window.gdpr = ${JSON.stringify(request.gdprConsent)};
|
|
@@ -268,7 +439,7 @@ const renderCreative = (site, auctionId, bid, seat, request) => {
|
|
|
268
439
|
const spec = {
|
|
269
440
|
code: BIDDER_CODE,
|
|
270
441
|
aliases: [],
|
|
271
|
-
supportedMediaTypes: [BANNER],
|
|
442
|
+
supportedMediaTypes: [BANNER, NATIVE, VIDEO],
|
|
272
443
|
isBidRequestValid(bid) {
|
|
273
444
|
// as per OneCode integration, bids without params are valid
|
|
274
445
|
return true;
|
|
@@ -281,7 +452,7 @@ const spec = {
|
|
|
281
452
|
const siteId = setOnAny(validBidRequests, 'params.siteId');
|
|
282
453
|
const publisherId = setOnAny(validBidRequests, 'params.publisherId');
|
|
283
454
|
const page = setOnAny(validBidRequests, 'params.page') || bidderRequest.refererInfo.referer;
|
|
284
|
-
const domain = setOnAny(validBidRequests, 'params.domain') ||
|
|
455
|
+
const domain = setOnAny(validBidRequests, 'params.domain') || parseUrl(page).hostname;
|
|
285
456
|
const tmax = setOnAny(validBidRequests, 'params.tmax') ? parseInt(setOnAny(validBidRequests, 'params.tmax'), 10) : TMAX;
|
|
286
457
|
const pbver = '$prebid.version$';
|
|
287
458
|
const testMode = setOnAny(validBidRequests, 'params.test') ? 1 : undefined;
|
|
@@ -377,20 +548,44 @@ const spec = {
|
|
|
377
548
|
width: w,
|
|
378
549
|
height: h,
|
|
379
550
|
bidderCode: BIDDER_CODE,
|
|
380
|
-
mediaType: 'banner',
|
|
381
551
|
meta: {
|
|
382
552
|
advertiserDomains: adomain,
|
|
383
553
|
networkName: seat,
|
|
384
554
|
},
|
|
385
555
|
netRevenue: true,
|
|
386
|
-
ad: renderCreative(site, response.id, serverBid, seat, bidderRequest),
|
|
387
556
|
};
|
|
388
557
|
|
|
558
|
+
// mediaType and ad data for instream / native / banner
|
|
559
|
+
if (isVideoAd(serverBid)) {
|
|
560
|
+
// video
|
|
561
|
+
bid.adType = 'instream';
|
|
562
|
+
bid.mediaType = 'video';
|
|
563
|
+
bid.vastXml = serverBid.adm;
|
|
564
|
+
bid.vastContent = serverBid.adm;
|
|
565
|
+
} else if (isNativeAd(serverBid)) {
|
|
566
|
+
// native
|
|
567
|
+
bid.mediaType = 'native';
|
|
568
|
+
// check native object
|
|
569
|
+
try {
|
|
570
|
+
const nativeData = JSON.parse(serverBid.adm).native;
|
|
571
|
+
bid.native = parseNative(nativeData);
|
|
572
|
+
bid.width = 1;
|
|
573
|
+
bid.height = 1;
|
|
574
|
+
} catch (err) {
|
|
575
|
+
logWarn('Could not parse native data', serverBid.adm);
|
|
576
|
+
bid.cpm = 0;
|
|
577
|
+
}
|
|
578
|
+
} else {
|
|
579
|
+
// banner ad (default)
|
|
580
|
+
bid.mediaType = 'banner';
|
|
581
|
+
bid.ad = renderCreative(site, response.id, serverBid, seat, bidderRequest);
|
|
582
|
+
}
|
|
583
|
+
|
|
389
584
|
if (bid.cpm > 0) {
|
|
390
585
|
bids.push(bid);
|
|
391
586
|
}
|
|
392
587
|
} else {
|
|
393
|
-
|
|
588
|
+
logWarn('Discarding response - no matching request / site id', serverBid.impid);
|
|
394
589
|
}
|
|
395
590
|
});
|
|
396
591
|
});
|
|
@@ -405,7 +600,7 @@ const spec = {
|
|
|
405
600
|
url: `${SYNC_URL}?tcf=${consentApiVersion}`,
|
|
406
601
|
}];
|
|
407
602
|
} else {
|
|
408
|
-
|
|
603
|
+
logWarn('sspBC adapter requires iframe based user sync.');
|
|
409
604
|
}
|
|
410
605
|
},
|
|
411
606
|
|
|
@@ -7,7 +7,7 @@ Maintainer: wojciech.bialy@grupawp.pl
|
|
|
7
7
|
# Description
|
|
8
8
|
|
|
9
9
|
Module that connects to Wirtualna Polska Media header bidding endpoint to fetch bids.
|
|
10
|
-
|
|
10
|
+
Supports Banner, Video (instream) and Native formats
|
|
11
11
|
Supported currencies: USD, EUR, PLN
|
|
12
12
|
|
|
13
13
|
Required parameters:
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { logInfo, logError, parseUrl, _each } from '../src/utils.js';
|
|
1
2
|
import adapter from '../src/AnalyticsAdapter.js';
|
|
2
3
|
import CONSTANTS from '../src/constants.json';
|
|
3
4
|
import adapterManager from '../src/adapterManager.js';
|
|
4
5
|
import { getRefererInfo } from '../src/refererDetection.js';
|
|
5
|
-
import * as utils from '../src/utils.js';
|
|
6
6
|
import { ajax } from '../src/ajax.js';
|
|
7
7
|
import { getStorageManager } from '../src/storageManager.js';
|
|
8
8
|
|
|
@@ -94,14 +94,14 @@ analyticsAdapter.context = {};
|
|
|
94
94
|
analyticsAdapter.originEnableAnalytics = analyticsAdapter.enableAnalytics;
|
|
95
95
|
|
|
96
96
|
analyticsAdapter.enableAnalytics = (config) => {
|
|
97
|
-
|
|
97
|
+
logInfo('Enabling STAQ Adapter');
|
|
98
98
|
staqAdapterRefWin = getRefererInfo(window);
|
|
99
99
|
if (!config.options.connId) {
|
|
100
|
-
|
|
100
|
+
logError('ConnId is not defined. STAQ Analytics won\'t work');
|
|
101
101
|
return;
|
|
102
102
|
}
|
|
103
103
|
if (!config.options.url) {
|
|
104
|
-
|
|
104
|
+
logError('URL is not defined. STAQ Analytics won\'t work');
|
|
105
105
|
return;
|
|
106
106
|
}
|
|
107
107
|
analyticsAdapter.context = {
|
|
@@ -133,7 +133,7 @@ function sendAll() {
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
analyticsAdapter.ajaxCall = function ajaxCall(data) {
|
|
136
|
-
|
|
136
|
+
logInfo('SENDING DATA: ' + data);
|
|
137
137
|
ajax(`https://${analyticsAdapter.context.url}/prebid/${analyticsAdapter.context.connectionId}`, () => {}, data, { contentType: 'text/plain' });
|
|
138
138
|
};
|
|
139
139
|
|
|
@@ -248,7 +248,7 @@ export function getUmtSource(pageUrl, referrer) {
|
|
|
248
248
|
if (se) {
|
|
249
249
|
return asUtm(se, ORGANIC, ORGANIC);
|
|
250
250
|
}
|
|
251
|
-
let parsedUrl =
|
|
251
|
+
let parsedUrl = parseUrl(pageUrl);
|
|
252
252
|
let [refHost, refPath] = getReferrer(referrer);
|
|
253
253
|
if (refHost && refHost !== parsedUrl.hostname) {
|
|
254
254
|
return asUtm(refHost, REFERRAL, REFERRAL, '', refPath);
|
|
@@ -275,17 +275,17 @@ export function getUmtSource(pageUrl, referrer) {
|
|
|
275
275
|
}
|
|
276
276
|
|
|
277
277
|
function getReferrer(referrer) {
|
|
278
|
-
let ref =
|
|
278
|
+
let ref = parseUrl(referrer);
|
|
279
279
|
return [ref.hostname, ref.pathname];
|
|
280
280
|
}
|
|
281
281
|
|
|
282
282
|
function getUTM(pageUrl) {
|
|
283
|
-
let urlParameters =
|
|
283
|
+
let urlParameters = parseUrl(pageUrl).search;
|
|
284
284
|
if (!urlParameters['utm_campaign'] || !urlParameters['utm_source']) {
|
|
285
285
|
return;
|
|
286
286
|
}
|
|
287
287
|
let utmArgs = [];
|
|
288
|
-
|
|
288
|
+
_each(UTM_TAGS, (utmTagName) => {
|
|
289
289
|
let utmValue = urlParameters[utmTagName] || '';
|
|
290
290
|
utmArgs.push(utmValue);
|
|
291
291
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { getWindowSelf, getWindowTop, buildUrl, logError, isStr, isEmpty, deepAccess } 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
|
|
|
5
5
|
const GVL_ID = 136;
|
|
6
6
|
const BIDDER_CODE = 'stroeerCore';
|
|
@@ -10,22 +10,22 @@ const DEFAULT_PORT = '';
|
|
|
10
10
|
const FIVE_MINUTES_IN_SECONDS = 300;
|
|
11
11
|
const USER_SYNC_IFRAME_URL = 'https://js.adscale.de/pbsync.html';
|
|
12
12
|
|
|
13
|
-
const isSecureWindow = () =>
|
|
14
|
-
const isMainPageAccessible = () => getMostAccessibleTopWindow() ===
|
|
13
|
+
const isSecureWindow = () => getWindowSelf().location.protocol === 'https:';
|
|
14
|
+
const isMainPageAccessible = () => getMostAccessibleTopWindow() === getWindowTop();
|
|
15
15
|
|
|
16
16
|
function getTopWindowReferrer() {
|
|
17
17
|
try {
|
|
18
|
-
return
|
|
18
|
+
return getWindowTop().document.referrer;
|
|
19
19
|
} catch (e) {
|
|
20
|
-
return
|
|
20
|
+
return getWindowSelf().referrer;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
function getMostAccessibleTopWindow() {
|
|
25
|
-
let res =
|
|
25
|
+
let res = getWindowSelf();
|
|
26
26
|
|
|
27
27
|
try {
|
|
28
|
-
while (
|
|
28
|
+
while (getWindowTop().top !== res && res.parent.location.href.length) {
|
|
29
29
|
res = res.parent;
|
|
30
30
|
}
|
|
31
31
|
} catch (ignore) {
|
|
@@ -36,7 +36,7 @@ function getMostAccessibleTopWindow() {
|
|
|
36
36
|
|
|
37
37
|
function elementInView(elementId) {
|
|
38
38
|
const resolveElement = (elId) => {
|
|
39
|
-
const win =
|
|
39
|
+
const win = getWindowSelf();
|
|
40
40
|
|
|
41
41
|
return win.document.getElementById(elId);
|
|
42
42
|
};
|
|
@@ -53,19 +53,19 @@ function elementInView(elementId) {
|
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
try {
|
|
56
|
-
return visibleInWindow(resolveElement(elementId),
|
|
56
|
+
return visibleInWindow(resolveElement(elementId), getWindowSelf());
|
|
57
57
|
} catch (e) {
|
|
58
58
|
// old browser, element not found, cross-origin etc.
|
|
59
59
|
}
|
|
60
60
|
return undefined;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
function
|
|
63
|
+
function _buildUrl({host: hostname = DEFAULT_HOST, port = DEFAULT_PORT, securePort, path: pathname = DEFAULT_PATH}) {
|
|
64
64
|
if (securePort) {
|
|
65
65
|
port = securePort;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
return
|
|
68
|
+
return buildUrl({protocol: 'https', hostname, port, pathname});
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
function getGdprParams(gdprConsent) {
|
|
@@ -92,7 +92,7 @@ export const spec = {
|
|
|
92
92
|
if (checkFn(bidRequest)) {
|
|
93
93
|
return true;
|
|
94
94
|
} else {
|
|
95
|
-
|
|
95
|
+
logError(`invalid bid: ${errorMsgFn(bidRequest)}`, 'ERROR');
|
|
96
96
|
return false;
|
|
97
97
|
}
|
|
98
98
|
}
|
|
@@ -108,7 +108,7 @@ export const spec = {
|
|
|
108
108
|
bidReq => `bid request ${bidReq.bidId} is not a banner`));
|
|
109
109
|
validators.push(createValidator((bidReq) => typeof bidReq.params === 'object',
|
|
110
110
|
bidReq => `bid request ${bidReq.bidId} does not have custom params`));
|
|
111
|
-
validators.push(createValidator((bidReq) =>
|
|
111
|
+
validators.push(createValidator((bidReq) => isStr(bidReq.params.sid),
|
|
112
112
|
bidReq => `bid request ${bidReq.bidId} does not have a sid string field`));
|
|
113
113
|
|
|
114
114
|
return function (bidRequest) {
|
|
@@ -130,7 +130,7 @@ export const spec = {
|
|
|
130
130
|
|
|
131
131
|
const userIds = anyBid.userId;
|
|
132
132
|
|
|
133
|
-
if (!
|
|
133
|
+
if (!isEmpty(userIds)) {
|
|
134
134
|
payload.user = {
|
|
135
135
|
euids: userIds
|
|
136
136
|
};
|
|
@@ -145,7 +145,7 @@ export const spec = {
|
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
function bidSizes(bid) {
|
|
148
|
-
return
|
|
148
|
+
return deepAccess(bid, 'mediaTypes.banner.sizes') || bid.sizes /* for prebid < 3 */ || [];
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
validBidRequests.forEach(bid => {
|
|
@@ -155,7 +155,7 @@ export const spec = {
|
|
|
155
155
|
});
|
|
156
156
|
|
|
157
157
|
return {
|
|
158
|
-
method: 'POST', url:
|
|
158
|
+
method: 'POST', url: _buildUrl(anyBid.params), data: payload
|
|
159
159
|
}
|
|
160
160
|
},
|
|
161
161
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { logInfo, generateUUID, formatQS, triggerPixel, deepAccess } 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
|
|
|
5
5
|
const BIDDER_CODE = 'sublime';
|
|
6
6
|
const BIDDER_GVLID = 114;
|
|
@@ -43,7 +43,7 @@ function isValidNotifyId(value) {
|
|
|
43
43
|
* @param {Object=} obj
|
|
44
44
|
*/
|
|
45
45
|
export function log(msg, obj) {
|
|
46
|
-
|
|
46
|
+
logInfo('SublimeBidAdapter - ' + msg, obj);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
// Default state
|
|
@@ -73,7 +73,7 @@ function getNotifyId(params) {
|
|
|
73
73
|
|
|
74
74
|
let notifyId = params.notifyId || sublime.notifyId;
|
|
75
75
|
if (!notifyId) {
|
|
76
|
-
notifyId =
|
|
76
|
+
notifyId = generateUUID();
|
|
77
77
|
log('generating a notifyId', notifyId);
|
|
78
78
|
}
|
|
79
79
|
if (!sublime.notifyId) {
|
|
@@ -110,8 +110,8 @@ export function sendEvent(eventName, sspName) {
|
|
|
110
110
|
|
|
111
111
|
log('Sending pixel for event: ' + eventName, eventObject);
|
|
112
112
|
|
|
113
|
-
const queryString =
|
|
114
|
-
|
|
113
|
+
const queryString = formatQS(eventObject);
|
|
114
|
+
triggerPixel('https://' + SUBLIME_ANTENNA + '/?' + queryString);
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
/**
|
|
@@ -280,7 +280,7 @@ function onBidWon(bid) {
|
|
|
280
280
|
function onTimeout(timeoutData) {
|
|
281
281
|
log('Timeout from adapter', timeoutData);
|
|
282
282
|
|
|
283
|
-
const timeout =
|
|
283
|
+
const timeout = deepAccess(timeoutData, '0.timeout');
|
|
284
284
|
if (timeout) {
|
|
285
285
|
// Set timeout to the one we got from the bid
|
|
286
286
|
setState({ timeout });
|