@@ -37,63 +37,63 @@ export const p =
37
37
payloadLimit = defaultPayloadLimit ,
38
38
payloadLimitErrorFn : LimitErrorFn = defaultErrorFn
39
39
) =>
40
- async ( req : ReqWithBody < T > , _res : Response , next : ( err ?: any ) => void ) => {
41
- try {
42
- const body : Buffer [ ] = [ ]
43
-
44
- for await ( const chunk of req ) {
45
- const totalSize = body . reduce ( ( total , buffer ) => total + buffer . byteLength , 0 )
46
- if ( totalSize > payloadLimit ) throw payloadLimitErrorFn ( payloadLimit )
47
- body . push ( chunk as Buffer )
48
- }
49
-
50
- return fn ( Buffer . concat ( body ) )
51
- } catch ( e ) {
52
- next ( e )
40
+ async ( req : ReqWithBody < T > , _res : Response , next : ( err ?: any ) => void ) => {
41
+ try {
42
+ const body : Buffer [ ] = [ ]
43
+
44
+ for await ( const chunk of req ) {
45
+ const totalSize = body . reduce ( ( total , buffer ) => total + buffer . byteLength , 0 )
46
+ if ( totalSize > payloadLimit ) throw payloadLimitErrorFn ( payloadLimit )
47
+ body . push ( chunk as Buffer )
53
48
}
49
+
50
+ return fn ( Buffer . concat ( body ) )
51
+ } catch ( e ) {
52
+ next ( e )
54
53
}
54
+ }
55
55
56
56
/**
57
57
* Parse payload with a custom function
58
58
* @param fn
59
59
*/
60
60
const custom =
61
61
< T = any > ( fn : ( body : Buffer ) => any ) =>
62
- async ( req : ReqWithBody , _res : Response , next : NextFunction ) => {
63
- if ( hasBody ( req . method ! ) ) req . body = await p < T > ( fn ) ( req , _res , next )
64
- next ( )
65
- }
62
+ async ( req : ReqWithBody , _res : Response , next : NextFunction ) => {
63
+ if ( hasBody ( req . method ! ) ) req . body = await p < T > ( fn ) ( req , _res , next )
64
+ next ( )
65
+ }
66
66
67
67
/**
68
68
* Parse JSON payload
69
69
* @param options
70
70
*/
71
71
const json =
72
72
( { payloadLimit, payloadLimitErrorFn } : ParserOptions = { } ) =>
73
- async ( req : ReqWithBody , res : Response , next : NextFunction ) => {
74
- if ( hasBody ( req . method ! ) ) {
75
- req . body = await p (
76
- ( x ) => {
77
- const str = td . decode ( x )
78
- return str ? JSON . parse ( str ) : { }
79
- } ,
80
- payloadLimit ,
81
- payloadLimitErrorFn
82
- ) ( req , res , next )
83
- } else next ( )
84
- }
73
+ async ( req : ReqWithBody , res : Response , next : NextFunction ) => {
74
+ if ( hasBody ( req . method ! ) ) {
75
+ req . body = await p (
76
+ ( x ) => {
77
+ const str = td . decode ( x )
78
+ return str ? JSON . parse ( str ) : { }
79
+ } ,
80
+ payloadLimit ,
81
+ payloadLimitErrorFn
82
+ ) ( req , res , next )
83
+ } else next ( )
84
+ }
85
85
86
86
/**
87
87
* Parse raw payload
88
88
* @param options
89
89
*/
90
90
const raw =
91
91
( { payloadLimit, payloadLimitErrorFn } : ParserOptions = { } ) =>
92
- async ( req : ReqWithBody , _res : Response , next : NextFunction ) => {
93
- if ( hasBody ( req . method ! ) ) {
94
- req . body = await p ( ( x ) => x , payloadLimit , payloadLimitErrorFn ) ( req , _res , next )
95
- } else next ( )
96
- }
92
+ async ( req : ReqWithBody , _res : Response , next : NextFunction ) => {
93
+ if ( hasBody ( req . method ! ) ) {
94
+ req . body = await p ( ( x ) => x , payloadLimit , payloadLimitErrorFn ) ( req , _res , next )
95
+ } else next ( )
96
+ }
97
97
98
98
const td = new TextDecoder ( )
99
99
/**
@@ -103,27 +103,27 @@ const td = new TextDecoder()
103
103
*/
104
104
const text =
105
105
( { payloadLimit, payloadLimitErrorFn } : ParserOptions = { } ) =>
106
- async ( req : ReqWithBody , _res : Response , next : NextFunction ) => {
107
- if ( hasBody ( req . method ! ) ) {
108
- req . body = await p ( ( x ) => td . decode ( x ) , payloadLimit , payloadLimitErrorFn ) ( req , _res , next )
109
- } else next ( )
110
- }
106
+ async ( req : ReqWithBody , _res : Response , next : NextFunction ) => {
107
+ if ( hasBody ( req . method ! ) ) {
108
+ req . body = await p ( ( x ) => td . decode ( x ) , payloadLimit , payloadLimitErrorFn ) ( req , _res , next )
109
+ } else next ( )
110
+ }
111
111
112
112
/**
113
113
* Parse urlencoded payload
114
114
* @param options
115
115
*/
116
116
const urlencoded =
117
117
( { payloadLimit, payloadLimitErrorFn } : ParserOptions = { } ) =>
118
- async ( req : ReqWithBody , _res : Response , next : NextFunction ) => {
119
- if ( hasBody ( req . method ! ) ) {
120
- req . body = await p (
121
- ( x ) => Object . fromEntries ( new URLSearchParams ( x . toString ( ) ) . entries ( ) ) ,
122
- payloadLimit ,
123
- payloadLimitErrorFn
124
- ) ( req , _res , next )
125
- } else next ( )
126
- }
118
+ async ( req : ReqWithBody , _res : Response , next : NextFunction ) => {
119
+ if ( hasBody ( req . method ! ) ) {
120
+ req . body = await p (
121
+ ( x ) => Object . fromEntries ( new URLSearchParams ( x . toString ( ) ) . entries ( ) ) ,
122
+ payloadLimit ,
123
+ payloadLimitErrorFn
124
+ ) ( req , _res , next )
125
+ } else next ( )
126
+ }
127
127
128
128
const getBoundary = ( contentType : string ) => {
129
129
const match = / b o u n d a r y = ( .+ ) ; ? / . exec ( contentType )
@@ -195,18 +195,18 @@ type MultipartOptions = Partial<{
195
195
*/
196
196
const multipart =
197
197
( { payloadLimit = Number . POSITIVE_INFINITY , payloadLimitErrorFn, ...opts } : MultipartOptions & ParserOptions = { } ) =>
198
- async ( req : ReqWithBody , res : Response , next : NextFunction ) => {
199
- if ( hasBody ( req . method ! ) ) {
200
- req . body = await p (
201
- ( x ) => {
202
- const boundary = getBoundary ( req . headers [ 'content-type' ] ! )
203
- if ( boundary ) return parseMultipart ( td . decode ( x ) , boundary , opts )
204
- return { }
205
- } ,
206
- payloadLimit ,
207
- payloadLimitErrorFn
208
- ) ( req , res , next )
209
- } else next ( )
210
- }
198
+ async ( req : ReqWithBody , res : Response , next : NextFunction ) => {
199
+ if ( hasBody ( req . method ! ) ) {
200
+ req . body = await p (
201
+ ( x ) => {
202
+ const boundary = getBoundary ( req . headers [ 'content-type' ] ! )
203
+ if ( boundary ) return parseMultipart ( td . decode ( x ) , boundary , opts )
204
+ return { }
205
+ } ,
206
+ payloadLimit ,
207
+ payloadLimitErrorFn
208
+ ) ( req , res , next )
209
+ } else next ( )
210
+ }
211
211
212
212
export { custom , json , raw , text , urlencoded , multipart }
0 commit comments