10000 FSSDK-9843: Add infinity check (#882) · optimizely/javascript-sdk@01b099b · GitHub
[go: up one dir, main page]

Skip to content

Commit 01b099b

Browse files
authored
FSSDK-9843: Add infinity check (#882)
1 parent fc1efa0 commit 01b099b

File tree

1 file changed

+25
-35
lines changed

1 file changed

+25
-35
lines changed

lib/utils/event_tag_utils/index.ts

Lines changed: 25 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -36,26 +36,21 @@ const VALUE_EVENT_METRIC_NAME = RESERVED_EVENT_KEYWORDS.VALUE;
3636
* @return {number|null}
3737
*/
3838
export function getRevenueValue(eventTags: EventTags, logger: LoggerFacade): number | null {
39-
if (eventTags.hasOwnProperty(REVENUE_EVENT_METRIC_NAME)) {
40-
const rawValue = eventTags[REVENUE_EVENT_METRIC_NAME];
41-
let parsedRevenueValue;
42-
if (typeof rawValue === 'string') {
43-
parsedRevenueValue = parseInt(rawValue);
44-
if (isNaN(parsedRevenueValue)) {
45-
logger.log(LOG_LEVEL.INFO, LOG_MESSAGES.FAILED_TO_PARSE_REVENUE, MODULE_NAME, rawValue);
46-
return null;
47-
}
48-
logger.log(LOG_LEVEL.INFO, LOG_MESSAGES.PARSED_REVENUE_VALUE, MODULE_NAME, parsedRevenueValue);
49-
return parsedRevenueValue;
50-
}
51-
if (typeof rawValue === 'number') {
52-
parsedRevenueValue = rawValue;
53-
logger.log(LOG_LEVEL.INFO, LOG_MESSAGES.PARSED_REVENUE_VALUE, MODULE_NAME, parsedRevenueValue);
54-
return parsedRevenueValue;
55-
}
39+
const rawValue = eventTags[REVENUE_EVENT_METRIC_NAME];
40+
41+
if (rawValue == null) { // null or undefined event values
42+
return null;
43+
}
44+
45+
const parsedRevenueValue = typeof rawValue === 'string' ? parseInt(rawValue) : rawValue;
46+
47+
if (isFinite(parsedRevenueValue)) {
48+
logger.log(LOG_LEVEL.INFO, LOG_MESSAGES.PARSED_REVENUE_VALUE, MODULE_NAME, parsedRevenueValue);
49+
return parsedRevenueValue;
50+
} else { // NaN, +/- infinity values
51+
logger.log(LOG_LEVEL.INFO, LOG_MESSAGES.FAILED_TO_PARSE_REVENUE, MODULE_NAME, rawValue);
5652
return null;
5753
}
58-
return null;
5954
}
6055

6156
/**
@@ -65,24 +60,19 @@ export function getRevenueValue(eventTags: EventTags, logger: LoggerFacade): num
6560
* @return {number|null}
6661
*/
6762
export function getEventValue(eventTags: EventTags, logger: LoggerFacade): number | null {
68-
if (eventTags.hasOwnProperty(VALUE_EVENT_METRIC_NAME)) {
69-
const rawValue = eventTags[VALUE_EVENT_METRIC_NAME];
70-
let parsedEventValue;
71-
if (typeof rawValue === 'string') {
72-
parsedEventValue = parseFloat(rawValue);
73-
if (isNaN(parsedEventValue)) {
74-
logger.log(LOG_LEVEL.INFO, LOG_MESSAGES.FAILED_TO_PARSE_VALUE, MODULE_NAME, rawValue);
75-
return null;
76-
}
63+
const rawValue = eventTags[VALUE_EVENT_METRIC_NAME];
64+
65+
if (rawValue == null) { // null or undefined event values
66+
return null;
67+
}
68+
69+
const parsedEventValue = typeof rawValue === 'string' ? parseFloat(rawValue) : rawValue;
70+
71+
if (isFinite(parsedEventValue)) {
7772
logger.log(LOG_LEVEL.INFO, LOG_MESSAGES.PARSED_NUMERIC_VALUE, MODULE_NAME, parsedEventValue);
7873
return parsedEventValue;
79-
}
80-
if (typeof rawValue === 'number') {
81-
parsedEventValue = rawValue;
82-
logger.log(LOG_LEVEL.INFO, LOG_MESSAGES.PARSED_NUMERIC_VALUE, MODULE_NAME, parsedEventValue);
83-
return parsedEventValue;
84-
}
74+
} else { // NaN, +/- infinity values
75+
logger.log(LOG_LEVEL.INFO, LOG_MESSAGES.FAILED_TO_PARSE_VALUE, MODULE_NAME, rawValue);
8576
return null;
8677
}
87-
return null;
88-
}
78+
}

0 commit comments

Comments
 (0)
0