Skip to content

Commit 389b5ad

Browse files
authored
fix: Fix potential property of undefined errors (#610)
1 parent c41edb0 commit 389b5ad

File tree

3 files changed

+35
-26
lines changed

3 files changed

+35
-26
lines changed

package-lock.json

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/common/wrap/wrap-jsonp.js

+11-6
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,18 @@ export function wrapJsonP (sharedEE) {
9898
return matches ? matches[1] : null
9999
}
100100

101+
/**
102+
* Traverse a nested object using a '.'-delimited string wherein each substring piece maps to each subsequent object property layer.
103+
* @param {string} longKey
104+
* @param {object} obj
105+
* @returns The final nested object referred to by initial longKey.
106+
*/
101107
function discoverValue (longKey, obj) {
102-
var matches = longKey.match(VALUE_REGEX)
103-
var key = matches[1]
104-
var remaining = matches[3]
105-
if (!remaining) {
106-
return obj[key]
107-
}
108+
if (!longKey) return obj // end of object recursion depth when no more key levels
109+
const matches = longKey.match(VALUE_REGEX)
110+
// if 'longKey' was not undefined, that is it at least had 1 level left, then the regexp would've at least matched 1st group
111+
const key = matches[1]
112+
const remaining = matches[3]
108113
return discoverValue(remaining, obj[key])
109114
}
110115

src/features/page_view_event/aggregate/initialized-features.js

+18-14
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { FEATURE_NAMES } from '../../../loaders/features/features'
2+
import { gosNREUM } from '../../../common/window/nreum'
23

34
/**
45
* Get an array of flags required by downstream (NR UI) based on the features initialized in this agent
@@ -8,21 +9,24 @@ import { FEATURE_NAMES } from '../../../loaders/features/features'
89
*/
910
export function getActivatedFeaturesFlags (agentId) {
1011
const flagArr = []
12+
const newrelic = gosNREUM()
1113

12-
Object.keys(newrelic.initializedAgents[agentId].features).forEach(featName => {
13-
switch (featName) {
14-
case FEATURE_NAMES.ajax:
15-
flagArr.push('xhr'); break
16-
case FEATURE_NAMES.jserrors:
17-
flagArr.push('err'); break
18-
case FEATURE_NAMES.pageAction:
19-
flagArr.push('ins'); break
20-
case FEATURE_NAMES.sessionTrace:
21-
flagArr.push('stn'); break
22-
case FEATURE_NAMES.spa:
23-
flagArr.push('spa'); break
24-
}
25-
})
14+
try {
15+
Object.keys(newrelic.initializedAgents[agentId].features).forEach(featName => {
16+
switch (featName) {
17+
case FEATURE_NAMES.ajax:
18+
flagArr.push('xhr'); break
19+
case FEATURE_NAMES.jserrors:
20+
flagArr.push('err'); break
21+
case FEATURE_NAMES.pageAction:
22+
flagArr.push('ins'); break
23+
case FEATURE_NAMES.sessionTrace:
24+
flagArr.push('stn'); break
25+
case FEATURE_NAMES.spa:
26+
flagArr.push('spa'); break
27+
}
28+
})
29+
} catch (e) {}
2630

2731
return flagArr
2832
}

0 commit comments

Comments
 (0)