Skip to content

Commit 8b8fe2e

Browse files
refactor: replace deepAccess with optional chaining (#13154)
Co-authored-by: Chris Huie <[email protected]>
1 parent 78f796b commit 8b8fe2e

File tree

10 files changed

+47
-51
lines changed

10 files changed

+47
-51
lines changed

libraries/advangUtils/index.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import { deepAccess, generateUUID, isFn, parseSizesInput, parseUrl } from '../../src/utils.js';
1+
import { generateUUID, isFn, parseSizesInput, parseUrl } from '../../src/utils.js';
22
import { config } from '../../src/config.js';
33

44
export const DEFAULT_MIMES = ['video/mp4', 'application/javascript'];
55

66
export function isBannerBid(bid) {
7-
return deepAccess(bid, 'mediaTypes.banner') || !isVideoBid(bid);
7+
return bid?.mediaTypes?.banner || !isVideoBid(bid);
88
}
99

1010
export function isVideoBid(bid) {
11-
return deepAccess(bid, 'mediaTypes.video');
11+
return bid?.mediaTypes?.video;
1212
}
1313

1414
export function getBannerBidFloor(bid) {
@@ -30,11 +30,11 @@ export function isBannerBidValid(bid) {
3030
}
3131

3232
export function getVideoBidParam(bid, key) {
33-
return deepAccess(bid, 'params.video.' + key) || deepAccess(bid, 'params.' + key);
33+
return bid?.params?.video?.[key] || bid?.params?.[key];
3434
}
3535

3636
export function getBannerBidParam(bid, key) {
37-
return deepAccess(bid, 'params.banner.' + key) || deepAccess(bid, 'params.' + key);
37+
return bid?.params?.banner?.[key] || bid?.params?.[key];
3838
}
3939

4040
export function isMobile() {
@@ -95,11 +95,11 @@ export function parseSizes(sizes) {
9595
}
9696

9797
export function getVideoSizes(bid) {
98-
return parseSizes(deepAccess(bid, 'mediaTypes.video.playerSize') || bid.sizes);
98+
return parseSizes(bid?.mediaTypes?.video?.playerSize || bid.sizes);
9999
}
100100

101101
export function getBannerSizes(bid) {
102-
return parseSizes(deepAccess(bid, 'mediaTypes.banner.sizes') || bid.sizes);
102+
return parseSizes(bid?.mediaTypes?.banner?.sizes || bid.sizes);
103103
}
104104

105105
export function getTopWindowReferrer(bidderRequest) {

libraries/audUtils/bidderUtils.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import {
2-
deepAccess,
32
deepSetValue,
43
generateUUID,
54
logError
@@ -74,7 +73,7 @@ const formatResponse = (bidResponse, mediaType, assets) => {
7473
let responseArray = [];
7574
if (bidResponse) {
7675
try {
77-
let bidResp = deepAccess(bidResponse, 'body.seatbid', []);
76+
let bidResp = bidResponse?.body?.seatbid ?? [];
7877
if (bidResp && bidResp[0] && bidResp[0].bid) {
7978
bidResp[0].bid.forEach(bidReq => {
8079
let response = {};
@@ -150,7 +149,7 @@ const getBannerDetails = (bidReq) => {
150149
}
151150
// Function to get floor price
152151
const getFloorPrice = (bidReq) => {
153-
let bidfloor = deepAccess(bidReq, 'params.bid_floor', 0);
152+
let bidfloor = bidReq?.params?.bid_floor ?? 0;
154153
return bidfloor;
155154
}
156155
// Function to get site object

libraries/pbsExtensions/processors/pbs.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,13 @@ export const PBS_PROCESSORS = {
4848
// sets bidderCode from on seatbid.seat
4949
fn(bidResponse, bid, context) {
5050
bidResponse.bidderCode = context.seatbid.seat;
51-
bidResponse.adapterCode = deepAccess(bid, 'ext.prebid.meta.adaptercode') || context.bidRequest?.bidder || bidResponse.bidderCode;
51+
bidResponse.adapterCode = bid?.ext?.prebid?.meta?.adaptercode || context.bidRequest?.bidder || bidResponse.bidderCode;
5252
}
5353
},
5454
pbsBidId: {
5555
// sets bidResponse.pbsBidId from ext.prebid.bidid
5656
fn(bidResponse, bid) {
57-
const bidId = deepAccess(bid, 'ext.prebid.bidid');
57+
const bidId = bid?.ext?.prebid?.bidid;
5858
if (isStr(bidId)) {
5959
bidResponse.pbsBidId = bidId;
6060
}
@@ -63,7 +63,7 @@ export const PBS_PROCESSORS = {
6363
adserverTargeting: {
6464
// sets bidResponse.adserverTargeting from ext.prebid.targeting
6565
fn(bidResponse, bid) {
66-
const targeting = deepAccess(bid, 'ext.prebid.targeting');
66+
const targeting = bid?.ext?.prebid?.targeting;
6767
if (isPlainObject(targeting)) {
6868
bidResponse.adserverTargeting = targeting;
6969
}
@@ -72,7 +72,7 @@ export const PBS_PROCESSORS = {
7272
extPrebidMeta: {
7373
// sets bidResponse.meta from ext.prebid.meta
7474
fn(bidResponse, bid) {
75-
bidResponse.meta = mergeDeep({}, deepAccess(bid, 'ext.prebid.meta'), bidResponse.meta);
75+
bidResponse.meta = mergeDeep({}, bid?.ext?.prebid?.meta, bidResponse.meta);
7676
}
7777
},
7878
pbsWinTrackers: {

libraries/pbsExtensions/processors/video.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import {VIDEO} from '../../../src/mediaTypes.js';
2-
import {deepAccess} from '../../../src/utils.js';
32

43
export function setBidResponseVideoCache(bidResponse, bid) {
54
if (bidResponse.mediaType === VIDEO) {
65
// try to get cache values from 'response.ext.prebid.cache'
76
// else try 'bid.ext.prebid.targeting' as fallback
8-
let {cacheId: videoCacheKey, url: vastUrl} = deepAccess(bid, 'ext.prebid.cache.vastXml') || {};
7+
let {cacheId: videoCacheKey, url: vastUrl} = bid?.ext?.prebid?.cache?.vastXml ?? {};
98
if (!videoCacheKey || !vastUrl) {
10-
const {hb_uuid: uuid, hb_cache_host: cacheHost, hb_cache_path: cachePath} = deepAccess(bid, 'ext.prebid.targeting') || {};
9+
const {hb_uuid: uuid, hb_cache_host: cacheHost, hb_cache_path: cachePath} = bid?.ext?.prebid?.targeting ?? {};
1110
if (uuid && cacheHost && cachePath) {
1211
videoCacheKey = uuid;
1312
vastUrl = `https://${cacheHost}${cachePath}?uuid=${uuid}`;

libraries/precisoUtils/bidUtils.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { convertOrtbRequestToProprietaryNative } from '../../src/native.js';
2-
import { replaceAuctionPrice, deepAccess } from '../../src/utils.js';
2+
import { replaceAuctionPrice } from '../../src/utils.js';
33
import { ajax } from '../../src/ajax.js';
44
// import { NATIVE } from '../../src/mediaTypes.js';
55
import { consentCheck, getBidFloor } from './bidUtilsCommon.js';
@@ -89,7 +89,7 @@ function mapImpression(slot, bidderRequest) {
8989
bidFloor: getBidFloor(slot),
9090
};
9191

92-
if (slot.mediaType === 'native' || deepAccess(slot, 'mediaTypes.native')) {
92+
if (slot.mediaType === 'native' || slot?.mediaTypes?.native) {
9393
imp.native = mapNative(slot)
9494
} else {
9595
imp.banner = mapBanner(slot)
@@ -98,7 +98,7 @@ function mapImpression(slot, bidderRequest) {
9898
}
9999

100100
function mapNative(slot) {
101-
if (slot.mediaType === 'native' || deepAccess(slot, 'mediaTypes.native')) {
101+
if (slot.mediaType === 'native' || slot?.mediaTypes?.native) {
102102
let request = {
103103
assets: slot.nativeOrtbRequest.assets || slot.nativeParams.ortb.assets,
104104
ver: '1.2'

libraries/precisoUtils/bidUtilsCommon.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { config } from '../../src/config.js';
22
import {
33
isFn,
44
isStr,
5-
deepAccess,
65
getWindowTop,
76
triggerPixel
87
} from '../../src/utils.js';
@@ -28,7 +27,7 @@ function isBidResponseValid(bid) {
2827

2928
export function getBidFloor(bid) {
3029
if (!isFn(bid.getFloor)) {
31-
return deepAccess(bid, 'params.bidFloor', 0);
30+
return bid?.params?.bidFloor ?? 0;
3231
}
3332

3433
try {
@@ -154,7 +153,7 @@ export const buildUserSyncs = (syncOptions, serverResponses, gdprConsent, uspCon
154153
}
155154

156155
export function bidWinReport (bid) {
157-
const cpm = deepAccess(bid, 'adserverTargeting.hb_pb') || '';
156+
const cpm = bid?.adserverTargeting?.hb_pb || '';
158157
if (isStr(bid.nurl) && bid.nurl !== '') {
159158
bid.nurl = bid.nurl.replace(/\${AUCTION_PRICE}/, cpm);
160159
triggerPixel(bid.nurl);

libraries/targetVideoUtils/bidderUtils.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {SYNC_URL} from './constants.js';
22
import {VIDEO} from '../../src/mediaTypes.js';
33
import {getRefererInfo} from '../../src/refererDetection.js';
4-
import {createTrackPixelHtml, deepAccess, getBidRequest, formatQS} from '../../src/utils.js';
4+
import {createTrackPixelHtml, getBidRequest, formatQS} from '../../src/utils.js';
55

66
export function getSizes(request) {
77
let sizes = request.sizes;
@@ -146,7 +146,7 @@ export function getBannerHtml(vastUrl) {
146146
export function getAd(bid) {
147147
let ad, adUrl, vastXml, vastUrl;
148148

149-
switch (deepAccess(bid, 'ext.prebid.type')) {
149+
switch (bid?.ext?.prebid?.type) {
150150
case VIDEO:
151151
if (bid.adm.substr(0, 4) === 'http') {
152152
vastUrl = bid.adm;

libraries/teqblazeUtils/bidderUtils.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { BANNER, NATIVE, VIDEO } from '../../src/mediaTypes.js';
2-
import { deepAccess } from '../../src/utils.js';
2+
33
import { config } from '../../src/config.js';
44

55
const PROTOCOL_PATTERN = /^[a-z0-9.+-]+:/i;
@@ -132,8 +132,8 @@ export const isBidRequestValid = (keys = ['placementId', 'endpointId'], mode) =>
132132
export const buildRequestsBase = (config) => {
133133
const { adUrl, validBidRequests, bidderRequest } = config;
134134
const placementProcessingFunction = config.placementProcessingFunction || buildPlacementProcessingFunction();
135-
const device = deepAccess(bidderRequest, 'ortb2.device');
136-
const page = deepAccess(bidderRequest, 'refererInfo.page', '');
135+
const device = bidderRequest?.ortb2?.device;
136+
const page = bidderRequest?.refererInfo?.page || '';
137137

138138
const proto = PROTOCOL_PATTERN.exec(page);
139139
const protocol = proto?.[0];
@@ -144,15 +144,15 @@ export const buildRequestsBase = (config) => {
144144
deviceHeight: device?.h || 0,
145145
language: device?.language?.split('-')[0] || '',
146146
secure: protocol === 'https:' ? 1 : 0,
147-
host: deepAccess(bidderRequest, 'refererInfo.domain', ''),
147+
host: bidderRequest?.refererInfo?.domain || '',
148148
page,
149149
placements,
150-
coppa: deepAccess(bidderRequest, 'ortb2.regs.coppa') ? 1 : 0,
150+
coppa: bidderRequest?.ortb2?.regs?.coppa ? 1 : 0,
151151
tmax: bidderRequest.timeout,
152-
bcat: deepAccess(bidderRequest, 'ortb2.bcat'),
153-
badv: deepAccess(bidderRequest, 'ortb2.badv'),
154-
bapp: deepAccess(bidderRequest, 'ortb2.bapp'),
155-
battr: deepAccess(bidderRequest, 'ortb2.battr')
152+
bcat: bidderRequest?.ortb2?.bcat,
153+
badv: bidderRequest?.ortb2?.badv,
154+
bapp: bidderRequest?.ortb2?.bapp,
155+
battr: bidderRequest?.ortb2?.battr
156156
};
157157

158158
if (bidderRequest.uspConsent) {

libraries/vidazooUtils/bidderUtils.js

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import {
22
_each,
3-
deepAccess,
43
formatQS,
54
isArray,
65
isFn,
@@ -173,7 +172,7 @@ export function createUserSyncGetter(options = {
173172
const {gppString, applicableSections} = gppConsent;
174173
const coppa = config.getConfig('coppa') ? 1 : 0;
175174

176-
const cidArr = responses.filter(resp => deepAccess(resp, 'body.cid')).map(resp => resp.body.cid).filter(uniques);
175+
const cidArr = responses.filter(resp => resp?.body?.cid).map(resp => resp.body.cid).filter(uniques);
177176
let params = `?cid=${encodeURIComponent(cidArr.join(','))}&gdpr=${gdprApplies ? 1 : 0}&gdpr_consent=${encodeURIComponent(consentString || '')}&us_privacy=${encodeURIComponent(uspConsent || '')}&coppa=${encodeURIComponent((coppa))}`;
178177
if (gppString && applicableSections?.length) {
179178
params += '&gpp=' + encodeURIComponent(gppString);
@@ -240,14 +239,14 @@ export function buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidder
240239
const pId = extractPID(params);
241240
const isStorageAllowed = bidderSettings.get(bidderCode, 'storageAllowed');
242241

243-
const gpid = deepAccess(bid, 'ortb2Imp.ext.gpid') || deepAccess(bid, 'ortb2Imp.ext.data.pbadslot', '');
244-
const cat = deepAccess(bidderRequest, 'ortb2.site.cat', []);
245-
const pagecat = deepAccess(bidderRequest, 'ortb2.site.pagecat', []);
246-
const contentData = deepAccess(bidderRequest, 'ortb2.site.content.data', []);
247-
const userData = deepAccess(bidderRequest, 'ortb2.user.data', []);
248-
const contentLang = deepAccess(bidderRequest, 'ortb2.site.content.language') || document.documentElement.lang;
249-
const coppa = deepAccess(bidderRequest, 'ortb2.regs.coppa', 0);
250-
const device = deepAccess(bidderRequest, 'ortb2.device', {});
242+
const gpid = bid?.ortb2Imp?.ext?.gpid || bid?.ortb2Imp?.ext?.data?.pbadslot || '';
243+
const cat = bidderRequest?.ortb2?.site?.cat || [];
244+
const pagecat = bidderRequest?.ortb2?.site?.pagecat || [];
245+
const contentData = bidderRequest?.ortb2?.site?.content?.data || [];
246+
const userData = bidderRequest?.ortb2?.user?.data || [];
247+
const contentLang = bidderRequest?.ortb2?.site?.content?.language || document.documentElement.lang;
248+
const coppa = bidderRequest?.ortb2?.regs?.coppa ?? 0;
249+
const device = bidderRequest?.ortb2?.device || {};
251250

252251
if (isFn(bid.getFloor)) {
253252
const floorInfo = bid.getFloor({
@@ -297,7 +296,7 @@ export function buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidder
297296

298297
appendUserIdsToRequestPayload(data, userId);
299298

300-
const sua = deepAccess(bidderRequest, 'ortb2.device.sua');
299+
const sua = bidderRequest?.ortb2?.device?.sua;
301300

302301
if (sua) {
303302
data.sua = sua;
@@ -324,15 +323,15 @@ export function buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidder
324323
}
325324

326325
if (bidderRequest.paapi?.enabled) {
327-
const fledge = deepAccess(bidderRequest, 'ortb2Imp.ext.ae');
326+
const fledge = bidderRequest?.ortb2Imp?.ext?.ae;
328327
if (fledge) {
329328
data.fledge = fledge;
330329
}
331330
}
332331

333-
const api = deepAccess(mediaTypes, 'video.api', []);
332+
const api = mediaTypes?.video?.api || [];
334333
if (api.includes(7)) {
335-
const sourceExt = deepAccess(bidderRequest, 'ortb2.source.ext');
334+
const sourceExt = bidderRequest?.ortb2?.source?.ext;
336335
if (sourceExt?.omidpv) {
337336
data.omidpv = sourceExt.omidpv;
338337
}
@@ -341,7 +340,7 @@ export function buildRequestData(bid, topWindowUrl, sizes, bidderRequest, bidder
341340
}
342341
}
343342

344-
const dsa = deepAccess(bidderRequest, 'ortb2.regs.ext.dsa');
343+
const dsa = bidderRequest?.ortb2?.regs?.ext?.dsa;
345344
if (dsa) {
346345
data.dsa = dsa;
347346
}
@@ -360,7 +359,7 @@ export function createInterpretResponseFn(bidderCode, allowSingleRequest) {
360359
}
361360

362361
const singleRequestMode = allowSingleRequest && config.getConfig(`${bidderCode}.singleRequest`);
363-
const reqBidId = deepAccess(request, 'data.bidId');
362+
const reqBidId = request?.data?.bidId;
364363
const {results} = serverResponse.body;
365364

366365
let output = [];

src/targeting.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,7 @@ export function newTargeting(auctionManager) {
556556
const cacheFilter = bidCacheEnabled || isBidFromLastAuction;
557557
const bidFilter = cacheFilter && filterFunctionResult;
558558

559-
if (bidFilter && deepAccess(bid, 'video.context') !== ADPOD && isBidUsable(bid)) {
559+
if (bidFilter && bid?.video?.context !== ADPOD && isBidUsable(bid)) {
560560
bid.latestTargetedAuctionId = latestAuctionForAdUnit[bid.adUnitCode];
561561
bids.push(bid)
562562
}

0 commit comments

Comments
 (0)