prebid.js 7.10.0 → 7.13.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/.github/PULL_REQUEST_TEMPLATE.md +16 -10
- package/.github/codeql/codeql-config.yml +4 -0
- package/.github/workflows/codeql-analysis.yml +73 -0
- package/.github/workflows/issue_tracker.yml +1 -1
- package/README.md +0 -2
- package/babelConfig.js +10 -4
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/acuityAdsBidAdapter.js +1 -0
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adbookpspBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adkernelBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adriverBidAdapter.js +1 -1
- package/dist/adriverIdSystem.js +1 -1
- package/dist/adtelligentBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -0
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/alkimiBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aniviewBidAdapter.js +1 -1
- package/dist/aolBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/audiencerunBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/beopBidAdapter.js +1 -1
- package/dist/betweenBidAdapter.js +1 -1
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/bidwatchAnalyticsAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bluebillywigBidAdapter.js +1 -1
- package/dist/brandmetricsRtdProvider.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/browsiRtdProvider.js +1 -1
- package/dist/cleanioRtdProvider.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consentManagement.js +1 -1
- package/dist/consentManagementUsp.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/cpmstarBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/currency.js +1 -1
- package/dist/datawrkzBidAdapter.js +1 -0
- package/dist/debugging-standalone.js +1 -1
- package/dist/dfpAdServerVideo.js +1 -1
- package/dist/dgkeywordRtdProvider.js +1 -1
- package/dist/displayioBidAdapter.js +1 -3
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/enrichmentFpdModule.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/glimpseBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/goldbachBidAdapter.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gridNMBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imRtdProvider.js +1 -1
- package/dist/impactifyBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmarBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/ixBidAdapter.js +1 -1
- package/dist/jixieBidAdapter.js +1 -1
- package/dist/justpremiumBidAdapter.js +1 -1
- package/dist/kargoBidAdapter.js +1 -1
- package/dist/konduitAnalyticsAdapter.js +1 -1
- package/dist/kueezBidAdapter.js +1 -1
- package/dist/lassoBidAdapter.js +1 -1
- package/dist/lifestreetBidAdapter.js +1 -0
- package/dist/limelightDigitalBidAdapter.js +1 -1
- package/dist/liveyieldAnalyticsAdapter.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.js +1 -0
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/mediagoBidAdapter.js +1 -0
- package/dist/mediakeysBidAdapter.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/minutemediaBidAdapter.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/not-for-prod/prebid.js +153 -147
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/oneKeyIdSystem.js +1 -0
- package/dist/oneKeyRtdProvider.js +1 -0
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxAnalyticsAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/parrableIdSystem.js +1 -1
- package/dist/permutiveRtdProvider.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/prebid-core.js +2 -2
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/rasBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseBidAdapter.js +1 -1
- package/dist/rtbhouseBidAdapter.js +1 -1
- package/dist/rubiconAnalyticsAdapter.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/shinezBidAdapter.js +1 -1
- package/dist/smaatoBidAdapter.js +1 -1
- package/dist/smartadserverBidAdapter.js +1 -1
- package/dist/smartxBidAdapter.js +1 -1
- package/dist/smilewantedBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnAnalyticsAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/synacormediaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/trustpidSystem.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooBidAdapter.js +1 -1
- package/dist/videobyteBidAdapter.js +1 -1
- package/dist/viewability.js +1 -1
- package/dist/visxBidAdapter.js +1 -1
- package/dist/vuukleBidAdapter.js +1 -1
- package/dist/widespaceBidAdapter.js +1 -1
- package/dist/winrBidAdapter.js +1 -1
- package/dist/yahoosspBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/dist/zeta_global_sspBidAdapter.js +1 -1
- package/integrationExamples/gpt/permutiveRtdProvider_example.html +1 -1
- package/karma.conf.maker.js +2 -13
- package/modules/.submodules.json +2 -0
- package/modules/acuityAdsBidAdapter.js +207 -0
- package/modules/acuityAdsBidAdapter.md +79 -0
- package/modules/adagioBidAdapter.js +2 -3
- package/modules/adgenerationBidAdapter.js +2 -2
- package/modules/adkernelBidAdapter.js +28 -12
- package/modules/admixerBidAdapter.js +1 -1
- package/modules/adnowBidAdapter.js +1 -1
- package/modules/adpod.js +1 -1
- package/modules/adrelevantisBidAdapter.js +2 -2
- package/modules/adriverBidAdapter.js +5 -12
- package/modules/adriverIdSystem.js +2 -1
- package/modules/adtargetBidAdapter.js +1 -1
- package/modules/adtelligentBidAdapter.js +6 -2
- package/modules/adtrgtmeBidAdapter.js +333 -0
- package/modules/adtrgtmeBidAdapter.md +69 -0
- package/modules/adtrueBidAdapter.js +1 -1
- package/modules/adxpremiumAnalyticsAdapter.js +1 -1
- package/modules/adyoulikeBidAdapter.js +1 -1
- package/modules/alkimiBidAdapter.js +2 -1
- package/modules/aniviewBidAdapter.js +1 -1
- package/modules/appnexusBidAdapter.js +13 -93
- package/modules/apstreamBidAdapter.js +2 -2
- package/modules/beopBidAdapter.js +4 -4
- package/modules/betweenBidAdapter.js +4 -4
- package/modules/bidwatchAnalyticsAdapter.js +112 -59
- package/modules/bizzclickBidAdapter.js +1 -1
- package/modules/brightMountainMediaBidAdapter.js +1 -1
- package/modules/browsiRtdProvider.js +24 -10
- package/modules/cleanmedianetBidAdapter.js +1 -1
- package/modules/consentManagement.js +1 -1
- package/modules/consentManagementUsp.js +1 -1
- package/modules/consumableBidAdapter.js +43 -3
- package/modules/cpmstarBidAdapter.js +23 -13
- package/modules/criteoBidAdapter.js +19 -13
- package/modules/currency.js +1 -0
- package/modules/cwireBidAdapter.js +1 -1
- package/modules/datablocksBidAdapter.js +1 -1
- package/modules/datawrkzBidAdapter.js +633 -0
- package/modules/datawrkzBidAdapter.md +160 -0
- package/modules/dfpAdServerVideo.js +2 -2
- package/modules/dgkeywordRtdProvider.js +10 -1
- package/modules/displayioBidAdapter.js +92 -97
- package/modules/dspxBidAdapter.js +1 -1
- package/modules/e_volutionBidAdapter.js +3 -3
- package/modules/ebdrBidAdapter.js +1 -1
- package/modules/emx_digitalBidAdapter.js +1 -1
- package/modules/enrichmentFpdModule.js +11 -0
- package/modules/fabrickIdSystem.js +2 -2
- package/modules/gamoshiBidAdapter.js +1 -1
- package/modules/getintentBidAdapter.js +1 -1
- package/modules/gjirafaBidAdapter.js +2 -2
- package/modules/goldbachBidAdapter.js +8 -8
- package/modules/gothamadsBidAdapter.js +2 -2
- package/modules/gumgumBidAdapter.js +3 -3
- package/modules/h12mediaBidAdapter.js +1 -1
- package/modules/id5AnalyticsAdapter.js +1 -1
- package/modules/id5IdSystem.js +160 -111
- package/modules/id5IdSystem.md +16 -14
- package/modules/imRtdProvider.js +20 -7
- package/modules/imRtdProvider.md +3 -1
- package/modules/impactifyBidAdapter.js +1 -1
- package/modules/improvedigitalBidAdapter.js +50 -28
- package/modules/inskinBidAdapter.js +1 -1
- package/modules/insticatorBidAdapter.js +1 -1
- package/modules/integr8BidAdapter.js +2 -2
- package/modules/intentIqIdSystem.js +2 -2
- package/modules/interactiveOffersBidAdapter.js +1 -1
- package/modules/iqmBidAdapter.js +1 -1
- package/modules/ixBidAdapter.js +21 -328
- package/modules/ixBidAdapter.md +1 -19
- package/modules/kargoBidAdapter.js +4 -5
- package/modules/krushmediaBidAdapter.js +2 -2
- package/modules/lassoBidAdapter.js +3 -3
- package/modules/lifestreetBidAdapter.js +143 -0
- package/modules/limelightDigitalBidAdapter.js +2 -1
- package/modules/livewrappedAnalyticsAdapter.js +3 -3
- package/modules/lkqdBidAdapter.js +3 -3
- package/modules/loganBidAdapter.js +2 -2
- package/modules/luponmediaBidAdapter.js +3 -3
- package/modules/mabidderBidAdapter.js +60 -0
- package/modules/mabidderBidAdapter.md +31 -0
- package/modules/malltvBidAdapter.js +2 -2
- package/modules/mediagoBidAdapter.js +462 -0
- package/modules/mediagoBidAdapter.md +34 -0
- package/modules/mediakeysBidAdapter.js +2 -2
- package/modules/mgidBidAdapter.js +2 -2
- package/modules/nextMillenniumBidAdapter.js +25 -6
- package/modules/nobidBidAdapter.js +2 -2
- package/modules/novatiqIdSystem.js +1 -1
- package/modules/oneKeyIdSystem.js +78 -0
- package/modules/oneKeyIdSystem.md +109 -0
- package/modules/oneKeyRtdProvider.js +98 -0
- package/modules/oneKeyRtdProvider.md +127 -0
- package/modules/open8BidAdapter.js +1 -1
- package/modules/openwebBidAdapter.js +1 -1
- package/modules/openxAnalyticsAdapter.js +5 -744
- package/modules/openxAnalyticsAdapter.md +4 -0
- package/modules/openxBidAdapter.js +3 -3
- package/modules/permutiveRtdProvider.js +55 -8
- package/modules/pixfutureBidAdapter.js +1 -1
- package/modules/prebidmanagerAnalyticsAdapter.js +1 -1
- package/modules/priceFloors.js +1 -1
- package/modules/pubmaticAnalyticsAdapter.js +1 -1
- package/modules/pubmaticBidAdapter.js +19 -1
- package/modules/pubwiseAnalyticsAdapter.js +1 -1
- package/modules/pubwiseBidAdapter.js +3 -3
- package/modules/pubxBidAdapter.js +1 -1
- package/modules/pubxaiAnalyticsAdapter.js +2 -2
- package/modules/quantcastIdSystem.js +1 -1
- package/modules/radsBidAdapter.js +1 -1
- package/modules/rasBidAdapter.js +8 -0
- package/modules/rasBidAdapter.md +14 -13
- package/modules/revcontentBidAdapter.js +1 -1
- package/modules/richaudienceBidAdapter.js +1 -1
- package/modules/rtbhouseBidAdapter.js +25 -1
- package/modules/schain.js +1 -1
- package/modules/seedtagBidAdapter.md +25 -56
- package/modules/showheroes-bsBidAdapter.js +1 -1
- package/modules/sizeMappingV2.js +1 -1
- package/modules/smaatoBidAdapter.js +2 -2
- package/modules/sonobiAnalyticsAdapter.js +1 -1
- package/modules/sonobiBidAdapter.js +4 -3
- package/modules/staqAnalyticsAdapter.js +1 -1
- package/modules/tappxBidAdapter.js +11 -2
- package/modules/targetVideoBidAdapter.js +1 -1
- package/modules/theAdxBidAdapter.js +2 -2
- package/modules/tpmnBidAdapter.js +1 -1
- package/modules/trionBidAdapter.js +2 -2
- package/modules/tripleliftBidAdapter.js +20 -1
- package/modules/trustpidSystem.js +6 -42
- package/modules/trustpidSystem.md +10 -10
- package/modules/underdogmediaBidAdapter.js +1 -1
- package/modules/userId/eids.js +26 -0
- package/modules/userId/userId.md +2 -2
- package/modules/vdoaiBidAdapter.js +1 -1
- package/modules/vidazooBidAdapter.js +7 -5
- package/modules/vidoomyBidAdapter.js +1 -1
- package/modules/viewability.js +14 -14
- package/modules/winrBidAdapter.js +1 -1
- package/modules/yahoosspBidAdapter.js +3 -3
- package/modules/yandexBidAdapter.js +1 -1
- package/modules/yieldmoBidAdapter.js +3 -3
- package/modules/yieldoneBidAdapter.js +2 -2
- package/modules/zeta_global_sspBidAdapter.js +24 -21
- package/package.json +3 -3
- package/src/Renderer.js +1 -1
- package/src/adloader.js +2 -1
- package/src/adserver.js +0 -56
- package/src/auction.js +60 -16
- package/src/bidfactory.js +1 -1
- package/src/native.js +75 -60
- package/src/refererDetection.js +12 -1
- package/src/sizeMapping.js +5 -7
- package/src/targeting.js +1 -1
- package/src/userSync.js +1 -1
- package/src/utils/promise.js +3 -1
- package/src/utils.js +27 -0
- package/src/video.js +5 -4
- package/src/videoCache.js +8 -2
- package/test/pages/instream.html +2 -2
- package/test/spec/modules/acuityAdsBidAdapter_spec.js +398 -0
- package/test/spec/modules/adagioBidAdapter_spec.js +2 -0
- package/test/spec/modules/adkernelBidAdapter_spec.js +11 -2
- package/test/spec/modules/adriverBidAdapter_spec.js +6 -13
- package/test/spec/modules/adriverIdSystem_spec.js +3 -8
- package/test/spec/modules/adtelligentBidAdapter_spec.js +2 -0
- package/test/spec/modules/adtrgtmeBidAdapter_spec.js +802 -0
- package/test/spec/modules/alkimiBidAdapter_spec.js +2 -1
- package/test/spec/modules/appnexusBidAdapter_spec.js +1 -0
- package/test/spec/modules/beopBidAdapter_spec.js +11 -0
- package/test/spec/modules/betweenBidAdapter_spec.js +17 -0
- package/test/spec/modules/bidwatchAnalyticsAdapter_spec.js +28 -12
- package/test/spec/modules/big-richmediaBidAdapter_spec.js +1 -0
- package/test/spec/modules/browsiRtdProvider_spec.js +40 -1
- package/test/spec/modules/consumableBidAdapter_spec.js +158 -0
- package/test/spec/modules/cpmstarBidAdapter_spec.js +1 -1
- package/test/spec/modules/criteoBidAdapter_spec.js +35 -26
- package/test/spec/modules/currency_spec.js +22 -0
- package/test/spec/modules/datawrkzBidAdapter_spec.js +656 -0
- package/test/spec/modules/dgkeywordRtdProvider_spec.js +1 -1
- package/test/spec/modules/displayioBidAdapter_spec.js +16 -52
- package/test/spec/modules/enrichmentFpdModule_spec.js +16 -1
- package/test/spec/modules/fpdModule_spec.js +2 -1
- package/test/spec/modules/id5IdSystem_spec.js +529 -172
- package/test/spec/modules/imRtdProvider_spec.js +10 -5
- package/test/spec/modules/improvedigitalBidAdapter_spec.js +9 -13
- package/test/spec/modules/ixBidAdapter_spec.js +216 -123
- package/test/spec/modules/kargoBidAdapter_spec.js +11 -2
- package/test/spec/modules/lifestreetBidAdapter_spec.js +232 -0
- package/test/spec/modules/limelightDigitalBidAdapter_spec.js +59 -7
- package/test/spec/modules/mabidderBidAdapter_spec.js +125 -0
- package/test/spec/modules/mediagoBidAdapter_spec.js +97 -0
- package/test/spec/modules/nextMillenniumBidAdapter_spec.js +2 -7
- package/test/spec/modules/oneKeyIdSystem_spec.js +107 -0
- package/test/spec/modules/oneKeyRtdProvider_spec.js +152 -0
- package/test/spec/modules/openxAnalyticsAdapter_spec.js +6 -638
- package/test/spec/modules/permutiveRtdProvider_spec.js +152 -2
- package/test/spec/modules/pubmaticBidAdapter_spec.js +69 -4
- package/test/spec/modules/rasBidAdapter_spec.js +2 -0
- package/test/spec/modules/tripleliftBidAdapter_spec.js +18 -0
- package/test/spec/modules/trustpidSystem_spec.js +27 -45
- package/test/spec/modules/vidazooBidAdapter_spec.js +36 -23
- package/test/spec/modules/zeta_global_sspBidAdapter_spec.js +59 -0
- package/test/spec/native_spec.js +257 -2
- package/test/spec/videoCache_spec.js +37 -7
|
@@ -295,9 +295,9 @@ function buildOneRequest(validBidRequests, bidderRequest) {
|
|
|
295
295
|
if (
|
|
296
296
|
((bannerMediaType.sizes[0].indexOf(480) >= 0) && (bannerMediaType.sizes[0].indexOf(320) >= 0)) ||
|
|
297
297
|
((bannerMediaType.sizes[0].indexOf(768) >= 0) && (bannerMediaType.sizes[0].indexOf(1024) >= 0))) {
|
|
298
|
-
banner.pos = 7
|
|
298
|
+
banner.pos = 7;
|
|
299
299
|
} else {
|
|
300
|
-
banner.pos = 4
|
|
300
|
+
banner.pos = 4;
|
|
301
301
|
}
|
|
302
302
|
|
|
303
303
|
banner.api = api;
|
|
@@ -484,9 +484,18 @@ export function _getHostInfo(validBidRequests) {
|
|
|
484
484
|
|
|
485
485
|
domainInfo.domain = hostParam.split('/', 1)[0];
|
|
486
486
|
|
|
487
|
+
let regexHostParamHttps = new RegExp(`^https:\/\/`);
|
|
488
|
+
let regexHostParamHttp = new RegExp(`^http:\/\/`);
|
|
489
|
+
|
|
487
490
|
let regexNewEndpoints = new RegExp(`^(vz.*|zz.*)\\.[a-z]{3}\\.tappx\\.com$`, 'i');
|
|
488
491
|
let regexClassicEndpoints = new RegExp(`^([a-z]{3}|testing)\\.[a-z]{3}\\.tappx\\.com$`, 'i');
|
|
489
492
|
|
|
493
|
+
if (regexHostParamHttps.test(hostParam)) {
|
|
494
|
+
hostParam = hostParam.replace('https://', '');
|
|
495
|
+
} else if (regexHostParamHttp.test(hostParam)) {
|
|
496
|
+
hostParam = hostParam.replace('http://', '');
|
|
497
|
+
}
|
|
498
|
+
|
|
490
499
|
if (regexNewEndpoints.test(domainInfo.domain)) {
|
|
491
500
|
domainInfo.newEndpoint = true;
|
|
492
501
|
domainInfo.endpoint = domainInfo.domain.split('.', 1)[0]
|
|
@@ -132,7 +132,7 @@ function createVideoTag(bid) {
|
|
|
132
132
|
tag.ad_types = [VIDEO];
|
|
133
133
|
tag.uuid = bid.bidId;
|
|
134
134
|
tag.allow_smaller_sizes = false;
|
|
135
|
-
tag.use_pmt_rule = false
|
|
135
|
+
tag.use_pmt_rule = false;
|
|
136
136
|
tag.prebid = true;
|
|
137
137
|
tag.disable_psa = true;
|
|
138
138
|
tag.hb_source = 1;
|
|
@@ -206,7 +206,7 @@ export const spec = {
|
|
|
206
206
|
let bidWidth = nullify(bid.w);
|
|
207
207
|
let bidHeight = nullify(bid.h);
|
|
208
208
|
|
|
209
|
-
let creative = null
|
|
209
|
+
let creative = null;
|
|
210
210
|
let videoXml = null;
|
|
211
211
|
let mediaType = null;
|
|
212
212
|
let native = null;
|
|
@@ -389,7 +389,7 @@ let extractValidSize = (bidRequest, bidderRequest) => {
|
|
|
389
389
|
requestedSizes = mediaTypes.video.sizes;
|
|
390
390
|
}
|
|
391
391
|
} else if (!isEmpty(bidRequest.sizes)) {
|
|
392
|
-
requestedSizes = bidRequest.sizes
|
|
392
|
+
requestedSizes = bidRequest.sizes;
|
|
393
393
|
}
|
|
394
394
|
|
|
395
395
|
// Ensure the size array is normalized
|
|
@@ -53,7 +53,7 @@ export const spec = {
|
|
|
53
53
|
bid.currency = result.currency;
|
|
54
54
|
bid.netRevenue = result.netRevenue;
|
|
55
55
|
if (result.adomain) {
|
|
56
|
-
bid.meta = {advertiserDomains: result.adomain}
|
|
56
|
+
bid.meta = {advertiserDomains: result.adomain};
|
|
57
57
|
}
|
|
58
58
|
bidResponses.push(bid);
|
|
59
59
|
}
|
|
@@ -125,7 +125,7 @@ function buildTrionUrlParams(bid, bidderRequest) {
|
|
|
125
125
|
intT = getStorageData(BASE_KEY + 'int_t');
|
|
126
126
|
}
|
|
127
127
|
if (intT) {
|
|
128
|
-
setStorageData(BASE_KEY + 'int_t', intT)
|
|
128
|
+
setStorageData(BASE_KEY + 'int_t', intT);
|
|
129
129
|
}
|
|
130
130
|
setStorageData(BASE_KEY + 'lps', pubId + ':' + sectionId);
|
|
131
131
|
var trionUrl = '';
|
|
@@ -139,7 +139,8 @@ function _buildPostBody(bidRequests, bidderRequest) {
|
|
|
139
139
|
...getUnifiedIdEids([bidRequests[0]]),
|
|
140
140
|
...getIdentityLinkEids([bidRequests[0]]),
|
|
141
141
|
...getCriteoEids([bidRequests[0]]),
|
|
142
|
-
...getPubCommonEids([bidRequests[0]])
|
|
142
|
+
...getPubCommonEids([bidRequests[0]]),
|
|
143
|
+
...getUniversalEids(bidRequests[0])
|
|
143
144
|
];
|
|
144
145
|
|
|
145
146
|
if (eids.length > 0) {
|
|
@@ -312,6 +313,24 @@ function getPubCommonEids(bidRequest) {
|
|
|
312
313
|
return getEids(bidRequest, 'pubcid', 'pubcid.org', 'pubcid');
|
|
313
314
|
}
|
|
314
315
|
|
|
316
|
+
function getUniversalEids(bidRequest) {
|
|
317
|
+
let common = ['adserver.org', 'liveramp.com', 'criteo.com', 'pubcid.org'];
|
|
318
|
+
let eids = [];
|
|
319
|
+
if (bidRequest.userIdAsEids) {
|
|
320
|
+
bidRequest.userIdAsEids.forEach(id => {
|
|
321
|
+
try {
|
|
322
|
+
if (common.indexOf(id.source) === -1) {
|
|
323
|
+
let uids = id.uids.map(uid => ({ id: uid.id, ext: { rtiPartner: id.source } }));
|
|
324
|
+
eids.push({ source: id.source, uids });
|
|
325
|
+
}
|
|
326
|
+
} catch (err) {
|
|
327
|
+
logWarn(`Triplelift: Error attempting to add ${id} to bid request`, err);
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
return eids;
|
|
332
|
+
}
|
|
333
|
+
|
|
315
334
|
function getEids(bidRequest, type, source, rtiPartner) {
|
|
316
335
|
return bidRequest
|
|
317
336
|
.map(getUserId(type)) // bids -> userIds of a certain type
|
|
@@ -10,7 +10,6 @@ import { getStorageManager } from '../src/storageManager.js';
|
|
|
10
10
|
|
|
11
11
|
const MODULE_NAME = 'trustpid';
|
|
12
12
|
const LOG_PREFIX = 'Trustpid module'
|
|
13
|
-
let mnoAcronym = '';
|
|
14
13
|
let mnoDomain = '';
|
|
15
14
|
|
|
16
15
|
export const storage = getStorageManager({gvlid: null, moduleName: MODULE_NAME});
|
|
@@ -30,7 +29,6 @@ function messageHandler(event) {
|
|
|
30
29
|
let domainURL = URL[1].split('/');
|
|
31
30
|
mnoDomain = domainURL[0];
|
|
32
31
|
logInfo(`${LOG_PREFIX}: Message handler set domain to ${mnoDomain}`);
|
|
33
|
-
getDomainAcronym(mnoDomain);
|
|
34
32
|
}
|
|
35
33
|
}
|
|
36
34
|
} catch (e) {
|
|
@@ -38,27 +36,13 @@ function messageHandler(event) {
|
|
|
38
36
|
}
|
|
39
37
|
}
|
|
40
38
|
|
|
41
|
-
/**
|
|
42
|
-
* Properly sets the trustpid acronym depending on the domain value.
|
|
43
|
-
* @param domain
|
|
44
|
-
*/
|
|
45
|
-
function getDomainAcronym(domain) {
|
|
46
|
-
const prefix = '-';
|
|
47
|
-
const acronym = window.FC_CONF?.TELCO_ACRONYM?.[domain];
|
|
48
|
-
if (!acronym) {
|
|
49
|
-
logInfo(`${LOG_PREFIX}: No acronym found for domain: ${domain}`);
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
mnoAcronym = prefix + acronym;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
39
|
// Set a listener to handle the iframe response message.
|
|
56
40
|
window.addEventListener('message', messageHandler, false);
|
|
57
41
|
|
|
58
42
|
/**
|
|
59
|
-
* Get the "
|
|
43
|
+
* Get the "atid" from html5 local storage to make it available to the UserId module.
|
|
60
44
|
* @param config
|
|
61
|
-
* @returns {{trustpid: (*|string)
|
|
45
|
+
* @returns {{trustpid: (*|string)}}
|
|
62
46
|
*/
|
|
63
47
|
function getTrustpidFromStorage() {
|
|
64
48
|
// Get the domain either from localStorage or global
|
|
@@ -69,28 +53,9 @@ function getTrustpidFromStorage() {
|
|
|
69
53
|
logInfo(`${LOG_PREFIX}: Local storage domain not found, returning null`);
|
|
70
54
|
return {
|
|
71
55
|
trustpid: null,
|
|
72
|
-
acr: null,
|
|
73
56
|
};
|
|
74
57
|
}
|
|
75
58
|
|
|
76
|
-
// Get the acronym from global
|
|
77
|
-
let acronym = mnoAcronym;
|
|
78
|
-
// if acronym is empty, but "domain" is available, get the acronym from domain
|
|
79
|
-
if (!acronym) {
|
|
80
|
-
getDomainAcronym(domain);
|
|
81
|
-
acronym = mnoAcronym;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
logInfo(`${LOG_PREFIX}: Domain acronym found: ${acronym}`);
|
|
85
|
-
|
|
86
|
-
// Domain is correct in both local storage and idGraph, but no acronym is existing for the domain
|
|
87
|
-
if (!acronym) {
|
|
88
|
-
return {
|
|
89
|
-
trustpid: null,
|
|
90
|
-
acr: null
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
59
|
let fcIdConnectObject;
|
|
95
60
|
let fcIdConnectData = JSON.parse(storage.getDataFromLocalStorage('fcIdConnectData'));
|
|
96
61
|
logInfo(`${LOG_PREFIX}: Local storage fcIdConnectData: ${JSON.stringify(fcIdConnectData)}`);
|
|
@@ -106,10 +71,9 @@ function getTrustpidFromStorage() {
|
|
|
106
71
|
logInfo(`${LOG_PREFIX}: Local storage fcIdConnectObject for domain: ${JSON.stringify(fcIdConnectObject)}`);
|
|
107
72
|
|
|
108
73
|
return {
|
|
109
|
-
trustpid: (fcIdConnectObject && fcIdConnectObject.
|
|
110
|
-
? fcIdConnectObject.
|
|
74
|
+
trustpid: (fcIdConnectObject && fcIdConnectObject.atid)
|
|
75
|
+
? fcIdConnectObject.atid
|
|
111
76
|
: null,
|
|
112
|
-
acr: acronym,
|
|
113
77
|
};
|
|
114
78
|
}
|
|
115
79
|
|
|
@@ -138,7 +102,7 @@ export const trustpidSubmodule = {
|
|
|
138
102
|
const data = getTrustpidFromStorage();
|
|
139
103
|
if (data.trustpid) {
|
|
140
104
|
logInfo(`${LOG_PREFIX}: Local storage ID value ${JSON.stringify(data)}`);
|
|
141
|
-
return {id: {trustpid: data.trustpid
|
|
105
|
+
return {id: {trustpid: data.trustpid}};
|
|
142
106
|
} else {
|
|
143
107
|
if (!config) {
|
|
144
108
|
config = {};
|
|
@@ -165,7 +129,7 @@ export const trustpidSubmodule = {
|
|
|
165
129
|
}, delayStep);
|
|
166
130
|
}
|
|
167
131
|
} else {
|
|
168
|
-
const dataToReturn = { trustpid: data.trustpid
|
|
132
|
+
const dataToReturn = { trustpid: data.trustpid };
|
|
169
133
|
logInfo(`${LOG_PREFIX}: Returning ID value data of ${JSON.stringify(dataToReturn)}`);
|
|
170
134
|
callback(dataToReturn);
|
|
171
135
|
}
|
|
@@ -10,13 +10,13 @@ gulp build --modules=userId,adfBidAdapter,ixBidAdapter,prebidServerBidAdapter,tr
|
|
|
10
10
|
|
|
11
11
|
## Parameter Descriptions
|
|
12
12
|
|
|
13
|
-
| Params under userSync.userIds[] | Type
|
|
14
|
-
|
|
|
15
|
-
| name
|
|
16
|
-
| params
|
|
17
|
-
| params.maxDelayTime
|
|
18
|
-
| bidders
|
|
19
|
-
| storage
|
|
20
|
-
| storage.type
|
|
21
|
-
| storage.name
|
|
22
|
-
| storage.expires
|
|
13
|
+
| Params under userSync.userIds[] | Type | Description | Example |
|
|
14
|
+
| ------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------ | -------------------------------- |
|
|
15
|
+
| name | String | The name of the module | `"trustpid"` |
|
|
16
|
+
| params | Object | Object with configuration parameters for trustpid User Id submodule | - |
|
|
17
|
+
| params.maxDelayTime | Integer | Max amount of time (in seconds) before looking into storage for data | 2500 |
|
|
18
|
+
| bidders | Array of Strings | An array of bidder codes to which this user ID may be sent. Currently required and supporting AdformOpenRTB | [`"adf"`, `"adformPBS"`, `"ix"`] |
|
|
19
|
+
| storage | Object | Local storage configuration object | - |
|
|
20
|
+
| storage.type | String | Type of the storage that would be used to store user ID. Must be `"html5"` to utilise HTML5 local storage. | `"html5"` |
|
|
21
|
+
| storage.name | String | The name of the key in local storage where the user ID will be stored. | `"trustpid"` |
|
|
22
|
+
| storage.expires | Integer | How long (in days) the user ID information will be stored. For safety reasons, this information is required. | `1` |
|
|
@@ -98,7 +98,7 @@ export const spec = {
|
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
var sizeNotFound = true;
|
|
101
|
-
const bidParamSizes = bidParam.mediaTypes && bidParam.mediaTypes.banner && bidParam.mediaTypes.banner.sizes ? bidParam.mediaTypes.banner.sizes : bidParam.sizes
|
|
101
|
+
const bidParamSizes = bidParam.mediaTypes && bidParam.mediaTypes.banner && bidParam.mediaTypes.banner.sizes ? bidParam.mediaTypes.banner.sizes : bidParam.sizes;
|
|
102
102
|
parseSizesInput(bidParamSizes).forEach(size => {
|
|
103
103
|
if (size === mid.width + 'x' + mid.height) {
|
|
104
104
|
sizeNotFound = false;
|
package/modules/userId/eids.js
CHANGED
|
@@ -330,6 +330,32 @@ export const USER_IDS_CONFIG = {
|
|
|
330
330
|
'cpexId': {
|
|
331
331
|
source: 'czechadid.cz',
|
|
332
332
|
atype: 1
|
|
333
|
+
},
|
|
334
|
+
|
|
335
|
+
// OneKey Data
|
|
336
|
+
'oneKeyData': {
|
|
337
|
+
getValue: function(data) {
|
|
338
|
+
if (data && Array.isArray(data.identifiers) && data.identifiers[0]) {
|
|
339
|
+
return data.identifiers[0].value;
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
source: 'paf',
|
|
343
|
+
atype: 1,
|
|
344
|
+
getEidExt: function(data) {
|
|
345
|
+
if (data && data.preferences) {
|
|
346
|
+
return {preferences: data.preferences};
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
getUidExt: function(data) {
|
|
350
|
+
if (data && Array.isArray(data.identifiers) && data.identifiers[0]) {
|
|
351
|
+
const id = data.identifiers[0];
|
|
352
|
+
return {
|
|
353
|
+
version: id.version,
|
|
354
|
+
type: id.type,
|
|
355
|
+
source: id.source
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
}
|
|
333
359
|
}
|
|
334
360
|
};
|
|
335
361
|
|
package/modules/userId/userId.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {_each, deepAccess, parseSizesInput, parseUrl, uniques} 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';
|
|
@@ -97,7 +97,7 @@ function buildRequest(bid, topWindowUrl, sizes, bidderRequest) {
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
if (bidderRequest.uspConsent) {
|
|
100
|
-
data.usPrivacy = bidderRequest.uspConsent
|
|
100
|
+
data.usPrivacy = bidderRequest.uspConsent;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
const dto = {
|
|
@@ -191,17 +191,19 @@ function getUserSyncs(syncOptions, responses, gdprConsent = {}, uspConsent = '')
|
|
|
191
191
|
let syncs = [];
|
|
192
192
|
const { iframeEnabled, pixelEnabled } = syncOptions;
|
|
193
193
|
const { gdprApplies, consentString = '' } = gdprConsent;
|
|
194
|
-
|
|
194
|
+
|
|
195
|
+
const cidArr = responses.filter(resp => deepAccess(resp, 'body.cid')).map(resp => resp.body.cid).filter(uniques);
|
|
196
|
+
const params = `?cid=${encodeURIComponent(cidArr.join(','))}&gdpr=${gdprApplies ? 1 : 0}&gdpr_consent=${encodeURIComponent(consentString || '')}&us_privacy=${encodeURIComponent(uspConsent || '')}`
|
|
195
197
|
if (iframeEnabled) {
|
|
196
198
|
syncs.push({
|
|
197
199
|
type: 'iframe',
|
|
198
|
-
url: `https://
|
|
200
|
+
url: `https://sync.cootlogix.com/api/sync/iframe/${params}`
|
|
199
201
|
});
|
|
200
202
|
}
|
|
201
203
|
if (pixelEnabled) {
|
|
202
204
|
syncs.push({
|
|
203
205
|
type: 'image',
|
|
204
|
-
url: `https://
|
|
206
|
+
url: `https://sync.cootlogix.com/api/sync/image/${params}`
|
|
205
207
|
});
|
|
206
208
|
}
|
|
207
209
|
return syncs;
|
package/modules/viewability.js
CHANGED
|
@@ -13,7 +13,7 @@ export function init() {
|
|
|
13
13
|
listenMessagesFromCreative();
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
const observers =
|
|
16
|
+
const observers = new Map();
|
|
17
17
|
|
|
18
18
|
function isValid(vid, element, tracker, criteria) {
|
|
19
19
|
if (!element) {
|
|
@@ -36,7 +36,7 @@ function isValid(vid, element, tracker, criteria) {
|
|
|
36
36
|
return false;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
if (!vid || observers
|
|
39
|
+
if (!vid || observers.has(vid)) {
|
|
40
40
|
logWarn(`${MODULE_NAME}: must provide an unregistered vid`, vid);
|
|
41
41
|
return false;
|
|
42
42
|
}
|
|
@@ -46,7 +46,7 @@ function isValid(vid, element, tracker, criteria) {
|
|
|
46
46
|
|
|
47
47
|
function stopObserving(observer, vid, element) {
|
|
48
48
|
observer.unobserve(element);
|
|
49
|
-
observers
|
|
49
|
+
observers.get(vid).done = true;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
function fireViewabilityTracker(element, tracker) {
|
|
@@ -96,21 +96,21 @@ export function startMeasurement(vid, element, tracker, criteria) {
|
|
|
96
96
|
viewable = entries[0].isIntersecting;
|
|
97
97
|
|
|
98
98
|
if (viewable) {
|
|
99
|
-
observers
|
|
99
|
+
observers.get(vid).timeoutId = window.setTimeout(() => {
|
|
100
100
|
viewabilityCriteriaMet(observer, vid, element, tracker);
|
|
101
101
|
}, criteria.timeInView);
|
|
102
|
-
} else if (observers
|
|
103
|
-
window.clearTimeout(observers
|
|
102
|
+
} else if (observers.get(vid).timeoutId) {
|
|
103
|
+
window.clearTimeout(observers.get(vid).timeoutId);
|
|
104
104
|
}
|
|
105
105
|
};
|
|
106
106
|
|
|
107
107
|
observer = new IntersectionObserver(stateChange, options);
|
|
108
|
-
observers
|
|
108
|
+
observers.set(vid, {
|
|
109
109
|
observer: observer,
|
|
110
110
|
element: element,
|
|
111
111
|
timeoutId: null,
|
|
112
112
|
done: false,
|
|
113
|
-
};
|
|
113
|
+
});
|
|
114
114
|
|
|
115
115
|
observer.observe(element);
|
|
116
116
|
|
|
@@ -122,19 +122,19 @@ export function startMeasurement(vid, element, tracker, criteria) {
|
|
|
122
122
|
* @param {string} vid unique viewability identifier
|
|
123
123
|
*/
|
|
124
124
|
export function stopMeasurement(vid) {
|
|
125
|
-
if (!vid || !observers
|
|
125
|
+
if (!vid || !observers.has(vid)) {
|
|
126
126
|
logWarn(`${MODULE_NAME}: must provide a registered vid`, vid);
|
|
127
127
|
return;
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
observers
|
|
131
|
-
if (observers
|
|
132
|
-
window.clearTimeout(observers
|
|
130
|
+
observers.get(vid).observer.unobserve(observers.get(vid).element);
|
|
131
|
+
if (observers.get(vid).timeoutId) {
|
|
132
|
+
window.clearTimeout(observers.get(vid).timeoutId);
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
// allow the observer under this vid to be created again
|
|
136
|
-
if (!observers
|
|
137
|
-
delete
|
|
136
|
+
if (!observers.get(vid).done) {
|
|
137
|
+
observers.delete(vid);
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
|
|
@@ -408,7 +408,7 @@ function appendFirstPartyData(outBoundBidRequest, bid) {
|
|
|
408
408
|
newDataObject = validateAppendObject('object', allowedContentDataObjectKeys, dataObject, newDataObject);
|
|
409
409
|
outBoundBidRequest.site.content.data = [];
|
|
410
410
|
outBoundBidRequest.site.content.data.push(newDataObject);
|
|
411
|
-
})
|
|
411
|
+
});
|
|
412
412
|
};
|
|
413
413
|
};
|
|
414
414
|
|
|
@@ -428,7 +428,7 @@ function appendFirstPartyData(outBoundBidRequest, bid) {
|
|
|
428
428
|
}
|
|
429
429
|
};
|
|
430
430
|
outBoundBidRequest.app.content.data.push(newDataObject);
|
|
431
|
-
})
|
|
431
|
+
});
|
|
432
432
|
};
|
|
433
433
|
};
|
|
434
434
|
|
|
@@ -488,7 +488,7 @@ function generateServerRequest({payload, requestOptions, bidderRequest}) {
|
|
|
488
488
|
|
|
489
489
|
function createRenderer(bidderRequest, bidResponse) {
|
|
490
490
|
const renderer = Renderer.install({
|
|
491
|
-
url: 'https://
|
|
491
|
+
url: 'https://s.yimg.com/kp/prebid-outstream-renderer/renderer.js',
|
|
492
492
|
loaded: false,
|
|
493
493
|
adUnitCode: bidderRequest.adUnitCode
|
|
494
494
|
})
|
|
@@ -531,13 +531,13 @@ function validateVideoParams(bid) {
|
|
|
531
531
|
error += ' when ' + conditionStr;
|
|
532
532
|
}
|
|
533
533
|
throw new Error(error);
|
|
534
|
-
}
|
|
534
|
+
};
|
|
535
535
|
|
|
536
536
|
const paramInvalid = (paramStr, value, expectedStr) => {
|
|
537
537
|
expectedStr = expectedStr ? ', expected: ' + expectedStr : '';
|
|
538
538
|
value = JSON.stringify(value);
|
|
539
539
|
throw new Error(`"${paramStr}"=${value} is invalid${expectedStr}`);
|
|
540
|
-
}
|
|
540
|
+
};
|
|
541
541
|
|
|
542
542
|
const isDefined = val => typeof val !== 'undefined';
|
|
543
543
|
const validate = (fieldPath, validateCb, errorCb, errorCbParam) => {
|
|
@@ -563,7 +563,7 @@ function validateVideoParams(bid) {
|
|
|
563
563
|
}
|
|
564
564
|
return value;
|
|
565
565
|
}
|
|
566
|
-
}
|
|
566
|
+
};
|
|
567
567
|
|
|
568
568
|
try {
|
|
569
569
|
validate('video.context', val => !isEmpty(val), paramRequired);
|
|
@@ -90,7 +90,7 @@ export const spec = {
|
|
|
90
90
|
method: 'GET',
|
|
91
91
|
url: ENDPOINT_URL,
|
|
92
92
|
data: payload,
|
|
93
|
-
}
|
|
93
|
+
};
|
|
94
94
|
});
|
|
95
95
|
},
|
|
96
96
|
interpretResponse: function(serverResponse, bidRequest) {
|
|
@@ -212,7 +212,7 @@ function getMediaType(bidRequest, enabledOldFormat = true) {
|
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
if (hasBannerType && hasVideoType) {
|
|
215
|
-
const playerParams = deepAccess(bidRequest, 'params.playerParams')
|
|
215
|
+
const playerParams = deepAccess(bidRequest, 'params.playerParams');
|
|
216
216
|
if (playerParams) {
|
|
217
217
|
return VIDEO;
|
|
218
218
|
} else {
|
|
@@ -69,31 +69,34 @@ export const spec = {
|
|
|
69
69
|
*/
|
|
70
70
|
buildRequests: function (validBidRequests, bidderRequest) {
|
|
71
71
|
const secure = 1; // treat all requests as secure
|
|
72
|
-
const
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
72
|
+
const params = validBidRequests[0].params;
|
|
73
|
+
const imps = validBidRequests.map(request => {
|
|
74
|
+
const impData = {
|
|
75
|
+
id: request.bidId,
|
|
76
|
+
secure: secure
|
|
77
|
+
};
|
|
78
|
+
if (request.mediaTypes) {
|
|
79
|
+
for (const mediaType in request.mediaTypes) {
|
|
80
|
+
switch (mediaType) {
|
|
81
|
+
case BANNER:
|
|
82
|
+
impData.banner = buildBanner(request);
|
|
83
|
+
break;
|
|
84
|
+
case VIDEO:
|
|
85
|
+
impData.video = buildVideo(request);
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
87
88
|
}
|
|
88
89
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
90
|
+
if (!impData.banner && !impData.video) {
|
|
91
|
+
impData.banner = buildBanner(request);
|
|
92
|
+
}
|
|
93
|
+
return impData;
|
|
94
|
+
});
|
|
95
|
+
|
|
93
96
|
let payload = {
|
|
94
97
|
id: bidderRequest.auctionId,
|
|
95
98
|
cur: [DEFAULT_CUR],
|
|
96
|
-
imp:
|
|
99
|
+
imp: imps,
|
|
97
100
|
site: params.site ? params.site : {},
|
|
98
101
|
device: {...(bidderRequest.ortb2?.device || {}), ...params.device},
|
|
99
102
|
user: params.user ? params.user : {},
|
|
@@ -126,7 +129,7 @@ export const spec = {
|
|
|
126
129
|
deepSetValue(payload, 'regs.ext.us_privacy', bidderRequest.uspConsent);
|
|
127
130
|
}
|
|
128
131
|
|
|
129
|
-
provideEids(
|
|
132
|
+
provideEids(validBidRequests[0], payload);
|
|
130
133
|
const url = params.shortname ? ENDPOINT_URL.concat('?shortname=', params.shortname) : ENDPOINT_URL;
|
|
131
134
|
return {
|
|
132
135
|
method: 'POST',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prebid.js",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.13.0",
|
|
4
4
|
"description": "Header Bidding Management Library",
|
|
5
5
|
"main": "src/prebid.js",
|
|
6
6
|
"scripts": {
|
|
@@ -35,7 +35,6 @@
|
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@babel/eslint-parser": "^7.16.5",
|
|
38
|
-
"@jsdevtools/coverage-istanbul-loader": "^3.0.3",
|
|
39
38
|
"@wdio/browserstack-service": "^7.16.0",
|
|
40
39
|
"@wdio/cli": "^7.5.2",
|
|
41
40
|
"@wdio/concise-reporter": "^7.5.2",
|
|
@@ -46,6 +45,7 @@
|
|
|
46
45
|
"ajv": "6.12.3",
|
|
47
46
|
"assert": "^2.0.0",
|
|
48
47
|
"babel-loader": "^8.0.5",
|
|
48
|
+
"babel-plugin-istanbul": "^6.1.1",
|
|
49
49
|
"babel-register": "^6.26.0",
|
|
50
50
|
"body-parser": "^1.19.0",
|
|
51
51
|
"chai": "^4.2.0",
|
|
@@ -114,9 +114,9 @@
|
|
|
114
114
|
},
|
|
115
115
|
"dependencies": {
|
|
116
116
|
"@babel/core": "^7.16.7",
|
|
117
|
+
"@babel/plugin-transform-runtime": "^7.18.9",
|
|
117
118
|
"@babel/preset-env": "^7.16.8",
|
|
118
119
|
"@babel/runtime": "^7.18.9",
|
|
119
|
-
"@babel/plugin-transform-runtime": "^7.18.9",
|
|
120
120
|
"core-js": "^3.13.0",
|
|
121
121
|
"core-js-pure": "^3.13.0",
|
|
122
122
|
"criteo-direct-rsa-validate": "^1.1.0",
|
package/src/Renderer.js
CHANGED
|
@@ -60,7 +60,7 @@ export function Renderer(options) {
|
|
|
60
60
|
this.cmd.unshift(runRender) // should render run first ?
|
|
61
61
|
loadExternalScript(url, moduleCode, this.callback, this.documentContext);
|
|
62
62
|
}
|
|
63
|
-
}.bind(this) // bind the function to this object to avoid 'this' errors
|
|
63
|
+
}.bind(this); // bind the function to this object to avoid 'this' errors
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
Renderer.install = function({ url, config, id, callback, loaded, adUnitCode, renderNow }) {
|