Skip to content

Commit 46dc226

Browse files
authored
Merge pull request #22 from SoftwareBrothers/fix/safe-parse-number
fix: check if string param is numeric before converting to Number
2 parents f9b06bc + 988381f commit 46dc226

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

src/Resource.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { BaseResource, ValidationError, Filter, BaseRecord, flat } from 'admin-b
44

55
import { Property } from './Property'
66
import { convertFilter } from './utils/filter/filter.converter'
7+
import safeParseNumber from './utils/safe-parse-number'
78

89
type ParamsType = Record<string, any>;
910

@@ -146,9 +147,9 @@ export class Resource extends BaseResource {
146147

147148
if (type === 'number') {
148149
if (property.isArray()) {
149-
preparedParams[key] = param ? param.map((p) => Number(p)) : param
150+
preparedParams[key] = param ? param.map((p) => safeParseNumber(p)) : param
150151
} else {
151-
preparedParams[key] = Number(param)
152+
preparedParams[key] = safeParseNumber(param)
152153
}
153154
}
154155

src/utils/safe-parse-number.ts

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/* eslint-disable no-restricted-globals */
2+
const isNumeric = (value: null | string | number | undefined): boolean => {
3+
const stringValue = (String(value)).replace(/,/g, '.')
4+
5+
if (isNaN(parseFloat(stringValue))) return false
6+
7+
return isFinite(Number(stringValue))
8+
}
9+
10+
const safeParseNumber = (value?: null | string | number): string | number | null | undefined => {
11+
if (isNumeric(value)) return Number(value)
12+
13+
return value
14+
}
15+
16+
export default safeParseNumber

0 commit comments

Comments
 (0)