diff --git a/.gitignore b/.gitignore index 4b4c6765..66a78bef 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# webstorm +.idea + # Wrangler .wrangler diff --git a/package.json b/package.json index 7a431bc4..f40ba35a 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ }, "private": true, "dependencies": { + "@aws-sdk/client-s3": "^3.382.0", "@lucia-auth/adapter-prisma": "^3.0.0", "@planetscale/database": "^1.8.0", "@prisma/client": "^5.0.0", @@ -29,6 +30,7 @@ "lucia": "^2.0.0", "prettier": "^3.0.0", "prisma": "^5.1.0", - "render2": "^1.2.1" + "render2": "^1.2.1", + "resend": "^0.17.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c52558db..d6ca3824 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,9 @@ settings: excludeLinksFromLockfile: false dependencies: + "@aws-sdk/client-s3": + specifier: ^3.382.0 + version: 3.382.0 "@lucia-auth/adapter-prisma": specifier: ^3.0.0 version: 3.0.0(@prisma/client@5.0.0)(lucia@2.0.0) @@ -32,6 +35,9 @@ dependencies: render2: specifier: ^1.2.1 version: 1.2.1 + resend: + specifier: ^0.17.2 + version: 0.17.2 devDependencies: "@cloudflare/workers-types": @@ -61,519 +67,1798 @@ packages: } engines: { node: ">=0.10.0" } - /@cloudflare/kv-asset-handler@0.2.0: + /@aws-crypto/crc32@3.0.0: resolution: { - integrity: sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==, + integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==, } dependencies: - mime: 3.0.0 - dev: true + "@aws-crypto/util": 3.0.0 + "@aws-sdk/types": 3.378.0 + tslib: 1.14.1 + dev: false - /@cloudflare/workerd-darwin-64@1.20230710.0: + /@aws-crypto/crc32c@3.0.0: resolution: { - integrity: sha512-TDEgTfzTkveW+U0qtg9/60PXbl2klnEso0oio501zAnY2SOC1x7M0qb8UkhvjHFUVpwdykUzTPWPIWFBcF1ibA==, + integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==, } - engines: { node: ">=16" } - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + dependencies: + "@aws-crypto/util": 3.0.0 + "@aws-sdk/types": 3.378.0 + tslib: 1.14.1 + dev: false - /@cloudflare/workerd-darwin-arm64@1.20230710.0: + /@aws-crypto/ie11-detection@3.0.0: resolution: { - integrity: sha512-dxBwnKcj7TiM1JGiODg0LASa25A9P0XLeMkmF8YCECZoq+3QLH/uY4Vbm1xeEy8iXUZrt/uYN72bBE83vY4HIQ==, + integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==, } - engines: { node: ">=16" } - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + dependencies: + tslib: 1.14.1 + dev: false - /@cloudflare/workerd-linux-64@1.20230710.0: + /@aws-crypto/sha1-browser@3.0.0: resolution: { - integrity: sha512-WrKZwL76i51jQLFpSxklpRSm2s8T9Xf6tVzQaiLTtpguKZSF/CTAyjjEOVfS7FXk+Te8lyAJAFQnj5QHoJ3pzA==, + integrity: sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==, } - engines: { node: ">=16" } - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true + dependencies: + "@aws-crypto/ie11-detection": 3.0.0 + "@aws-crypto/supports-web-crypto": 3.0.0 + "@aws-crypto/util": 3.0.0 + "@aws-sdk/types": 3.378.0 + "@aws-sdk/util-locate-window": 3.310.0 + "@aws-sdk/util-utf8-browser": 3.259.0 + tslib: 1.14.1 + dev: false - /@cloudflare/workerd-linux-arm64@1.20230710.0: + /@aws-crypto/sha256-browser@3.0.0: resolution: { - integrity: sha512-eWdbOoqFqQ4m1/Wwy2dRDaOVXjOmWGjwBliU8pvm2m9RjfRTdfik7z6E3vOkalxqJDHiJ0f8SUykKz2oM1lD0A==, + integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==, } - engines: { node: ">=16" } - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + 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.378.0 + "@aws-sdk/util-locate-window": 3.310.0 + "@aws-sdk/util-utf8-browser": 3.259.0 + tslib: 1.14.1 + dev: false - /@cloudflare/workerd-windows-64@1.20230710.0: + /@aws-crypto/sha256-js@3.0.0: resolution: { - integrity: sha512-P5ihH98Pb72HrsVsvb/HCSezvAvEtPeVQVBKgIclNE9e0fkA4zX9QMzBBFvLy3yr0YLf4r7MO2tNnt7JFnheGA==, + integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==, } - engines: { node: ">=16" } - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + dependencies: + "@aws-crypto/util": 3.0.0 + "@aws-sdk/types": 3.378.0 + tslib: 1.14.1 + dev: false - /@cloudflare/workers-types@4.20230710.1: + /@aws-crypto/supports-web-crypto@3.0.0: resolution: { - integrity: sha512-VqEY/ZqyHKBn6ivdePSWebpqojwbCXVEuwLkMYHs0UoOAqcGylkVcabdZYdQJKeNxXcOUZ9UBId/x9UsPUm2XQ==, + integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==, } - dev: true + dependencies: + tslib: 1.14.1 + dev: false - /@esbuild-plugins/node-globals-polyfill@0.1.1(esbuild@0.16.3): + /@aws-crypto/util@3.0.0: resolution: { - integrity: sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==, + integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==, } - peerDependencies: - esbuild: "*" dependencies: - esbuild: 0.16.3 - dev: true + "@aws-sdk/types": 3.378.0 + "@aws-sdk/util-utf8-browser": 3.259.0 + tslib: 1.14.1 + dev: false - /@esbuild-plugins/node-modules-polyfill@0.1.4(esbuild@0.16.3): + /@aws-sdk/client-s3@3.382.0: resolution: { - integrity: sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==, + integrity: sha512-7s5DI1dw5HUF9+tHuZzkJaZBcaE3kuGsMw17/enEa8YdF0CtL5rW46FlzQ3/7NYIKc9rhDtb0UMakEej1cWFtg==, } - peerDependencies: - esbuild: "*" + engines: { node: ">=14.0.0" } dependencies: - esbuild: 0.16.3 - escape-string-regexp: 4.0.0 - rollup-plugin-node-polyfills: 0.2.1 - dev: true + "@aws-crypto/sha1-browser": 3.0.0 + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/client-sts": 3.382.0 + "@aws-sdk/credential-provider-node": 3.382.0 + "@aws-sdk/middleware-bucket-endpoint": 3.378.0 + "@aws-sdk/middleware-expect-continue": 3.378.0 + "@aws-sdk/middleware-flexible-checksums": 3.378.0 + "@aws-sdk/middleware-host-header": 3.379.1 + "@aws-sdk/middleware-location-constraint": 3.379.1 + "@aws-sdk/middleware-logger": 3.378.0 + "@aws-sdk/middleware-recursion-detection": 3.378.0 + "@aws-sdk/middleware-sdk-s3": 3.379.1 + "@aws-sdk/middleware-signing": 3.379.1 + "@aws-sdk/middleware-ssec": 3.378.0 + "@aws-sdk/middleware-user-agent": 3.382.0 + "@aws-sdk/signature-v4-multi-region": 3.378.0 + "@aws-sdk/types": 3.378.0 + "@aws-sdk/util-endpoints": 3.382.0 + "@aws-sdk/util-user-agent-browser": 3.378.0 + "@aws-sdk/util-user-agent-node": 3.378.0 + "@aws-sdk/xml-builder": 3.310.0 + "@smithy/config-resolver": 2.0.1 + "@smithy/eventstream-serde-browser": 2.0.1 + "@smithy/eventstream-serde-config-resolver": 2.0.1 + "@smithy/eventstream-serde-node": 2.0.1 + "@smithy/fetch-http-handler": 2.0.1 + "@smithy/hash-blob-browser": 2.0.1 + "@smithy/hash-node": 2.0.1 + "@smithy/hash-stream-node": 2.0.1 + "@smithy/invalid-dependency": 2.0.1 + "@smithy/md5-js": 2.0.1 + "@smithy/middleware-content-length": 2.0.1 + "@smithy/middleware-endpoint": 2.0.1 + "@smithy/middleware-retry": 2.0.1 + "@smithy/middleware-serde": 2.0.1 + "@smithy/middleware-stack": 2.0.0 + "@smithy/node-config-provider": 2.0.1 + "@smithy/node-http-handler": 2.0.1 + "@smithy/protocol-http": 2.0.1 + "@smithy/smithy-client": 2.0.1 + "@smithy/types": 2.0.2 + "@smithy/url-parser": 2.0.1 + "@smithy/util-base64": 2.0.0 + "@smithy/util-body-length-browser": 2.0.0 + "@smithy/util-body-length-node": 2.0.0 + "@smithy/util-defaults-mode-browser": 2.0.1 + "@smithy/util-defaults-mode-node": 2.0.1 + "@smithy/util-retry": 2.0.0 + "@smithy/util-stream": 2.0.1 + "@smithy/util-utf8": 2.0.0 + "@smithy/util-waiter": 2.0.1 + fast-xml-parser: 4.2.5 + tslib: 2.6.0 + transitivePeerDependencies: + - "@aws-sdk/signature-v4-crt" + - aws-crt + dev: false - /@esbuild/android-arm64@0.16.3: + /@aws-sdk/client-sso-oidc@3.382.0: resolution: { - integrity: sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==, + integrity: sha512-hTfvB1ftbrqaz7qiEkmRobzUQwG34oZlByobn8Frdr5ZQbJk969bX6evQAPyKlJEr26+kL9TnaX+rbLR/+gwHQ==, } - engines: { node: ">=12" } - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/middleware-host-header": 3.379.1 + "@aws-sdk/middleware-logger": 3.378.0 + "@aws-sdk/middleware-recursion-detection": 3.378.0 + "@aws-sdk/middleware-user-agent": 3.382.0 + "@aws-sdk/types": 3.378.0 + "@aws-sdk/util-endpoints": 3.382.0 + "@aws-sdk/util-user-agent-browser": 3.378.0 + "@aws-sdk/util-user-agent-node": 3.378.0 + "@smithy/config-resolver": 2.0.1 + "@smithy/fetch-http-handler": 2.0.1 + "@smithy/hash-node": 2.0.1 + "@smithy/invalid-dependency": 2.0.1 + "@smithy/middleware-content-length": 2.0.1 + "@smithy/middleware-endpoint": 2.0.1 + "@smithy/middleware-retry": 2.0.1 + "@smithy/middleware-serde": 2.0.1 + "@smithy/middleware-stack": 2.0.0 + "@smithy/node-config-provider": 2.0.1 + "@smithy/node-http-handler": 2.0.1 + "@smithy/protocol-http": 2.0.1 + "@smithy/smithy-client": 2.0.1 + "@smithy/types": 2.0.2 + "@smithy/url-parser": 2.0.1 + "@smithy/util-base64": 2.0.0 + "@smithy/util-body-length-browser": 2.0.0 + "@smithy/util-body-length-node": 2.0.0 + "@smithy/util-defaults-mode-browser": 2.0.1 + "@smithy/util-defaults-mode-node": 2.0.1 + "@smithy/util-retry": 2.0.0 + "@smithy/util-utf8": 2.0.0 + tslib: 2.6.0 + transitivePeerDependencies: + - aws-crt + dev: false - /@esbuild/android-arm@0.16.3: + /@aws-sdk/client-sso@3.382.0: resolution: { - integrity: sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA==, + integrity: sha512-ge11t4hJllOF8pBNF0p1X52lLqUsLGAoey24fvk3fyvvczeLpegGYh2kdLG0iwFTDgRxaUqK+kboH5Wy9ux/pw==, } - engines: { node: ">=12" } - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/middleware-host-header": 3.379.1 + "@aws-sdk/middleware-logger": 3.378.0 + "@aws-sdk/middleware-recursion-detection": 3.378.0 + "@aws-sdk/middleware-user-agent": 3.382.0 + "@aws-sdk/types": 3.378.0 + "@aws-sdk/util-endpoints": 3.382.0 + "@aws-sdk/util-user-agent-browser": 3.378.0 + "@aws-sdk/util-user-agent-node": 3.378.0 + "@smithy/config-resolver": 2.0.1 + "@smithy/fetch-http-handler": 2.0.1 + "@smithy/hash-node": 2.0.1 + "@smithy/invalid-dependency": 2.0.1 + "@smithy/middleware-content-length": 2.0.1 + "@smithy/middleware-endpoint": 2.0.1 + "@smithy/middleware-retry": 2.0.1 + "@smithy/middleware-serde": 2.0.1 + "@smithy/middleware-stack": 2.0.0 + "@smithy/node-config-provider": 2.0.1 + "@smithy/node-http-handler": 2.0.1 + "@smithy/protocol-http": 2.0.1 + "@smithy/smithy-client": 2.0.1 + "@smithy/types": 2.0.2 + "@smithy/url-parser": 2.0.1 + "@smithy/util-base64": 2.0.0 + "@smithy/util-body-length-browser": 2.0.0 + "@smithy/util-body-length-node": 2.0.0 + "@smithy/util-defaults-mode-browser": 2.0.1 + "@smithy/util-defaults-mode-node": 2.0.1 + "@smithy/util-retry": 2.0.0 + "@smithy/util-utf8": 2.0.0 + tslib: 2.6.0 + transitivePeerDependencies: + - aws-crt + dev: false - /@esbuild/android-x64@0.16.3: + /@aws-sdk/client-sts@3.382.0: resolution: { - integrity: sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==, + integrity: sha512-G5wgahrOqmrljjyLVGASIZUXIIdalbCo0z4PuFHdb2R2CVfwO8renfgrmk4brT9tIxIfen5bRA7ftXMe7yrgRA==, } - engines: { node: ">=12" } - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-crypto/sha256-browser": 3.0.0 + "@aws-crypto/sha256-js": 3.0.0 + "@aws-sdk/credential-provider-node": 3.382.0 + "@aws-sdk/middleware-host-header": 3.379.1 + "@aws-sdk/middleware-logger": 3.378.0 + "@aws-sdk/middleware-recursion-detection": 3.378.0 + "@aws-sdk/middleware-sdk-sts": 3.379.1 + "@aws-sdk/middleware-signing": 3.379.1 + "@aws-sdk/middleware-user-agent": 3.382.0 + "@aws-sdk/types": 3.378.0 + "@aws-sdk/util-endpoints": 3.382.0 + "@aws-sdk/util-user-agent-browser": 3.378.0 + "@aws-sdk/util-user-agent-node": 3.378.0 + "@smithy/config-resolver": 2.0.1 + "@smithy/fetch-http-handler": 2.0.1 + "@smithy/hash-node": 2.0.1 + "@smithy/invalid-dependency": 2.0.1 + "@smithy/middleware-content-length": 2.0.1 + "@smithy/middleware-endpoint": 2.0.1 + "@smithy/middleware-retry": 2.0.1 + "@smithy/middleware-serde": 2.0.1 + "@smithy/middleware-stack": 2.0.0 + "@smithy/node-config-provider": 2.0.1 + "@smithy/node-http-handler": 2.0.1 + "@smithy/protocol-http": 2.0.1 + "@smithy/smithy-client": 2.0.1 + "@smithy/types": 2.0.2 + "@smithy/url-parser": 2.0.1 + "@smithy/util-base64": 2.0.0 + "@smithy/util-body-length-browser": 2.0.0 + "@smithy/util-body-length-node": 2.0.0 + "@smithy/util-defaults-mode-browser": 2.0.1 + "@smithy/util-defaults-mode-node": 2.0.1 + "@smithy/util-retry": 2.0.0 + "@smithy/util-utf8": 2.0.0 + fast-xml-parser: 4.2.5 + tslib: 2.6.0 + transitivePeerDependencies: + - aws-crt + dev: false - /@esbuild/darwin-arm64@0.16.3: + /@aws-sdk/credential-provider-env@3.378.0: resolution: { - integrity: sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==, + integrity: sha512-B2OVdO9kBClDwGgWTBLAQwFV8qYTYGyVujg++1FZFSFMt8ORFdZ5fNpErvJtiSjYiOOQMzyBeSNhKyYNXCiJjQ==, } - engines: { node: ">=12" } - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + "@smithy/property-provider": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false - /@esbuild/darwin-x64@0.16.3: + /@aws-sdk/credential-provider-ini@3.382.0: resolution: { - integrity: sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==, + integrity: sha512-31pi44WWri2WQmagqptUv7x3Nq8pQ6H06OCQx5goEm77SosSdwQwyBPrS9Pg0yI9aljFAxF+rZ75degsCorbQg==, } - engines: { node: ">=12" } - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/credential-provider-env": 3.378.0 + "@aws-sdk/credential-provider-process": 3.378.0 + "@aws-sdk/credential-provider-sso": 3.382.0 + "@aws-sdk/credential-provider-web-identity": 3.378.0 + "@aws-sdk/types": 3.378.0 + "@smithy/credential-provider-imds": 2.0.1 + "@smithy/property-provider": 2.0.1 + "@smithy/shared-ini-file-loader": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + transitivePeerDependencies: + - aws-crt + dev: false - /@esbuild/freebsd-arm64@0.16.3: + /@aws-sdk/credential-provider-node@3.382.0: resolution: { - integrity: sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==, + integrity: sha512-q6AWCCb0E0cH/Y5Dtln0QssbCBXDbV4PoTV3EdRuGoJcHyNfHJ8X0mqcc7k44wG4Piazu+ufZThvn43W7W9a4g==, } - engines: { node: ">=12" } - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/credential-provider-env": 3.378.0 + "@aws-sdk/credential-provider-ini": 3.382.0 + "@aws-sdk/credential-provider-process": 3.378.0 + "@aws-sdk/credential-provider-sso": 3.382.0 + "@aws-sdk/credential-provider-web-identity": 3.378.0 + "@aws-sdk/types": 3.378.0 + "@smithy/credential-provider-imds": 2.0.1 + "@smithy/property-provider": 2.0.1 + "@smithy/shared-ini-file-loader": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + transitivePeerDependencies: + - aws-crt + dev: false - /@esbuild/freebsd-x64@0.16.3: + /@aws-sdk/credential-provider-process@3.378.0: resolution: { - integrity: sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==, + integrity: sha512-KFTIy7u+wXj3eDua4rgS0tODzMnXtXhAm1RxzCW9FL5JLBBrd82ymCj1Dp72217Sw5Do6NjCnDTTNkCHZMA77w==, } - engines: { node: ">=12" } - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + "@smithy/property-provider": 2.0.1 + "@smithy/shared-ini-file-loader": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false - /@esbuild/linux-arm64@0.16.3: + /@aws-sdk/credential-provider-sso@3.382.0: resolution: { - integrity: sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==, + integrity: sha512-tKCQKqxnAHeRD7pQNmDmLWwC7pt5koo6yiQTVQ382U+8xx7BNsApE1zdC4LrtrVN1FYqVbw5kXjYFtSCtaUxGA==, } - engines: { node: ">=12" } - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/client-sso": 3.382.0 + "@aws-sdk/token-providers": 3.382.0 + "@aws-sdk/types": 3.378.0 + "@smithy/property-provider": 2.0.1 + "@smithy/shared-ini-file-loader": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + transitivePeerDependencies: + - aws-crt + dev: false - /@esbuild/linux-arm@0.16.3: + /@aws-sdk/credential-provider-web-identity@3.378.0: resolution: { - integrity: sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==, + integrity: sha512-GWjydOszhc4xDF8xuPtBvboglXQr0gwCW1oHAvmLcOT38+Hd6qnKywnMSeoXYRPgoKfF9TkWQgW1jxplzCG0UA==, } - engines: { node: ">=12" } - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + "@smithy/property-provider": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false - /@esbuild/linux-ia32@0.16.3: + /@aws-sdk/middleware-bucket-endpoint@3.378.0: resolution: { - integrity: sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==, + integrity: sha512-3o+AYU6JWUsPM49bWglCUOgNvySiHkbIma0J6F9a68e30vEDD0FUQtKzyHPZkF7iYDyesEl166gYjwVNAmASzw==, } - engines: { node: ">=12" } - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + "@aws-sdk/util-arn-parser": 3.310.0 + "@smithy/protocol-http": 2.0.1 + "@smithy/types": 2.0.2 + "@smithy/util-config-provider": 2.0.0 + tslib: 2.6.0 + dev: false - /@esbuild/linux-loong64@0.16.3: + /@aws-sdk/middleware-expect-continue@3.378.0: resolution: { - integrity: sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==, + integrity: sha512-8maaNQvza3/IGDbIyVQkUbGlo+Oc6SY1gVG50UMcTUX8nwZrD1/ko+ft+pd2EDb2n+0JritoDj4bjr6pdesNBg==, } - engines: { node: ">=12" } - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + "@smithy/protocol-http": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false - /@esbuild/linux-mips64el@0.16.3: + /@aws-sdk/middleware-flexible-checksums@3.378.0: resolution: { - integrity: sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==, + integrity: sha512-pHkcVTu2T+x/1fpPHMpRDpXY5zxDsjijv3C6Nz/nm3gQrZvQ3fYDrQdV3Oj6Xeg40B3kkcp/bzgDo7MDzG088A==, } - engines: { node: ">=12" } - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-crypto/crc32": 3.0.0 + "@aws-crypto/crc32c": 3.0.0 + "@aws-sdk/types": 3.378.0 + "@smithy/is-array-buffer": 2.0.0 + "@smithy/protocol-http": 2.0.1 + "@smithy/types": 2.0.2 + "@smithy/util-utf8": 2.0.0 + tslib: 2.6.0 + dev: false - /@esbuild/linux-ppc64@0.16.3: + /@aws-sdk/middleware-host-header@3.379.1: resolution: { - integrity: sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==, + integrity: sha512-LI4KpAFWNWVr2aH2vRVblr0Y8tvDz23lj8LOmbDmCrzd5M21nxuocI/8nEAQj55LiTIf9Zs+dHCdsyegnFXdrA==, } - engines: { node: ">=12" } - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + "@smithy/protocol-http": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false - /@esbuild/linux-riscv64@0.16.3: + /@aws-sdk/middleware-location-constraint@3.379.1: resolution: { - integrity: sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==, + integrity: sha512-+bmy8DjX9jtqJk8WiDaHoP9M5ZcqjHSJf4mkv8IUZ/FNTUl9j6Dll//bG/JxuAw5e5shtCDjmZ027W5d9ITp0g==, } - engines: { node: ">=12" } - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false - /@esbuild/linux-s390x@0.16.3: + /@aws-sdk/middleware-logger@3.378.0: resolution: { - integrity: sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==, + integrity: sha512-l1DyaDLm3KeBMNMuANI3scWh8Xvu248x+vw6Z7ExWOhGXFmQ1MW7YvASg/SdxWkhlF9HmkkTif1LdMB22x6QDA==, } - engines: { node: ">=12" } - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false - /@esbuild/linux-x64@0.16.3: + /@aws-sdk/middleware-recursion-detection@3.378.0: resolution: { - integrity: sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==, + integrity: sha512-mUMfHAz0oGNIWiTZHTVJb+I515Hqs2zx1j36Le4MMiiaMkPW1SRUF1FIwGuc1wh6E8jB5q+XfEMriDjRi4TZRA==, } - engines: { node: ">=12" } - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + "@smithy/protocol-http": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@aws-sdk/middleware-sdk-s3@3.379.1: + resolution: + { + integrity: sha512-NVHRpNLfkHCqr3CE1Bmlf8Fhys8lL78kDX7UONnTZXvSiSXmCS7EbNtGDghZ8IKi+V9S/ifB4sLsX3tfzY0i6Q==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + "@aws-sdk/util-arn-parser": 3.310.0 + "@smithy/protocol-http": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@aws-sdk/middleware-sdk-sts@3.379.1: + resolution: + { + integrity: sha512-SK3gSyT0XbLiY12+AjLFYL9YngxOXHnZF3Z33Cdd4a+AUYrVBV7JBEEGD1Nlwrcmko+3XgaKlmgUaR5s91MYvg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/middleware-signing": 3.379.1 + "@aws-sdk/types": 3.378.0 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@aws-sdk/middleware-signing@3.379.1: + resolution: + { + integrity: sha512-kBk2ZUvR84EM4fICjr8K+Ykpf8SI1UzzPp2/UVYZ0X+4H/ZCjfSqohGRwHykMqeplne9qHSL7/rGJs1H3l3gPg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + "@smithy/property-provider": 2.0.1 + "@smithy/protocol-http": 2.0.1 + "@smithy/signature-v4": 2.0.1 + "@smithy/types": 2.0.2 + "@smithy/util-middleware": 2.0.0 + tslib: 2.6.0 + dev: false + + /@aws-sdk/middleware-ssec@3.378.0: + resolution: + { + integrity: sha512-WDT2LOd6OxlY1zkrRG9ZtW2vFms/dsqMg9VyE88RKG2oATxSXEhkr5zLbNVh3TyuUKnV9jydate56d/ECwHOHg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@aws-sdk/middleware-user-agent@3.382.0: + resolution: + { + integrity: sha512-LFRW1jmXOrOAd3911ktn6oaYmuurNnulbdRMOUdwz99GGdLVFipQhOi9idKswb8IOhPa4jEVQt25Kcv7ctvu0A==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + "@aws-sdk/util-endpoints": 3.382.0 + "@smithy/protocol-http": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@aws-sdk/signature-v4-multi-region@3.378.0: + resolution: + { + integrity: sha512-gtuABS7EeYZQeNzTrabY3Ruv4wWmoz4u8OMSGl47gYPDWA70WYEZ0aoi4zSGuKhXiqtVvTsO9wGEMIInwV5phQ==, + } + engines: { node: ">=14.0.0" } + peerDependencies: + "@aws-sdk/signature-v4-crt": ^3.118.0 + peerDependenciesMeta: + "@aws-sdk/signature-v4-crt": + optional: true + dependencies: + "@aws-sdk/types": 3.378.0 + "@smithy/protocol-http": 2.0.1 + "@smithy/signature-v4": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@aws-sdk/token-providers@3.382.0: + resolution: + { + integrity: sha512-axn4IyPpHdkXi8G06KCB3tPz79DipZFFH9N9YVDpLMnDYTdfX36HGdYzINaQc+z+XPbEpa1ZpoIzWScHRjFjdg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/client-sso-oidc": 3.382.0 + "@aws-sdk/types": 3.378.0 + "@smithy/property-provider": 2.0.1 + "@smithy/shared-ini-file-loader": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/types@3.378.0: + resolution: + { + integrity: sha512-qP0CvR/ItgktmN8YXpGQglzzR/6s0nrsQ4zIfx3HMwpsBTwuouYahcCtF1Vr82P4NFcoDA412EJahJ2pIqEd+w==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@aws-sdk/util-arn-parser@3.310.0: + resolution: + { + integrity: sha512-jL8509owp/xB9+Or0pvn3Fe+b94qfklc2yPowZZIFAkFcCSIdkIglz18cPDWnYAcy9JGewpMS1COXKIUhZkJsA==, + } + engines: { node: ">=14.0.0" } + dependencies: + tslib: 2.6.0 + dev: false + + /@aws-sdk/util-endpoints@3.382.0: + resolution: + { + integrity: sha512-flajPyjmjNG67fXk7l4GoTB/7J11VBqtFZXuuAZKhKU07Ia3IQupsFqNf5lV8D44ZgjnKH0fTGnv3dUALjW7Wg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@aws-sdk/types": 3.378.0 + tslib: 2.6.0 + dev: false + + /@aws-sdk/util-locate-window@3.310.0: + resolution: + { + integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==, + } + engines: { node: ">=14.0.0" } + dependencies: + tslib: 2.6.0 + dev: false + + /@aws-sdk/util-user-agent-browser@3.378.0: + resolution: + { + integrity: sha512-FSCpagzftK1W+m7Ar6lpX7/Gr9y5P56nhFYz8U4EYQ4PkufS6czWX9YW+/FA5OYV0vlQ/SvPqMnzoHIPUNhZrQ==, + } + dependencies: + "@aws-sdk/types": 3.378.0 + "@smithy/types": 2.0.2 + bowser: 2.11.0 + tslib: 2.6.0 + dev: false + + /@aws-sdk/util-user-agent-node@3.378.0: + resolution: + { + integrity: sha512-IdwVJV0E96MkJeFte4dlWqvB+oiqCiZ5lOlheY3W9NynTuuX0GGYNC8Y9yIsV8Oava1+ujpJq0ww6qXdYxmO4A==, + } + engines: { node: ">=14.0.0" } + peerDependencies: + aws-crt: ">=1.0.0" + peerDependenciesMeta: + aws-crt: + optional: true + dependencies: + "@aws-sdk/types": 3.378.0 + "@smithy/node-config-provider": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@aws-sdk/util-utf8-browser@3.259.0: + resolution: + { + integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==, + } + dependencies: + tslib: 2.6.0 + dev: false + + /@aws-sdk/xml-builder@3.310.0: + resolution: + { + integrity: sha512-TqELu4mOuSIKQCqj63fGVs86Yh+vBx5nHRpWKNUNhB2nPTpfbziTs5c1X358be3peVWA4wPxW7Nt53KIg1tnNw==, + } + engines: { node: ">=14.0.0" } + dependencies: + tslib: 2.6.0 + dev: false + + /@cloudflare/kv-asset-handler@0.2.0: + resolution: + { + integrity: sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==, + } + dependencies: + mime: 3.0.0 + dev: true + + /@cloudflare/workerd-darwin-64@1.20230710.0: + resolution: + { + integrity: sha512-TDEgTfzTkveW+U0qtg9/60PXbl2klnEso0oio501zAnY2SOC1x7M0qb8UkhvjHFUVpwdykUzTPWPIWFBcF1ibA==, + } + engines: { node: ">=16" } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true optional: true - /@esbuild/netbsd-x64@0.16.3: + /@cloudflare/workerd-darwin-arm64@1.20230710.0: resolution: { - integrity: sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==, + integrity: sha512-dxBwnKcj7TiM1JGiODg0LASa25A9P0XLeMkmF8YCECZoq+3QLH/uY4Vbm1xeEy8iXUZrt/uYN72bBE83vY4HIQ==, } - engines: { node: ">=12" } + engines: { node: ">=16" } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@cloudflare/workerd-linux-64@1.20230710.0: + resolution: + { + integrity: sha512-WrKZwL76i51jQLFpSxklpRSm2s8T9Xf6tVzQaiLTtpguKZSF/CTAyjjEOVfS7FXk+Te8lyAJAFQnj5QHoJ3pzA==, + } + engines: { node: ">=16" } cpu: [x64] - os: [netbsd] + os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/openbsd-x64@0.16.3: + /@cloudflare/workerd-linux-arm64@1.20230710.0: resolution: { - integrity: sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==, + integrity: sha512-eWdbOoqFqQ4m1/Wwy2dRDaOVXjOmWGjwBliU8pvm2m9RjfRTdfik7z6E3vOkalxqJDHiJ0f8SUykKz2oM1lD0A==, } - engines: { node: ">=12" } + engines: { node: ">=16" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@cloudflare/workerd-windows-64@1.20230710.0: + resolution: + { + integrity: sha512-P5ihH98Pb72HrsVsvb/HCSezvAvEtPeVQVBKgIclNE9e0fkA4zX9QMzBBFvLy3yr0YLf4r7MO2tNnt7JFnheGA==, + } + engines: { node: ">=16" } cpu: [x64] - os: [openbsd] + os: [win32] requiresBuild: true dev: true optional: true - /@esbuild/sunos-x64@0.16.3: + /@cloudflare/workers-types@4.20230710.1: resolution: { - integrity: sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==, + integrity: sha512-VqEY/ZqyHKBn6ivdePSWebpqojwbCXVEuwLkMYHs0UoOAqcGylkVcabdZYdQJKeNxXcOUZ9UBId/x9UsPUm2XQ==, + } + dev: true + + /@esbuild-plugins/node-globals-polyfill@0.1.1(esbuild@0.16.3): + resolution: + { + integrity: sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==, + } + peerDependencies: + esbuild: "*" + dependencies: + esbuild: 0.16.3 + dev: true + + /@esbuild-plugins/node-modules-polyfill@0.1.4(esbuild@0.16.3): + resolution: + { + integrity: sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==, + } + peerDependencies: + esbuild: "*" + dependencies: + esbuild: 0.16.3 + escape-string-regexp: 4.0.0 + rollup-plugin-node-polyfills: 0.2.1 + dev: true + + /@esbuild/android-arm64@0.16.3: + resolution: + { + integrity: sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.16.3: + resolution: + { + integrity: sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.16.3: + resolution: + { + integrity: sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==, } engines: { node: ">=12" } cpu: [x64] - os: [sunos] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.16.3: + resolution: + { + integrity: sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [darwin] requiresBuild: true dev: true optional: true - /@esbuild/win32-arm64@0.16.3: + /@esbuild/darwin-x64@0.16.3: + resolution: + { + integrity: sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.16.3: + resolution: + { + integrity: sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.16.3: + resolution: + { + integrity: sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.16.3: + resolution: + { + integrity: sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.16.3: + resolution: + { + integrity: sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.16.3: + resolution: + { + integrity: sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.16.3: + resolution: + { + integrity: sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==, + } + engines: { node: ">=12" } + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.16.3: + resolution: + { + integrity: sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==, + } + engines: { node: ">=12" } + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.16.3: + resolution: + { + integrity: sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==, + } + engines: { node: ">=12" } + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.16.3: + resolution: + { + integrity: sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==, + } + engines: { node: ">=12" } + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.16.3: + resolution: + { + integrity: sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==, + } + engines: { node: ">=12" } + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.16.3: + resolution: + { + integrity: sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.16.3: + resolution: + { + integrity: sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.16.3: + resolution: + { + integrity: sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.16.3: + resolution: + { + integrity: sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.16.3: + resolution: + { + integrity: sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.16.3: + resolution: + { + integrity: sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.16.3: + resolution: + { + integrity: sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): + resolution: + { + integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.45.0 + eslint-visitor-keys: 3.4.1 + + /@eslint-community/regexpp@4.5.1: + resolution: + { + integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==, + } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + + /@eslint/eslintrc@2.1.0: + resolution: + { + integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + /@eslint/js@8.44.0: + resolution: + { + integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + /@humanwhocodes/config-array@0.11.10: + resolution: + { + integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==, + } + engines: { node: ">=10.10.0" } + dependencies: + "@humanwhocodes/object-schema": 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + /@humanwhocodes/module-importer@1.0.1: + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, + } + engines: { node: ">=12.22" } + + /@humanwhocodes/object-schema@1.2.1: + resolution: + { + integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==, + } + + /@lucia-auth/adapter-prisma@3.0.0(@prisma/client@5.0.0)(lucia@2.0.0): + resolution: + { + integrity: sha512-qrFA5IID4AulINQbLQLQPIXqE9+M3zjmN558VDhrS3Y7Fdn5dyObPbHijUWw7lGYgOrhxDox9UUG8oyZ3+D1MA==, + } + peerDependencies: + "@prisma/client": ^4.2.0 || ^5.0.0 + lucia: ^2.0.0 + dependencies: + "@prisma/client": 5.0.0(prisma@5.1.0) + lucia: 2.0.0 + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + } + engines: { node: ">= 8" } + + /@nodelib/fs.walk@1.2.8: + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: 1.15.0 + + /@one-ini/wasm@0.1.1: + resolution: + { + integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==, + } + dev: false + + /@planetscale/database@1.8.0: + resolution: + { + integrity: sha512-+zk04eXRiaJGaRnJZkCxXbBtBvQDQJXCoxqlXhLY3HzAovXfsBnh6DjXRujPRQQ7GKtT8/tOlyvZ9h6ReM+GLQ==, + } + engines: { node: ">=16" } + dev: false + + /@prisma/client@5.0.0(prisma@5.1.0): + resolution: + { + integrity: sha512-XlO5ELNAQ7rV4cXIDJUNBEgdLwX3pjtt9Q/RHqDpGf43szpNJx2hJnggfFs7TKNx0cOFsl6KJCSfqr5duEU/bQ==, + } + engines: { node: ">=16.13" } + requiresBuild: true + peerDependencies: + prisma: "*" + peerDependenciesMeta: + prisma: + optional: true + dependencies: + "@prisma/engines-version": 4.17.0-26.6b0aef69b7cdfc787f822ecd7cdc76d5f1991584 + prisma: 5.1.0 + dev: false + + /@prisma/engines-version@4.17.0-26.6b0aef69b7cdfc787f822ecd7cdc76d5f1991584: + resolution: + { + integrity: sha512-HHiUF6NixsldsP3JROq07TYBLEjXFKr6PdH8H4gK/XAoTmIplOJBCgrIUMrsRAnEuGyRoRLXKXWUb943+PFoKQ==, + } + dev: false + + /@prisma/engines@5.1.0: + resolution: + { + integrity: sha512-HqaFsnPmZOdMWkPq6tT2eTVTQyaAXEDdKszcZ4yc7DGMBIYRP6j/zAJTtZUG9SsMV8FaucdL5vRyxY/p5Ni28g==, + } + requiresBuild: true + dev: false + + /@react-email/render@0.0.7: + resolution: + { + integrity: sha512-hMMhxk6TpOcDC5qnKzXPVJoVGEwfm+U5bGOPH+MyTTlx0F02RLQygcATBKsbP7aI/mvkmBAZoFbgPIHop7ovug==, + } + engines: { node: ">=16.0.0" } + dependencies: + html-to-text: 9.0.3 + pretty: 2.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@selderee/plugin-htmlparser2@0.10.0: + resolution: + { + integrity: sha512-gW69MEamZ4wk1OsOq1nG1jcyhXIQcnrsX5JwixVw/9xaiav8TCyjESAruu1Rz9yyInhgBXxkNwMeygKnN2uxNA==, + } + dependencies: + domhandler: 5.0.3 + selderee: 0.10.0 + dev: false + + /@smithy/abort-controller@2.0.1: + resolution: + { + integrity: sha512-0s7XjIbsTwZyUW9OwXQ8J6x1UiA1TNCh60Vaw56nHahL7kUZsLhmTlWiaxfLkFtO2Utkj8YewcpHTYpxaTzO+w==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/chunked-blob-reader-native@2.0.0: + resolution: + { + integrity: sha512-HM8V2Rp1y8+1343tkZUKZllFhEQPNmpNdgFAncbTsxkZ18/gqjk23XXv3qGyXWp412f3o43ZZ1UZHVcHrpRnCQ==, + } + dependencies: + "@smithy/util-base64": 2.0.0 + tslib: 2.6.0 + dev: false + + /@smithy/chunked-blob-reader@2.0.0: + resolution: + { + integrity: sha512-k+J4GHJsMSAIQPChGBrjEmGS+WbPonCXesoqP9fynIqjn7rdOThdH8FAeCmokP9mxTYKQAKoHCLPzNlm6gh7Wg==, + } + dependencies: + tslib: 2.6.0 + dev: false + + /@smithy/config-resolver@2.0.1: + resolution: + { + integrity: sha512-l83Pm7hV+8CBQOCmBRopWDtF+CURUJol7NsuPYvimiDhkC2F8Ba9T1imSFE+pD1UIJ9jlsDPAnZfPJT5cjnuEw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.0.2 + "@smithy/util-config-provider": 2.0.0 + "@smithy/util-middleware": 2.0.0 + tslib: 2.6.0 + dev: false + + /@smithy/credential-provider-imds@2.0.1: + resolution: + { + integrity: sha512-8VxriuRINNEfVZjEFKBY75y9ZWAx73DZ5K/u+3LmB6r8WR2h3NaFxFKMlwlq0uzNdGhD1ouKBn9XWEGYHKiPLw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/node-config-provider": 2.0.1 + "@smithy/property-provider": 2.0.1 + "@smithy/types": 2.0.2 + "@smithy/url-parser": 2.0.1 + tslib: 2.6.0 + dev: false + + /@smithy/eventstream-codec@2.0.1: + resolution: + { + integrity: sha512-/IiNB7gQM2y2ZC/GAWOWDa8+iXfhr1g9Xe5979cQEOdCWDISvrAiv18cn3OtIQUhbYOR3gm7QtCpkq1to2takQ==, + } + dependencies: + "@aws-crypto/crc32": 3.0.0 + "@smithy/types": 2.0.2 + "@smithy/util-hex-encoding": 2.0.0 + tslib: 2.6.0 + dev: false + + /@smithy/eventstream-serde-browser@2.0.1: + resolution: + { + integrity: sha512-9E1/6ZGF7nB/Td3G1kcatU7VjjP8eZ/p/Q+0KsZc1AUPyv4lR15pmWnWj3iGBEGYI9qZBJ/7a/wPEPayabmA3Q==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/eventstream-serde-universal": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/eventstream-serde-config-resolver@2.0.1: + resolution: + { + integrity: sha512-J8a+8HH8oDPIgq8Px/nPLfu9vpIjQ7XUPtP3orbs8KUh0GznNthSTy1xZP5RXjRqGQEkxPvsHf1po2+QOsgNFw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/eventstream-serde-node@2.0.1: + resolution: + { + integrity: sha512-wklowUz0zXJuqC7FMpriz66J8OAko3z6INTg+iMJWYB1bWv4pc5V7q36PxlZ0RKRbj0u+EThlozWgzE7Stz2Sw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/eventstream-serde-universal": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/eventstream-serde-universal@2.0.1: + resolution: + { + integrity: sha512-WPPylIgVZ6wOYVgpF0Rs1LlocYyj248MRtKEEehnDvC+0tV7wmGt7H/SchCh10W4y4YUxuzPlW+mUvVMGmLSVg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/eventstream-codec": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/fetch-http-handler@2.0.1: + resolution: + { + integrity: sha512-/SoU/ClazgcdOxgE4zA7RX8euiELwpsrKCSvulVQvu9zpmqJRyEJn8ZTWYFV17/eHOBdHTs9kqodhNhsNT+cUw==, + } + dependencies: + "@smithy/protocol-http": 2.0.1 + "@smithy/querystring-builder": 2.0.1 + "@smithy/types": 2.0.2 + "@smithy/util-base64": 2.0.0 + tslib: 2.6.0 + dev: false + + /@smithy/hash-blob-browser@2.0.1: + resolution: + { + integrity: sha512-i/o2+sHb4jDRz5nf2ilTTbC0nVmm4LO//FbODCAB7pbzMdywxbZ6z+q56FmEa8R+aFbtApxQ1SJ3umEiNz6IPg==, + } + dependencies: + "@smithy/chunked-blob-reader": 2.0.0 + "@smithy/chunked-blob-reader-native": 2.0.0 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/hash-node@2.0.1: + resolution: + { + integrity: sha512-oTKYimQdF4psX54ZonpcIE+MXjMUWFxLCNosjPkJPFQ9whRX0K/PFX/+JZGRQh3zO9RlEOEUIbhy9NO+Wha6hw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.0.2 + "@smithy/util-buffer-from": 2.0.0 + "@smithy/util-utf8": 2.0.0 + tslib: 2.6.0 + dev: false + + /@smithy/hash-stream-node@2.0.1: + resolution: + { + integrity: sha512-AequnQdPRuXf4AuvvFlSjnkWI460xxhAd6y362gFtOE4jjJLLXblbMAXVFrkV8/pDMGNjpVegVSpRmHXZsbKhg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.0.2 + "@smithy/util-utf8": 2.0.0 + tslib: 2.6.0 + dev: false + + /@smithy/invalid-dependency@2.0.1: + resolution: + { + integrity: sha512-2q/Eb0AE662zwyMV+z+TL7deBwcHCgaZZGc0RItamBE8kak3MzCi/EZCNoFWoBfxgQ4jfR12wm8KKsSXhJzJtQ==, + } + dependencies: + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/is-array-buffer@2.0.0: + resolution: + { + integrity: sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==, + } + engines: { node: ">=14.0.0" } + dependencies: + tslib: 2.6.0 + dev: false + + /@smithy/md5-js@2.0.1: + resolution: + { + integrity: sha512-8WWOtwWMmIDgTkRv1o3opy3ABsRXs4/XunETK53ckxQRAiOML1PlnqLBK9Uwk9bvOD6cpmsC6dioIfmKGpJ25w==, + } + dependencies: + "@smithy/types": 2.0.2 + "@smithy/util-utf8": 2.0.0 + tslib: 2.6.0 + dev: false + + /@smithy/middleware-content-length@2.0.1: + resolution: + { + integrity: sha512-IZhRSk5GkVBcrKaqPXddBS2uKhaqwBgaSgbBb1OJyGsKe7SxRFbclWS0LqOR9fKUkDl+3lL8E2ffpo6EQg0igw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/protocol-http": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/middleware-endpoint@2.0.1: + resolution: + { + integrity: sha512-uz/KI1MBd9WHrrkVFZO4L4Wyv24raf0oR4EsOYEeG5jPJO5U+C7MZGLcMxX8gWERDn1sycBDqmGv8fjUMLxT6w==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/middleware-serde": 2.0.1 + "@smithy/types": 2.0.2 + "@smithy/url-parser": 2.0.1 + "@smithy/util-middleware": 2.0.0 + tslib: 2.6.0 + dev: false + + /@smithy/middleware-retry@2.0.1: + resolution: + { + integrity: sha512-NKHF4i0gjSyjO6C0ZyjEpNqzGgIu7s8HOK6oT/1Jqws2Q1GynR1xV8XTUs1gKXeaNRzbzKQRewHHmfPwZjOtHA==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/protocol-http": 2.0.1 + "@smithy/service-error-classification": 2.0.0 + "@smithy/types": 2.0.2 + "@smithy/util-middleware": 2.0.0 + "@smithy/util-retry": 2.0.0 + tslib: 2.6.0 + uuid: 8.3.2 + dev: false + + /@smithy/middleware-serde@2.0.1: + resolution: + { + integrity: sha512-uKxPaC6ItH9ZXdpdqNtf8sda7GcU4SPMp0tomq/5lUg9oiMa/Q7+kD35MUrpKaX3IVXVrwEtkjCU9dogZ/RAUA==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/middleware-stack@2.0.0: + resolution: + { + integrity: sha512-31XC1xNF65nlbc16yuh3wwTudmqs6qy4EseQUGF8A/p2m/5wdd/cnXJqpniy/XvXVwkHPz/GwV36HqzHtIKATQ==, + } + engines: { node: ">=14.0.0" } + dependencies: + tslib: 2.6.0 + dev: false + + /@smithy/node-config-provider@2.0.1: + resolution: + { + integrity: sha512-Zoel4CPkKRTQ2XxmozZUfqBYqjPKL53/SvTDhJHj+VBSiJy6MXRav1iDCyFPS92t40Uh+Yi+Km5Ch3hQ+c/zSA==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/property-provider": 2.0.1 + "@smithy/shared-ini-file-loader": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/node-http-handler@2.0.1: + resolution: + { + integrity: sha512-Zv3fxk3p9tsmPT2CKMsbuwbbxnq2gzLDIulxv+yI6aE+02WPYorObbbe9gh7SW3weadMODL1vTfOoJ9yFypDzg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/abort-controller": 2.0.1 + "@smithy/protocol-http": 2.0.1 + "@smithy/querystring-builder": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/property-provider@2.0.1: + resolution: + { + integrity: sha512-pmJRyY9SF6sutWIktIhe+bUdSQDxv/qZ4mYr3/u+u45riTPN7nmRxPo+e4sjWVoM0caKFjRSlj3tf5teRFy0Vg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/protocol-http@2.0.1: + resolution: + { + integrity: sha512-mrkMAp0wtaDEIkgRObWYxI1Kun1tm6Iu6rK+X4utb6Ah7Uc3Kk4VIWwK/rBHdYGReiLIrxFCB1rq4a2gyZnSgg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/querystring-builder@2.0.1: + resolution: + { + integrity: sha512-bp+93WFzx1FojVEIeFPtG0A1pKsFdCUcZvVdZdRlmNooOUrz9Mm9bneRd8hDwAQ37pxiZkCOxopSXXRQN10mYw==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.0.2 + "@smithy/util-uri-escape": 2.0.0 + tslib: 2.6.0 + dev: false + + /@smithy/querystring-parser@2.0.1: + resolution: + { + integrity: sha512-h+e7k1z+IvI2sSbUBG9Aq46JsgLl4UqIUl6aigAlRBj+P6ocNXpM6Yn1vMBw5ijtXeZbYpd1YvCxwDgdw3jhmg==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/service-error-classification@2.0.0: + resolution: + { + integrity: sha512-2z5Nafy1O0cTf69wKyNjGW/sNVMiqDnb4jgwfMG8ye8KnFJ5qmJpDccwIbJNhXIfbsxTg9SEec2oe1cexhMJvw==, + } + engines: { node: ">=14.0.0" } + dev: false + + /@smithy/shared-ini-file-loader@2.0.1: + resolution: + { + integrity: sha512-a463YiZrPGvM+F336rIF8pLfQsHAdCRAn/BiI/EWzg5xLoxbC7GSxIgliDDXrOu0z8gT3nhVsif85eU6jyct3A==, + } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false + + /@smithy/signature-v4@2.0.1: resolution: { - integrity: sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==, + integrity: sha512-jztv5Mirca42ilxmMDjzLdXcoAmRhZskGafGL49sRo5u7swEZcToEFrq6vtX5YMbSyTVrE9Teog5EFexY5Ff2Q==, } - engines: { node: ">=12" } - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/eventstream-codec": 2.0.1 + "@smithy/is-array-buffer": 2.0.0 + "@smithy/types": 2.0.2 + "@smithy/util-hex-encoding": 2.0.0 + "@smithy/util-middleware": 2.0.0 + "@smithy/util-uri-escape": 2.0.0 + "@smithy/util-utf8": 2.0.0 + tslib: 2.6.0 + dev: false - /@esbuild/win32-ia32@0.16.3: + /@smithy/smithy-client@2.0.1: resolution: { - integrity: sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==, + integrity: sha512-LHC5m6tYpEu1iNbONfvMbwtErboyTZJfEIPoD78Ei5MVr36vZQCaCla5mvo36+q/a2NAk2//fA5Rx3I1Kf7+lQ==, } - engines: { node: ">=12" } - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/middleware-stack": 2.0.0 + "@smithy/types": 2.0.2 + "@smithy/util-stream": 2.0.1 + tslib: 2.6.0 + dev: false - /@esbuild/win32-x64@0.16.3: + /@smithy/types@2.0.2: resolution: { - integrity: sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==, + integrity: sha512-wcymEjIXQ9+NEfE5Yt5TInAqe1o4n+Nh+rh00AwoazppmUt8tdo6URhc5gkDcOYrcvlDVAZE7uG69nDpEGUKxw==, } - engines: { node: ">=12" } - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + engines: { node: ">=14.0.0" } + dependencies: + tslib: 2.6.0 + dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): + /@smithy/url-parser@2.0.1: resolution: { - integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, + integrity: sha512-NpHVOAwddo+OyyIoujDL9zGL96piHWrTNXqltWmBvlUoWgt1HPyBuKs6oHjioyFnNZXUqveTOkEEq0U5w6Uv8A==, } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.45.0 - eslint-visitor-keys: 3.4.1 + "@smithy/querystring-parser": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 + dev: false - /@eslint-community/regexpp@4.5.1: + /@smithy/util-base64@2.0.0: resolution: { - integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==, + integrity: sha512-Zb1E4xx+m5Lud8bbeYi5FkcMJMnn+1WUnJF3qD7rAdXpaL7UjkFQLdmW5fHadoKbdHpwH9vSR8EyTJFHJs++tA==, } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/util-buffer-from": 2.0.0 + tslib: 2.6.0 + dev: false - /@eslint/eslintrc@2.1.0: + /@smithy/util-body-length-browser@2.0.0: resolution: { - integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==, + integrity: sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==, } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 9.6.1 - globals: 13.20.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color + tslib: 2.6.0 + dev: false - /@eslint/js@8.44.0: + /@smithy/util-body-length-node@2.0.0: resolution: { - integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==, + integrity: sha512-ZV7Z/WHTMxHJe/xL/56qZwSUcl63/5aaPAGjkfynJm4poILjdD4GmFI+V+YWabh2WJIjwTKZ5PNsuvPQKt93Mg==, } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + engines: { node: ">=14.0.0" } + dependencies: + tslib: 2.6.0 + dev: false - /@humanwhocodes/config-array@0.11.10: + /@smithy/util-buffer-from@2.0.0: resolution: { - integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==, + integrity: sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==, } - engines: { node: ">=10.10.0" } + engines: { node: ">=14.0.0" } dependencies: - "@humanwhocodes/object-schema": 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + "@smithy/is-array-buffer": 2.0.0 + tslib: 2.6.0 + dev: false - /@humanwhocodes/module-importer@1.0.1: + /@smithy/util-config-provider@2.0.0: resolution: { - integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, + integrity: sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==, } - engines: { node: ">=12.22" } + engines: { node: ">=14.0.0" } + dependencies: + tslib: 2.6.0 + dev: false - /@humanwhocodes/object-schema@1.2.1: + /@smithy/util-defaults-mode-browser@2.0.1: resolution: { - integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==, + integrity: sha512-w72Qwsb+IaEYEFtYICn0Do42eFju78hTaBzzJfT107lFOPdbjWjKnFutV+6GL/nZd5HWXY7ccAKka++C3NrjHw==, } + engines: { node: ">= 10.0.0" } + dependencies: + "@smithy/property-provider": 2.0.1 + "@smithy/types": 2.0.2 + bowser: 2.11.0 + tslib: 2.6.0 + dev: false - /@lucia-auth/adapter-prisma@3.0.0(@prisma/client@5.0.0)(lucia@2.0.0): + /@smithy/util-defaults-mode-node@2.0.1: resolution: { - integrity: sha512-qrFA5IID4AulINQbLQLQPIXqE9+M3zjmN558VDhrS3Y7Fdn5dyObPbHijUWw7lGYgOrhxDox9UUG8oyZ3+D1MA==, + integrity: sha512-dNF45caelEBambo0SgkzQ0v76m4YM+aFKZNTtSafy7P5dVF8TbjZuR2UX1A5gJABD9XK6lzN+v/9Yfzj/EDgGg==, } - peerDependencies: - "@prisma/client": ^4.2.0 || ^5.0.0 - lucia: ^2.0.0 + engines: { node: ">= 10.0.0" } dependencies: - "@prisma/client": 5.0.0(prisma@5.1.0) - lucia: 2.0.0 + "@smithy/config-resolver": 2.0.1 + "@smithy/credential-provider-imds": 2.0.1 + "@smithy/node-config-provider": 2.0.1 + "@smithy/property-provider": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 dev: false - /@nodelib/fs.scandir@2.1.5: + /@smithy/util-hex-encoding@2.0.0: resolution: { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + integrity: sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==, } - engines: { node: ">= 8" } + engines: { node: ">=14.0.0" } dependencies: - "@nodelib/fs.stat": 2.0.5 - run-parallel: 1.2.0 + tslib: 2.6.0 + dev: false - /@nodelib/fs.stat@2.0.5: + /@smithy/util-middleware@2.0.0: resolution: { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + integrity: sha512-eCWX4ECuDHn1wuyyDdGdUWnT4OGyIzV0LN1xRttBFMPI9Ff/4heSHVxneyiMtOB//zpXWCha1/SWHJOZstG7kA==, } - engines: { node: ">= 8" } + engines: { node: ">=14.0.0" } + dependencies: + tslib: 2.6.0 + dev: false - /@nodelib/fs.walk@1.2.8: + /@smithy/util-retry@2.0.0: resolution: { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + integrity: sha512-/dvJ8afrElasuiiIttRJeoS2sy8YXpksQwiM/TcepqdRVp7u4ejd9C4IQURHNjlfPUT7Y6lCDSa2zQJbdHhVTg==, } - engines: { node: ">= 8" } + engines: { node: ">= 14.0.0" } dependencies: - "@nodelib/fs.scandir": 2.1.5 - fastq: 1.15.0 + "@smithy/service-error-classification": 2.0.0 + tslib: 2.6.0 + dev: false - /@planetscale/database@1.8.0: + /@smithy/util-stream@2.0.1: resolution: { - integrity: sha512-+zk04eXRiaJGaRnJZkCxXbBtBvQDQJXCoxqlXhLY3HzAovXfsBnh6DjXRujPRQQ7GKtT8/tOlyvZ9h6ReM+GLQ==, + integrity: sha512-2a0IOtwIKC46EEo7E7cxDN8u2jwOiYYJqcFKA6rd5rdXqKakHT2Gc+AqHWngr0IEHUfW92zX12wRQKwyoqZf2Q==, } - engines: { node: ">=16" } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/fetch-http-handler": 2.0.1 + "@smithy/node-http-handler": 2.0.1 + "@smithy/types": 2.0.2 + "@smithy/util-base64": 2.0.0 + "@smithy/util-buffer-from": 2.0.0 + "@smithy/util-hex-encoding": 2.0.0 + "@smithy/util-utf8": 2.0.0 + tslib: 2.6.0 dev: false - /@prisma/client@5.0.0(prisma@5.1.0): + /@smithy/util-uri-escape@2.0.0: resolution: { - integrity: sha512-XlO5ELNAQ7rV4cXIDJUNBEgdLwX3pjtt9Q/RHqDpGf43szpNJx2hJnggfFs7TKNx0cOFsl6KJCSfqr5duEU/bQ==, + integrity: sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==, } - engines: { node: ">=16.13" } - requiresBuild: true - peerDependencies: - prisma: "*" - peerDependenciesMeta: - prisma: - optional: true + engines: { node: ">=14.0.0" } dependencies: - "@prisma/engines-version": 4.17.0-26.6b0aef69b7cdfc787f822ecd7cdc76d5f1991584 - prisma: 5.1.0 + tslib: 2.6.0 dev: false - /@prisma/engines-version@4.17.0-26.6b0aef69b7cdfc787f822ecd7cdc76d5f1991584: + /@smithy/util-utf8@2.0.0: resolution: { - integrity: sha512-HHiUF6NixsldsP3JROq07TYBLEjXFKr6PdH8H4gK/XAoTmIplOJBCgrIUMrsRAnEuGyRoRLXKXWUb943+PFoKQ==, + integrity: sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==, } + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/util-buffer-from": 2.0.0 + tslib: 2.6.0 dev: false - /@prisma/engines@5.1.0: + /@smithy/util-waiter@2.0.1: resolution: { - integrity: sha512-HqaFsnPmZOdMWkPq6tT2eTVTQyaAXEDdKszcZ4yc7DGMBIYRP6j/zAJTtZUG9SsMV8FaucdL5vRyxY/p5Ni28g==, + integrity: sha512-bSyGFicPRYuGFFWAr72UvYI7tE7KmEeFJJ5iaLuTTdo8RGaNBZ2kE25coGtzrejYh9AhwSfckBvbxgEDxIxhlA==, } - requiresBuild: true + engines: { node: ">=14.0.0" } + dependencies: + "@smithy/abort-controller": 2.0.1 + "@smithy/types": 2.0.2 + tslib: 2.6.0 dev: false /@types/json-schema@7.0.12: @@ -748,6 +2033,13 @@ packages: eslint-visitor-keys: 3.4.1 dev: false + /abbrev@1.1.1: + resolution: + { + integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==, + } + dev: false + /acorn-jsx@5.3.2(acorn@8.10.0): resolution: { @@ -835,6 +2127,26 @@ packages: printable-characters: 1.0.42 dev: true + /asynckit@0.4.0: + resolution: + { + integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, + } + dev: false + + /axios@1.4.0: + resolution: + { + integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==, + } + dependencies: + follow-redirects: 1.15.2 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + /balanced-match@1.0.2: resolution: { @@ -894,6 +2206,13 @@ packages: } dev: true + /bowser@2.11.0: + resolution: + { + integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==, + } + dev: false + /brace-expansion@1.1.11: resolution: { @@ -903,6 +2222,15 @@ packages: balanced-match: 1.0.2 concat-map: 0.0.1 + /brace-expansion@2.0.1: + resolution: + { + integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, + } + dependencies: + balanced-match: 1.0.2 + dev: false + /braces@3.0.2: resolution: { @@ -1008,12 +2336,52 @@ packages: integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, } + /combined-stream@1.0.8: + resolution: + { + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, + } + engines: { node: ">= 0.8" } + dependencies: + delayed-stream: 1.0.0 + dev: false + + /commander@10.0.1: + resolution: + { + integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==, + } + engines: { node: ">=14" } + dev: false + /concat-map@0.0.1: resolution: { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, } + /condense-newlines@0.2.1: + resolution: + { + integrity: sha512-P7X+QL9Hb9B/c8HI5BFFKmjgBu2XpQuF98WZ9XkO+dBGgk5XgwiQz7o1SmpglNWId3581UcS0SFAWfoIhMHPfg==, + } + engines: { node: ">=0.10.0" } + dependencies: + extend-shallow: 2.0.1 + is-whitespace: 0.3.0 + kind-of: 3.2.2 + dev: false + + /config-chain@1.1.13: + resolution: + { + integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==, + } + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + dev: false + /cookie@0.5.0: resolution: { @@ -1061,49 +2429,118 @@ packages: } engines: { node: ">=10" } dependencies: - mimic-response: 3.1.0 - dev: true + mimic-response: 3.1.0 + dev: true + + /deep-extend@0.6.0: + resolution: + { + integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==, + } + engines: { node: ">=4.0.0" } + dev: true + + /deep-is@0.1.4: + resolution: + { + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, + } + + /deepmerge@4.3.1: + resolution: + { + integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, + } + engines: { node: ">=0.10.0" } + dev: false + + /delayed-stream@1.0.0: + resolution: + { + integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, + } + engines: { node: ">=0.4.0" } + dev: false + + /detect-libc@2.0.1: + resolution: + { + integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==, + } + engines: { node: ">=8" } + dev: true + + /dir-glob@3.0.1: + resolution: + { + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, + } + engines: { node: ">=8" } + dependencies: + path-type: 4.0.0 + dev: false + + /doctrine@3.0.0: + resolution: + { + integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, + } + engines: { node: ">=6.0.0" } + dependencies: + esutils: 2.0.3 - /deep-extend@0.6.0: + /dom-serializer@2.0.0: resolution: { - integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==, + integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, } - engines: { node: ">=4.0.0" } - dev: true + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: false - /deep-is@0.1.4: + /domelementtype@2.3.0: resolution: { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, + integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, } + dev: false - /detect-libc@2.0.1: + /domhandler@5.0.3: resolution: { - integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==, + integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, } - engines: { node: ">=8" } - dev: true + engines: { node: ">= 4" } + dependencies: + domelementtype: 2.3.0 + dev: false - /dir-glob@3.0.1: + /domutils@3.1.0: resolution: { - integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, + integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==, } - engines: { node: ">=8" } dependencies: - path-type: 4.0.0 + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 dev: false - /doctrine@3.0.0: + /editorconfig@1.0.4: resolution: { - integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, + integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==, } - engines: { node: ">=6.0.0" } + engines: { node: ">=14" } + hasBin: true dependencies: - esutils: 2.0.3 + "@one-ini/wasm": 0.1.1 + commander: 10.0.1 + minimatch: 9.0.1 + semver: 7.5.4 + dev: false /end-of-stream@1.4.4: resolution: @@ -1114,6 +2551,14 @@ packages: once: 1.4.0 dev: true + /entities@4.5.0: + resolution: + { + integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, + } + engines: { node: ">=0.12" } + dev: false + /esbuild@0.16.3: resolution: { @@ -1327,6 +2772,16 @@ packages: engines: { node: ">=6" } dev: true + /extend-shallow@2.0.1: + resolution: + { + integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==, + } + engines: { node: ">=0.10.0" } + dependencies: + is-extendable: 0.1.1 + dev: false + /fast-deep-equal@3.1.3: resolution: { @@ -1359,6 +2814,16 @@ packages: integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, } + /fast-xml-parser@4.2.5: + resolution: + { + integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==, + } + hasBin: true + dependencies: + strnum: 1.0.5 + dev: false + /fastq@1.15.0: resolution: { @@ -1418,6 +2883,31 @@ packages: integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==, } + /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@4.0.0: + resolution: + { + integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, + } + engines: { node: ">= 6" } + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + /fs-constants@1.0.0: resolution: { @@ -1497,6 +2987,20 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 + /glob@8.1.0: + resolution: + { + integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==, + } + engines: { node: ">=12" } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: false + /globals@13.20.0: resolution: { @@ -1541,6 +3045,32 @@ packages: } engines: { node: ">=8" } + /html-to-text@9.0.3: + resolution: + { + integrity: sha512-hxDF1kVCF2uw4VUJ3vr2doc91pXf2D5ngKcNviSitNkhP9OMOaJkDrFIFL6RMvko7NisWTEiqGpQ9LAxcVok1w==, + } + engines: { node: ">=14" } + dependencies: + "@selderee/plugin-htmlparser2": 0.10.0 + deepmerge: 4.3.1 + dom-serializer: 2.0.0 + htmlparser2: 8.0.2 + selderee: 0.10.0 + dev: false + + /htmlparser2@8.0.2: + resolution: + { + integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==, + } + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: false + /http-cache-semantics@4.1.1: resolution: { @@ -1599,7 +3129,6 @@ packages: { integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, } - dev: true /is-binary-path@2.1.0: resolution: @@ -1611,6 +3140,21 @@ packages: binary-extensions: 2.2.0 dev: true + /is-buffer@1.1.6: + resolution: + { + integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==, + } + dev: false + + /is-extendable@0.1.1: + resolution: + { + integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==, + } + engines: { node: ">=0.10.0" } + dev: false + /is-extglob@2.1.1: resolution: { @@ -1641,6 +3185,14 @@ packages: } engines: { node: ">=8" } + /is-whitespace@0.3.0: + resolution: + { + integrity: sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg==, + } + engines: { node: ">=0.10.0" } + dev: false + /isexe@2.0.0: resolution: { @@ -1654,6 +3206,27 @@ packages: } dev: false + /js-beautify@1.14.9: + resolution: + { + integrity: sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg==, + } + engines: { node: ">=12" } + hasBin: true + dependencies: + config-chain: 1.1.13 + editorconfig: 1.0.4 + glob: 8.1.0 + nopt: 6.0.0 + dev: false + + /js-tokens@4.0.0: + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, + } + dev: false + /js-yaml@4.1.0: resolution: { @@ -1682,6 +3255,16 @@ packages: } dev: true + /kind-of@3.2.2: + resolution: + { + integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==, + } + engines: { node: ">=0.10.0" } + dependencies: + is-buffer: 1.1.6 + dev: false + /kleur@4.1.5: resolution: { @@ -1690,6 +3273,13 @@ packages: engines: { node: ">=6" } dev: true + /leac@0.6.0: + resolution: + { + integrity: sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==, + } + dev: false + /levn@0.4.1: resolution: { @@ -1722,6 +3312,16 @@ packages: } dev: true + /loose-envify@1.4.0: + resolution: + { + integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, + } + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false + /lru-cache@6.0.0: resolution: { @@ -1766,6 +3366,24 @@ packages: picomatch: 2.3.1 dev: false + /mime-db@1.52.0: + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, + } + engines: { node: ">= 0.6" } + dev: false + + /mime-types@2.1.35: + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, + } + engines: { node: ">= 0.6" } + dependencies: + mime-db: 1.52.0 + dev: false + /mime@3.0.0: resolution: { @@ -1820,6 +3438,26 @@ packages: dependencies: brace-expansion: 1.1.11 + /minimatch@5.1.6: + resolution: + { + integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==, + } + engines: { node: ">=10" } + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimatch@9.0.1: + resolution: + { + integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==, + } + engines: { node: ">=16 || 14 >=14.17" } + dependencies: + brace-expansion: 2.0.1 + dev: false + /minimist@1.2.8: resolution: { @@ -1895,6 +3533,17 @@ packages: engines: { node: ">= 6.13.0" } dev: true + /nopt@6.0.0: + resolution: + { + integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: false + /normalize-path@3.0.0: resolution: { @@ -1952,6 +3601,16 @@ packages: dependencies: callsites: 3.1.0 + /parseley@0.11.0: + resolution: + { + integrity: sha512-VfcwXlBWgTF+unPcr7yu3HSSA6QUdDaDnrHcytVfj5Z8azAyKBDrYnSIfeSxlrEayndNcLmrXzg+Vxbo6DWRXQ==, + } + dependencies: + leac: 0.6.0 + peberminta: 0.8.0 + dev: false + /path-exists@4.0.0: resolution: { @@ -1988,6 +3647,13 @@ packages: engines: { node: ">=8" } dev: false + /peberminta@0.8.0: + resolution: + { + integrity: sha512-YYEs+eauIjDH5nUEGi18EohWE0nV2QbGTqmxQcqgZ/0g+laPCQmuIqq7EBLVi9uim9zMgfJv0QBZEnQ3uHw/Tw==, + } + dev: false + /picomatch@2.3.1: resolution: { @@ -2033,6 +3699,18 @@ packages: hasBin: true dev: false + /pretty@2.0.0: + resolution: + { + integrity: sha512-G9xUchgTEiNpormdYBl+Pha50gOUovT18IvAe7EYMZ1/f9W/WWMPRn+xI68yXNMUk3QXHDwo/1wV/4NejVNe1w==, + } + engines: { node: ">=0.10.0" } + dependencies: + condense-newlines: 0.2.1 + extend-shallow: 2.0.1 + js-beautify: 1.14.9 + dev: false + /printable-characters@1.0.42: resolution: { @@ -2052,6 +3730,20 @@ packages: "@prisma/engines": 5.1.0 dev: false + /proto-list@1.2.4: + resolution: + { + integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==, + } + dev: false + + /proxy-from-env@1.1.0: + resolution: + { + integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, + } + dev: false + /pump@3.0.0: resolution: { @@ -2096,6 +3788,29 @@ packages: strip-json-comments: 2.0.1 dev: true + /react-dom@18.2.0(react@18.2.0): + resolution: + { + integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==, + } + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + + /react@18.2.0: + resolution: + { + integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==, + } + engines: { node: ">=0.10.0" } + dependencies: + loose-envify: 1.4.0 + dev: false + /readable-stream@3.6.2: resolution: { @@ -2127,6 +3842,19 @@ packages: range-parser: 1.2.1 dev: false + /resend@0.17.2: + resolution: + { + integrity: sha512-lakm76u4MiIDeMF1s2tCmjtksOhwZOs4WcAXkA7aUTvl+63/h+0h6Q6WnkB8RGtj6GakUhQuUkiZshfXgtIrGw==, + } + dependencies: + "@react-email/render": 0.0.7 + axios: 1.4.0 + type-fest: 3.13.0 + transitivePeerDependencies: + - debug + dev: false + /resolve-from@4.0.0: resolution: { @@ -2195,6 +3923,24 @@ packages: } dev: true + /scheduler@0.23.0: + resolution: + { + integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==, + } + dependencies: + loose-envify: 1.4.0 + dev: false + + /selderee@0.10.0: + resolution: + { + integrity: sha512-DEL/RW/f4qLw/NrVg97xKaEBC8IpzIG2fvxnzCp3Z4yk4jQ3MXom+Imav9wApjxX2dfS3eW7x0DXafJr85i39A==, + } + dependencies: + parseley: 0.11.0 + dev: false + /selfsigned@2.1.1: resolution: { @@ -2357,6 +4103,13 @@ packages: } engines: { node: ">=8" } + /strnum@1.0.5: + resolution: + { + integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==, + } + dev: false + /supports-color@7.2.0: resolution: { @@ -2419,12 +4172,18 @@ packages: typescript: 5.1.6 dev: false + /tslib@1.14.1: + resolution: + { + integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, + } + dev: false + /tslib@2.6.0: resolution: { integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==, } - dev: true /tunnel-agent@0.6.0: resolution: @@ -2451,6 +4210,14 @@ packages: } engines: { node: ">=10" } + /type-fest@3.13.0: + resolution: + { + integrity: sha512-Gur3yQGM9qiLNs0KPP7LPgeRbio2QTt4xXouobMCarR0/wyW3F+F/+OWwshg3NG0Adon7uQfSZBpB46NfhoF1A==, + } + engines: { node: ">=14.16" } + dev: false + /typescript@5.1.6: resolution: { @@ -2484,6 +4251,14 @@ packages: } dev: true + /uuid@8.3.2: + resolution: + { + integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==, + } + hasBin: true + dev: false + /vscode-json-languageservice@4.2.1: resolution: { diff --git a/src/lib/auth/lucia.ts b/src/lib/auth/lucia.ts index 01521b1b..2a6c5003 100644 --- a/src/lib/auth/lucia.ts +++ b/src/lib/auth/lucia.ts @@ -14,6 +14,10 @@ export const auth = lucia({ sessionCookie: { expires: false, }, + // csrfProtection: { + // baseDomain: + // allowedSubDomains: + // }, experimental: { debugMode: true, }, diff --git a/src/lib/regex/accountValidation.ts b/src/lib/regex/accountValidation.ts new file mode 100644 index 00000000..80e5abf1 --- /dev/null +++ b/src/lib/regex/accountValidation.ts @@ -0,0 +1,18 @@ +// must have @ and . inside to be considered an email +export function checkEmail(email: string) { + const emailRegex = /\S+@\S+\.\S+/; + return emailRegex.test(email); +} + +// minimum eight characters, at least one uppercase letter, one lowercase letter, one number and one special character +export function checkPassword(password: string) { + const passwordRegex = + /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/; + return passwordRegex.test(password); +} + +// 5 to 16 characters which contain only characters, numeric digits, underscore and first character must be a letter +export function checkUsername(username: string) { + const usernameRegex = /^[a-zA-Z0-9]{5,16}$/; + return usernameRegex.test(username); +} diff --git a/src/lib/resend/email.ts b/src/lib/resend/email.ts new file mode 100644 index 00000000..ea955cd9 --- /dev/null +++ b/src/lib/resend/email.ts @@ -0,0 +1,67 @@ +import { Resend } from "resend"; + +// TODO: use react email w/ tailwind +export const resend = new Resend(""); + +export const sendPasswordResetEmail = async ( + email: string, + link: string, + username: string +) => { + try { + await resend.emails.send({ + from: "Test ", + to: email, + subject: "Password Reset Request", + html: `Password reset for ${username}
Click here to reset your password`, + }); + } catch (error) { + throw new Error("Error sending password reset email."); + } +}; + +export const sendPasswordChangeEmail = async ( + email: string, + username: string +) => { + try { + await resend.emails.send({ + from: "Test ", + to: email, + subject: "Password Updated Confirmation", + html: `Your password for ${username} has been updated.
Wasn't you? Contact us at support@wanderer.moe`, + }); + } catch (error) { + throw new Error("Error sending password change email."); + } +}; + +export const sendEmailChangeEmail = async (email: string, username: string) => { + try { + await resend.emails.send({ + from: "Test ", + to: email, + subject: "Email Change Request", + html: `Your email address for ${username} has been changed.
Wasn't you? Contact us at support@wanderer.moe`, + }); + } catch (error) { + throw new Error("Error sending email change email."); + } +}; + +export const sendEmailConfirmationEmail = async ( + email: string, + link: string, + username: string +) => { + try { + await resend.emails.send({ + from: "Test ", + to: email, + subject: "Email Confirmation", + html: `Email confirmation for ${username}
Click here to confirm your email`, + }); + } catch (error) { + throw new Error("Error sending email confirmation email."); + } +}; diff --git a/src/lib/s3/client.ts b/src/lib/s3/client.ts new file mode 100644 index 00000000..dc941283 --- /dev/null +++ b/src/lib/s3/client.ts @@ -0,0 +1,19 @@ +import { S3Client } from "@aws-sdk/client-s3"; + +const accessKeyId = ""; +const secretAccessKey = ""; +const accountId = ""; + +if (!accessKeyId || !secretAccessKey) + throw new Error("Missing R2 access key or secret key"); + +const S3 = new S3Client({ + region: "auto", + endpoint: `https://${accountId}.r2.cloudflarestorage.com`, + credentials: { + accessKeyId, + secretAccessKey, + }, +}); + +export { S3 }; diff --git a/src/middleware/errorHandler.ts b/src/middleware/errorHandler.ts index 30e7f229..1b5540a2 100644 --- a/src/middleware/errorHandler.ts +++ b/src/middleware/errorHandler.ts @@ -15,6 +15,7 @@ export const errorHandler = error: "500 Internal Server Error", }), { + status: 500, headers: responseHeaders, } );