From 0c7f04d71b304cb41383200ec4d863ec6d2240f3 Mon Sep 17 00:00:00 2001 From: Toby Date: Wed, 15 Mar 2023 22:03:32 +0100 Subject: [PATCH] make body reusable --- src/index.ts | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/index.ts b/src/index.ts index 84d7cb7..e547891 100644 --- a/src/index.ts +++ b/src/index.ts @@ -102,6 +102,14 @@ export type RouterCorsConfig = { optionsSuccessStatus?: number } +export type RouterBuffer = { + arrayBuffer?: ArrayBuffer + text?: string + json?: any + formData?: FormData + blob?: Blob +} + /** * Router * @@ -142,6 +150,14 @@ export class Router { */ protected corsConfig: RouterCorsConfig = {} + /** + * Buffer + * + * @protected + * @type {RouterBuffer} + */ + protected buffer: RouterBuffer = {} + /** * CORS enabled * @@ -392,11 +408,11 @@ export class Router { raw: request, params: {}, query: {}, - arrayBuffer: (): Promise => request.arrayBuffer(), - text: (): Promise => request.text(), - json: (): Promise => request.json(), - formData: (): Promise => request.formData(), - blob: (): Promise => request.blob(), + 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(), bearer: () => request.headers.get('Authorization')?.replace(/^(B|b)earer /, '').trim() ?? '', } as RouterRequest