From 33043260a9eebf92dc7d8e7b4a08276cc29d8a7a Mon Sep 17 00:00:00 2001 From: Kunthawat Greethong Date: Wed, 1 Jul 2026 11:19:09 +0700 Subject: [PATCH] fix: migrate to @aws-sdk/client-sesv2 for nodemailer v9 compatibility --- package-lock.json | 414 +++++++++++++++++----------------------------- package.json | 2 +- server.js | 6 +- 3 files changed, 152 insertions(+), 270 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5b55e27..60465d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,7 @@ "name": "moreminimore-site", "version": "1.0.0", "dependencies": { - "@aws-sdk/client-ses": "^3.1075.0", - "@rollup/rollup-linux-x64-gnu": "*", + "@aws-sdk/client-sesv2": "^3.1077.0", "astro": "^6.2.2", "cors": "^2.8.6", "express": "^5.2.1", @@ -84,84 +83,20 @@ "node": "18.20.8 || ^20.3.0 || >=22.0.0" } }, - "node_modules/@aws-crypto/crc32": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", - "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "node_modules/@aws-sdk/client-sesv2": { + "version": "3.1077.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sesv2/-/client-sesv2-3.1077.0.tgz", + "integrity": "sha512-wkAXuNW8tybyOnVsaXR5petfNI0SmRrBNEtJhUMyAbZG2nF63/r+ifuJifkdIweLHXeaAeQfEr7lUoYBeMyYSA==", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-crypto/sha256-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/sha256-js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-ses": { - "version": "3.1075.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-ses/-/client-ses-3.1075.0.tgz", - "integrity": "sha512-uD57mGUDW1JkMYPwHLl23n6/CGemAMRQnk0oEI1SoQqF9VQzo4i0hGx/wfJG3dwmKUz3MupFmEpkFh0henu96Q==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/credential-provider-node": "^3.972.58", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/fetch-http-handler": "^5.4.6", - "@smithy/node-http-handler": "^4.7.6", - "@smithy/types": "^4.14.3", + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/credential-provider-node": "^3.972.60", + "@aws-sdk/signature-v4-multi-region": "^3.996.37", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/fetch-http-handler": "^5.6.1", + "@smithy/node-http-handler": "^4.9.1", + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -169,17 +104,17 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.974.23", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.23.tgz", - "integrity": "sha512-MiWR/uWjxjFXGzrE0Ghc5lWxUxzHsUWFhV+OX7M4cR9SrmrnZs6TXavnCWnzzdwJeFri34xQo81rvGNzK3c4BQ==", + "version": "3.974.25", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.25.tgz", + "integrity": "sha512-fJFkx6u6wCqGMV/v6EAxiwa2UzEukbvr1hNPv4MrD3yj4IFz011jZg42/eSTOP/u5kJ0tlILqEjCWtT8GiKZvA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.13", - "@aws-sdk/xml-builder": "^3.972.31", + "@aws-sdk/types": "^3.973.14", + "@aws-sdk/xml-builder": "^3.972.32", "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/core": "^3.24.6", - "@smithy/signature-v4": "^5.4.6", - "@smithy/types": "^4.14.3", + "@smithy/core": "^3.28.0", + "@smithy/signature-v4": "^5.6.0", + "@smithy/types": "^4.15.0", "bowser": "^2.11.0", "tslib": "^2.6.2" }, @@ -188,15 +123,15 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.49", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.49.tgz", - "integrity": "sha512-liB3yQNHCM9k/gu/w36XHMKPluT7HTlnGUhRbBGSISDQkcr/Sy1zsZabiuvQj8WG5yW573u9RehrBvvnIQ9OEQ==", + "version": "3.972.51", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.51.tgz", + "integrity": "sha512-Xo+/zf5k5pZdo53X8aVXN4MJGfU/M1P7yMM/GbNY/x9fyRZGEzjhKqW38GA0FSQQ9TYKs+bfPyz5ja4bi6pjTQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -204,17 +139,17 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.51", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.51.tgz", - "integrity": "sha512-XET0H2oofciJ5lMRWNIvRjAP7Q3wv2XT+JtJJEdhPWUMwe3TvQ9qcxonpu7vXmNngncvFpi4E2It+Tamas/naA==", + "version": "3.972.53", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.53.tgz", + "integrity": "sha512-7E9oFUcf9YWe+ttGiWhe/cCSI+pswwelzgQMoKXgPJi1AIfS27TK6et5ZULqEqHu30zbN+jh1RqlwcXqY/aXyg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/fetch-http-handler": "^5.4.6", - "@smithy/node-http-handler": "^4.7.6", - "@smithy/types": "^4.14.3", + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/fetch-http-handler": "^5.6.1", + "@smithy/node-http-handler": "^4.9.1", + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -222,23 +157,23 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.56", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.56.tgz", - "integrity": "sha512-IAmc61hbgQiHht9U3x0tnRwz0lzdwOwD/i9voRgdJrKamF+JtmrBOsW9GwB7mfFonNWOWL4qARWYrF8veEMe3w==", + "version": "3.972.58", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.58.tgz", + "integrity": "sha512-MPr0hD8pyDGfF3dWXvFOILhcKTB9ptqJOJK9JEuDQzpc2HgKisY16eR7IrKUXxSbz8LZj+LHz/CS8Y5G1ai7yw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/credential-provider-env": "^3.972.49", - "@aws-sdk/credential-provider-http": "^3.972.51", - "@aws-sdk/credential-provider-login": "^3.972.55", - "@aws-sdk/credential-provider-process": "^3.972.49", - "@aws-sdk/credential-provider-sso": "^3.972.55", - "@aws-sdk/credential-provider-web-identity": "^3.972.55", - "@aws-sdk/nested-clients": "^3.997.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/credential-provider-imds": "^4.3.7", - "@smithy/types": "^4.14.3", + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/credential-provider-env": "^3.972.51", + "@aws-sdk/credential-provider-http": "^3.972.53", + "@aws-sdk/credential-provider-login": "^3.972.57", + "@aws-sdk/credential-provider-process": "^3.972.51", + "@aws-sdk/credential-provider-sso": "^3.972.57", + "@aws-sdk/credential-provider-web-identity": "^3.972.57", + "@aws-sdk/nested-clients": "^3.997.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/credential-provider-imds": "^4.4.4", + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -246,16 +181,16 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.55", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.55.tgz", - "integrity": "sha512-hBBkANo3cDn+h2qxxzER4a+J8JCO9o9Z/YYmU7iky6AcaarX5RRdRcHNC6SLdwY0vAXQygn6soUbDqPn3GghaA==", + "version": "3.972.57", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.57.tgz", + "integrity": "sha512-kPWc/SCrl9agKeywxKwPEoQHanWag0LcNQrcZpEQpjNifkxq6tQENhgrrS9al317CF6yytyihlX+FhPHlk0QjA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/nested-clients": "^3.997.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/nested-clients": "^3.997.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -263,21 +198,21 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.58", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.58.tgz", - "integrity": "sha512-OyCLVmSI7pZO8hxwNVX6pXhTVlJqRBTp+ijdEfJSUj0RyjHnF602OfAarOzGq6wkGodeFkYBt8MmJ6A6ycRgWw==", + "version": "3.972.60", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.60.tgz", + "integrity": "sha512-hE2hIBJQjCDRx8TbSqpVQ+/o2mIrJZQZbQ3LlwE2bJf7z47x5GmhcvGwZPqJH7Oq//SzTXEBGSZ4qSpK3yPbhw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.49", - "@aws-sdk/credential-provider-http": "^3.972.51", - "@aws-sdk/credential-provider-ini": "^3.972.56", - "@aws-sdk/credential-provider-process": "^3.972.49", - "@aws-sdk/credential-provider-sso": "^3.972.55", - "@aws-sdk/credential-provider-web-identity": "^3.972.55", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/credential-provider-imds": "^4.3.7", - "@smithy/types": "^4.14.3", + "@aws-sdk/credential-provider-env": "^3.972.51", + "@aws-sdk/credential-provider-http": "^3.972.53", + "@aws-sdk/credential-provider-ini": "^3.972.58", + "@aws-sdk/credential-provider-process": "^3.972.51", + "@aws-sdk/credential-provider-sso": "^3.972.57", + "@aws-sdk/credential-provider-web-identity": "^3.972.57", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/credential-provider-imds": "^4.4.4", + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -285,15 +220,15 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.49", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.49.tgz", - "integrity": "sha512-C8h36lBuC/RnBSsjlO+dn6xZm3KbAl5vpJaVPAfQnMmz2/OISmKOc8XZcqMQgO2ADwBYNRMM6Kf3vz9G/TulMQ==", + "version": "3.972.51", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.51.tgz", + "integrity": "sha512-081dD2RlnmY+G05v6E73KfACvDjPjnttrLjGHE2SSglbID25UcuijbWpL4g+XR5T2Kl4oIJoVBXi64s+2f009Q==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -301,17 +236,17 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.55", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.55.tgz", - "integrity": "sha512-1FkOz74Ea5QGS9jtIoXp55T/IkSS3spv+nLTT07fRY/+T5xmEOqaYBVIaEmX4zTNvbV6g2lrtlaVKWEoNyJt3w==", + "version": "3.972.57", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.57.tgz", + "integrity": "sha512-dC7ZyX3EHKHLOeVUEDzzGvk0L1s6N06YDrau7P0rGXL/j1cO+DzN2w1x9vcEh7zljVCR3019f5mi1Th+GGTURw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/nested-clients": "^3.997.23", - "@aws-sdk/token-providers": "3.1074.0", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/nested-clients": "^3.997.25", + "@aws-sdk/token-providers": "3.1077.0", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -319,16 +254,16 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.55", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.55.tgz", - "integrity": "sha512-g2BoECD1q01kTPByi56+VLVvdWDzMkKIcr77qixpqH0okw2t0U5CoPv+6S8v/D1Y2Wa6QKKtn6XAtDzP+Kfpvg==", + "version": "3.972.57", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.57.tgz", + "integrity": "sha512-HtWM3FV2o7NJFJSUqFLBlxmV9RxQRHpzCvQaP1n1Qo4CxQSvwpJ8ERWHiLqXMFDgDXyELt+EZNFcpG6XQRcJbQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/nested-clients": "^3.997.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/nested-clients": "^3.997.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -336,20 +271,18 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.997.23", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.23.tgz", - "integrity": "sha512-gO93ZPsI2bxeFZD42f1/qjDw6FAZkNZcKRO94LIiT03fzOmcJ9e/tunxjVjA1Rl69ClmVJzz8H3G9CdKef10PA==", + "version": "3.997.25", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.25.tgz", + "integrity": "sha512-VpRQ3wR6l+fwRHV5veJL2ehtyQFrGyH/2CJG9DVtb8H3xyqqnZWSTSrq/CJJ7DvDlDgrPRiW2SkYA8pN6VWCFQ==", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/signature-v4-multi-region": "^3.996.35", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/fetch-http-handler": "^5.4.6", - "@smithy/node-http-handler": "^4.7.6", - "@smithy/types": "^4.14.3", + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/signature-v4-multi-region": "^3.996.37", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/fetch-http-handler": "^5.6.1", + "@smithy/node-http-handler": "^4.9.1", + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -357,14 +290,14 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.35", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.35.tgz", - "integrity": "sha512-6L/VWs+Wch2stHemCGTmUNqKLMzURxQDK5boNG3Jn3kAOp71meDUuS5sbObpEvFxHDq0uWeSLFDNSYsjNt+Dlg==", + "version": "3.996.37", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.37.tgz", + "integrity": "sha512-u8qd064XsHzM0Mk+yH4IPKn/ZC9rdniEKs+neBHNlsPZirw3rcLvmrH4ImoKC4yF7A0I/MbcC3dseARnJLiAhg==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.13", - "@smithy/signature-v4": "^5.4.6", - "@smithy/types": "^4.14.3", + "@aws-sdk/types": "^3.973.14", + "@smithy/signature-v4": "^5.6.0", + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -372,16 +305,16 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1074.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1074.0.tgz", - "integrity": "sha512-pv80IzgGW4RnXWtft692chZOM9i6PhebVsLCcnaM4dBEPZva2fE6FXAHs76G7Rc7s3yGyX/68G0nZMrUy+Vmpg==", + "version": "3.1077.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1077.0.tgz", + "integrity": "sha512-sRUkfZ3fpOco95jZHsQUQiXvuIVLvCmWVclFg6dRFDyfsYs6Pdr/NuZ2+yJxeHN+6WAfDh2aZ8nlZntnvuhZUQ==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.974.23", - "@aws-sdk/nested-clients": "^3.997.23", - "@aws-sdk/types": "^3.973.13", - "@smithy/core": "^3.24.6", - "@smithy/types": "^4.14.3", + "@aws-sdk/core": "^3.974.25", + "@aws-sdk/nested-clients": "^3.997.25", + "@aws-sdk/types": "^3.973.14", + "@smithy/core": "^3.28.0", + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -389,24 +322,12 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.973.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.13.tgz", - "integrity": "sha512-pEHZqRkAlHfnfAU9tK+WpKv/gBNjGJrHMgA3A0iYRGyswBS2t0pfez+lWlwktb3Bqa0ovh7w/QJTFwp3fDxLNg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.965.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.8.tgz", - "integrity": "sha512-uUbMs1cBZPafD0ohUj6EwNf0fPZ534NvBxHox4hjX+0Rxq5paSYUem7+hi833pYrzrcnBATKIYpR02MDXT5M9g==", + "version": "3.973.14", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.14.tgz", + "integrity": "sha512-vH4pEu9YBEwr67yT+GVcmKX0GzfIrIYUn+MF5vXg9OspouVnAekuyVyawFvZHEK7WlcwVDwNrqI3ZBDUAiyu9A==", "license": "Apache-2.0", "dependencies": { + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -414,12 +335,12 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.31", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.31.tgz", - "integrity": "sha512-SzE4Pgyl+hDF+BuyuzxUSpwnuUu9lJuO1YGgteG89/4Qv0+2IQiVQqdbPV32IozLvXWQChPQcdkk/sKvb1QHiQ==", + "version": "3.972.32", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.32.tgz", + "integrity": "sha512-2loKuOMRFDg1nwdni5AtJ9S5juVbRNPNsPC7tWTfkHyycPwACMhxepspUHi8GhvfNlL2cQo3sPMod1uib+KZ0w==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.14.3", + "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, "engines": { @@ -999,12 +920,11 @@ "license": "MIT" }, "node_modules/@smithy/core": { - "version": "3.27.0", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.27.0.tgz", - "integrity": "sha512-TaucK0nuk6rq7eiOZXgDFY6UvnWmCwlIEG3VJoauCorqYJhHjrC6N9t7lG9RgMB8OZtrDScF0Ct3HMgG3H/1Pg==", + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.28.0.tgz", + "integrity": "sha512-N/LoLG8pZ1zv5cIWpdF6vmSjtZtXKK9G0OqT5yYCOZU+CzPq1+nYA95VoKJBGWRScs7YbMugZ7lZx8Fj1vdHoA==", "license": "Apache-2.0", "dependencies": { - "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, @@ -1013,12 +933,12 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.4.3.tgz", - "integrity": "sha512-5o8KlbNqWj43fyIpIzsRV+AMI51l2AHkBYad9IN3YwRgKlXOcPcNpoB7XOAOdPsv8S4DKhjyw/gr5vcR7gcLYw==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.4.4.tgz", + "integrity": "sha512-jT0WrDaM88L5na9FX1xRNywCS3B1n75wPY5Ksasjo0PHUtuI7d8FclksN1BbOSYTiaiKxUDqU23nUymH/V+AaQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.27.0", + "@smithy/core": "^3.28.0", "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, @@ -1027,12 +947,12 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.6.0.tgz", - "integrity": "sha512-l9Myz4R9c89h+LM9N6hyXOWuhiqqsLw6JRvRptTECrwbo7nNUOq+rWVcIQgNdvrRiIlQjoTN0l20bf7sSX4/Dw==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.6.1.tgz", + "integrity": "sha512-fW6l9rWoyk1iyzfuZaERnZLNjB6WIojgGm6Bo9Hpfpy3RUpltjLikNlxTsS/YtxVobcfbCGBuAncREYqT4hvqQ==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.27.0", + "@smithy/core": "^3.28.0", "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, @@ -1040,25 +960,13 @@ "node": ">=18.0.0" } }, - "node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@smithy/node-http-handler": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.9.0.tgz", - "integrity": "sha512-PurK/ibSD+RF6ZQPFm45ptaMIq0GdTRCXph2fvxWBKbNiiVpI1iQcS0Lg7ccOuWOryR3H5NsfQxhLDCa71/2Xg==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.9.1.tgz", + "integrity": "sha512-m/f15di58P6NtLQ7eVEb5N19NdJWn+4c7zfkFHMT/i3JH7U8UtknpPoy8o2tm2R3OdliYvsvQhZHIfACQDqT+Q==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.27.0", + "@smithy/core": "^3.28.0", "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, @@ -1067,12 +975,12 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.5.3.tgz", - "integrity": "sha512-CW8W5gVbMCS6OGaqVa7c+SmeKWzDzlVhwgjooiJrBOb56M+OaDp0N7Z/0fZ1UFmBTlUbF6DhrTW22xozDG8kzA==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.6.0.tgz", + "integrity": "sha512-IkPHQdbyoebSwBCuMTzJ/2oIhKVqiZZAZxQYSlpDZqq/WhJUpmdgbHvP7ItddxsPzcDUJeI0V4PNMSNtlZ0aqA==", "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.27.0", + "@smithy/core": "^3.28.0", "@smithy/types": "^4.15.0", "tslib": "^2.6.2" }, @@ -1092,32 +1000,6 @@ "node": ">=18.0.0" } }, - "node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@types/debug": { "version": "4.1.13", "license": "MIT", diff --git a/package.json b/package.json index 4fb7c56..6983936 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "astro": "astro" }, "dependencies": { - "@aws-sdk/client-ses": "^3.1075.0", + "@aws-sdk/client-sesv2": "^3.1077.0", "astro": "^6.2.2", "cors": "^2.8.6", "express": "^5.2.1", diff --git a/server.js b/server.js index 759636d..3edacf9 100644 --- a/server.js +++ b/server.js @@ -13,7 +13,7 @@ import express from 'express'; import cors from 'cors'; import nodemailer from 'nodemailer'; -import { SESClient } from '@aws-sdk/client-ses'; +import { SESv2Client } from '@aws-sdk/client-sesv2'; import { fileURLToPath } from 'node:url'; import { dirname, join } from 'node:path'; import { readFileSync, existsSync } from 'node:fs'; @@ -27,7 +27,7 @@ const sesConfigured = !!process.env.SES_ACCESS_KEY_ID; let transporter; if (sesConfigured) { - const ses = new SESClient({ + const ses = new SESv2Client({ region: process.env.SES_REGION || 'ap-southeast-1', credentials: { accessKeyId: process.env.SES_ACCESS_KEY_ID, @@ -35,7 +35,7 @@ if (sesConfigured) { }, }); transporter = nodemailer.createTransport({ - SES: { ses, aws: { SendRawEmailCommand: undefined } }, + SES: { sesv2: true, ses }, }); }