prebid.js 5.14.0 → 5.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/Dockerfile +11 -0
- package/.devcontainer/devcontainer.json +27 -0
- package/.devcontainer/postCreate.sh +6 -0
- package/allowedModules.js +2 -1
- package/integrationExamples/gpt/afpExample.html +242 -0
- package/integrationExamples/gpt/afpGamExample.html +152 -0
- package/integrationExamples/gpt/weboramaRtdProvider_example.html +126 -0
- package/modules/.submodules.json +29 -27
- package/modules/33acrossBidAdapter.js +23 -20
- package/modules/a4gBidAdapter.js +3 -3
- package/modules/ablidaBidAdapter.js +2 -2
- package/modules/adWMGBidAdapter.js +4 -4
- package/modules/adagioAnalyticsAdapter.js +4 -4
- package/modules/adagioBidAdapter.js +85 -82
- package/modules/adbookpspBidAdapter.js +56 -54
- package/modules/adfBidAdapter.js +24 -16
- package/modules/adgenerationBidAdapter.js +42 -18
- package/modules/adhashBidAdapter.js +105 -0
- package/modules/adhashBidAdapter.md +1 -1
- package/modules/adkernelAdnAnalyticsAdapter.js +6 -6
- package/modules/adkernelAdnBidAdapter.js +23 -23
- package/modules/adkernelBidAdapter.js +49 -44
- package/modules/adlooxAdServerVideo.js +26 -26
- package/modules/adlooxAnalyticsAdapter.js +38 -35
- package/modules/adlooxRtdProvider.js +49 -46
- package/modules/admanBidAdapter.js +4 -4
- package/modules/admixerBidAdapter.js +13 -2
- package/modules/admixerIdSystem.js +4 -4
- package/modules/adnowBidAdapter.js +4 -4
- package/modules/adnuntiusBidAdapter.js +6 -5
- package/modules/adoceanBidAdapter.js +10 -10
- package/modules/adpartnerBidAdapter.js +3 -3
- package/modules/adpod.js +45 -42
- package/modules/adprimeBidAdapter.js +4 -4
- package/modules/adqueryBidAdapter.js +204 -0
- package/modules/adqueryBidAdapter.md +32 -0
- package/modules/adrelevantisBidAdapter.js +30 -27
- package/modules/adriverBidAdapter.js +13 -13
- package/modules/adtargetBidAdapter.js +24 -24
- package/modules/adtelligentBidAdapter.js +29 -29
- package/modules/adtrueBidAdapter.js +35 -35
- package/modules/aduptechBidAdapter.js +10 -10
- package/modules/advangelistsBidAdapter.js +14 -14
- package/modules/adxcgAnalyticsAdapter.js +5 -5
- package/modules/adxcgBidAdapter.js +56 -56
- package/modules/adxpremiumAnalyticsAdapter.js +17 -17
- package/modules/adyoulikeBidAdapter.js +11 -11
- package/modules/afpBidAdapter.js +166 -0
- package/modules/afpBidAdapter.md +348 -0
- package/modules/ajaBidAdapter.js +12 -12
- package/modules/akamaiDAPIdSystem.js +9 -9
- package/modules/aniviewBidAdapter.js +2 -2
- package/modules/aolBidAdapter.js +15 -14
- package/modules/apacdexBidAdapter.js +16 -16
- package/modules/appnexusBidAdapter.js +59 -59
- package/modules/apstreamBidAdapter.js +5 -5
- package/modules/asoBidAdapter.js +30 -30
- package/modules/astraoneBidAdapter.js +2 -2
- package/modules/atsAnalyticsAdapter.js +35 -30
- package/modules/audiencerunBidAdapter.js +15 -15
- package/modules/automatadBidAdapter.js +2 -2
- package/modules/axonixBidAdapter.js +7 -7
- package/modules/beachfrontBidAdapter.js +23 -23
- package/modules/beopBidAdapter.js +22 -22
- package/modules/bidViewabilityIO.js +7 -7
- package/modules/bidglassBidAdapter.js +8 -8
- package/modules/bidscubeBidAdapter.js +3 -3
- package/modules/bizzclickBidAdapter.js +10 -10
- package/modules/bliinkBidAdapter.js +58 -32
- package/modules/bliinkBidAdapter.md +29 -6
- package/modules/bluebillywigBidAdapter.js +30 -30
- package/modules/boldwinBidAdapter.js +4 -4
- package/modules/braveBidAdapter.js +5 -5
- package/modules/bridgewellBidAdapter.js +5 -5
- package/modules/brightMountainMediaBidAdapter.js +10 -10
- package/modules/brightcomBidAdapter.js +18 -18
- package/modules/britepoolIdSystem.js +7 -7
- package/modules/browsiRtdProvider.js +8 -8
- package/modules/bucksenseBidAdapter.js +9 -9
- package/modules/buzzoolaBidAdapter.js +4 -4
- package/modules/byDataAnalyticsAdapter.js +12 -12
- package/modules/ccxBidAdapter.js +38 -38
- package/modules/cleanmedianetBidAdapter.js +9 -9
- package/modules/clickforceBidAdapter.js +4 -4
- package/modules/cointrafficBidAdapter.js +4 -4
- package/modules/coinzillaBidAdapter.js +2 -2
- package/modules/colossussspBidAdapter.js +7 -3
- package/modules/concertAnalyticsAdapter.js +3 -3
- package/modules/concertBidAdapter.js +16 -17
- package/modules/connectadBidAdapter.js +13 -13
- package/modules/consentManagement.js +29 -28
- package/modules/consentManagementUsp.js +14 -14
- package/modules/consumableBidAdapter.js +3 -3
- package/modules/contentexchangeBidAdapter.js +5 -5
- package/modules/conversantBidAdapter.js +32 -31
- package/modules/cpmstarBidAdapter.js +8 -9
- package/modules/craftBidAdapter.js +10 -10
- package/modules/criteoBidAdapter.js +16 -16
- package/modules/criteoIdSystem.js +5 -5
- package/modules/currency.js +18 -18
- package/modules/cwireBidAdapter.js +272 -0
- package/modules/cwireBidAdapter.md +43 -0
- package/modules/datablocksBidAdapter.js +12 -12
- package/modules/deepintentBidAdapter.js +13 -13
- package/modules/dgkeywordRtdProvider.js +10 -11
- package/modules/districtmDMXBidAdapter.js +15 -15
- package/modules/dmdIdSystem.js +5 -5
- package/modules/docereeBidAdapter.js +9 -9
- package/modules/dspxBidAdapter.js +5 -5
- package/modules/ebdrBidAdapter.js +9 -9
- package/modules/emx_digitalBidAdapter.js +23 -23
- package/modules/enrichmentFpdModule.js +10 -9
- package/modules/eplanningAnalyticsAdapter.js +2 -2
- package/modules/eplanningBidAdapter.js +10 -10
- package/modules/etargetBidAdapter.js +4 -4
- package/modules/express.js +9 -10
- package/modules/fabrickIdSystem.js +6 -6
- package/modules/feedadBidAdapter.js +5 -5
- package/modules/fintezaAnalyticsAdapter.js +4 -4
- package/modules/flocIdSystem.js +5 -5
- package/modules/fluctBidAdapter.js +6 -5
- package/modules/freewheel-sspBidAdapter.js +6 -6
- package/modules/gamoshiBidAdapter.js +22 -22
- package/modules/gdprEnforcement.js +13 -14
- package/modules/getintentBidAdapter.js +3 -4
- package/modules/glimpseBidAdapter.js +160 -48
- package/modules/glimpseBidAdapter.md +11 -74
- package/modules/gmosspBidAdapter.js +17 -17
- package/modules/gnetBidAdapter.js +5 -5
- package/modules/googleAnalyticsAdapter.js +6 -6
- package/modules/gothamadsBidAdapter.js +9 -9
- package/modules/gptPreAuction.js +7 -7
- package/modules/gridBidAdapter.js +15 -16
- package/modules/gridNMBidAdapter.js +214 -63
- package/modules/growadvertisingBidAdapter.js +7 -8
- package/modules/gumgumBidAdapter.js +19 -13
- package/modules/h12mediaBidAdapter.js +12 -12
- package/modules/haloIdSystem.js +8 -8
- package/modules/hybridBidAdapter.js +7 -7
- package/modules/iasRtdProvider.js +79 -63
- package/modules/id5IdSystem.js +24 -24
- package/modules/idImportLibrary.js +35 -35
- package/modules/idxIdSystem.js +3 -3
- package/modules/impactifyBidAdapter.js +10 -10
- package/modules/improvedigitalBidAdapter.js +36 -36
- package/modules/imuIdSystem.js +6 -6
- package/modules/inmarBidAdapter.js +2 -2
- package/modules/innityBidAdapter.js +3 -3
- package/modules/inskinBidAdapter.js +14 -2
- package/modules/inskinBidAdapter.md +5 -4
- package/modules/instreamTracking.js +5 -5
- package/modules/integr8BidAdapter.js +4 -4
- package/modules/intentIqIdSystem.js +7 -7
- package/modules/interactiveOffersBidAdapter.js +5 -5
- package/modules/invibesBidAdapter.js +53 -19
- package/modules/invisiblyAnalyticsAdapter.js +5 -5
- package/modules/iqmBidAdapter.js +19 -19
- package/modules/iqzoneBidAdapter.js +5 -5
- package/modules/ixBidAdapter.js +73 -73
- package/modules/jixieBidAdapter.js +6 -6
- package/modules/justpremiumBidAdapter.js +5 -1
- package/modules/kargoBidAdapter.js +16 -9
- package/modules/kargoBidAdapter.md +20 -0
- package/modules/kinessoIdSystem.js +8 -8
- package/modules/koblerBidAdapter.js +12 -12
- package/modules/konduitAnalyticsAdapter.js +4 -4
- package/modules/konduitWrapper.js +14 -14
- package/modules/krushmediaBidAdapter.js +4 -4
- package/modules/kubientBidAdapter.js +5 -5
- package/modules/limelightDigitalBidAdapter.js +4 -4
- package/modules/liveIntentIdSystem.js +4 -5
- package/modules/livewrappedAnalyticsAdapter.js +27 -15
- package/modules/livewrappedBidAdapter.js +7 -7
- package/modules/liveyieldAnalyticsAdapter.js +13 -13
- package/modules/lockerdomeBidAdapter.js +2 -2
- package/modules/loganBidAdapter.js +4 -4
- package/modules/lotamePanoramaIdSystem.js +13 -13
- package/modules/lunamediahbBidAdapter.js +2 -2
- package/modules/madvertiseBidAdapter.js +3 -3
- package/modules/marsmediaBidAdapter.js +26 -26
- package/modules/mathildeadsBidAdapter.js +5 -5
- package/modules/mediaforceBidAdapter.js +11 -11
- package/modules/mediakeysBidAdapter.js +444 -53
- package/modules/mediakeysBidAdapter.md +108 -0
- package/modules/medianetAnalyticsAdapter.js +48 -125
- package/modules/medianetBidAdapter.js +38 -33
- package/modules/medianetRtdProvider.js +7 -7
- package/modules/merkleIdSystem.js +19 -19
- package/modules/mgidBidAdapter.js +50 -50
- package/modules/microadBidAdapter.js +3 -3
- package/modules/multibid/index.js +15 -13
- package/modules/mwOpenLinkIdSystem.js +7 -7
- package/modules/mytargetBidAdapter.js +112 -0
- package/modules/nativoBidAdapter.js +46 -31
- package/modules/nativoBidAdapter.md +0 -1
- package/modules/naveggIdSystem.js +3 -3
- package/modules/nextMillenniumBidAdapter.js +6 -6
- package/modules/nextrollBidAdapter.js +375 -0
- package/modules/nobidBidAdapter.js +12 -11
- package/modules/novatiqIdSystem.js +8 -8
- package/modules/oguryBidAdapter.js +22 -6
- package/modules/oneVideoBidAdapter.js +20 -20
- package/modules/onomagicBidAdapter.js +16 -16
- package/modules/ooloAnalyticsAdapter.js +13 -13
- package/modules/openwebBidAdapter.js +26 -26
- package/modules/openxAnalyticsAdapter.js +33 -33
- package/modules/openxBidAdapter.js +29 -29
- package/modules/operaadsBidAdapter.js +53 -53
- package/modules/optimeraRtdProvider.js +9 -9
- package/modules/optoutBidAdapter.js +3 -3
- package/modules/orbidderBidAdapter.js +3 -3
- package/modules/outbrainBidAdapter.js +13 -13
- package/modules/ozoneBidAdapter.js +131 -131
- package/modules/padsquadBidAdapter.js +4 -4
- package/modules/parrableIdSystem.js +17 -17
- package/modules/pixfutureBidAdapter.js +45 -25
- package/modules/pixfutureBidAdapter.md +127 -0
- package/modules/prebidServerBidAdapter/index.js +109 -105
- package/modules/prebidmanagerAnalyticsAdapter.js +7 -7
- package/modules/priceFloors.js +47 -47
- package/modules/proxistoreBidAdapter.js +6 -8
- package/modules/pubCommonId.js +11 -11
- package/modules/pubProvidedIdSystem.js +3 -3
- package/modules/publinkIdSystem.js +23 -7
- package/modules/publinkIdSystem.md +7 -2
- package/modules/pubmaticAnalyticsAdapter.js +16 -16
- package/modules/pubmaticBidAdapter.js +109 -93
- package/modules/pubmaticBidAdapter.md +1 -1
- package/modules/pubperfAnalyticsAdapter.js +3 -3
- package/modules/pubwiseAnalyticsAdapter.js +6 -6
- package/modules/pubwiseBidAdapter.js +23 -23
- package/modules/pubxBidAdapter.js +2 -2
- package/modules/pubxaiAnalyticsAdapter.js +7 -7
- package/modules/pulsepointBidAdapter.js +13 -13
- package/modules/pxyzBidAdapter.js +7 -7
- package/modules/quantcastBidAdapter.js +16 -16
- package/modules/radsBidAdapter.js +5 -5
- package/modules/realvuAnalyticsAdapter.js +5 -7
- package/modules/reconciliationRtdProvider.js +6 -6
- package/modules/relaidoBidAdapter.js +44 -38
- package/modules/resetdigitalBidAdapter.js +3 -4
- package/modules/revcontentBidAdapter.js +9 -9
- package/modules/rhythmoneBidAdapter.js +17 -16
- package/modules/richaudienceBidAdapter.js +9 -9
- package/modules/riseBidAdapter.js +26 -26
- package/modules/riseBidAdapter.md +1 -3
- package/modules/roxotAnalyticsAdapter.js +14 -14
- package/modules/rtbhouseBidAdapter.js +7 -7
- package/modules/rtbsapeBidAdapter.js +3 -4
- package/modules/rtdModule/index.js +3 -3
- package/modules/rubiconAnalyticsAdapter.js +82 -82
- package/modules/rubiconBidAdapter.js +72 -68
- package/modules/scaleableAnalyticsAdapter.js +2 -2
- package/modules/seedingAllianceBidAdapter.js +231 -0
- package/modules/seedtagBidAdapter.js +10 -10
- package/modules/sharedIdSystem.js +11 -11
- package/modules/sharethroughAnalyticsAdapter.js +8 -8
- package/modules/sharethroughBidAdapter.js +20 -27
- package/modules/showheroes-bsBidAdapter.js +23 -23
- package/modules/sigmoidAnalyticsAdapter.js +4 -5
- package/modules/sirdataRtdProvider.js +34 -34
- package/modules/sizeMappingV2.js +39 -39
- package/modules/slimcutBidAdapter.js +121 -0
- package/modules/smaatoBidAdapter.js +44 -44
- package/modules/smartadserverBidAdapter.js +7 -7
- package/modules/smartxBidAdapter.js +72 -72
- package/modules/smartyadsBidAdapter.js +2 -2
- package/modules/smilewantedBidAdapter.js +6 -6
- package/modules/sonobiAnalyticsAdapter.js +23 -23
- package/modules/sortableAnalyticsAdapter.js +5 -5
- package/modules/sortableBidAdapter.js +28 -28
- package/modules/sovrnAnalyticsAdapter.js +5 -5
- package/modules/sovrnBidAdapter.js +22 -22
- package/modules/spotxBidAdapter.js +97 -83
- package/modules/sspBCBidAdapter.js +216 -21
- package/modules/sspBCBidAdapter.md +1 -1
- package/modules/staqAnalyticsAdapter.js +9 -9
- package/modules/stroeerCoreBidAdapter.js +16 -16
- package/modules/sublimeBidAdapter.js +6 -6
- package/modules/talkadsBidAdapter.js +129 -0
- package/modules/talkadsBidAdapter.md +60 -0
- package/modules/tapadIdSystem.js +3 -3
- package/modules/tappxBidAdapter.js +63 -64
- package/modules/teadsBidAdapter.js +20 -20
- package/modules/telariaBidAdapter.js +17 -17
- package/modules/temedyaBidAdapter.js +4 -4
- package/modules/terceptAnalyticsAdapter.js +4 -4
- package/modules/theAdxBidAdapter.js +16 -16
- package/modules/timeoutRtdProvider.js +15 -15
- package/modules/tpmnBidAdapter.js +3 -3
- package/modules/trionBidAdapter.js +15 -15
- package/modules/tripleliftBidAdapter.js +27 -24
- package/modules/truereachBidAdapter.js +4 -4
- package/modules/trustxBidAdapter.js +22 -18
- package/modules/ucfunnelBidAdapter.js +3 -3
- package/modules/uid2IdSystem.js +6 -6
- package/modules/underdogmediaBidAdapter.js +4 -4
- package/modules/unicornBidAdapter.js +15 -15
- package/modules/unifiedIdSystem.js +4 -4
- package/modules/unrulyBidAdapter.js +16 -16
- package/modules/userId/eids.js +9 -9
- package/modules/userId/index.js +37 -35
- package/modules/validationFpdModule/index.js +15 -15
- package/modules/vdoaiBidAdapter.js +2 -2
- package/modules/verizonMediaIdSystem.js +5 -5
- package/modules/vidazooBidAdapter.js +5 -5
- package/modules/videobyteBidAdapter.js +24 -24
- package/modules/videoreachBidAdapter.js +7 -7
- package/modules/vidoomyBidAdapter.js +105 -22
- package/modules/viewdeosDXBidAdapter.js +17 -17
- package/modules/visxBidAdapter.js +21 -29
- package/modules/voxBidAdapter.js +7 -7
- package/modules/vuukleBidAdapter.js +2 -2
- package/modules/waardexBidAdapter.js +26 -26
- package/modules/weboramaRtdProvider.js +174 -0
- package/modules/weboramaRtdProvider.md +70 -0
- package/modules/winrBidAdapter.js +27 -27
- package/modules/wipesBidAdapter.js +2 -2
- package/modules/yahoosspBidAdapter.js +637 -0
- package/modules/yahoosspBidAdapter.md +795 -0
- package/modules/yieldlabBidAdapter.js +57 -12
- package/modules/yieldlabBidAdapter.md +16 -1
- package/modules/yieldliftBidAdapter.js +9 -9
- package/modules/yieldmoBidAdapter.js +64 -50
- package/modules/yieldoneAnalyticsAdapter.js +6 -6
- package/modules/yieldoneBidAdapter.js +11 -11
- package/modules/yuktamediaAnalyticsAdapter.js +15 -15
- package/modules/zeotapIdPlusIdSystem.js +2 -2
- package/modules/zetaBidAdapter.js +6 -6
- package/modules/zeta_global_sspBidAdapter.js +14 -14
- package/package.json +1 -1
- package/src/AnalyticsAdapter.js +6 -6
- package/src/Renderer.js +10 -8
- package/src/adapterManager.js +45 -42
- package/src/adloader.js +6 -6
- package/src/ajax.js +8 -9
- package/src/auction.js +26 -23
- package/src/bidfactory.js +2 -2
- package/src/config.js +52 -50
- package/src/cpmBucketManager.js +2 -2
- package/src/prebid.js +85 -81
- package/src/storageManager.js +5 -5
- package/src/targeting.js +25 -26
- package/src/userSync.js +35 -22
- package/src/videoCache.js +2 -2
- package/test/.eslintrc.js +2 -1
- package/test/spec/modules/adfBidAdapter_spec.js +55 -0
- package/test/spec/modules/adgenerationBidAdapter_spec.js +121 -50
- package/test/spec/modules/adhashBidAdapter_spec.js +155 -0
- package/test/spec/modules/adnuntiusBidAdapter_spec.js +68 -0
- package/test/spec/modules/adqueryBidAdapter_spec.js +185 -0
- package/test/spec/modules/afpBidAdapter_spec.js +306 -0
- package/test/spec/modules/atsAnalyticsAdapter_spec.js +37 -2
- package/test/spec/modules/bliinkBidAdapter_spec.js +87 -36
- package/test/spec/modules/colossussspBidAdapter_spec.js +14 -6
- package/test/spec/modules/cwireBidAdapter_spec.js +246 -0
- package/test/spec/modules/eplanningBidAdapter_spec.js +3 -3
- package/test/spec/modules/glimpseBidAdapter_spec.js +302 -204
- package/test/spec/modules/gridBidAdapter_spec.js +38 -2
- package/test/spec/modules/gridNMBidAdapter_spec.js +121 -47
- package/test/spec/modules/gumgumBidAdapter_spec.js +27 -6
- package/test/spec/modules/iasRtdProvider_spec.js +71 -6
- package/test/spec/modules/inskinBidAdapter_spec.js +10 -1
- package/test/spec/modules/invibesBidAdapter_spec.js +114 -2
- package/test/spec/modules/justpremiumBidAdapter_spec.js +16 -2
- package/test/spec/modules/livewrappedAnalyticsAdapter_spec.js +33 -7
- package/test/spec/modules/mediakeysBidAdapter_spec.js +406 -51
- package/test/spec/modules/medianetAnalyticsAdapter_spec.js +39 -7
- package/test/spec/modules/medianetBidAdapter_spec.js +62 -1
- package/test/spec/modules/mytargetBidAdapter_spec.js +199 -0
- package/test/spec/modules/nativoBidAdapter_spec.js +50 -3
- package/test/spec/modules/nextrollBidAdapter_spec.js +290 -0
- package/test/spec/modules/nobidBidAdapter_spec.js +65 -1
- package/test/spec/modules/oguryBidAdapter_spec.js +120 -7
- package/test/spec/modules/publinkIdSystem_spec.js +42 -12
- package/test/spec/modules/pubmaticBidAdapter_spec.js +217 -1
- package/test/spec/modules/relaidoBidAdapter_spec.js +21 -20
- package/test/spec/modules/rubiconAnalyticsAdapter_spec.js +100 -81
- package/test/spec/modules/rubiconAnalyticsSchema.json +5 -2
- package/test/spec/modules/seedingAllianceAdapter_spec.js +186 -0
- package/test/spec/modules/sharethroughBidAdapter_spec.js +156 -136
- package/test/spec/modules/slimcutBidAdapter_spec.js +200 -0
- package/test/spec/modules/spotxBidAdapter_spec.js +36 -0
- package/test/spec/modules/sspBCBidAdapter_spec.js +210 -62
- package/test/spec/modules/talkadsBidAdapter_spec.js +231 -0
- package/test/spec/modules/tappxBidAdapter_spec.js +39 -3
- package/test/spec/modules/tripleliftBidAdapter_spec.js +2 -0
- package/test/spec/modules/trustxBidAdapter_spec.js +35 -2
- package/test/spec/modules/unicornBidAdapter_spec.js +4 -4
- package/test/spec/modules/visxBidAdapter_spec.js +48 -4
- package/test/spec/modules/weboramaRtdProvider_spec.js +288 -0
- package/test/spec/modules/yahoosspBidAdapter_spec.js +1332 -0
- package/test/spec/modules/yieldlabBidAdapter_spec.js +65 -1
- package/test/spec/modules/yieldmoBidAdapter_spec.js +30 -9
- package/test/spec/unit/pbjs_api_spec.js +4 -0
- package/test/spec/userSync_spec.js +30 -2
- package/modules/turktelekomBidAdapter.md +0 -49
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import adapter from '../src/AnalyticsAdapter.js';
|
|
2
2
|
import CONSTANTS from '../src/constants.json';
|
|
3
3
|
import adapterManager from '../src/adapterManager.js';
|
|
4
|
-
import
|
|
4
|
+
import { logError, parseUrl, _each } from '../src/utils.js';
|
|
5
5
|
import {ajax} from '../src/ajax.js';
|
|
6
6
|
import {getStorageManager} from '../src/storageManager.js';
|
|
7
7
|
import {config} from '../src/config.js';
|
|
@@ -90,7 +90,7 @@ analyticsAdapter.originEnableAnalytics = analyticsAdapter.enableAnalytics;
|
|
|
90
90
|
|
|
91
91
|
analyticsAdapter.enableAnalytics = (config) => {
|
|
92
92
|
if (!config.options.pubId) {
|
|
93
|
-
|
|
93
|
+
logError('PubId is not defined. Analytics won\'t work');
|
|
94
94
|
return;
|
|
95
95
|
}
|
|
96
96
|
analyticsAdapter.context = {
|
|
@@ -215,7 +215,7 @@ export function getUmtSource(pageUrl, referrer) {
|
|
|
215
215
|
if (se) {
|
|
216
216
|
return asUtm(se, ORGANIC, ORGANIC);
|
|
217
217
|
}
|
|
218
|
-
let parsedUrl =
|
|
218
|
+
let parsedUrl = parseUrl(pageUrl);
|
|
219
219
|
let [refHost, refPath] = getReferrer(referrer);
|
|
220
220
|
if (refHost && refHost !== parsedUrl.hostname) {
|
|
221
221
|
return asUtm(refHost, REFERRAL, REFERRAL, '', refPath);
|
|
@@ -242,17 +242,17 @@ export function getUmtSource(pageUrl, referrer) {
|
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
function getReferrer(referrer) {
|
|
245
|
-
let ref =
|
|
245
|
+
let ref = parseUrl(referrer);
|
|
246
246
|
return [ref.hostname, ref.pathname];
|
|
247
247
|
}
|
|
248
248
|
|
|
249
249
|
function getUTM(pageUrl) {
|
|
250
|
-
let urlParameters =
|
|
250
|
+
let urlParameters = parseUrl(pageUrl).search;
|
|
251
251
|
if (!urlParameters['utm_campaign'] || !urlParameters['utm_source']) {
|
|
252
252
|
return;
|
|
253
253
|
}
|
|
254
254
|
let utmArgs = [];
|
|
255
|
-
|
|
255
|
+
_each(UTM_TAGS, (utmTagName) => {
|
|
256
256
|
let utmValue = urlParameters[utmTagName] || '';
|
|
257
257
|
utmArgs.push(utmValue);
|
|
258
258
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { deepAccess, parseSizesInput, isArray, deepSetValue, parseUrl, isStr, isNumber, logInfo } from '../src/utils.js';
|
|
2
2
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
3
3
|
import {BANNER, VIDEO} from '../src/mediaTypes.js';
|
|
4
4
|
import {config} from '../src/config.js';
|
|
@@ -19,12 +19,12 @@ function buildImp(bidRequest) {
|
|
|
19
19
|
tagid: bidRequest.adUnitCode
|
|
20
20
|
};
|
|
21
21
|
let mediaType;
|
|
22
|
-
let bannerReq =
|
|
23
|
-
let videoReq =
|
|
22
|
+
let bannerReq = deepAccess(bidRequest, `mediaTypes.banner`);
|
|
23
|
+
let videoReq = deepAccess(bidRequest, `mediaTypes.video`);
|
|
24
24
|
if (bannerReq) {
|
|
25
25
|
let sizes = canonicalizeSizesArray(bannerReq.sizes);
|
|
26
26
|
imp.banner = {
|
|
27
|
-
format:
|
|
27
|
+
format: parseSizesInput(sizes)
|
|
28
28
|
};
|
|
29
29
|
mediaType = BANNER;
|
|
30
30
|
} else if (videoReq) {
|
|
@@ -51,7 +51,7 @@ function buildImp(bidRequest) {
|
|
|
51
51
|
* @return Array[Array[Number]]
|
|
52
52
|
*/
|
|
53
53
|
function canonicalizeSizesArray(sizes) {
|
|
54
|
-
if (sizes.length === 2 && !
|
|
54
|
+
if (sizes.length === 2 && !isArray(sizes[0])) {
|
|
55
55
|
return [sizes];
|
|
56
56
|
}
|
|
57
57
|
return sizes;
|
|
@@ -67,23 +67,23 @@ function buildRequestParams(tags, bidderRequest) {
|
|
|
67
67
|
};
|
|
68
68
|
if (gdprConsent) {
|
|
69
69
|
if (gdprConsent.gdprApplies !== undefined) {
|
|
70
|
-
|
|
70
|
+
deepSetValue(req, 'user.gdpr', ~~gdprConsent.gdprApplies);
|
|
71
71
|
}
|
|
72
72
|
if (gdprConsent.consentString !== undefined) {
|
|
73
|
-
|
|
73
|
+
deepSetValue(req, 'user.consent', gdprConsent.consentString);
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
if (uspConsent) {
|
|
77
|
-
|
|
77
|
+
deepSetValue(req, 'user.us_privacy', uspConsent);
|
|
78
78
|
}
|
|
79
79
|
if (config.getConfig('coppa')) {
|
|
80
|
-
|
|
80
|
+
deepSetValue(req, 'user.coppa', 1);
|
|
81
81
|
}
|
|
82
82
|
return req;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
function buildSite(refInfo) {
|
|
86
|
-
let loc =
|
|
86
|
+
let loc = parseUrl(refInfo.referer);
|
|
87
87
|
let result = {
|
|
88
88
|
page: `${loc.protocol}://${loc.hostname}${loc.pathname}`,
|
|
89
89
|
secure: ~~(loc.protocol === 'https')
|
|
@@ -126,23 +126,23 @@ function buildBid(tag) {
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
function fillBidMeta(bid, tag) {
|
|
129
|
-
if (
|
|
130
|
-
|
|
129
|
+
if (isStr(tag.agencyName)) {
|
|
130
|
+
deepSetValue(bid, 'meta.agencyName', tag.agencyName);
|
|
131
131
|
}
|
|
132
|
-
if (
|
|
133
|
-
|
|
132
|
+
if (isNumber(tag.advertiserId)) {
|
|
133
|
+
deepSetValue(bid, 'meta.advertiserId', tag.advertiserId);
|
|
134
134
|
}
|
|
135
|
-
if (
|
|
136
|
-
|
|
135
|
+
if (isStr(tag.advertiserName)) {
|
|
136
|
+
deepSetValue(bid, 'meta.advertiserName', tag.advertiserName);
|
|
137
137
|
}
|
|
138
|
-
if (
|
|
139
|
-
|
|
138
|
+
if (isArray(tag.advertiserDomains)) {
|
|
139
|
+
deepSetValue(bid, 'meta.advertiserDomains', tag.advertiserDomains);
|
|
140
140
|
}
|
|
141
|
-
if (
|
|
142
|
-
|
|
141
|
+
if (isStr(tag.primaryCatId)) {
|
|
142
|
+
deepSetValue(bid, 'meta.primaryCatId', tag.primaryCatId);
|
|
143
143
|
}
|
|
144
|
-
if (
|
|
145
|
-
|
|
144
|
+
if (isArray(tag.secondaryCatIds)) {
|
|
145
|
+
deepSetValue(bid, 'meta.secondaryCatIds', tag.secondaryCatIds);
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
|
|
@@ -204,7 +204,7 @@ export const spec = {
|
|
|
204
204
|
return [];
|
|
205
205
|
}
|
|
206
206
|
if (response.debug) {
|
|
207
|
-
|
|
207
|
+
logInfo(`ADKERNEL DEBUG:\n${response.debug}`);
|
|
208
208
|
}
|
|
209
209
|
return response.tags.map(buildBid);
|
|
210
210
|
},
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import {
|
|
2
|
+
isStr, isArray, isPlainObject, deepSetValue, isNumber, deepAccess, getAdUnitSizes, parseGPTSingleSizeArrayToRtbSize,
|
|
3
|
+
cleanObj, contains, getDNT, parseUrl, createTrackPixelHtml, _each, isArrayOfNums
|
|
4
|
+
} from '../src/utils.js';
|
|
2
5
|
import {BANNER, NATIVE, VIDEO} from '../src/mediaTypes.js';
|
|
3
6
|
import {registerBidder} from '../src/adapters/bidderFactory.js';
|
|
4
7
|
import find from 'core-js-pure/features/array/find.js';
|
|
@@ -71,7 +74,9 @@ export const spec = {
|
|
|
71
74
|
{code: 'adomega'},
|
|
72
75
|
{code: 'denakop'},
|
|
73
76
|
{code: 'rtbanalytica'},
|
|
74
|
-
{code: 'unibots'}
|
|
77
|
+
{code: 'unibots'},
|
|
78
|
+
{code: 'ergadx'},
|
|
79
|
+
{code: 'turktelekom'}
|
|
75
80
|
],
|
|
76
81
|
supportedMediaTypes: [BANNER, VIDEO, NATIVE],
|
|
77
82
|
|
|
@@ -154,24 +159,24 @@ export const spec = {
|
|
|
154
159
|
prBid.mediaType = NATIVE;
|
|
155
160
|
prBid.native = buildNativeAd(JSON.parse(rtbBid.adm));
|
|
156
161
|
}
|
|
157
|
-
if (
|
|
162
|
+
if (isStr(rtbBid.dealid)) {
|
|
158
163
|
prBid.dealId = rtbBid.dealid;
|
|
159
164
|
}
|
|
160
|
-
if (
|
|
161
|
-
|
|
165
|
+
if (isArray(rtbBid.adomain)) {
|
|
166
|
+
deepSetValue(prBid, 'meta.advertiserDomains', rtbBid.adomain);
|
|
162
167
|
}
|
|
163
|
-
if (
|
|
164
|
-
|
|
168
|
+
if (isArray(rtbBid.cat)) {
|
|
169
|
+
deepSetValue(prBid, 'meta.secondaryCatIds', rtbBid.cat);
|
|
165
170
|
}
|
|
166
|
-
if (
|
|
167
|
-
if (
|
|
168
|
-
|
|
171
|
+
if (isPlainObject(rtbBid.ext)) {
|
|
172
|
+
if (isNumber(rtbBid.ext.advertiser_id)) {
|
|
173
|
+
deepSetValue(prBid, 'meta.advertiserId', rtbBid.ext.advertiser_id);
|
|
169
174
|
}
|
|
170
|
-
if (
|
|
171
|
-
|
|
175
|
+
if (isStr(rtbBid.ext.advertiser_name)) {
|
|
176
|
+
deepSetValue(prBid, 'meta.advertiserName', rtbBid.ext.advertiser_name);
|
|
172
177
|
}
|
|
173
|
-
if (
|
|
174
|
-
|
|
178
|
+
if (isStr(rtbBid.ext.agency_name)) {
|
|
179
|
+
deepSetValue(prBid, 'meta.agencyName', rtbBid.ext.agency_name);
|
|
175
180
|
}
|
|
176
181
|
}
|
|
177
182
|
|
|
@@ -241,19 +246,19 @@ function buildImp(bidRequest, secure) {
|
|
|
241
246
|
var mediaType;
|
|
242
247
|
var sizes = [];
|
|
243
248
|
|
|
244
|
-
if (
|
|
245
|
-
sizes =
|
|
249
|
+
if (deepAccess(bidRequest, 'mediaTypes.banner')) {
|
|
250
|
+
sizes = getAdUnitSizes(bidRequest);
|
|
246
251
|
imp.banner = {
|
|
247
|
-
format: sizes.map(wh =>
|
|
252
|
+
format: sizes.map(wh => parseGPTSingleSizeArrayToRtbSize(wh)),
|
|
248
253
|
topframe: 0
|
|
249
254
|
};
|
|
250
255
|
mediaType = BANNER;
|
|
251
|
-
} else if (
|
|
252
|
-
let video =
|
|
256
|
+
} else if (deepAccess(bidRequest, 'mediaTypes.video')) {
|
|
257
|
+
let video = deepAccess(bidRequest, 'mediaTypes.video');
|
|
253
258
|
imp.video = {};
|
|
254
259
|
if (video.playerSize) {
|
|
255
260
|
sizes = video.playerSize[0];
|
|
256
|
-
imp.video = Object.assign(imp.video,
|
|
261
|
+
imp.video = Object.assign(imp.video, parseGPTSingleSizeArrayToRtbSize(sizes) || {});
|
|
257
262
|
}
|
|
258
263
|
if (bidRequest.params.video) {
|
|
259
264
|
Object.keys(bidRequest.params.video)
|
|
@@ -261,7 +266,7 @@ function buildImp(bidRequest, secure) {
|
|
|
261
266
|
.forEach(key => imp.video[key] = bidRequest.params.video[key]);
|
|
262
267
|
}
|
|
263
268
|
mediaType = VIDEO;
|
|
264
|
-
} else if (
|
|
269
|
+
} else if (deepAccess(bidRequest, 'mediaTypes.native')) {
|
|
265
270
|
let nativeRequest = buildNativeRequest(bidRequest.mediaTypes.native);
|
|
266
271
|
imp.native = {
|
|
267
272
|
ver: '1.1',
|
|
@@ -299,7 +304,7 @@ function buildNativeRequest(nativeReq) {
|
|
|
299
304
|
if (desc.assetType === 'img') {
|
|
300
305
|
assetRoot[desc.assetType] = buildImageAsset(desc, v);
|
|
301
306
|
} else if (desc.assetType === 'data') {
|
|
302
|
-
assetRoot.data =
|
|
307
|
+
assetRoot.data = cleanObj({type: desc.type, len: v.len});
|
|
303
308
|
} else if (desc.assetType === 'title') {
|
|
304
309
|
assetRoot.title = {len: v.len || 90};
|
|
305
310
|
} else {
|
|
@@ -323,7 +328,7 @@ function buildImageAsset(desc, val) {
|
|
|
323
328
|
img.wmin = val.aspect_ratios[0].min_width;
|
|
324
329
|
img.hmin = val.aspect_ratios[0].min_height;
|
|
325
330
|
}
|
|
326
|
-
return
|
|
331
|
+
return cleanObj(img);
|
|
327
332
|
}
|
|
328
333
|
|
|
329
334
|
/**
|
|
@@ -336,9 +341,9 @@ function isSyncMethodAllowed(syncRule, bidderCode) {
|
|
|
336
341
|
if (!syncRule) {
|
|
337
342
|
return false;
|
|
338
343
|
}
|
|
339
|
-
let bidders =
|
|
344
|
+
let bidders = isArray(syncRule.bidders) ? syncRule.bidders : [bidderCode];
|
|
340
345
|
let rule = syncRule.filter === 'include';
|
|
341
|
-
return
|
|
346
|
+
return contains(bidders, bidderCode) === rule;
|
|
342
347
|
}
|
|
343
348
|
|
|
344
349
|
/**
|
|
@@ -382,33 +387,33 @@ function buildRtbRequest(imps, bidderRequest, schain) {
|
|
|
382
387
|
},
|
|
383
388
|
'tmax': parseInt(timeout)
|
|
384
389
|
};
|
|
385
|
-
if (
|
|
390
|
+
if (getDNT()) {
|
|
386
391
|
req.device.dnt = 1;
|
|
387
392
|
}
|
|
388
393
|
if (gdprConsent) {
|
|
389
394
|
if (gdprConsent.gdprApplies !== undefined) {
|
|
390
|
-
|
|
395
|
+
deepSetValue(req, 'regs.ext.gdpr', ~~gdprConsent.gdprApplies);
|
|
391
396
|
}
|
|
392
397
|
if (gdprConsent.consentString !== undefined) {
|
|
393
|
-
|
|
398
|
+
deepSetValue(req, 'user.ext.consent', gdprConsent.consentString);
|
|
394
399
|
}
|
|
395
400
|
}
|
|
396
401
|
if (uspConsent) {
|
|
397
|
-
|
|
402
|
+
deepSetValue(req, 'regs.ext.us_privacy', uspConsent);
|
|
398
403
|
}
|
|
399
404
|
if (coppa) {
|
|
400
|
-
|
|
405
|
+
deepSetValue(req, 'regs.coppa', 1);
|
|
401
406
|
}
|
|
402
407
|
let syncMethod = getAllowedSyncMethod(bidderCode);
|
|
403
408
|
if (syncMethod) {
|
|
404
|
-
|
|
409
|
+
deepSetValue(req, 'ext.adk_usersync', syncMethod);
|
|
405
410
|
}
|
|
406
411
|
if (schain) {
|
|
407
|
-
|
|
412
|
+
deepSetValue(req, 'source.ext.schain', schain);
|
|
408
413
|
}
|
|
409
414
|
let eids = getExtendedUserIds(bidderRequest);
|
|
410
415
|
if (eids) {
|
|
411
|
-
|
|
416
|
+
deepSetValue(req, 'user.ext.eids', eids);
|
|
412
417
|
}
|
|
413
418
|
return req;
|
|
414
419
|
}
|
|
@@ -426,7 +431,7 @@ function getLanguage() {
|
|
|
426
431
|
* Creates site description object
|
|
427
432
|
*/
|
|
428
433
|
function createSite(refInfo) {
|
|
429
|
-
let url =
|
|
434
|
+
let url = parseUrl(refInfo.referer);
|
|
430
435
|
let site = {
|
|
431
436
|
'domain': url.hostname,
|
|
432
437
|
'page': `${url.protocol}://${url.hostname}${url.pathname}`
|
|
@@ -442,8 +447,8 @@ function createSite(refInfo) {
|
|
|
442
447
|
}
|
|
443
448
|
|
|
444
449
|
function getExtendedUserIds(bidderRequest) {
|
|
445
|
-
let eids =
|
|
446
|
-
if (
|
|
450
|
+
let eids = deepAccess(bidderRequest, 'bids.0.userIdAsEids');
|
|
451
|
+
if (isArray(eids)) {
|
|
447
452
|
return eids;
|
|
448
453
|
}
|
|
449
454
|
}
|
|
@@ -455,7 +460,7 @@ function getExtendedUserIds(bidderRequest) {
|
|
|
455
460
|
function formatAdMarkup(bid) {
|
|
456
461
|
let adm = bid.adm;
|
|
457
462
|
if ('nurl' in bid) {
|
|
458
|
-
adm +=
|
|
463
|
+
adm += createTrackPixelHtml(`${bid.nurl}&px=1`);
|
|
459
464
|
}
|
|
460
465
|
return adm;
|
|
461
466
|
}
|
|
@@ -465,8 +470,8 @@ function formatAdMarkup(bid) {
|
|
|
465
470
|
*/
|
|
466
471
|
function validateNativeAdUnit(adUnit) {
|
|
467
472
|
return validateNativeImageSize(adUnit.image) && validateNativeImageSize(adUnit.icon) &&
|
|
468
|
-
!
|
|
469
|
-
!
|
|
473
|
+
!deepAccess(adUnit, 'privacyLink.required') && // not supported yet
|
|
474
|
+
!deepAccess(adUnit, 'privacyIcon.required'); // not supported yet
|
|
470
475
|
}
|
|
471
476
|
|
|
472
477
|
/**
|
|
@@ -477,9 +482,9 @@ function validateNativeImageSize(img) {
|
|
|
477
482
|
return true;
|
|
478
483
|
}
|
|
479
484
|
if (img.sizes) {
|
|
480
|
-
return
|
|
485
|
+
return isArrayOfNums(img.sizes, 2);
|
|
481
486
|
}
|
|
482
|
-
if (
|
|
487
|
+
if (isArray(img.aspect_ratios)) {
|
|
483
488
|
return img.aspect_ratios.length > 0 && img.aspect_ratios[0].min_height && img.aspect_ratios[0].min_width;
|
|
484
489
|
}
|
|
485
490
|
return true;
|
|
@@ -496,14 +501,14 @@ function buildNativeAd(nativeResp) {
|
|
|
496
501
|
javascriptTrackers: jstracker ? [jstracker] : undefined,
|
|
497
502
|
privacyLink: privacy,
|
|
498
503
|
};
|
|
499
|
-
|
|
504
|
+
_each(assets, asset => {
|
|
500
505
|
let assetName = NATIVE_MODEL[asset.id].name;
|
|
501
506
|
let assetType = NATIVE_MODEL[asset.id].assetType;
|
|
502
|
-
nativeAd[assetName] = asset[assetType].text || asset[assetType].value ||
|
|
507
|
+
nativeAd[assetName] = asset[assetType].text || asset[assetType].value || cleanObj({
|
|
503
508
|
url: asset[assetType].url,
|
|
504
509
|
width: asset[assetType].w,
|
|
505
510
|
height: asset[assetType].h
|
|
506
511
|
});
|
|
507
512
|
});
|
|
508
|
-
return
|
|
513
|
+
return cleanObj(nativeAd);
|
|
509
514
|
}
|
|
@@ -11,48 +11,48 @@ import { command as analyticsCommand, COMMAND } from './adlooxAnalyticsAdapter.j
|
|
|
11
11
|
import { ajax } from '../src/ajax.js';
|
|
12
12
|
import { EVENTS } from '../src/constants.json';
|
|
13
13
|
import { targeting } from '../src/targeting.js';
|
|
14
|
-
import
|
|
14
|
+
import { logInfo, isFn, logError, isPlainObject, isStr, isBoolean, deepSetValue, deepClone, timestamp, logWarn } from '../src/utils.js';
|
|
15
15
|
|
|
16
16
|
const MODULE = 'adlooxAdserverVideo';
|
|
17
17
|
|
|
18
18
|
const URL_VAST = 'https://j.adlooxtracking.com/ads/vast/tag.php';
|
|
19
19
|
|
|
20
20
|
export function buildVideoUrl(options, callback) {
|
|
21
|
-
|
|
21
|
+
logInfo(MODULE, 'buildVideoUrl', options);
|
|
22
22
|
|
|
23
|
-
if (!
|
|
24
|
-
|
|
23
|
+
if (!isFn(callback)) {
|
|
24
|
+
logError(MODULE, 'invalid callback');
|
|
25
25
|
return false;
|
|
26
26
|
}
|
|
27
|
-
if (!
|
|
28
|
-
|
|
27
|
+
if (!isPlainObject(options)) {
|
|
28
|
+
logError(MODULE, 'missing options');
|
|
29
29
|
return false;
|
|
30
30
|
}
|
|
31
|
-
if (!(options.url_vast === undefined ||
|
|
32
|
-
|
|
31
|
+
if (!(options.url_vast === undefined || isStr(options.url_vast))) {
|
|
32
|
+
logError(MODULE, 'invalid url_vast options value');
|
|
33
33
|
return false;
|
|
34
34
|
}
|
|
35
|
-
if (!(
|
|
36
|
-
|
|
35
|
+
if (!(isPlainObject(options.adUnit) || isPlainObject(options.bid))) {
|
|
36
|
+
logError(MODULE, "requires either 'adUnit' or 'bid' options value");
|
|
37
37
|
return false;
|
|
38
38
|
}
|
|
39
|
-
if (!
|
|
40
|
-
|
|
39
|
+
if (!isStr(options.url)) {
|
|
40
|
+
logError(MODULE, 'invalid url options value');
|
|
41
41
|
return false;
|
|
42
42
|
}
|
|
43
|
-
if (!(options.wrap === undefined ||
|
|
44
|
-
|
|
43
|
+
if (!(options.wrap === undefined || isBoolean(options.wrap))) {
|
|
44
|
+
logError(MODULE, 'invalid wrap options value');
|
|
45
45
|
return false;
|
|
46
46
|
}
|
|
47
|
-
if (!(options.blob === undefined ||
|
|
48
|
-
|
|
47
|
+
if (!(options.blob === undefined || isBoolean(options.blob))) {
|
|
48
|
+
logError(MODULE, 'invalid blob options value');
|
|
49
49
|
return false;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
// same logic used in modules/dfpAdServerVideo.js
|
|
53
53
|
options.bid = options.bid || targeting.getWinningBids(options.adUnit.code)[0];
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
deepSetValue(options.bid, 'ext.adloox.video.adserver', true);
|
|
56
56
|
|
|
57
57
|
if (options.wrap !== false) {
|
|
58
58
|
VASTWrapper(options, callback);
|
|
@@ -70,7 +70,7 @@ registerVideoSupport('adloox', {
|
|
|
70
70
|
function track(options, callback) {
|
|
71
71
|
callback(options.url);
|
|
72
72
|
|
|
73
|
-
const bid =
|
|
73
|
+
const bid = deepClone(options.bid);
|
|
74
74
|
bid.ext.adloox.video.adserver = false;
|
|
75
75
|
|
|
76
76
|
analyticsCommand(COMMAND.TRACK, {
|
|
@@ -85,13 +85,13 @@ function VASTWrapper(options, callback) {
|
|
|
85
85
|
function process(result) {
|
|
86
86
|
function getAd(xml) {
|
|
87
87
|
if (!xml || xml.documentElement.tagName != 'VAST') {
|
|
88
|
-
|
|
88
|
+
logError(MODULE, 'not a VAST tag, using non-wrapped tracking');
|
|
89
89
|
return;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
const ads = xml.querySelectorAll('Ad');
|
|
93
93
|
if (!ads.length) {
|
|
94
|
-
|
|
94
|
+
logError(MODULE, 'no VAST ads, using non-wrapped tracking');
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
97
97
|
|
|
@@ -132,7 +132,7 @@ function VASTWrapper(options, callback) {
|
|
|
132
132
|
|
|
133
133
|
options.url = toBlob(chain[0]);
|
|
134
134
|
|
|
135
|
-
const epoch =
|
|
135
|
+
const epoch = timestamp() - new Date().getTimezoneOffset() * 60 * 1000;
|
|
136
136
|
const expires0 = options.bid.ttl * 1000 - (epoch - options.bid.responseTimestamp);
|
|
137
137
|
const expires = Math.max(30 * 1000, expires0);
|
|
138
138
|
setTimeout(function() { urls.forEach(u => URL.revokeObjectURL(u)) }, expires);
|
|
@@ -154,7 +154,7 @@ function VASTWrapper(options, callback) {
|
|
|
154
154
|
const wrapper = getWrapper(ad);
|
|
155
155
|
if (wrapper) {
|
|
156
156
|
if (chain.length > 5) {
|
|
157
|
-
|
|
157
|
+
logWarn(MODULE, `got wrapped tag at depth ${chain.length}, not continuing`);
|
|
158
158
|
blobify();
|
|
159
159
|
return track(options, callback);
|
|
160
160
|
}
|
|
@@ -191,7 +191,7 @@ function VASTWrapper(options, callback) {
|
|
|
191
191
|
if (duration != 15) args.push([ 'duration', duration ]);
|
|
192
192
|
if (skip) args.push([ 'skip', skip ]);
|
|
193
193
|
|
|
194
|
-
|
|
194
|
+
logInfo(MODULE, `processed VAST tag chain of depth ${chain.depth}, running callback`);
|
|
195
195
|
|
|
196
196
|
analyticsCommand(COMMAND.URL, {
|
|
197
197
|
url: (options.url_vast || URL_VAST) + '?',
|
|
@@ -202,7 +202,7 @@ function VASTWrapper(options, callback) {
|
|
|
202
202
|
}
|
|
203
203
|
|
|
204
204
|
function fetch(url, withoutcredentials) {
|
|
205
|
-
|
|
205
|
+
logInfo(MODULE, `fetching VAST ${url}`);
|
|
206
206
|
|
|
207
207
|
ajax(url, {
|
|
208
208
|
success: function(responseText, q) {
|
|
@@ -210,10 +210,10 @@ function VASTWrapper(options, callback) {
|
|
|
210
210
|
},
|
|
211
211
|
error: function(statusText, q) {
|
|
212
212
|
if (!withoutcredentials) {
|
|
213
|
-
|
|
213
|
+
logWarn(MODULE, `unable to download (${statusText}), suspected CORS withCredentials problem, retrying without`);
|
|
214
214
|
return fetch(url, true);
|
|
215
215
|
}
|
|
216
|
-
|
|
216
|
+
logError(MODULE, `failed to fetch (${statusText}), using non-wrapped tracking`);
|
|
217
217
|
process();
|
|
218
218
|
}
|
|
219
219
|
}, undefined, { withCredentials: !withoutcredentials });
|