prebid.js 9.53.2 → 9.53.4
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/dist/33acrossAnalyticsAdapter.js +1 -1
- package/dist/33acrossBidAdapter.js +1 -1
- package/dist/33acrossIdSystem.js +1 -1
- package/dist/BTBidAdapter.js +1 -1
- package/dist/adagioAnalyticsAdapter.js +1 -1
- package/dist/adagioBidAdapter.js +1 -1
- package/dist/adagioRtdProvider.js +1 -1
- package/dist/adagioUtils.js +1 -1
- package/dist/addefendBidAdapter.js +1 -1
- package/dist/adgenerationBidAdapter.js +1 -1
- package/dist/adlooxRtdProvider.js +1 -1
- package/dist/adqueryBidAdapter.js +1 -1
- package/dist/adrelevantisBidAdapter.js +1 -1
- package/dist/adstirBidAdapter.js +1 -1
- package/dist/adtrgtmeBidAdapter.js +1 -1
- package/dist/adxcgAnalyticsAdapter.js +1 -1
- package/dist/adxcgBidAdapter.js +1 -1
- package/dist/adyoulikeBidAdapter.js +1 -1
- package/dist/agmaAnalyticsAdapter.js +1 -1
- package/dist/ajaBidAdapter.js +1 -1
- package/dist/amxBidAdapter.js +1 -1
- package/dist/amxIdSystem.js +1 -1
- package/dist/aniviewBidAdapter.js +1 -1
- package/dist/appierAnalyticsAdapter.js +1 -1
- package/dist/appnexusBidAdapter.js +1 -1
- package/dist/asoBidAdapter.js +1 -1
- package/dist/axonixBidAdapter.js +1 -1
- package/dist/beopBidAdapter.js +1 -1
- package/dist/bidderTimeoutUtils.js +1 -0
- package/dist/bidglassBidAdapter.js +1 -1
- package/dist/big-richmediaBidAdapter.js +1 -1
- package/dist/bitmediaBidAdapter.js +1 -1
- package/dist/bridBidAdapter.js +1 -1
- package/dist/bridgeuppBidAdapter.js +1 -1
- package/dist/bridgewellBidAdapter.js +1 -1
- package/dist/brightMountainMediaBidAdapter.js +1 -1
- package/dist/carodaBidAdapter.js +1 -1
- package/dist/chtnwBidAdapter.js +1 -1
- package/dist/chunk-core.js +1 -1
- package/dist/concertBidAdapter.js +1 -1
- package/dist/connectadBidAdapter.js +1 -1
- package/dist/consumableBidAdapter.js +1 -1
- package/dist/contxtfulBidAdapter.js +1 -1
- package/dist/conversantAnalyticsAdapter.js +1 -1
- package/dist/conversantBidAdapter.js +1 -1
- package/dist/craftBidAdapter.js +1 -1
- package/dist/criteoBidAdapter.js +1 -1
- package/dist/cwireBidAdapter.js +1 -1
- package/dist/dailymotionBidAdapter.js +1 -1
- package/dist/debugging-standalone.js +1 -1
- package/dist/dependencies.json +10 -1
- package/dist/dspxBidAdapter.js +1 -1
- package/dist/dxkultureBidAdapter.js +1 -1
- package/dist/eplanningBidAdapter.js +1 -1
- package/dist/equativBidAdapter.js +1 -1
- package/dist/eskimiBidAdapter.js +1 -1
- package/dist/euidIdSystem.js +1 -1
- package/dist/exadsBidAdapter.js +1 -1
- package/dist/excoBidAdapter.js +1 -1
- package/dist/feedadBidAdapter.js +1 -1
- package/dist/finativeBidAdapter.js +1 -1
- package/dist/freewheel-sspBidAdapter.js +1 -1
- package/dist/fwsspBidAdapter.js +1 -1
- package/dist/gmosspBidAdapter.js +1 -1
- package/dist/greenbidsAnalyticsAdapter.js +1 -1
- package/dist/greenbidsBidAdapter.js +1 -1
- package/dist/greenbidsRtdProvider.js +1 -1
- package/dist/gridBidAdapter.js +1 -1
- package/dist/gumgumBidAdapter.js +1 -1
- package/dist/h12mediaBidAdapter.js +1 -1
- package/dist/hypelabBidAdapter.js +1 -1
- package/dist/id5AnalyticsAdapter.js +1 -1
- package/dist/id5IdSystem.js +1 -1
- package/dist/imdsBidAdapter.js +1 -1
- package/dist/improvedigitalBidAdapter.js +1 -1
- package/dist/inmobiBidAdapter.js +1 -1
- package/dist/insticatorBidAdapter.js +1 -1
- package/dist/intentIqAnalyticsAdapter.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/kimberliteBidAdapter.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 -1
- package/dist/liveIntentId.js +1 -1
- package/dist/logicadBidAdapter.js +1 -1
- package/dist/loglyliftBidAdapter.js +1 -1
- package/dist/luceadBidAdapter.js +1 -1
- package/dist/mabidderBidAdapter.js +1 -1
- package/dist/madsenseBidAdapter.js +1 -1
- package/dist/magniteAnalyticsAdapter.js +1 -1
- package/dist/malltvAnalyticsAdapter.js +1 -1
- package/dist/marsmediaBidAdapter.js +1 -1
- package/dist/mediafuseBidAdapter.js +1 -1
- package/dist/medianetBidAdapter.js +1 -1
- package/dist/medianetUtils.js +1 -1
- package/dist/mediasquareBidAdapter.js +1 -1
- package/dist/mgidBidAdapter.js +1 -1
- package/dist/missenaBidAdapter.js +1 -1
- package/dist/mobilefuseBidAdapter.js +1 -1
- package/dist/nextMillenniumBidAdapter.js +1 -1
- package/dist/nexx360Utils.js +1 -1
- package/dist/nobidAnalyticsAdapter.js +1 -1
- package/dist/nobidBidAdapter.js +1 -1
- package/dist/nodalsAiRtdProvider.js +1 -1
- package/dist/not-for-prod/prebid.js +178 -175
- package/dist/objectGuard.js +1 -1
- package/dist/oguryBidAdapter.js +1 -1
- package/dist/onetagBidAdapter.js +1 -1
- package/dist/ooloAnalyticsAdapter.js +1 -1
- package/dist/openxBidAdapter.js +1 -1
- package/dist/optableRtdProvider.js +1 -1
- package/dist/optidigitalBidAdapter.js +1 -1
- package/dist/orbidderBidAdapter.js +1 -1
- package/dist/outbrainBidAdapter.js +1 -1
- package/dist/pixfutureBidAdapter.js +1 -1
- package/dist/publinkIdSystem.js +1 -1
- package/dist/pubmaticAnalyticsAdapter.js +1 -1
- package/dist/pubmaticBidAdapter.js +1 -1
- package/dist/pubmaticIdSystem.js +1 -1
- package/dist/pubmaticRtdProvider.js +1 -1
- package/dist/pubmaticUtils.js +1 -0
- package/dist/pubwiseAnalyticsAdapter.js +1 -1
- package/dist/pubxaiAnalyticsAdapter.js +1 -1
- package/dist/pxyzBidAdapter.js +1 -1
- package/dist/quantcastBidAdapter.js +1 -1
- package/dist/readpeakBidAdapter.js +1 -1
- package/dist/relaidoBidAdapter.js +1 -1
- package/dist/retailspotBidAdapter.js +1 -1
- package/dist/rhythmoneBidAdapter.js +1 -1
- package/dist/riseUtils.js +1 -1
- package/dist/rtdModule.js +1 -1
- package/dist/rubiconBidAdapter.js +1 -1
- package/dist/seedingAllianceBidAdapter.js +1 -1
- package/dist/seedtagBidAdapter.js +1 -1
- package/dist/sevioBidAdapter.js +1 -0
- package/dist/sharethroughAnalyticsAdapter.js +1 -1
- package/dist/sharethroughBidAdapter.js +1 -1
- package/dist/showheroes-bsBidAdapter.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/snigelBidAdapter.js +1 -1
- package/dist/sonobiBidAdapter.js +1 -1
- package/dist/sovrnBidAdapter.js +1 -1
- package/dist/sparteoBidAdapter.js +1 -1
- package/dist/sspBCBidAdapter.js +1 -1
- package/dist/stvBidAdapter.js +1 -1
- package/dist/sublimeBidAdapter.js +1 -1
- package/dist/taboolaBidAdapter.js +1 -1
- package/dist/tappxBidAdapter.js +1 -1
- package/dist/targetVideoBidAdapter.js +1 -1
- package/dist/teadsBidAdapter.js +1 -1
- package/dist/terceptAnalyticsAdapter.js +1 -1
- package/dist/themoneytizerBidAdapter.js +1 -1
- package/dist/timeoutRtdProvider.js +1 -1
- package/dist/trionBidAdapter.js +1 -1
- package/dist/tripleliftBidAdapter.js +1 -1
- package/dist/ttdBidAdapter.js +1 -1
- package/dist/ucfunnelAnalyticsAdapter.js +1 -1
- package/dist/uid2IdSystem.js +1 -1
- package/dist/underdogmediaBidAdapter.js +1 -1
- package/dist/undertoneBidAdapter.js +1 -1
- package/dist/unrulyBidAdapter.js +1 -1
- package/dist/userId.js +1 -1
- package/dist/vidazooUtils.js +1 -1
- package/dist/videobyteBidAdapter.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/yahooAdsBidAdapter.js +1 -1
- package/dist/yandexBidAdapter.js +1 -1
- package/dist/yieldmoBidAdapter.js +1 -1
- package/dist/yieldoneAnalyticsAdapter.js +1 -1
- package/integrationExamples/gpt/pubmaticRtdProvider_Example.html +161 -0
- package/libraries/bidderTimeoutUtils/bidderTimeoutUtils.js +119 -0
- package/libraries/objectGuard/objectGuard.js +170 -48
- package/libraries/objectGuard/ortbGuard.js +33 -43
- package/libraries/pubmaticUtils/plugins/dynamicTimeout.js +209 -0
- package/libraries/pubmaticUtils/plugins/floorProvider.js +168 -0
- package/libraries/pubmaticUtils/plugins/pluginManager.js +106 -0
- package/libraries/pubmaticUtils/plugins/unifiedPricingRule.js +375 -0
- package/libraries/pubmaticUtils/pubmaticUtils.js +76 -0
- package/modules/adagioAnalyticsAdapter.js +6 -1
- package/modules/adagioBidAdapter.js +12 -5
- package/modules/adagioRtdProvider.js +41 -35
- package/modules/fwsspBidAdapter.js +134 -69
- package/modules/fwsspBidAdapter.md +121 -26
- package/modules/optableRtdProvider.js +33 -12
- package/modules/pubmaticAnalyticsAdapter.js +315 -587
- package/modules/pubmaticBidAdapter.js +71 -8
- package/modules/pubmaticIdSystem.js +4 -4
- package/modules/pubmaticRtdProvider.js +105 -613
- package/modules/rtdModule/index.js +23 -6
- package/modules/sevioBidAdapter.js +413 -0
- package/modules/sevioBidAdapter.md +29 -0
- package/modules/sparteoBidAdapter.js +122 -10
- package/modules/timeoutRtdProvider.js +2 -105
- package/modules/ttdBidAdapter.js +0 -5
- package/modules/userId/eids.js +1 -1
- package/modules/userId/index.js +32 -1
- package/package.json +1 -1
- package/src/auction.js +3 -0
- package/test/spec/activities/objectGuard_spec.js +189 -32
- package/test/spec/activities/ortbGuard_spec.js +10 -15
- package/test/spec/libraries/bidderTimeoutUtils/bidderTimeoutUtils_spec.js +213 -0
- package/test/spec/libraries/pubmaticUtils/plugins/dynamicTimeout_spec.js +746 -0
- package/test/spec/libraries/pubmaticUtils/plugins/floorProvider_spec.js +184 -0
- package/test/spec/libraries/pubmaticUtils/plugins/pluginManager_spec.js +489 -0
- package/test/spec/libraries/pubmaticUtils/plugins/unifiedPricingRule_spec.js +359 -0
- package/test/spec/libraries/pubmaticUtils/pubmaticUtils_spec.js +236 -0
- package/test/spec/modules/adagioAnalyticsAdapter_spec.js +94 -24
- package/test/spec/modules/adagioRtdProvider_spec.js +17 -17
- package/test/spec/modules/fwsspBidAdapter_spec.js +513 -78
- package/test/spec/modules/optableRtdProvider_spec.js +55 -5
- package/test/spec/modules/pubmaticAnalyticsAdapter_spec.js +634 -916
- package/test/spec/modules/pubmaticBidAdapter_spec.js +260 -1
- package/test/spec/modules/pubmaticRtdProvider_spec.js +252 -1505
- package/test/spec/modules/realTimeDataModule_spec.js +58 -8
- package/test/spec/modules/sevioBidAdapter_spec.js +513 -0
- package/test/spec/modules/sparteoBidAdapter_spec.js +528 -43
- package/test/spec/modules/timeoutRtdProvider_spec.js +1 -201
- package/test/spec/modules/ttdBidAdapter_spec.js +0 -33
- package/test/spec/modules/userId_spec.js +115 -1
|
@@ -30,6 +30,7 @@ const RENDERER_URL = 'https://pubmatic.bbvms.com/r/'.concat('$RENDERER', '.js');
|
|
|
30
30
|
const MSG_VIDEO_PLCMT_MISSING = 'Video.plcmt param missing';
|
|
31
31
|
const PREBID_NATIVE_DATA_KEY_VALUES = Object.values(PREBID_NATIVE_DATA_KEYS_TO_ORTB);
|
|
32
32
|
const DEFAULT_TTL = 360;
|
|
33
|
+
const DEFAULT_GZIP_ENABLED = true;
|
|
33
34
|
const CUSTOM_PARAMS = {
|
|
34
35
|
'kadpageurl': '', // Custom page url
|
|
35
36
|
'gender': '', // User gender
|
|
@@ -72,6 +73,8 @@ const converter = ortbConverter({
|
|
|
72
73
|
if (!imp.hasOwnProperty('banner') && !imp.hasOwnProperty('video') && !imp.hasOwnProperty('native')) {
|
|
73
74
|
return null;
|
|
74
75
|
}
|
|
76
|
+
imp.ext = imp.ext || {};
|
|
77
|
+
imp.ext.pbcode = adUnitCode;
|
|
75
78
|
if (deals) addPMPDeals(imp, deals);
|
|
76
79
|
if (dctr) addDealCustomTargetings(imp, dctr);
|
|
77
80
|
if (rtd?.jwplayer) addJWPlayerSegmentData(imp, rtd.jwplayer);
|
|
@@ -94,7 +97,9 @@ const converter = ortbConverter({
|
|
|
94
97
|
return imp;
|
|
95
98
|
},
|
|
96
99
|
request(buildRequest, imps, bidderRequest, context) {
|
|
97
|
-
|
|
100
|
+
// Optimize the imps array before building the request
|
|
101
|
+
const optimizedImps = optimizeImps(imps, bidderRequest);
|
|
102
|
+
const request = buildRequest(optimizedImps, bidderRequest, context);
|
|
98
103
|
if (blockedIabCategories.length || request.bcat) {
|
|
99
104
|
const validatedBCategories = validateBlockedCategories([...(blockedIabCategories || []), ...(request.bcat || [])]);
|
|
100
105
|
if (validatedBCategories.length) request.bcat = validatedBCategories;
|
|
@@ -105,7 +110,7 @@ const converter = ortbConverter({
|
|
|
105
110
|
}
|
|
106
111
|
reqLevelParams(request);
|
|
107
112
|
updateUserSiteDevice(request, context?.bidRequests);
|
|
108
|
-
addExtenstionParams(request)
|
|
113
|
+
addExtenstionParams(request, bidderRequest)
|
|
109
114
|
const marketPlaceEnabled = bidderRequest?.bidderCode
|
|
110
115
|
? bidderSettings.get(bidderRequest.bidderCode, 'allowAlternateBidderCodes') : undefined;
|
|
111
116
|
if (marketPlaceEnabled) updateRequestExt(request, bidderRequest);
|
|
@@ -505,8 +510,8 @@ const updateResponseWithCustomFields = (res, bid, ctx) => {
|
|
|
505
510
|
}
|
|
506
511
|
}
|
|
507
512
|
|
|
508
|
-
const addExtenstionParams = (req) => {
|
|
509
|
-
const { profId, verId, wiid
|
|
513
|
+
const addExtenstionParams = (req, bidderRequest) => {
|
|
514
|
+
const { profId, verId, wiid } = conf;
|
|
510
515
|
req.ext = {
|
|
511
516
|
epoch: new Date().getTime(), // Sending epoch timestamp in request.ext object
|
|
512
517
|
wrapper: {
|
|
@@ -514,8 +519,8 @@ const addExtenstionParams = (req) => {
|
|
|
514
519
|
version: verId ? parseInt(verId) : undefined,
|
|
515
520
|
wiid: wiid,
|
|
516
521
|
wv: '$$REPO_AND_VERSION$$',
|
|
517
|
-
|
|
518
|
-
|
|
522
|
+
wp: 'pbjs',
|
|
523
|
+
biddercode: bidderRequest?.bidderCode
|
|
519
524
|
},
|
|
520
525
|
cpmAdjustment: cpmAdjustment
|
|
521
526
|
}
|
|
@@ -569,6 +574,46 @@ const getConnectionType = () => {
|
|
|
569
574
|
return types[connection?.effectiveType] || 0;
|
|
570
575
|
}
|
|
571
576
|
|
|
577
|
+
/**
|
|
578
|
+
* Optimizes the impressions array by consolidating impressions for the same ad unit and media type
|
|
579
|
+
* @param {Array} imps - Array of impression objects
|
|
580
|
+
* @param {Object} bidderRequest - The bidder request object
|
|
581
|
+
* @returns {Array} - Optimized impressions array
|
|
582
|
+
*/
|
|
583
|
+
function optimizeImps(imps, bidderRequest) {
|
|
584
|
+
const optimizedImps = {};
|
|
585
|
+
|
|
586
|
+
bidderRequest.bids.forEach(bid => {
|
|
587
|
+
const correspondingImp = imps.find(imp => imp.id === bid.bidId);
|
|
588
|
+
if (!correspondingImp) return;
|
|
589
|
+
const uniqueKey = bid.adUnitId;
|
|
590
|
+
if (!optimizedImps[uniqueKey]) {
|
|
591
|
+
optimizedImps[uniqueKey] = deepClone(correspondingImp);
|
|
592
|
+
return;
|
|
593
|
+
}
|
|
594
|
+
const baseImp = optimizedImps[uniqueKey];
|
|
595
|
+
|
|
596
|
+
if (isStr(correspondingImp.tagid)) {
|
|
597
|
+
baseImp.tagid = correspondingImp.tagid;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
const copyPropertytoPath = (propPath, propName, toMerge) => {
|
|
601
|
+
if (!correspondingImp[propPath] || !correspondingImp[propPath][propName]) return;
|
|
602
|
+
if (!baseImp[propPath]) baseImp[propPath] = {};
|
|
603
|
+
if (toMerge) {
|
|
604
|
+
if (!baseImp[propPath][propName]) baseImp[propPath][propName] = [];
|
|
605
|
+
baseImp[propPath][propName] = [...baseImp[propPath][propName], ...correspondingImp[propPath][propName]];
|
|
606
|
+
} else {
|
|
607
|
+
baseImp[propPath][propName] = correspondingImp[propPath][propName];
|
|
608
|
+
}
|
|
609
|
+
};
|
|
610
|
+
copyPropertytoPath('ext', 'key_val', false);
|
|
611
|
+
copyPropertytoPath('ext', 'pmZoneId', false);
|
|
612
|
+
copyPropertytoPath('pmp', 'deals', true);
|
|
613
|
+
});
|
|
614
|
+
return Object.values(optimizedImps);
|
|
615
|
+
}
|
|
616
|
+
|
|
572
617
|
// BB stands for Blue BillyWig
|
|
573
618
|
const BB_RENDERER = {
|
|
574
619
|
bootstrapPlayer: function(bid) {
|
|
@@ -641,6 +686,25 @@ const getPublisherId = (bids) =>
|
|
|
641
686
|
? bids.find(bid => bid.params?.publisherId?.trim())?.params.publisherId || null
|
|
642
687
|
: null;
|
|
643
688
|
|
|
689
|
+
function getGzipSetting() {
|
|
690
|
+
// Check bidder-specific configuration
|
|
691
|
+
try {
|
|
692
|
+
const gzipSetting = deepAccess(config.getBidderConfig(), 'pubmatic.gzipEnabled');
|
|
693
|
+
if (gzipSetting !== undefined) {
|
|
694
|
+
const gzipValue = String(gzipSetting).toLowerCase().trim();
|
|
695
|
+
if (gzipValue === 'true' || gzipValue === 'false') {
|
|
696
|
+
const parsedValue = gzipValue === 'true';
|
|
697
|
+
logInfo('PubMatic: Using bidder-specific gzipEnabled setting:', parsedValue);
|
|
698
|
+
return parsedValue;
|
|
699
|
+
}
|
|
700
|
+
logWarn('PubMatic: Invalid gzipEnabled value in bidder config:', gzipSetting);
|
|
701
|
+
}
|
|
702
|
+
} catch (e) { logWarn('PubMatic: Error accessing bidder config:', e); }
|
|
703
|
+
|
|
704
|
+
logInfo('PubMatic: Using default gzipEnabled setting:', DEFAULT_GZIP_ENABLED);
|
|
705
|
+
return DEFAULT_GZIP_ENABLED;
|
|
706
|
+
}
|
|
707
|
+
|
|
644
708
|
const _handleCustomParams = (params, conf) => {
|
|
645
709
|
Object.keys(CUSTOM_PARAMS).forEach(key => {
|
|
646
710
|
const value = params[key];
|
|
@@ -768,7 +832,6 @@ export const spec = {
|
|
|
768
832
|
originalBid.params.wiid = originalBid.params.wiid || bidderRequest.auctionId || wiid;
|
|
769
833
|
bid = deepClone(originalBid);
|
|
770
834
|
_handleCustomParams(bid.params, conf);
|
|
771
|
-
conf.transactionId = bid.ortb2Imp?.ext?.tid;
|
|
772
835
|
const { bcat, acat } = bid.params;
|
|
773
836
|
if (bcat) {
|
|
774
837
|
blockedIabCategories = blockedIabCategories.concat(bcat);
|
|
@@ -785,7 +848,7 @@ export const spec = {
|
|
|
785
848
|
data: data,
|
|
786
849
|
bidderRequest: bidderRequest,
|
|
787
850
|
options: {
|
|
788
|
-
endpointCompression:
|
|
851
|
+
endpointCompression: getGzipSetting()
|
|
789
852
|
},
|
|
790
853
|
};
|
|
791
854
|
return data?.imp?.length ? serverRequest : null;
|
|
@@ -23,7 +23,7 @@ function generateQueryStringParams(config) {
|
|
|
23
23
|
const gdprConsent = gdprDataHandler.getConsentData();
|
|
24
24
|
|
|
25
25
|
const params = {
|
|
26
|
-
publisherId:
|
|
26
|
+
publisherId: String(config.params.publisherId).trim(),
|
|
27
27
|
gdpr: (gdprConsent && gdprConsent?.gdprApplies) ? 1 : 0,
|
|
28
28
|
gdpr_consent: gdprConsent && gdprConsent?.consentString ? encodeURIComponent(gdprConsent.consentString) : '',
|
|
29
29
|
src: 'pbjs_uid',
|
|
@@ -95,13 +95,13 @@ function hasRequiredConfig(config) {
|
|
|
95
95
|
return false;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
//
|
|
98
|
+
// ensure publisherId is a string
|
|
99
99
|
if (config.params.publisherId) {
|
|
100
|
-
config.params.publisherId =
|
|
100
|
+
config.params.publisherId = String(config.params.publisherId).trim();
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
if (!config.params.publisherId) {
|
|
104
|
-
logError(LOG_PREFIX + 'config.params.publisherId (
|
|
104
|
+
logError(LOG_PREFIX + 'config.params.publisherId (String) should be provided.');
|
|
105
105
|
return false;
|
|
106
106
|
}
|
|
107
107
|
|