@@ -40,6 +40,7 @@ for (const method of ['get', 'post', 'put', 'patch', 'delete', 'all']) {
4040 server [ method ] = function ( ...args ) {
4141 if ( typeof args [ 1 ] === 'function' && args [ 1 ] . name === '_invoke' ) {
4242 return original ( args [ 0 ] , bodyParser . text ( { limit : server . maximumPayloadSize } ) , async ( request , response ) => {
43+ reqres . set ( request , response )
4344 const params = { }
4445 for ( const key of Object . keys ( request . params ) ) {
4546 params [ key ] = extractParamValue ( request . params [ key ] )
@@ -48,14 +49,17 @@ for (const method of ['get', 'post', 'put', 'patch', 'delete', 'all']) {
4849 params [ key ] = extractParamValue ( request . query [ key ] )
4950 }
5051 if ( request . method !== 'GET' ) {
51- Object . assign ( params , deserialize ( request . body ) )
52+ const payload = typeof request . body === 'object' ? JSON . stringify ( request . body ) : request . body
53+ Object . assign ( params , deserialize ( payload ) )
5254 }
5355 try {
5456 const subcontext = generateContext ( { request, response, ...params } )
5557 const result = await args [ 1 ] ( subcontext )
58+ reqres . clear ( )
5659 response . json ( result )
5760 } catch ( error ) {
5861 printError ( error )
62+ reqres . clear ( )
5963 response . status ( 500 ) . json ( { } )
6064 }
6165 } )
@@ -224,6 +228,7 @@ server.start = function () {
224228
225229 server . all ( `/${ prefix } /:hash/:methodName.json` , async ( request , response ) => {
226230 const payload = request . method === 'GET' ? request . query . payload : request . body
231+ reqres . set ( request , response )
227232 const args = deserialize ( payload )
228233 const { hash, methodName } = request . params
229234 const [ invokerHash , boundHash ] = hash . split ( '-' )
@@ -241,12 +246,15 @@ server.start = function () {
241246 try {
242247 const subcontext = generateContext ( { request, response, ...args } )
243248 const result = await method . call ( boundKlass , subcontext )
249+ reqres . clear ( )
244250 response . json ( { result } )
245251 } catch ( error ) {
246252 printError ( error )
253+ reqres . clear ( )
247254 response . status ( 500 ) . json ( { } )
248255 }
249256 } else {
257+ reqres . clear ( )
250258 response . status ( 404 ) . json ( { } )
251259 }
252260 } )
@@ -255,21 +263,23 @@ server.start = function () {
255263 if ( request . originalUrl . split ( '?' ) [ 0 ] . indexOf ( '.' ) > - 1 ) {
256264 return next ( )
257265 }
258- reqres . request = request
259- reqres . response = response
266+ reqres . set ( request , response )
260267 const scope = await prerender ( request , response )
261268 if ( ! response . headersSent ) {
262269 const status = scope . context . page . status
263270 const html = template ( scope )
264- reqres . request = null
265- reqres . response = null
271+ reqres . clear ( )
266272 response . status ( status ) . send ( html )
267273 } else {
268- reqres . request = null
269- reqres . response = null
274+ reqres . clear ( )
270275 }
271276 } )
272277
278+ server . use ( ( error , _request , response , _next ) => {
279+ printError ( error )
280+ response . status ( 500 ) . json ( { } )
281+ } )
282+
273283 if ( ! server . less ) {
274284 if ( ! server . port ) {
275285 console . info ( '\x1b[31mServer port is not defined!\x1b[0m' )
0 commit comments