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/userId/index.js
CHANGED
|
@@ -133,14 +133,16 @@
|
|
|
133
133
|
import find from 'core-js-pure/features/array/find.js';
|
|
134
134
|
import { config } from '../../src/config.js';
|
|
135
135
|
import events from '../../src/events.js';
|
|
136
|
-
import * as utils from '../../src/utils.js';
|
|
137
136
|
import { getGlobal } from '../../src/prebidGlobal.js';
|
|
138
137
|
import { gdprDataHandler } from '../../src/adapterManager.js';
|
|
139
138
|
import CONSTANTS from '../../src/constants.json';
|
|
140
139
|
import { module, hook } from '../../src/hook.js';
|
|
141
140
|
import { createEidsArray, buildEidPermissions } from './eids.js';
|
|
142
141
|
import { getCoreStorageManager } from '../../src/storageManager.js';
|
|
143
|
-
import {
|
|
142
|
+
import {
|
|
143
|
+
getPrebidInternal, isPlainObject, logError, isArray, cyrb53Hash, deepAccess, timestamp, delayExecution, logInfo, isFn,
|
|
144
|
+
logWarn, isEmptyStr, isNumber
|
|
145
|
+
} from '../../src/utils.js';
|
|
144
146
|
import includes from 'core-js-pure/features/array/includes.js';
|
|
145
147
|
|
|
146
148
|
const MODULE_NAME = 'User ID';
|
|
@@ -199,7 +201,7 @@ export function setStoredValue(submodule, value) {
|
|
|
199
201
|
const domainOverride = (typeof submodule.submodule.domainOverride === 'function') ? submodule.submodule.domainOverride() : null;
|
|
200
202
|
|
|
201
203
|
try {
|
|
202
|
-
const valueStr =
|
|
204
|
+
const valueStr = isPlainObject(value) ? JSON.stringify(value) : value;
|
|
203
205
|
const expiresStr = (new Date(Date.now() + (storage.expires * (60 * 60 * 24 * 1000)))).toUTCString();
|
|
204
206
|
if (storage.type === COOKIE) {
|
|
205
207
|
coreStorage.setCookie(storage.name, valueStr, expiresStr, 'Lax', domainOverride);
|
|
@@ -214,13 +216,13 @@ export function setStoredValue(submodule, value) {
|
|
|
214
216
|
}
|
|
215
217
|
}
|
|
216
218
|
} catch (error) {
|
|
217
|
-
|
|
219
|
+
logError(error);
|
|
218
220
|
}
|
|
219
221
|
}
|
|
220
222
|
|
|
221
223
|
function setPrebidServerEidPermissions(initializedSubmodules) {
|
|
222
224
|
let setEidPermissions = getPrebidInternal().setEidPermissions;
|
|
223
|
-
if (typeof setEidPermissions === 'function' &&
|
|
225
|
+
if (typeof setEidPermissions === 'function' && isArray(initializedSubmodules)) {
|
|
224
226
|
setEidPermissions(buildEidPermissions(initializedSubmodules));
|
|
225
227
|
}
|
|
226
228
|
}
|
|
@@ -253,7 +255,7 @@ function getStoredValue(storage, key = undefined) {
|
|
|
253
255
|
storedValue = JSON.parse(storedValue);
|
|
254
256
|
}
|
|
255
257
|
} catch (e) {
|
|
256
|
-
|
|
258
|
+
logError(e);
|
|
257
259
|
}
|
|
258
260
|
return storedValue;
|
|
259
261
|
}
|
|
@@ -278,7 +280,7 @@ function makeStoredConsentDataHash(consentData) {
|
|
|
278
280
|
storedConsentData.apiVersion = consentData.apiVersion;
|
|
279
281
|
}
|
|
280
282
|
|
|
281
|
-
return
|
|
283
|
+
return cyrb53Hash(JSON.stringify(storedConsentData));
|
|
282
284
|
}
|
|
283
285
|
|
|
284
286
|
/**
|
|
@@ -290,7 +292,7 @@ export function setStoredConsentData(consentData) {
|
|
|
290
292
|
const expiresStr = (new Date(Date.now() + (CONSENT_DATA_COOKIE_STORAGE_CONFIG.expires * (60 * 60 * 24 * 1000)))).toUTCString();
|
|
291
293
|
coreStorage.setCookie(CONSENT_DATA_COOKIE_STORAGE_CONFIG.name, makeStoredConsentDataHash(consentData), expiresStr, 'Lax');
|
|
292
294
|
} catch (error) {
|
|
293
|
-
|
|
295
|
+
logError(error);
|
|
294
296
|
}
|
|
295
297
|
}
|
|
296
298
|
|
|
@@ -302,7 +304,7 @@ function getStoredConsentData() {
|
|
|
302
304
|
try {
|
|
303
305
|
return coreStorage.getCookie(CONSENT_DATA_COOKIE_STORAGE_CONFIG.name);
|
|
304
306
|
} catch (e) {
|
|
305
|
-
|
|
307
|
+
logError(e);
|
|
306
308
|
}
|
|
307
309
|
}
|
|
308
310
|
|
|
@@ -332,10 +334,10 @@ function hasGDPRConsent(consentData) {
|
|
|
332
334
|
if (!consentData.consentString) {
|
|
333
335
|
return false;
|
|
334
336
|
}
|
|
335
|
-
if (consentData.apiVersion === 1 &&
|
|
337
|
+
if (consentData.apiVersion === 1 && deepAccess(consentData, 'vendorData.purposeConsents.1') === false) {
|
|
336
338
|
return false;
|
|
337
339
|
}
|
|
338
|
-
if (consentData.apiVersion === 2 &&
|
|
340
|
+
if (consentData.apiVersion === 2 && deepAccess(consentData, 'vendorData.purpose.consents.1') === false) {
|
|
339
341
|
return false;
|
|
340
342
|
}
|
|
341
343
|
}
|
|
@@ -363,7 +365,7 @@ export function findRootDomain(fullDomain = window.location.hostname) {
|
|
|
363
365
|
const TEST_COOKIE_VALUE = 'writeable';
|
|
364
366
|
do {
|
|
365
367
|
rootDomain = domainParts.slice(startIndex).join('.');
|
|
366
|
-
let expirationDate = new Date(
|
|
368
|
+
let expirationDate = new Date(timestamp() + 10 * 1000).toUTCString();
|
|
367
369
|
|
|
368
370
|
// Write a test cookie
|
|
369
371
|
coreStorage.setCookie(
|
|
@@ -403,7 +405,7 @@ export function findRootDomain(fullDomain = window.location.hostname) {
|
|
|
403
405
|
function processSubmoduleCallbacks(submodules, cb) {
|
|
404
406
|
let done = () => {};
|
|
405
407
|
if (cb) {
|
|
406
|
-
done =
|
|
408
|
+
done = delayExecution(() => {
|
|
407
409
|
clearTimeout(timeoutID);
|
|
408
410
|
cb();
|
|
409
411
|
}, submodules.length);
|
|
@@ -418,7 +420,7 @@ function processSubmoduleCallbacks(submodules, cb) {
|
|
|
418
420
|
// cache decoded value (this is copied to every adUnit bid)
|
|
419
421
|
submodule.idObj = submodule.submodule.decode(idObj, submodule.config);
|
|
420
422
|
} else {
|
|
421
|
-
|
|
423
|
+
logInfo(`${MODULE_NAME}: ${submodule.submodule.name} - request id responded with an empty value`);
|
|
422
424
|
}
|
|
423
425
|
done();
|
|
424
426
|
});
|
|
@@ -436,7 +438,7 @@ function getCombinedSubmoduleIds(submodules) {
|
|
|
436
438
|
if (!Array.isArray(submodules) || !submodules.length) {
|
|
437
439
|
return {};
|
|
438
440
|
}
|
|
439
|
-
const combinedSubmoduleIds = submodules.filter(i =>
|
|
441
|
+
const combinedSubmoduleIds = submodules.filter(i => isPlainObject(i.idObj) && Object.keys(i.idObj).length).reduce((carry, i) => {
|
|
440
442
|
Object.keys(i.idObj).forEach(key => {
|
|
441
443
|
carry[key] = i.idObj[key];
|
|
442
444
|
});
|
|
@@ -456,8 +458,8 @@ function getCombinedSubmoduleIdsForBidder(submodules, bidder) {
|
|
|
456
458
|
return {};
|
|
457
459
|
}
|
|
458
460
|
return submodules
|
|
459
|
-
.filter(i => !i.config.bidders || !
|
|
460
|
-
.filter(i =>
|
|
461
|
+
.filter(i => !i.config.bidders || !isArray(i.config.bidders) || includes(i.config.bidders, bidder))
|
|
462
|
+
.filter(i => isPlainObject(i.idObj) && Object.keys(i.idObj).length)
|
|
461
463
|
.reduce((carry, i) => {
|
|
462
464
|
Object.keys(i.idObj).forEach(key => {
|
|
463
465
|
carry[key] = i.idObj[key];
|
|
@@ -475,7 +477,7 @@ function addIdDataToAdUnitBids(adUnits, submodules) {
|
|
|
475
477
|
return;
|
|
476
478
|
}
|
|
477
479
|
adUnits.forEach(adUnit => {
|
|
478
|
-
if (adUnit.bids &&
|
|
480
|
+
if (adUnit.bids && isArray(adUnit.bids)) {
|
|
479
481
|
adUnit.bids.forEach(bid => {
|
|
480
482
|
const combinedSubmoduleIds = getCombinedSubmoduleIdsForBidder(submodules, bid.bidder);
|
|
481
483
|
if (Object.keys(combinedSubmoduleIds).length) {
|
|
@@ -500,7 +502,7 @@ function initializeSubmodulesAndExecuteCallbacks(continueAuction) {
|
|
|
500
502
|
if (initializedSubmodules.length) {
|
|
501
503
|
setPrebidServerEidPermissions(initializedSubmodules);
|
|
502
504
|
// list of submodules that have callbacks that need to be executed
|
|
503
|
-
const submodulesWithCallbacks = initializedSubmodules.filter(item =>
|
|
505
|
+
const submodulesWithCallbacks = initializedSubmodules.filter(item => isFn(item.callback));
|
|
504
506
|
|
|
505
507
|
if (submodulesWithCallbacks.length) {
|
|
506
508
|
if (continueAuction && auctionDelay > 0) {
|
|
@@ -513,7 +515,7 @@ function initializeSubmodulesAndExecuteCallbacks(continueAuction) {
|
|
|
513
515
|
continueAuction();
|
|
514
516
|
}
|
|
515
517
|
}
|
|
516
|
-
|
|
518
|
+
logInfo(`${MODULE_NAME} - auction delayed by ${auctionDelay} at most to fetch ids`);
|
|
517
519
|
|
|
518
520
|
timeoutID = setTimeout(continueCallback, auctionDelay);
|
|
519
521
|
processSubmoduleCallbacks(submodulesWithCallbacks, continueCallback);
|
|
@@ -596,7 +598,7 @@ function refreshUserIds(options, callback) {
|
|
|
596
598
|
// gdpr consent with purpose one is required, otherwise exit immediately
|
|
597
599
|
let {userIdModules, hasValidated} = validateGdprEnforcement(submodules, consentData);
|
|
598
600
|
if (!hasValidated && !hasGDPRConsent(consentData)) {
|
|
599
|
-
|
|
601
|
+
logWarn(`${MODULE_NAME} - gdpr permission not valid for local storage or cookies, exit module`);
|
|
600
602
|
return;
|
|
601
603
|
}
|
|
602
604
|
|
|
@@ -611,7 +613,7 @@ function refreshUserIds(options, callback) {
|
|
|
611
613
|
continue;
|
|
612
614
|
}
|
|
613
615
|
|
|
614
|
-
|
|
616
|
+
logInfo(`${MODULE_NAME} - refreshing ${submodule.submodule.name}`);
|
|
615
617
|
populateSubmoduleId(submodule, consentData, storedConsentData, true);
|
|
616
618
|
updateInitializedSubmodules(submodule);
|
|
617
619
|
|
|
@@ -619,7 +621,7 @@ function refreshUserIds(options, callback) {
|
|
|
619
621
|
setPrebidServerEidPermissions(initializedSubmodules);
|
|
620
622
|
}
|
|
621
623
|
|
|
622
|
-
if (
|
|
624
|
+
if (isFn(submodule.callback)) {
|
|
623
625
|
callbackSubmodules.push(submodule);
|
|
624
626
|
}
|
|
625
627
|
}
|
|
@@ -663,7 +665,7 @@ function populateSubmoduleId(submodule, consentData, storedConsentData, forceRef
|
|
|
663
665
|
response = submodule.submodule.extendId(submodule.config, consentData, storedId);
|
|
664
666
|
}
|
|
665
667
|
|
|
666
|
-
if (
|
|
668
|
+
if (isPlainObject(response)) {
|
|
667
669
|
if (response.id) {
|
|
668
670
|
// A getId/extendId result assumed to be valid user id data, which should be saved to users local storage or cookies
|
|
669
671
|
setStoredValue(submodule, response.id);
|
|
@@ -685,7 +687,7 @@ function populateSubmoduleId(submodule, consentData, storedConsentData, forceRef
|
|
|
685
687
|
submodule.idObj = submodule.config.value;
|
|
686
688
|
} else {
|
|
687
689
|
const response = submodule.submodule.getId(submodule.config, consentData, undefined);
|
|
688
|
-
if (
|
|
690
|
+
if (isPlainObject(response)) {
|
|
689
691
|
if (typeof response.callback === 'function') { submodule.callback = response.callback; }
|
|
690
692
|
if (response.id) { submodule.idObj = submodule.submodule.decode(response.id, submodule.config); }
|
|
691
693
|
}
|
|
@@ -701,7 +703,7 @@ function initSubmodules(submodules, consentData) {
|
|
|
701
703
|
// gdpr consent with purpose one is required, otherwise exit immediately
|
|
702
704
|
let { userIdModules, hasValidated } = validateGdprEnforcement(submodules, consentData);
|
|
703
705
|
if (!hasValidated && !hasGDPRConsent(consentData)) {
|
|
704
|
-
|
|
706
|
+
logWarn(`${MODULE_NAME} - gdpr permission not valid for local storage or cookies, exit module`);
|
|
705
707
|
return [];
|
|
706
708
|
}
|
|
707
709
|
|
|
@@ -746,17 +748,17 @@ function getValidSubmoduleConfigs(configRegistry, submoduleRegistry, activeStora
|
|
|
746
748
|
}
|
|
747
749
|
return configRegistry.reduce((carry, config) => {
|
|
748
750
|
// every submodule config obj must contain a valid 'name'
|
|
749
|
-
if (!config ||
|
|
751
|
+
if (!config || isEmptyStr(config.name)) {
|
|
750
752
|
return carry;
|
|
751
753
|
}
|
|
752
754
|
// Validate storage config contains 'type' and 'name' properties with non-empty string values
|
|
753
755
|
// 'type' must be a value currently enabled in the browser
|
|
754
756
|
if (config.storage &&
|
|
755
|
-
!
|
|
756
|
-
!
|
|
757
|
+
!isEmptyStr(config.storage.type) &&
|
|
758
|
+
!isEmptyStr(config.storage.name) &&
|
|
757
759
|
activeStorageTypes.indexOf(config.storage.type) !== -1) {
|
|
758
760
|
carry.push(config);
|
|
759
|
-
} else if (
|
|
761
|
+
} else if (isPlainObject(config.value)) {
|
|
760
762
|
carry.push(config);
|
|
761
763
|
} else if (!config.storage && !config.value) {
|
|
762
764
|
carry.push(config);
|
|
@@ -793,7 +795,7 @@ function updateSubmodules() {
|
|
|
793
795
|
if (!addedUserIdHook && submodules.length) {
|
|
794
796
|
// priority value 40 will load after consentManagement with a priority of 50
|
|
795
797
|
getGlobal().requestBids.before(requestBidsHook, 40);
|
|
796
|
-
|
|
798
|
+
logInfo(`${MODULE_NAME} - usersync config updated for ${submodules.length} submodules: `, submodules.map(a => a.submodule.name));
|
|
797
799
|
addedUserIdHook = true;
|
|
798
800
|
}
|
|
799
801
|
}
|
|
@@ -828,11 +830,11 @@ export function init(config) {
|
|
|
828
830
|
|
|
829
831
|
// exit immediately if opt out cookie or local storage keys exists.
|
|
830
832
|
if (validStorageTypes.indexOf(COOKIE) !== -1 && coreStorage.getCookie(PBJS_USER_ID_OPTOUT_NAME)) {
|
|
831
|
-
|
|
833
|
+
logInfo(`${MODULE_NAME} - opt-out cookie found, exit module`);
|
|
832
834
|
return;
|
|
833
835
|
}
|
|
834
836
|
if (validStorageTypes.indexOf(LOCAL_STORAGE) !== -1 && coreStorage.getDataFromLocalStorage(PBJS_USER_ID_OPTOUT_NAME)) {
|
|
835
|
-
|
|
837
|
+
logInfo(`${MODULE_NAME} - opt-out localStorage found, exit module`);
|
|
836
838
|
return;
|
|
837
839
|
}
|
|
838
840
|
|
|
@@ -842,8 +844,8 @@ export function init(config) {
|
|
|
842
844
|
const userSync = conf.userSync;
|
|
843
845
|
if (userSync && userSync.userIds) {
|
|
844
846
|
configRegistry = userSync.userIds;
|
|
845
|
-
syncDelay =
|
|
846
|
-
auctionDelay =
|
|
847
|
+
syncDelay = isNumber(userSync.syncDelay) ? userSync.syncDelay : DEFAULT_SYNC_DELAY;
|
|
848
|
+
auctionDelay = isNumber(userSync.auctionDelay) ? userSync.auctionDelay : NO_AUCTION_DELAY;
|
|
847
849
|
updateSubmodules();
|
|
848
850
|
}
|
|
849
851
|
});
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @module modules/firstPartyData
|
|
4
4
|
*/
|
|
5
5
|
import { config } from '../../src/config.js';
|
|
6
|
-
import
|
|
6
|
+
import { isEmpty, isNumber, logWarn, deepAccess } from '../../src/utils.js';
|
|
7
7
|
import { ORTB_MAP } from './config.js';
|
|
8
8
|
import { submodule } from '../../src/hook.js';
|
|
9
9
|
import { getStorageManager } from '../../src/storageManager.js';
|
|
@@ -19,9 +19,9 @@ let optout;
|
|
|
19
19
|
function isEmptyData(data) {
|
|
20
20
|
let check = true;
|
|
21
21
|
|
|
22
|
-
if (typeof data === 'object' && !
|
|
22
|
+
if (typeof data === 'object' && !isEmpty(data)) {
|
|
23
23
|
check = false;
|
|
24
|
-
} else if (typeof data !== 'object' && (
|
|
24
|
+
} else if (typeof data !== 'object' && (isNumber(data) || data)) {
|
|
25
25
|
check = false;
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -42,7 +42,7 @@ function getRequiredData(obj, required, parent, i) {
|
|
|
42
42
|
required.forEach(key => {
|
|
43
43
|
if (!obj[key] || isEmptyData(obj[key])) {
|
|
44
44
|
check = false;
|
|
45
|
-
|
|
45
|
+
logWarn(`Filtered ${parent}[] value at index ${i} in ortb2 data: missing required property ${key}`);
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
48
|
|
|
@@ -91,17 +91,17 @@ export function filterArrayData(arr, child, path, parent) {
|
|
|
91
91
|
return true;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
logWarn(`Filtered ${parent}[] value at index ${i} in ortb2 data: expected type ${child.type}`);
|
|
95
95
|
}).filter((index, i) => {
|
|
96
96
|
let requiredCheck = true;
|
|
97
|
-
let mapping =
|
|
97
|
+
let mapping = deepAccess(ORTB_MAP, path);
|
|
98
98
|
|
|
99
99
|
if (mapping && mapping.required) requiredCheck = getRequiredData(index, mapping.required, parent, i);
|
|
100
100
|
|
|
101
101
|
if (requiredCheck) return true;
|
|
102
102
|
}).reduce((result, value, i) => {
|
|
103
103
|
let typeBool = false;
|
|
104
|
-
let mapping =
|
|
104
|
+
let mapping = deepAccess(ORTB_MAP, path);
|
|
105
105
|
|
|
106
106
|
switch (child.type) {
|
|
107
107
|
case 'string':
|
|
@@ -126,7 +126,7 @@ export function filterArrayData(arr, child, path, parent) {
|
|
|
126
126
|
break;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
if (!typeBool)
|
|
129
|
+
if (!typeBool) logWarn(`Filtered ${parent}[] value at index ${i} in ortb2 data: expected type ${child.type}`);
|
|
130
130
|
|
|
131
131
|
return result;
|
|
132
132
|
}, []);
|
|
@@ -146,26 +146,26 @@ export function validateFpd(fpd, path = '', parent = '') {
|
|
|
146
146
|
|
|
147
147
|
// Filter out imp property if exists
|
|
148
148
|
let validObject = Object.assign({}, Object.keys(fpd).filter(key => {
|
|
149
|
-
let mapping =
|
|
149
|
+
let mapping = deepAccess(ORTB_MAP, path + key);
|
|
150
150
|
|
|
151
151
|
if (!mapping || !mapping.invalid) return key;
|
|
152
152
|
|
|
153
|
-
|
|
153
|
+
logWarn(`Filtered ${parent}${key} property in ortb2 data: invalid property`);
|
|
154
154
|
}).filter(key => {
|
|
155
|
-
let mapping =
|
|
155
|
+
let mapping = deepAccess(ORTB_MAP, path + key);
|
|
156
156
|
// let typeBool = false;
|
|
157
157
|
let typeBool = (mapping) ? typeValidation(fpd[key], {type: mapping.type, isArray: mapping.isArray}) : true;
|
|
158
158
|
|
|
159
159
|
if (typeBool || !mapping) return key;
|
|
160
160
|
|
|
161
|
-
|
|
161
|
+
logWarn(`Filtered ${parent}${key} property in ortb2 data: expected type ${(mapping.isArray) ? 'array' : mapping.type}`);
|
|
162
162
|
}).reduce((result, key) => {
|
|
163
|
-
let mapping =
|
|
163
|
+
let mapping = deepAccess(ORTB_MAP, path + key);
|
|
164
164
|
let modified = {};
|
|
165
165
|
|
|
166
166
|
if (mapping) {
|
|
167
167
|
if (mapping.optoutApplies && optout) {
|
|
168
|
-
|
|
168
|
+
logWarn(`Filtered ${parent}${key} data: pubcid optout found`);
|
|
169
169
|
return result;
|
|
170
170
|
}
|
|
171
171
|
|
|
@@ -176,7 +176,7 @@ export function validateFpd(fpd, path = '', parent = '') {
|
|
|
176
176
|
|
|
177
177
|
// Check if modified data has data and return
|
|
178
178
|
(!isEmptyData(modified)) ? result[key] = modified
|
|
179
|
-
:
|
|
179
|
+
: logWarn(`Filtered ${parent}${key} property in ortb2 data: empty data found`);
|
|
180
180
|
} else {
|
|
181
181
|
result[key] = fpd[key];
|
|
182
182
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { getAdUnitSizes } from '../src/utils.js';
|
|
2
2
|
import {config} from '../src/config.js';
|
|
3
3
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
4
4
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
@@ -32,7 +32,7 @@ export const spec = {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
return validBidRequests.map(bidRequest => {
|
|
35
|
-
const sizes =
|
|
35
|
+
const sizes = getAdUnitSizes(bidRequest);
|
|
36
36
|
const payload = {
|
|
37
37
|
placementId: bidRequest.params.placementId,
|
|
38
38
|
sizes: sizes,
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import {ajax} from '../src/ajax.js';
|
|
9
9
|
import {submodule} from '../src/hook.js';
|
|
10
|
-
import
|
|
10
|
+
import { logError, formatQS } from '../src/utils.js';
|
|
11
11
|
import includes from 'core-js-pure/features/array/includes.js';
|
|
12
12
|
|
|
13
13
|
const MODULE_NAME = 'verizonMediaId';
|
|
@@ -51,7 +51,7 @@ export const verizonMediaIdSubmodule = {
|
|
|
51
51
|
const params = config.params || {};
|
|
52
52
|
if (!params || typeof params.he !== 'string' ||
|
|
53
53
|
(typeof params.pixelId === 'undefined' && typeof params.endpoint === 'undefined')) {
|
|
54
|
-
|
|
54
|
+
logError('The verizonMediaId submodule requires the \'he\' and \'pixelId\' parameters to be defined.');
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
57
57
|
|
|
@@ -75,18 +75,18 @@ export const verizonMediaIdSubmodule = {
|
|
|
75
75
|
try {
|
|
76
76
|
responseObj = JSON.parse(response);
|
|
77
77
|
} catch (error) {
|
|
78
|
-
|
|
78
|
+
logError(error);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
callback(responseObj);
|
|
82
82
|
},
|
|
83
83
|
error: error => {
|
|
84
|
-
|
|
84
|
+
logError(`${MODULE_NAME}: ID fetch encountered an error`, error);
|
|
85
85
|
callback();
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
88
|
const endpoint = VMCID_ENDPOINT.replace(PLACEHOLDER, params.pixelId);
|
|
89
|
-
let url = `${params.endpoint || endpoint}?${
|
|
89
|
+
let url = `${params.endpoint || endpoint}?${formatQS(data)}`;
|
|
90
90
|
verizonMediaIdSubmodule.getAjaxFn()(url, callbacks, null, {method: 'GET', withCredentials: true});
|
|
91
91
|
};
|
|
92
92
|
return {callback: resp};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { _each, deepAccess, parseSizesInput } from '../src/utils.js';
|
|
2
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import { BANNER } from '../src/mediaTypes.js';
|
|
4
4
|
import { getStorageManager } from '../src/storageManager.js';
|
|
@@ -94,7 +94,7 @@ function buildRequest(bid, topWindowUrl, sizes, bidderRequest) {
|
|
|
94
94
|
data: data
|
|
95
95
|
};
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
_each(ext, (value, key) => {
|
|
98
98
|
dto.data['ext.' + key] = value;
|
|
99
99
|
});
|
|
100
100
|
|
|
@@ -103,13 +103,13 @@ function buildRequest(bid, topWindowUrl, sizes, bidderRequest) {
|
|
|
103
103
|
|
|
104
104
|
function appendUserIdsToRequestPayload(payloadRef, userIds) {
|
|
105
105
|
let key;
|
|
106
|
-
|
|
106
|
+
_each(userIds, (userId, idSystemProviderName) => {
|
|
107
107
|
if (SUPPORTED_ID_SYSTEMS[idSystemProviderName]) {
|
|
108
108
|
key = `uid.${idSystemProviderName}`;
|
|
109
109
|
|
|
110
110
|
switch (idSystemProviderName) {
|
|
111
111
|
case 'digitrustid':
|
|
112
|
-
payloadRef[key] =
|
|
112
|
+
payloadRef[key] = deepAccess(userId, 'data.id');
|
|
113
113
|
break;
|
|
114
114
|
case 'lipb':
|
|
115
115
|
payloadRef[key] = userId.lipbid;
|
|
@@ -131,7 +131,7 @@ function buildRequests(validBidRequests, bidderRequest) {
|
|
|
131
131
|
const topWindowUrl = bidderRequest.refererInfo.referer;
|
|
132
132
|
const requests = [];
|
|
133
133
|
validBidRequests.forEach(validBidRequest => {
|
|
134
|
-
const sizes =
|
|
134
|
+
const sizes = parseSizesInput(validBidRequest.sizes);
|
|
135
135
|
const request = buildRequest(validBidRequest, topWindowUrl, sizes, bidderRequest);
|
|
136
136
|
requests.push(request);
|
|
137
137
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { logMessage, logError, deepAccess, isFn, isPlainObject, isStr, isNumber, isArray, deepSetValue } from '../src/utils.js';
|
|
1
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
2
|
-
import * as utils from '../src/utils.js';
|
|
3
3
|
import {VIDEO} from '../src/mediaTypes.js';
|
|
4
4
|
|
|
5
5
|
const BIDDER_CODE = 'videobyte';
|
|
@@ -54,7 +54,7 @@ export const spec = {
|
|
|
54
54
|
const {params} = bidRequest;
|
|
55
55
|
let pubId = params.pubId;
|
|
56
56
|
if (bidRequest.params.video && bidRequest.params.video.e2etest) {
|
|
57
|
-
|
|
57
|
+
logMessage('E2E test mode enabled');
|
|
58
58
|
pubId = 'e2etest'
|
|
59
59
|
}
|
|
60
60
|
return {
|
|
@@ -98,7 +98,7 @@ export const spec = {
|
|
|
98
98
|
bidResponses.push(bidResponse)
|
|
99
99
|
}
|
|
100
100
|
} else {
|
|
101
|
-
|
|
101
|
+
logError('invalid server response received');
|
|
102
102
|
}
|
|
103
103
|
return bidResponses;
|
|
104
104
|
},
|
|
@@ -118,7 +118,7 @@ export const spec = {
|
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
serverResponses.forEach(resp => {
|
|
121
|
-
const userSync =
|
|
121
|
+
const userSync = deepAccess(resp, 'body.ext.usersync');
|
|
122
122
|
if (userSync) {
|
|
123
123
|
let syncDetails = [];
|
|
124
124
|
Object.keys(userSync).forEach(key => {
|
|
@@ -152,8 +152,8 @@ export const spec = {
|
|
|
152
152
|
function buildRequestData(bidRequest, bidderRequest) {
|
|
153
153
|
const {params} = bidRequest;
|
|
154
154
|
|
|
155
|
-
const videoAdUnit =
|
|
156
|
-
const videoBidderParams =
|
|
155
|
+
const videoAdUnit = deepAccess(bidRequest, 'mediaTypes.video', {});
|
|
156
|
+
const videoBidderParams = deepAccess(bidRequest, 'params.video', {});
|
|
157
157
|
|
|
158
158
|
const videoParams = {
|
|
159
159
|
...videoAdUnit,
|
|
@@ -194,7 +194,7 @@ function buildRequestData(bidRequest, bidderRequest) {
|
|
|
194
194
|
size: '*'
|
|
195
195
|
};
|
|
196
196
|
let floorData = bidRequest.params
|
|
197
|
-
if (
|
|
197
|
+
if (isFn(bidRequest.getFloor)) {
|
|
198
198
|
floorData = bidRequest.getFloor(bidFloorRequest);
|
|
199
199
|
} else {
|
|
200
200
|
if (params.bidfloor) {
|
|
@@ -226,7 +226,7 @@ function buildRequestData(bidRequest, bidderRequest) {
|
|
|
226
226
|
};
|
|
227
227
|
|
|
228
228
|
// content
|
|
229
|
-
if (videoParams.content &&
|
|
229
|
+
if (videoParams.content && isPlainObject(videoParams.content)) {
|
|
230
230
|
openrtbRequest.site.content = {};
|
|
231
231
|
const contentStringKeys = ['id', 'title', 'series', 'season', 'genre', 'contentrating', 'language'];
|
|
232
232
|
const contentNumberkeys = ['episode', 'prodq', 'context', 'livestream', 'len'];
|
|
@@ -234,33 +234,33 @@ function buildRequestData(bidRequest, bidderRequest) {
|
|
|
234
234
|
const contentObjectKeys = ['ext'];
|
|
235
235
|
for (const contentKey in videoBidderParams.content) {
|
|
236
236
|
if (
|
|
237
|
-
(contentStringKeys.indexOf(contentKey) > -1 &&
|
|
238
|
-
(contentNumberkeys.indexOf(contentKey) > -1 &&
|
|
239
|
-
(contentObjectKeys.indexOf(contentKey) > -1 &&
|
|
240
|
-
(contentArrayKeys.indexOf(contentKey) > -1 &&
|
|
241
|
-
videoParams.content[contentKey].every(catStr =>
|
|
237
|
+
(contentStringKeys.indexOf(contentKey) > -1 && isStr(videoParams.content[contentKey])) ||
|
|
238
|
+
(contentNumberkeys.indexOf(contentKey) > -1 && isNumber(videoParams.content[contentKey])) ||
|
|
239
|
+
(contentObjectKeys.indexOf(contentKey) > -1 && isPlainObject(videoParams.content[contentKey])) ||
|
|
240
|
+
(contentArrayKeys.indexOf(contentKey) > -1 && isArray(videoParams.content[contentKey]) &&
|
|
241
|
+
videoParams.content[contentKey].every(catStr => isStr(catStr)))) {
|
|
242
242
|
openrtbRequest.site.content[contentKey] = videoParams.content[contentKey];
|
|
243
243
|
} else {
|
|
244
|
-
|
|
244
|
+
logMessage('videobyte bid adapter validation error: ', contentKey, ' is either not supported is OpenRTB V2.5 or value is undefined');
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
248
|
|
|
249
249
|
// adding schain object
|
|
250
250
|
if (bidRequest.schain) {
|
|
251
|
-
|
|
251
|
+
deepSetValue(openrtbRequest, 'source.ext.schain', bidRequest.schain);
|
|
252
252
|
openrtbRequest.source.ext.schain.nodes[0].rid = openrtbRequest.id;
|
|
253
253
|
}
|
|
254
254
|
|
|
255
255
|
// Attaching GDPR Consent Params
|
|
256
256
|
if (bidderRequest.gdprConsent) {
|
|
257
|
-
|
|
258
|
-
|
|
257
|
+
deepSetValue(openrtbRequest, 'user.ext.consent', bidderRequest.gdprConsent.consentString);
|
|
258
|
+
deepSetValue(openrtbRequest, 'regs.ext.gdpr', (bidderRequest.gdprConsent.gdprApplies ? 1 : 0));
|
|
259
259
|
}
|
|
260
260
|
|
|
261
261
|
// CCPA
|
|
262
262
|
if (bidderRequest.uspConsent) {
|
|
263
|
-
|
|
263
|
+
deepSetValue(openrtbRequest, 'regs.ext.us_privacy', bidderRequest.uspConsent);
|
|
264
264
|
}
|
|
265
265
|
return openrtbRequest;
|
|
266
266
|
}
|
|
@@ -271,12 +271,12 @@ function validateVideo(bidRequest) {
|
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
if (!bidRequest.params.pubId) {
|
|
274
|
-
|
|
274
|
+
logError('failed validation: publisher id not declared');
|
|
275
275
|
return false;
|
|
276
276
|
}
|
|
277
277
|
|
|
278
|
-
const videoAdUnit =
|
|
279
|
-
const videoBidderParams =
|
|
278
|
+
const videoAdUnit = deepAccess(bidRequest, 'mediaTypes.video', {});
|
|
279
|
+
const videoBidderParams = deepAccess(bidRequest, 'params.video', {});
|
|
280
280
|
|
|
281
281
|
if (videoBidderParams && videoBidderParams.e2etest) {
|
|
282
282
|
return true;
|
|
@@ -288,16 +288,16 @@ function validateVideo(bidRequest) {
|
|
|
288
288
|
};
|
|
289
289
|
|
|
290
290
|
if (!videoParams.context) {
|
|
291
|
-
|
|
291
|
+
logError('failed validation: context id not declared');
|
|
292
292
|
return false;
|
|
293
293
|
}
|
|
294
294
|
if (videoParams.context !== 'instream') {
|
|
295
|
-
|
|
295
|
+
logError('failed validation: only context instream is supported ');
|
|
296
296
|
return false;
|
|
297
297
|
}
|
|
298
298
|
|
|
299
299
|
if (typeof videoParams.playerSize === 'undefined' || !Array.isArray(videoParams.playerSize) || !Array.isArray(videoParams.playerSize[0])) {
|
|
300
|
-
|
|
300
|
+
logError('failed validation: player size not declared or is not in format [[w,h]]');
|
|
301
301
|
return false;
|
|
302
302
|
}
|
|
303
303
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { getValue, getBidIdParameter } from '../src/utils.js';
|
|
1
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
2
|
-
const utils = require('../src/utils.js');
|
|
3
3
|
const BIDDER_CODE = 'videoreach';
|
|
4
4
|
const ENDPOINT_URL = 'https://a.videoreach.com/hb/';
|
|
5
5
|
const GVLID = 547;
|
|
@@ -17,12 +17,12 @@ export const spec = {
|
|
|
17
17
|
let data = {
|
|
18
18
|
data: validBidRequests.map(function(bid) {
|
|
19
19
|
return {
|
|
20
|
-
TagId:
|
|
21
|
-
adUnitCode:
|
|
22
|
-
bidId:
|
|
23
|
-
bidderRequestId:
|
|
24
|
-
auctionId:
|
|
25
|
-
transactionId:
|
|
20
|
+
TagId: getValue(bid.params, 'TagId'),
|
|
21
|
+
adUnitCode: getBidIdParameter('adUnitCode', bid),
|
|
22
|
+
bidId: getBidIdParameter('bidId', bid),
|
|
23
|
+
bidderRequestId: getBidIdParameter('bidderRequestId', bid),
|
|
24
|
+
auctionId: getBidIdParameter('auctionId', bid),
|
|
25
|
+
transactionId: getBidIdParameter('transactionId', bid)
|
|
26
26
|
}
|
|
27
27
|
})
|
|
28
28
|
};
|