From a64218d2199d580b70253c0c78d7541e31a09ee6 Mon Sep 17 00:00:00 2001 From: Joshua Vaughn Date: Wed, 11 Mar 2020 05:53:04 -0400 Subject: [PATCH] [feature] sqs json body parser (#491) Added sqs-json-body-parser middleware. Thanks @thematrimix! --- lerna.json | 2 +- package-lock.json | 2 +- package.json | 2 +- packages/cache/package-lock.json | 8 +- packages/cache/package.json | 4 +- packages/core/package-lock.json | 2 +- packages/core/package.json | 2 +- packages/db-manager/package-lock.json | 8 +- packages/db-manager/package.json | 4 +- .../package-lock.json | 8 +- .../package.json | 4 +- packages/error-logger/package-lock.json | 8 +- packages/error-logger/package.json | 4 +- packages/function-shield/package-lock.json | 8 +- packages/function-shield/package.json | 4 +- .../package-lock.json | 8 +- .../http-content-negotiation/package.json | 4 +- packages/http-cors/package-lock.json | 8 +- packages/http-cors/package.json | 4 +- packages/http-error-handler/package-lock.json | 8 +- packages/http-error-handler/package.json | 4 +- .../http-event-normalizer/package-lock.json | 8 +- packages/http-event-normalizer/package.json | 4 +- .../http-header-normalizer/package-lock.json | 8 +- packages/http-header-normalizer/package.json | 4 +- .../http-json-body-parser/package-lock.json | 8 +- packages/http-json-body-parser/package.json | 4 +- .../package-lock.json | 8 +- .../http-multipart-body-parser/package.json | 4 +- .../http-partial-response/package-lock.json | 8 +- packages/http-partial-response/package.json | 4 +- .../package-lock.json | 8 +- .../http-response-serializer/package.json | 4 +- .../http-security-headers/package-lock.json | 8 +- packages/http-security-headers/package.json | 4 +- .../package-lock.json | 8 +- .../http-urlencode-body-parser/package.json | 4 +- .../package-lock.json | 8 +- .../http-urlencode-path-parser/package.json | 4 +- .../input-output-logger/package-lock.json | 8 +- packages/input-output-logger/package.json | 4 +- packages/s3-key-normalizer/package-lock.json | 8 +- packages/s3-key-normalizer/package.json | 4 +- packages/secrets-manager/package-lock.json | 8 +- packages/secrets-manager/package.json | 4 +- packages/sqs-json-body-parser/.babelrc | 9 + packages/sqs-json-body-parser/README.md | 85 ++++++++ .../sqs-json-body-parser/__tests__/index.js | 189 ++++++++++++++++++ packages/sqs-json-body-parser/index.d.ts | 10 + packages/sqs-json-body-parser/index.js | 24 +++ .../sqs-json-body-parser/package-lock.json | 54 +++++ packages/sqs-json-body-parser/package.json | 50 +++++ packages/sqs-json-body-parser/tsconfig.json | 11 + .../package-lock.json | 8 +- .../sqs-partial-batch-failure/package.json | 4 +- packages/ssm/package-lock.json | 8 +- packages/ssm/package.json | 4 +- packages/validator/package-lock.json | 8 +- packages/validator/package.json | 4 +- packages/warmup/package-lock.json | 8 +- packages/warmup/package.json | 4 +- 61 files changed, 581 insertions(+), 149 deletions(-) create mode 100644 packages/sqs-json-body-parser/.babelrc create mode 100644 packages/sqs-json-body-parser/README.md create mode 100644 packages/sqs-json-body-parser/__tests__/index.js create mode 100644 packages/sqs-json-body-parser/index.d.ts create mode 100644 packages/sqs-json-body-parser/index.js create mode 100644 packages/sqs-json-body-parser/package-lock.json create mode 100644 packages/sqs-json-body-parser/package.json create mode 100644 packages/sqs-json-body-parser/tsconfig.json diff --git a/lerna.json b/lerna.json index 3a77a83f3..d9182ae27 100644 --- a/lerna.json +++ b/lerna.json @@ -3,5 +3,5 @@ "packages": [ "packages/*" ], - "version": "1.0.0-beta.7" + "version": "1.0.0-beta.8" } diff --git a/package-lock.json b/package-lock.json index 4ab2ab72c..f830098e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "middy-monorepo", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 336df521e..59c46a4bc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "middy-monorepo", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "🛵 The stylish Node.js middleware engine for AWS Lambda", "engines": { "node": ">=10" diff --git a/packages/cache/package-lock.json b/packages/cache/package-lock.json index 674767a9c..9b028fadd 100644 --- a/packages/cache/package-lock.json +++ b/packages/cache/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/cache", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/cache/package.json b/packages/cache/package.json index 502572f30..9ceb2eac8 100644 --- a/packages/cache/package.json +++ b/packages/cache/package.json @@ -1,6 +1,6 @@ { "name": "@middy/cache", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Cache middleware for the middy framework", "engines": { "node": ">=10" @@ -41,7 +41,7 @@ "@middy/core": ">=1.0.0-alpha" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/core/package-lock.json b/packages/core/package-lock.json index 312513d4a..55dcb97a1 100644 --- a/packages/core/package-lock.json +++ b/packages/core/package-lock.json @@ -1,6 +1,6 @@ { "name": "@middy/core", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/packages/core/package.json b/packages/core/package.json index 202f999f7..093cee4e2 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@middy/core", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "🛵 The stylish Node.js middleware engine for AWS Lambda (core package)", "engines": { "node": ">=10" diff --git a/packages/db-manager/package-lock.json b/packages/db-manager/package-lock.json index ca67eb5d6..065bef1af 100644 --- a/packages/db-manager/package-lock.json +++ b/packages/db-manager/package-lock.json @@ -1,6 +1,6 @@ { "name": "@middy/db-manager", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -14,9 +14,9 @@ } }, "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/db-manager/package.json b/packages/db-manager/package.json index 7eb610a0b..c3c6161e9 100644 --- a/packages/db-manager/package.json +++ b/packages/db-manager/package.json @@ -1,6 +1,6 @@ { "name": "@middy/db-manager", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Simple database manager for the middy framework", "engines": { "node": ">=10" @@ -40,7 +40,7 @@ "knex": "^0.17.3" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7" + "@middy/core": "^1.0.0-beta.8" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" } diff --git a/packages/do-not-wait-for-empty-event-loop/package-lock.json b/packages/do-not-wait-for-empty-event-loop/package-lock.json index d24004f04..41c526bd2 100644 --- a/packages/do-not-wait-for-empty-event-loop/package-lock.json +++ b/packages/do-not-wait-for-empty-event-loop/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/do-not-wait-for-empty-event-loop", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/do-not-wait-for-empty-event-loop/package.json b/packages/do-not-wait-for-empty-event-loop/package.json index 106908e6a..cce34afff 100644 --- a/packages/do-not-wait-for-empty-event-loop/package.json +++ b/packages/do-not-wait-for-empty-event-loop/package.json @@ -1,6 +1,6 @@ { "name": "@middy/do-not-wait-for-empty-event-loop", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Middleware for the middy framework that allows to easily disable the wait for empty event loop in a Lambda function", "engines": { "node": ">=10" @@ -41,7 +41,7 @@ "@middy/core": ">=1.0.0-alpha" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/error-logger/package-lock.json b/packages/error-logger/package-lock.json index 0eabff2bb..4cfb495bf 100644 --- a/packages/error-logger/package-lock.json +++ b/packages/error-logger/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/error-logger", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/error-logger/package.json b/packages/error-logger/package.json index ad0e0df2a..7f81779b2 100644 --- a/packages/error-logger/package.json +++ b/packages/error-logger/package.json @@ -1,6 +1,6 @@ { "name": "@middy/error-logger", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Input and output logger middleware for the middy framework", "engines": { "node": ">=10" @@ -47,7 +47,7 @@ "@types/node": "^10.0.8" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/function-shield/package-lock.json b/packages/function-shield/package-lock.json index 998f143dc..c8c870522 100644 --- a/packages/function-shield/package-lock.json +++ b/packages/function-shield/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/function-shield", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/function-shield/package.json b/packages/function-shield/package.json index 66eb530ae..55561b19c 100644 --- a/packages/function-shield/package.json +++ b/packages/function-shield/package.json @@ -1,6 +1,6 @@ { "name": "@middy/function-shield", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Hardens AWS Lambda execution environment", "engines": { "node": ">=10" @@ -45,7 +45,7 @@ "@puresec/function-shield": "^2.0.16" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/http-content-negotiation/package-lock.json b/packages/http-content-negotiation/package-lock.json index bed812933..d70cccd93 100644 --- a/packages/http-content-negotiation/package-lock.json +++ b/packages/http-content-negotiation/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/http-content-negotiation", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/http-content-negotiation/package.json b/packages/http-content-negotiation/package.json index 20ba8b8e4..d0a1e89fa 100644 --- a/packages/http-content-negotiation/package.json +++ b/packages/http-content-negotiation/package.json @@ -1,6 +1,6 @@ { "name": "@middy/http-content-negotiation", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Http content negotiation middleware for the middy framework", "engines": { "node": ">=10" @@ -47,7 +47,7 @@ "@middy/core": ">=1.0.0-alpha" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/http-cors/package-lock.json b/packages/http-cors/package-lock.json index ddbe5bbb1..15e97ad2e 100644 --- a/packages/http-cors/package-lock.json +++ b/packages/http-cors/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/http-cors", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/http-cors/package.json b/packages/http-cors/package.json index aaea2be55..b8ea24476 100644 --- a/packages/http-cors/package.json +++ b/packages/http-cors/package.json @@ -1,6 +1,6 @@ { "name": "@middy/http-cors", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "CORS (Cross-Origin Resource Sharing) middleware for the middy framework", "engines": { "node": ">=10" @@ -42,7 +42,7 @@ "@middy/core": ">=1.0.0-alpha" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/http-error-handler/package-lock.json b/packages/http-error-handler/package-lock.json index a5226b97b..41b352195 100644 --- a/packages/http-error-handler/package-lock.json +++ b/packages/http-error-handler/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/http-error-handler", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/http-error-handler/package.json b/packages/http-error-handler/package.json index 3f7ce2e30..c849747ae 100644 --- a/packages/http-error-handler/package.json +++ b/packages/http-error-handler/package.json @@ -1,6 +1,6 @@ { "name": "@middy/http-error-handler", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Http error handler middleware for the middy framework", "engines": { "node": ">=10" @@ -47,7 +47,7 @@ "http-errors": "^1.6.3" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/http-event-normalizer/package-lock.json b/packages/http-event-normalizer/package-lock.json index 84d783c1d..682a808aa 100644 --- a/packages/http-event-normalizer/package-lock.json +++ b/packages/http-event-normalizer/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/http-event-normalizer", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/http-event-normalizer/package.json b/packages/http-event-normalizer/package.json index e891faab1..7227f5c4c 100644 --- a/packages/http-event-normalizer/package.json +++ b/packages/http-event-normalizer/package.json @@ -1,6 +1,6 @@ { "name": "@middy/http-event-normalizer", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Http event normalizer middleware for the middy framework", "engines": { "node": ">=10" @@ -43,7 +43,7 @@ "@middy/core": ">=1.0.0-alpha" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/http-header-normalizer/package-lock.json b/packages/http-header-normalizer/package-lock.json index a5f64c986..665b4d1bb 100644 --- a/packages/http-header-normalizer/package-lock.json +++ b/packages/http-header-normalizer/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/http-header-normalizer", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/http-header-normalizer/package.json b/packages/http-header-normalizer/package.json index f80065232..2f2287ad9 100644 --- a/packages/http-header-normalizer/package.json +++ b/packages/http-header-normalizer/package.json @@ -1,6 +1,6 @@ { "name": "@middy/http-header-normalizer", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Http header normalizer middleware for the middy framework", "engines": { "node": ">=10" @@ -45,7 +45,7 @@ "@middy/core": ">=1.0.0-alpha" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/http-json-body-parser/package-lock.json b/packages/http-json-body-parser/package-lock.json index cab033cec..7ea390f56 100644 --- a/packages/http-json-body-parser/package-lock.json +++ b/packages/http-json-body-parser/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/http-json-body-parser", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/http-json-body-parser/package.json b/packages/http-json-body-parser/package.json index d04f4ffe8..b8895bac0 100644 --- a/packages/http-json-body-parser/package.json +++ b/packages/http-json-body-parser/package.json @@ -1,6 +1,6 @@ { "name": "@middy/http-json-body-parser", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Http JSON body parser middleware for the middy framework", "engines": { "node": ">=10" @@ -50,7 +50,7 @@ "http-errors": "^1.6.3" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/http-multipart-body-parser/package-lock.json b/packages/http-multipart-body-parser/package-lock.json index 2fd4df320..2f0fc765d 100644 --- a/packages/http-multipart-body-parser/package-lock.json +++ b/packages/http-multipart-body-parser/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/http-multipart-body-parser", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/http-multipart-body-parser/package.json b/packages/http-multipart-body-parser/package.json index bbb791be3..bb2dbd235 100644 --- a/packages/http-multipart-body-parser/package.json +++ b/packages/http-multipart-body-parser/package.json @@ -1,6 +1,6 @@ { "name": "@middy/http-multipart-body-parser", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Http event normalizer middleware for the middy framework", "engines": { "node": ">=10" @@ -48,7 +48,7 @@ "http-errors": "^1.7.3" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/http-partial-response/package-lock.json b/packages/http-partial-response/package-lock.json index cb30905e2..35fbdde3c 100644 --- a/packages/http-partial-response/package-lock.json +++ b/packages/http-partial-response/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/http-partial-response", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/http-partial-response/package.json b/packages/http-partial-response/package.json index 609cbabf7..16c7fb2b2 100644 --- a/packages/http-partial-response/package.json +++ b/packages/http-partial-response/package.json @@ -1,6 +1,6 @@ { "name": "@middy/http-partial-response", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Http partial response middleware for the middy framework", "engines": { "node": ">=10" @@ -47,7 +47,7 @@ "json-mask": "^0.3.8" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/http-response-serializer/package-lock.json b/packages/http-response-serializer/package-lock.json index e1dfb4c3f..efb85bfc3 100644 --- a/packages/http-response-serializer/package-lock.json +++ b/packages/http-response-serializer/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/http-response-serializer", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/http-response-serializer/package.json b/packages/http-response-serializer/package.json index d11088b32..941841e91 100644 --- a/packages/http-response-serializer/package.json +++ b/packages/http-response-serializer/package.json @@ -1,6 +1,6 @@ { "name": "@middy/http-response-serializer", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "The Http Serializer middleware lets you define serialization mechanisms based on the current content negotiation.", "engines": { "node": ">=10" @@ -50,7 +50,7 @@ "@middy/core": ">=1.0.0-alpha" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/http-security-headers/package-lock.json b/packages/http-security-headers/package-lock.json index 2ce69b280..a82c9f088 100644 --- a/packages/http-security-headers/package-lock.json +++ b/packages/http-security-headers/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/http-security-headers", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/http-security-headers/package.json b/packages/http-security-headers/package.json index 58de9ae2c..08d6d107e 100644 --- a/packages/http-security-headers/package.json +++ b/packages/http-security-headers/package.json @@ -1,6 +1,6 @@ { "name": "@middy/http-security-headers", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Applies best practice security headers to responses. It's a simplified port of HelmetJS", "engines": { "node": ">=10" @@ -46,7 +46,7 @@ "@middy/core": ">=1.0.0-alpha" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/http-urlencode-body-parser/package-lock.json b/packages/http-urlencode-body-parser/package-lock.json index 71aa48032..320c90c40 100644 --- a/packages/http-urlencode-body-parser/package-lock.json +++ b/packages/http-urlencode-body-parser/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/http-urlencode-body-parser", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/http-urlencode-body-parser/package.json b/packages/http-urlencode-body-parser/package.json index 8146a3ccb..0f39219b8 100644 --- a/packages/http-urlencode-body-parser/package.json +++ b/packages/http-urlencode-body-parser/package.json @@ -1,6 +1,6 @@ { "name": "@middy/http-urlencode-body-parser", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Urlencode body parser middleware for the middy framework", "engines": { "node": ">=10" @@ -50,7 +50,7 @@ "querystring": "^0.2.0" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/http-urlencode-path-parser/package-lock.json b/packages/http-urlencode-path-parser/package-lock.json index 779ed81af..25b8d7f74 100644 --- a/packages/http-urlencode-path-parser/package-lock.json +++ b/packages/http-urlencode-path-parser/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/http-urlencode-path-parser", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/http-urlencode-path-parser/package.json b/packages/http-urlencode-path-parser/package.json index d5ad6d3b9..5f7dadb6b 100644 --- a/packages/http-urlencode-path-parser/package.json +++ b/packages/http-urlencode-path-parser/package.json @@ -1,6 +1,6 @@ { "name": "@middy/http-urlencode-path-parser", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Urlencode path parser middleware for the middy framework", "engines": { "node": ">=10" @@ -47,7 +47,7 @@ "@types/http-errors": "^1.6.1" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7" + "@middy/core": "^1.0.0-beta.8" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" } diff --git a/packages/input-output-logger/package-lock.json b/packages/input-output-logger/package-lock.json index 61912f8a3..d2a5574e8 100644 --- a/packages/input-output-logger/package-lock.json +++ b/packages/input-output-logger/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/input-output-logger", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/input-output-logger/package.json b/packages/input-output-logger/package.json index 0cdf411b6..4d4a0d3da 100644 --- a/packages/input-output-logger/package.json +++ b/packages/input-output-logger/package.json @@ -1,6 +1,6 @@ { "name": "@middy/input-output-logger", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Input and output logger middleware for the middy framework", "engines": { "node": ">=10" @@ -47,7 +47,7 @@ "@types/node": "^10.0.8" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/s3-key-normalizer/package-lock.json b/packages/s3-key-normalizer/package-lock.json index faf6a6a80..1389fac78 100644 --- a/packages/s3-key-normalizer/package-lock.json +++ b/packages/s3-key-normalizer/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/s3-key-normalizer", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/s3-key-normalizer/package.json b/packages/s3-key-normalizer/package.json index c61865585..98702221b 100644 --- a/packages/s3-key-normalizer/package.json +++ b/packages/s3-key-normalizer/package.json @@ -1,6 +1,6 @@ { "name": "@middy/s3-key-normalizer", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "S3 key normalizer middleware for the middy framework", "engines": { "node": ">=10" @@ -43,7 +43,7 @@ "@middy/core": ">=1.0.0-alpha" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/secrets-manager/package-lock.json b/packages/secrets-manager/package-lock.json index 5707cd5c2..57c755897 100644 --- a/packages/secrets-manager/package-lock.json +++ b/packages/secrets-manager/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/secrets-manager", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/secrets-manager/package.json b/packages/secrets-manager/package.json index dd0fffac6..0d95ed92e 100644 --- a/packages/secrets-manager/package.json +++ b/packages/secrets-manager/package.json @@ -1,6 +1,6 @@ { "name": "@middy/secrets-manager", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Secrets Manager middleware for the middy framework", "engines": { "node": ">=10" @@ -45,7 +45,7 @@ "@types/node": "^10.0.8" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/sqs-json-body-parser/.babelrc b/packages/sqs-json-body-parser/.babelrc new file mode 100644 index 000000000..2f7f20c48 --- /dev/null +++ b/packages/sqs-json-body-parser/.babelrc @@ -0,0 +1,9 @@ +{ + "presets": [ + ["env", { + "targets": { + "node": "6.10" + } + }] + ] +} diff --git a/packages/sqs-json-body-parser/README.md b/packages/sqs-json-body-parser/README.md new file mode 100644 index 000000000..df9411c69 --- /dev/null +++ b/packages/sqs-json-body-parser/README.md @@ -0,0 +1,85 @@ +# Middy sqs json body parsing middleware + +
+ Middy logo +
+ +
+

SQS batch json body parsing middleware for the middy framework, the stylish Node.js middleware engine for AWS Lambda

+
+ +
+

+ + npm version + + + Known Vulnerabilities + + + Standard Code Style + + + Greenkeeper badge + + + Chat on Gitter + +

+
+ +Middleware for iterating through a SQS batch of records and parsing the string body to a JSON body. + +## Install + +To install this middleware you can use NPM: + +```bash +npm install --save @middy/sqs-json-body-parser +``` + +## Options + + - `reviver` (function) (optional): A function to be passed as the reviver for [JSON.parse(text[, reviver])](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON). If safeParse is provided then reviver will be passed to it and it is up the provided safeParse function to use it or ignore it. + - `safeParse` (function) (optional): A provided function to be used inplace of the default safeParse function for custom parsing logic on each record body in the batch. As an example the following represents the default safeParse function: + ```javascript +const safeParse = (body, reviver) => { + try { + return JSON.parse(body, reviver) + } catch (err) { + return body + } +} + ``` + +## Sample usage + +```javascript +const middy = require('@middy/core') +const sqsJsonBodyParser = require('@middy/sqs-json-body-parser') + +const yourHandler = (event, context, cb) => { + const { Records } = event + return Promise.all(Records.map(async (record, index) => { /* your message processing logic */ })) +} + +const handler = middy(yourHandler).use(sqsJsonBodyParser()) +``` + +## Middy documentation and examples + +For more documentation and examples, refers to the main [Middy monorepo on GitHub](https://github.com/middyjs/middy) or [Middy official website](https://middy.js.org). + + +## Contributing + +Everyone is very welcome to contribute to this repository. Feel free to [raise issues](https://github.com/middyjs/middy/issues) or to [submit Pull Requests](https://github.com/middyjs/middy/pulls). + + +## License + +Licensed under [MIT License](LICENSE). Copyright (c) 2017-2018 Luciano Mammino and the [Middy team](https://github.com/middyjs/middy/graphs/contributors). + + + FOSSA Status + diff --git a/packages/sqs-json-body-parser/__tests__/index.js b/packages/sqs-json-body-parser/__tests__/index.js new file mode 100644 index 000000000..24be0b440 --- /dev/null +++ b/packages/sqs-json-body-parser/__tests__/index.js @@ -0,0 +1,189 @@ +const createEvent = require('@serverless/event-mocks').default +const middy = require('../../core') +const sqsJsonBodyParser = require('../') + +describe('middleware/sqsJsonBodyParser >', () => { + let opts + let bodyParser + let next + let event + + beforeEach(() => { + opts = undefined + bodyParser = sqsJsonBodyParser(opts) + next = jest.fn() + event = createEvent('aws:sqs') + }) + + describe('as function >', () => { + let handler + + beforeEach(() => { + jest.spyOn(JSON, 'parse') + + handler = { event } + }) + + afterEach(() => { + JSON.parse.mockRestore() + }) + + test('handles empty event object', () => { + handler = {} + bodyParser.before(handler, next) + + expect(JSON.parse).not.toHaveBeenCalled() + expect(next).toHaveBeenCalledTimes(1) + }) + + test('handles empty Records array', function () { + handler = { event: {} } + bodyParser.before(handler, next) + + expect(JSON.parse).not.toHaveBeenCalled() + expect(next).toHaveBeenCalledTimes(1) + }) + + test('parses each body payload', function () { + const bodys = [{ one: 1 }, { two: 2 }, { three: 3 }] + event.Records.push({ ...event.Records[0] }) + event.Records.push({ ...event.Records[0] }) + + bodys.forEach((body, idx) => { + event.Records[idx].body = JSON.stringify(body) + }) + + bodyParser.before(handler, next) + + expect(JSON.parse).toHaveBeenCalledTimes(3) + event.Records.forEach((rcd, idx) => { + expect(JSON.parse).toHaveBeenNthCalledWith((idx + 1), JSON.stringify(bodys[idx]), undefined) + expect(rcd.body).toStrictEqual(bodys[idx]) + }) + expect(next).toHaveBeenCalledTimes(1) + }) + + test('returns original body when parse error', function () { + const body = 'bad json' + handler.event.Records[0].body = body + bodyParser.before(handler, next) + + expect(JSON.parse).toHaveBeenCalledTimes(1) + expect(JSON.parse).toHaveBeenCalledWith(body, undefined) + expect(handler.event.Records[0].body).toBe(body) + expect(next).toHaveBeenCalledTimes(1) + }) + + test('calls reviver when provided', function () { + const body = '{}' + handler.event.Records[0].body = body + const reviver = jest.fn() + opts = { reviver } + bodyParser = sqsJsonBodyParser(opts) + + bodyParser.before(handler, next) + + expect(JSON.parse).toHaveBeenCalledTimes(1) + expect(JSON.parse).toHaveBeenCalledWith(body, reviver) + expect(reviver).toHaveBeenCalled() + expect(next).toHaveBeenCalledTimes(1) + }) + + test('calls safeParse when provided', function () { + const { body } = handler.event.Records[0] + const safeParseRet = 'jibberish' + const reviver = jest.fn() + const safeParse = jest.fn().mockReturnValue(safeParseRet) + opts = { reviver, safeParse } + bodyParser = sqsJsonBodyParser(opts) + + bodyParser.before(handler, next) + + expect(safeParse).toHaveBeenCalledTimes(1) + expect(safeParse).toHaveBeenCalledWith(body, reviver) + expect(handler.event.Records[0].body).toBe(safeParseRet) + expect(next).toHaveBeenCalledTimes(1) + }) + }) + + describe('as middleware > ', function () { + let originalHandler + let handler + + beforeEach(function () { + originalHandler = jest.fn() + handler = middy(originalHandler) + + handler.use(bodyParser) + }) + + test('parses the body', function () { + const body = '{}' + event.Records[0].body = body + + handler(event, {}) + + expect(event.Records[0].body).toStrictEqual({}) + }) + + test('parses all bodys', function () { + const bodys = [{ one: 1 }, { two: 2 }] + event.Records.push({ ...event.Records[0] }) + + bodys.forEach((body, idx) => { + event.Records[idx].body = JSON.stringify(body) + }) + + handler(event, {}) + + event.Records.forEach((rcd, idx) => { + expect(rcd.body).toStrictEqual(bodys[idx]) + }) + }) + + test('returns original body when parse error', function () { + const body = 'bad json' + event.Records[0].body = body + + handler(event, {}) + + expect(event.Records[0].body).toBe(body) + }) + + test('calls reviver when provided', function () { + const body = '{}' + event.Records[0].body = body + const revivereRet = 'jibberish' + const reviver = jest.fn().mockReturnValue(revivereRet) + opts = { reviver } + bodyParser = sqsJsonBodyParser(opts) + + handler = middy(originalHandler) + + handler.use(bodyParser) + + handler(event, {}) + + expect(reviver).toHaveBeenCalled() + expect(event.Records[0].body).toBe(revivereRet) + }) + + test('calls safeParse when provided', function () { + const { body } = event.Records[0] + const safeParseRet = 'jibberish' + const safeParse = jest.fn().mockReturnValue(safeParseRet) + opts = { safeParse } + bodyParser = sqsJsonBodyParser(opts) + + handler = middy(originalHandler) + + handler.use(bodyParser) + + handler(event, {}) + + expect(safeParse).toHaveBeenCalledTimes(1) + expect(safeParse).toHaveBeenCalledWith(body, undefined) + expect(event.Records[0].body).toBe(safeParseRet) + }) + }) +}) diff --git a/packages/sqs-json-body-parser/index.d.ts b/packages/sqs-json-body-parser/index.d.ts new file mode 100644 index 000000000..b5a092340 --- /dev/null +++ b/packages/sqs-json-body-parser/index.d.ts @@ -0,0 +1,10 @@ +import middy from '@middy/core' + +interface ISQSJsonBodyParserOptions { + reviver?: (key: string, value: any) => any, + safeParse?: (body: string) => any +} + +declare const sqsJsonBodyParser : middy.Middleware + +export default sqsJsonBodyParser \ No newline at end of file diff --git a/packages/sqs-json-body-parser/index.js b/packages/sqs-json-body-parser/index.js new file mode 100644 index 000000000..f9daf11fb --- /dev/null +++ b/packages/sqs-json-body-parser/index.js @@ -0,0 +1,24 @@ +const defaultSafeParse = (body, reviver) => { + try { + return JSON.parse(body, reviver) + } catch (err) { + return body + } +} + +const sqsJsonBodyParserBefore = ({ reviver, safeParse }) => (handler, next) => { + const { event: { Records = [] } = { Records: [] } } = handler + + Records.forEach(record => { + record.body = safeParse(record.body, reviver) + }) + + next() +} + +module.exports = ({ reviver, safeParse = defaultSafeParse } = {}) => ({ + before: sqsJsonBodyParserBefore({ + reviver, + safeParse + }) +}) diff --git a/packages/sqs-json-body-parser/package-lock.json b/packages/sqs-json-body-parser/package-lock.json new file mode 100644 index 000000000..08708ce3b --- /dev/null +++ b/packages/sqs-json-body-parser/package-lock.json @@ -0,0 +1,54 @@ +{ + "name": "@middy/sqs-partial-batch-failure", + "version": "1.0.0-beta.6", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@middy/core": { + "version": "1.0.0-beta.6", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", + "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "@serverless/event-mocks": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@serverless/event-mocks/-/event-mocks-1.1.1.tgz", + "integrity": "sha512-YAV5V/y+XIOfd+HEVeXfPWZb8C6QLruFk9tBivoX2roQLWVq145s4uxf8D0QioCueuRzkukHUS4JIj+KVoS34A==", + "dev": true, + "requires": { + "@types/lodash": "^4.14.123", + "lodash": "^4.17.11" + } + }, + "@types/lodash": { + "version": "4.14.149", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", + "integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==", + "dev": true + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/packages/sqs-json-body-parser/package.json b/packages/sqs-json-body-parser/package.json new file mode 100644 index 000000000..04ec42075 --- /dev/null +++ b/packages/sqs-json-body-parser/package.json @@ -0,0 +1,50 @@ +{ + "name": "@middy/sqs-json-body-parser", + "version": "1.0.0-beta.6", + "description": "SQS batch json body parser middleware for the middy framework", + "engines": { + "node": ">=10" + }, + "engineStrict": true, + "publishConfig": { + "access": "public" + }, + "scripts": { + "test": "npm run test:typings && npm run test:unit", + "test:unit": "jest", + "test:typings": "typings-tester --config tsconfig.json index.d.ts" + }, + "license": "MIT", + "keywords": [ + "Lambda", + "Middleware", + "Serverless", + "Framework", + "AWS", + "AWS Lambda", + "Middy", + "SQS", + "Batch", + "Error" + ], + "author": { + "name": "Middy contributors", + "url": "https://github.com/middyjs/middy/graphs/contributors" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/middyjs/middy.git" + }, + "bugs": { + "url": "https://github.com/middyjs/middy/issues" + }, + "homepage": "https://github.com/middyjs/middy#readme", + "peerDependencies": { + "@middy/core": ">=1.0.0-alpha" + }, + "devDependencies": { + "@middy/core": "^1.0.0-beta.6", + "@serverless/event-mocks": "^1.1.1" + }, + "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" +} diff --git a/packages/sqs-json-body-parser/tsconfig.json b/packages/sqs-json-body-parser/tsconfig.json new file mode 100644 index 000000000..973bcb3a4 --- /dev/null +++ b/packages/sqs-json-body-parser/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": ["es2015"], + "target": "es2015", + "esModuleInterop": true + }, + "files": [ + "index.d.ts" + ] +} diff --git a/packages/sqs-partial-batch-failure/package-lock.json b/packages/sqs-partial-batch-failure/package-lock.json index b3479986e..7ae95c90e 100644 --- a/packages/sqs-partial-batch-failure/package-lock.json +++ b/packages/sqs-partial-batch-failure/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/sqs-partial-batch-failure", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/sqs-partial-batch-failure/package.json b/packages/sqs-partial-batch-failure/package.json index 463bd3542..f6428dec1 100644 --- a/packages/sqs-partial-batch-failure/package.json +++ b/packages/sqs-partial-batch-failure/package.json @@ -1,6 +1,6 @@ { "name": "@middy/sqs-partial-batch-failure", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "SQS partial batch failure middleware for the middy framework", "engines": { "node": ">=10" @@ -44,7 +44,7 @@ "aws-sdk": ">=2.221.1" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "@serverless/event-mocks": "^1.1.1", "promise.allsettled": "^1.0.2" }, diff --git a/packages/ssm/package-lock.json b/packages/ssm/package-lock.json index c4f4bee64..4ea5ee721 100644 --- a/packages/ssm/package-lock.json +++ b/packages/ssm/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/ssm", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/ssm/package.json b/packages/ssm/package.json index 377dceabf..1cb7b439e 100644 --- a/packages/ssm/package.json +++ b/packages/ssm/package.json @@ -1,6 +1,6 @@ { "name": "@middy/ssm", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "SSM (EC2 Systems Manager) parameters middleware for the middy framework", "engines": { "node": ">=10" @@ -47,7 +47,7 @@ "@types/node": "^10.0.8" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/validator/package-lock.json b/packages/validator/package-lock.json index 60922342a..516c2ad4e 100644 --- a/packages/validator/package-lock.json +++ b/packages/validator/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/validator", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/validator/package.json b/packages/validator/package.json index de7b65daa..1ddb6e933 100644 --- a/packages/validator/package.json +++ b/packages/validator/package.json @@ -1,6 +1,6 @@ { "name": "@middy/validator", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Validator middleware for the middy framework", "engines": { "node": ">=10" @@ -49,7 +49,7 @@ "http-errors": "^1.6.3" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431" diff --git a/packages/warmup/package-lock.json b/packages/warmup/package-lock.json index 2d9a74efd..51546c7cb 100644 --- a/packages/warmup/package-lock.json +++ b/packages/warmup/package-lock.json @@ -1,13 +1,13 @@ { "name": "@middy/warmup", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "lockfileVersion": 1, "requires": true, "dependencies": { "@middy/core": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.6.tgz", - "integrity": "sha512-2DfDcvKtt31NPg1SdE5wZm5RAtx88jbvVXvD1zgn+pTHvNq3s1ymhs9b3NgbqeOn56kcMGOqClMox4fXmcjDFw==", + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/@middy/core/-/core-1.0.0-beta.7.tgz", + "integrity": "sha512-LeJ9QJgBPX4eRGAC01YU6GJXN+Flv7CqKciF5DcCcBv8DJCsPCrCZpyTEqA349APEZe7uKtWYsqJYAPyNvDy6w==", "dev": true, "requires": { "once": "^1.4.0" diff --git a/packages/warmup/package.json b/packages/warmup/package.json index 9ec1d3787..0fdd89740 100644 --- a/packages/warmup/package.json +++ b/packages/warmup/package.json @@ -1,6 +1,6 @@ { "name": "@middy/warmup", - "version": "1.0.0-beta.7", + "version": "1.0.0-beta.8", "description": "Warmup (cold start mitigation) middleware for the middy framework", "engines": { "node": ">=10" @@ -43,7 +43,7 @@ "@middy/core": ">=1.0.0-alpha" }, "devDependencies": { - "@middy/core": "^1.0.0-beta.7", + "@middy/core": "^1.0.0-beta.8", "es6-promisify": "^6.0.2" }, "gitHead": "7a6c0fbb8ab71d6a2171e678697de9f237568431"