Skip to content

Commit d7d9817

Browse files
committed
Apply feedback
1 parent cd5394c commit d7d9817

File tree

4 files changed

+11
-23
lines changed

4 files changed

+11
-23
lines changed

packages/server/src/handlers/PatchHandler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ export class PatchHandler extends BaseHandler {
127127
if (status_code) responseData.status = status_code
128128
if (body) responseData.body = body
129129
if (headers)
130-
responseData.headers = Object.assign(headers, responseData.headers)
130+
responseData.headers = Object.assign(responseData.headers, headers)
131131
}
132132
} catch (error) {
133133
log(`onUploadFinish: ${error.body}`)

packages/server/src/server.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ export class Server extends EventEmitter {
140140
return this.handler(req)
141141
}
142142

143-
handler(req: Request) {
143+
private async handler(req: Request) {
144144
const context = this.createContext()
145145
const headers = new Headers()
146146

@@ -165,8 +165,9 @@ export class Server extends EventEmitter {
165165

166166
if (req.method === 'GET') {
167167
const handler = this.handlers.GET
168-
// TODO: abort context after wait send()?
169-
return handler.send(req, context, headers).catch(onError)
168+
const res = await handler.send(req, context, headers).catch(onError)
169+
context.abort
170+
return res
170171
}
171172

172173
// The Tus-Resumable header MUST be included in every request and
@@ -257,12 +258,6 @@ export class Server extends EventEmitter {
257258
}
258259

259260
return new Response(body, {status, headers})
260-
261-
// Abort the context once the response is sent.
262-
// Useful for clean-up when the server uses keep-alive
263-
// if (!isAborted) {
264-
// context.abort()
265-
// }
266261
}
267262

268263
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
@@ -287,16 +282,13 @@ export class Server extends EventEmitter {
287282
const abortWithDelayController = new AbortController()
288283

289284
const onDelayedAbort = (err: unknown) => {
290-
abortWithDelayController.signal.removeEventListener('abort', onDelayedAbort)
291285
setTimeout(() => {
292286
requestAbortController.abort(err)
293287
}, this.options.lockDrainTimeout)
294288
}
295-
abortWithDelayController.signal.addEventListener('abort', onDelayedAbort)
296-
297-
// req.on('close', () => {
298-
// abortWithDelayController.signal.removeEventListener('abort', onDelayedAbort)
299-
// })
289+
abortWithDelayController.signal.addEventListener('abort', onDelayedAbort, {
290+
once: true,
291+
})
300292

301293
return {
302294
signal: requestAbortController.signal,

packages/server/src/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ export type ServerOptions = {
147147
| undefined
148148
}
149149

150-
export type RouteHandler = (req: Request) => Response
150+
export type RouteHandler = (req: Request) => Response | Promise<Response>
151151

152152
export type WithOptional<T, K extends keyof T> = Omit<T, K> & {[P in K]+?: T[P]}
153153

packages/server/src/web.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {createReadStream} from 'node:fs'
33
import {Readable} from 'node:stream'
44
import * as set_cookie_parser from 'set-cookie-parser'
55

6-
function get_raw_body(req: http.IncomingMessage) {
6+
function getRawBody(req: http.IncomingMessage) {
77
const h = req.headers
88

99
if (!h['content-type']) {
@@ -64,8 +64,6 @@ function get_raw_body(req: http.IncomingMessage) {
6464
})
6565
}
6666

67-
// TODO 3.0 make the signature synchronous?
68-
// eslint-disable-next-line @typescript-eslint/require-await
6967
export async function getRequest({
7068
request,
7169
base,
@@ -92,12 +90,10 @@ export async function getRequest({
9290
body:
9391
request.method === 'GET' || request.method === 'HEAD'
9492
? undefined
95-
: get_raw_body(request),
93+
: getRawBody(request),
9694
})
9795
}
9896

99-
// TODO 3.0 make the signature synchronous?
100-
// eslint-disable-next-line @typescript-eslint/require-await
10197
export async function setResponse(res: http.ServerResponse, response: Response) {
10298
for (const [key, value] of response.headers) {
10399
try {

0 commit comments

Comments
 (0)