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, isArray, logWarn, triggerPixel, buildUrl, logInfo, getValue, getBidIdParameter } from '../src/utils.js';
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import { config } from '../src/config.js';
|
|
4
4
|
const BIDDER_CODE = 'beop';
|
|
@@ -36,7 +36,7 @@ export const spec = {
|
|
|
36
36
|
*/
|
|
37
37
|
buildRequests: function(validBidRequests, bidderRequest) {
|
|
38
38
|
const slots = validBidRequests.map(beOpRequestSlotsMaker);
|
|
39
|
-
let pageUrl =
|
|
39
|
+
let pageUrl = deepAccess(bidderRequest, 'refererInfo.canonicalUrl') || config.getConfig('pageUrl') || deepAccess(window, 'location.href');
|
|
40
40
|
let fpd = config.getLegacyFpd(config.getConfig('ortb2'));
|
|
41
41
|
let gdpr = bidderRequest.gdprConsent;
|
|
42
42
|
let firstSlot = slots[0];
|
|
@@ -50,7 +50,7 @@ export const spec = {
|
|
|
50
50
|
kwds: (fpd && fpd.site && fpd.site.keywords) || [],
|
|
51
51
|
dbg: false,
|
|
52
52
|
slts: slots,
|
|
53
|
-
is_amp:
|
|
53
|
+
is_amp: deepAccess(bidderRequest, 'referrerInfo.isAmp'),
|
|
54
54
|
tc_string: (gdpr && gdpr.gdprApplies) ? gdpr.consentString : null,
|
|
55
55
|
};
|
|
56
56
|
const payloadString = JSON.stringify(payloadObject);
|
|
@@ -61,7 +61,7 @@ export const spec = {
|
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
63
|
interpretResponse: function(serverResponse, request) {
|
|
64
|
-
if (serverResponse && serverResponse.body &&
|
|
64
|
+
if (serverResponse && serverResponse.body && isArray(serverResponse.body.bids) && serverResponse.body.bids.length > 0) {
|
|
65
65
|
return serverResponse.body.bids;
|
|
66
66
|
}
|
|
67
67
|
return [];
|
|
@@ -73,8 +73,8 @@ export const spec = {
|
|
|
73
73
|
|
|
74
74
|
let trackingParams = buildTrackingParams(timeoutData, 'timeout', timeoutData.timeout);
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
logWarn(BIDDER_CODE + ': timed out request');
|
|
77
|
+
triggerPixel(buildUrl({
|
|
78
78
|
protocol: 'https',
|
|
79
79
|
hostname: 't.beop.io',
|
|
80
80
|
pathname: '/bid',
|
|
@@ -87,8 +87,8 @@ export const spec = {
|
|
|
87
87
|
}
|
|
88
88
|
let trackingParams = buildTrackingParams(bid, 'won', bid.cpm);
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
logInfo(BIDDER_CODE + ': won request');
|
|
91
|
+
triggerPixel(buildUrl({
|
|
92
92
|
protocol: 'https',
|
|
93
93
|
hostname: 't.beop.io',
|
|
94
94
|
pathname: '/bid',
|
|
@@ -113,8 +113,8 @@ function buildTrackingParams(data, info, value) {
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
function beOpRequestSlotsMaker(bid) {
|
|
116
|
-
const bannerSizes =
|
|
117
|
-
const publisherCurrency = config.getConfig('currency.adServerCurrency') ||
|
|
116
|
+
const bannerSizes = deepAccess(bid, 'mediaTypes.banner.sizes');
|
|
117
|
+
const publisherCurrency = config.getConfig('currency.adServerCurrency') || getValue(bid.params, 'currency') || 'EUR';
|
|
118
118
|
let floor;
|
|
119
119
|
if (typeof bid.getFloor === 'function') {
|
|
120
120
|
const floorInfo = bid.getFloor({currency: publisherCurrency, mediaType: 'banner', size: [1, 1]});
|
|
@@ -123,19 +123,19 @@ function beOpRequestSlotsMaker(bid) {
|
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
return {
|
|
126
|
-
sizes:
|
|
126
|
+
sizes: isArray(bannerSizes) ? bannerSizes : bid.sizes,
|
|
127
127
|
flr: floor,
|
|
128
|
-
pid:
|
|
129
|
-
nid:
|
|
130
|
-
nptnid:
|
|
131
|
-
bid:
|
|
132
|
-
brid:
|
|
133
|
-
name:
|
|
134
|
-
aid:
|
|
135
|
-
tid:
|
|
136
|
-
brc:
|
|
137
|
-
bdrc:
|
|
138
|
-
bwc:
|
|
128
|
+
pid: getValue(bid.params, 'accountId'),
|
|
129
|
+
nid: getValue(bid.params, 'networkId'),
|
|
130
|
+
nptnid: getValue(bid.params, 'networkPartnerId'),
|
|
131
|
+
bid: getBidIdParameter('bidId', bid),
|
|
132
|
+
brid: getBidIdParameter('bidderRequestId', bid),
|
|
133
|
+
name: getBidIdParameter('adUnitCode', bid),
|
|
134
|
+
aid: getBidIdParameter('auctionId', bid),
|
|
135
|
+
tid: getBidIdParameter('transactionId', bid),
|
|
136
|
+
brc: getBidIdParameter('bidRequestsCount', bid),
|
|
137
|
+
bdrc: getBidIdParameter('bidderRequestCount', bid),
|
|
138
|
+
bwc: getBidIdParameter('bidderWinsCount', bid),
|
|
139
139
|
}
|
|
140
140
|
}
|
|
141
141
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { logMessage } from '../src/utils.js';
|
|
1
2
|
import { config } from '../src/config.js';
|
|
2
3
|
import * as events from '../src/events.js';
|
|
3
4
|
import { EVENTS } from '../src/constants.json';
|
|
4
|
-
import * as utils from '../src/utils.js';
|
|
5
5
|
|
|
6
6
|
const MODULE_NAME = 'bidViewabilityIO';
|
|
7
7
|
const CONFIG_ENABLED = 'enabled';
|
|
@@ -23,8 +23,8 @@ export let isSupportedMediaType = (bid) => {
|
|
|
23
23
|
return supportedMediaTypes.indexOf(bid.mediaType) > -1;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
let
|
|
27
|
-
return
|
|
26
|
+
let _logMessage = (message) => {
|
|
27
|
+
return logMessage(`${MODULE_NAME}: ${message}`);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
// returns options for the iO that detects if the ad is viewable
|
|
@@ -43,7 +43,7 @@ export let markViewed = (bid, entry, observer) => {
|
|
|
43
43
|
return () => {
|
|
44
44
|
observer.unobserve(entry.target);
|
|
45
45
|
events.emit(EVENTS.BID_VIEWABLE, bid);
|
|
46
|
-
|
|
46
|
+
_logMessage(`id: ${entry.target.getAttribute('id')} code: ${bid.adUnitCode} was viewed`);
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
|
|
@@ -59,13 +59,13 @@ export let viewCallbackFactory = (bid) => {
|
|
|
59
59
|
return (entries, observer) => {
|
|
60
60
|
entries.forEach(entry => {
|
|
61
61
|
if (entry.isIntersecting) {
|
|
62
|
-
|
|
62
|
+
_logMessage(`viewable timer starting for id: ${entry.target.getAttribute('id')} code: ${bid.adUnitCode}`);
|
|
63
63
|
entry.target.view_tracker = setTimeout(markViewed(bid, entry, observer), IAB_VIEWABLE_DISPLAY_TIME);
|
|
64
64
|
} else {
|
|
65
|
-
|
|
65
|
+
_logMessage(`id: ${entry.target.getAttribute('id')} code: ${bid.adUnitCode} is out of view`);
|
|
66
66
|
if (entry.target.view_tracker) {
|
|
67
67
|
clearTimeout(entry.target.view_tracker);
|
|
68
|
-
|
|
68
|
+
_logMessage(`viewable timer stopped for id: ${entry.target.getAttribute('id')} code: ${bid.adUnitCode}`);
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { _each, isArray, getBidIdParameter, deepClone, getUniqueIdentifierStr } from '../src/utils.js';
|
|
2
2
|
// import {config} from 'src/config.js';
|
|
3
3
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
4
4
|
|
|
@@ -69,12 +69,12 @@ export const spec = {
|
|
|
69
69
|
|
|
70
70
|
let bidglass = window['bidglass'];
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
bid.sizes = ((
|
|
74
|
-
bid.sizes = bid.sizes.filter(size =>
|
|
72
|
+
_each(validBidRequests, function(bid) {
|
|
73
|
+
bid.sizes = ((isArray(bid.sizes) && isArray(bid.sizes[0])) ? bid.sizes : [bid.sizes]);
|
|
74
|
+
bid.sizes = bid.sizes.filter(size => isArray(size));
|
|
75
75
|
|
|
76
|
-
var adUnitId =
|
|
77
|
-
var options =
|
|
76
|
+
var adUnitId = getBidIdParameter('adUnitId', bid.params);
|
|
77
|
+
var options = deepClone(bid.params);
|
|
78
78
|
|
|
79
79
|
delete options.adUnitId;
|
|
80
80
|
|
|
@@ -96,7 +96,7 @@ export const spec = {
|
|
|
96
96
|
|
|
97
97
|
// Stuff to send: page URL
|
|
98
98
|
const bidReq = {
|
|
99
|
-
reqId:
|
|
99
|
+
reqId: getUniqueIdentifierStr(),
|
|
100
100
|
imps: imps,
|
|
101
101
|
ref: getReferer(),
|
|
102
102
|
ori: getOrigins()
|
|
@@ -125,7 +125,7 @@ export const spec = {
|
|
|
125
125
|
interpretResponse: function(serverResponse) {
|
|
126
126
|
const bidResponses = [];
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
_each(serverResponse.body.bidResponses, function(serverBid) {
|
|
129
129
|
const bidResponse = {
|
|
130
130
|
requestId: serverBid.requestId,
|
|
131
131
|
cpm: parseFloat(serverBid.cpm),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { logMessage, getWindowLocation } from '../src/utils.js';
|
|
1
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js'
|
|
2
3
|
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js'
|
|
3
|
-
import * as utils from '../src/utils.js'
|
|
4
4
|
|
|
5
5
|
const BIDDER_CODE = 'bidscube'
|
|
6
6
|
const URL = 'https://supply.bidscube.com/?c=o&m=multi'
|
|
@@ -20,9 +20,9 @@ export const spec = {
|
|
|
20
20
|
try {
|
|
21
21
|
window.top.location.toString()
|
|
22
22
|
winTop = window.top
|
|
23
|
-
} catch (e) {
|
|
23
|
+
} catch (e) { logMessage(e) }
|
|
24
24
|
|
|
25
|
-
const location =
|
|
25
|
+
const location = getWindowLocation()
|
|
26
26
|
const placements = []
|
|
27
27
|
|
|
28
28
|
for (let i = 0; i < validBidRequests.length; i++) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { logMessage, getDNT, deepSetValue, deepAccess, _map, logWarn } from '../src/utils.js';
|
|
1
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
3
|
import { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';
|
|
3
|
-
import * as utils from '../src/utils.js';
|
|
4
4
|
import {config} from '../src/config.js';
|
|
5
5
|
const BIDDER_CODE = 'bizzclick';
|
|
6
6
|
const ACCOUNTID_MACROS = '[account_id]';
|
|
@@ -67,7 +67,7 @@ export const spec = {
|
|
|
67
67
|
winTop = window.top;
|
|
68
68
|
} catch (e) {
|
|
69
69
|
location = winTop.location;
|
|
70
|
-
|
|
70
|
+
logMessage(e);
|
|
71
71
|
};
|
|
72
72
|
let bids = [];
|
|
73
73
|
for (let bidRequest of validBidRequests) {
|
|
@@ -80,7 +80,7 @@ export const spec = {
|
|
|
80
80
|
device: {
|
|
81
81
|
w: winTop.screen.width,
|
|
82
82
|
h: winTop.screen.height,
|
|
83
|
-
dnt:
|
|
83
|
+
dnt: getDNT() ? 1 : 0,
|
|
84
84
|
language: (navigator && navigator.language) ? navigator.language.indexOf('-') != -1 ? navigator.language.split('-')[0] : navigator.language : '',
|
|
85
85
|
},
|
|
86
86
|
site: {
|
|
@@ -124,12 +124,12 @@ export const spec = {
|
|
|
124
124
|
}
|
|
125
125
|
if (bidRequest) {
|
|
126
126
|
if (bidRequest.gdprConsent && bidRequest.gdprConsent.gdprApplies) {
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
deepSetValue(data, 'regs.ext.gdpr', bidRequest.gdprConsent.gdprApplies ? 1 : 0);
|
|
128
|
+
deepSetValue(data, 'user.ext.consent', bidRequest.gdprConsent.consentString);
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
if (bidRequest.uspConsent !== undefined) {
|
|
132
|
-
|
|
132
|
+
deepSetValue(data, 'regs.ext.us_privacy', bidRequest.uspConsent);
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
bids.push(data)
|
|
@@ -194,7 +194,7 @@ export const spec = {
|
|
|
194
194
|
* @returns {boolean}
|
|
195
195
|
*/
|
|
196
196
|
const checkRequestType = (bidRequest, type) => {
|
|
197
|
-
return (typeof
|
|
197
|
+
return (typeof deepAccess(bidRequest, `mediaTypes.${type}`) !== 'undefined');
|
|
198
198
|
}
|
|
199
199
|
const parseNative = admObject => {
|
|
200
200
|
const { assets, link, imptrackers, jstracker } = admObject.native;
|
|
@@ -240,7 +240,7 @@ const addNativeParameters = bidRequest => {
|
|
|
240
240
|
id: bidRequest.transactionId,
|
|
241
241
|
ver: NATIVE_VERSION,
|
|
242
242
|
};
|
|
243
|
-
const assets =
|
|
243
|
+
const assets = _map(bidRequest.mediaTypes.native, (bidParams, key) => {
|
|
244
244
|
const props = NATIVE_PARAMS[key];
|
|
245
245
|
const asset = {
|
|
246
246
|
required: bidParams.required & 1,
|
|
@@ -286,7 +286,7 @@ const parseSizes = (bid, mediaType) => {
|
|
|
286
286
|
mediaTypes.video.w,
|
|
287
287
|
mediaTypes.video.h
|
|
288
288
|
];
|
|
289
|
-
} else if (Array.isArray(
|
|
289
|
+
} else if (Array.isArray(deepAccess(bid, 'mediaTypes.video.playerSize')) && bid.mediaTypes.video.playerSize.length === 1) {
|
|
290
290
|
size = bid.mediaTypes.video.playerSize[0];
|
|
291
291
|
} else if (Array.isArray(bid.sizes) && bid.sizes.length > 0 && Array.isArray(bid.sizes[0]) && bid.sizes[0].length > 1) {
|
|
292
292
|
size = bid.sizes[0];
|
|
@@ -299,7 +299,7 @@ const parseSizes = (bid, mediaType) => {
|
|
|
299
299
|
} else if (Array.isArray(bid.sizes) && bid.sizes.length > 0) {
|
|
300
300
|
sizes = bid.sizes
|
|
301
301
|
} else {
|
|
302
|
-
|
|
302
|
+
logWarn('no sizes are setup or found');
|
|
303
303
|
}
|
|
304
304
|
return sizes
|
|
305
305
|
}
|
|
@@ -10,10 +10,9 @@ export const META_KEYWORDS = 'keywords'
|
|
|
10
10
|
export const META_DESCRIPTION = 'description'
|
|
11
11
|
|
|
12
12
|
const VIDEO = 'video'
|
|
13
|
-
const NATIVE = 'native'
|
|
14
13
|
const BANNER = 'banner'
|
|
15
14
|
|
|
16
|
-
const supportedMediaTypes = [BANNER, VIDEO
|
|
15
|
+
const supportedMediaTypes = [BANNER, VIDEO]
|
|
17
16
|
const aliasBidderCode = ['bk']
|
|
18
17
|
|
|
19
18
|
export function getMetaList(name) {
|
|
@@ -90,7 +89,11 @@ export const parseXML = (content) => {
|
|
|
90
89
|
if (typeof content !== 'string' || content.length === 0) return null
|
|
91
90
|
|
|
92
91
|
const parser = new DOMParser()
|
|
93
|
-
|
|
92
|
+
let xml;
|
|
93
|
+
|
|
94
|
+
try {
|
|
95
|
+
xml = parser.parseFromString(content, 'text/xml')
|
|
96
|
+
} catch (e) {}
|
|
94
97
|
|
|
95
98
|
if (xml &&
|
|
96
99
|
xml.getElementsByTagName('VAST')[0] &&
|
|
@@ -104,19 +107,19 @@ export const parseXML = (content) => {
|
|
|
104
107
|
/**
|
|
105
108
|
* @param bidRequest
|
|
106
109
|
* @param bliinkCreative
|
|
107
|
-
* @return {{cpm, netRevenue: boolean,
|
|
110
|
+
* @return {{cpm, netRevenue: boolean, requestId, width: (*|number), currency, ttl: number, creativeId, height: (*|number)} & {mediaType: string, vastXml}}
|
|
108
111
|
*/
|
|
109
112
|
export const buildBid = (bidRequest, bliinkCreative) => {
|
|
110
113
|
if (!bidRequest && !bliinkCreative) return null
|
|
111
114
|
|
|
112
115
|
const body = {
|
|
113
116
|
requestId: bidRequest.bidId,
|
|
117
|
+
currency: bliinkCreative.currency,
|
|
114
118
|
cpm: bliinkCreative.price,
|
|
115
119
|
creativeId: bliinkCreative.creativeId,
|
|
116
|
-
|
|
120
|
+
width: (bidRequest.sizes && bidRequest.sizes[0][0]) || 1,
|
|
121
|
+
height: (bidRequest.sizes && bidRequest.sizes[0][1]) || 1,
|
|
117
122
|
netRevenue: false,
|
|
118
|
-
width: 1,
|
|
119
|
-
height: 1,
|
|
120
123
|
ttl: 3600,
|
|
121
124
|
}
|
|
122
125
|
|
|
@@ -131,14 +134,20 @@ export const buildBid = (bidRequest, bliinkCreative) => {
|
|
|
131
134
|
|
|
132
135
|
delete bidRequest['bids']
|
|
133
136
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
137
|
+
switch (bliinkCreative.media_type) {
|
|
138
|
+
case VIDEO:
|
|
139
|
+
return Object.assign(body, {
|
|
140
|
+
mediaType: VIDEO,
|
|
141
|
+
vastXml: bliinkCreative.content,
|
|
142
|
+
})
|
|
143
|
+
case BANNER:
|
|
144
|
+
return Object.assign(body, {
|
|
145
|
+
mediaType: BANNER,
|
|
146
|
+
ad: (bliinkCreative && bliinkCreative.content && bliinkCreative.content.creative && bliinkCreative.content.creative.adm) || '',
|
|
147
|
+
})
|
|
148
|
+
default:
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
142
151
|
}
|
|
143
152
|
|
|
144
153
|
/**
|
|
@@ -209,7 +218,7 @@ export const buildRequests = (_, bidderRequest) => {
|
|
|
209
218
|
* @return
|
|
210
219
|
*/
|
|
211
220
|
const interpretResponse = (serverResponse, request) => {
|
|
212
|
-
if ((serverResponse && serverResponse.mode === 'no-ad')
|
|
221
|
+
if ((serverResponse && serverResponse.mode === 'no-ad')) {
|
|
213
222
|
return []
|
|
214
223
|
}
|
|
215
224
|
|
|
@@ -218,23 +227,40 @@ const interpretResponse = (serverResponse, request) => {
|
|
|
218
227
|
|
|
219
228
|
const xml = parseXML(body)
|
|
220
229
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
230
|
+
let creative;
|
|
231
|
+
|
|
232
|
+
switch (serverBody.bids[0].params.placement) {
|
|
233
|
+
case xml && VIDEO:
|
|
234
|
+
const price = xml.getElementsByTagName('Price') && xml.getElementsByTagName('Price')[0]
|
|
235
|
+
const currency = xml.getElementsByTagName('Currency') && xml.getElementsByTagName('Currency')[0]
|
|
236
|
+
const creativeId = xml.getElementsByTagName('CreativeId') && xml.getElementsByTagName('CreativeId')[0]
|
|
237
|
+
|
|
238
|
+
creative = {
|
|
239
|
+
content: body,
|
|
240
|
+
price: (price && price.textContent) || 0,
|
|
241
|
+
currency: (currency && currency.textContent) || 'EUR',
|
|
242
|
+
creativeId: creativeId || 0,
|
|
243
|
+
media_type: 'video',
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
return buildBid(serverBody.bids[0], creative)
|
|
247
|
+
case BANNER:
|
|
248
|
+
if (body) {
|
|
249
|
+
creative = {
|
|
250
|
+
content: body,
|
|
251
|
+
price: body.price,
|
|
252
|
+
currency: body.currency,
|
|
253
|
+
creativeId: 0,
|
|
254
|
+
media_type: 'banner',
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return buildBid(serverBody.bids[0], creative)
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
break
|
|
261
|
+
default:
|
|
262
|
+
break
|
|
235
263
|
}
|
|
236
|
-
|
|
237
|
-
return []
|
|
238
264
|
}
|
|
239
265
|
|
|
240
266
|
/**
|
|
@@ -31,7 +31,7 @@ const adUnits = [
|
|
|
31
31
|
bidder: 'bliink',
|
|
32
32
|
params: {
|
|
33
33
|
placement: 'banner',
|
|
34
|
-
tagId: '
|
|
34
|
+
tagId: '41'
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
]
|
|
@@ -50,11 +50,34 @@ const adUnits = [
|
|
|
50
50
|
mediaTypes: {
|
|
51
51
|
video: {
|
|
52
52
|
context: 'instream',
|
|
53
|
-
playerSize: [640,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
playerSize: [[640,480]],
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
bids: [
|
|
57
|
+
{
|
|
58
|
+
bidder: 'bliink',
|
|
59
|
+
params: {
|
|
60
|
+
tagId: '41',
|
|
61
|
+
placement: 'video',
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Sample outstream Video Ad Unit
|
|
70
|
+
|
|
71
|
+
```js
|
|
72
|
+
const adUnits = [
|
|
73
|
+
{
|
|
74
|
+
code: '/19968336/prebid_cache_video_adunit',
|
|
75
|
+
sizes: [[640,480]],
|
|
76
|
+
mediaType: 'video',
|
|
77
|
+
mediaTypes: {
|
|
78
|
+
video: {
|
|
79
|
+
context: 'outstream',
|
|
80
|
+
playerSize: [[640,480]],
|
|
58
81
|
}
|
|
59
82
|
},
|
|
60
83
|
bids: [
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { deepAccess, deepSetValue, deepClone, logWarn, logError } from '../src/utils.js';
|
|
2
2
|
import find from 'core-js-pure/features/array/find.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import { VIDEO } from '../src/mediaTypes.js';
|
|
@@ -43,7 +43,7 @@ const BB_HELPERS = {
|
|
|
43
43
|
if (!request.device.h) request.device.h = window.innerHeight;
|
|
44
44
|
},
|
|
45
45
|
addSchain: function(request, validBidRequests) {
|
|
46
|
-
const schain =
|
|
46
|
+
const schain = deepAccess(validBidRequests, '0.schain');
|
|
47
47
|
if (schain) request.source.ext = { schain: schain };
|
|
48
48
|
},
|
|
49
49
|
addCurrency: function(request) {
|
|
@@ -52,11 +52,11 @@ const BB_HELPERS = {
|
|
|
52
52
|
else if (Array.isArray(adServerCur) && adServerCur.length) request.cur = [adServerCur[0]];
|
|
53
53
|
},
|
|
54
54
|
addUserIds: function(request, validBidRequests) {
|
|
55
|
-
const bidUserId =
|
|
55
|
+
const bidUserId = deepAccess(validBidRequests, '0.userId');
|
|
56
56
|
const eids = createEidsArray(bidUserId);
|
|
57
57
|
|
|
58
58
|
if (eids.length) {
|
|
59
|
-
|
|
59
|
+
deepSetValue(request, 'user.ext.eids', eids);
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
62
|
substituteUrl: function (url, publication, renderer) {
|
|
@@ -72,7 +72,7 @@ const BB_HELPERS = {
|
|
|
72
72
|
return BB_HELPERS.substituteUrl(BB_CONSTANTS.RENDERER_URL, publication, renderer);
|
|
73
73
|
},
|
|
74
74
|
transformVideoParams: function(videoParams, videoParamsExt) {
|
|
75
|
-
videoParams =
|
|
75
|
+
videoParams = deepClone(videoParams);
|
|
76
76
|
|
|
77
77
|
let playerSize = videoParams.playerSize || [BB_CONSTANTS.DEFAULT_WIDTH, BB_CONSTANTS.DEFAULT_HEIGHT];
|
|
78
78
|
if (Array.isArray(playerSize[0])) playerSize = playerSize[0];
|
|
@@ -105,8 +105,8 @@ const BB_HELPERS = {
|
|
|
105
105
|
ttl: BB_CONSTANTS.DEFAULT_TTL
|
|
106
106
|
};
|
|
107
107
|
|
|
108
|
-
const extPrebidTargeting =
|
|
109
|
-
const extPrebidCache =
|
|
108
|
+
const extPrebidTargeting = deepAccess(bid, 'ext.prebid.targeting');
|
|
109
|
+
const extPrebidCache = deepAccess(bid, 'ext.prebid.cache');
|
|
110
110
|
|
|
111
111
|
if (extPrebidCache && typeof extPrebidCache.vastXml === 'object' && extPrebidCache.vastXml.cacheId && extPrebidCache.vastXml.url) {
|
|
112
112
|
bidObject.videoCacheKey = extPrebidCache.vastXml.cacheId;
|
|
@@ -139,12 +139,12 @@ const BB_RENDERER = {
|
|
|
139
139
|
else if (bid.vastUrl) config.vastUrl = bid.vastUrl;
|
|
140
140
|
|
|
141
141
|
if (!bid.vastXml && !bid.vastUrl) {
|
|
142
|
-
|
|
142
|
+
logWarn(`${BB_CONSTANTS.BIDDER_CODE}: No vastXml or vastUrl on bid, bailing...`);
|
|
143
143
|
return;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
if (!(window.bluebillywig && window.bluebillywig.renderers)) {
|
|
147
|
-
|
|
147
|
+
logWarn(`${BB_CONSTANTS.BIDDER_CODE}: renderer code failed to initialize...`);
|
|
148
148
|
return;
|
|
149
149
|
}
|
|
150
150
|
|
|
@@ -153,7 +153,7 @@ const BB_RENDERER = {
|
|
|
153
153
|
const renderer = find(window.bluebillywig.renderers, r => r._id === rendererId);
|
|
154
154
|
|
|
155
155
|
if (renderer) renderer.bootstrap(config, ele, bid.rendererSettings || {});
|
|
156
|
-
else
|
|
156
|
+
else logWarn(`${BB_CONSTANTS.BIDDER_CODE}: Couldn't find a renderer with ${rendererId}`);
|
|
157
157
|
},
|
|
158
158
|
newRenderer: function(rendererUrl, adUnitCode) {
|
|
159
159
|
const renderer = Renderer.install({
|
|
@@ -165,7 +165,7 @@ const BB_RENDERER = {
|
|
|
165
165
|
try {
|
|
166
166
|
renderer.setRender(BB_RENDERER.outstreamRender);
|
|
167
167
|
} catch (err) {
|
|
168
|
-
|
|
168
|
+
logWarn(`${BB_CONSTANTS.BIDDER_CODE}: Error tying to setRender on renderer`, err);
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
return renderer;
|
|
@@ -189,70 +189,70 @@ export const spec = {
|
|
|
189
189
|
const rendererRegex = /^[\w+_]+$/;
|
|
190
190
|
|
|
191
191
|
if (!bid.params) {
|
|
192
|
-
|
|
192
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: no params set on bid. Rejecting bid: `, bid);
|
|
193
193
|
return false;
|
|
194
194
|
}
|
|
195
195
|
|
|
196
196
|
if (!bid.params.hasOwnProperty('publicationName') || typeof bid.params.publicationName !== 'string') {
|
|
197
|
-
|
|
197
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: no publicationName specified in bid params, or it's not a string. Rejecting bid: `, bid);
|
|
198
198
|
return false;
|
|
199
199
|
} else if (!publicationNameRegex.test(bid.params.publicationName)) {
|
|
200
|
-
|
|
200
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: publicationName must be in format 'publication' or 'publication.environment'. Rejecting bid: `, bid);
|
|
201
201
|
return false;
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
if ((!bid.params.hasOwnProperty('rendererCode') || typeof bid.params.rendererCode !== 'string')) {
|
|
205
|
-
|
|
205
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: no rendererCode was specified in bid params. Rejecting bid: `, bid);
|
|
206
206
|
return false;
|
|
207
207
|
} else if (!rendererRegex.test(bid.params.rendererCode)) {
|
|
208
|
-
|
|
208
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: rendererCode must be alphanumeric, including underscores. Rejecting bid: `, bid);
|
|
209
209
|
return false;
|
|
210
210
|
}
|
|
211
211
|
|
|
212
212
|
if (!bid.params.accountId) {
|
|
213
|
-
|
|
213
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: no accountId specified in bid params. Rejecting bid: `, bid);
|
|
214
214
|
return false;
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
if (bid.params.hasOwnProperty('connections')) {
|
|
218
218
|
if (!Array.isArray(bid.params.connections)) {
|
|
219
|
-
|
|
219
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: connections is not of type array. Rejecting bid: `, bid);
|
|
220
220
|
return false;
|
|
221
221
|
} else {
|
|
222
222
|
for (let i = 0; i < bid.params.connections.length; i++) {
|
|
223
223
|
if (!bid.params.hasOwnProperty(bid.params.connections[i])) {
|
|
224
|
-
|
|
224
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: connection specified in params.connections, but not configured in params. Rejecting bid: `, bid);
|
|
225
225
|
return false;
|
|
226
226
|
}
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
229
|
} else {
|
|
230
|
-
|
|
230
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: no connections specified in bid. Rejecting bid: `, bid);
|
|
231
231
|
return false;
|
|
232
232
|
}
|
|
233
233
|
|
|
234
234
|
if (bid.params.hasOwnProperty('video') && (bid.params.video === null || typeof bid.params.video !== 'object')) {
|
|
235
|
-
|
|
235
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: params.video must be of type object. Rejecting bid: `, bid);
|
|
236
236
|
return false;
|
|
237
237
|
}
|
|
238
238
|
|
|
239
239
|
if (bid.params.hasOwnProperty('rendererSettings') && (bid.params.rendererSettings === null || typeof bid.params.rendererSettings !== 'object')) {
|
|
240
|
-
|
|
240
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: params.rendererSettings must be of type object. Rejecting bid: `, bid);
|
|
241
241
|
return false;
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
if (bid.hasOwnProperty('mediaTypes') && bid.mediaTypes.hasOwnProperty(VIDEO)) {
|
|
245
245
|
if (!bid.mediaTypes[VIDEO].hasOwnProperty('context')) {
|
|
246
|
-
|
|
246
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: no context specified in bid. Rejecting bid: `, bid);
|
|
247
247
|
return false;
|
|
248
248
|
}
|
|
249
249
|
|
|
250
250
|
if (bid.mediaTypes[VIDEO].context !== 'outstream') {
|
|
251
|
-
|
|
251
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: video.context is invalid, must be "outstream". Rejecting bid: `, bid);
|
|
252
252
|
return false;
|
|
253
253
|
}
|
|
254
254
|
} else {
|
|
255
|
-
|
|
255
|
+
logError(`${BB_CONSTANTS.BIDDER_CODE}: mediaTypes or mediaTypes.video is not specified. Rejecting bid: `, bid);
|
|
256
256
|
return false;
|
|
257
257
|
}
|
|
258
258
|
|
|
@@ -273,7 +273,7 @@ export const spec = {
|
|
|
273
273
|
return extBuilder;
|
|
274
274
|
}, {});
|
|
275
275
|
|
|
276
|
-
const videoParams = BB_HELPERS.transformVideoParams(
|
|
276
|
+
const videoParams = BB_HELPERS.transformVideoParams(deepAccess(validBidRequest, 'mediaTypes.video'), deepAccess(validBidRequest, 'params.video'));
|
|
277
277
|
imps.push({ id: validBidRequest.bidId, ext, secure: window.location.protocol === 'https' ? 1 : 0, video: videoParams });
|
|
278
278
|
});
|
|
279
279
|
|
|
@@ -294,16 +294,16 @@ export const spec = {
|
|
|
294
294
|
if (bidderRequest.gdprConsent) {
|
|
295
295
|
let gdprApplies = 0;
|
|
296
296
|
if (typeof bidderRequest.gdprConsent.gdprApplies === 'boolean') gdprApplies = bidderRequest.gdprConsent.gdprApplies ? 1 : 0;
|
|
297
|
-
|
|
298
|
-
|
|
297
|
+
deepSetValue(request, 'regs.ext.gdpr', gdprApplies);
|
|
298
|
+
deepSetValue(request, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
|
|
299
299
|
}
|
|
300
300
|
|
|
301
301
|
if (bidderRequest.uspConsent) {
|
|
302
|
-
|
|
302
|
+
deepSetValue(request, 'regs.ext.us_privacy', bidderRequest.uspConsent);
|
|
303
303
|
this.syncStore.uspConsent = bidderRequest.uspConsent;
|
|
304
304
|
}
|
|
305
305
|
|
|
306
|
-
if (getConfig('coppa') == true)
|
|
306
|
+
if (getConfig('coppa') == true) deepSetValue(request, 'regs.coppa', 1);
|
|
307
307
|
|
|
308
308
|
// Enrich the request with any external data we may have
|
|
309
309
|
BB_HELPERS.addSiteAppDevice(request, bidderRequest.refererInfo && bidderRequest.refererInfo.referer);
|