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
package/modules/ixBidAdapter.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { deepAccess, parseGPTSingleSizeArray, inIframe, deepClone, logError, logWarn, isFn, contains, isInteger, isArray, deepSetValue, parseQueryStringParameters, isEmpty, mergeDeep, convertTypes } from '../src/utils.js';
|
|
2
2
|
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
3
3
|
import { config } from '../src/config.js';
|
|
4
4
|
import find from 'core-js-pure/features/array/find.js';
|
|
@@ -83,17 +83,17 @@ const VIDEO_PARAMS_ALLOW_LIST = [
|
|
|
83
83
|
function bidToBannerImp(bid) {
|
|
84
84
|
const imp = bidToImp(bid);
|
|
85
85
|
imp.banner = {};
|
|
86
|
-
const impSize =
|
|
86
|
+
const impSize = deepAccess(bid, 'params.size');
|
|
87
87
|
if (impSize) {
|
|
88
88
|
imp.banner.w = impSize[0];
|
|
89
89
|
imp.banner.h = impSize[1];
|
|
90
90
|
// populate sid with size if not id
|
|
91
|
-
if (!
|
|
92
|
-
imp.ext.sid =
|
|
91
|
+
if (!deepAccess(imp, 'ext.sid')) {
|
|
92
|
+
imp.ext.sid = parseGPTSingleSizeArray(impSize);
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
imp.banner.topframe =
|
|
96
|
+
imp.banner.topframe = inIframe() ? 0 : 1;
|
|
97
97
|
|
|
98
98
|
_applyFloor(bid, imp, BANNER);
|
|
99
99
|
|
|
@@ -108,14 +108,14 @@ function bidToBannerImp(bid) {
|
|
|
108
108
|
*/
|
|
109
109
|
function bidToVideoImp(bid) {
|
|
110
110
|
const imp = bidToImp(bid);
|
|
111
|
-
const videoAdUnitRef =
|
|
112
|
-
const videoParamRef =
|
|
111
|
+
const videoAdUnitRef = deepAccess(bid, 'mediaTypes.video');
|
|
112
|
+
const videoParamRef = deepAccess(bid, 'params.video');
|
|
113
113
|
const videoParamErrors = checkVideoParams(videoAdUnitRef, videoParamRef);
|
|
114
114
|
if (videoParamErrors.length) {
|
|
115
115
|
return {};
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
-
imp.video = videoParamRef ?
|
|
118
|
+
imp.video = videoParamRef ? deepClone(bid.params.video) : {};
|
|
119
119
|
|
|
120
120
|
// copy all video properties to imp object
|
|
121
121
|
for (const adUnitProperty in videoAdUnitRef) {
|
|
@@ -125,7 +125,7 @@ function bidToVideoImp(bid) {
|
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
if (imp.video.minduration > imp.video.maxduration) {
|
|
128
|
-
|
|
128
|
+
logError(`IX Bid Adapter: video minduration [${imp.video.minduration}] cannot be greater than video maxduration [${imp.video.maxduration}]`);
|
|
129
129
|
return {};
|
|
130
130
|
}
|
|
131
131
|
|
|
@@ -138,21 +138,21 @@ function bidToVideoImp(bid) {
|
|
|
138
138
|
} else if (context === OUTSTREAM) {
|
|
139
139
|
imp.video.placement = 4;
|
|
140
140
|
} else {
|
|
141
|
-
|
|
141
|
+
logWarn(`IX Bid Adapter: Video context '${context}' is not supported`);
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
if (!(imp.video.w && imp.video.h)) {
|
|
146
146
|
// Getting impression Size
|
|
147
|
-
const impSize = getFirstSize(
|
|
147
|
+
const impSize = getFirstSize(deepAccess(imp, 'video.playerSize')) || getFirstSize(deepAccess(bid, 'params.size'));
|
|
148
148
|
if (impSize) {
|
|
149
149
|
imp.video.w = impSize[0];
|
|
150
150
|
imp.video.h = impSize[1];
|
|
151
|
-
if (!(
|
|
152
|
-
imp.ext.sid =
|
|
151
|
+
if (!(deepAccess(imp, 'ext.sid'))) {
|
|
152
|
+
imp.ext.sid = parseGPTSingleSizeArray(impSize);
|
|
153
153
|
}
|
|
154
154
|
} else {
|
|
155
|
-
|
|
155
|
+
logWarn('IX Bid Adapter: Video size is missing in [mediaTypes.video] missing');
|
|
156
156
|
return {};
|
|
157
157
|
}
|
|
158
158
|
}
|
|
@@ -180,7 +180,7 @@ function bidToImp(bid) {
|
|
|
180
180
|
imp.ext.sid = String(bid.params.id);
|
|
181
181
|
}
|
|
182
182
|
|
|
183
|
-
const dfpAdUnitCode =
|
|
183
|
+
const dfpAdUnitCode = deepAccess(bid, 'ortb2Imp.ext.data.adserver.adslot');
|
|
184
184
|
if (dfpAdUnitCode) {
|
|
185
185
|
imp.ext.dfp_ad_unit_code = dfpAdUnitCode;
|
|
186
186
|
}
|
|
@@ -202,11 +202,11 @@ function _applyFloor(bid, imp, mediaType) {
|
|
|
202
202
|
adapterFloor = { floor: bid.params.bidFloor, currency: bid.params.bidFloorCur };
|
|
203
203
|
}
|
|
204
204
|
|
|
205
|
-
if (
|
|
205
|
+
if (isFn(bid.getFloor)) {
|
|
206
206
|
let _mediaType = '*';
|
|
207
207
|
let _size = '*';
|
|
208
208
|
|
|
209
|
-
if (mediaType &&
|
|
209
|
+
if (mediaType && contains(SUPPORTED_AD_TYPES, mediaType)) {
|
|
210
210
|
const { w: width, h: height } = imp[mediaType];
|
|
211
211
|
_mediaType = mediaType;
|
|
212
212
|
_size = [width, height];
|
|
@@ -218,7 +218,7 @@ function _applyFloor(bid, imp, mediaType) {
|
|
|
218
218
|
});
|
|
219
219
|
} catch (err) {
|
|
220
220
|
// continue with no module floors
|
|
221
|
-
|
|
221
|
+
logWarn('priceFloors module call getFloor failed, error : ', err);
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
224
|
|
|
@@ -243,8 +243,8 @@ function _applyFloor(bid, imp, mediaType) {
|
|
|
243
243
|
*/
|
|
244
244
|
function parseBid(rawBid, currency, bidRequest) {
|
|
245
245
|
const bid = {};
|
|
246
|
-
const isValidExpiry = !!((
|
|
247
|
-
const dealID =
|
|
246
|
+
const isValidExpiry = !!((deepAccess(rawBid, 'exp') && isInteger(rawBid.exp)));
|
|
247
|
+
const dealID = deepAccess(rawBid, 'dealid') || deepAccess(rawBid, 'ext.dealid');
|
|
248
248
|
|
|
249
249
|
if (PRICE_TO_DOLLAR_FACTOR.hasOwnProperty(currency)) {
|
|
250
250
|
bid.cpm = rawBid.price / PRICE_TO_DOLLAR_FACTOR[currency];
|
|
@@ -263,7 +263,7 @@ function parseBid(rawBid, currency, bidRequest) {
|
|
|
263
263
|
bid.creativeId = rawBid.hasOwnProperty('crid') ? rawBid.crid : '-';
|
|
264
264
|
|
|
265
265
|
// in the event of a video
|
|
266
|
-
if (
|
|
266
|
+
if (deepAccess(rawBid, 'ext.vasturl')) {
|
|
267
267
|
bid.vastUrl = rawBid.ext.vasturl
|
|
268
268
|
bid.width = bidRequest.video.w;
|
|
269
269
|
bid.height = bidRequest.video.h;
|
|
@@ -279,9 +279,9 @@ function parseBid(rawBid, currency, bidRequest) {
|
|
|
279
279
|
}
|
|
280
280
|
|
|
281
281
|
bid.meta = {};
|
|
282
|
-
bid.meta.networkId =
|
|
283
|
-
bid.meta.brandId =
|
|
284
|
-
bid.meta.brandName =
|
|
282
|
+
bid.meta.networkId = deepAccess(rawBid, 'ext.dspid');
|
|
283
|
+
bid.meta.brandId = deepAccess(rawBid, 'ext.advbrandid');
|
|
284
|
+
bid.meta.brandName = deepAccess(rawBid, 'ext.advbrand');
|
|
285
285
|
if (rawBid.adomain && rawBid.adomain.length > 0) {
|
|
286
286
|
bid.meta.advertiserDomains = rawBid.adomain;
|
|
287
287
|
}
|
|
@@ -296,7 +296,7 @@ function parseBid(rawBid, currency, bidRequest) {
|
|
|
296
296
|
* @return {boolean} True if this is a valid size format, and false otherwise.
|
|
297
297
|
*/
|
|
298
298
|
function isValidSize(size) {
|
|
299
|
-
return Array.isArray(size) && size.length === 2 &&
|
|
299
|
+
return Array.isArray(size) && size.length === 2 && isInteger(size[0]) && isInteger(size[1]);
|
|
300
300
|
}
|
|
301
301
|
|
|
302
302
|
/**
|
|
@@ -330,7 +330,7 @@ function checkVideoParams(mediaTypeVideoRef, paramsVideoRef) {
|
|
|
330
330
|
const errorList = [];
|
|
331
331
|
|
|
332
332
|
if (!mediaTypeVideoRef) {
|
|
333
|
-
|
|
333
|
+
logWarn('IX Bid Adapter: mediaTypes.video is the preferred location for video params in ad unit');
|
|
334
334
|
}
|
|
335
335
|
|
|
336
336
|
for (let property of REQUIRED_VIDEO_PARAMS) {
|
|
@@ -416,9 +416,9 @@ function getBidRequest(id, impressions, validBidRequests) {
|
|
|
416
416
|
function getEidInfo(allEids, flocData) {
|
|
417
417
|
let toSend = [];
|
|
418
418
|
let seenSources = {};
|
|
419
|
-
if (
|
|
419
|
+
if (isArray(allEids)) {
|
|
420
420
|
for (const eid of allEids) {
|
|
421
|
-
if (SOURCE_RTI_MAPPING[eid.source] &&
|
|
421
|
+
if (SOURCE_RTI_MAPPING[eid.source] && deepAccess(eid, 'uids.0')) {
|
|
422
422
|
seenSources[eid.source] = true;
|
|
423
423
|
eid.uids[0].ext = {
|
|
424
424
|
rtiPartner: SOURCE_RTI_MAPPING[eid.source]
|
|
@@ -454,7 +454,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
|
454
454
|
// Always use secure HTTPS protocol.
|
|
455
455
|
let baseUrl = SECURE_BID_URL;
|
|
456
456
|
// Get ids from Prebid User ID Modules
|
|
457
|
-
let eidInfo = getEidInfo(
|
|
457
|
+
let eidInfo = getEidInfo(deepAccess(validBidRequests, '0.userIdAsEids'), deepAccess(validBidRequests, '0.userId.flocId'));
|
|
458
458
|
let userEids = eidInfo.toSend;
|
|
459
459
|
|
|
460
460
|
// RTI ids will be included in the bid request if the function getIdentityInfo() is loaded
|
|
@@ -543,7 +543,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
|
543
543
|
}
|
|
544
544
|
|
|
545
545
|
if (bidderRequest.uspConsent) {
|
|
546
|
-
|
|
546
|
+
deepSetValue(r, 'regs.ext.us_privacy', bidderRequest.uspConsent);
|
|
547
547
|
}
|
|
548
548
|
|
|
549
549
|
if (bidderRequest.refererInfo) {
|
|
@@ -552,7 +552,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
|
552
552
|
}
|
|
553
553
|
|
|
554
554
|
if (config.getConfig('coppa')) {
|
|
555
|
-
|
|
555
|
+
deepSetValue(r, 'regs.coppa', 1);
|
|
556
556
|
}
|
|
557
557
|
|
|
558
558
|
const payload = {};
|
|
@@ -572,10 +572,10 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
|
572
572
|
const requests = [];
|
|
573
573
|
let requestSequenceNumber = 0;
|
|
574
574
|
const transactionIds = Object.keys(impressions);
|
|
575
|
-
const baseRequestSize = `${baseUrl}${
|
|
575
|
+
const baseRequestSize = `${baseUrl}${parseQueryStringParameters({ ...payload, r: JSON.stringify(r) })}`.length;
|
|
576
576
|
|
|
577
577
|
if (baseRequestSize > MAX_REQUEST_SIZE) {
|
|
578
|
-
|
|
578
|
+
logError('ix bidder: Base request size has exceeded maximum request size.');
|
|
579
579
|
return requests;
|
|
580
580
|
}
|
|
581
581
|
|
|
@@ -605,7 +605,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
|
605
605
|
}
|
|
606
606
|
currentRequestSize += fpdRequestSize;
|
|
607
607
|
} else {
|
|
608
|
-
|
|
608
|
+
logError('ix bidder: IX config FPD request size has exceeded maximum request size.');
|
|
609
609
|
}
|
|
610
610
|
}
|
|
611
611
|
|
|
@@ -638,7 +638,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
|
638
638
|
|
|
639
639
|
let currentImpressionSize = encodeURIComponent(JSON.stringify({ impressionObjects })).length;
|
|
640
640
|
|
|
641
|
-
while (currentImpressionSize > remainingRequestSize) {
|
|
641
|
+
while (impressionObjects.length && currentImpressionSize > remainingRequestSize) {
|
|
642
642
|
wasAdUnitImpressionsTrimmed = true;
|
|
643
643
|
impressionObjects.pop();
|
|
644
644
|
currentImpressionSize = encodeURIComponent(JSON.stringify({ impressionObjects })).length;
|
|
@@ -673,7 +673,7 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
|
673
673
|
|
|
674
674
|
const fpd = config.getConfig('ortb2') || {};
|
|
675
675
|
|
|
676
|
-
if (!
|
|
676
|
+
if (!isEmpty(fpd) && !isFpdAdded) {
|
|
677
677
|
r.ext.ixdiag.fpd = true;
|
|
678
678
|
|
|
679
679
|
const site = { ...(fpd.site || fpd.context) };
|
|
@@ -692,28 +692,28 @@ function buildRequest(validBidRequests, bidderRequest, impressions, version) {
|
|
|
692
692
|
}
|
|
693
693
|
});
|
|
694
694
|
|
|
695
|
-
const clonedRObject =
|
|
695
|
+
const clonedRObject = deepClone(r);
|
|
696
696
|
|
|
697
|
-
clonedRObject.site =
|
|
698
|
-
clonedRObject.user =
|
|
697
|
+
clonedRObject.site = mergeDeep({}, clonedRObject.site, site);
|
|
698
|
+
clonedRObject.user = mergeDeep({}, clonedRObject.user, user);
|
|
699
699
|
|
|
700
|
-
const requestSize = `${baseUrl}${
|
|
700
|
+
const requestSize = `${baseUrl}${parseQueryStringParameters({ ...payload, r: JSON.stringify(clonedRObject) })}`.length;
|
|
701
701
|
|
|
702
702
|
if (requestSize < MAX_REQUEST_SIZE) {
|
|
703
|
-
r.site =
|
|
704
|
-
r.user =
|
|
703
|
+
r.site = mergeDeep({}, r.site, site);
|
|
704
|
+
r.user = mergeDeep({}, r.user, user);
|
|
705
705
|
isFpdAdded = true;
|
|
706
706
|
const fpdRequestSize = encodeURIComponent(JSON.stringify({ ...site, ...user })).length;
|
|
707
707
|
currentRequestSize += fpdRequestSize;
|
|
708
708
|
} else {
|
|
709
|
-
|
|
709
|
+
logError('ix bidder: FPD request size has exceeded maximum request size.');
|
|
710
710
|
}
|
|
711
711
|
}
|
|
712
712
|
|
|
713
713
|
const isLastAdUnit = adUnitIndex === transactionIds.length - 1;
|
|
714
714
|
|
|
715
715
|
if (wasAdUnitImpressionsTrimmed || isLastAdUnit) {
|
|
716
|
-
const clonedPayload =
|
|
716
|
+
const clonedPayload = deepClone(payload);
|
|
717
717
|
if (!isLastAdUnit || requestSequenceNumber) {
|
|
718
718
|
r.ext.ixdiag.sn = requestSequenceNumber;
|
|
719
719
|
clonedPayload.sn = requestSequenceNumber;
|
|
@@ -778,30 +778,30 @@ function buildIXDiag(validBidRequests) {
|
|
|
778
778
|
for (let i = 0; i < adUnitMap.length; i++) {
|
|
779
779
|
var bid = validBidRequests.filter(bidRequest => bidRequest.transactionId === adUnitMap[i])[0];
|
|
780
780
|
|
|
781
|
-
if (
|
|
781
|
+
if (deepAccess(bid, 'mediaTypes')) {
|
|
782
782
|
if (Object.keys(bid.mediaTypes).length > 1) {
|
|
783
783
|
ixdiag.mfu++;
|
|
784
784
|
}
|
|
785
785
|
|
|
786
|
-
if (
|
|
786
|
+
if (deepAccess(bid, 'mediaTypes.native')) {
|
|
787
787
|
ixdiag.nu++;
|
|
788
788
|
}
|
|
789
789
|
|
|
790
|
-
if (
|
|
790
|
+
if (deepAccess(bid, 'mediaTypes.banner')) {
|
|
791
791
|
ixdiag.bu++;
|
|
792
792
|
}
|
|
793
793
|
|
|
794
|
-
if (
|
|
794
|
+
if (deepAccess(bid, 'mediaTypes.video.context') === 'outstream') {
|
|
795
795
|
ixdiag.ou++;
|
|
796
796
|
// renderer only needed for outstream
|
|
797
797
|
|
|
798
|
-
const hasRenderer = typeof (
|
|
798
|
+
const hasRenderer = typeof (deepAccess(bid, 'renderer') || deepAccess(bid, 'mediaTypes.video.renderer')) === 'object';
|
|
799
799
|
|
|
800
800
|
// if any one ad unit is missing renderer, set ren status to false in diag
|
|
801
|
-
ixdiag.ren = ixdiag.ren && hasRenderer ? (
|
|
801
|
+
ixdiag.ren = ixdiag.ren && hasRenderer ? (deepAccess(ixdiag, 'ren')) : hasRenderer;
|
|
802
802
|
}
|
|
803
803
|
|
|
804
|
-
if (
|
|
804
|
+
if (deepAccess(bid, 'mediaTypes.video.context') === 'instream') {
|
|
805
805
|
ixdiag.iu++;
|
|
806
806
|
}
|
|
807
807
|
|
|
@@ -860,7 +860,7 @@ function createBannerImps(validBidRequest, missingBannerSizes, bannerImps) {
|
|
|
860
860
|
|
|
861
861
|
let imp = bidToBannerImp(validBidRequest);
|
|
862
862
|
|
|
863
|
-
const bannerSizeDefined = includesSize(
|
|
863
|
+
const bannerSizeDefined = includesSize(deepAccess(validBidRequest, 'mediaTypes.banner.sizes'), deepAccess(validBidRequest, 'params.size'));
|
|
864
864
|
|
|
865
865
|
// Create IX imps from params.size
|
|
866
866
|
if (bannerSizeDefined) {
|
|
@@ -884,7 +884,7 @@ function createBannerImps(validBidRequest, missingBannerSizes, bannerImps) {
|
|
|
884
884
|
* @returns {string}
|
|
885
885
|
*/
|
|
886
886
|
function detectParamsType(validBidRequest) {
|
|
887
|
-
if (
|
|
887
|
+
if (deepAccess(validBidRequest, 'params.video') && deepAccess(validBidRequest, 'mediaTypes.video')) {
|
|
888
888
|
return VIDEO;
|
|
889
889
|
}
|
|
890
890
|
|
|
@@ -909,8 +909,8 @@ function updateMissingSizes(validBidRequest, missingBannerSizes, imp) {
|
|
|
909
909
|
missingBannerSizes[transactionID].missingSizes = currentSizeList;
|
|
910
910
|
} else {
|
|
911
911
|
// New Ad Unit
|
|
912
|
-
if (
|
|
913
|
-
let sizeList =
|
|
912
|
+
if (deepAccess(validBidRequest, 'mediaTypes.banner.sizes')) {
|
|
913
|
+
let sizeList = deepClone(validBidRequest.mediaTypes.banner.sizes);
|
|
914
914
|
removeFromSizes(sizeList, validBidRequest.params.size);
|
|
915
915
|
let newAdUnitEntry = {
|
|
916
916
|
'missingSizes': sizeList,
|
|
@@ -928,8 +928,8 @@ function updateMissingSizes(validBidRequest, missingBannerSizes, imp) {
|
|
|
928
928
|
* @return {object} newImp Updated impression object
|
|
929
929
|
*/
|
|
930
930
|
function createMissingBannerImp(bid, imp, newSize) {
|
|
931
|
-
const newImp =
|
|
932
|
-
newImp.ext.sid =
|
|
931
|
+
const newImp = deepClone(imp);
|
|
932
|
+
newImp.ext.sid = parseGPTSingleSizeArray(newSize);
|
|
933
933
|
newImp.banner.w = newSize[0];
|
|
934
934
|
newImp.banner.h = newSize[1];
|
|
935
935
|
|
|
@@ -969,7 +969,7 @@ function createRenderer (id) {
|
|
|
969
969
|
try {
|
|
970
970
|
renderer.setRender(outstreamRenderer);
|
|
971
971
|
} catch (err) {
|
|
972
|
-
|
|
972
|
+
logWarn('Prebid Error calling setRender on renderer', err);
|
|
973
973
|
}
|
|
974
974
|
|
|
975
975
|
return renderer;
|
|
@@ -993,19 +993,19 @@ export const spec = {
|
|
|
993
993
|
* @return {boolean} True if this is a valid bid, and false otherwise.
|
|
994
994
|
*/
|
|
995
995
|
isBidRequestValid: function (bid) {
|
|
996
|
-
const paramsVideoRef =
|
|
997
|
-
const paramsSize =
|
|
998
|
-
const mediaTypeBannerSizes =
|
|
999
|
-
const mediaTypeVideoRef =
|
|
1000
|
-
const mediaTypeVideoPlayerSize =
|
|
996
|
+
const paramsVideoRef = deepAccess(bid, 'params.video');
|
|
997
|
+
const paramsSize = deepAccess(bid, 'params.size');
|
|
998
|
+
const mediaTypeBannerSizes = deepAccess(bid, 'mediaTypes.banner.sizes');
|
|
999
|
+
const mediaTypeVideoRef = deepAccess(bid, 'mediaTypes.video');
|
|
1000
|
+
const mediaTypeVideoPlayerSize = deepAccess(bid, 'mediaTypes.video.playerSize');
|
|
1001
1001
|
const hasBidFloor = bid.params.hasOwnProperty('bidFloor');
|
|
1002
1002
|
const hasBidFloorCur = bid.params.hasOwnProperty('bidFloorCur');
|
|
1003
1003
|
|
|
1004
|
-
if (bid.hasOwnProperty('mediaType') && !(
|
|
1004
|
+
if (bid.hasOwnProperty('mediaType') && !(contains(SUPPORTED_AD_TYPES, bid.mediaType))) {
|
|
1005
1005
|
return false;
|
|
1006
1006
|
}
|
|
1007
1007
|
|
|
1008
|
-
if (
|
|
1008
|
+
if (deepAccess(bid, 'mediaTypes.banner') && !mediaTypeBannerSizes) {
|
|
1009
1009
|
return false;
|
|
1010
1010
|
}
|
|
1011
1011
|
|
|
@@ -1013,26 +1013,26 @@ export const spec = {
|
|
|
1013
1013
|
// since there is an ix bidder level size, make sure its valid
|
|
1014
1014
|
const ixSize = getFirstSize(paramsSize);
|
|
1015
1015
|
if (!ixSize) {
|
|
1016
|
-
|
|
1016
|
+
logError('ix bidder params: size has invalid format.');
|
|
1017
1017
|
return false;
|
|
1018
1018
|
}
|
|
1019
1019
|
// check if the ix bidder level size, is present in ad unit level
|
|
1020
1020
|
if (!includesSize(bid.sizes, ixSize) &&
|
|
1021
1021
|
!(includesSize(mediaTypeVideoPlayerSize, ixSize)) &&
|
|
1022
1022
|
!(includesSize(mediaTypeBannerSizes, ixSize))) {
|
|
1023
|
-
|
|
1023
|
+
logError('ix bidder params: bid size is not included in ad unit sizes or player size.');
|
|
1024
1024
|
return false;
|
|
1025
1025
|
}
|
|
1026
1026
|
}
|
|
1027
1027
|
|
|
1028
1028
|
if (typeof bid.params.siteId !== 'string' && typeof bid.params.siteId !== 'number') {
|
|
1029
|
-
|
|
1029
|
+
logError('ix bidder params: siteId must be string or number value.');
|
|
1030
1030
|
return false;
|
|
1031
1031
|
}
|
|
1032
1032
|
|
|
1033
1033
|
if (hasBidFloor || hasBidFloorCur) {
|
|
1034
1034
|
if (!(hasBidFloor && hasBidFloorCur && isValidBidFloorParams(bid.params.bidFloor, bid.params.bidFloorCur))) {
|
|
1035
|
-
|
|
1035
|
+
logError('ix bidder params: bidFloor / bidFloorCur parameter has invalid format.');
|
|
1036
1036
|
return false;
|
|
1037
1037
|
}
|
|
1038
1038
|
}
|
|
@@ -1041,7 +1041,7 @@ export const spec = {
|
|
|
1041
1041
|
const errorList = checkVideoParams(mediaTypeVideoRef, paramsVideoRef);
|
|
1042
1042
|
if (errorList.length) {
|
|
1043
1043
|
errorList.forEach((err) => {
|
|
1044
|
-
|
|
1044
|
+
logError(err);
|
|
1045
1045
|
});
|
|
1046
1046
|
return false;
|
|
1047
1047
|
}
|
|
@@ -1065,7 +1065,7 @@ export const spec = {
|
|
|
1065
1065
|
|
|
1066
1066
|
// Step 1: Create impresssions from IX params
|
|
1067
1067
|
validBidRequests.forEach((validBidRequest) => {
|
|
1068
|
-
const adUnitMediaTypes = Object.keys(
|
|
1068
|
+
const adUnitMediaTypes = Object.keys(deepAccess(validBidRequest, 'mediaTypes', {}))
|
|
1069
1069
|
|
|
1070
1070
|
switch (detectParamsType(validBidRequest)) {
|
|
1071
1071
|
case BANNER:
|
|
@@ -1156,7 +1156,7 @@ export const spec = {
|
|
|
1156
1156
|
const bidRequest = getBidRequest(innerBids[j].impid, requestBid.imp, bidderRequest.validBidRequests);
|
|
1157
1157
|
bid = parseBid(innerBids[j], responseBody.cur, bidRequest);
|
|
1158
1158
|
|
|
1159
|
-
if (!
|
|
1159
|
+
if (!deepAccess(bid, 'mediaTypes.video.renderer') && deepAccess(bid, 'mediaTypes.video.context') === 'outstream') {
|
|
1160
1160
|
bid.mediaTypes.video.renderer = createRenderer(innerBids[j].bidId);
|
|
1161
1161
|
}
|
|
1162
1162
|
|
|
@@ -1174,7 +1174,7 @@ export const spec = {
|
|
|
1174
1174
|
* @return {Object} params bid params
|
|
1175
1175
|
*/
|
|
1176
1176
|
transformBidParams: function (params, isOpenRtb) {
|
|
1177
|
-
return
|
|
1177
|
+
return convertTypes({
|
|
1178
1178
|
'siteID': 'number'
|
|
1179
1179
|
}, params);
|
|
1180
1180
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { logWarn, parseUrl, deepAccess, isArray } from '../src/utils.js';
|
|
2
2
|
import { config } from '../src/config.js';
|
|
3
3
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import { getStorageManager } from '../src/storageManager.js';
|
|
@@ -95,7 +95,7 @@ function createRenderer_(bidAd, scriptUrl, createFcn) {
|
|
|
95
95
|
try {
|
|
96
96
|
renderer.setRender(createFcn);
|
|
97
97
|
} catch (err) {
|
|
98
|
-
|
|
98
|
+
logWarn('Prebid Error calling setRender on renderer', err);
|
|
99
99
|
}
|
|
100
100
|
return renderer;
|
|
101
101
|
}
|
|
@@ -110,7 +110,7 @@ function getMiscDims_() {
|
|
|
110
110
|
let refererInfo_ = getRefererInfo();
|
|
111
111
|
let url_ = ((refererInfo_ && refererInfo_.referer) ? refererInfo_.referer : window.location.href);
|
|
112
112
|
ret.pageurl = url_;
|
|
113
|
-
ret.domain =
|
|
113
|
+
ret.domain = parseUrl(url_).host;
|
|
114
114
|
ret.device = getDevice_();
|
|
115
115
|
} catch (error) {}
|
|
116
116
|
return ret;
|
|
@@ -194,8 +194,8 @@ export const spec = {
|
|
|
194
194
|
device: miscDims.device,
|
|
195
195
|
pageurl: encodeURIComponent(miscDims.pageurl),
|
|
196
196
|
domain: encodeURIComponent(miscDims.domain),
|
|
197
|
-
auctionid:
|
|
198
|
-
timeout:
|
|
197
|
+
auctionid: deepAccess(timeoutData, '0.auctionId'),
|
|
198
|
+
timeout: deepAccess(timeoutData, '0.timeout'),
|
|
199
199
|
count: timeoutData.length
|
|
200
200
|
});
|
|
201
201
|
},
|
|
@@ -224,7 +224,7 @@ export const spec = {
|
|
|
224
224
|
},
|
|
225
225
|
|
|
226
226
|
interpretResponse: function(response, bidRequest) {
|
|
227
|
-
if (response && response.body &&
|
|
227
|
+
if (response && response.body && isArray(response.body.bids)) {
|
|
228
228
|
const bidResponses = [];
|
|
229
229
|
response.body.bids.forEach(function(oneBid) {
|
|
230
230
|
let bnd = {};
|
|
@@ -4,7 +4,7 @@ import { deepAccess } from '../src/utils.js';
|
|
|
4
4
|
const BIDDER_CODE = 'justpremium'
|
|
5
5
|
const GVLID = 62
|
|
6
6
|
const ENDPOINT_URL = 'https://pre.ads.justpremium.com/v/2.0/t/xhr'
|
|
7
|
-
const JP_ADAPTER_VERSION = '1.
|
|
7
|
+
const JP_ADAPTER_VERSION = '1.8'
|
|
8
8
|
const pixels = []
|
|
9
9
|
|
|
10
10
|
export const spec = {
|
|
@@ -65,6 +65,10 @@ export const spec = {
|
|
|
65
65
|
jp_adapter: JP_ADAPTER_VERSION
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
+
if (validBidRequests[0].schain) {
|
|
69
|
+
payload.schain = validBidRequests[0].schain;
|
|
70
|
+
}
|
|
71
|
+
|
|
68
72
|
const payloadString = JSON.stringify(payload)
|
|
69
73
|
|
|
70
74
|
return {
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {config} from '../src/config.js';
|
|
3
|
-
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
1
|
+
import { _each } from '../src/utils.js';
|
|
2
|
+
import { config } from '../src/config.js';
|
|
3
|
+
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import { getStorageManager } from '../src/storageManager.js';
|
|
5
|
+
import { BANNER, VIDEO } from '../src/mediaTypes.js';
|
|
5
6
|
|
|
6
7
|
const BIDDER_CODE = 'kargo';
|
|
7
8
|
const HOST = 'https://krk.kargo.com';
|
|
8
9
|
const SYNC = 'https://crb.kargo.com/api/v1/initsyncrnd/{UUID}?seed={SEED}&idx={INDEX}&gdpr={GDPR}&gdpr_consent={GDPR_CONSENT}&us_privacy={US_PRIVACY}';
|
|
9
10
|
const SYNC_COUNT = 5;
|
|
10
11
|
const GVLID = 972;
|
|
12
|
+
const SUPPORTED_MEDIA_TYPES = [BANNER, VIDEO]
|
|
11
13
|
const storage = getStorageManager(GVLID, BIDDER_CODE);
|
|
12
14
|
|
|
13
15
|
let sessionId,
|
|
@@ -21,34 +23,38 @@ export const spec = {
|
|
|
21
23
|
if (!bid || !bid.params) {
|
|
22
24
|
return false;
|
|
23
25
|
}
|
|
26
|
+
|
|
24
27
|
return !!bid.params.placementId;
|
|
25
28
|
},
|
|
26
29
|
buildRequests: function(validBidRequests, bidderRequest) {
|
|
27
30
|
const currencyObj = config.getConfig('currency');
|
|
28
31
|
const currency = (currencyObj && currencyObj.adServerCurrency) || 'USD';
|
|
29
|
-
const
|
|
32
|
+
const bidIDs = {};
|
|
30
33
|
const bidSizes = {};
|
|
31
|
-
|
|
32
|
-
|
|
34
|
+
|
|
35
|
+
_each(validBidRequests, bid => {
|
|
36
|
+
bidIDs[bid.bidId] = bid.params.placementId;
|
|
33
37
|
bidSizes[bid.bidId] = bid.sizes;
|
|
34
38
|
});
|
|
39
|
+
|
|
35
40
|
let tdid;
|
|
36
41
|
if (validBidRequests.length > 0 && validBidRequests[0].userId && validBidRequests[0].userId.tdid) {
|
|
37
42
|
tdid = validBidRequests[0].userId.tdid;
|
|
38
43
|
}
|
|
44
|
+
|
|
39
45
|
const transformedParams = Object.assign({}, {
|
|
40
46
|
sessionId: spec._getSessionId(),
|
|
41
47
|
requestCount: spec._getRequestCount(),
|
|
42
48
|
timeout: bidderRequest.timeout,
|
|
43
|
-
currency
|
|
49
|
+
currency,
|
|
44
50
|
cpmGranularity: 1,
|
|
45
51
|
timestamp: (new Date()).getTime(),
|
|
46
52
|
cpmRange: {
|
|
47
53
|
floor: 0,
|
|
48
54
|
ceil: 20
|
|
49
55
|
},
|
|
50
|
-
bidIDs
|
|
51
|
-
bidSizes
|
|
56
|
+
bidIDs,
|
|
57
|
+
bidSizes,
|
|
52
58
|
prebidRawBidRequests: validBidRequests
|
|
53
59
|
}, spec._getAllMetadata(tdid, bidderRequest.uspConsent, bidderRequest.gdprConsent));
|
|
54
60
|
const encodedParams = encodeURIComponent(JSON.stringify(transformedParams));
|
|
@@ -111,6 +117,7 @@ export const spec = {
|
|
|
111
117
|
}
|
|
112
118
|
return syncs;
|
|
113
119
|
},
|
|
120
|
+
supportedMediaTypes: SUPPORTED_MEDIA_TYPES,
|
|
114
121
|
|
|
115
122
|
// PRIVATE
|
|
116
123
|
_readCookie(name) {
|
|
@@ -19,5 +19,25 @@ Please use `kargo` as the bidder code. Also, you *must* test on a mobile device,
|
|
|
19
19
|
placementId: '_m1Xt2E5dez'
|
|
20
20
|
}
|
|
21
21
|
}]
|
|
22
|
+
},{
|
|
23
|
+
code: 'div-gpt-ad-video-1',
|
|
24
|
+
sizes: [[640,480]],
|
|
25
|
+
mediaTypes: {
|
|
26
|
+
video: {
|
|
27
|
+
playerSize: [640, 480],
|
|
28
|
+
context: 'instream'
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
bids: [{
|
|
32
|
+
bidder: 'kargo',
|
|
33
|
+
params: {
|
|
34
|
+
placementId: '_bLIt2QMYee',
|
|
35
|
+
video: {
|
|
36
|
+
skipppable: true,
|
|
37
|
+
playback_method: ['auto_play_sound_off'],
|
|
38
|
+
mimes: ['video/mp4']
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}]
|
|
22
42
|
}];
|
|
23
43
|
```
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @requires module:modules/userId
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import
|
|
8
|
+
import { logError, logInfo } from '../src/utils.js';
|
|
9
9
|
import {ajax} from '../src/ajax.js';
|
|
10
10
|
import {submodule} from '../src/hook.js';
|
|
11
11
|
import {coppaDataHandler, uspDataHandler} from '../src/adapterManager.js';
|
|
@@ -111,7 +111,7 @@ function encodeTime(now, len) {
|
|
|
111
111
|
* @returns {Error}
|
|
112
112
|
*/
|
|
113
113
|
function createError(message) {
|
|
114
|
-
|
|
114
|
+
logError(message);
|
|
115
115
|
const err = new Error(message);
|
|
116
116
|
err.source = 'kinessoId';
|
|
117
117
|
return err;
|
|
@@ -147,10 +147,10 @@ function detectPrng(root) {
|
|
|
147
147
|
function syncId(storedId) {
|
|
148
148
|
return {
|
|
149
149
|
success: function (responseBody) {
|
|
150
|
-
|
|
150
|
+
logInfo('KinessoId: id to be synced: ' + storedId);
|
|
151
151
|
},
|
|
152
152
|
error: function () {
|
|
153
|
-
|
|
153
|
+
logInfo('KinessoId: Sync error for id : ' + storedId);
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
}
|
|
@@ -165,7 +165,7 @@ function encodeId(value) {
|
|
|
165
165
|
const knssoId = (value && typeof value === 'string') ? value : undefined;
|
|
166
166
|
if (knssoId) {
|
|
167
167
|
result.kpuid = knssoId;
|
|
168
|
-
|
|
168
|
+
logInfo('KinessoId: Decoded value ' + JSON.stringify(result));
|
|
169
169
|
return result;
|
|
170
170
|
}
|
|
171
171
|
return knssoId;
|
|
@@ -217,17 +217,17 @@ export const kinessoIdSubmodule = {
|
|
|
217
217
|
getId(config, consentData) {
|
|
218
218
|
const configParams = (config && config.params) || {};
|
|
219
219
|
if (!configParams || typeof configParams.accountid !== 'number') {
|
|
220
|
-
|
|
220
|
+
logError('User ID - KinessoId submodule requires a valid accountid to be defined');
|
|
221
221
|
return;
|
|
222
222
|
}
|
|
223
223
|
const coppa = coppaDataHandler.getCoppa();
|
|
224
224
|
if (coppa) {
|
|
225
|
-
|
|
225
|
+
logInfo('KinessoId: IDs not provided for coppa requests, exiting KinessoId');
|
|
226
226
|
return;
|
|
227
227
|
}
|
|
228
228
|
const accountId = configParams.accountid;
|
|
229
229
|
const knnsoId = id();
|
|
230
|
-
|
|
230
|
+
logInfo('KinessoId: generated id ' + knnsoId);
|
|
231
231
|
const kinessoIdPayload = {};
|
|
232
232
|
kinessoIdPayload.id = knnsoId;
|
|
233
233
|
const payloadString = JSON.stringify(kinessoIdPayload);
|