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
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
# NOTE: OPENX NO LONGER OFFERS ANALYTICS
|
|
9
|
+
# THIS ADAPTER NO LONGER FUNCTIONS AND
|
|
10
|
+
# WILL BE REMOVED IN PREBID 8
|
|
11
|
+
|
|
8
12
|
# About this Guide
|
|
9
13
|
This implementation guide walks through the flow of onboarding an alpha Publisher to test OpenX’s new Analytics Adapter.
|
|
10
14
|
|
|
@@ -353,7 +353,7 @@ function appendUserIdsToQueryParams(queryParams, userIds) {
|
|
|
353
353
|
case 'lipb':
|
|
354
354
|
queryParams[key] = userIdObjectOrValue.lipbid;
|
|
355
355
|
if (Array.isArray(userIdObjectOrValue.segments) && userIdObjectOrValue.segments.length > 0) {
|
|
356
|
-
const liveIntentSegments = 'liveintent:' + userIdObjectOrValue.segments.join('|')
|
|
356
|
+
const liveIntentSegments = 'liveintent:' + userIdObjectOrValue.segments.join('|');
|
|
357
357
|
queryParams.sm = `${queryParams.sm ? queryParams.sm + ',' : ''}${liveIntentSegments}`;
|
|
358
358
|
}
|
|
359
359
|
break;
|
|
@@ -502,7 +502,7 @@ function generateVideoParameters(bid, bidderRequest) {
|
|
|
502
502
|
video: openRtbParams
|
|
503
503
|
}
|
|
504
504
|
]
|
|
505
|
-
}
|
|
505
|
+
};
|
|
506
506
|
|
|
507
507
|
queryParams['openrtb'] = JSON.stringify(openRtbReq);
|
|
508
508
|
|
|
@@ -525,7 +525,7 @@ function generateVideoParameters(bid, bidderRequest) {
|
|
|
525
525
|
|
|
526
526
|
let gpid = deepAccess(bid, 'ortb2Imp.ext.data.pbadslot');
|
|
527
527
|
if (gpid) {
|
|
528
|
-
queryParams.aucs = encodeURIComponent(gpid)
|
|
528
|
+
queryParams.aucs = encodeURIComponent(gpid);
|
|
529
529
|
}
|
|
530
530
|
|
|
531
531
|
// each video bid makes a separate request
|
|
@@ -8,14 +8,18 @@
|
|
|
8
8
|
import {getGlobal} from '../src/prebidGlobal.js';
|
|
9
9
|
import {submodule} from '../src/hook.js';
|
|
10
10
|
import {getStorageManager} from '../src/storageManager.js';
|
|
11
|
-
import {deepAccess, deepSetValue, isFn, logError, mergeDeep} from '../src/utils.js';
|
|
11
|
+
import {deepAccess, deepSetValue, isFn, logError, mergeDeep, isPlainObject, safeJSONParse} from '../src/utils.js';
|
|
12
12
|
import {includes} from '../src/polyfill.js';
|
|
13
13
|
|
|
14
14
|
const MODULE_NAME = 'permutive'
|
|
15
15
|
|
|
16
|
+
export const PERMUTIVE_SUBMODULE_CONFIG_KEY = 'permutive-prebid-rtd'
|
|
17
|
+
|
|
16
18
|
export const storage = getStorageManager({gvlid: null, moduleName: MODULE_NAME})
|
|
17
19
|
|
|
18
|
-
function init
|
|
20
|
+
function init(moduleConfig, userConsent) {
|
|
21
|
+
readPermutiveModuleConfigFromCache()
|
|
22
|
+
|
|
19
23
|
return true
|
|
20
24
|
}
|
|
21
25
|
|
|
@@ -43,20 +47,63 @@ export function initSegments (reqBidsConfigObj, callback, customModuleConfig) {
|
|
|
43
47
|
}
|
|
44
48
|
}
|
|
45
49
|
|
|
50
|
+
function liftIntoParams(params) {
|
|
51
|
+
return isPlainObject(params) ? { params } : {}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
let cachedPermutiveModuleConfig = {}
|
|
55
|
+
|
|
46
56
|
/**
|
|
47
|
-
*
|
|
57
|
+
* Access the submodules RTD params that are cached to LocalStorage by the Permutive SDK. This lets the RTD submodule
|
|
58
|
+
* apply publisher defined params set in the Permutive platform, so they may still be applied if the Permutive SDK has
|
|
59
|
+
* not initialised before this submodule is initialised.
|
|
60
|
+
*/
|
|
61
|
+
function readPermutiveModuleConfigFromCache() {
|
|
62
|
+
const params = safeJSONParse(storage.getDataFromLocalStorage(PERMUTIVE_SUBMODULE_CONFIG_KEY))
|
|
63
|
+
return cachedPermutiveModuleConfig = liftIntoParams(params)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Access the submodules RTD params attached to the Permutive SDK.
|
|
68
|
+
*
|
|
69
|
+
* @return The Permutive config available by the Permutive SDK or null if the operation errors.
|
|
70
|
+
*/
|
|
71
|
+
function getParamsFromPermutive() {
|
|
72
|
+
try {
|
|
73
|
+
return liftIntoParams(window.permutive.addons.prebid.getPermutiveRtdConfig())
|
|
74
|
+
} catch (e) {
|
|
75
|
+
return null
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Merges segments into existing bidder config in reverse priority order. The highest priority is 1.
|
|
81
|
+
*
|
|
82
|
+
* 1. customModuleConfig <- set by publisher with pbjs.setConfig
|
|
83
|
+
* 2. permutiveRtdConfig <- set by the publisher using the Permutive platform
|
|
84
|
+
* 3. defaultConfig
|
|
85
|
+
*
|
|
86
|
+
* As items with a higher priority will be deeply merged into the previous config, deep merges are performed by
|
|
87
|
+
* reversing the priority order.
|
|
88
|
+
*
|
|
48
89
|
* @param {Object} customModuleConfig - Publisher config for module
|
|
49
|
-
* @return {Object}
|
|
90
|
+
* @return {Object} Deep merges of the default, Permutive and custom config.
|
|
50
91
|
*/
|
|
51
|
-
function getModuleConfig
|
|
92
|
+
export function getModuleConfig(customModuleConfig) {
|
|
93
|
+
// Use the params from Permutive if available, otherwise fallback to the cached value set by Permutive.
|
|
94
|
+
const permutiveModuleConfig = getParamsFromPermutive() || cachedPermutiveModuleConfig
|
|
95
|
+
|
|
52
96
|
return mergeDeep({
|
|
53
97
|
waitForIt: false,
|
|
54
98
|
params: {
|
|
55
99
|
maxSegs: 500,
|
|
56
100
|
acBidders: [],
|
|
57
|
-
overwrites: {}
|
|
58
|
-
}
|
|
59
|
-
},
|
|
101
|
+
overwrites: {},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
permutiveModuleConfig,
|
|
105
|
+
customModuleConfig,
|
|
106
|
+
)
|
|
60
107
|
}
|
|
61
108
|
|
|
62
109
|
/**
|
|
@@ -211,7 +211,7 @@ function bidToTag(bid) {
|
|
|
211
211
|
tag.code = bid.params.invCode;
|
|
212
212
|
}
|
|
213
213
|
tag.allow_smaller_sizes = bid.params.allowSmallerSizes || false;
|
|
214
|
-
tag.use_pmt_rule = bid.params.usePaymentRule || false
|
|
214
|
+
tag.use_pmt_rule = bid.params.usePaymentRule || false;
|
|
215
215
|
tag.prebid = true;
|
|
216
216
|
tag.disable_psa = true;
|
|
217
217
|
let bidFloor = getBidFloor(bid);
|
|
@@ -9,7 +9,7 @@ import CONSTANTS from '../src/constants.json';
|
|
|
9
9
|
* prebidmanagerAnalyticsAdapter.js - analytics adapter for prebidmanager
|
|
10
10
|
*/
|
|
11
11
|
export const storage = getStorageManager({gvlid: undefined, moduleName: 'prebidmanager'});
|
|
12
|
-
const DEFAULT_EVENT_URL = 'https://endpoint.prebidmanager.com/endpoint'
|
|
12
|
+
const DEFAULT_EVENT_URL = 'https://endpoint.prebidmanager.com/endpoint';
|
|
13
13
|
const analyticsType = 'endpoint';
|
|
14
14
|
const analyticsName = 'Prebid Manager Analytics: ';
|
|
15
15
|
|
package/modules/priceFloors.js
CHANGED
|
@@ -700,7 +700,7 @@ export function addBidResponseHook(fn, adUnitCode, bid) {
|
|
|
700
700
|
return fn.call(this, adUnitCode, bid);
|
|
701
701
|
}
|
|
702
702
|
|
|
703
|
-
const matchingBidRequest = auctionManager.index.getBidRequest(bid)
|
|
703
|
+
const matchingBidRequest = auctionManager.index.getBidRequest(bid);
|
|
704
704
|
|
|
705
705
|
// get the matching rule
|
|
706
706
|
let floorInfo = getFirstMatchingFloor(floorData.data, matchingBidRequest, {...bid, size: [bid.width, bid.height]});
|
|
@@ -382,7 +382,7 @@ function bidResponseHandler(args) {
|
|
|
382
382
|
return;
|
|
383
383
|
}
|
|
384
384
|
|
|
385
|
-
if (bid.bidder && args.bidderCode && bid.bidder !== args.bidderCode) {
|
|
385
|
+
if ((bid.bidder && args.bidderCode && bid.bidder !== args.bidderCode) || (bid.bidder === args.bidderCode && bid.status === SUCCESS)) {
|
|
386
386
|
bid = copyRequiredBidDetails(args);
|
|
387
387
|
cache.auctions[args.auctionId].adUnitCodes[args.adUnitCode].bids[args.requestId].push(bid);
|
|
388
388
|
}
|
|
@@ -185,7 +185,7 @@ _each(NATIVE_ASSETS, anAsset => { NATIVE_ASSET_ID_TO_KEY_MAP[anAsset.ID] = anAss
|
|
|
185
185
|
// loading NATIVE_ASSET_KEY_TO_ASSET_MAP
|
|
186
186
|
_each(NATIVE_ASSETS, anAsset => { NATIVE_ASSET_KEY_TO_ASSET_MAP[anAsset.KEY] = anAsset });
|
|
187
187
|
|
|
188
|
-
function _getDomainFromURL(url) {
|
|
188
|
+
export function _getDomainFromURL(url) {
|
|
189
189
|
let anchor = document.createElement('a');
|
|
190
190
|
anchor.href = url;
|
|
191
191
|
return anchor.hostname;
|
|
@@ -1162,7 +1162,11 @@ export const spec = {
|
|
|
1162
1162
|
// First Party Data
|
|
1163
1163
|
const commonFpd = (bidderRequest && bidderRequest.ortb2) || {};
|
|
1164
1164
|
if (commonFpd.site) {
|
|
1165
|
+
const { page, domain, ref } = payload.site;
|
|
1165
1166
|
mergeDeep(payload, {site: commonFpd.site});
|
|
1167
|
+
payload.site.page = page;
|
|
1168
|
+
payload.site.domain = domain;
|
|
1169
|
+
payload.site.ref = ref;
|
|
1166
1170
|
}
|
|
1167
1171
|
if (commonFpd.user) {
|
|
1168
1172
|
mergeDeep(payload, {user: commonFpd.user});
|
|
@@ -1170,6 +1174,7 @@ export const spec = {
|
|
|
1170
1174
|
if (commonFpd.bcat) {
|
|
1171
1175
|
blockedIabCategories = blockedIabCategories.concat(commonFpd.bcat);
|
|
1172
1176
|
}
|
|
1177
|
+
|
|
1173
1178
|
if (commonFpd.ext?.prebid?.bidderparams?.[bidderRequest.bidderCode]?.acat) {
|
|
1174
1179
|
const acatParams = commonFpd.ext.prebid.bidderparams[bidderRequest.bidderCode].acat;
|
|
1175
1180
|
_allowedIabCategoriesValidation(payload, acatParams);
|
|
@@ -1177,6 +1182,19 @@ export const spec = {
|
|
|
1177
1182
|
_allowedIabCategoriesValidation(payload, allowedIabCategories);
|
|
1178
1183
|
}
|
|
1179
1184
|
_blockedIabCategoriesValidation(payload, blockedIabCategories);
|
|
1185
|
+
|
|
1186
|
+
// Check if bidderRequest has timeout property if present send timeout as tmax value to translator request
|
|
1187
|
+
// bidderRequest has timeout property if publisher sets during calling requestBids function from page
|
|
1188
|
+
// if not bidderRequest contains global value set by Prebid
|
|
1189
|
+
if (bidderRequest?.timeout) {
|
|
1190
|
+
payload.tmax = bidderRequest.timeout || config.getConfig('bidderTimeout');
|
|
1191
|
+
} else {
|
|
1192
|
+
payload.tmax = window?.PWT?.versionDetails?.timeout;
|
|
1193
|
+
}
|
|
1194
|
+
|
|
1195
|
+
// Sending epoch timestamp in request.ext object
|
|
1196
|
+
payload.ext.epoch = new Date().getTime();
|
|
1197
|
+
|
|
1180
1198
|
// Note: Do not move this block up
|
|
1181
1199
|
// if site object is set in Prebid config then we need to copy required fields from site into app and unset the site object
|
|
1182
1200
|
if (typeof config.getConfig('app') === 'object') {
|
|
@@ -295,7 +295,7 @@ pubwiseAnalytics.handleEvent = function(eventType, data) {
|
|
|
295
295
|
if (eventType === CONSTANTS.EVENTS.AUCTION_END || eventType === CONSTANTS.EVENTS.BID_WON) {
|
|
296
296
|
flushEvents();
|
|
297
297
|
}
|
|
298
|
-
}
|
|
298
|
+
};
|
|
299
299
|
|
|
300
300
|
pubwiseAnalytics.storeSessionID = function (userSessID) {
|
|
301
301
|
storage.setDataInLocalStorage(localStorageSessName(), userSessID);
|
|
@@ -161,7 +161,7 @@ export const spec = {
|
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
if (bid.params.isTest) {
|
|
164
|
-
payload.test = Number(bid.params.isTest) // should be 1 or 0
|
|
164
|
+
payload.test = Number(bid.params.isTest); // should be 1 or 0
|
|
165
165
|
}
|
|
166
166
|
payload.site.publisher.id = bid.params.siteId.trim();
|
|
167
167
|
payload.user.gender = (conf.gender ? conf.gender.trim() : UNDEFINED);
|
|
@@ -207,7 +207,7 @@ export const spec = {
|
|
|
207
207
|
deepSetValue(payload, 'regs.coppa', 1);
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
var options = {contentType: 'text/plain'}
|
|
210
|
+
var options = {contentType: 'text/plain'};
|
|
211
211
|
|
|
212
212
|
_logInfo('buildRequests payload', payload);
|
|
213
213
|
_logInfo('buildRequests bidderRequest', bidderRequest);
|
|
@@ -463,7 +463,7 @@ function _createImpressionObject(bid, conf) {
|
|
|
463
463
|
}
|
|
464
464
|
}
|
|
465
465
|
} else {
|
|
466
|
-
_logWarn('MediaTypes are Required for all Adunit Configs', bid)
|
|
466
|
+
_logWarn('MediaTypes are Required for all Adunit Configs', bid);
|
|
467
467
|
}
|
|
468
468
|
|
|
469
469
|
_addFloorFromFloorModule(impObj, bid);
|
|
@@ -140,7 +140,7 @@ export function getOS() {
|
|
|
140
140
|
// add sampling rate
|
|
141
141
|
pubxaiAnalyticsAdapter.shouldFireEventRequest = function (samplingRate = 1) {
|
|
142
142
|
return (Math.floor((Math.random() * samplingRate + 1)) === parseInt(samplingRate));
|
|
143
|
-
}
|
|
143
|
+
};
|
|
144
144
|
|
|
145
145
|
function send(data, status) {
|
|
146
146
|
if (pubxaiAnalyticsAdapter.shouldFireEventRequest(initOptions.samplingRate)) {
|
|
@@ -158,7 +158,7 @@ function send(data, status) {
|
|
|
158
158
|
data.initOptions.auctionId = data.auctionInit.auctionId;
|
|
159
159
|
delete data.auctionInit;
|
|
160
160
|
|
|
161
|
-
data.pmcDetail = {}
|
|
161
|
+
data.pmcDetail = {};
|
|
162
162
|
Object.assign(data.pmcDetail, {
|
|
163
163
|
bidDensity: storage ? storage.getItem('pbx:dpbid') : null,
|
|
164
164
|
maxBid: storage ? storage.getItem('pbx:mxbid') : null,
|
package/modules/rasBidAdapter.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as utils from '../src/utils.js';
|
|
1
2
|
import { registerBidder } from '../src/adapters/bidderFactory.js';
|
|
2
3
|
import { BANNER } from '../src/mediaTypes.js';
|
|
3
4
|
import { isEmpty, getAdUnitSizes, parseSizesInput, deepAccess } from '../src/utils.js';
|
|
@@ -92,11 +93,18 @@ const getSlots = (bidRequests) => {
|
|
|
92
93
|
const batchSize = bidRequests.length;
|
|
93
94
|
for (let i = 0; i < batchSize; i++) {
|
|
94
95
|
const adunit = bidRequests[i];
|
|
96
|
+
const slotSequence = utils.deepAccess(adunit, 'params.slotSequence');
|
|
97
|
+
|
|
95
98
|
const sizes = parseSizesInput(getAdUnitSizes(adunit)).join(',');
|
|
99
|
+
|
|
96
100
|
queryString += `&slot${i}=${encodeURIComponent(adunit.params.slot)}&id${i}=${encodeURIComponent(adunit.bidId)}&composition${i}=CHILD`;
|
|
101
|
+
|
|
97
102
|
if (sizes.length) {
|
|
98
103
|
queryString += `&iusizes${i}=${encodeURIComponent(sizes)}`;
|
|
99
104
|
}
|
|
105
|
+
if (slotSequence !== undefined) {
|
|
106
|
+
queryString += `&pos${i}=${encodeURIComponent(slotSequence)}`;
|
|
107
|
+
}
|
|
100
108
|
}
|
|
101
109
|
return queryString;
|
|
102
110
|
};
|
package/modules/rasBidAdapter.md
CHANGED
|
@@ -34,17 +34,18 @@ var adUnits = [{
|
|
|
34
34
|
|
|
35
35
|
# Parameters
|
|
36
36
|
|
|
37
|
-
| Name | Scope | Type | Description
|
|
38
|
-
| --- | --- | ---
|
|
39
|
-
| network | required | String | Specific identifier provided by RAS
|
|
40
|
-
| site | required | String | Specific identifier name (case-insensitive) that is associated with this ad unit and provided by RAS
|
|
41
|
-
| area | required | String | Ad unit category name; only case-insensitive alphanumeric with underscores and hyphens are allowed
|
|
42
|
-
| slot | required | String | Ad unit placement name (case-insensitive) provided by RAS
|
|
43
|
-
|
|
|
44
|
-
| pageContext
|
|
45
|
-
| pageContext.
|
|
37
|
+
| Name | Scope | Type | Description | Example
|
|
38
|
+
| --- | --- | --- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ---
|
|
39
|
+
| network | required | String | Specific identifier provided by RAS | `"4178463"`
|
|
40
|
+
| site | required | String | Specific identifier name (case-insensitive) that is associated with this ad unit and provided by RAS | `"example_com"`
|
|
41
|
+
| area | required | String | Ad unit category name; only case-insensitive alphanumeric with underscores and hyphens are allowed | `"sport"`
|
|
42
|
+
| slot | required | String | Ad unit placement name (case-insensitive) provided by RAS | `"slot"`
|
|
43
|
+
| slotSequence | optional | Number | Ad unit sequence position provided by RAS | `1`
|
|
44
|
+
| pageContext | optional | Object | Web page context data | `{}`
|
|
45
|
+
| pageContext.dr | optional | String | Document referrer URL address | `"https://example.com/"`
|
|
46
|
+
| pageContext.du | optional | String | Document URL address | `"https://example.com/sport/football/article.html?id=932016a5-02fc-4d5c-b643-fafc2f270f06"`
|
|
46
47
|
| pageContext.dv | optional | String | Document virtual address as slash-separated path that may consist of any number of parts (case-insensitive alphanumeric with underscores and hyphens); first part should be the same as `site` value and second as `area` value; next parts may reflect website navigation | `"example_com/sport/football"`
|
|
47
|
-
| pageContext.keyWords | optional | String[] | List of keywords associated with this ad unit; only case-insensitive alphanumeric with underscores and hyphens are allowed
|
|
48
|
-
| pageContext.keyValues | optional | Object | Key-values associated with this ad unit (case-insensitive); following characters are not allowed in the values: `" ' = ! + # * ~ ; ^ ( ) < > [ ] & @`
|
|
49
|
-
| pageContext.keyValues.ci | optional | String | Content unique identifier
|
|
50
|
-
| pageContext.keyValues.adunit | optional | String | Ad unit name
|
|
48
|
+
| pageContext.keyWords | optional | String[] | List of keywords associated with this ad unit; only case-insensitive alphanumeric with underscores and hyphens are allowed | `["euro", "lewandowski"]`
|
|
49
|
+
| pageContext.keyValues | optional | Object | Key-values associated with this ad unit (case-insensitive); following characters are not allowed in the values: `" ' = ! + # * ~ ; ^ ( ) < > [ ] & @` | `{}`
|
|
50
|
+
| pageContext.keyValues.ci | optional | String | Content unique identifier | `"932016a5-02fc-4d5c-b643-fafc2f270f06"`
|
|
51
|
+
| pageContext.keyValues.adunit | optional | String | Ad unit name | `"example_com/sport"`
|
|
@@ -232,7 +232,7 @@ function buildImp(bid, id) {
|
|
|
232
232
|
w: sizes[0][0],
|
|
233
233
|
h: sizes[0][1],
|
|
234
234
|
format: sizes.map(wh => parseGPTSingleSizeArrayToRtbSize(wh)),
|
|
235
|
-
}
|
|
235
|
+
};
|
|
236
236
|
} else if (nativeReq) {
|
|
237
237
|
const assets = _map(bid.nativeParams, (bidParams, key) => {
|
|
238
238
|
const props = NATIVE_PARAMS[key];
|
|
@@ -68,7 +68,7 @@ export const spec = {
|
|
|
68
68
|
if (schain) {
|
|
69
69
|
request.ext = {
|
|
70
70
|
schain: schain,
|
|
71
|
-
}
|
|
71
|
+
};
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
|
|
@@ -81,6 +81,30 @@ export const spec = {
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
const ortb2Params = bidderRequest && bidderRequest.ortb2;
|
|
85
|
+
if (ortb2Params?.user) {
|
|
86
|
+
request.user = {
|
|
87
|
+
...request.user,
|
|
88
|
+
...(ortb2Params.user.data && {
|
|
89
|
+
data: { ...request.user?.data, ...ortb2Params.user.data },
|
|
90
|
+
}),
|
|
91
|
+
...(ortb2Params.user.ext && {
|
|
92
|
+
ext: { ...request.user?.ext, ...ortb2Params.user.ext },
|
|
93
|
+
}),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (ortb2Params?.site) {
|
|
97
|
+
request.site = {
|
|
98
|
+
...request.site,
|
|
99
|
+
...(ortb2Params.site.content && {
|
|
100
|
+
content: { ...request.site?.content, ...ortb2Params.site.content },
|
|
101
|
+
}),
|
|
102
|
+
...(ortb2Params.site.ext && {
|
|
103
|
+
ext: { ...request.site?.ext, ...ortb2Params.site.ext },
|
|
104
|
+
}),
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
|
|
84
108
|
return {
|
|
85
109
|
method: 'POST',
|
|
86
110
|
url: 'https://' + validBidRequests[0].params.region + '.' + ENDPOINT_URL,
|
package/modules/schain.js
CHANGED
|
@@ -19,7 +19,7 @@ _each(MODE, mode => MODES.push(mode));
|
|
|
19
19
|
|
|
20
20
|
// validate the supply chain object
|
|
21
21
|
export function isSchainObjectValid(schainObject, returnOnError) {
|
|
22
|
-
let failPrefix = 'Detected something wrong within an schain config:'
|
|
22
|
+
let failPrefix = 'Detected something wrong within an schain config:';
|
|
23
23
|
let failMsg = '';
|
|
24
24
|
|
|
25
25
|
function appendFailMsg(msg) {
|
|
@@ -8,19 +8,18 @@ Maintainer: prebid@seedtag.com
|
|
|
8
8
|
|
|
9
9
|
# Description
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Prebidjs seedtag bidder
|
|
12
12
|
|
|
13
|
-
#
|
|
14
|
-
|
|
15
|
-
## Sample Banner Ad Unit
|
|
13
|
+
# Sample integration
|
|
16
14
|
|
|
15
|
+
## InScreen
|
|
17
16
|
```js
|
|
18
17
|
const adUnits = [
|
|
19
18
|
{
|
|
20
|
-
code: '/21804003197/
|
|
19
|
+
code: '/21804003197/prebid_test_320x100',
|
|
21
20
|
mediaTypes: {
|
|
22
21
|
banner: {
|
|
23
|
-
sizes: [[
|
|
22
|
+
sizes: [[320, 100]]
|
|
24
23
|
}
|
|
25
24
|
},
|
|
26
25
|
bids: [
|
|
@@ -29,8 +28,7 @@ const adUnits = [
|
|
|
29
28
|
params: {
|
|
30
29
|
publisherId: '0000-0000-01', // required
|
|
31
30
|
adUnitId: '0000', // required
|
|
32
|
-
placement: '
|
|
33
|
-
adPosition: 0 // optional
|
|
31
|
+
placement: 'inScreen', // required
|
|
34
32
|
}
|
|
35
33
|
}
|
|
36
34
|
]
|
|
@@ -38,55 +36,26 @@ const adUnits = [
|
|
|
38
36
|
]
|
|
39
37
|
```
|
|
40
38
|
|
|
41
|
-
##
|
|
42
|
-
|
|
39
|
+
## InArticle
|
|
43
40
|
```js
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
playbackmethod: [1], // optional
|
|
60
|
-
delivery: [1], // optional
|
|
61
|
-
placement: 1, // optional
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
bids: [
|
|
65
|
-
{
|
|
66
|
-
bidder: 'seedtag',
|
|
67
|
-
params: {
|
|
68
|
-
publisherId: '0000-0000-01', // required
|
|
69
|
-
adUnitId: '0000', // required
|
|
70
|
-
placement: 'video', // required
|
|
71
|
-
adPosition: 0, // optional
|
|
72
|
-
video: { // optional
|
|
73
|
-
context: 'instream', // optional
|
|
74
|
-
playerSize: [600, 300], // optional
|
|
75
|
-
mimes: ['video/mp4'], // optional
|
|
76
|
-
minduration: 5, // optional
|
|
77
|
-
maxduration: 60, // optional
|
|
78
|
-
boxingallowed: 1, // optional
|
|
79
|
-
skip: 1, // optional
|
|
80
|
-
startdelay: 1, // optional
|
|
81
|
-
linearity: 1, // optional
|
|
82
|
-
battr: [1, 2], // optional
|
|
83
|
-
maxbitrate: 10, // optional
|
|
84
|
-
playbackmethod: [1], // optional
|
|
85
|
-
delivery: [1], // optional
|
|
86
|
-
placement: 1, // optional
|
|
41
|
+
const adUnits = [
|
|
42
|
+
{
|
|
43
|
+
code: '/21804003197/prebid_test_300x250',
|
|
44
|
+
mediaTypes: {
|
|
45
|
+
banner: {
|
|
46
|
+
sizes: [[300, 250], [1, 1]]
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
bids: [
|
|
50
|
+
{
|
|
51
|
+
bidder: 'seedtag',
|
|
52
|
+
params: {
|
|
53
|
+
publisherId: '0000-0000-01', // required
|
|
54
|
+
adUnitId: '0000', // required
|
|
55
|
+
placement: 'inArticle', // required
|
|
87
56
|
}
|
|
88
57
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
]
|
|
92
61
|
```
|
|
@@ -314,7 +314,7 @@ function outstreamRender(bid) {
|
|
|
314
314
|
logError('[ShowHeroes][renderer] Error: spot not found');
|
|
315
315
|
}
|
|
316
316
|
} catch (err) {
|
|
317
|
-
logError('[ShowHeroes][renderer] Error:' + err.message)
|
|
317
|
+
logError('[ShowHeroes][renderer] Error:' + err.message);
|
|
318
318
|
}
|
|
319
319
|
}
|
|
320
320
|
}
|
package/modules/sizeMappingV2.js
CHANGED
|
@@ -98,7 +98,7 @@ export function checkAdUnitSetupHook(adUnits) {
|
|
|
98
98
|
*/
|
|
99
99
|
if (!isArrayOfNums(config.minViewPort, 2)) {
|
|
100
100
|
logError(`Ad unit ${adUnitCode}: Invalid declaration of 'minViewPort' in 'mediaTypes.${mediaType}.sizeConfig[${index}]'. ${conditionalLogMessages[mediaType]}`);
|
|
101
|
-
isValid = false
|
|
101
|
+
isValid = false;
|
|
102
102
|
return;
|
|
103
103
|
}
|
|
104
104
|
/*
|
|
@@ -63,7 +63,7 @@ const buildOpenRtbBidRequest = (bidRequest, bidderRequest) => {
|
|
|
63
63
|
if (deepAccess(bidRequest, 'params.app')) {
|
|
64
64
|
const geo = deepAccess(bidRequest, 'params.app.geo');
|
|
65
65
|
deepSetValue(requestTemplate, 'device.geo', geo);
|
|
66
|
-
const ifa = deepAccess(bidRequest, 'params.app.ifa')
|
|
66
|
+
const ifa = deepAccess(bidRequest, 'params.app.ifa');
|
|
67
67
|
deepSetValue(requestTemplate, 'device.ifa', ifa);
|
|
68
68
|
}
|
|
69
69
|
|
|
@@ -210,7 +210,7 @@ export const spec = {
|
|
|
210
210
|
}
|
|
211
211
|
};
|
|
212
212
|
|
|
213
|
-
const videoContext = deepAccess(JSON.parse(bidRequest.data).imp[0], 'video.ext.context')
|
|
213
|
+
const videoContext = deepAccess(JSON.parse(bidRequest.data).imp[0], 'video.ext.context');
|
|
214
214
|
if (videoContext === ADPOD) {
|
|
215
215
|
resultingBid.vastXml = bid.adm;
|
|
216
216
|
resultingBid.mediaType = VIDEO;
|
|
@@ -11,6 +11,7 @@ const OUTSTREAM_REDNERER_URL = 'https://mtrx.go.sonobi.com/sbi_outstream_rendere
|
|
|
11
11
|
|
|
12
12
|
export const spec = {
|
|
13
13
|
code: BIDDER_CODE,
|
|
14
|
+
gvlid: 104,
|
|
14
15
|
supportedMediaTypes: [BANNER, VIDEO],
|
|
15
16
|
/**
|
|
16
17
|
* Determines whether or not the given bid request is valid.
|
|
@@ -129,7 +130,7 @@ export const spec = {
|
|
|
129
130
|
}
|
|
130
131
|
|
|
131
132
|
if (validBidRequests[0].schain) {
|
|
132
|
-
payload.schain = JSON.stringify(validBidRequests[0].schain)
|
|
133
|
+
payload.schain = JSON.stringify(validBidRequests[0].schain);
|
|
133
134
|
}
|
|
134
135
|
if (deepAccess(validBidRequests[0], 'userId') && Object.keys(validBidRequests[0].userId).length > 0) {
|
|
135
136
|
const userIds = deepClone(validBidRequests[0].userId);
|
|
@@ -217,7 +218,7 @@ export const spec = {
|
|
|
217
218
|
] = bid.sbi_size.split('x');
|
|
218
219
|
let aDomains = [];
|
|
219
220
|
if (bid.sbi_adomain) {
|
|
220
|
-
aDomains = [bid.sbi_adomain]
|
|
221
|
+
aDomains = [bid.sbi_adomain];
|
|
221
222
|
}
|
|
222
223
|
const bids = {
|
|
223
224
|
requestId: bidId,
|
|
@@ -255,7 +256,7 @@ export const spec = {
|
|
|
255
256
|
));
|
|
256
257
|
let videoSize = deepAccess(bidRequest, 'params.sizes');
|
|
257
258
|
if (Array.isArray(videoSize) && Array.isArray(videoSize[0])) { // handle case of multiple sizes
|
|
258
|
-
videoSize = videoSize[0] // Only take the first size for outstream
|
|
259
|
+
videoSize = videoSize[0]; // Only take the first size for outstream
|
|
259
260
|
}
|
|
260
261
|
if (videoSize) {
|
|
261
262
|
bids.width = videoSize[0];
|