From a449c5f1887fc882d7762226f9ef916087e1d1d6 Mon Sep 17 00:00:00 2001 From: will Farrell Date: Sat, 2 Dec 2023 19:00:14 -0700 Subject: [PATCH] feat: upgrade busboy Closes #1145 --- .../__tests__/index.js | 8 +- packages/http-multipart-body-parser/index.js | 4 +- .../package-lock.json | 222 +----------------- .../http-multipart-body-parser/package.json | 2 +- 4 files changed, 13 insertions(+), 223 deletions(-) diff --git a/packages/http-multipart-body-parser/__tests__/index.js b/packages/http-multipart-body-parser/__tests__/index.js index 05f563807..732d6e29f 100644 --- a/packages/http-multipart-body-parser/__tests__/index.js +++ b/packages/http-multipart-body-parser/__tests__/index.js @@ -146,7 +146,7 @@ test('It should handle more invalid form data as an UnprocessableEntity', async await handler(event, defaultContext) } catch (e) { t.is(e.message, 'Invalid or malformed multipart/form-data was provided') - t.is(e.cause.data.message, 'Unexpected end of form') + t.is(e.cause.data.message, 'Unexpected end of multipart data') } }) @@ -301,9 +301,9 @@ test('It should parse an array from a multipart/form-data request (binary)', asy t.deepEqual(response, { file: { content: Buffer.from(''), - encoding: 'binary', - filename: 'file.bat', - mimetype: 'application/octet-stream', + encoding: undefined, // 'binary', + filename: undefined, // 'file.bat', + mimetype: undefined, // 'application/octet-stream', truncated: false } }) diff --git a/packages/http-multipart-body-parser/index.js b/packages/http-multipart-body-parser/index.js index b7771b532..012cd0882 100644 --- a/packages/http-multipart-body-parser/index.js +++ b/packages/http-multipart-body-parser/index.js @@ -1,4 +1,4 @@ -import BusBoy from 'busboy' +import BusBoy from '@fastify/busboy' import { createError } from '@middy/util' const mimePattern = /^multipart\/form-data(;.*)?$/ @@ -97,7 +97,7 @@ const parseMultipartData = (event, options) => { multipartData[matches[1]].push(value) } }) - .on('close', () => resolve(multipartData)) + .on('finish', () => resolve(multipartData)) .on('error', (e) => reject(e)) busboy.write(event.body, charset) diff --git a/packages/http-multipart-body-parser/package-lock.json b/packages/http-multipart-body-parser/package-lock.json index 3f637338a..d926d510d 100644 --- a/packages/http-multipart-body-parser/package-lock.json +++ b/packages/http-multipart-body-parser/package-lock.json @@ -9,11 +9,9 @@ "version": "5.0.3", "license": "MIT", "dependencies": { - "@middy/util": "5.0.3", - "busboy": "1.6.0" + "@fastify/busboy": "2.1.0" }, "devDependencies": { - "@middy/core": "5.0.3", "@types/aws-lambda": "^8.10.101", "type-fest": "^4.0.0" }, @@ -25,44 +23,12 @@ "url": "https://github.com/sponsors/willfarrell" } }, - "node_modules/@datastream/core": { - "version": "0.0.35", - "resolved": "https://registry.npmjs.org/@datastream/core/-/core-0.0.35.tgz", - "integrity": "sha512-jmKFcDTYqtDy8DHPahaheg3MlLBiQboYX4jYX8oxE1tO5x7cfLl5M6bqR/o46RCEFZ3M9yMVfEEh0hy5raErEw==", - "dev": true, - "dependencies": { - "cloneable-readable": "3.0.0" - }, + "node_modules/@fastify/busboy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", + "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", "engines": { - "node": ">=18" - } - }, - "node_modules/@middy/core": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-5.0.2.tgz", - "integrity": "sha512-rGb0g9L8PJ5u2aRHOHcp67na6O6gAWmQTixooSPNByySQdWYWGxTwRcaWGu5QymeMrC9KcJaPDnlhTQJnKXKjw==", - "dev": true, - "dependencies": { - "@datastream/core": "0.0.35" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/willfarrell" - } - }, - "node_modules/@middy/util": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@middy/util/-/util-5.0.2.tgz", - "integrity": "sha512-vcV5iclgzn+v1QePa2rm4MLN1nRGy0OxnSUYLYTSbxmR5WDGI6l1NBT2NL+kusEsn2PT4NsznG89g5PZ8Ao6Gw==", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/willfarrell" + "node": ">=14" } }, "node_modules/@types/aws-lambda": { @@ -71,182 +37,6 @@ "integrity": "sha512-0Rl7CpTPVws5cp0Ui1gZh4Q+TXC65bXVwTOGoI2RKW45dxWzyZGbjIX0uFjFYdIJ8vnD45y584rIIqvD2vBBfQ==", "dev": true }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/cloneable-readable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-3.0.0.tgz", - "integrity": "sha512-Lkfd9IRx1nfiBr7UHNxJSl/x7DOeUfYmxzCkxYJC2tyc/9vKgV75msgLGurGQsak/NvJDHMWcshzEXRlxfvhqg==", - "dev": true, - "dependencies": { - "readable-stream": "^4.0.0" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/readable-stream": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.4.2.tgz", - "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/type-fest": { "version": "4.8.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.2.tgz", diff --git a/packages/http-multipart-body-parser/package.json b/packages/http-multipart-body-parser/package.json index 9f6d1b5d3..ab0ec6247 100644 --- a/packages/http-multipart-body-parser/package.json +++ b/packages/http-multipart-body-parser/package.json @@ -61,7 +61,7 @@ }, "dependencies": { "@middy/util": "5.0.3", - "busboy": "1.6.0" + "@fastify/busboy": "2.1.0" }, "devDependencies": { "@middy/core": "5.0.3",