2
2
/* istanbul ignore file */
3
3
4
4
'use strict'
5
-
6
5
7
6
8
7
// eslint-disable-next-line
9
8
const STR_ESCAPE = / [ \u0000 - \u001f \u0022 \u005c \ud800 - \udfff ] | [ \ud800 - \udbff ] (? ! [ \udc00 - \udfff ] ) | (?: [ ^ \ud800 - \udbff ] | ^ ) [ \udc00 - \udfff ] /
10
9
11
10
class Serializer {
12
- constructor ( options = { } ) {
13
- switch ( options . rounding ) {
11
+ constructor ( options ) {
12
+ switch ( options && options . rounding ) {
14
13
case 'floor' :
15
14
this . parseInteger = Math . floor
16
15
break
@@ -20,24 +19,36 @@ class Serializer {
20
19
case 'round' :
21
20
this . parseInteger = Math . round
22
21
break
22
+ case 'trunc' :
23
23
default :
24
24
this . parseInteger = Math . trunc
25
25
break
26
26
}
27
27
}
28
28
29
29
asInteger ( i ) {
30
- if ( typeof i === 'bigint' ) {
30
+ if ( typeof i === 'number' ) {
31
+ if ( i === Infinity || i === - Infinity ) {
32
+ throw new Error ( `The value "${ i } " cannot be converted to an integer.` )
33
+ }
34
+ if ( Number . isInteger ( i ) ) {
35
+ return '' + i
36
+ }
37
+ if ( Number . isNaN ( i ) ) {
38
+ throw new Error ( `The value "${ i } " cannot be converted to an integer.` )
39
+ }
40
+ return this . parseInteger ( i )
41
+ } else if ( i === null ) {
42
+ return '0'
43
+ } else if ( typeof i === 'bigint' ) {
31
44
return i . toString ( )
32
- } else if ( Number . isInteger ( i ) ) {
33
- return '' + i
34
45
} else {
35
46
/* eslint no-undef: "off" */
36
47
const integer = this . parseInteger ( i )
37
- if ( Number . isNaN ( integer ) || ! Number . isFinite ( integer ) ) {
38
- throw new Error ( `The value "${ i } " cannot be converted to an integer.` )
39
- } else {
48
+ if ( Number . isFinite ( integer ) ) {
40
49
return '' + integer
50
+ } else {
51
+ throw new Error ( `The value "${ i } " cannot be converted to an integer.` )
41
52
}
42
53
}
43
54
}
@@ -91,23 +102,24 @@ class Serializer {
91
102
}
92
103
93
104
asString ( str ) {
94
- const quotes = '"'
95
- if ( str instanceof Date ) {
96
- return quotes + str . toISOString ( ) + quotes
97
- } else if ( str === null ) {
98
- return quotes + quotes
99
- } else if ( str instanceof RegExp ) {
100
- str = str . source
101
- } else if ( typeof str !== 'string' ) {
102
- str = str . toString ( )
105
+ if ( typeof str !== 'string' ) {
106
+ if ( str === null ) {
107
+ return '""'
108
+ }
109
+ if ( str instanceof Date ) {
110
+ return '"' + str . toISOString ( ) + '"'
111
+ }
112
+ if ( str instanceof RegExp ) {
113
+ str = str . source
114
+ } else {
115
+ str = str . toString ( )
116
+ }
103
117
}
104
118
105
119
// Fast escape chars check
106
120
if ( ! STR_ESCAPE . test ( str ) ) {
107
- return quotes + str + quotes
108
- }
109
-
110
- if ( str . length < 42 ) {
121
+ return '"' + str + '"'
122
+ } else if ( str . length < 42 ) {
111
123
return this . asStringSmall ( str )
112
124
} else {
113
125
return JSON . stringify ( str )
@@ -151,81 +163,50 @@ class Serializer {
151
163
}
152
164
153
165
154
-
155
- const serializer = new Serializer ( { "mode" :"standalone" } )
166
+ const serializer = new Serializer ( )
156
167
157
168
158
169
159
- function main ( input ) {
160
- let json = ''
161
- json += anonymous0 ( input )
162
- return json
163
- }
164
170
165
171
function anonymous0 ( input ) {
166
172
// #
167
173
168
- var obj = ( input && typeof input . toJSON === 'function' )
174
+ const obj = ( input && typeof input . toJSON === 'function' )
169
175
? input . toJSON ( )
170
176
: input
171
177
172
- var json = '{'
173
- var addComma = false
178
+ let json = '{'
179
+ let addComma = false
174
180
175
181
if ( obj [ "statusCode" ] !== undefined ) {
176
-
177
- if ( addComma ) {
178
- json += ','
179
- } else {
180
- addComma = true
181
- }
182
-
183
- json += "\"statusCode\"" + ':'
182
+ ! addComma && ( addComma = true ) || ( json += ',' )
183
+ json += "\"statusCode\":"
184
184
json += serializer . asNumber ( obj [ "statusCode" ] )
185
185
}
186
186
187
187
if ( obj [ "code" ] !== undefined ) {
188
-
189
- if ( addComma ) {
190
- json += ','
191
- } else {
192
- addComma = true
193
- }
194
-
195
- json += "\"code\"" + ':'
188
+ ! addComma && ( addComma = true ) || ( json += ',' )
189
+ json += "\"code\":"
196
190
json += serializer . asString ( obj [ "code" ] )
197
191
}
198
192
199
193
if ( obj [ "error" ] !== undefined ) {
200
-
201
- if ( addComma ) {
202
- json += ','
203
- } else {
204
- addComma = true
205
- }
206
-
207
- json += "\"error\"" + ':'
194
+ ! addComma && ( addComma = true ) || ( json += ',' )
195
+ json += "\"error\":"
208
196
json += serializer . asString ( obj [ "error" ] )
209
197
}
210
198
211
199
if ( obj [ "message" ] !== undefined ) {
212
-
213
- if ( addComma ) {
214
- json += ','
215
- } else {
216
- addComma = true
217
- }
218
-
219
- json += "\"message\"" + ':'
200
+ ! addComma && ( addComma = true ) || ( json += ',' )
201
+ json += "\"message\":"
220
202
json += serializer . asString ( obj [ "message" ] )
221
203
}
222
204
223
- json += '}'
224
- return json
205
+ return json + '}'
225
206
}
226
207
208
+ const main = anonymous0
209
+
227
210
228
-
229
211
230
212
module . exports = main
231
-
0 commit comments