diff --git a/packages/form-data-parser/src/lib/form-data.ts b/packages/form-data-parser/src/lib/form-data.ts index 5f986f9..c7b1937 100644 --- a/packages/form-data-parser/src/lib/form-data.ts +++ b/packages/form-data-parser/src/lib/form-data.ts @@ -88,41 +88,41 @@ export async function parseFormData( uploadHandler: FileUploadHandler = defaultFileUploadHandler, parserOptions?: MultipartParserOptions, ): Promise { - if (isMultipartRequest(request)) { - let formData = new FormData(); - let promises: Promise[] = []; - - for await (let part of parseMultipartRequest(request, parserOptions)) { - if (!part.name) continue; - - if (part.isFile) { - let value = uploadHandler(new FileUpload(part)); - - if (value != null) { - if (isPromise(value)) { - let fieldName = part.name; - promises.push( - value.then((file) => { - if (file != null) { - formData.append(fieldName, file); - } - }), - ); - } else { - formData.append(part.name, value); - } + if (!isMultipartRequest(request)) { + return request.formData(); + } + + let formData = new FormData(); + let promises: Promise[] = []; + + for await (let part of parseMultipartRequest(request, parserOptions)) { + if (!part.name) continue; + + if (part.isFile) { + let value = uploadHandler(new FileUpload(part)); + + if (value != null) { + if (isPromise(value)) { + let fieldName = part.name; + promises.push( + value.then((file) => { + if (file != null) { + formData.append(fieldName, file); + } + }), + ); + } else { + formData.append(part.name, value); } - } else { - formData.append(part.name, await part.text()); } + } else { + formData.append(part.name, await part.text()); } - - await Promise.all(promises); - - return formData; } - return request.formData(); + await Promise.all(promises); + + return formData; } function isPromise(obj: unknown): obj is Promise { diff --git a/packages/tar-parser/src/lib/tar.test.ts b/packages/tar-parser/src/lib/tar.test.ts index 555aee8..c8e7042 100644 --- a/packages/tar-parser/src/lib/tar.test.ts +++ b/packages/tar-parser/src/lib/tar.test.ts @@ -25,14 +25,6 @@ async function bufferBytes(stream: ReadableStream): Promise { - let digest = await crypto.subtle.digest(algorithm, buffer); - return Array.from(new Uint8Array(digest)) - .map((byte) => byte.toString(16).padStart(2, '0')) - .join('') - .slice(0, 8); -} - async function bufferString( stream: ReadableStream, encoding = 'utf-8', @@ -49,6 +41,14 @@ async function bufferString( return string; } +async function computeHash(buffer: Uint8Array, algorithm = 'SHA-256'): Promise { + let digest = await crypto.subtle.digest(algorithm, buffer); + return Array.from(new Uint8Array(digest)) + .map((byte) => byte.toString(16).padStart(2, '0')) + .join('') + .slice(0, 8); +} + describe('TarParser', () => { it('parses express-4.21.1.tgz', async () => { let entries: Record = {};