From 49c7897bd09f344a605cf25da020104c4498cdae Mon Sep 17 00:00:00 2001 From: Andrew Kreiling Date: Thu, 28 Sep 2023 06:14:42 -0500 Subject: [PATCH] use a new buffer for every invocation of `handle` --- src/index.ts | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/index.ts b/src/index.ts index e7fe9ce..d1fd558 100644 --- a/src/index.ts +++ b/src/index.ts @@ -150,14 +150,6 @@ export class Router { */ protected corsConfig: RouterCorsConfig = {} - /** - * Buffer - * - * @protected - * @type {RouterBuffer} - */ - protected buffer: RouterBuffer = {} - /** * CORS enabled * @@ -390,7 +382,7 @@ export class Router { }) || this.routes.find(r => r.url === '*' && [request.method, '*'].includes(r.method)) } - /** + /** * Handle requests * * @param {Request} request @@ -400,6 +392,7 @@ export class Router { * @returns {Promise} */ public async handle(request: Request, env: TEnv, ctx?: ExecutionContext, extCtx?: TCtx, extReq?: TReq): Promise { + const buffer: RouterBuffer = {}; const req = { ...(extReq ?? {}), method: request.method, @@ -409,11 +402,11 @@ export class Router { raw: request, params: {}, query: {}, - arrayBuffer: async (): Promise => this.buffer.arrayBuffer ? this.buffer.arrayBuffer : this.buffer.arrayBuffer = await request.arrayBuffer(), - text: async (): Promise => this.buffer.text ? this.buffer.text : this.buffer.text = await request.text(), - json: async (): Promise => this.buffer.json ? this.buffer.json : this.buffer.json = await request.json(), - formData: async (): Promise => this.buffer.formData ? this.buffer.formData : this.buffer.formData = await request.formData(), - blob: async (): Promise => this.buffer.blob ? this.buffer.blob : this.buffer.blob = await request.blob(), + arrayBuffer: async (): Promise => buffer.arrayBuffer ? buffer.arrayBuffer : buffer.arrayBuffer = await request.arrayBuffer(), + text: async (): Promise => buffer.text ? buffer.text : buffer.text = await request.text(), + json: async (): Promise => buffer.json ? buffer.json : buffer.json = await request.json(), + formData: async (): Promise => buffer.formData ? buffer.formData : buffer.formData = await request.formData(), + blob: async (): Promise => buffer.blob ? buffer.blob : buffer.blob = await request.blob(), bearer: () => request.headers.get('Authorization')?.replace(/^(B|b)earer /, '').trim() } as RouterRequest