Skip to content

Commit 9c5321a

Browse files
authored
improve performance of asInteger serializer (#589)
1 parent 2d6d9c4 commit 9c5321a

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

lib/serializer.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,28 @@ module.exports = class Serializer {
2323
}
2424

2525
asInteger (i) {
26-
if (typeof i === 'bigint') {
26+
if (typeof i === 'number') {
27+
if (i === Infinity || i === -Infinity) {
28+
throw new Error(`The value "${i}" cannot be converted to an integer.`)
29+
}
30+
if ((i | 0) === i) {
31+
return '' + i
32+
}
33+
if (Number.isNaN(i)) {
34+
throw new Error(`The value "${i}" cannot be converted to an integer.`)
35+
}
36+
return this.parseInteger(i)
37+
} else if (i === null) {
38+
return '0'
39+
} else if (typeof i === 'bigint') {
2740
return i.toString()
28-
} else if (Number.isInteger(i)) {
29-
return '' + i
3041
} else {
3142
/* eslint no-undef: "off" */
3243
const integer = this.parseInteger(i)
33-
if (Number.isNaN(integer) || !Number.isFinite(integer)) {
34-
throw new Error(`The value "${i}" cannot be converted to an integer.`)
35-
} else {
44+
if (Number.isFinite(integer)) {
3645
return '' + integer
46+
} else {
47+
throw new Error(`The value "${i}" cannot be converted to an integer.`)
3748
}
3849
}
3950
}

0 commit comments

Comments
 (0)