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
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This module adds Weborama provider to the real time data module
|
|
3
|
+
* The {@link module:modules/realTimeData} module is required
|
|
4
|
+
* The module will fetch contextual data (page-centric) from Weborama server
|
|
5
|
+
* @module modules/weboramaRtdProvider
|
|
6
|
+
* @requires module:modules/realTimeData
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @typedef {Object} ModuleParams
|
|
11
|
+
* @property {WeboCtxConf} weboCtxConf
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @typedef {Object} WeboCtxConf
|
|
16
|
+
* @property {string} token required token to be used on bigsea contextual API requests
|
|
17
|
+
* @property {?string} targetURL specify the target url instead use the referer
|
|
18
|
+
* @property {?boolean} setTargeting if true will set the GAM targeting
|
|
19
|
+
* @property {?object} defaultProfile to be used if the profile is not found
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
import { deepSetValue, logError, tryAppendQueryString, logMessage } from '../src/utils.js';
|
|
23
|
+
import {submodule} from '../src/hook.js';
|
|
24
|
+
import {ajax} from '../src/ajax.js';
|
|
25
|
+
import {config} from '../src/config.js';
|
|
26
|
+
|
|
27
|
+
/** @type {string} */
|
|
28
|
+
const MODULE_NAME = 'realTimeData';
|
|
29
|
+
/** @type {string} */
|
|
30
|
+
const SUBMODULE_NAME = 'weborama';
|
|
31
|
+
/** @type {string} */
|
|
32
|
+
const WEBO_CTX = 'webo_ctx';
|
|
33
|
+
/** @type {string} */
|
|
34
|
+
const WEBO_DS = 'webo_ds';
|
|
35
|
+
|
|
36
|
+
/** @type {null|Object} */
|
|
37
|
+
let _bigseaContextualProfile = null;
|
|
38
|
+
|
|
39
|
+
/** function that provides ad server targeting data to RTD-core
|
|
40
|
+
* @param {Array} adUnitsCodes
|
|
41
|
+
* @param {Object} moduleConfig
|
|
42
|
+
* @returns {Object} target data
|
|
43
|
+
*/
|
|
44
|
+
function getTargetingData(adUnitsCodes, moduleConfig) {
|
|
45
|
+
moduleConfig = moduleConfig || {};
|
|
46
|
+
const moduleParams = moduleConfig.params || {};
|
|
47
|
+
const weboCtxConf = moduleParams.weboCtxConf || {};
|
|
48
|
+
const defaultContextualProfiles = weboCtxConf.defaultProfile || {}
|
|
49
|
+
const profile = _bigseaContextualProfile || defaultContextualProfiles;
|
|
50
|
+
|
|
51
|
+
if (weboCtxConf.setOrtb2) {
|
|
52
|
+
const ortb2 = config.getConfig('ortb2') || {};
|
|
53
|
+
if (profile[WEBO_CTX]) {
|
|
54
|
+
deepSetValue(ortb2, 'site.ext.data.webo_ctx', profile[WEBO_CTX]);
|
|
55
|
+
}
|
|
56
|
+
if (profile[WEBO_DS]) {
|
|
57
|
+
deepSetValue(ortb2, 'site.ext.data.webo_ds', profile[WEBO_DS]);
|
|
58
|
+
}
|
|
59
|
+
config.setConfig({ortb2: ortb2});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (weboCtxConf.setTargeting === false) {
|
|
63
|
+
return {};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
try {
|
|
67
|
+
const formattedProfile = profile;
|
|
68
|
+
const r = adUnitsCodes.reduce((rp, adUnitCode) => {
|
|
69
|
+
if (adUnitCode) {
|
|
70
|
+
rp[adUnitCode] = formattedProfile;
|
|
71
|
+
}
|
|
72
|
+
return rp;
|
|
73
|
+
}, {});
|
|
74
|
+
return r;
|
|
75
|
+
} catch (e) {
|
|
76
|
+
logError('unable to format weborama rtd targeting data', e);
|
|
77
|
+
return {};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** set bigsea contextual profile on module state
|
|
82
|
+
* if the profile is empty, will store the default profile
|
|
83
|
+
* @param {null|Object} data
|
|
84
|
+
* @returns {void}
|
|
85
|
+
*/
|
|
86
|
+
export function setBigseaContextualProfile(data) {
|
|
87
|
+
if (data && Object.keys(data).length > 0) {
|
|
88
|
+
_bigseaContextualProfile = data;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** onSuccess callback type
|
|
93
|
+
* @callback successCallback
|
|
94
|
+
* @param {null|Object} data
|
|
95
|
+
* @returns {void}
|
|
96
|
+
*/
|
|
97
|
+
|
|
98
|
+
/** onDone callback type
|
|
99
|
+
* @callback doneCallback
|
|
100
|
+
* @returns {void}
|
|
101
|
+
*/
|
|
102
|
+
|
|
103
|
+
/** Fetch Bigsea Contextual Profile
|
|
104
|
+
* @param {WeboCtxConf} weboCtxConf
|
|
105
|
+
* @param {successCallback} onSuccess callback
|
|
106
|
+
* @param {doneCallback} onDone callback
|
|
107
|
+
* @returns {void}
|
|
108
|
+
*/
|
|
109
|
+
function fetchContextualProfile(weboCtxConf, onSuccess, onDone) {
|
|
110
|
+
const targetURL = weboCtxConf.targetURL || document.URL;
|
|
111
|
+
const token = weboCtxConf.token;
|
|
112
|
+
|
|
113
|
+
let queryString = '';
|
|
114
|
+
queryString = tryAppendQueryString(queryString, 'token', token);
|
|
115
|
+
queryString = tryAppendQueryString(queryString, 'url', targetURL);
|
|
116
|
+
|
|
117
|
+
const url = 'https://ctx.weborama.com/api/profile?' + queryString;
|
|
118
|
+
|
|
119
|
+
ajax(url, {
|
|
120
|
+
success: function (response, req) {
|
|
121
|
+
if (req.status === 200) {
|
|
122
|
+
try {
|
|
123
|
+
const data = JSON.parse(response);
|
|
124
|
+
onSuccess(data);
|
|
125
|
+
onDone();
|
|
126
|
+
} catch (e) {
|
|
127
|
+
onDone();
|
|
128
|
+
logError('unable to parse weborama data', e);
|
|
129
|
+
}
|
|
130
|
+
} else if (req.status === 204) {
|
|
131
|
+
onDone();
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
error: function () {
|
|
135
|
+
onDone();
|
|
136
|
+
logError('unable to get weborama data');
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
null,
|
|
140
|
+
{
|
|
141
|
+
method: 'GET',
|
|
142
|
+
withCredentials: false,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/** Initialize module
|
|
147
|
+
* @param {object} moduleConfig
|
|
148
|
+
* @return {boolean} true if module was initialized with success
|
|
149
|
+
*/
|
|
150
|
+
function init(moduleConfig) {
|
|
151
|
+
_bigseaContextualProfile = null;
|
|
152
|
+
|
|
153
|
+
moduleConfig = moduleConfig || {};
|
|
154
|
+
const moduleParams = moduleConfig.params || {};
|
|
155
|
+
const weboCtxConf = moduleParams.weboCtxConf || {};
|
|
156
|
+
|
|
157
|
+
if (weboCtxConf.token) {
|
|
158
|
+
fetchContextualProfile(weboCtxConf, setBigseaContextualProfile,
|
|
159
|
+
() => logMessage('fetchContextualProfile on init is done'));
|
|
160
|
+
} else {
|
|
161
|
+
logError('missing param "token" for weborama rtd module initialization');
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export const weboramaSubmodule = {
|
|
169
|
+
name: SUBMODULE_NAME,
|
|
170
|
+
init: init,
|
|
171
|
+
getTargetingData: getTargetingData,
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
submodule(MODULE_NAME, weboramaSubmodule);
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Weborama Real-Time Data Submodule
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
Module Name: Weborama Rtd Provider
|
|
5
|
+
Module Type: Rtd Provider
|
|
6
|
+
Maintainer: prebid-support@weborama.com
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
# Description
|
|
10
|
+
|
|
11
|
+
Weborama provides a Semantic AI Contextual API that classifies in Real-time a web page seen by a web user within generic and custom topics. It enables publishers to better monetize their inventory and unlock it to programmatic.
|
|
12
|
+
|
|
13
|
+
ORTB2 compliant and FPD support for Prebid versions < 4.29
|
|
14
|
+
|
|
15
|
+
Contact prebid-support@weborama.com for information.
|
|
16
|
+
|
|
17
|
+
### Publisher Usage
|
|
18
|
+
|
|
19
|
+
Compile the Weborama RTD module into your Prebid build:
|
|
20
|
+
|
|
21
|
+
`gulp build --modules=rtdModule,weboramaRtdProvider`
|
|
22
|
+
|
|
23
|
+
Add the Weborama RTD provider to your Prebid config.
|
|
24
|
+
|
|
25
|
+
```javascript
|
|
26
|
+
pbjs.setConfig(
|
|
27
|
+
...
|
|
28
|
+
realTimeData: {
|
|
29
|
+
auctionDelay: 1000,
|
|
30
|
+
dataProviders: [
|
|
31
|
+
{
|
|
32
|
+
name: "weborama",
|
|
33
|
+
waitForIt: true,
|
|
34
|
+
params: {
|
|
35
|
+
weboCtxConf: {
|
|
36
|
+
setTargeting: true,
|
|
37
|
+
token: "<<token provided by weborama>>",
|
|
38
|
+
targetURL: "..." // default is document.URL
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
...
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Parameter Descriptions for the Weborama Configuration Section
|
|
49
|
+
|
|
50
|
+
| Name |Type | Description | Notes |
|
|
51
|
+
| :------------ | :------------ | :------------ |:------------ |
|
|
52
|
+
| name | String | Real time data module name | Mandatory. Always 'Weborama' |
|
|
53
|
+
| waitForIt | Boolean | Mandatory. Required to ensure that the auction is delayed until prefetch is complete | Optional. Defaults to false but recommended to true |
|
|
54
|
+
| params | Object | | Optional |
|
|
55
|
+
| params.weboCtxConf | Object | Weborama Contextual Configuration | Optional |
|
|
56
|
+
| params.weboCtxConf.token | String | Security Token provided by Weborama, unique per client | Mandatory |
|
|
57
|
+
| params.weboCtxConf.targetURL | String | Url to be profiled in the contextual api | Optional. Defaults to `document.URL` |
|
|
58
|
+
| params.weboCtxConf.defaultProfile | Object | default value of the profile to be used when there are no response from contextual api (such as timeout)| Optional. Default is `{}` |
|
|
59
|
+
| params.weboCtxConf.setTargeting|Boolean|If true, will use the contextual profile to set the gam targeting of all adunits managed by prebid.js| Optional. Default is *true*.|
|
|
60
|
+
| params.weboCtxConf.setOrtb2|Boolean|If true, will use the contextual profile to set the ortb2 configuration on `site.ext.data`| Optional. Default is *false*.|
|
|
61
|
+
|
|
62
|
+
### Testing
|
|
63
|
+
|
|
64
|
+
To view an example of available segments returned by Weborama's backends:
|
|
65
|
+
|
|
66
|
+
`gulp serve --modules=rtdModule,weboramaRtdProvider,appnexusBidAdapter`
|
|
67
|
+
|
|
68
|
+
and then point your browser at:
|
|
69
|
+
|
|
70
|
+
`http://localhost:9999/integrationExamples/gpt/weboramaRtdProvider_example.html`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { convertCamelToUnderscore, isArray, isNumber, isPlainObject, deepAccess, logError, convertTypes, getParameterByName, getBidRequest, isEmpty, transformBidderParamKeywords, isFn } 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 } from '../src/mediaTypes.js';
|
|
@@ -139,16 +139,16 @@ export const spec = {
|
|
|
139
139
|
Object.keys(userObjBid.params.user)
|
|
140
140
|
.filter((param) => includes(USER_PARAMS, param))
|
|
141
141
|
.forEach((param) => {
|
|
142
|
-
let uparam =
|
|
142
|
+
let uparam = convertCamelToUnderscore(param);
|
|
143
143
|
if (
|
|
144
144
|
param === 'segments' &&
|
|
145
|
-
|
|
145
|
+
isArray(userObjBid.params.user[param])
|
|
146
146
|
) {
|
|
147
147
|
let segs = [];
|
|
148
148
|
userObjBid.params.user[param].forEach((val) => {
|
|
149
|
-
if (
|
|
149
|
+
if (isNumber(val)) {
|
|
150
150
|
segs.push({ id: val });
|
|
151
|
-
} else if (
|
|
151
|
+
} else if (isPlainObject(val)) {
|
|
152
152
|
segs.push(val);
|
|
153
153
|
}
|
|
154
154
|
});
|
|
@@ -228,12 +228,12 @@ export const spec = {
|
|
|
228
228
|
if (bidRequests[0].userId) {
|
|
229
229
|
let eids = [];
|
|
230
230
|
|
|
231
|
-
addUserId(eids,
|
|
232
|
-
addUserId(eids,
|
|
233
|
-
addUserId(eids,
|
|
234
|
-
addUserId(eids,
|
|
235
|
-
addUserId(eids,
|
|
236
|
-
addUserId(eids,
|
|
231
|
+
addUserId(eids, deepAccess(bidRequests[0], `userId.flocId.id`), 'chrome.com', null);
|
|
232
|
+
addUserId(eids, deepAccess(bidRequests[0], `userId.criteoId`), 'criteo.com', null);
|
|
233
|
+
addUserId(eids, deepAccess(bidRequests[0], `userId.netId`), 'netid.de', null);
|
|
234
|
+
addUserId(eids, deepAccess(bidRequests[0], `userId.idl_env`), 'liveramp.com', null);
|
|
235
|
+
addUserId(eids, deepAccess(bidRequests[0], `userId.tdid`), 'adserver.org', 'TDID');
|
|
236
|
+
addUserId(eids, deepAccess(bidRequests[0], `userId.uid2.id`), 'uidapi.com', 'UID2');
|
|
237
237
|
|
|
238
238
|
if (eids.length) {
|
|
239
239
|
payload.eids = eids;
|
|
@@ -262,7 +262,7 @@ export const spec = {
|
|
|
262
262
|
if (serverResponse && serverResponse.error) {
|
|
263
263
|
errorMessage += `: ${serverResponse.error}`;
|
|
264
264
|
}
|
|
265
|
-
|
|
265
|
+
logError(errorMessage);
|
|
266
266
|
return bids;
|
|
267
267
|
}
|
|
268
268
|
|
|
@@ -297,12 +297,12 @@ export const spec = {
|
|
|
297
297
|
},
|
|
298
298
|
|
|
299
299
|
transformBidParams: function (params, isOpenRtb) {
|
|
300
|
-
params =
|
|
300
|
+
params = convertTypes(
|
|
301
301
|
{
|
|
302
302
|
member: 'string',
|
|
303
303
|
invCode: 'string',
|
|
304
304
|
placementId: 'number',
|
|
305
|
-
keywords:
|
|
305
|
+
keywords: transformBidderParamKeywords,
|
|
306
306
|
publisherId: 'number',
|
|
307
307
|
},
|
|
308
308
|
params
|
|
@@ -322,7 +322,7 @@ export const spec = {
|
|
|
322
322
|
}
|
|
323
323
|
|
|
324
324
|
Object.keys(params).forEach((paramKey) => {
|
|
325
|
-
let convertedKey =
|
|
325
|
+
let convertedKey = convertCamelToUnderscore(paramKey);
|
|
326
326
|
if (convertedKey !== paramKey) {
|
|
327
327
|
params[convertedKey] = params[paramKey];
|
|
328
328
|
delete params[paramKey];
|
|
@@ -335,7 +335,7 @@ export const spec = {
|
|
|
335
335
|
};
|
|
336
336
|
|
|
337
337
|
function isPopulatedArray(arr) {
|
|
338
|
-
return !!(
|
|
338
|
+
return !!(isArray(arr) && arr.length > 0);
|
|
339
339
|
}
|
|
340
340
|
|
|
341
341
|
function deleteValues(keyPairObj) {
|
|
@@ -352,7 +352,7 @@ function hasPurpose1Consent(bidderRequest) {
|
|
|
352
352
|
bidderRequest.gdprConsent.apiVersion === 2
|
|
353
353
|
) {
|
|
354
354
|
result = !!(
|
|
355
|
-
|
|
355
|
+
deepAccess(
|
|
356
356
|
bidderRequest.gdprConsent,
|
|
357
357
|
'vendorData.purpose.consents.1'
|
|
358
358
|
) === true
|
|
@@ -375,7 +375,7 @@ function formatRequest(payload, bidderRequest) {
|
|
|
375
375
|
}
|
|
376
376
|
|
|
377
377
|
if (
|
|
378
|
-
|
|
378
|
+
getParameterByName('apn_test').toUpperCase() === 'TRUE' ||
|
|
379
379
|
config.getConfig('apn_test') === true
|
|
380
380
|
) {
|
|
381
381
|
options.customHeaders = {
|
|
@@ -403,7 +403,7 @@ function formatRequest(payload, bidderRequest) {
|
|
|
403
403
|
* @return Bid
|
|
404
404
|
*/
|
|
405
405
|
function newBid(serverBid, rtbBid, bidderRequest) {
|
|
406
|
-
const bidRequest =
|
|
406
|
+
const bidRequest = getBidRequest(serverBid.uuid, [bidderRequest]);
|
|
407
407
|
const bid = {
|
|
408
408
|
adType: rtbBid.ad_type,
|
|
409
409
|
requestId: serverBid.uuid,
|
|
@@ -463,7 +463,7 @@ function newBid(serverBid, rtbBid, bidderRequest) {
|
|
|
463
463
|
});
|
|
464
464
|
}
|
|
465
465
|
} catch (error) {
|
|
466
|
-
|
|
466
|
+
logError('Error assigning ad', error);
|
|
467
467
|
}
|
|
468
468
|
return bid;
|
|
469
469
|
}
|
|
@@ -502,8 +502,8 @@ function bidToTag(bid) {
|
|
|
502
502
|
if (bid.params.externalImpId) {
|
|
503
503
|
tag.external_imp_id = bid.params.externalImpId;
|
|
504
504
|
}
|
|
505
|
-
if (!
|
|
506
|
-
let keywords =
|
|
505
|
+
if (!isEmpty(bid.params.keywords)) {
|
|
506
|
+
let keywords = transformBidderParamKeywords(bid.params.keywords);
|
|
507
507
|
|
|
508
508
|
if (keywords.length > 0) {
|
|
509
509
|
keywords.forEach(deleteValues);
|
|
@@ -511,7 +511,7 @@ function bidToTag(bid) {
|
|
|
511
511
|
tag.keywords = keywords;
|
|
512
512
|
}
|
|
513
513
|
|
|
514
|
-
let gpid =
|
|
514
|
+
let gpid = deepAccess(bid, 'ortb2Imp.ext.data.pbadslot');
|
|
515
515
|
if (gpid) {
|
|
516
516
|
tag.gpid = gpid;
|
|
517
517
|
}
|
|
@@ -531,9 +531,9 @@ function transformSizes(requestSizes) {
|
|
|
531
531
|
let sizeObj = {};
|
|
532
532
|
|
|
533
533
|
if (
|
|
534
|
-
|
|
534
|
+
isArray(requestSizes) &&
|
|
535
535
|
requestSizes.length === 2 &&
|
|
536
|
-
!
|
|
536
|
+
!isArray(requestSizes[0])
|
|
537
537
|
) {
|
|
538
538
|
sizeObj.width = parseInt(requestSizes[0], 10);
|
|
539
539
|
sizeObj.height = parseInt(requestSizes[1], 10);
|
|
@@ -596,7 +596,7 @@ function addUserId(eids, id, source, rti) {
|
|
|
596
596
|
}
|
|
597
597
|
|
|
598
598
|
function getBidFloor(bid) {
|
|
599
|
-
if (!
|
|
599
|
+
if (!isFn(bid.getFloor)) {
|
|
600
600
|
return (bid.params.reserve) ? bid.params.reserve : null;
|
|
601
601
|
}
|
|
602
602
|
|
|
@@ -605,7 +605,7 @@ function getBidFloor(bid) {
|
|
|
605
605
|
mediaType: '*',
|
|
606
606
|
size: '*'
|
|
607
607
|
});
|
|
608
|
-
if (
|
|
608
|
+
if (isPlainObject(floor) && !isNaN(floor.floor) && floor.currency === 'USD') {
|
|
609
609
|
return floor.floor;
|
|
610
610
|
}
|
|
611
611
|
return null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { logWarn } 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} from '../src/mediaTypes.js';
|
|
@@ -13,7 +13,7 @@ function isBidRequestValid(bid) {
|
|
|
13
13
|
case !!(bid.params.asid):
|
|
14
14
|
break;
|
|
15
15
|
default:
|
|
16
|
-
|
|
16
|
+
logWarn(`isBidRequestValid Error. ${bid.params}, please check your implementation.`);
|
|
17
17
|
return false;
|
|
18
18
|
}
|
|
19
19
|
return true;
|