aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2023-03-21 00:06:39 -0700
committerAdam Soltys <[email protected]>2023-03-21 00:06:39 -0700
commit469c384e0930dd2b7c0f01c03cca95f86f05277d (patch)
tree17b24286259596987e74913d72e4733ec58c4f1d
parentc99665a0a0ac79176726169a49d5f9ebaae325bc (diff)
downloadcoinos-server-469c384e0930dd2b7c0f01c03cca95f86f05277d.tar.gz
coinos-server-469c384e0930dd2b7c0f01c03cca95f86f05277d.zip
ses mail
-rw-r--r--package.json2
-rw-r--r--pnpm-lock.yaml803
-rw-r--r--routes/email.js45
-rw-r--r--routes/payments.js17
4 files changed, 787 insertions, 80 deletions
diff --git a/package.json b/package.json
index ddfbb225..f5d158d1 100644
--- a/package.json
+++ b/package.json
@@ -7,12 +7,12 @@
"dev": "nodemon index.js"
},
"dependencies": {
+ "@aws-sdk/client-ses": "^3.295.0",
"@fastify/multipart": "^7.1.2",
"@fastify/passport": "^2.2.0",
"@fastify/secure-session": "^5.2.0",
"@fastify/static": "^6.5.0",
"@fastify/websocket": "^7.0.1",
- "@sendgrid/mail": "^7.7.0",
"bcrypt": "^5.0.0",
"bech32": "^2.0.0",
"clightning-client": "^0.1.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9d2c3fec..5b6163b7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,12 +1,12 @@
lockfileVersion: 5.4
specifiers:
+ '@aws-sdk/client-ses': ^3.295.0
'@fastify/multipart': ^7.1.2
'@fastify/passport': ^2.2.0
'@fastify/secure-session': ^5.2.0
'@fastify/static': ^6.5.0
'@fastify/websocket': ^7.0.1
- '@sendgrid/mail': ^7.7.0
bcrypt: ^5.0.0
bech32: ^2.0.0
clightning-client: ^0.1.2
@@ -34,12 +34,12 @@ specifiers:
ws: ^7.4.6
dependencies:
+ '@aws-sdk/client-ses': 3.295.0
'@fastify/multipart': 7.2.0
'@fastify/passport': 2.2.0
'@fastify/secure-session': 5.2.0
'@fastify/static': 6.5.0
'@fastify/websocket': 7.1.0
- '@sendgrid/mail': 7.7.0
bcrypt: 5.1.0
bech32: 2.0.0
clightning-client: 0.1.4
@@ -70,6 +70,732 @@ devDependencies:
packages:
+ /@aws-crypto/ie11-detection/3.0.0:
+ resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha256-browser/3.0.0:
+ resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==}
+ dependencies:
+ '@aws-crypto/ie11-detection': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-crypto/supports-web-crypto': 3.0.0
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/util-locate-window': 3.295.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/sha256-js/3.0.0:
+ resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==}
+ dependencies:
+ '@aws-crypto/util': 3.0.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/supports-web-crypto/3.0.0:
+ resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==}
+ dependencies:
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-crypto/util/3.0.0:
+ resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==}
+ dependencies:
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/util-utf8-browser': 3.259.0
+ tslib: 1.14.1
+ dev: false
+
+ /@aws-sdk/abort-controller/3.295.0:
+ resolution: {integrity: sha512-uohsGotvQ8RTgVZ9sQt0y3L60jBEYgN8MOn3Seaku8HpIIo9c6iIfkF0bMXZeFI2sCxqbrBDbsPKYWxr7rd8LA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/client-ses/3.295.0:
+ resolution: {integrity: sha512-vwD3cJmA5o8qTOuC7ihDbKmVqAYWPFyQrVZvhvCQRvjwejUsVjKcThY7+BYc69iw0suyztsqAClBkfzQ94jh/w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/client-sts': 3.295.0
+ '@aws-sdk/config-resolver': 3.295.0
+ '@aws-sdk/credential-provider-node': 3.295.0
+ '@aws-sdk/fetch-http-handler': 3.295.0
+ '@aws-sdk/hash-node': 3.295.0
+ '@aws-sdk/invalid-dependency': 3.295.0
+ '@aws-sdk/middleware-content-length': 3.295.0
+ '@aws-sdk/middleware-endpoint': 3.295.0
+ '@aws-sdk/middleware-host-header': 3.295.0
+ '@aws-sdk/middleware-logger': 3.295.0
+ '@aws-sdk/middleware-recursion-detection': 3.295.0
+ '@aws-sdk/middleware-retry': 3.295.0
+ '@aws-sdk/middleware-serde': 3.295.0
+ '@aws-sdk/middleware-signing': 3.295.0
+ '@aws-sdk/middleware-stack': 3.295.0
+ '@aws-sdk/middleware-user-agent': 3.295.0
+ '@aws-sdk/node-config-provider': 3.295.0
+ '@aws-sdk/node-http-handler': 3.295.0
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/smithy-client': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/url-parser': 3.295.0
+ '@aws-sdk/util-base64': 3.295.0
+ '@aws-sdk/util-body-length-browser': 3.295.0
+ '@aws-sdk/util-body-length-node': 3.295.0
+ '@aws-sdk/util-defaults-mode-browser': 3.295.0
+ '@aws-sdk/util-defaults-mode-node': 3.295.0
+ '@aws-sdk/util-endpoints': 3.295.0
+ '@aws-sdk/util-retry': 3.295.0
+ '@aws-sdk/util-user-agent-browser': 3.295.0
+ '@aws-sdk/util-user-agent-node': 3.295.0
+ '@aws-sdk/util-utf8': 3.295.0
+ '@aws-sdk/util-waiter': 3.295.0
+ fast-xml-parser: 4.1.2
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sso-oidc/3.295.0:
+ resolution: {integrity: sha512-HijuG2OAmTy0Wa3JHgIMBrBlsWC6GjWkH8KcRIGbFUH2nW8LFh3gBKuB1oubZ4wAdOIBFNECWA6FKFayFlKmew==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/config-resolver': 3.295.0
+ '@aws-sdk/fetch-http-handler': 3.295.0
+ '@aws-sdk/hash-node': 3.295.0
+ '@aws-sdk/invalid-dependency': 3.295.0
+ '@aws-sdk/middleware-content-length': 3.295.0
+ '@aws-sdk/middleware-endpoint': 3.295.0
+ '@aws-sdk/middleware-host-header': 3.295.0
+ '@aws-sdk/middleware-logger': 3.295.0
+ '@aws-sdk/middleware-recursion-detection': 3.295.0
+ '@aws-sdk/middleware-retry': 3.295.0
+ '@aws-sdk/middleware-serde': 3.295.0
+ '@aws-sdk/middleware-stack': 3.295.0
+ '@aws-sdk/middleware-user-agent': 3.295.0
+ '@aws-sdk/node-config-provider': 3.295.0
+ '@aws-sdk/node-http-handler': 3.295.0
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/smithy-client': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/url-parser': 3.295.0
+ '@aws-sdk/util-base64': 3.295.0
+ '@aws-sdk/util-body-length-browser': 3.295.0
+ '@aws-sdk/util-body-length-node': 3.295.0
+ '@aws-sdk/util-defaults-mode-browser': 3.295.0
+ '@aws-sdk/util-defaults-mode-node': 3.295.0
+ '@aws-sdk/util-endpoints': 3.295.0
+ '@aws-sdk/util-retry': 3.295.0
+ '@aws-sdk/util-user-agent-browser': 3.295.0
+ '@aws-sdk/util-user-agent-node': 3.295.0
+ '@aws-sdk/util-utf8': 3.295.0
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sso/3.295.0:
+ resolution: {integrity: sha512-uNEchm1LAQHP2/S21jz0NxCe8yqUe3J1jZG3N/dwx7uKVndHomTmjBsClGxT8IL9hC/Xl57G+fEpTCrFMjUR2g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/config-resolver': 3.295.0
+ '@aws-sdk/fetch-http-handler': 3.295.0
+ '@aws-sdk/hash-node': 3.295.0
+ '@aws-sdk/invalid-dependency': 3.295.0
+ '@aws-sdk/middleware-content-length': 3.295.0
+ '@aws-sdk/middleware-endpoint': 3.295.0
+ '@aws-sdk/middleware-host-header': 3.295.0
+ '@aws-sdk/middleware-logger': 3.295.0
+ '@aws-sdk/middleware-recursion-detection': 3.295.0
+ '@aws-sdk/middleware-retry': 3.295.0
+ '@aws-sdk/middleware-serde': 3.295.0
+ '@aws-sdk/middleware-stack': 3.295.0
+ '@aws-sdk/middleware-user-agent': 3.295.0
+ '@aws-sdk/node-config-provider': 3.295.0
+ '@aws-sdk/node-http-handler': 3.295.0
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/smithy-client': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/url-parser': 3.295.0
+ '@aws-sdk/util-base64': 3.295.0
+ '@aws-sdk/util-body-length-browser': 3.295.0
+ '@aws-sdk/util-body-length-node': 3.295.0
+ '@aws-sdk/util-defaults-mode-browser': 3.295.0
+ '@aws-sdk/util-defaults-mode-node': 3.295.0
+ '@aws-sdk/util-endpoints': 3.295.0
+ '@aws-sdk/util-retry': 3.295.0
+ '@aws-sdk/util-user-agent-browser': 3.295.0
+ '@aws-sdk/util-user-agent-node': 3.295.0
+ '@aws-sdk/util-utf8': 3.295.0
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/client-sts/3.295.0:
+ resolution: {integrity: sha512-KrLnG5EcXvry9tmsTAONhlj60F0+Z7P2PtT0XDsS8pLayHAtd9lKXsf14DOSQa9+LbPLMFbfLbuSwvPYvgxMzg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-crypto/sha256-browser': 3.0.0
+ '@aws-crypto/sha256-js': 3.0.0
+ '@aws-sdk/config-resolver': 3.295.0
+ '@aws-sdk/credential-provider-node': 3.295.0
+ '@aws-sdk/fetch-http-handler': 3.295.0
+ '@aws-sdk/hash-node': 3.295.0
+ '@aws-sdk/invalid-dependency': 3.295.0
+ '@aws-sdk/middleware-content-length': 3.295.0
+ '@aws-sdk/middleware-endpoint': 3.295.0
+ '@aws-sdk/middleware-host-header': 3.295.0
+ '@aws-sdk/middleware-logger': 3.295.0
+ '@aws-sdk/middleware-recursion-detection': 3.295.0
+ '@aws-sdk/middleware-retry': 3.295.0
+ '@aws-sdk/middleware-sdk-sts': 3.295.0
+ '@aws-sdk/middleware-serde': 3.295.0
+ '@aws-sdk/middleware-signing': 3.295.0
+ '@aws-sdk/middleware-stack': 3.295.0
+ '@aws-sdk/middleware-user-agent': 3.295.0
+ '@aws-sdk/node-config-provider': 3.295.0
+ '@aws-sdk/node-http-handler': 3.295.0
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/smithy-client': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/url-parser': 3.295.0
+ '@aws-sdk/util-base64': 3.295.0
+ '@aws-sdk/util-body-length-browser': 3.295.0
+ '@aws-sdk/util-body-length-node': 3.295.0
+ '@aws-sdk/util-defaults-mode-browser': 3.295.0
+ '@aws-sdk/util-defaults-mode-node': 3.295.0
+ '@aws-sdk/util-endpoints': 3.295.0
+ '@aws-sdk/util-retry': 3.295.0
+ '@aws-sdk/util-user-agent-browser': 3.295.0
+ '@aws-sdk/util-user-agent-node': 3.295.0
+ '@aws-sdk/util-utf8': 3.295.0
+ fast-xml-parser: 4.1.2
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/config-resolver/3.295.0:
+ resolution: {integrity: sha512-oSGdGAjmOesxGAT/Ce8P7Gdvf4KVQjasKqmlAMTXsUBxh8Mx8BQH9V3UCiCdfJ2Vx7H4pqN4Y8WcAQkje4uvbQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/signature-v4': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/util-config-provider': 3.295.0
+ '@aws-sdk/util-middleware': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/credential-provider-env/3.295.0:
+ resolution: {integrity: sha512-YjUDJwhgwUgFYT4fJQVCMA1Abw2Jw1xC3EeNxeV2L54CvM9PlbFuRa5qJehePKoTLyva4bjLsMXsensXrEEIGQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/credential-provider-imds/3.295.0:
+ resolution: {integrity: sha512-+tOVCZi7LUG2pvjK9P35hhXL1cZTJsbGtrMsIxrlUODjKEhht4RSiQH7zT324x6MkYby9iLjU4SUejyKBKDhYQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/node-config-provider': 3.295.0
+ '@aws-sdk/property-provider': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/url-parser': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/credential-provider-ini/3.295.0:
+ resolution: {integrity: sha512-XU3UqVVxxjyXcZ2Wkx3CM+/eLUM/EDlqJkLU6nl3FDGzPZeXC3G9Z9ZywGBo7dpRbBpDfpzSSukJisiGLTwg2w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.295.0
+ '@aws-sdk/credential-provider-imds': 3.295.0
+ '@aws-sdk/credential-provider-process': 3.295.0
+ '@aws-sdk/credential-provider-sso': 3.295.0
+ '@aws-sdk/credential-provider-web-identity': 3.295.0
+ '@aws-sdk/property-provider': 3.295.0
+ '@aws-sdk/shared-ini-file-loader': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-node/3.295.0:
+ resolution: {integrity: sha512-dU+nDJJKCyx/YBKeGgSuFM1okdoNVGWLTzrkPohPGy5+KnPaFCscrqRe2ni0ihQscguwSFXygV5SQoYNp1FGwA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/credential-provider-env': 3.295.0
+ '@aws-sdk/credential-provider-imds': 3.295.0
+ '@aws-sdk/credential-provider-ini': 3.295.0
+ '@aws-sdk/credential-provider-process': 3.295.0
+ '@aws-sdk/credential-provider-sso': 3.295.0
+ '@aws-sdk/credential-provider-web-identity': 3.295.0
+ '@aws-sdk/property-provider': 3.295.0
+ '@aws-sdk/shared-ini-file-loader': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-process/3.295.0:
+ resolution: {integrity: sha512-efA41QAcKlb/hbDZVXnUApMPjOnu8Zj58o0WqHAdcpu7qSDzZdsmJ6dqknAbj14cyDjzXaexuN+wubGUAL9IoQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.295.0
+ '@aws-sdk/shared-ini-file-loader': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/credential-provider-sso/3.295.0:
+ resolution: {integrity: sha512-cJoCLbg3ud3/NK7otcBHkRaPvdsVEyX9tryLIPuj8rgagFWneexVh4Kzs9k+PtRN764TjVFzITw99LxBf0fe1w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/client-sso': 3.295.0
+ '@aws-sdk/property-provider': 3.295.0
+ '@aws-sdk/shared-ini-file-loader': 3.295.0
+ '@aws-sdk/token-providers': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/credential-provider-web-identity/3.295.0:
+ resolution: {integrity: sha512-rBDhRYh4PiOnvz0M7AbYZZCiaPm5JDkM0xzGHEKKiW/A1wS2Gd2qbyEIK4APQ7vZMX+IJaSBBabfqm+vX5Y1kw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/fetch-http-handler/3.295.0:
+ resolution: {integrity: sha512-xs274LSLeF2313dAaq7gvm/m0e0tb0/Bt2vew4Lj2zP6YNRtuNlStfSNhYHHuIkOqjTwLeAmKdK+cWFnXKQPTA==}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/querystring-builder': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/util-base64': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/hash-node/3.295.0:
+ resolution: {integrity: sha512-jLq6QXUpvtYYu9+K8BECXpw7U52RBrewj/t/ALUVJsEhtwpx16K1WzMqwcVhkQ8mc/xQiki/T4eFSThODZAlcw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/util-buffer-from': 3.295.0
+ '@aws-sdk/util-utf8': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/invalid-dependency/3.295.0:
+ resolution: {integrity: sha512-ctXFKW4qnhLqZ0+qyEK1l0TOYQYwd2+vjj6wdjAiHuKoH6yIMqJ97LOT7oq3drvMQbnXa4I2jCOSFVuNSnzJ7Q==}
+ dependencies:
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/is-array-buffer/3.295.0:
+ resolution: {integrity: sha512-SCIt10cr5dud7hvwveU4wkLjvkGssJ3GrcbHCds2NwI+JHmpcaaNYLAqi305JAuT29T36U5ssTFDSmrrEOcfag==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-content-length/3.295.0:
+ resolution: {integrity: sha512-XzrVPuO1JwxJx5PFHP9eMZLP9zyQxPZ8PM9gTWdOgoc1BMtxCkDZ3HLOnJtcfmfbz8nwSt2/H+wlBEXaRrf7Fg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-endpoint/3.295.0:
+ resolution: {integrity: sha512-MFRW6XyZABAOeFPu2CC37h+ol6ADaKs8fqqJrv9gtNb13r6c0UeztQFwI6V3tLlZwX7zzH7HcwYFKyks5VO6Xw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/middleware-serde': 3.295.0
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/signature-v4': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/url-parser': 3.295.0
+ '@aws-sdk/util-config-provider': 3.295.0
+ '@aws-sdk/util-middleware': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-host-header/3.295.0:
+ resolution: {integrity: sha512-CjdC8eCILSuNHTF2AZOtFta5lMvLMM3bXBTto0LKYeHQixgBHmRSgcShfBTiWEPgIgeNSFEjMbKX6bLnHSnODg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-logger/3.295.0:
+ resolution: {integrity: sha512-dbv0VTA7Dh6ZCkmCs0U7/ssZiDtHDI7Bq3zab+RxEyLEE4wr73bW6occq579U/QQJHOZQ6EBdvYig8ntRNlzVg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-recursion-detection/3.295.0:
+ resolution: {integrity: sha512-9Wjb8Y7H0ctL8gIKtGFwXhpHb3c2UGGi2P9I+p2PJwW08rDnMlOpUItY0v49SbZ+6uct1VNBs6iJ+jkv0h5MEQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-retry/3.295.0:
+ resolution: {integrity: sha512-IdVX86VaDSSPcGI1JJM8lffabOMmGC9TUpskKkKdFnLW6eKtFohye+hlf2h6Y/2wdvoqCdi6XZyQX9WPJHiHtw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/service-error-classification': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/util-middleware': 3.295.0
+ '@aws-sdk/util-retry': 3.295.0
+ tslib: 2.5.0
+ uuid: 8.3.2
+ dev: false
+
+ /@aws-sdk/middleware-sdk-sts/3.295.0:
+ resolution: {integrity: sha512-QTHR+ZXAmii8XsbdRrqJWn6LVeGiRcFfGlniIb1YEjw1p2FU5kpayq8N1SLLtj3JWmE61Bpn0J+LAQmfjbCqFA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/middleware-signing': 3.295.0
+ '@aws-sdk/property-provider': 3.295.0
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/signature-v4': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-serde/3.295.0:
+ resolution: {integrity: sha512-LAKtKNKdu6Si7rmLatAq87LSa27mR6HUZ7tZHD2E4SQWOoNpS4ikKfUfATkbjC2GOfbrBYmFmQgBvpghYYZ3jw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-signing/3.295.0:
+ resolution: {integrity: sha512-LcNzGqtpo9sdWJ9mKtgjragncbin/Ynbz/pklH/HcIIi45w8ZVrhLBpW1iQZ0MBKyDacAAeWtXxKHy55DkHlvg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.295.0
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/signature-v4': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/util-middleware': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-stack/3.295.0:
+ resolution: {integrity: sha512-65HahosleRbpNgu6/XkABcrBmZHudRYTNpyKRfSY18QPKVQv3PRgRqv/goHrc6DHo8cxAliBoMciN88Ali1ufQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/middleware-user-agent/3.295.0:
+ resolution: {integrity: sha512-11MGXHFxmXgQx6aAFshLqHm3US7awXMP1Hq3IAu6j+GXSdkpkIojh/LlzRbSUftAhh23C5oQpgOkqs6fox4xCw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/util-endpoints': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/node-config-provider/3.295.0:
+ resolution: {integrity: sha512-6lkCmPMmXn6CF1qQHkE/Ii88ge/Mz9MWX+Krj3ICdBRwdMqm4LGzc9qG+bJeqbVI3tPO3djmL+b4SW4a3pvKsw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.295.0
+ '@aws-sdk/shared-ini-file-loader': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/node-http-handler/3.295.0:
+ resolution: {integrity: sha512-Ga3vp/IY3LgzTdlSTAcxncYebE0lpQAdgxnko+z1i67OaI8DqNlTL8vdYBoHDaFOb9E6ErShLytVoHAEuJ5TpA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/abort-controller': 3.295.0
+ '@aws-sdk/protocol-http': 3.295.0
+ '@aws-sdk/querystring-builder': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/property-provider/3.295.0:
+ resolution: {integrity: sha512-5hxI1W36JWugYaBng7hKH2IxDtNohk0KMsz6wgyHVxTcsrO9VohlYa+5rHntmt3SbQAyy7n5ft9/vb1Nb5TGCw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/protocol-http/3.295.0:
+ resolution: {integrity: sha512-mDl1jfNDtOFXKQrkiTY0dbTwC9LLjmmAmE8TpxXC1v6JbOihVrARiyPdumZWP4J/71YAim1ASS6JlQHw/GuAqg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/querystring-builder/3.295.0:
+ resolution: {integrity: sha512-zgFb2pSkxOCHVusZpPjQVIwmQZf59MQEYJETk42OKaigItGTHjap9DrFzKo6+SrHeyEpJLxlZKSz5up4Hulwdw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/util-uri-escape': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/querystring-parser/3.295.0:
+ resolution: {integrity: sha512-bcm8IBHmflH1e6EHznScJbfvAmNZqwZtC6QaynNk6no/YYKr5Swm+GHqxurKBm86qCYIOoSvdoq8tyhUjXnh4Q==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/service-error-classification/3.295.0:
+ resolution: {integrity: sha512-zqGxXkZUxPD7E0FJXKHZLuJwr02zg/Ux4d+elT/MUTYT9eKupmG2S5586/hZdjUxGGA7gmMMJr92mjrLVJUAkQ==}
+ engines: {node: '>=14.0.0'}
+ dev: false
+
+ /@aws-sdk/shared-ini-file-loader/3.295.0:
+ resolution: {integrity: sha512-LF9+jk37/VPoIyadeb+Ls0Tqda6dauo3uG7FDfg7qdiOpdyNRuFaIZE//MTSG5mk4ExAwjkFsnslZaw31hbbUw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/signature-v4/3.295.0:
+ resolution: {integrity: sha512-yS00sIwWEnPB4aHZWJZpXVL2/wbwrymxbPZw/Xq0JXbR9+RXhzENBqw7C3d7E11K1xLnoTYlVqcJhNuNXgyeZg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/is-array-buffer': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ '@aws-sdk/util-hex-encoding': 3.295.0
+ '@aws-sdk/util-middleware': 3.295.0
+ '@aws-sdk/util-uri-escape': 3.295.0
+ '@aws-sdk/util-utf8': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/smithy-client/3.295.0:
+ resolution: {integrity: sha512-6Ifq+szMeX6MjWkEEiXvQGm7moY5Wt6WfFi+dMLkZmPdOEWYB0Cr0EBpY605WHWGz702CpFLvM/z6rUkvtak5g==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/middleware-stack': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/token-providers/3.295.0:
+ resolution: {integrity: sha512-/6PsplDacgBoQxFBbKYMW9ZlEeTHHdAm+xE6V+qjEsc0YXy32LwuFllfihryXLjWftrC3kr8EiehLU6d+9JaKA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/client-sso-oidc': 3.295.0
+ '@aws-sdk/property-provider': 3.295.0
+ '@aws-sdk/shared-ini-file-loader': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ transitivePeerDependencies:
+ - aws-crt
+ dev: false
+
+ /@aws-sdk/types/3.295.0:
+ resolution: {integrity: sha512-flwibucy5+PshdFLeMCClMqV3eFmjUDhcLkEUeQvVgyhGxJPIrU3ntGAfqz27bvk47ZVX5TUdCG5JdxuUaRO+A==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/url-parser/3.295.0:
+ resolution: {integrity: sha512-hev5gbi+EWHLaFNgVpoNeNTaJpqfa9ev0SvqgvCPqGlIdUnt3cP9t1Mc8jvx2kUk8ebPtrrq6cp8ZslfxoFeVA==}
+ dependencies:
+ '@aws-sdk/querystring-parser': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-base64/3.295.0:
+ resolution: {integrity: sha512-z1r40BsBiOTALnzASvLb4qutGwPpL+jH2UKTCV5WJLXZFMzRnpZaRfeZGE8lMJ/i0+jv9H9G1FmVzE8UgB4rhw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/util-buffer-from': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-body-length-browser/3.295.0:
+ resolution: {integrity: sha512-NbG4/RSHV1VueStPRclSo5zRjNUmcDlNAs29sniZF+YaN0+Ad7hEdu/YgJw39shBfUaurz2Wv0pufU3cxE5Tng==}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-body-length-node/3.295.0:
+ resolution: {integrity: sha512-dvGf8VBmrT66lM0n6P/h7wnlHS4Atafyivyl8f4TUCMvRdpqryvvrtnX6yYcq3T7VKQmas/2SOlgDvcrhGXaiw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-buffer-from/3.295.0:
+ resolution: {integrity: sha512-5ezVEITQnrQKn+CU9qfZHgRp2nrrbX0Clmlm9aiNjAEQEPHY33tWl0t6n8h8yU+IpGiNRMWBVC4aSJaE5NA1mA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/is-array-buffer': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-config-provider/3.295.0:
+ resolution: {integrity: sha512-/5Dl1aV2yI8YQjqwmg4RTnl/E9NmNsx7HIwBZt+dTcOrM0LMUwczQBFFcLyqCj/qv5y+VsvLoAAA/OiBT7hb3w==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-defaults-mode-browser/3.295.0:
+ resolution: {integrity: sha512-QqVyl4Sxi9Umn2+TdhZR8fHQRWWs2361JCylig1GzH+ud+8jinDS6tLtWxhzrea2XdKGb4xqjTC4AhCuBqgSmA==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@aws-sdk/property-provider': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ bowser: 2.11.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-defaults-mode-node/3.295.0:
+ resolution: {integrity: sha512-R1e94v6HMsUec8/P2tJmab5fYsT9X3+Kh1rMzCEA27V+kAD88eKStzE26Yb1kQDAC+Fg3Fe1KS1bg4dmQKUSVg==}
+ engines: {node: '>= 10.0.0'}
+ dependencies:
+ '@aws-sdk/config-resolver': 3.295.0
+ '@aws-sdk/credential-provider-imds': 3.295.0
+ '@aws-sdk/node-config-provider': 3.295.0
+ '@aws-sdk/property-provider': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-endpoints/3.295.0:
+ resolution: {integrity: sha512-WZR6jAD++7Wb6ER1SM/U82xU+OVWihcc8V90AzTWyDb0JPeKuogwWokV1aHXiGaQGbWULr1wY1R3wthhvEs3Bg==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-hex-encoding/3.295.0:
+ resolution: {integrity: sha512-XJcoVo41kHzhe28PBm/rqt5mdCp8R6abwiW9ug1dA6FOoPUO8kBUxDv6xaOmA2hfRvd2ocFfBXaUCBqUowkGcQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-locate-window/3.295.0:
+ resolution: {integrity: sha512-d/s+zhUx5Kh4l/ecMP/TBjzp1GR/g89Q4nWH6+wH5WgdHsK+LG+vmsk6mVNuP/8wsCofYG4NBqp5Ulbztbm9QA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-middleware/3.295.0:
+ resolution: {integrity: sha512-t6UdduLHV97IRZmd1YA0v5HCwerz+OXxDF8lLK0G7qihde0jv6tq5w8fTTjgehDFKM0UGUiaahOtjEcRK7F2Aw==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-retry/3.295.0:
+ resolution: {integrity: sha512-3xp3A5XtPWGsN9aLuzM3mB4hpM3nZJ5JJiGFgUXu/CTP2ahipbVbMwtRpIUjYDh1kvdjoaDJatEVJ7JhJrXFew==}
+ engines: {node: '>= 14.0.0'}
+ dependencies:
+ '@aws-sdk/service-error-classification': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-uri-escape/3.295.0:
+ resolution: {integrity: sha512-1H5DcyIoXF8XcPBWf7wzHt0l+TW2EoR8Oq4gsVrPTQkHMTVclC2Yn8EF3gc4arwVBzwLulI9LMBE2L8fexGfTQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-user-agent-browser/3.295.0:
+ resolution: {integrity: sha512-lSU80r6yMwSDLkBZ0900G/kHLz/QgXewPXz56Xnq7NHWu7YliY6fzT1zWHPRGwcfCctTGMTWw+10ZSu/0Xv9nw==}
+ dependencies:
+ '@aws-sdk/types': 3.295.0
+ bowser: 2.11.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-user-agent-node/3.295.0:
+ resolution: {integrity: sha512-EVt/4nWTYLbS6llhjE4sn2tn1mBlifyK6ezAse5kr6boNG3dJt6Y7gHAXXglkmblw2bflxqgOaKj5YCcZFUSyQ==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ aws-crt: '>=1.0.0'
+ peerDependenciesMeta:
+ aws-crt:
+ optional: true
+ dependencies:
+ '@aws-sdk/node-config-provider': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-utf8-browser/3.259.0:
+ resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==}
+ dependencies:
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-utf8/3.295.0:
+ resolution: {integrity: sha512-ITN8v3F63ZkA4sdmCtSbS/mhav4F0MEAiXDAUXtMJLNqVtaVcyQST4i9vNmPpIVthAPAtP0QjyF2tq/Di8bxtQ==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/util-buffer-from': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
+ /@aws-sdk/util-waiter/3.295.0:
+ resolution: {integrity: sha512-7FHJhSqfBSGsbNUtXyJvu0cnKCtVoQ1HtVZ2OWvW9V0Vyi++ifm6UFvHecrQPocfXu4WoOEhWktZ78iUdCA/MA==}
+ engines: {node: '>=14.0.0'}
+ dependencies:
+ '@aws-sdk/abort-controller': 3.295.0
+ '@aws-sdk/types': 3.295.0
+ tslib: 2.5.0
+ dev: false
+
/@bleskomat/form/1.2.6:
resolution: {integrity: sha512-xAMj1zfYWydo2K2U30Tn1R8p2hOEdRF9o0d/QPYHjGNQkgx6rHv4lgf6/UXOptjUvPKEIRtxXJBl7fYZ8nnRzA==}
dependencies:
@@ -277,33 +1003,6 @@ packages:
'@redis/client': 1.3.0
dev: false
- /@sendgrid/client/7.7.0:
- resolution: {integrity: sha512-SxH+y8jeAQSnDavrTD0uGDXYIIkFylCo+eDofVmZLQ0f862nnqbC3Vd1ej6b7Le7lboyzQF6F7Fodv02rYspuA==}
- engines: {node: 6.* || 8.* || >=10.*}
- dependencies:
- '@sendgrid/helpers': 7.7.0
- axios: 0.26.1
- transitivePeerDependencies:
- - debug
- dev: false
-
- /@sendgrid/helpers/7.7.0:
- resolution: {integrity: sha512-3AsAxfN3GDBcXoZ/y1mzAAbKzTtUZ5+ZrHOmWQ279AuaFXUNCh9bPnRpN504bgveTqoW+11IzPg3I0WVgDINpw==}
- engines: {node: '>= 6.0.0'}
- dependencies:
- deepmerge: 4.3.0
- dev: false
-
- /@sendgrid/mail/7.7.0:
- resolution: {integrity: sha512-5+nApPE9wINBvHSUxwOxkkQqM/IAAaBYoP9hw7WwgDNQPxraruVqHizeTitVtKGiqWCKm2mnjh4XGN3fvFLqaw==}
- engines: {node: 6.* || 8.* || >=10.*}
- dependencies:
- '@sendgrid/client': 7.7.0
- '@sendgrid/helpers': 7.7.0
- transitivePeerDependencies:
- - debug
- dev: false
-
/@sindresorhus/is/5.3.0:
resolution: {integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==}
engines: {node: '>=14.16'}
@@ -466,14 +1165,6 @@ packages:
- supports-color
dev: false
- /axios/0.26.1:
- resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==}
- dependencies:
- follow-redirects: 1.15.2
- transitivePeerDependencies:
- - debug
- dev: false
-
/balanced-match/1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: false
@@ -581,6 +1272,10 @@ packages:
secp256k1: 4.0.3
dev: false
+ /bowser/2.11.0:
+ resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==}
+ dev: false
+
/brace-expansion/1.1.11:
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
dependencies:
@@ -876,11 +1571,6 @@ packages:
engines: {node: '>=4.0.0'}
dev: false
- /deepmerge/4.3.0:
- resolution: {integrity: sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==}
- engines: {node: '>=0.10.0'}
- dev: false
-
/defer-to-connect/2.0.1:
resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==}
engines: {node: '>=10'}
@@ -1072,6 +1762,13 @@ packages:
resolution: {integrity: sha512-qKRta6N7BWEFVlyonVY/V+BMLgFqktCUV0QjT259ekAIlbVrMaFnFLxJ4s/JPl4tou56S1BzPufI60bLe29fHA==}
dev: false
+ /fast-xml-parser/4.1.2:
+ resolution: {integrity: sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==}
+ hasBin: true
+ dependencies:
+ strnum: 1.0.5
+ dev: false
+
/fastify-plugin/3.0.1:
resolution: {integrity: sha512-qKcDXmuZadJqdTm6vlCqioEbyewF60b/0LOFCcYN1B6BIZGlYJumWWOYs70SFYLDAH4YqdE1cxH/RKMG7rFxgA==}
dev: false
@@ -1152,16 +1849,6 @@ packages:
safe-regex2: 2.0.0
dev: false
- /follow-redirects/1.15.2:
- resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
- engines: {node: '>=4.0'}
- peerDependencies:
- debug: '*'
- peerDependenciesMeta:
- debug:
- optional: true
- dev: false
-
/form-data-encoder/2.1.4:
resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==}
engines: {node: '>= 14.17'}
@@ -2494,6 +3181,10 @@ packages:
engines: {node: '>=8'}
dev: false
+ /strnum/1.0.5:
+ resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
+ dev: false
+
/strtok3/7.0.0:
resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==}
engines: {node: '>=14.16'}
@@ -2592,6 +3283,14 @@ packages:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
dev: false
+ /tslib/1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+ dev: false
+
+ /tslib/2.5.0:
+ resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
+ dev: false
+
/tunnel-agent/0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
dependencies:
diff --git a/routes/email.js b/routes/email.js
index 1b551864..1f7ce4a0 100644
--- a/routes/email.js
+++ b/routes/email.js
@@ -1,7 +1,8 @@
import { bail } from "$lib/utils";
import got from "got";
import config from "$config";
-import sendgrid from "@sendgrid/mail";
+import { SESClient, CloneReceiptRuleSetCommand } from "@aws-sdk/client-ses";
+import { SendEmailCommand } from "@aws-sdk/client-ses";
export default {
async send({ body }, res) {
@@ -11,26 +12,44 @@ export default {
.post("https://www.google.com/recaptcha/api/siteverify", {
form: {
secret,
- response,
- },
+ response
+ }
})
.json();
if (success) {
delete body.token;
- sendgrid.setApiKey(config.sendgrid);
- const msg = {
- subject: body.subject || "Email Signup",
- text: JSON.stringify(body),
- html: JSON.stringify(body),
- };
- await sendgrid.send(msg);
+ let client = new SESClient({ region: "us-east-2" });
+ await client.send(
+ new SendEmailCommand({
+ Destination: {
+ CcAddresses: [],
+ ToAddresses: ["[email protected]"]
+ },
+ Message: {
+ Body: {
+ Html: {
+ Charset: "UTF-8",
+ Data: JSON.stringify(body)
+ },
+ Text: {
+ Charset: "UTF-8",
+ Data: JSON.stringify(body)
+ }
+ },
+ Subject: {
+ Charset: "UTF-8",
+ Data: body.subject || "Email Signup"
+ }
+ },
+ Source: "[email protected]"
+ })
+ );
+
res.send({ ok: true });
} else {
bail(res, "failed captcha");
}
- },
+ }
};
diff --git a/routes/payments.js b/routes/payments.js
index 1a5bcf76..3c318f2d 100644
--- a/routes/payments.js
+++ b/routes/payments.js
@@ -404,22 +404,11 @@ export default {
async fix({ body: { uid, username }, user }, res) {
try {
if (!user.admin) fail("unauthorized");
-
- if (username) uid = await g(`user:${username.toLowerCase()}`);
- ({ username } = await g(`user:${uid}`));
- let balance = await g(`balance:${uid}`);
-
- let payments = await db.lRange(`${uid}:payments`, 0, -1);
-
- let total = 0;
- for (let pid of payments) {
- let p = await g(`payment:${pid}`);
- total += p.amount;
- if (p.amount < 0) total -= (p.fee || 0) + (p.ourfee || 0);
+ for await (let k of db.scanIterator({ MATCH: "balance:*" })) {
+ let bal = await g(k);
+ if (bal < 0) s(k, 0);
}
- l("corrected balance", username, uid, balance, total);
- await s(`balance:${uid}`, total);
res.send("ok");
} catch (e) {
console.log(e);