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 { logError, deepAccess, isArray, getBidIdParameter, getDNT, deepSetValue, isEmpty, _each, logMessage, logWarn, isBoolean, isNumber, isPlainObject, isFn } from '../src/utils.js';
|
|
2
2
|
import { config } from '../src/config.js';
|
|
3
3
|
import { Renderer } from '../src/Renderer.js';
|
|
4
4
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
@@ -24,34 +24,34 @@ export const spec = {
|
|
|
24
24
|
*/
|
|
25
25
|
isBidRequestValid: function(bid) {
|
|
26
26
|
if (bid && typeof bid.params !== 'object') {
|
|
27
|
-
|
|
27
|
+
logError(BIDDER_CODE + ': params is not defined or is incorrect in the bidder settings.');
|
|
28
28
|
return false;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
if (!
|
|
32
|
-
|
|
31
|
+
if (!deepAccess(bid, 'mediaTypes.video')) {
|
|
32
|
+
logError(BIDDER_CODE + ': mediaTypes.video is not present in the bidder settings.');
|
|
33
33
|
return false;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
const playerSize =
|
|
37
|
-
if (!playerSize || !
|
|
38
|
-
|
|
36
|
+
const playerSize = deepAccess(bid, 'mediaTypes.video.playerSize');
|
|
37
|
+
if (!playerSize || !isArray(playerSize)) {
|
|
38
|
+
logError(BIDDER_CODE + ': mediaTypes.video.playerSize is not defined in the bidder settings.');
|
|
39
39
|
return false;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
if (!
|
|
43
|
-
|
|
42
|
+
if (!getBidIdParameter('channel_id', bid.params)) {
|
|
43
|
+
logError(BIDDER_CODE + ': channel_id is not present in bidder params');
|
|
44
44
|
return false;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
if (
|
|
48
|
-
if (!
|
|
49
|
-
if (!
|
|
50
|
-
|
|
47
|
+
if (deepAccess(bid, 'mediaTypes.video.context') == 'outstream' || deepAccess(bid, 'params.ad_unit') == 'outstream') {
|
|
48
|
+
if (!getBidIdParameter('outstream_function', bid.params)) {
|
|
49
|
+
if (!getBidIdParameter('outstream_options', bid.params)) {
|
|
50
|
+
logError(BIDDER_CODE + ': please define outstream_options parameter or override the default SpotX outstream rendering by defining your own Outstream function using field outstream_function.');
|
|
51
51
|
return false;
|
|
52
52
|
}
|
|
53
|
-
if (!
|
|
54
|
-
|
|
53
|
+
if (!getBidIdParameter('slot', bid.params.outstream_options)) {
|
|
54
|
+
logError(BIDDER_CODE + ': please define parameter slot in outstream_options object in the configuration.');
|
|
55
55
|
return false;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -75,54 +75,54 @@ export const spec = {
|
|
|
75
75
|
const siteId = '';
|
|
76
76
|
const spotxRequests = bidRequests.map(function(bid) {
|
|
77
77
|
let page;
|
|
78
|
-
if (
|
|
79
|
-
page =
|
|
78
|
+
if (getBidIdParameter('page', bid.params)) {
|
|
79
|
+
page = getBidIdParameter('page', bid.params);
|
|
80
80
|
} else if (config.getConfig('pageUrl')) {
|
|
81
81
|
page = config.getConfig('pageUrl');
|
|
82
82
|
} else {
|
|
83
83
|
page = referer;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
const channelId =
|
|
86
|
+
const channelId = getBidIdParameter('channel_id', bid.params);
|
|
87
87
|
let pubcid = null;
|
|
88
88
|
|
|
89
|
-
const playerSize =
|
|
89
|
+
const playerSize = deepAccess(bid, 'mediaTypes.video.playerSize');
|
|
90
90
|
const contentWidth = playerSize[0][0];
|
|
91
91
|
const contentHeight = playerSize[0][1];
|
|
92
92
|
|
|
93
|
-
const secure = isPageSecure || (
|
|
93
|
+
const secure = isPageSecure || (getBidIdParameter('secure', bid.params) ? 1 : 0);
|
|
94
94
|
|
|
95
95
|
const ext = {
|
|
96
96
|
sdk_name: 'Prebid 1+',
|
|
97
97
|
versionOrtb: ORTB_VERSION
|
|
98
98
|
};
|
|
99
99
|
|
|
100
|
-
if (
|
|
101
|
-
ext.hide_skin = +!!
|
|
100
|
+
if (getBidIdParameter('hide_skin', bid.params) != '') {
|
|
101
|
+
ext.hide_skin = +!!getBidIdParameter('hide_skin', bid.params);
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
if (
|
|
105
|
-
ext.ad_volume =
|
|
104
|
+
if (getBidIdParameter('ad_volume', bid.params) != '') {
|
|
105
|
+
ext.ad_volume = getBidIdParameter('ad_volume', bid.params);
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
if (
|
|
109
|
-
ext.ad_unit =
|
|
108
|
+
if (getBidIdParameter('ad_unit', bid.params) != '') {
|
|
109
|
+
ext.ad_unit = getBidIdParameter('ad_unit', bid.params);
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
-
if (
|
|
113
|
-
ext.outstream_options =
|
|
112
|
+
if (getBidIdParameter('outstream_options', bid.params) != '') {
|
|
113
|
+
ext.outstream_options = getBidIdParameter('outstream_options', bid.params);
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
if (
|
|
117
|
-
ext.outstream_function =
|
|
116
|
+
if (getBidIdParameter('outstream_function', bid.params) != '') {
|
|
117
|
+
ext.outstream_function = getBidIdParameter('outstream_function', bid.params);
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
-
if (
|
|
121
|
-
ext.custom =
|
|
120
|
+
if (getBidIdParameter('custom', bid.params) != '') {
|
|
121
|
+
ext.custom = getBidIdParameter('custom', bid.params);
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
if (
|
|
125
|
-
const preMarketBids =
|
|
124
|
+
if (getBidIdParameter('pre_market_bids', bid.params) != '' && isArray(getBidIdParameter('pre_market_bids', bid.params))) {
|
|
125
|
+
const preMarketBids = getBidIdParameter('pre_market_bids', bid.params);
|
|
126
126
|
ext.pre_market_bids = [];
|
|
127
127
|
for (let i in preMarketBids) {
|
|
128
128
|
const preMarketBid = preMarketBids[i];
|
|
@@ -150,7 +150,7 @@ export const spec = {
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
const mimes =
|
|
153
|
+
const mimes = getBidIdParameter('mimes', bid.params) || ['application/javascript', 'video/mp4', 'video/webm'];
|
|
154
154
|
|
|
155
155
|
const spotxReq = {
|
|
156
156
|
id: bid.bidId,
|
|
@@ -163,24 +163,38 @@ export const spec = {
|
|
|
163
163
|
}
|
|
164
164
|
};
|
|
165
165
|
|
|
166
|
-
if (
|
|
167
|
-
|
|
166
|
+
if (isFn(bid.getFloor)) {
|
|
167
|
+
let floorInfo = bid.getFloor({
|
|
168
|
+
currency: 'USD',
|
|
169
|
+
mediaType: 'video',
|
|
170
|
+
size: '*'
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
if (floorInfo.currency === 'USD') {
|
|
174
|
+
spotxReq.bidfloor = floorInfo.floor;
|
|
175
|
+
}
|
|
176
|
+
} else if (getBidIdParameter('price_floor', bid.params) != '') {
|
|
177
|
+
spotxReq.bidfloor = getBidIdParameter('price_floor', bid.params);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (getBidIdParameter('start_delay', bid.params) != '') {
|
|
181
|
+
spotxReq.video.startdelay = 0 + Boolean(getBidIdParameter('start_delay', bid.params));
|
|
168
182
|
}
|
|
169
183
|
|
|
170
|
-
if (
|
|
171
|
-
spotxReq.video.minduration =
|
|
184
|
+
if (getBidIdParameter('min_duration', bid.params) != '') {
|
|
185
|
+
spotxReq.video.minduration = getBidIdParameter('min_duration', bid.params);
|
|
172
186
|
}
|
|
173
187
|
|
|
174
|
-
if (
|
|
175
|
-
spotxReq.video.maxduration =
|
|
188
|
+
if (getBidIdParameter('max_duration', bid.params) != '') {
|
|
189
|
+
spotxReq.video.maxduration = getBidIdParameter('max_duration', bid.params);
|
|
176
190
|
}
|
|
177
191
|
|
|
178
|
-
if (
|
|
179
|
-
spotxReq.video.ext.placement =
|
|
192
|
+
if (getBidIdParameter('placement_type', bid.params) != '') {
|
|
193
|
+
spotxReq.video.ext.placement = getBidIdParameter('placement_type', bid.params);
|
|
180
194
|
}
|
|
181
195
|
|
|
182
|
-
if (
|
|
183
|
-
spotxReq.video.ext.pos =
|
|
196
|
+
if (getBidIdParameter('position', bid.params) != '') {
|
|
197
|
+
spotxReq.video.ext.pos = getBidIdParameter('position', bid.params);
|
|
184
198
|
}
|
|
185
199
|
|
|
186
200
|
if (bid.crumbs && bid.crumbs.pubcid) {
|
|
@@ -191,7 +205,7 @@ export const spec = {
|
|
|
191
205
|
const device = {
|
|
192
206
|
h: screen.height,
|
|
193
207
|
w: screen.width,
|
|
194
|
-
dnt:
|
|
208
|
+
dnt: getDNT() ? 1 : 0,
|
|
195
209
|
language: navigator[language].split('-')[0],
|
|
196
210
|
make: navigator.vendor ? navigator.vendor : '',
|
|
197
211
|
ua: navigator.userAgent
|
|
@@ -217,13 +231,13 @@ export const spec = {
|
|
|
217
231
|
requestPayload['ext']['wrap_response'] = 0;
|
|
218
232
|
}
|
|
219
233
|
|
|
220
|
-
if (
|
|
221
|
-
requestPayload['ext']['number_of_ads'] =
|
|
234
|
+
if (getBidIdParameter('number_of_ads', bid.params)) {
|
|
235
|
+
requestPayload['ext']['number_of_ads'] = getBidIdParameter('number_of_ads', bid.params);
|
|
222
236
|
}
|
|
223
237
|
|
|
224
238
|
const userExt = {};
|
|
225
239
|
|
|
226
|
-
if (
|
|
240
|
+
if (getBidIdParameter('spotx_all_google_consent', bid.params) == 1) {
|
|
227
241
|
userExt['consented_providers_settings'] = GOOGLE_CONSENT;
|
|
228
242
|
}
|
|
229
243
|
|
|
@@ -232,16 +246,16 @@ export const spec = {
|
|
|
232
246
|
userExt.consent = bidderRequest.gdprConsent.consentString;
|
|
233
247
|
|
|
234
248
|
if (typeof bidderRequest.gdprConsent.gdprApplies !== 'undefined') {
|
|
235
|
-
|
|
249
|
+
deepSetValue(requestPayload, 'regs.ext.gdpr', (bidderRequest.gdprConsent.gdprApplies ? 1 : 0));
|
|
236
250
|
}
|
|
237
251
|
}
|
|
238
252
|
|
|
239
253
|
if (bidderRequest && bidderRequest.uspConsent) {
|
|
240
|
-
|
|
254
|
+
deepSetValue(requestPayload, 'regs.ext.us_privacy', bidderRequest.uspConsent);
|
|
241
255
|
}
|
|
242
256
|
|
|
243
257
|
// ID5 fied
|
|
244
|
-
if (
|
|
258
|
+
if (deepAccess(bid, 'userId.id5id.uid')) {
|
|
245
259
|
userExt.eids = userExt.eids || [];
|
|
246
260
|
userExt.eids.push(
|
|
247
261
|
{
|
|
@@ -284,7 +298,7 @@ export const spec = {
|
|
|
284
298
|
}
|
|
285
299
|
|
|
286
300
|
// Only add the user object if it's not empty
|
|
287
|
-
if (!
|
|
301
|
+
if (!isEmpty(userExt)) {
|
|
288
302
|
requestPayload.user = { ext: userExt };
|
|
289
303
|
}
|
|
290
304
|
const urlQueryParams = 'src_sys=prebid'
|
|
@@ -309,9 +323,9 @@ export const spec = {
|
|
|
309
323
|
const bidResponses = [];
|
|
310
324
|
const serverResponseBody = serverResponse.body;
|
|
311
325
|
|
|
312
|
-
if (serverResponseBody &&
|
|
313
|
-
|
|
314
|
-
|
|
326
|
+
if (serverResponseBody && isArray(serverResponseBody.seatbid)) {
|
|
327
|
+
_each(serverResponseBody.seatbid, function(bids) {
|
|
328
|
+
_each(bids.bid, function(spotxBid) {
|
|
315
329
|
let currentBidRequest = {};
|
|
316
330
|
for (let i in bidderRequest.bidRequest.bids) {
|
|
317
331
|
if (spotxBid.impid == bidderRequest.bidRequest.bids[i].bidId) {
|
|
@@ -323,7 +337,7 @@ export const spec = {
|
|
|
323
337
|
* Make sure currency and price are the right ones
|
|
324
338
|
* TODO: what about the pre_market_bid partners sizes?
|
|
325
339
|
*/
|
|
326
|
-
|
|
340
|
+
_each(currentBidRequest.params.pre_market_bids, function(pmb) {
|
|
327
341
|
if (pmb.deal_id == spotxBid.id) {
|
|
328
342
|
spotxBid.price = pmb.price;
|
|
329
343
|
serverResponseBody.cur = pmb.currency;
|
|
@@ -357,10 +371,10 @@ export const spec = {
|
|
|
357
371
|
bid.meta.advertiserDomains = spotxBid.adomain;
|
|
358
372
|
}
|
|
359
373
|
|
|
360
|
-
const context1 =
|
|
361
|
-
const context2 =
|
|
374
|
+
const context1 = deepAccess(currentBidRequest, 'mediaTypes.video.context');
|
|
375
|
+
const context2 = deepAccess(currentBidRequest, 'params.ad_unit');
|
|
362
376
|
if (context1 == 'outstream' || context2 == 'outstream') {
|
|
363
|
-
const playersize =
|
|
377
|
+
const playersize = deepAccess(currentBidRequest, 'mediaTypes.video.playerSize');
|
|
364
378
|
const renderer = Renderer.install({
|
|
365
379
|
id: 0,
|
|
366
380
|
url: '/',
|
|
@@ -368,11 +382,11 @@ export const spec = {
|
|
|
368
382
|
adText: 'SpotX Outstream Video Ad via Prebid.js',
|
|
369
383
|
player_width: playersize[0][0],
|
|
370
384
|
player_height: playersize[0][1],
|
|
371
|
-
content_page_url:
|
|
372
|
-
ad_mute: +!!
|
|
373
|
-
hide_skin: +!!
|
|
374
|
-
outstream_options:
|
|
375
|
-
outstream_function:
|
|
385
|
+
content_page_url: deepAccess(bidderRequest, 'data.site.page'),
|
|
386
|
+
ad_mute: +!!deepAccess(currentBidRequest, 'params.ad_mute'),
|
|
387
|
+
hide_skin: +!!deepAccess(currentBidRequest, 'params.hide_skin'),
|
|
388
|
+
outstream_options: deepAccess(currentBidRequest, 'params.outstream_options'),
|
|
389
|
+
outstream_function: deepAccess(currentBidRequest, 'params.outstream_function')
|
|
376
390
|
}
|
|
377
391
|
});
|
|
378
392
|
|
|
@@ -380,17 +394,17 @@ export const spec = {
|
|
|
380
394
|
renderer.setRender(outstreamRender);
|
|
381
395
|
renderer.setEventHandlers({
|
|
382
396
|
impression: function impression() {
|
|
383
|
-
return
|
|
397
|
+
return logMessage('SpotX outstream video impression event');
|
|
384
398
|
},
|
|
385
399
|
loaded: function loaded() {
|
|
386
|
-
return
|
|
400
|
+
return logMessage('SpotX outstream video loaded event');
|
|
387
401
|
},
|
|
388
402
|
ended: function ended() {
|
|
389
|
-
|
|
403
|
+
logMessage('SpotX outstream renderer video event');
|
|
390
404
|
}
|
|
391
405
|
});
|
|
392
406
|
} catch (err) {
|
|
393
|
-
|
|
407
|
+
logWarn('Prebid Error calling setRender or setEventHandlers on renderer', err);
|
|
394
408
|
}
|
|
395
409
|
bid.renderer = renderer;
|
|
396
410
|
}
|
|
@@ -405,8 +419,8 @@ export const spec = {
|
|
|
405
419
|
}
|
|
406
420
|
|
|
407
421
|
function createOutstreamScript(bid) {
|
|
408
|
-
const slot =
|
|
409
|
-
|
|
422
|
+
const slot = getBidIdParameter('slot', bid.renderer.config.outstream_options);
|
|
423
|
+
logMessage('[SPOTX][renderer] Handle SpotX outstream renderer');
|
|
410
424
|
const script = window.document.createElement('script');
|
|
411
425
|
script.type = 'text/javascript';
|
|
412
426
|
script.src = 'https://js.spotx.tv/easi/v1/' + bid.channel_id + '.js';
|
|
@@ -416,8 +430,8 @@ function createOutstreamScript(bid) {
|
|
|
416
430
|
dataSpotXParams['data-spotx_content_page_url'] = bid.renderer.config.content_page_url;
|
|
417
431
|
dataSpotXParams['data-spotx_ad_unit'] = 'incontent';
|
|
418
432
|
|
|
419
|
-
|
|
420
|
-
if (
|
|
433
|
+
logMessage('[SPOTX][renderer] Default behavior');
|
|
434
|
+
if (getBidIdParameter('ad_mute', bid.renderer.config.outstream_options)) {
|
|
421
435
|
dataSpotXParams['data-spotx_ad_mute'] = '1';
|
|
422
436
|
}
|
|
423
437
|
dataSpotXParams['data-spotx_collapse'] = '0';
|
|
@@ -425,9 +439,9 @@ function createOutstreamScript(bid) {
|
|
|
425
439
|
dataSpotXParams['data-spotx_blocked_autoplay_override_mode'] = '1';
|
|
426
440
|
dataSpotXParams['data-spotx_video_slot_can_autoplay'] = '1';
|
|
427
441
|
|
|
428
|
-
const playersizeAutoAdapt =
|
|
429
|
-
if (playersizeAutoAdapt &&
|
|
430
|
-
const ratio = bid.width &&
|
|
442
|
+
const playersizeAutoAdapt = getBidIdParameter('playersize_auto_adapt', bid.renderer.config.outstream_options);
|
|
443
|
+
if (playersizeAutoAdapt && isBoolean(playersizeAutoAdapt) && playersizeAutoAdapt === true) {
|
|
444
|
+
const ratio = bid.width && isNumber(bid.width) && bid.height && isNumber(bid.height) ? bid.width / bid.height : 4 / 3;
|
|
431
445
|
const slotClientWidth = window.document.getElementById(slot).clientWidth;
|
|
432
446
|
let playerWidth = bid.renderer.config.player_width;
|
|
433
447
|
let playerHeight = bid.renderer.config.player_height;
|
|
@@ -449,13 +463,13 @@ function createOutstreamScript(bid) {
|
|
|
449
463
|
dataSpotXParams['data-spotx_content_height'] = '' + contentHeight;
|
|
450
464
|
}
|
|
451
465
|
|
|
452
|
-
const customOverride =
|
|
453
|
-
if (customOverride &&
|
|
454
|
-
|
|
466
|
+
const customOverride = getBidIdParameter('custom_override', bid.renderer.config.outstream_options);
|
|
467
|
+
if (customOverride && isPlainObject(customOverride)) {
|
|
468
|
+
logMessage('[SPOTX][renderer] Custom behavior.');
|
|
455
469
|
for (let name in customOverride) {
|
|
456
470
|
if (customOverride.hasOwnProperty(name)) {
|
|
457
471
|
if (name === 'channel_id' || name === 'vast_url' || name === 'content_page_url' || name === 'ad_unit') {
|
|
458
|
-
|
|
472
|
+
logWarn('[SPOTX][renderer] Custom behavior: following option cannot be overridden: ' + name);
|
|
459
473
|
} else {
|
|
460
474
|
dataSpotXParams['data-spotx_' + name] = customOverride[name];
|
|
461
475
|
}
|
|
@@ -478,7 +492,7 @@ function outstreamRender(bid) {
|
|
|
478
492
|
bid.renderer.config.outstream_function(bid, script);
|
|
479
493
|
} else {
|
|
480
494
|
try {
|
|
481
|
-
const inIframe =
|
|
495
|
+
const inIframe = getBidIdParameter('in_iframe', bid.renderer.config.outstream_options);
|
|
482
496
|
if (inIframe && window.document.getElementById(inIframe).nodeName == 'IFRAME') {
|
|
483
497
|
const rawframe = window.document.getElementById(inIframe);
|
|
484
498
|
let framedoc = rawframe.contentDocument;
|
|
@@ -487,7 +501,7 @@ function outstreamRender(bid) {
|
|
|
487
501
|
}
|
|
488
502
|
framedoc.body.appendChild(script);
|
|
489
503
|
} else {
|
|
490
|
-
const slot =
|
|
504
|
+
const slot = getBidIdParameter('slot', bid.renderer.config.outstream_options);
|
|
491
505
|
if (slot && window.document.getElementById(slot)) {
|
|
492
506
|
window.document.getElementById(slot).appendChild(script);
|
|
493
507
|
} else {
|
|
@@ -495,7 +509,7 @@ function outstreamRender(bid) {
|
|
|
495
509
|
}
|
|
496
510
|
}
|
|
497
511
|
} catch (err) {
|
|
498
|
-
|
|
512
|
+
logError('[SPOTX][renderer] Error:' + err.message)
|
|
499
513
|
}
|
|
500
514
|
}
|
|
501
515
|
}
|