diff --git a/.nvmrc b/.nvmrc index 02c8b485..f6610cad 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.18.0 +18.18.1 diff --git a/.tool-versions b/.tool-versions index 8f2e342a..117141d3 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1 @@ -nodejs 18.18.0 +nodejs 18.18.1 diff --git a/README.md b/README.md index 8323d750..c56f0345 100644 --- a/README.md +++ b/README.md @@ -98,24 +98,27 @@ Now you can start the application witt `npx cross-env NODE_ENV=dev npm run start --- -## Features covered: +## Whats included - ๐ŸŒ **I18n** - Internationalization -- ๐Ÿงต **Stats** - swagger stats for common server metrics +- ๐Ÿงต **Stats** - Swagger stats for common server metrics - ๐Ÿงต **Poolifier** - threads for cpu extensive tasks -- ๐Ÿ’ฌ **Twilio** - sms support -- ๐Ÿ“ฑ **NestJS** โ€” latest version +- ๐Ÿ’ฌ **Twilio** - SMS support +- ๐Ÿ“ฑ **NestJS** โ€” Latest version - ๐ŸŽ‰ **TypeScript** - Type checking - โš™๏ธ **Dotenv** - Supports environment variables -- ๐Ÿ— **Authentication** - JWT, RSA256, oauth +- ๐Ÿ— **Authentication** - JWT, RSA256, Oauth - ๐Ÿฌ **Authorization** - RBAC with casl - ๐Ÿช **MikroORM** - Database ORM - ๐Ÿช **PostgreSQL** - Open-Source Relational Database - ๐Ÿง  **Configuration** - Single config for all - ๐Ÿ“ƒ **Swagger** - API Documentation - ๐Ÿณ **Docker Compose** - Container Orchestration -- ๐Ÿ” **Helmet** - secure HTTP headers +- ๐Ÿ” **Helmet** - Secure HTTP headers - ๐Ÿ“ **ESLint** โ€” Pluggable JavaScript linter +- โœ… **Commitlint** โ€” Checks if your commit messages meet the conventional commit format. +- ๐Ÿบ **Husky** โ€” Helps you create Git hooks easily. + ## Available Scripts diff --git a/package.json b/package.json index 5a771dab..3be4374f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ultimate-nest", - "version": "1.28.0", + "version": "1.40.0", "description": "NestJS + MikroORM blog example with batteries included", "author": { "email": "roobin.bhandari@gmail.com", @@ -54,8 +54,8 @@ "test:e2e": "jest --config ./test/jest-e2e.json --runInBand --forceExit" }, "dependencies": { - "@aws-sdk/client-s3": "^3.427.0", - "@aws-sdk/client-ses": "^3.427.0", + "@aws-sdk/client-s3": "^3.428.0", + "@aws-sdk/client-ses": "^3.428.0", "@casl/ability": "^6.5.0", "@golevelup/nestjs-rabbitmq": "^4.0.0", "@golevelup/nestjs-stripe": "^0.6.3", @@ -100,7 +100,7 @@ "firebase-admin": "^11.11.0", "handlebars": "^4.7.8", "helmet": "^7.0.0", - "helper-fns": "^2.6.27", + "helper-fns": "^2.6.30", "ioredis": "^5.3.2", "isomorphic-dompurify": "^1.9.0", "joi": "^17.11.0", @@ -139,7 +139,7 @@ "url-minify": "^2.8.4" }, "devDependencies": { - "@firebase/app-compat": "^0.2.19", + "@firebase/app-compat": "^0.2.20", "@firebase/app-types": "^0.9.0", "@golevelup/ts-jest": "^0.4.0", "@mikro-orm/cli": "^5.8.8", @@ -151,7 +151,7 @@ "@rubiin/tsconfig": "^1.1.2", "@sentry/types": "^7.73.0", "@side/jest-runtime": "^1.1.0", - "@swc/core": "^1.3.92", + "@swc/core": "^1.3.93", "@swc/jest": "^0.2.29", "@total-typescript/ts-reset": "^0.5.1", "@types/cache-manager": "^4.0.3", @@ -160,7 +160,7 @@ "@types/jest": "^29.5.5", "@types/mime-types": "^2.1.2", "@types/multer": "^1.4.8", - "@types/node": "^20.8.4", + "@types/node": "^20.8.5", "@types/nodemailer": "^6.4.11", "@types/passport": "^1.0.13", "@types/passport-facebook": "^3.0.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ea019033..c8ab8937 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,11 +6,11 @@ settings: dependencies: '@aws-sdk/client-s3': - specifier: ^3.427.0 - version: 3.427.0 + specifier: ^3.428.0 + version: 3.428.0 '@aws-sdk/client-ses': - specifier: ^3.427.0 - version: 3.427.0 + specifier: ^3.428.0 + version: 3.428.0 '@casl/ability': specifier: ^6.5.0 version: 6.5.0 @@ -144,8 +144,8 @@ dependencies: specifier: ^7.0.0 version: 7.0.0 helper-fns: - specifier: ^2.6.27 - version: 2.6.27 + specifier: ^2.6.30 + version: 2.6.30 ioredis: specifier: ^5.3.2 version: 5.3.2 @@ -257,8 +257,8 @@ dependencies: devDependencies: '@firebase/app-compat': - specifier: ^0.2.19 - version: 0.2.19 + specifier: ^0.2.20 + version: 0.2.20 '@firebase/app-types': specifier: ^0.9.0 version: 0.9.0 @@ -273,7 +273,7 @@ devDependencies: version: 5.8.8(@mikro-orm/core@5.8.8) '@nestjs/cli': specifier: 10.1.18 - version: 10.1.18(@swc/core@1.3.92) + version: 10.1.18(@swc/core@1.3.93) '@nestjs/schematics': specifier: 10.0.2 version: 10.0.2(chokidar@3.5.3)(typescript@5.2.2) @@ -293,11 +293,11 @@ devDependencies: specifier: ^1.1.0 version: 1.1.0(@jest/transform@29.7.0)(jest-runtime@29.7.0)(jest@29.7.0) '@swc/core': - specifier: ^1.3.92 - version: 1.3.92 + specifier: ^1.3.93 + version: 1.3.93 '@swc/jest': specifier: ^0.2.29 - version: 0.2.29(@swc/core@1.3.92) + version: 0.2.29(@swc/core@1.3.93) '@total-typescript/ts-reset': specifier: ^0.5.1 version: 0.5.1 @@ -320,8 +320,8 @@ devDependencies: specifier: ^1.4.8 version: 1.4.8 '@types/node': - specifier: ^20.8.4 - version: 20.8.4 + specifier: ^20.8.5 + version: 20.8.5 '@types/nodemailer': specifier: ^6.4.11 version: 6.4.11 @@ -363,7 +363,7 @@ devDependencies: version: 7.0.3 cz-conventional-changelog: specifier: 3.3.0 - version: 3.3.0(@swc/core@1.3.92) + version: 3.3.0(@swc/core@1.3.93) eslint: specifier: ^8.51.0 version: 8.51.0 @@ -372,7 +372,7 @@ devDependencies: version: 8.0.3 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.8.4)(ts-node@10.9.1) + version: 29.7.0(@types/node@20.8.5)(ts-node@10.9.1) lint-staged: specifier: ^14.0.1 version: 14.0.1 @@ -390,7 +390,7 @@ devDependencies: version: 9.5.0(typescript@5.2.2)(webpack@5.88.2) ts-node: specifier: 10.9.1 - version: 10.9.1(@swc/core@1.3.92)(@types/node@20.8.4)(typescript@5.2.2) + version: 10.9.1(@swc/core@1.3.93)(@types/node@20.8.5)(typescript@5.2.2) tsconfig-paths: specifier: 4.2.0 version: 4.2.0 @@ -399,7 +399,7 @@ devDependencies: version: 5.2.2 webpack: specifier: ^5.88.2 - version: 5.88.2(@swc/core@1.3.92) + version: 5.88.2(@swc/core@1.3.93) webpack-node-externals: specifier: ^3.0.0 version: 3.0.0 @@ -508,7 +508,7 @@ packages: resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.425.0 + '@aws-sdk/types': 3.428.0 tslib: 1.14.1 dev: false @@ -516,7 +516,7 @@ packages: resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.425.0 + '@aws-sdk/types': 3.428.0 tslib: 1.14.1 dev: false @@ -532,7 +532,7 @@ packages: '@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.425.0 + '@aws-sdk/types': 3.428.0 '@aws-sdk/util-locate-window': 3.310.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -545,7 +545,7 @@ packages: '@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.425.0 + '@aws-sdk/types': 3.428.0 '@aws-sdk/util-locate-window': 3.310.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -555,7 +555,7 @@ packages: resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.425.0 + '@aws-sdk/types': 3.428.0 tslib: 1.14.1 dev: false @@ -568,202 +568,202 @@ packages: /@aws-crypto/util@3.0.0: resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} dependencies: - '@aws-sdk/types': 3.425.0 + '@aws-sdk/types': 3.428.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 dev: false - /@aws-sdk/client-s3@3.427.0: - resolution: {integrity: sha512-YKjJ9zgn0oE393HURKgvjNoX6lxUjb+dkTBE1GymFnGCPl6VxQbKXajXWNqUyN+oPPlZ2osEiljPaN0RserUjA==} + /@aws-sdk/client-s3@3.428.0: + resolution: {integrity: sha512-qz4SV0sjeKC/m573Ox0wWhVABhN35cy0zBOvYixtEQNBzQbWefk8luHkNxntyybuLPZz6ChDzU98+EBac5RuRg==} engines: {node: '>=14.0.0'} dependencies: '@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.427.0 - '@aws-sdk/credential-provider-node': 3.427.0 - '@aws-sdk/middleware-bucket-endpoint': 3.425.0 - '@aws-sdk/middleware-expect-continue': 3.425.0 - '@aws-sdk/middleware-flexible-checksums': 3.425.0 - '@aws-sdk/middleware-host-header': 3.425.0 - '@aws-sdk/middleware-location-constraint': 3.425.0 - '@aws-sdk/middleware-logger': 3.425.0 - '@aws-sdk/middleware-recursion-detection': 3.425.0 - '@aws-sdk/middleware-sdk-s3': 3.427.0 - '@aws-sdk/middleware-signing': 3.425.0 - '@aws-sdk/middleware-ssec': 3.425.0 - '@aws-sdk/middleware-user-agent': 3.427.0 - '@aws-sdk/region-config-resolver': 3.425.0 - '@aws-sdk/signature-v4-multi-region': 3.425.0 - '@aws-sdk/types': 3.425.0 - '@aws-sdk/util-endpoints': 3.427.0 - '@aws-sdk/util-user-agent-browser': 3.425.0 - '@aws-sdk/util-user-agent-node': 3.425.0 + '@aws-sdk/client-sts': 3.428.0 + '@aws-sdk/credential-provider-node': 3.428.0 + '@aws-sdk/middleware-bucket-endpoint': 3.428.0 + '@aws-sdk/middleware-expect-continue': 3.428.0 + '@aws-sdk/middleware-flexible-checksums': 3.428.0 + '@aws-sdk/middleware-host-header': 3.428.0 + '@aws-sdk/middleware-location-constraint': 3.428.0 + '@aws-sdk/middleware-logger': 3.428.0 + '@aws-sdk/middleware-recursion-detection': 3.428.0 + '@aws-sdk/middleware-sdk-s3': 3.428.0 + '@aws-sdk/middleware-signing': 3.428.0 + '@aws-sdk/middleware-ssec': 3.428.0 + '@aws-sdk/middleware-user-agent': 3.428.0 + '@aws-sdk/region-config-resolver': 3.428.0 + '@aws-sdk/signature-v4-multi-region': 3.428.0 + '@aws-sdk/types': 3.428.0 + '@aws-sdk/util-endpoints': 3.428.0 + '@aws-sdk/util-user-agent-browser': 3.428.0 + '@aws-sdk/util-user-agent-node': 3.428.0 '@aws-sdk/xml-builder': 3.310.0 - '@smithy/config-resolver': 2.0.11 - '@smithy/eventstream-serde-browser': 2.0.10 - '@smithy/eventstream-serde-config-resolver': 2.0.10 - '@smithy/eventstream-serde-node': 2.0.10 - '@smithy/fetch-http-handler': 2.2.1 - '@smithy/hash-blob-browser': 2.0.10 - '@smithy/hash-node': 2.0.10 - '@smithy/hash-stream-node': 2.0.10 - '@smithy/invalid-dependency': 2.0.10 - '@smithy/md5-js': 2.0.10 - '@smithy/middleware-content-length': 2.0.12 - '@smithy/middleware-endpoint': 2.0.10 - '@smithy/middleware-retry': 2.0.13 - '@smithy/middleware-serde': 2.0.10 - '@smithy/middleware-stack': 2.0.4 - '@smithy/node-config-provider': 2.0.13 - '@smithy/node-http-handler': 2.1.6 - '@smithy/protocol-http': 3.0.6 - '@smithy/smithy-client': 2.1.9 - '@smithy/types': 2.3.4 - '@smithy/url-parser': 2.0.10 + '@smithy/config-resolver': 2.0.14 + '@smithy/eventstream-serde-browser': 2.0.11 + '@smithy/eventstream-serde-config-resolver': 2.0.11 + '@smithy/eventstream-serde-node': 2.0.11 + '@smithy/fetch-http-handler': 2.2.3 + '@smithy/hash-blob-browser': 2.0.11 + '@smithy/hash-node': 2.0.11 + '@smithy/hash-stream-node': 2.0.11 + '@smithy/invalid-dependency': 2.0.11 + '@smithy/md5-js': 2.0.11 + '@smithy/middleware-content-length': 2.0.13 + '@smithy/middleware-endpoint': 2.1.0 + '@smithy/middleware-retry': 2.0.16 + '@smithy/middleware-serde': 2.0.11 + '@smithy/middleware-stack': 2.0.5 + '@smithy/node-config-provider': 2.1.1 + '@smithy/node-http-handler': 2.1.7 + '@smithy/protocol-http': 3.0.7 + '@smithy/smithy-client': 2.1.11 + '@smithy/types': 2.3.5 + '@smithy/url-parser': 2.0.11 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.13 - '@smithy/util-defaults-mode-node': 2.0.15 - '@smithy/util-retry': 2.0.3 - '@smithy/util-stream': 2.0.14 + '@smithy/util-defaults-mode-browser': 2.0.15 + '@smithy/util-defaults-mode-node': 2.0.19 + '@smithy/util-retry': 2.0.4 + '@smithy/util-stream': 2.0.16 '@smithy/util-utf8': 2.0.0 - '@smithy/util-waiter': 2.0.10 + '@smithy/util-waiter': 2.0.11 fast-xml-parser: 4.2.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/client-ses@3.427.0: - resolution: {integrity: sha512-4jZWMiNK3wredVxXGsAt57puuuEYC18AIfaRmm3NRaKdQ3DOOJY6wIB/A5LqfilRPQE2HSNtNk2+dzHKCXa76w==} + /@aws-sdk/client-ses@3.428.0: + resolution: {integrity: sha512-DfihJSz6U9RcauZXuokqxIFYSIBNcoxksmfcvUH8D3FkT2O5E4M6M6Ycuyw37UMoRz7JXOSWUI2rCHvlB6kwVg==} 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.427.0 - '@aws-sdk/credential-provider-node': 3.427.0 - '@aws-sdk/middleware-host-header': 3.425.0 - '@aws-sdk/middleware-logger': 3.425.0 - '@aws-sdk/middleware-recursion-detection': 3.425.0 - '@aws-sdk/middleware-signing': 3.425.0 - '@aws-sdk/middleware-user-agent': 3.427.0 - '@aws-sdk/region-config-resolver': 3.425.0 - '@aws-sdk/types': 3.425.0 - '@aws-sdk/util-endpoints': 3.427.0 - '@aws-sdk/util-user-agent-browser': 3.425.0 - '@aws-sdk/util-user-agent-node': 3.425.0 - '@smithy/config-resolver': 2.0.11 - '@smithy/fetch-http-handler': 2.2.1 - '@smithy/hash-node': 2.0.10 - '@smithy/invalid-dependency': 2.0.10 - '@smithy/middleware-content-length': 2.0.12 - '@smithy/middleware-endpoint': 2.0.10 - '@smithy/middleware-retry': 2.0.13 - '@smithy/middleware-serde': 2.0.10 - '@smithy/middleware-stack': 2.0.4 - '@smithy/node-config-provider': 2.0.13 - '@smithy/node-http-handler': 2.1.6 - '@smithy/protocol-http': 3.0.6 - '@smithy/smithy-client': 2.1.9 - '@smithy/types': 2.3.4 - '@smithy/url-parser': 2.0.10 + '@aws-sdk/client-sts': 3.428.0 + '@aws-sdk/credential-provider-node': 3.428.0 + '@aws-sdk/middleware-host-header': 3.428.0 + '@aws-sdk/middleware-logger': 3.428.0 + '@aws-sdk/middleware-recursion-detection': 3.428.0 + '@aws-sdk/middleware-signing': 3.428.0 + '@aws-sdk/middleware-user-agent': 3.428.0 + '@aws-sdk/region-config-resolver': 3.428.0 + '@aws-sdk/types': 3.428.0 + '@aws-sdk/util-endpoints': 3.428.0 + '@aws-sdk/util-user-agent-browser': 3.428.0 + '@aws-sdk/util-user-agent-node': 3.428.0 + '@smithy/config-resolver': 2.0.14 + '@smithy/fetch-http-handler': 2.2.3 + '@smithy/hash-node': 2.0.11 + '@smithy/invalid-dependency': 2.0.11 + '@smithy/middleware-content-length': 2.0.13 + '@smithy/middleware-endpoint': 2.1.0 + '@smithy/middleware-retry': 2.0.16 + '@smithy/middleware-serde': 2.0.11 + '@smithy/middleware-stack': 2.0.5 + '@smithy/node-config-provider': 2.1.1 + '@smithy/node-http-handler': 2.1.7 + '@smithy/protocol-http': 3.0.7 + '@smithy/smithy-client': 2.1.11 + '@smithy/types': 2.3.5 + '@smithy/url-parser': 2.0.11 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.13 - '@smithy/util-defaults-mode-node': 2.0.15 - '@smithy/util-retry': 2.0.3 + '@smithy/util-defaults-mode-browser': 2.0.15 + '@smithy/util-defaults-mode-node': 2.0.19 + '@smithy/util-retry': 2.0.4 '@smithy/util-utf8': 2.0.0 - '@smithy/util-waiter': 2.0.10 + '@smithy/util-waiter': 2.0.11 fast-xml-parser: 4.2.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/client-sso@3.427.0: - resolution: {integrity: sha512-sFVFEmsQ1rmgYO1SgrOTxE/MTKpeE4hpOkm1WqhLQK7Ij136vXpjCxjH1JYZiHiUzO1wr9t4ex4dlB5J3VS/Xg==} + /@aws-sdk/client-sso@3.428.0: + resolution: {integrity: sha512-6BuY7cd1licnCZTKuI/IK3ycKATIgsG53TuaK1hZcikwUB2Oiu2z6K+aWpmO9mJuJ6qAoE4dLlAy6lBBBkG6yQ==} 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.425.0 - '@aws-sdk/middleware-logger': 3.425.0 - '@aws-sdk/middleware-recursion-detection': 3.425.0 - '@aws-sdk/middleware-user-agent': 3.427.0 - '@aws-sdk/region-config-resolver': 3.425.0 - '@aws-sdk/types': 3.425.0 - '@aws-sdk/util-endpoints': 3.427.0 - '@aws-sdk/util-user-agent-browser': 3.425.0 - '@aws-sdk/util-user-agent-node': 3.425.0 - '@smithy/config-resolver': 2.0.11 - '@smithy/fetch-http-handler': 2.2.1 - '@smithy/hash-node': 2.0.10 - '@smithy/invalid-dependency': 2.0.10 - '@smithy/middleware-content-length': 2.0.12 - '@smithy/middleware-endpoint': 2.0.10 - '@smithy/middleware-retry': 2.0.13 - '@smithy/middleware-serde': 2.0.10 - '@smithy/middleware-stack': 2.0.4 - '@smithy/node-config-provider': 2.0.13 - '@smithy/node-http-handler': 2.1.6 - '@smithy/protocol-http': 3.0.6 - '@smithy/smithy-client': 2.1.9 - '@smithy/types': 2.3.4 - '@smithy/url-parser': 2.0.10 + '@aws-sdk/middleware-host-header': 3.428.0 + '@aws-sdk/middleware-logger': 3.428.0 + '@aws-sdk/middleware-recursion-detection': 3.428.0 + '@aws-sdk/middleware-user-agent': 3.428.0 + '@aws-sdk/region-config-resolver': 3.428.0 + '@aws-sdk/types': 3.428.0 + '@aws-sdk/util-endpoints': 3.428.0 + '@aws-sdk/util-user-agent-browser': 3.428.0 + '@aws-sdk/util-user-agent-node': 3.428.0 + '@smithy/config-resolver': 2.0.14 + '@smithy/fetch-http-handler': 2.2.3 + '@smithy/hash-node': 2.0.11 + '@smithy/invalid-dependency': 2.0.11 + '@smithy/middleware-content-length': 2.0.13 + '@smithy/middleware-endpoint': 2.1.0 + '@smithy/middleware-retry': 2.0.16 + '@smithy/middleware-serde': 2.0.11 + '@smithy/middleware-stack': 2.0.5 + '@smithy/node-config-provider': 2.1.1 + '@smithy/node-http-handler': 2.1.7 + '@smithy/protocol-http': 3.0.7 + '@smithy/smithy-client': 2.1.11 + '@smithy/types': 2.3.5 + '@smithy/url-parser': 2.0.11 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.13 - '@smithy/util-defaults-mode-node': 2.0.15 - '@smithy/util-retry': 2.0.3 + '@smithy/util-defaults-mode-browser': 2.0.15 + '@smithy/util-defaults-mode-node': 2.0.19 + '@smithy/util-retry': 2.0.4 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/client-sts@3.427.0: - resolution: {integrity: sha512-le2wLJKILyWuRfPz2HbyaNtu5kEki+ojUkTqCU6FPDRrqUvEkaaCBH9Awo/2AtrCfRkiobop8RuTTj6cAnpiJg==} + /@aws-sdk/client-sts@3.428.0: + resolution: {integrity: sha512-ko9hgmIkS5FNPYtT3pntGGmp+yi+VXBEgePUBoplEKjCxsX/aTgFcq2Rs9duD9/CzkThd42Z0l0fWsVAErVxWQ==} 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.427.0 - '@aws-sdk/middleware-host-header': 3.425.0 - '@aws-sdk/middleware-logger': 3.425.0 - '@aws-sdk/middleware-recursion-detection': 3.425.0 - '@aws-sdk/middleware-sdk-sts': 3.425.0 - '@aws-sdk/middleware-signing': 3.425.0 - '@aws-sdk/middleware-user-agent': 3.427.0 - '@aws-sdk/region-config-resolver': 3.425.0 - '@aws-sdk/types': 3.425.0 - '@aws-sdk/util-endpoints': 3.427.0 - '@aws-sdk/util-user-agent-browser': 3.425.0 - '@aws-sdk/util-user-agent-node': 3.425.0 - '@smithy/config-resolver': 2.0.11 - '@smithy/fetch-http-handler': 2.2.1 - '@smithy/hash-node': 2.0.10 - '@smithy/invalid-dependency': 2.0.10 - '@smithy/middleware-content-length': 2.0.12 - '@smithy/middleware-endpoint': 2.0.10 - '@smithy/middleware-retry': 2.0.13 - '@smithy/middleware-serde': 2.0.10 - '@smithy/middleware-stack': 2.0.4 - '@smithy/node-config-provider': 2.0.13 - '@smithy/node-http-handler': 2.1.6 - '@smithy/protocol-http': 3.0.6 - '@smithy/smithy-client': 2.1.9 - '@smithy/types': 2.3.4 - '@smithy/url-parser': 2.0.10 + '@aws-sdk/credential-provider-node': 3.428.0 + '@aws-sdk/middleware-host-header': 3.428.0 + '@aws-sdk/middleware-logger': 3.428.0 + '@aws-sdk/middleware-recursion-detection': 3.428.0 + '@aws-sdk/middleware-sdk-sts': 3.428.0 + '@aws-sdk/middleware-signing': 3.428.0 + '@aws-sdk/middleware-user-agent': 3.428.0 + '@aws-sdk/region-config-resolver': 3.428.0 + '@aws-sdk/types': 3.428.0 + '@aws-sdk/util-endpoints': 3.428.0 + '@aws-sdk/util-user-agent-browser': 3.428.0 + '@aws-sdk/util-user-agent-node': 3.428.0 + '@smithy/config-resolver': 2.0.14 + '@smithy/fetch-http-handler': 2.2.3 + '@smithy/hash-node': 2.0.11 + '@smithy/invalid-dependency': 2.0.11 + '@smithy/middleware-content-length': 2.0.13 + '@smithy/middleware-endpoint': 2.1.0 + '@smithy/middleware-retry': 2.0.16 + '@smithy/middleware-serde': 2.0.11 + '@smithy/middleware-stack': 2.0.5 + '@smithy/node-config-provider': 2.1.1 + '@smithy/node-http-handler': 2.1.7 + '@smithy/protocol-http': 3.0.7 + '@smithy/smithy-client': 2.1.11 + '@smithy/types': 2.3.5 + '@smithy/url-parser': 2.0.11 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.13 - '@smithy/util-defaults-mode-node': 2.0.15 - '@smithy/util-retry': 2.0.3 + '@smithy/util-defaults-mode-browser': 2.0.15 + '@smithy/util-defaults-mode-node': 2.0.19 + '@smithy/util-retry': 2.0.4 '@smithy/util-utf8': 2.0.0 fast-xml-parser: 4.2.5 tslib: 2.6.2 @@ -771,289 +771,289 @@ packages: - aws-crt dev: false - /@aws-sdk/credential-provider-env@3.425.0: - resolution: {integrity: sha512-J20etnLvMKXRVi5FK4F8yOCNm2RTaQn5psQTGdDEPWJNGxohcSpzzls8U2KcMyUJ+vItlrThr4qwgpHG3i/N0w==} + /@aws-sdk/credential-provider-env@3.428.0: + resolution: {integrity: sha512-e6fbY174Idzw0r5ZMT1qkDh+dpOp1DX3ickhr7J6ipo3cUGLI45Y5lnR9nYXWfB5o/wiNv4zXgN+Y3ORJJHzyA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/property-provider': 2.0.11 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.428.0 + '@smithy/property-provider': 2.0.12 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-ini@3.427.0: - resolution: {integrity: sha512-NmH1cO/w98CKMltYec3IrJIIco19wRjATFNiw83c+FGXZ+InJwReqBnruxIOmKTx2KDzd6fwU1HOewS7UjaaaQ==} + /@aws-sdk/credential-provider-ini@3.428.0: + resolution: {integrity: sha512-JPc0pVAsP8fOfMxhmPhp7PjddqHaPGBwgVI+wgbkFRUDOmeKCVhoxCB8Womx0R07qRqD5ZCUKBS2NHQ2b3MFRQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.425.0 - '@aws-sdk/credential-provider-process': 3.425.0 - '@aws-sdk/credential-provider-sso': 3.427.0 - '@aws-sdk/credential-provider-web-identity': 3.425.0 - '@aws-sdk/types': 3.425.0 - '@smithy/credential-provider-imds': 2.0.13 - '@smithy/property-provider': 2.0.11 - '@smithy/shared-ini-file-loader': 2.0.12 - '@smithy/types': 2.3.4 + '@aws-sdk/credential-provider-env': 3.428.0 + '@aws-sdk/credential-provider-process': 3.428.0 + '@aws-sdk/credential-provider-sso': 3.428.0 + '@aws-sdk/credential-provider-web-identity': 3.428.0 + '@aws-sdk/types': 3.428.0 + '@smithy/credential-provider-imds': 2.0.16 + '@smithy/property-provider': 2.0.12 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/credential-provider-node@3.427.0: - resolution: {integrity: sha512-wYYbQ57nKL8OfgRbl8k6uXcdnYml+p3LSSfDUAuUEp1HKlQ8lOXFJ3BdLr5qrk7LhpyppSRnWBmh2c3kWa7ANQ==} + /@aws-sdk/credential-provider-node@3.428.0: + resolution: {integrity: sha512-o8toLXf6/sklBpw2e1mzAUq6SvXQzT6iag7Xbg9E0Z2EgVeXLTnWeVto3ilU3cmhTHXBp6wprwUUq2jbjTxMcg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.425.0 - '@aws-sdk/credential-provider-ini': 3.427.0 - '@aws-sdk/credential-provider-process': 3.425.0 - '@aws-sdk/credential-provider-sso': 3.427.0 - '@aws-sdk/credential-provider-web-identity': 3.425.0 - '@aws-sdk/types': 3.425.0 - '@smithy/credential-provider-imds': 2.0.13 - '@smithy/property-provider': 2.0.11 - '@smithy/shared-ini-file-loader': 2.0.12 - '@smithy/types': 2.3.4 + '@aws-sdk/credential-provider-env': 3.428.0 + '@aws-sdk/credential-provider-ini': 3.428.0 + '@aws-sdk/credential-provider-process': 3.428.0 + '@aws-sdk/credential-provider-sso': 3.428.0 + '@aws-sdk/credential-provider-web-identity': 3.428.0 + '@aws-sdk/types': 3.428.0 + '@smithy/credential-provider-imds': 2.0.16 + '@smithy/property-provider': 2.0.12 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/credential-provider-process@3.425.0: - resolution: {integrity: sha512-YY6tkLdvtb1Fgofp3b1UWO+5vwS14LJ/smGmuGpSba0V7gFJRdcrJ9bcb9vVgAGuMdjzRJ+bUKlLLtqXkaykEw==} + /@aws-sdk/credential-provider-process@3.428.0: + resolution: {integrity: sha512-UG2S2/4Wrskbkbgt9fBlnzwQ2hfTXvLJwUgGOluSOf6+mGCcoDku4zzc9EQdk1MwN5Us+ziyMrIMNY5sbdLg6g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/property-provider': 2.0.11 - '@smithy/shared-ini-file-loader': 2.0.12 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.428.0 + '@smithy/property-provider': 2.0.12 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-sso@3.427.0: - resolution: {integrity: sha512-c+tXyS/i49erHs4bAp6vKNYeYlyQ0VNMBgoco0LCn1rL0REtHbfhWMnqDLF6c2n3yIWDOTrQu0D73Idnpy16eA==} + /@aws-sdk/credential-provider-sso@3.428.0: + resolution: {integrity: sha512-sW2+kSlICSNntsNhLV5apqJkIOXH5hFISCjwVfyB9JXJQDAj8rzkiFfRsKwQ3aTlTYCysrGesIn46+GRP5AgZw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso': 3.427.0 - '@aws-sdk/token-providers': 3.427.0 - '@aws-sdk/types': 3.425.0 - '@smithy/property-provider': 2.0.11 - '@smithy/shared-ini-file-loader': 2.0.12 - '@smithy/types': 2.3.4 + '@aws-sdk/client-sso': 3.428.0 + '@aws-sdk/token-providers': 3.428.0 + '@aws-sdk/types': 3.428.0 + '@smithy/property-provider': 2.0.12 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/credential-provider-web-identity@3.425.0: - resolution: {integrity: sha512-/0R65TgRzL01JU3SzloivWNwdkbIhr06uY/F5pBHf/DynQqaspKNfdHn6AiozgSVDfwRHFjKBTUy6wvf3QFkuA==} + /@aws-sdk/credential-provider-web-identity@3.428.0: + resolution: {integrity: sha512-ueuUPPlrJFvtDUVTGnClUGt1wxCbEiKArknah/w9cfcc/c1HtFd/M7x/z2Sm0gSItR45sVcK54qjzmhm29DMzg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/property-provider': 2.0.11 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.428.0 + '@smithy/property-provider': 2.0.12 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-bucket-endpoint@3.425.0: - resolution: {integrity: sha512-7UTfA10fmDw9cgHLApxRUNPywZTG4S/1TNZgTxndO/1OM9ZHtIatw1iLbqJD35gHrpEYI8Vo14YvcnD2ITuiMw==} + /@aws-sdk/middleware-bucket-endpoint@3.428.0: + resolution: {integrity: sha512-xZ/o6E7icVVTFlOLBKrIQJqFToL0KmWEGLFcaHhgCNz5gppEK2iGH9GondQotQPesiEyi46HwzM6GLNRylELww==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 + '@aws-sdk/types': 3.428.0 '@aws-sdk/util-arn-parser': 3.310.0 - '@smithy/node-config-provider': 2.0.13 - '@smithy/protocol-http': 3.0.6 - '@smithy/types': 2.3.4 + '@smithy/node-config-provider': 2.1.1 + '@smithy/protocol-http': 3.0.7 + '@smithy/types': 2.3.5 '@smithy/util-config-provider': 2.0.0 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-expect-continue@3.425.0: - resolution: {integrity: sha512-CqAmnDST2o7+sKKw2/ffHKiYKE+jZb/Ce9U0P//ZYzqp9R1Wb016ID+W6DoxufyPJAS9dpRMcUDnAssmMIC/EA==} + /@aws-sdk/middleware-expect-continue@3.428.0: + resolution: {integrity: sha512-d/vWUs9RD4fuO1oi7gJby6aEPb6XTf2+jCbrs/hUEYFMxQu7wwQx2c6BWAjfQca8zVadh7FY0cDNtL2Ep2d8zA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/protocol-http': 3.0.6 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.428.0 + '@smithy/protocol-http': 3.0.7 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-flexible-checksums@3.425.0: - resolution: {integrity: sha512-BDwn2vVVsC/AzmHXQlaZhEpKXL7GfKFpH7ZFccZuwEQBcyn8lVCcwtfaRe5P1mEe2wklVzOXd1dw8bt0+BOUPA==} + /@aws-sdk/middleware-flexible-checksums@3.428.0: + resolution: {integrity: sha512-O54XmBSvi9A6ZBRVSYrEvoGH1BjtR1TT8042gOdJgouI0OVWtjqHT2ZPVTbQ/rKW5QeLXszVloXFW6eqOwrVTg==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/crc32': 3.0.0 '@aws-crypto/crc32c': 3.0.0 - '@aws-sdk/types': 3.425.0 + '@aws-sdk/types': 3.428.0 '@smithy/is-array-buffer': 2.0.0 - '@smithy/protocol-http': 3.0.6 - '@smithy/types': 2.3.4 + '@smithy/protocol-http': 3.0.7 + '@smithy/types': 2.3.5 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-host-header@3.425.0: - resolution: {integrity: sha512-E5Gt41LObQ+cr8QnLthwsH3MtVSNXy1AKJMowDr85h0vzqA/FHUkgHyOGntgozzjXT5M0MaSRYxS0xwTR5D4Ew==} + /@aws-sdk/middleware-host-header@3.428.0: + resolution: {integrity: sha512-iIHbW5Ym60ol9Q6vsLnaiNdeUIa9DA0OuoOe9LiHC8SYUYVAAhE+xJXUhn1qk/J7z+4qGOkDnVyEvnSaqRPL/w==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/protocol-http': 3.0.6 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.428.0 + '@smithy/protocol-http': 3.0.7 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-location-constraint@3.425.0: - resolution: {integrity: sha512-3rt0LpGmL1LCRFuEObS1yERd9OEV+AEIAvhY7b53M7u7SyrjWQtpntWkI365L/QljhgMXQBfps2qO4JtrhQnsA==} + /@aws-sdk/middleware-location-constraint@3.428.0: + resolution: {integrity: sha512-2YvAhkdzMITTc2fVIH7FS5Hqa7AuoHBg92W0CzPOiKBkC0D6m5hw8o5Z5RnH/M9ki2eB4dn+7uB6p7Lgs+VFdw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.428.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-logger@3.425.0: - resolution: {integrity: sha512-INE9XWRXx2f4a/r2vOU0tAmgctVp7nEaEasemNtVBYhqbKLZvr9ndLBSgKGgJ8LIcXAoISipaMuFiqIGkFsm7A==} + /@aws-sdk/middleware-logger@3.428.0: + resolution: {integrity: sha512-1P0V0quL9u2amdNOn6yYT7/ToQUmkLJqCKHPxsRyDB829vBThWndvvH5MkoItj/VgE1zWqMtrzN3xtzD7zx6Qg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.428.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-recursion-detection@3.425.0: - resolution: {integrity: sha512-77gnzJ5b91bgD75L/ugpOyerx6lR3oyS4080X1YI58EzdyBMkDrHM4FbMcY2RynETi3lwXCFzLRyZjWXY1mRlw==} + /@aws-sdk/middleware-recursion-detection@3.428.0: + resolution: {integrity: sha512-xC0OMduCByyRdiQz324RXy4kunnCG4LUJCfvdoegM33Elp9ex0D3fcfO1mUgV8qiLwSennIsSRVXHuhNxE2HZA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/protocol-http': 3.0.6 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.428.0 + '@smithy/protocol-http': 3.0.7 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-sdk-s3@3.427.0: - resolution: {integrity: sha512-virGCf9vsqYCLpmngLOZOVSYgVr2cCOCvTuRoT9vf5tD/63JwaC173jnbdoJO6CWI7ID5Iz0eNdgITXVQ2mpew==} + /@aws-sdk/middleware-sdk-s3@3.428.0: + resolution: {integrity: sha512-C9hJlzMGlDeVNn91TvC6lsTplnH4hFPM2kiuMha5A/EXPPOg9c5vFH5awL3ubEiIUPwwDu3d583hvsPd6G3qxA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 + '@aws-sdk/types': 3.428.0 '@aws-sdk/util-arn-parser': 3.310.0 - '@smithy/protocol-http': 3.0.6 - '@smithy/smithy-client': 2.1.9 - '@smithy/types': 2.3.4 + '@smithy/protocol-http': 3.0.7 + '@smithy/smithy-client': 2.1.11 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-sdk-sts@3.425.0: - resolution: {integrity: sha512-JFojrg76oKAoBknnr9EL5N2aJ1mRCtBqXoZYST58GSx8uYdFQ89qS65VNQ8JviBXzsrCNAn4vDhZ5Ch5E6TxGQ==} + /@aws-sdk/middleware-sdk-sts@3.428.0: + resolution: {integrity: sha512-Uutl2niYXTnNP8v84v6umWDHD5no7d5/OqkZE1DsmeKR/dje90J5unJWf7MOsqvYm0JGDEWF4lk9xGVyqsw+Aw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-signing': 3.425.0 - '@aws-sdk/types': 3.425.0 - '@smithy/types': 2.3.4 + '@aws-sdk/middleware-signing': 3.428.0 + '@aws-sdk/types': 3.428.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-signing@3.425.0: - resolution: {integrity: sha512-ZpOfgJHk7ovQ0sSwg3tU4NxFOnz53lJlkJRf7S+wxQALHM0P2MJ6LYBrZaFMVsKiJxNIdZBXD6jclgHg72ZW6Q==} + /@aws-sdk/middleware-signing@3.428.0: + resolution: {integrity: sha512-oMSerTPwtsQAR7fIU/G0b0BA30wF+MC4gZSrJjbypF8MK8nPC2yMfKLR8+QavGOGEW7rUMQ0uklThMTTwQEXNQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/property-provider': 2.0.11 - '@smithy/protocol-http': 3.0.6 - '@smithy/signature-v4': 2.0.10 - '@smithy/types': 2.3.4 - '@smithy/util-middleware': 2.0.3 + '@aws-sdk/types': 3.428.0 + '@smithy/property-provider': 2.0.12 + '@smithy/protocol-http': 3.0.7 + '@smithy/signature-v4': 2.0.11 + '@smithy/types': 2.3.5 + '@smithy/util-middleware': 2.0.4 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-ssec@3.425.0: - resolution: {integrity: sha512-9HTuXnHYAZWkwPC8x9tElsQjFPxDT//orbIFauS7VF5HkLCKn9J6O6lW1wKMxrEnDwfN/Vi3nw479MoPj5Ss0Q==} + /@aws-sdk/middleware-ssec@3.428.0: + resolution: {integrity: sha512-QPKisAErRHFoopmdFhgOmjZPcUM6rvWCtnoEY4Sw9F0aIyK6yCTn+nB5j+3FAPvUvblE22srM6aow8TcGx1gjA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.428.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-user-agent@3.427.0: - resolution: {integrity: sha512-y9HxYsNvnA3KqDl8w1jHeCwz4P9CuBEtu/G+KYffLeAMBsMZmh4SIkFFCO9wE/dyYg6+yo07rYcnnIfy7WA0bw==} + /@aws-sdk/middleware-user-agent@3.428.0: + resolution: {integrity: sha512-+GAhObeHRick2D5jr3YkPckjcggt5v6uUVtEUQW2AdD65cE5PjIvmksv6FuM/mME/9nNA+wufQnHbLI8teLeaw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 - '@aws-sdk/util-endpoints': 3.427.0 - '@smithy/protocol-http': 3.0.6 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.428.0 + '@aws-sdk/util-endpoints': 3.428.0 + '@smithy/protocol-http': 3.0.7 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@aws-sdk/region-config-resolver@3.425.0: - resolution: {integrity: sha512-u7uv/iUOapIJdRgRkO3wnpYsUgV6ponsZJQgVg/8L+n+Vo5PQL5gAcIuAOwcYSKQPFaeK+KbmByI4SyOK203Vw==} + /@aws-sdk/region-config-resolver@3.428.0: + resolution: {integrity: sha512-VqyHZ/Hoz3WrXXMx8cAhFBl8IpjodbRsTjBI117QPq1YRCegxNdGvqmGZnJj8N2Ef9MP1iU30ZWQB+sviDcogA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/node-config-provider': 2.0.13 - '@smithy/types': 2.3.4 + '@smithy/node-config-provider': 2.1.1 + '@smithy/types': 2.3.5 '@smithy/util-config-provider': 2.0.0 - '@smithy/util-middleware': 2.0.3 + '@smithy/util-middleware': 2.0.4 tslib: 2.6.2 dev: false - /@aws-sdk/signature-v4-multi-region@3.425.0: - resolution: {integrity: sha512-7n2FRPE9rLaVa26xXQJ8TExrt53dWN824axQd1a0r5va0SmMQYG/iV5LBmwUlAntUSq46Lse4Q5YnbOVedGOmw==} + /@aws-sdk/signature-v4-multi-region@3.428.0: + resolution: {integrity: sha512-ImuontXK1vEHtxK+qiPVfLTk/+bKSwYqrVkE2/o5rnsqD78/wySzTn5RnkA73Nb+UL4qSd0dkOcuubEee2aUpQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/protocol-http': 3.0.6 - '@smithy/signature-v4': 2.0.10 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.428.0 + '@smithy/protocol-http': 3.0.7 + '@smithy/signature-v4': 2.0.11 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@aws-sdk/token-providers@3.427.0: - resolution: {integrity: sha512-4E5E+4p8lJ69PBY400dJXF06LUHYx5lkKzBEsYqWWhoZcoftrvi24ltIhUDoGVLkrLcTHZIWSdFAWSos4hXqeg==} + /@aws-sdk/token-providers@3.428.0: + resolution: {integrity: sha512-Jciofr//rB1v1FLxADkXoHOCmYyiv2HVNlOq3z5Zkch9ipItOfD6X7f4G4n+IZzElIFzwe4OKoBtJfcnnfo3Pg==} 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.425.0 - '@aws-sdk/middleware-logger': 3.425.0 - '@aws-sdk/middleware-recursion-detection': 3.425.0 - '@aws-sdk/middleware-user-agent': 3.427.0 - '@aws-sdk/types': 3.425.0 - '@aws-sdk/util-endpoints': 3.427.0 - '@aws-sdk/util-user-agent-browser': 3.425.0 - '@aws-sdk/util-user-agent-node': 3.425.0 - '@smithy/config-resolver': 2.0.11 - '@smithy/fetch-http-handler': 2.2.1 - '@smithy/hash-node': 2.0.10 - '@smithy/invalid-dependency': 2.0.10 - '@smithy/middleware-content-length': 2.0.12 - '@smithy/middleware-endpoint': 2.0.10 - '@smithy/middleware-retry': 2.0.13 - '@smithy/middleware-serde': 2.0.10 - '@smithy/middleware-stack': 2.0.4 - '@smithy/node-config-provider': 2.0.13 - '@smithy/node-http-handler': 2.1.6 - '@smithy/property-provider': 2.0.11 - '@smithy/protocol-http': 3.0.6 - '@smithy/shared-ini-file-loader': 2.0.12 - '@smithy/smithy-client': 2.1.9 - '@smithy/types': 2.3.4 - '@smithy/url-parser': 2.0.10 + '@aws-sdk/middleware-host-header': 3.428.0 + '@aws-sdk/middleware-logger': 3.428.0 + '@aws-sdk/middleware-recursion-detection': 3.428.0 + '@aws-sdk/middleware-user-agent': 3.428.0 + '@aws-sdk/types': 3.428.0 + '@aws-sdk/util-endpoints': 3.428.0 + '@aws-sdk/util-user-agent-browser': 3.428.0 + '@aws-sdk/util-user-agent-node': 3.428.0 + '@smithy/config-resolver': 2.0.14 + '@smithy/fetch-http-handler': 2.2.3 + '@smithy/hash-node': 2.0.11 + '@smithy/invalid-dependency': 2.0.11 + '@smithy/middleware-content-length': 2.0.13 + '@smithy/middleware-endpoint': 2.1.0 + '@smithy/middleware-retry': 2.0.16 + '@smithy/middleware-serde': 2.0.11 + '@smithy/middleware-stack': 2.0.5 + '@smithy/node-config-provider': 2.1.1 + '@smithy/node-http-handler': 2.1.7 + '@smithy/property-provider': 2.0.12 + '@smithy/protocol-http': 3.0.7 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/smithy-client': 2.1.11 + '@smithy/types': 2.3.5 + '@smithy/url-parser': 2.0.11 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.13 - '@smithy/util-defaults-mode-node': 2.0.15 - '@smithy/util-retry': 2.0.3 + '@smithy/util-defaults-mode-browser': 2.0.15 + '@smithy/util-defaults-mode-node': 2.0.19 + '@smithy/util-retry': 2.0.4 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/types@3.425.0: - resolution: {integrity: sha512-6lqbmorwerN4v+J5dqbHPAsjynI0mkEF+blf+69QTaKKGaxBBVaXgqoqul9RXYcK5MMrrYRbQIMd0zYOoy90kA==} + /@aws-sdk/types@3.428.0: + resolution: {integrity: sha512-4T0Ps2spjg3qbWE6ZK13Vd3FnzpfliaiotqjxUK5YhjDrKXeT36HJp46JhDupElQuHtTkpdiJOSYk2lvY2H4IA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false @@ -1064,12 +1064,11 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/util-endpoints@3.427.0: - resolution: {integrity: sha512-rSyiAIFF/EVvity/+LWUqoTMJ0a25RAc9iqx0WZ4tf1UjuEXRRXxZEb+jEZg1bk+pY84gdLdx9z5E+MSJCZxNQ==} + /@aws-sdk/util-endpoints@3.428.0: + resolution: {integrity: sha512-ToKMhYlUWJ0YrbggpJLZeyZZNDXtQ4NITxqo/oeGltTT9KG4o/LqVY59EveV0f8P32ObDyj9Vh1mnjxeo3DxGw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/node-config-provider': 2.0.13 + '@aws-sdk/types': 3.428.0 tslib: 2.6.2 dev: false @@ -1080,17 +1079,17 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/util-user-agent-browser@3.425.0: - resolution: {integrity: sha512-22Y9iMtjGcFjGILR6/xdp1qRezlHVLyXtnpEsbuPTiernRCPk6zfAnK/ATH77r02MUjU057tdxVkd5umUBTn9Q==} + /@aws-sdk/util-user-agent-browser@3.428.0: + resolution: {integrity: sha512-qlc2UoGsmCpuh1ErY3VayZuAGl74TWWcLmhhQMkeByFSb6KooBlwOmDpDzJRtgwJoe0KXnyHBO6lzl9iczcozg==} dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.428.0 + '@smithy/types': 2.3.5 bowser: 2.11.0 tslib: 2.6.2 dev: false - /@aws-sdk/util-user-agent-node@3.425.0: - resolution: {integrity: sha512-SIR4F5uQeeVAi8lv4OgRirtdtNi5zeyogTuQgGi9su8F/WP1N6JqxofcwpUY5f8/oJ2UlXr/tx1f09UHfJJzvA==} + /@aws-sdk/util-user-agent-node@3.428.0: + resolution: {integrity: sha512-s721C3H8TkNd0usWLPEAy7yW2lEglR8QAYojdQGzE0e0wymc671nZAFePSZFRtmqZiFOSfk0R602L5fDbP3a8Q==} engines: {node: '>=14.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -1098,9 +1097,9 @@ packages: aws-crt: optional: true dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/node-config-provider': 2.0.13 - '@smithy/types': 2.3.4 + '@aws-sdk/types': 3.428.0 + '@smithy/node-config-provider': 2.1.1 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false @@ -1124,24 +1123,24 @@ packages: '@babel/highlight': 7.22.20 chalk: 2.4.2 - /@babel/compat-data@7.22.20: - resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==} + /@babel/compat-data@7.23.2: + resolution: {integrity: sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.23.0: - resolution: {integrity: sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==} + /@babel/core@7.23.2: + resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.22.13 '@babel/generator': 7.23.0 '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.0) - '@babel/helpers': 7.23.1 + '@babel/helper-module-transforms': 7.23.0(@babel/core@7.23.2) + '@babel/helpers': 7.23.2 '@babel/parser': 7.23.0 '@babel/template': 7.22.15 - '@babel/traverse': 7.23.0 + '@babel/traverse': 7.23.2 '@babel/types': 7.23.0 convert-source-map: 2.0.0 debug: 4.3.4 @@ -1166,7 +1165,7 @@ packages: resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.22.20 + '@babel/compat-data': 7.23.2 '@babel/helper-validator-option': 7.22.15 browserslist: 4.22.1 lru-cache: 5.1.1 @@ -1200,13 +1199,13 @@ packages: '@babel/types': 7.23.0 dev: true - /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.0): + /@babel/helper-module-transforms@7.23.0(@babel/core@7.23.2): resolution: {integrity: sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -1246,12 +1245,12 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helpers@7.23.1: - resolution: {integrity: sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==} + /@babel/helpers@7.23.2: + resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 - '@babel/traverse': 7.23.0 + '@babel/traverse': 7.23.2 '@babel/types': 7.23.0 transitivePeerDependencies: - supports-color @@ -1272,137 +1271,137 @@ packages: dependencies: '@babel/types': 7.23.0 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.0): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.0): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.0): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.0): + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.0): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.0): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.0): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.0): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.0): + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.23.2): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/runtime@7.23.1: - resolution: {integrity: sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==} + /@babel/runtime@7.23.2: + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 @@ -1417,8 +1416,8 @@ packages: '@babel/types': 7.23.0 dev: true - /@babel/traverse@7.23.0: - resolution: {integrity: sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==} + /@babel/traverse@7.23.2: + resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.22.13 @@ -1477,7 +1476,7 @@ packages: dev: true optional: true - /@commitlint/load@17.7.2(@swc/core@1.3.92): + /@commitlint/load@17.7.2(@swc/core@1.3.93): resolution: {integrity: sha512-XA7WTnsjHZ4YH6ZYsrnxgLdXzriwMMq+utZUET6spbOEEIPBCDLdOQXS26P+v3TTO4hUHOEhzUquaBv3jbBixw==} engines: {node: '>=v14'} requiresBuild: true @@ -1494,7 +1493,7 @@ packages: lodash.merge: 4.6.2 lodash.uniq: 4.5.0 resolve-from: 5.0.0 - ts-node: 10.9.1(@swc/core@1.3.92)(@types/node@20.5.1)(typescript@5.2.2) + ts-node: 10.9.1(@swc/core@1.3.93)(@types/node@20.5.1)(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - '@swc/core' @@ -1761,7 +1760,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.22.0 + globals: 13.23.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -1797,10 +1796,10 @@ packages: resolution: {integrity: sha512-wI3fpfDT0t7p8E6dA2eTECzzOd+bZsZCJ2Hcv+Onn2b7ZwK3RwD27uW2QDaMtQhAfWQQP+WNK7nKf0twLsBf9w==} dev: true - /@firebase/app-compat@0.2.19: - resolution: {integrity: sha512-QkJDqYqjhvs4fTMcRVXQkP9hbo5yfoJXDWkhU4VA5Vzs8Qsp76VPzYbqx5SD5OmBy+bz/Ot1UV8qySPGI4aKuw==} + /@firebase/app-compat@0.2.20: + resolution: {integrity: sha512-FXgdjgwUruLMZMh0HDwLmbcu2ImckT10HPdXZyzIJoaor9OenoTQO2RLk2xvvOL/JJnszN6kmv56c+8qA4KFXQ==} dependencies: - '@firebase/app': 0.9.19 + '@firebase/app': 0.9.20 '@firebase/component': 0.6.4 '@firebase/logger': 0.4.0 '@firebase/util': 1.9.3 @@ -1810,8 +1809,8 @@ packages: /@firebase/app-types@0.9.0: resolution: {integrity: sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==} - /@firebase/app@0.9.19: - resolution: {integrity: sha512-t/SHyZ3xWkR77ZU9VMoobDNFLdDKQ5xqoCAn4o16gTsA1C8sJ6ZOMZ02neMOPxNHuQXVE4tA8ukilnDbnK7uJA==} + /@firebase/app@0.9.20: + resolution: {integrity: sha512-cMTDHr+1GfYyHBSLLvvTE8ywlDCKk/E8cUZmfv0ODmUBB1vXgrICShj7yH9UYf6m7l6pxad8T+qI/oAoAkCp2Q==} dependencies: '@firebase/component': 0.6.4 '@firebase/logger': 0.4.0 @@ -2077,7 +2076,7 @@ packages: requiresBuild: true dependencies: '@grpc/proto-loader': 0.7.10 - '@types/node': 20.8.4 + '@types/node': 20.8.5 dev: false optional: true @@ -2094,8 +2093,8 @@ packages: dev: false optional: true - /@hapi/accept@6.0.2: - resolution: {integrity: sha512-xaTLf29Zeph/B32hekmgxLFsEPuX1xQYyZu0gJ4ZCHKU6nXmBRXfBymtWNEK0souOJcX2XHWUaZU6JzccuuMpg==} + /@hapi/accept@6.0.3: + resolution: {integrity: sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==} dependencies: '@hapi/boom': 10.0.1 '@hapi/hoek': 11.0.2 @@ -2174,7 +2173,7 @@ packages: resolution: {integrity: sha512-het7j9yLXZMVU1IvtN2JXkPkn/UcU1j8gsZxMS0Mu1q7791IQeyhT37tpRPUhqerOtL6L0E8Z8CvVVFOYxoN6w==} engines: {node: '>=14.15.0'} dependencies: - '@hapi/accept': 6.0.2 + '@hapi/accept': 6.0.3 '@hapi/ammo': 6.0.1 '@hapi/boom': 10.0.1 '@hapi/bounce': 3.0.1 @@ -2384,7 +2383,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.8.4 + '@types/node': 20.8.5 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -2405,14 +2404,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.4 + '@types/node': 20.8.5 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.8.0 + ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.8.4)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@20.8.5)(ts-node@10.9.1) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -2447,7 +2446,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.4 + '@types/node': 20.8.5 jest-mock: 29.7.0 dev: true @@ -2474,7 +2473,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.8.4 + '@types/node': 20.8.5 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -2507,14 +2506,14 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.19 - '@types/node': 20.8.4 + '@types/node': 20.8.5 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 6.0.0 + istanbul-lib-instrument: 6.0.1 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.6 @@ -2524,7 +2523,7 @@ packages: slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 - v8-to-istanbul: 9.1.0 + v8-to-istanbul: 9.1.3 transitivePeerDependencies: - supports-color dev: true @@ -2569,7 +2568,7 @@ packages: resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.19 babel-plugin-istanbul: 6.1.1 @@ -2594,7 +2593,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.2 - '@types/node': 20.8.4 + '@types/node': 20.8.5 '@types/yargs': 16.0.6 chalk: 4.1.2 dev: true @@ -2606,8 +2605,8 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.2 - '@types/node': 20.8.4 - '@types/yargs': 17.0.26 + '@types/node': 20.8.5 + '@types/yargs': 17.0.28 chalk: 4.1.2 dev: true @@ -2964,7 +2963,7 @@ packages: rxjs: 7.8.1 dev: false - /@nestjs/cli@10.1.18(@swc/core@1.3.92): + /@nestjs/cli@10.1.18(@swc/core@1.3.93): resolution: {integrity: sha512-jQtG47keLsACt7b4YwJbTBYRm90n82gJpMaiR1HGAyQ9pccbctjSYu592eT4bxqkUWxPgBE3mpNynXj7dWAfrw==} engines: {node: '>= 16'} hasBin: true @@ -2981,7 +2980,7 @@ packages: '@angular-devkit/schematics': 16.2.3(chokidar@3.5.3) '@angular-devkit/schematics-cli': 16.2.3(chokidar@3.5.3) '@nestjs/schematics': 10.0.2(chokidar@3.5.3)(typescript@5.2.2) - '@swc/core': 1.3.92 + '@swc/core': 1.3.93 chalk: 4.1.2 chokidar: 3.5.3 cli-table3: 0.6.3 @@ -2998,7 +2997,7 @@ packages: tsconfig-paths: 4.2.0 tsconfig-paths-webpack-plugin: 4.1.0 typescript: 5.2.2 - webpack: 5.88.2(@swc/core@1.3.92) + webpack: 5.88.2(@swc/core@1.3.93) webpack-node-externals: 3.0.0 transitivePeerDependencies: - esbuild @@ -3651,7 +3650,7 @@ packages: eslint-plugin-no-only-tests: 3.1.0 eslint-plugin-react: 7.33.2(eslint@8.51.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.51.0) - eslint-plugin-rubiin: 1.8.17(eslint@8.51.0)(typescript@5.2.2) + eslint-plugin-rubiin: 1.8.21(eslint@8.51.0)(typescript@5.2.2) eslint-plugin-sonarjs: 0.21.0(eslint@8.51.0) eslint-plugin-unicorn: 48.0.1(eslint@8.51.0) eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@6.7.5)(eslint@8.51.0) @@ -3757,7 +3756,7 @@ packages: jest-runtime: '>=28' dependencies: '@jest/transform': 29.7.0 - jest: 29.7.0(@types/node@20.8.4)(ts-node@10.9.1) + jest: 29.7.0(@types/node@20.8.5)(ts-node@10.9.1) jest-runtime: 29.7.0 dev: true @@ -3788,11 +3787,11 @@ packages: '@sinonjs/commons': 3.0.0 dev: true - /@smithy/abort-controller@2.0.10: - resolution: {integrity: sha512-xn7PnFD3m4rQIG00h1lPuDVnC2QMtTFhzRLX3y56KkgFaCysS7vpNevNBgmNUtmJ4eVFc+66Zucwo2KDLdicOg==} + /@smithy/abort-controller@2.0.11: + resolution: {integrity: sha512-MSzE1qR2JNyb7ot3blIOT3O3H0Jn06iNDEgHRaqZUwBgx5EG+VIx24Y21tlKofzYryIOcWpIohLrIIyocD6LMA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false @@ -3809,114 +3808,114 @@ packages: tslib: 2.6.2 dev: false - /@smithy/config-resolver@2.0.11: - resolution: {integrity: sha512-q97FnlUmbai1c4JlQJgLVBsvSxgV/7Nvg/JK76E1nRq/U5UM56Eqo3dn2fY7JibqgJLg4LPsGdwtIyqyOk35CQ==} + /@smithy/config-resolver@2.0.14: + resolution: {integrity: sha512-K1K+FuWQoy8j/G7lAmK85o03O89s2Vvh6kMFmzEmiHUoQCRH1rzbDtMnGNiaMHeSeYJ6y79IyTusdRG+LuWwtg==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/node-config-provider': 2.0.13 - '@smithy/types': 2.3.4 + '@smithy/node-config-provider': 2.1.1 + '@smithy/types': 2.3.5 '@smithy/util-config-provider': 2.0.0 - '@smithy/util-middleware': 2.0.3 + '@smithy/util-middleware': 2.0.4 tslib: 2.6.2 dev: false - /@smithy/credential-provider-imds@2.0.13: - resolution: {integrity: sha512-/xe3wNoC4j+BeTemH9t2gSKLBfyZmk8LXB2pQm/TOEYi+QhBgT+PSolNDfNAhrR68eggNE17uOimsrnwSkCt4w==} + /@smithy/credential-provider-imds@2.0.16: + resolution: {integrity: sha512-tKa2xF+69TvGxJT+lnJpGrKxUuAZDLYXFhqnPEgnHz+psTpkpcB4QRjHj63+uj83KaeFJdTfW201eLZeRn6FfA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/node-config-provider': 2.0.13 - '@smithy/property-provider': 2.0.11 - '@smithy/types': 2.3.4 - '@smithy/url-parser': 2.0.10 + '@smithy/node-config-provider': 2.1.1 + '@smithy/property-provider': 2.0.12 + '@smithy/types': 2.3.5 + '@smithy/url-parser': 2.0.11 tslib: 2.6.2 dev: false - /@smithy/eventstream-codec@2.0.10: - resolution: {integrity: sha512-3SSDgX2nIsFwif6m+I4+ar4KDcZX463Noes8ekBgQHitULiWvaDZX8XqPaRQSQ4bl1vbeVXHklJfv66MnVO+lw==} + /@smithy/eventstream-codec@2.0.11: + resolution: {integrity: sha512-BQCTjxhCYRZIfXapa2LmZSaH8QUBGwMZw7XRN83hrdixbLjIcj+o549zjkedFS07Ve2TlvWUI6BTzP+nv7snBA==} dependencies: '@aws-crypto/crc32': 3.0.0 - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 '@smithy/util-hex-encoding': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/eventstream-serde-browser@2.0.10: - resolution: {integrity: sha512-/NSUNrWedO9Se80jo/2WcPvqobqCM/0drZ03Kqn1GZpGwVTsdqNj7frVTCUJs/W/JEzOShdMv8ewoKIR7RWPmA==} + /@smithy/eventstream-serde-browser@2.0.11: + resolution: {integrity: sha512-p9IK4uvwT6B3pT1VGlODvcVBfPVikjBFHAcKpvvNF+7lAEI+YiC6d0SROPkpjnvCgVBYyGXa3ciqrWnFze6mwQ==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/eventstream-serde-universal': 2.0.10 - '@smithy/types': 2.3.4 + '@smithy/eventstream-serde-universal': 2.0.11 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/eventstream-serde-config-resolver@2.0.10: - resolution: {integrity: sha512-ag1U0vsC5rhRm7okFzsS6YsvyTRe62jIgJ82+Wr4qoOASx7eCDWdjoqLnrdDY0S4UToF9hZAyo4Du/xrSSSk4g==} + /@smithy/eventstream-serde-config-resolver@2.0.11: + resolution: {integrity: sha512-vN32E8yExo0Z8L7kXhlU9KRURrhqOpPdLxQMp3MwfMThrjiqbr1Sk5srUXc1ed2Ygl/l0TEN9vwNG0bQHg6AjQ==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/eventstream-serde-node@2.0.10: - resolution: {integrity: sha512-3+VeofxoVCa+dvqcuzEpnFve8EQJKaYR7UslDFpj6UTZfa7Hxr8o1/cbFkTftFo71PxzYVsR+bsD56EbAO432A==} + /@smithy/eventstream-serde-node@2.0.11: + resolution: {integrity: sha512-Gjqbpg7UmD+YzkpgNShNcDNZcUpBWIkvX2XCGptz5PoxJU/UQbuF9eSc93ZlIb7j4aGjtFfqk23HUMW8Hopg2Q==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/eventstream-serde-universal': 2.0.10 - '@smithy/types': 2.3.4 + '@smithy/eventstream-serde-universal': 2.0.11 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/eventstream-serde-universal@2.0.10: - resolution: {integrity: sha512-JhJJU1ULLsn5kxKfFe8zOF2tibjxlPIvIB71Kn20aa/OFs+lvXBR0hBGswpovyYyckXH3qU8VxuIOEuS+2G+3A==} + /@smithy/eventstream-serde-universal@2.0.11: + resolution: {integrity: sha512-F8FsxLTbFN4+Esgpo+nNKcEajrgRZJ+pG9c8+MhLM4Odp5ejLHw2GMCXd81cGsgmfcbnzdDEXazPPVzOwj89MQ==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/eventstream-codec': 2.0.10 - '@smithy/types': 2.3.4 + '@smithy/eventstream-codec': 2.0.11 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/fetch-http-handler@2.2.1: - resolution: {integrity: sha512-bXyM8PBAIKxVV++2ZSNBEposTDjFQ31XWOdHED+2hWMNvJHUoQqFbECg/uhcVOa6vHie2/UnzIZfXBSTpDBnEw==} + /@smithy/fetch-http-handler@2.2.3: + resolution: {integrity: sha512-0G9sePU+0R+8d7cie+OXzNbbkjnD4RfBlVCs46ZEuQAMcxK8OniemYXSSkOc80CCk8Il4DnlYZcUSvsIs2OB2w==} dependencies: - '@smithy/protocol-http': 3.0.6 - '@smithy/querystring-builder': 2.0.10 - '@smithy/types': 2.3.4 + '@smithy/protocol-http': 3.0.7 + '@smithy/querystring-builder': 2.0.11 + '@smithy/types': 2.3.5 '@smithy/util-base64': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/hash-blob-browser@2.0.10: - resolution: {integrity: sha512-U2+wIWWloOZ9DaRuz2sk9f7A6STRTlwdcv+q6abXDvS0TRDk8KGgUmfV5lCZy8yxFxZIA0hvHDNqcd25r4Hrew==} + /@smithy/hash-blob-browser@2.0.11: + resolution: {integrity: sha512-/6vq/NiH2EN3mWdwcLdjVohP+VCng+ZA1GnlUdx959egsfgIlLWQvCyjnB2ze9Hr6VHV5XEFLLpLQH2dHA6Sgw==} dependencies: '@smithy/chunked-blob-reader': 2.0.0 '@smithy/chunked-blob-reader-native': 2.0.0 - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/hash-node@2.0.10: - resolution: {integrity: sha512-jSTf6uzPk/Vf+8aQ7tVXeHfjxe9wRXSCqIZcBymSDTf7/YrVxniBdpyN74iI8ZUOx/Pyagc81OK5FROLaEjbXQ==} + /@smithy/hash-node@2.0.11: + resolution: {integrity: sha512-PbleVugN2tbhl1ZoNWVrZ1oTFFas/Hq+s6zGO8B9bv4w/StTriTKA9W+xZJACOj9X7zwfoTLbscM+avCB1KqOQ==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 '@smithy/util-buffer-from': 2.0.0 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/hash-stream-node@2.0.10: - resolution: {integrity: sha512-L58XEGrownZZSpF7Lp0gc0hy+eYKXuPgNz3pQgP5lPFGwBzHdldx2X6o3c6swD6RkcPvTRh0wTUVVGwUotbgnQ==} + /@smithy/hash-stream-node@2.0.11: + resolution: {integrity: sha512-Jn2yl+Dn0kvwKvSavvR1/BFVYa2wIkaJKWeTH48kno89gqHAJxMh1hrtBN6SJ7F8VhodNZTiNOlQVqCSfLheNQ==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/invalid-dependency@2.0.10: - resolution: {integrity: sha512-zw9p/zsmJ2cFcW4KMz3CJoznlbRvEA6HG2mvEaX5eAca5dq4VGI2MwPDTfmteC/GsnURS4ogoMQ0p6aHM2SDVQ==} + /@smithy/invalid-dependency@2.0.11: + resolution: {integrity: sha512-zazq99ujxYv/NOf9zh7xXbNgzoVLsqE0wle8P/1zU/XdhPi/0zohTPKWUzIxjGdqb5hkkwfBkNkl5H+LE0mvgw==} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false @@ -3927,169 +3926,170 @@ packages: tslib: 2.6.2 dev: false - /@smithy/md5-js@2.0.10: - resolution: {integrity: sha512-eA/Ova4/UdQUbMlrbBmnewmukH0zWU6C67HFFR/719vkFNepbnliGjmGksQ9vylz9eD4nfGkZZ5NKZMAcUuzjQ==} + /@smithy/md5-js@2.0.11: + resolution: {integrity: sha512-YBIv+e95qeGvQA05ucwstmTeQ/bUzWgU+nO2Ffmif5awu6IzSR0Jfk3XLYh4mdy7f8DCgsn8qA63u7N9Lu0+5A==} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/middleware-content-length@2.0.12: - resolution: {integrity: sha512-QRhJTo5TjG7oF7np6yY4ZO9GDKFVzU/GtcqUqyEa96bLHE3yZHgNmsolOQ97pfxPHmFhH4vDP//PdpAIN3uI1Q==} + /@smithy/middleware-content-length@2.0.13: + resolution: {integrity: sha512-Md2kxWpaec3bXp1oERFPQPBhOXCkGSAF7uc1E+4rkwjgw3/tqAXRtbjbggu67HJdwaif76As8AV6XxbD1HzqTQ==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/protocol-http': 3.0.6 - '@smithy/types': 2.3.4 + '@smithy/protocol-http': 3.0.7 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/middleware-endpoint@2.0.10: - resolution: {integrity: sha512-O6m4puZc16xfenotZUHL4bRlMrwf4gTp+0I5l954M5KNd3dOK18P+FA/IIUgnXF/dX6hlCUcJkBp7nAzwrePKA==} + /@smithy/middleware-endpoint@2.1.0: + resolution: {integrity: sha512-e6HZbfrp9CNTJqIPSgkydB9mNQXiq5pkHF3ZB6rOzPPR9PkJBoGFo9TcM7FaaKFUaH4Kc20AX6WwwVyIlNhXTA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/middleware-serde': 2.0.10 - '@smithy/types': 2.3.4 - '@smithy/url-parser': 2.0.10 - '@smithy/util-middleware': 2.0.3 + '@smithy/middleware-serde': 2.0.11 + '@smithy/node-config-provider': 2.1.1 + '@smithy/types': 2.3.5 + '@smithy/url-parser': 2.0.11 + '@smithy/util-middleware': 2.0.4 tslib: 2.6.2 dev: false - /@smithy/middleware-retry@2.0.13: - resolution: {integrity: sha512-zuOva8xgWC7KYG8rEXyWIcZv2GWszO83DCTU6IKcf/FKu6OBmSE+EYv3EUcCGY+GfiwCX0EyJExC9Lpq9b0w5Q==} + /@smithy/middleware-retry@2.0.16: + resolution: {integrity: sha512-Br5+0yoiMS0ugiOAfJxregzMMGIRCbX4PYo1kDHtLgvkA/d++aHbnHB819m5zOIAMPvPE7AThZgcsoK+WOsUTA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/node-config-provider': 2.0.13 - '@smithy/protocol-http': 3.0.6 - '@smithy/service-error-classification': 2.0.3 - '@smithy/types': 2.3.4 - '@smithy/util-middleware': 2.0.3 - '@smithy/util-retry': 2.0.3 + '@smithy/node-config-provider': 2.1.1 + '@smithy/protocol-http': 3.0.7 + '@smithy/service-error-classification': 2.0.4 + '@smithy/types': 2.3.5 + '@smithy/util-middleware': 2.0.4 + '@smithy/util-retry': 2.0.4 tslib: 2.6.2 uuid: 8.3.2 dev: false - /@smithy/middleware-serde@2.0.10: - resolution: {integrity: sha512-+A0AFqs768256H/BhVEsBF6HijFbVyAwYRVXY/izJFkTalVWJOp4JA0YdY0dpXQd+AlW0tzs+nMQCE1Ew+DcgQ==} + /@smithy/middleware-serde@2.0.11: + resolution: {integrity: sha512-NuxnjMyf4zQqhwwdh0OTj5RqpnuT6HcH5Xg5GrPijPcKzc2REXVEVK4Yyk8ckj8ez1XSj/bCmJ+oNjmqB02GWA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/middleware-stack@2.0.4: - resolution: {integrity: sha512-MW0KNKfh8ZGLagMZnxcLJWPNXoKqW6XV/st5NnCBmmA2e2JhrUjU0AJ5Ca/yjTyNEKs3xH7AQDwp1YmmpEpmQQ==} + /@smithy/middleware-stack@2.0.5: + resolution: {integrity: sha512-bVQU/rZzBY7CbSxIrDTGZYnBWKtIw+PL/cRc9B7etZk1IKSOe0NvKMJyWllfhfhrTeMF6eleCzOihIQympAvPw==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/node-config-provider@2.0.13: - resolution: {integrity: sha512-pPpLqYuJcOq1sj1EGu+DoZK47DUS4gepqSTNgRezmrjnzNlSU2/Dcc9Ebzs+WZ0Z5vXKazuE+k+NksFLo07/AA==} + /@smithy/node-config-provider@2.1.1: + resolution: {integrity: sha512-1lF6s1YWBi1LBu2O30tD3jyTgMtuvk/Z1twzXM4GPYe4dmZix4nNREPJIPOcfFikNU2o0eTYP80+izx5F2jIJA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/property-provider': 2.0.11 - '@smithy/shared-ini-file-loader': 2.0.12 - '@smithy/types': 2.3.4 + '@smithy/property-provider': 2.0.12 + '@smithy/shared-ini-file-loader': 2.2.0 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/node-http-handler@2.1.6: - resolution: {integrity: sha512-NspvD3aCwiUNtoSTcVHz0RZz1tQ/SaRIe1KPF+r0mAdCZ9eWuhIeJT8ZNPYa1ITn7/Lgg64IyFjqPynZ8KnYQw==} + /@smithy/node-http-handler@2.1.7: + resolution: {integrity: sha512-PQIKZXlp3awCDn/xNlCSTFE7aYG/5Tx33M05NfQmWYeB5yV1GZZOSz4dXpwiNJYTXb9jPqjl+ueXXkwtEluFFA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/abort-controller': 2.0.10 - '@smithy/protocol-http': 3.0.6 - '@smithy/querystring-builder': 2.0.10 - '@smithy/types': 2.3.4 + '@smithy/abort-controller': 2.0.11 + '@smithy/protocol-http': 3.0.7 + '@smithy/querystring-builder': 2.0.11 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/property-provider@2.0.11: - resolution: {integrity: sha512-kzuOadu6XvrnlF1iXofpKXYmo4oe19st9/DE8f5gHNaFepb4eTkR8gD8BSdTnNnv7lxfv6uOwZPg4VS6hemX1w==} + /@smithy/property-provider@2.0.12: + resolution: {integrity: sha512-Un/OvvuQ1Kg8WYtoMCicfsFFuHb/TKL3pCA6ZIo/WvNTJTR94RtoRnL7mY4XkkUAoFMyf6KjcQJ76y1FX7S5rw==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/protocol-http@3.0.6: - resolution: {integrity: sha512-F0jAZzwznMmHaggiZgc7YoS08eGpmLvhVktY/Taz6+OAOHfyIqWSDNgFqYR+WHW9z5fp2XvY4mEUrQgYMQ71jw==} + /@smithy/protocol-http@3.0.7: + resolution: {integrity: sha512-HnZW8y+r66ntYueCDbLqKwWcMNWW8o3eVpSrHNluwtBJ/EUWfQHRKSiu6vZZtc6PGfPQWgVfucoCE/C3QufMAA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/querystring-builder@2.0.10: - resolution: {integrity: sha512-uujJGp8jzrrU1UHme8sUKEbawQTcTmUWsh8rbGXYD/lMwNLQ+9jQ9dMDWbbH9Hpoa9RER1BeL/38WzGrbpob2w==} + /@smithy/querystring-builder@2.0.11: + resolution: {integrity: sha512-b4kEbVMxpmfv2VWUITn2otckTi7GlMteZQxi+jlwedoATOGEyrCJPfRcYQJjbCi3fZ2QTfh3PcORvB27+j38Yg==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 '@smithy/util-uri-escape': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/querystring-parser@2.0.10: - resolution: {integrity: sha512-WSD4EU60Q8scacT5PIpx4Bahn6nWpt+MiYLcBkFt6fOj7AssrNeaNIU2Z0g40ftVmrwLcEOIKGX92ynbVDb3ZA==} + /@smithy/querystring-parser@2.0.11: + resolution: {integrity: sha512-YXe7jhi7s3dQ0Fu9dLoY/gLu6NCyy8tBWJL/v2c9i7/RLpHgKT+uT96/OqZkHizCJ4kr0ZD46tzMjql/o60KLg==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/service-error-classification@2.0.3: - resolution: {integrity: sha512-b+m4QCHXb7oKAkM/jHwHrl5gpqhFoMTHF643L0/vAEkegrcUWyh1UjyoHttuHcP5FnHVVy4EtpPtLkEYD+xMFw==} + /@smithy/service-error-classification@2.0.4: + resolution: {integrity: sha512-77506l12I5gxTZqBkx3Wb0RqMG81bMYLaVQ+EqIWFwQDJRs5UFeXogKxSKojCmz1wLUziHZQXm03MBzPQiumQw==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 dev: false - /@smithy/shared-ini-file-loader@2.0.12: - resolution: {integrity: sha512-umi0wc4UBGYullAgYNUVfGLgVpxQyES47cnomTqzCKeKO5oudO4hyDNj+wzrOjqDFwK2nWYGVgS8Y0JgGietrw==} + /@smithy/shared-ini-file-loader@2.2.0: + resolution: {integrity: sha512-xFXqs4vAb5BdkzHSRrTapFoaqS4/3m/CGZzdw46fBjYZ0paYuLAoMY60ICCn1FfGirG+PiJ3eWcqJNe4/SkfyA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/signature-v4@2.0.10: - resolution: {integrity: sha512-S6gcP4IXfO/VMswovrhxPpqvQvMal7ZRjM4NvblHSPpE5aNBYx67UkHFF3kg0hR3tJKqNpBGbxwq0gzpdHKLRA==} + /@smithy/signature-v4@2.0.11: + resolution: {integrity: sha512-EFVU1dT+2s8xi227l1A9O27edT/GNKvyAK6lZnIZ0zhIHq/jSLznvkk15aonGAM1kmhmZBVGpI7Tt0odueZK9A==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/eventstream-codec': 2.0.10 + '@smithy/eventstream-codec': 2.0.11 '@smithy/is-array-buffer': 2.0.0 - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 '@smithy/util-hex-encoding': 2.0.0 - '@smithy/util-middleware': 2.0.3 + '@smithy/util-middleware': 2.0.4 '@smithy/util-uri-escape': 2.0.0 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/smithy-client@2.1.9: - resolution: {integrity: sha512-HTicQSn/lOcXKJT+DKJ4YMu51S6PzbWsO8Z6Pwueo30mSoFKXg5P0BDkg2VCDqCVR0mtddM/F6hKhjW6YAV/yg==} + /@smithy/smithy-client@2.1.11: + resolution: {integrity: sha512-okjMbuBBCTiieK665OFN/ap6u9+Z9z55PMphS5FYCsS6Zfp137Q3qlnt0OgBAnUVnH/mNGyoJV0LBX9gkTWptg==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/middleware-stack': 2.0.4 - '@smithy/types': 2.3.4 - '@smithy/util-stream': 2.0.14 + '@smithy/middleware-stack': 2.0.5 + '@smithy/types': 2.3.5 + '@smithy/util-stream': 2.0.16 tslib: 2.6.2 dev: false - /@smithy/types@2.3.4: - resolution: {integrity: sha512-D7xlM9FOMFyFw7YnMXn9dK2KuN6+JhnrZwVt1fWaIu8hCk5CigysweeIT/H/nCo4YV+s8/oqUdLfexbkPZtvqw==} + /@smithy/types@2.3.5: + resolution: {integrity: sha512-ehyDt8M9hehyxrLQGoA1BGPou8Js1Ocoh5M0ngDhJMqbFmNK5N6Xhr9/ZExWkyIW8XcGkiMPq3ZUEE0ScrhbuQ==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.6.2 dev: false - /@smithy/url-parser@2.0.10: - resolution: {integrity: sha512-4TXQFGjHcqru8aH5VRB4dSnOFKCYNX6SR1Do6fwxZ+ExT2onLsh2W77cHpks7ma26W5jv6rI1u7d0+KX9F0aOw==} + /@smithy/url-parser@2.0.11: + resolution: {integrity: sha512-h89yXMCCF+S5k9XIoKltMIWTYj+FcEkU/IIFZ6RtE222fskOTL4Iak6ZRG+ehSvZDt8yKEcxqheTDq7JvvtK3g==} dependencies: - '@smithy/querystring-parser': 2.0.10 - '@smithy/types': 2.3.4 + '@smithy/querystring-parser': 2.0.11 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false @@ -4129,27 +4129,27 @@ packages: tslib: 2.6.2 dev: false - /@smithy/util-defaults-mode-browser@2.0.13: - resolution: {integrity: sha512-UmmOdUzaQjqdsl1EjbpEaQxM0VDFqTj6zDuI26/hXN7L/a1k1koTwkYpogHMvunDX3fjrQusg5gv1Td4UsGyog==} + /@smithy/util-defaults-mode-browser@2.0.15: + resolution: {integrity: sha512-2raMZOYKSuke7QlDg/HDcxQdrp0zteJ8z+S0B9Rn23J55ZFNK1+IjG4HkN6vo/0u3Xy/JOdJ93ibiBSB8F7kOw==} engines: {node: '>= 10.0.0'} dependencies: - '@smithy/property-provider': 2.0.11 - '@smithy/smithy-client': 2.1.9 - '@smithy/types': 2.3.4 + '@smithy/property-provider': 2.0.12 + '@smithy/smithy-client': 2.1.11 + '@smithy/types': 2.3.5 bowser: 2.11.0 tslib: 2.6.2 dev: false - /@smithy/util-defaults-mode-node@2.0.15: - resolution: {integrity: sha512-g6J7MHAibVPMTlXyH3mL+Iet4lMJKFVhsOhJmn+IKG81uy9m42CkRSDlwdQSJAcprLQBIaOPdFxNXQvrg2w1Uw==} + /@smithy/util-defaults-mode-node@2.0.19: + resolution: {integrity: sha512-7pScU4jBFADB2MBYKM3zb5onMh6Nn0X3IfaFVLYPyCarTIZDLUtUl1GtruzEUJPmDzP+uGeqOtU589HDY0Ni6g==} engines: {node: '>= 10.0.0'} dependencies: - '@smithy/config-resolver': 2.0.11 - '@smithy/credential-provider-imds': 2.0.13 - '@smithy/node-config-provider': 2.0.13 - '@smithy/property-provider': 2.0.11 - '@smithy/smithy-client': 2.1.9 - '@smithy/types': 2.3.4 + '@smithy/config-resolver': 2.0.14 + '@smithy/credential-provider-imds': 2.0.16 + '@smithy/node-config-provider': 2.1.1 + '@smithy/property-provider': 2.0.12 + '@smithy/smithy-client': 2.1.11 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false @@ -4160,30 +4160,30 @@ packages: tslib: 2.6.2 dev: false - /@smithy/util-middleware@2.0.3: - resolution: {integrity: sha512-+FOCFYOxd2HO7v/0hkFSETKf7FYQWa08wh/x/4KUeoVBnLR4juw8Qi+TTqZI6E2h5LkzD9uOaxC9lAjrpVzaaA==} + /@smithy/util-middleware@2.0.4: + resolution: {integrity: sha512-Pbu6P4MBwRcjrLgdTR1O4Y3c0sTZn2JdOiJNcgL7EcIStcQodj+6ZTXtbyU/WTEU3MV2NMA10LxFc3AWHZ3+4A==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/util-retry@2.0.3: - resolution: {integrity: sha512-gw+czMnj82i+EaH7NL7XKkfX/ZKrCS2DIWwJFPKs76bMgkhf0y1C94Lybn7f8GkBI9lfIOUdPYtzm19zQOC8sw==} + /@smithy/util-retry@2.0.4: + resolution: {integrity: sha512-b+n1jBBKc77C1E/zfBe1Zo7S9OXGBiGn55N0apfhZHxPUP/fMH5AhFUUcWaJh7NAnah284M5lGkBKuhnr3yK5w==} engines: {node: '>= 14.0.0'} dependencies: - '@smithy/service-error-classification': 2.0.3 - '@smithy/types': 2.3.4 + '@smithy/service-error-classification': 2.0.4 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false - /@smithy/util-stream@2.0.14: - resolution: {integrity: sha512-XjvlDYe+9DieXhLf7p+EgkXwFtl34kHZcWfHnc5KaILbhyVfDLWuqKTFx6WwCFqb01iFIig8trGwExRIqqkBYg==} + /@smithy/util-stream@2.0.16: + resolution: {integrity: sha512-b5ZSRh1KzUzC7LoJcpfk7+iXGoRr3WylEfmPd4FnBLm90OwxSB9VgK1fDZwicfYxSEvWHdYXgvvjPtenEYBBhw==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/fetch-http-handler': 2.2.1 - '@smithy/node-http-handler': 2.1.6 - '@smithy/types': 2.3.4 + '@smithy/fetch-http-handler': 2.2.3 + '@smithy/node-http-handler': 2.1.7 + '@smithy/types': 2.3.5 '@smithy/util-base64': 2.0.0 '@smithy/util-buffer-from': 2.0.0 '@smithy/util-hex-encoding': 2.0.0 @@ -4206,12 +4206,12 @@ packages: tslib: 2.6.2 dev: false - /@smithy/util-waiter@2.0.10: - resolution: {integrity: sha512-yQjwWVrwYw+/f3hFQccE3zZF7lk6N6xtNcA6jvhWFYhnyKAm6B2mX8Gzftl0TbgoPUpzCvKYlvhaEpVtRpVfVw==} + /@smithy/util-waiter@2.0.11: + resolution: {integrity: sha512-8SJWUl9O1YhjC77EccgltI3q4XZQp3vp9DGEW6o0OdkUcwqm/H4qOLnMkA2n+NDojuM5Iia2jWoCdbluIiG7TA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/abort-controller': 2.0.10 - '@smithy/types': 2.3.4 + '@smithy/abort-controller': 2.0.11 + '@smithy/types': 2.3.5 tslib: 2.6.2 dev: false @@ -4279,8 +4279,8 @@ packages: resolution: {integrity: sha512-wlt6JW69MHqLY2M6Sm/jVyCojNRKq2CBvwH0Hbx24SFhDQQGkgEjeKxVutDxHSyrWixFaOSLXC27euzxijhyMQ==} dev: false - /@swc/core-darwin-arm64@1.3.92: - resolution: {integrity: sha512-v7PqZUBtIF6Q5Cp48gqUiG8zQQnEICpnfNdoiY3xjQAglCGIQCjJIDjreZBoeZQZspB27lQN4eZ43CX18+2SnA==} + /@swc/core-darwin-arm64@1.3.93: + resolution: {integrity: sha512-gEKgk7FVIgltnIfDO6GntyuQBBlAYg5imHpRgLxB1zSI27ijVVkksc6QwISzFZAhKYaBWIsFSVeL9AYSziAF7A==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] @@ -4288,8 +4288,8 @@ packages: dev: true optional: true - /@swc/core-darwin-x64@1.3.92: - resolution: {integrity: sha512-Q3XIgQfXyxxxms3bPN+xGgvwk0TtG9l89IomApu+yTKzaIIlf051mS+lGngjnh9L0aUiCp6ICyjDLtutWP54fw==} + /@swc/core-darwin-x64@1.3.93: + resolution: {integrity: sha512-ZQPxm/fXdDQtn3yrYSL/gFfA8OfZ5jTi33yFQq6vcg/Y8talpZ+MgdSlYM0FkLrZdMTYYTNFiuBQuuvkA+av+Q==} engines: {node: '>=10'} cpu: [x64] os: [darwin] @@ -4297,8 +4297,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm-gnueabihf@1.3.92: - resolution: {integrity: sha512-tnOCoCpNVXC+0FCfG84PBZJyLlz0Vfj9MQhyhCvlJz9hQmvpf8nTdKH7RHrOn8VfxtUBLdVi80dXgIFgbvl7qA==} + /@swc/core-linux-arm-gnueabihf@1.3.93: + resolution: {integrity: sha512-OYFMMI2yV+aNe3wMgYhODxHdqUB/jrK0SEMHHS44GZpk8MuBXEF+Mcz4qjkY5Q1EH7KVQqXb/gVWwdgTHpjM2A==} engines: {node: '>=10'} cpu: [arm] os: [linux] @@ -4306,8 +4306,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-gnu@1.3.92: - resolution: {integrity: sha512-lFfGhX32w8h1j74Iyz0Wv7JByXIwX11OE9UxG+oT7lG0RyXkF4zKyxP8EoxfLrDXse4Oop434p95e3UNC3IfCw==} + /@swc/core-linux-arm64-gnu@1.3.93: + resolution: {integrity: sha512-BT4dT78odKnJMNiq5HdjBsv29CiIdcCcImAPxeFqAeFw1LL6gh9nzI8E96oWc+0lVT5lfhoesCk4Qm7J6bty8w==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -4315,8 +4315,8 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-musl@1.3.92: - resolution: {integrity: sha512-rOZtRcLj57MSAbiecMsqjzBcZDuaCZ8F6l6JDwGkQ7u1NYR57cqF0QDyU7RKS1Jq27Z/Vg21z5cwqoH5fLN+Sg==} + /@swc/core-linux-arm64-musl@1.3.93: + resolution: {integrity: sha512-yH5fWEl1bktouC0mhh0Chuxp7HEO4uCtS/ly1Vmf18gs6wZ8DOOkgAEVv2dNKIryy+Na++ljx4Ym7C8tSJTrLw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -4324,8 +4324,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-gnu@1.3.92: - resolution: {integrity: sha512-qptoMGnBL6v89x/Qpn+l1TH1Y0ed+v0qhNfAEVzZvCvzEMTFXphhlhYbDdpxbzRmCjH6GOGq7Y+xrWt9T1/ARg==} + /@swc/core-linux-x64-gnu@1.3.93: + resolution: {integrity: sha512-OFUdx64qvrGJhXKEyxosHxgoUVgba2ztYh7BnMiU5hP8lbI8G13W40J0SN3CmFQwPP30+3oEbW7LWzhKEaYjlg==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -4333,8 +4333,8 @@ packages: dev: true optional: true - /@swc/core-linux-x64-musl@1.3.92: - resolution: {integrity: sha512-g2KrJ43bZkCZHH4zsIV5ErojuV1OIpUHaEyW1gf7JWKaFBpWYVyubzFPvPkjcxHGLbMsEzO7w/NVfxtGMlFH/Q==} + /@swc/core-linux-x64-musl@1.3.93: + resolution: {integrity: sha512-4B8lSRwEq1XYm6xhxHhvHmKAS7pUp1Q7E33NQ2TlmFhfKvCOh86qvThcjAOo57x8DRwmpvEVrqvpXtYagMN6Ig==} engines: {node: '>=10'} cpu: [x64] os: [linux] @@ -4342,8 +4342,8 @@ packages: dev: true optional: true - /@swc/core-win32-arm64-msvc@1.3.92: - resolution: {integrity: sha512-3MCRGPAYDoQ8Yyd3WsCMc8eFSyKXY5kQLyg/R5zEqA0uthomo0m0F5/fxAJMZGaSdYkU1DgF73ctOWOf+Z/EzQ==} + /@swc/core-win32-arm64-msvc@1.3.93: + resolution: {integrity: sha512-BHShlxtkven8ZjjvZ5QR6sC5fZCJ9bMujEkiha6W4cBUTY7ce7qGFyHmQd+iPC85d9kD/0cCiX/Xez8u0BhO7w==} engines: {node: '>=10'} cpu: [arm64] os: [win32] @@ -4351,8 +4351,8 @@ packages: dev: true optional: true - /@swc/core-win32-ia32-msvc@1.3.92: - resolution: {integrity: sha512-zqTBKQhgfWm73SVGS8FKhFYDovyRl1f5dTX1IwSKynO0qHkRCqJwauFJv/yevkpJWsI2pFh03xsRs9HncTQKSA==} + /@swc/core-win32-ia32-msvc@1.3.93: + resolution: {integrity: sha512-nEwNWnz4JzYAK6asVvb92yeylfxMYih7eMQOnT7ZVlZN5ba9WF29xJ6kcQKs9HRH6MvWhz9+wRgv3FcjlU6HYA==} engines: {node: '>=10'} cpu: [ia32] os: [win32] @@ -4360,8 +4360,8 @@ packages: dev: true optional: true - /@swc/core-win32-x64-msvc@1.3.92: - resolution: {integrity: sha512-41bE66ddr9o/Fi1FBh0sHdaKdENPTuDpv1IFHxSg0dJyM/jX8LbkjnpdInYXHBxhcLVAPraVRrNsC4SaoPw2Pg==} + /@swc/core-win32-x64-msvc@1.3.93: + resolution: {integrity: sha512-jibQ0zUr4kwJaQVwgmH+svS04bYTPnPw/ZkNInzxS+wFAtzINBYcU8s2PMWbDb2NGYiRSEeoSGyAvS9H+24JFA==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -4369,8 +4369,8 @@ packages: dev: true optional: true - /@swc/core@1.3.92: - resolution: {integrity: sha512-vx0vUrf4YTEw59njOJ46Ha5i0cZTMYdRHQ7KXU29efN1MxcmJH2RajWLPlvQarOP1ab9iv9cApD7SMchDyx2vA==} + /@swc/core@1.3.93: + resolution: {integrity: sha512-690GRr1wUGmGYZHk7fUduX/JUwViMF2o74mnZYIWEcJaCcd9MQfkhsxPBtjeg6tF+h266/Cf3RPYhsFBzzxXcA==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -4382,30 +4382,30 @@ packages: '@swc/counter': 0.1.2 '@swc/types': 0.1.5 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.92 - '@swc/core-darwin-x64': 1.3.92 - '@swc/core-linux-arm-gnueabihf': 1.3.92 - '@swc/core-linux-arm64-gnu': 1.3.92 - '@swc/core-linux-arm64-musl': 1.3.92 - '@swc/core-linux-x64-gnu': 1.3.92 - '@swc/core-linux-x64-musl': 1.3.92 - '@swc/core-win32-arm64-msvc': 1.3.92 - '@swc/core-win32-ia32-msvc': 1.3.92 - '@swc/core-win32-x64-msvc': 1.3.92 + '@swc/core-darwin-arm64': 1.3.93 + '@swc/core-darwin-x64': 1.3.93 + '@swc/core-linux-arm-gnueabihf': 1.3.93 + '@swc/core-linux-arm64-gnu': 1.3.93 + '@swc/core-linux-arm64-musl': 1.3.93 + '@swc/core-linux-x64-gnu': 1.3.93 + '@swc/core-linux-x64-musl': 1.3.93 + '@swc/core-win32-arm64-msvc': 1.3.93 + '@swc/core-win32-ia32-msvc': 1.3.93 + '@swc/core-win32-x64-msvc': 1.3.93 dev: true /@swc/counter@0.1.2: resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==} dev: true - /@swc/jest@0.2.29(@swc/core@1.3.92): + /@swc/jest@0.2.29(@swc/core@1.3.93): resolution: {integrity: sha512-8reh5RvHBsSikDC3WGCd5ZTd2BXKkyOdK7QwynrCH58jk2cQFhhHhFBg/jvnWZehUQe/EoOImLENc9/DwbBFow==} engines: {npm: '>= 7.0.0'} peerDependencies: '@swc/core': '*' dependencies: '@jest/create-cache-key-function': 27.5.1 - '@swc/core': 1.3.92 + '@swc/core': 1.3.93 jsonc-parser: 3.2.0 dev: true @@ -4483,7 +4483,7 @@ packages: resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} dependencies: '@types/connect': 3.4.36 - '@types/node': 20.8.4 + '@types/node': 20.8.5 /@types/cache-manager-redis-store@2.0.2: resolution: {integrity: sha512-Y9AkjU/y3If0nlJI/8k3mMmr/1FIuZ8U7biI5vQH0uP5mOb1Xycru6NcOiVKyUe/adHYUoY/EpnvWZ8NoBqRKQ==} @@ -4499,23 +4499,23 @@ packages: /@types/chai-subset@1.3.3: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - '@types/chai': 4.3.6 + '@types/chai': 4.3.8 dev: true - /@types/chai@4.3.6: - resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} + /@types/chai@4.3.8: + resolution: {integrity: sha512-yW/qTM4mRBBcsA9Xw9FbcImYtFPY7sgr+G/O5RDYVmxiy9a+pE5FyoFUi8JYCZY5nicj8atrr1pcfPiYpeNGOA==} dev: true /@types/compression@1.7.3: resolution: {integrity: sha512-rKquEGjebqizyHNMOpaE/4FdYR5VQiWFeesqYfvJU0seSEyB4625UGhNOO/qIkH10S3wftiV7oefc8WdLZ/gCQ==} dependencies: - '@types/express': 4.17.18 + '@types/express': 4.17.19 dev: true /@types/connect@3.4.36: resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} @@ -4527,7 +4527,7 @@ packages: /@types/cors@2.8.14: resolution: {integrity: sha512-RXHUvNWYICtbP6s18PnOCaqToK8y14DnLd75c6HfyKf228dxy7pHNOQkxPtvXKp/hINFMDjbYzsj63nnpPMSRQ==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 /@types/dompurify@3.0.3: resolution: {integrity: sha512-odiGr/9/qMqjcBOe5UhcNLOFHSYmKFOyr+bJ/Xu3Qp4k1pNPAlNLUVNNLcLfjQI7+W7ObX58EdD3H+3p3voOvA==} @@ -4538,12 +4538,12 @@ packages: /@types/eslint-scope@3.7.5: resolution: {integrity: sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA==} dependencies: - '@types/eslint': 8.44.3 + '@types/eslint': 8.44.4 '@types/estree': 1.0.2 dev: true - /@types/eslint@8.44.3: - resolution: {integrity: sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g==} + /@types/eslint@8.44.4: + resolution: {integrity: sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA==} dependencies: '@types/estree': 1.0.2 '@types/json-schema': 7.0.13 @@ -4556,13 +4556,13 @@ packages: /@types/express-serve-static-core@4.17.37: resolution: {integrity: sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 '@types/qs': 6.9.8 '@types/range-parser': 1.2.5 '@types/send': 0.17.2 - /@types/express@4.17.18: - resolution: {integrity: sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ==} + /@types/express@4.17.19: + resolution: {integrity: sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg==} dependencies: '@types/body-parser': 1.19.3 '@types/express-serve-static-core': 4.17.37 @@ -4574,14 +4574,14 @@ packages: requiresBuild: true dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.8.4 + '@types/node': 20.8.5 dev: false optional: true /@types/graceful-fs@4.1.7: resolution: {integrity: sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 dev: true /@types/http-errors@2.0.2: @@ -4617,13 +4617,13 @@ packages: /@types/jsonwebtoken@9.0.2: resolution: {integrity: sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 dev: false /@types/jsonwebtoken@9.0.3: resolution: {integrity: sha512-b0jGiOgHtZ2jqdPgPnP6WLCXZk1T8p06A/vPGzUvxpFGgKMbjXJDjC5m52ErqBnIuWZFgGoIJyRdeG5AyreJjA==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 /@types/linkify-it@3.0.3: resolution: {integrity: sha512-pTjcqY9E4nOI55Wgpz7eiI8+LzdYnw3qxXCfHyBDdPbYvbyLgWLJGh8EdPvqawwMK1Uo1794AUkkR38Fr0g+2g==} @@ -4641,10 +4641,10 @@ packages: resolution: {integrity: sha512-l5cpE57br4BIjK+9BSkFBOsWtwv6J9bJpC7gdXIzZyI0vuKvNTk0wZZrkQxMGsUAuGW9+WMNWF2IJMD7br2yeQ==} dev: false - /@types/mailparser@3.4.1: - resolution: {integrity: sha512-ZEF3ElxrEY/7cmo6YCOZVIwJRyUae3ioic4llB7qjmwHZdaElvsnefnvkS8Jakc4U9vBvQJvfTlK5Q/67DyAqQ==} + /@types/mailparser@3.4.2: + resolution: {integrity: sha512-QxdJdmEdQ3mUiJbK7LHy8H1Hg1lWNPU6RwvMeDvhZeyMX7jnuXao8zVbCTvYYlHJPaHnqebixQwdt4krcaz4jg==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 iconv-lite: 0.6.3 dev: true @@ -4688,7 +4688,7 @@ packages: /@types/multer@1.4.8: resolution: {integrity: sha512-VMZOW6mnmMMhA5m3fsCdXBwFwC+a+27/8gctNMuQC4f7UtWcF79KAFGoIfKZ4iqrElgWIa3j5vhMJDp0iikQ1g==} dependencies: - '@types/express': 4.17.18 + '@types/express': 4.17.19 dev: true /@types/node@14.18.63: @@ -4701,15 +4701,15 @@ packages: dev: true optional: true - /@types/node@20.8.4: - resolution: {integrity: sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==} + /@types/node@20.8.5: + resolution: {integrity: sha512-SPlobFgbidfIeOYlzXiEjSYeIJiOCthv+9tSQVpvk4PAdIIc+2SmjNVzWXk9t0Y7dl73Zdf+OgXKHX9XtkqUpw==} dependencies: undici-types: 5.25.3 /@types/nodemailer@6.4.11: resolution: {integrity: sha512-Ld2c0frwpGT4VseuoeboCXQ7UJIkK3X7Lx/4YsZEiUHtHsthWAOCYtf6PAiLhMtfwV0cWJRabLBS3+LD8x6Nrw==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 dev: true /@types/normalize-package-data@2.4.2: @@ -4718,7 +4718,7 @@ packages: /@types/oauth@0.9.2: resolution: {integrity: sha512-Nu3/abQ6yR9VlsCdX3aiGsWFkj6OJvJqDvg/36t8Gwf2mFXdBZXPDN3K+2yfeA6Lo2m1Q12F8Qil9TZ48nWhOQ==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 dev: true /@types/parse-json@4.0.0: @@ -4728,7 +4728,7 @@ packages: /@types/passport-facebook@3.0.1: resolution: {integrity: sha512-+wksCaYVbLPd+VhF0yWRt+fcmuYBfAWF0PrVPPy7gxy5kD92P/8G1erxJWVneP8rvPaiqNiBbVQFcDTSLbeK2g==} dependencies: - '@types/express': 4.17.18 + '@types/express': 4.17.19 '@types/passport': 1.0.13 '@types/passport-oauth2': 1.4.13 dev: true @@ -4736,7 +4736,7 @@ packages: /@types/passport-google-oauth20@2.0.12: resolution: {integrity: sha512-+MBVB8uYd8mMZYvTwYChCa2LBGVK9FMwdK5TtcNHMeTL6qBZ3QW0HeUtZiAlwgkw2LYM0Btlzyb19EA8ysm13g==} dependencies: - '@types/express': 4.17.18 + '@types/express': 4.17.19 '@types/passport': 1.0.13 '@types/passport-oauth2': 1.4.13 dev: true @@ -4744,7 +4744,7 @@ packages: /@types/passport-jwt@3.0.10: resolution: {integrity: sha512-D2A911g2uiFsq/XXFBxQjcBcK4c6zPF2gAx9blEfz2AOXx5UUwsd8ZcMTcPe8z9dhW8LQBYLjv+vug2dvnRevA==} dependencies: - '@types/express': 4.17.18 + '@types/express': 4.17.19 '@types/jsonwebtoken': 9.0.3 '@types/passport-strategy': 0.2.36 dev: true @@ -4752,7 +4752,7 @@ packages: /@types/passport-oauth2@1.4.13: resolution: {integrity: sha512-SKjbAFSgV2ys7Vf8+BbQ2Fq09CZGi72xaHqbWPEKhi7czPSC0ff4gXuQEY3XXAuTynPjwj6dlL3YAta9M2K0AQ==} dependencies: - '@types/express': 4.17.18 + '@types/express': 4.17.19 '@types/oauth': 0.9.2 '@types/passport': 1.0.13 dev: true @@ -4760,21 +4760,21 @@ packages: /@types/passport-strategy@0.2.36: resolution: {integrity: sha512-hotVZuaCt04LJYXfZD5B+5UeCcRVG8IjKaLLGTJ1eFp0wiFQA2XfsqslGGInWje+OysNNLPH/ducce5GXHDC1Q==} dependencies: - '@types/express': 4.17.18 + '@types/express': 4.17.19 '@types/passport': 1.0.13 dev: true /@types/passport@1.0.13: resolution: {integrity: sha512-XXURryL+EZAWtbQFOHX1eNB+RJwz5XMPPz1xrGpEKr2xUZCXM4NCPkHMtZQ3B2tTSG/1IRaAcTHjczRA4sSFCw==} dependencies: - '@types/express': 4.17.18 + '@types/express': 4.17.19 dev: true /@types/preview-email@3.0.2: resolution: {integrity: sha512-bb/oorXPzl16jDK9APG+5rZoLxFD1msong4GxWQr02b8kMdrED2GzcYUig3uk6bkulYECkHR+CXrBqohj/bhsQ==} dependencies: - '@types/mailparser': 3.4.1 - '@types/node': 20.8.4 + '@types/mailparser': 3.4.2 + '@types/node': 20.8.5 '@types/nodemailer': 6.4.11 dev: true @@ -4785,7 +4785,7 @@ packages: /@types/qrcode@1.5.2: resolution: {integrity: sha512-W4KDz75m7rJjFbyCctzCtRzZUj+PrUHV+YjqDp50sSRezTbrtEAIq2iTzC6lISARl3qw+8IlcCyljdcVJE0Wug==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 dev: true /@types/qs@6.9.8: @@ -4803,7 +4803,7 @@ packages: /@types/redis@2.8.32: resolution: {integrity: sha512-7jkMKxcGq9p242exlbsVzuJb57KqHRhNl4dHoQu2Y5v9bCAbtIXXH0R3HleSQW4CTOqpHIYUW3t6tpUj4BVQ+w==} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 dev: true /@types/rimraf@3.0.2: @@ -4811,7 +4811,7 @@ packages: requiresBuild: true dependencies: '@types/glob': 8.1.0 - '@types/node': 20.8.4 + '@types/node': 20.8.5 dev: false optional: true @@ -4823,14 +4823,14 @@ packages: resolution: {integrity: sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw==} dependencies: '@types/mime': 1.3.3 - '@types/node': 20.8.4 + '@types/node': 20.8.5 /@types/serve-static@1.15.3: resolution: {integrity: sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg==} dependencies: '@types/http-errors': 2.0.2 '@types/mime': 3.0.2 - '@types/node': 20.8.4 + '@types/node': 20.8.5 /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} @@ -4840,7 +4840,7 @@ packages: resolution: {integrity: sha512-McM1mlc7PBZpCaw0fw/36uFqo0YeA6m8JqoyE4OfqXsZCIg0hPP2xdE6FM7r6fdprDZHlJwDpydUj1R++93hCA==} dependencies: '@types/cookiejar': 2.1.2 - '@types/node': 20.8.4 + '@types/node': 20.8.5 dev: true /@types/supertest@2.0.14: @@ -4853,8 +4853,8 @@ packages: resolution: {integrity: sha512-u61LUh2sv34Bvv3n2yNM7BHCJPOOITMHL+dK9aOUdeIHJYdL142iknrPbnidnOAYGhoEesTZcKT+GIZnrm46JA==} dependencies: '@hapi/hapi': 21.1.0 - '@types/express': 4.17.18 - '@types/node': 20.8.4 + '@types/express': 4.17.19 + '@types/node': 20.8.5 fastify: 3.29.5 joi: 17.11.0 prom-client: 15.0.0 @@ -4865,7 +4865,7 @@ packages: /@types/swagger-ui-express@4.1.4: resolution: {integrity: sha512-h6dfIPFveCJKpStDtjrB+4pig4DAf9Uu2Z51RB7Fj3s6AifexmqhZxBoG50K/k3Afz7wyXsIAY5ZIDTlC2VjrQ==} dependencies: - '@types/express': 4.17.18 + '@types/express': 4.17.19 '@types/serve-static': 1.15.3 dev: true @@ -4890,8 +4890,8 @@ packages: '@types/yargs-parser': 21.0.1 dev: true - /@types/yargs@17.0.26: - resolution: {integrity: sha512-Y3vDy2X6zw/ZCumcwLpdhM5L7jmyGpmBCTYMHDLqT2IKVMYRRLdv6ZakA+wxhra6Z/3bwhNbNl9bDGXaFU+6rw==} + /@types/yargs@17.0.28: + resolution: {integrity: sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==} dependencies: '@types/yargs-parser': 21.0.1 dev: true @@ -5070,7 +5070,7 @@ packages: /@vitest/snapshot@0.34.6: resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} dependencies: - magic-string: 0.30.4 + magic-string: 0.30.5 pathe: 1.1.1 pretty-format: 29.7.0 dev: true @@ -5636,17 +5636,17 @@ packages: resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} dev: false - /babel-jest@29.7.0(@babel/core@7.23.0): + /babel-jest@29.7.0(@babel/core@7.23.2): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.2 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.23.0) + babel-preset-jest: 29.6.3(@babel/core@7.23.2) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -5677,35 +5677,35 @@ packages: '@types/babel__traverse': 7.20.2 dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.0): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.2): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.0) - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.23.0): + '@babel/core': 7.23.2 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.23.2): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.0) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) dev: true /babel-walk@3.0.0-canary-5: @@ -5881,8 +5881,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001543 - electron-to-chromium: 1.4.539 + caniuse-lite: 1.0.30001547 + electron-to-chromium: 1.4.551 node-releases: 2.0.13 update-browserslist-db: 1.0.13(browserslist@4.22.1) dev: true @@ -6003,8 +6003,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - /caniuse-lite@1.0.30001543: - resolution: {integrity: sha512-qxdO8KPWPQ+Zk6bvNpPeQIOH47qZSYdFZd6dXQzb2KzhnSXju4Kd7H1PkSJx6NICSMgo/IhRZRhhfPTHYpJUCA==} + /caniuse-lite@1.0.30001547: + resolution: {integrity: sha512-W7CrtIModMAxobGhz8iXmDfuJiiKg1WADMO/9x7/CLNin5cpSbuBjooyoIUVB5eyCc36QuTVlkVa1iB2S5+/eA==} dev: true /canvg@3.0.10: @@ -6012,7 +6012,7 @@ packages: engines: {node: '>=10.0.0'} requiresBuild: true dependencies: - '@babel/runtime': 7.23.1 + '@babel/runtime': 7.23.2 '@types/raf': 3.4.1 core-js: 3.33.0 raf: 3.4.1 @@ -6143,8 +6143,8 @@ packages: engines: {node: '>=6.0'} dev: true - /ci-info@3.8.0: - resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} /cjs-module-lexer@1.2.3: @@ -6158,7 +6158,7 @@ packages: resolution: {integrity: sha512-ct3ltplN8I9fOwUd8GrP8UQixwff129BkEtuWDKL5W45cQuLd19xqmTLu5ge78YDm/fdje6FMt0hGOhl0lii3A==} dependencies: '@types/validator': 13.11.2 - libphonenumber-js: 1.10.45 + libphonenumber-js: 1.10.47 validator: 13.11.0 /clean-regexp@1.0.0: @@ -6358,13 +6358,13 @@ packages: engines: {node: '>= 12.0.0'} dev: true - /commitizen@4.3.0(@swc/core@1.3.92): + /commitizen@4.3.0(@swc/core@1.3.93): resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} engines: {node: '>= 12'} hasBin: true dependencies: cachedir: 2.3.0 - cz-conventional-changelog: 3.3.0(@swc/core@1.3.92) + cz-conventional-changelog: 3.3.0(@swc/core@1.3.93) dedent: 0.7.0 detect-indent: 6.1.0 find-node-modules: 2.1.3 @@ -6448,10 +6448,6 @@ packages: resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} dev: true - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true - /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true @@ -6506,7 +6502,7 @@ packages: dependencies: '@types/node': 20.5.1 cosmiconfig: 8.3.6(typescript@5.2.2) - ts-node: 10.9.1(@swc/core@1.3.92)(@types/node@20.5.1)(typescript@5.2.2) + ts-node: 10.9.1(@swc/core@1.3.93)(@types/node@20.5.1)(typescript@5.2.2) typescript: 5.2.2 dev: true optional: true @@ -6540,7 +6536,7 @@ packages: dev: true optional: true - /create-jest@29.7.0(@types/node@20.8.4)(ts-node@10.9.1): + /create-jest@29.7.0(@types/node@20.8.5)(ts-node@10.9.1): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -6549,7 +6545,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.8.4)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@20.8.5)(ts-node@10.9.1) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -6623,18 +6619,18 @@ packages: rrweb-cssom: 0.6.0 dev: false - /cz-conventional-changelog@3.3.0(@swc/core@1.3.92): + /cz-conventional-changelog@3.3.0(@swc/core@1.3.93): resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} engines: {node: '>= 10'} dependencies: chalk: 2.4.2 - commitizen: 4.3.0(@swc/core@1.3.92) + commitizen: 4.3.0(@swc/core@1.3.93) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 word-wrap: 1.2.5 optionalDependencies: - '@commitlint/load': 17.7.2(@swc/core@1.3.92) + '@commitlint/load': 17.7.2(@swc/core@1.3.93) transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -6661,7 +6657,7 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.23.1 + '@babel/runtime': 7.23.2 dev: false /dateformat@4.6.3: @@ -6950,8 +6946,8 @@ packages: /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - /electron-to-chromium@1.4.539: - resolution: {integrity: sha512-wRmWJ8F7rgmINuI32S6r2SLrw/h/bJQsDSvBiq9GBfvc2Lh73qTOwn73r3Cf67mjVgFGJYcYtmERzySa5jIWlg==} + /electron-to-chromium@1.4.551: + resolution: {integrity: sha512-/Ng/W/kFv7wdEHYzxdK7Cv0BHEGSkSB3M0Ssl8Ndr1eMiYeas/+Mv4cNaDqamqWx6nd2uQZfPz6g25z25M/sdw==} dev: true /emittery@0.13.1: @@ -6987,13 +6983,13 @@ packages: resolution: {integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==} engines: {node: '>=10.0.0'} - /engine.io@6.5.2: - resolution: {integrity: sha512-IXsMcGpw/xRfjra46sVZVHiSWo/nJ/3g1337q9KNXtS6YRzbW5yIzTCb9DjhrBe7r3GZQR0I4+nq+4ODk5g/cA==} + /engine.io@6.5.3: + resolution: {integrity: sha512-IML/R4eG/pUS5w7OfcDE0jKrljWS9nwnEfsxWCIJF5eO6AHo6+Hlv+lQbdlAYsiJPHzUthLm1RUjnBzWOs45cw==} engines: {node: '>=10.2.0'} dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.14 - '@types/node': 20.8.4 + '@types/node': 20.8.5 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 @@ -7051,7 +7047,7 @@ packages: get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 - has: 1.0.3 + has: 1.0.4 has-property-descriptors: 1.0.0 has-proto: 1.0.1 has-symbols: 1.0.3 @@ -7109,14 +7105,14 @@ packages: engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.1 - has: 1.0.3 + has: 1.0.4 has-tostringtag: 1.0.0 dev: true /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: - has: 1.0.3 + has: 1.0.4 dev: true /es-to-primitive@1.2.1: @@ -7218,7 +7214,7 @@ packages: dependencies: debug: 3.2.7 is-core-module: 2.13.0 - resolve: 1.22.6 + resolve: 1.22.8 transitivePeerDependencies: - supports-color dev: true @@ -7300,7 +7296,7 @@ packages: get-tsconfig: 4.7.2 is-glob: 4.0.3 minimatch: 3.1.2 - resolve: 1.22.6 + resolve: 1.22.8 semver: 7.5.4 transitivePeerDependencies: - '@typescript-eslint/parser' @@ -7368,7 +7364,7 @@ packages: ignore: 5.2.4 is-core-module: 2.13.0 minimatch: 3.1.2 - resolve: 1.22.6 + resolve: 1.22.8 semver: 7.5.4 dev: true @@ -7406,13 +7402,13 @@ packages: object.hasown: 1.1.3 object.values: 1.1.7 prop-types: 15.8.1 - resolve: 2.0.0-next.4 + resolve: 2.0.0-next.5 semver: 6.3.1 string.prototype.matchall: 4.0.10 dev: true - /eslint-plugin-rubiin@1.8.17(eslint@8.51.0)(typescript@5.2.2): - resolution: {integrity: sha512-s5S8vPstNPpmn58K2elw4oWEtqHU1wHubdTnhjG3Q9xRd58bNRo06g/wom+kovYULqgJEDO3PJegH6yUjtDGbw==} + /eslint-plugin-rubiin@1.8.21(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-88Oeajg+3J00CaHZa07e3BOByJn8ncttH+Y3BKIFYuImn6fkhrZeWFZbFaHWq/1kUPrHIy+XmWQliUM5EpYn5w==} peerDependencies: eslint: '*' dependencies: @@ -7440,7 +7436,7 @@ packages: dependencies: '@babel/helper-validator-identifier': 7.22.20 '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) - ci-info: 3.8.0 + ci-info: 3.9.0 clean-regexp: 1.0.0 eslint: 8.51.0 esquery: 1.5.0 @@ -7577,7 +7573,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.22.0 + globals: 13.23.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -7878,8 +7874,8 @@ packages: string-similarity: 4.0.4 dev: true - /fast-jwt@3.3.0: - resolution: {integrity: sha512-tN33BAxlfnMrStYTvHwnoCoTZj9e7sGWfWGg/Naluxe6I5IsF7J2UwEjCJvJ7YD6fyAUo0WWd+OrBIFAmfZPrw==} + /fast-jwt@3.3.1: + resolution: {integrity: sha512-1YuuIJeh1hEvfcYDe89P2oGACWI5hd2GadRDKHalSxkc1Z0z8I6yzuVK6SF15sW09QZngTV6d7g4+TFL9bvs5A==} engines: {node: '>=16 <22'} dependencies: '@lukeed/ms': 2.0.1 @@ -7980,7 +7976,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.1.0 + flat-cache: 3.1.1 dev: true /fill-range@7.0.1: @@ -8061,9 +8057,9 @@ packages: '@fastify/busboy': 1.2.1 '@firebase/database-compat': 0.3.4 '@firebase/database-types': 0.10.4 - '@types/node': 20.8.4 + '@types/node': 20.8.5 jsonwebtoken: 9.0.2 - jwks-rsa: 3.0.1 + jwks-rsa: 3.1.0 node-forge: 1.3.1 uuid: 9.0.1 optionalDependencies: @@ -8086,12 +8082,12 @@ packages: rc: 1.2.8 dev: false - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} engines: {node: '>=12.0.0'} dependencies: flatted: 3.2.9 - keyv: 4.5.3 + keyv: 4.5.4 rimraf: 3.0.2 dev: true @@ -8140,7 +8136,7 @@ packages: semver: 7.5.4 tapable: 2.2.1 typescript: 5.2.2 - webpack: 5.88.2(@swc/core@1.3.92) + webpack: 5.88.2(@swc/core@1.3.93) dev: true /form-data@4.0.0: @@ -8308,7 +8304,7 @@ packages: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 - has: 1.0.3 + has: 1.0.4 has-proto: 1.0.1 has-symbols: 1.0.3 @@ -8440,13 +8436,6 @@ packages: engines: {node: '>=4'} dev: true - /globals@13.22.0: - resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - /globals@13.23.0: resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} @@ -8638,11 +8627,9 @@ packages: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} dev: false - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + /has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} @@ -8661,8 +8648,8 @@ packages: readable-stream: 3.6.2 dev: false - /helper-fns@2.6.27: - resolution: {integrity: sha512-6wQ8Z+M05b9/hKk7Sxlt51d9cwc0xm/4ZAqHcOBQPrbBR45Vu8PFClkJ35e7RZTgkj2B+lEmVo8dijeXW3c5NA==} + /helper-fns@2.6.30: + resolution: {integrity: sha512-CKCXEDBl5aasxEs6L+8JY0r/u2vtoN2u+4ewzT5GmCRT+AvoRQ7ZIbN5tVDH4KkqyLC0+0rprnxhi8nNAu9ihw==} dev: false /hexoid@1.0.0: @@ -8915,7 +8902,7 @@ packages: engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.2.1 - has: 1.0.3 + has: 1.0.4 side-channel: 1.0.4 dev: true @@ -9033,7 +9020,7 @@ packages: /is-core-module@2.13.0: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: - has: 1.0.3 + has: 1.0.4 /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -9268,7 +9255,7 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/parser': 7.23.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -9277,11 +9264,11 @@ packages: - supports-color dev: true - /istanbul-lib-instrument@6.0.0: - resolution: {integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==} + /istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/parser': 7.23.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 @@ -9355,7 +9342,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.4 + '@types/node': 20.8.5 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -9376,7 +9363,7 @@ packages: - supports-color dev: true - /jest-cli@29.7.0(@types/node@20.8.4)(ts-node@10.9.1): + /jest-cli@29.7.0(@types/node@20.8.5)(ts-node@10.9.1): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -9390,10 +9377,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.8.4)(ts-node@10.9.1) + create-jest: 29.7.0(@types/node@20.8.5)(ts-node@10.9.1) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.8.4)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@20.8.5)(ts-node@10.9.1) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -9404,7 +9391,7 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@20.8.4)(ts-node@10.9.1): + /jest-config@29.7.0(@types/node@20.8.5)(ts-node@10.9.1): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -9416,13 +9403,13 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.4 - babel-jest: 29.7.0(@babel/core@7.23.0) + '@types/node': 20.8.5 + babel-jest: 29.7.0(@babel/core@7.23.2) chalk: 4.1.2 - ci-info: 3.8.0 + ci-info: 3.9.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 @@ -9439,7 +9426,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@swc/core@1.3.92)(@types/node@20.8.4)(typescript@5.2.2) + ts-node: 10.9.1(@swc/core@1.3.93)(@types/node@20.8.5)(typescript@5.2.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -9480,7 +9467,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.4 + '@types/node': 20.8.5 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -9496,7 +9483,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.7 - '@types/node': 20.8.4 + '@types/node': 20.8.5 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -9547,7 +9534,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.8.4 + '@types/node': 20.8.5 jest-util: 29.7.0 dev: true @@ -9588,7 +9575,7 @@ packages: jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) jest-util: 29.7.0 jest-validate: 29.7.0 - resolve: 1.22.6 + resolve: 1.22.8 resolve.exports: 2.0.2 slash: 3.0.0 dev: true @@ -9602,7 +9589,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.4 + '@types/node': 20.8.5 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -9633,7 +9620,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.4 + '@types/node': 20.8.5 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -9656,15 +9643,15 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.23.0 + '@babel/core': 7.23.2 '@babel/generator': 7.23.0 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.0) - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.0) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.23.2) '@babel/types': 7.23.0 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.0) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.2) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -9685,9 +9672,9 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.8.4 + '@types/node': 20.8.5 chalk: 4.1.2 - ci-info: 3.8.0 + ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 dev: true @@ -9710,7 +9697,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.8.4 + '@types/node': 20.8.5 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -9722,7 +9709,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -9731,13 +9718,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.7.0(@types/node@20.8.4)(ts-node@10.9.1): + /jest@29.7.0(@types/node@20.8.5)(ts-node@10.9.1): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -9750,7 +9737,7 @@ packages: '@jest/core': 29.7.0(ts-node@10.9.1) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.8.4)(ts-node@10.9.1) + jest-cli: 29.7.0(@types/node@20.8.5)(ts-node@10.9.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -9767,8 +9754,8 @@ packages: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - /jose@4.15.1: - resolution: {integrity: sha512-CinpaEMmwb/59YG0N6SC3DY1imdTU5iNl08HPWR7NdyxACPeFuQbqjaocEjCDGq04KbnxSqQu702vL3ZTvKe5w==} + /jose@4.15.3: + resolution: {integrity: sha512-RZJdL9Qjd1sqNdyiVteRGV/bnWtik/+PJh1JP4kT6+x1QQMn+7ryueRys5BEueuayvSVY8CWGCisCDazeRLTuw==} dev: false /joycon@3.1.1: @@ -9982,7 +9969,7 @@ packages: /jspdf@2.5.1: resolution: {integrity: sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==} dependencies: - '@babel/runtime': 7.23.1 + '@babel/runtime': 7.23.2 atob: 2.1.2 btoa: 1.2.1 fflate: 0.4.8 @@ -10028,14 +10015,14 @@ packages: dev: false optional: true - /jwks-rsa@3.0.1: - resolution: {integrity: sha512-UUOZ0CVReK1QVU3rbi9bC7N5/le8ziUj0A2ef1Q0M7OPD2KvjEYizptqIxGIo6fSLYDkqBrazILS18tYuRc8gw==} + /jwks-rsa@3.1.0: + resolution: {integrity: sha512-v7nqlfezb9YfHHzYII3ef2a2j1XnGeSE/bK3WfumaYCqONAIstJbrEGapz4kadScZzEt7zYCN7bucj8C0Mv/Rg==} engines: {node: '>=14'} dependencies: - '@types/express': 4.17.18 + '@types/express': 4.17.19 '@types/jsonwebtoken': 9.0.3 debug: 4.3.4 - jose: 4.15.1 + jose: 4.15.3 limiter: 1.1.5 lru-memoizer: 2.2.0 transitivePeerDependencies: @@ -10065,8 +10052,8 @@ packages: tsscmp: 1.0.6 dev: false - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 dev: true @@ -10179,8 +10166,8 @@ packages: libqp: 2.0.1 dev: false - /libphonenumber-js@1.10.45: - resolution: {integrity: sha512-eeHcvGafEYCaKB4fo2uBINfG7j7PcGwBHUaTVfbwl/6KcjCgIKNlIOsSXVRp9BH10NQwmvvk+nQ1e/Yp4BGB7w==} + /libphonenumber-js@1.10.47: + resolution: {integrity: sha512-b4t7VQDV29xx/ni+58yl9KWPGjnDLDXCeCTLrD4V8vDpObXZRZBrg7uX/HWZ7YXiJKqdBDGgc+barUUTNB6Slw==} /libqp@2.0.1: resolution: {integrity: sha512-Ka0eC5LkF3IPNQHJmYBWljJsw0UvM6j+QdKRbWyCdTmYwvIDE6a7bCm0UkTAL/K+3KXK5qXT/ClcInU01OpdLg==} @@ -10464,8 +10451,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /magic-string@0.30.4: - resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -10870,7 +10857,7 @@ packages: '@lukeed/ms': 2.0.1 '@nestjs/common': 10.2.7(class-transformer@0.5.1)(class-validator@0.14.0)(reflect-metadata@0.1.13)(rxjs@7.8.1) '@nestjs/core': 10.2.7(@nestjs/common@10.2.7)(@nestjs/platform-express@10.2.7)(@nestjs/websockets@10.2.7)(reflect-metadata@0.1.13)(rxjs@7.8.1) - fast-jwt: 3.3.0 + fast-jwt: 3.3.1 dev: false /nestjs-i18n@10.3.6(@nestjs/common@10.2.7)(@nestjs/core@10.2.7)(class-validator@0.14.0)(rxjs@7.8.1): @@ -10937,8 +10924,8 @@ packages: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} dev: false - /node-abi@3.47.0: - resolution: {integrity: sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==} + /node-abi@3.50.0: + resolution: {integrity: sha512-2Gxu7Eq7vnBIRfYSmqPruEllMM14FjOQFJSoqdGWthVn+tmwEXzmdPpya6cvvwf0uZA3F5N1fMFr9mijZBplFA==} engines: {node: '>=10'} dependencies: semver: 7.5.4 @@ -11012,7 +10999,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.6 + resolve: 1.22.8 semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: true @@ -11600,7 +11587,7 @@ packages: resolution: {integrity: sha512-kLGKNLyfWfdmrG1Ug0YdYpCTGbNcuD/YGC3g+elRU/Cm44UTs+tj/dZTxDN3bYauekxFxdLZhJuZdKKl0cml9w==} dependencies: get-caller-file: 2.0.5 - pino: 8.15.4 + pino: 8.16.0 pino-std-serializers: 6.2.2 process-warning: 2.2.0 dev: false @@ -11621,7 +11608,7 @@ packages: pump: 3.0.0 readable-stream: 4.4.2 secure-json-parse: 2.7.0 - sonic-boom: 3.5.0 + sonic-boom: 3.7.0 strip-json-comments: 3.1.1 dev: false @@ -11646,8 +11633,8 @@ packages: sonic-boom: 1.4.1 dev: true - /pino@8.15.4: - resolution: {integrity: sha512-3s+SfSxeugMt8QeBVXprIJAgXuGDeGuHBfquXKEXKnpghlXzMGMjoa8tOSyzz00iBfQX3xlZvm2yJQ+d6SrVsg==} + /pino@8.16.0: + resolution: {integrity: sha512-UUmvQ/7KTZt/vHjhRrnyS7h+J7qPBQnpG80V56xmIC+o9IqYmQOw/UIny9S9zYDfRBR0ClouCr464EkBMIT7Fw==} hasBin: true dependencies: atomic-sleep: 1.0.0 @@ -11659,7 +11646,7 @@ packages: quick-format-unescaped: 4.0.4 real-require: 0.2.0 safe-stable-stringify: 2.4.3 - sonic-boom: 3.5.0 + sonic-boom: 3.7.0 thread-stream: 2.4.1 dev: false @@ -11749,7 +11736,7 @@ packages: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.47.0 + node-abi: 3.50.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 @@ -11782,7 +11769,7 @@ packages: resolution: {integrity: sha512-DBS3Nir18YtKc8loYCCOGitmiaQ0vTdahPoiXxwNweJDpmVZo+w3tppufOhoK0m8skpRxT56llYLs3VrORnmNQ==} engines: {node: '>=14'} dependencies: - ci-info: 3.8.0 + ci-info: 3.9.0 display-notification: 2.0.0 fixpack: 4.0.0 get-port: 5.1.1 @@ -11890,7 +11877,7 @@ packages: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.8.4 + '@types/node': 20.8.5 long: 5.2.3 dev: false optional: true @@ -11910,7 +11897,7 @@ packages: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.8.4 + '@types/node': 20.8.5 long: 5.2.3 dev: false optional: true @@ -11966,7 +11953,7 @@ packages: jstransformer: 1.0.0 pug-error: 2.0.0 pug-walk: 2.0.0 - resolve: 1.22.6 + resolve: 1.22.8 dev: false /pug-lexer@5.0.1: @@ -12171,7 +12158,7 @@ packages: '@types/normalize-package-data': 2.4.2 normalize-package-data: 6.0.0 parse-json: 7.1.0 - type-fest: 4.3.3 + type-fest: 4.4.0 dev: false /readable-stream@1.1.14: @@ -12228,14 +12215,14 @@ packages: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} dependencies: - resolve: 1.22.6 + resolve: 1.22.8 dev: true /rechoir@0.8.0: resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} engines: {node: '>= 10.13.0'} dependencies: - resolve: 1.22.6 + resolve: 1.22.8 /redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} @@ -12378,16 +12365,16 @@ packages: engines: {node: '>=10'} dev: true - /resolve@1.22.6: - resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@2.0.0-next.4: - resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true dependencies: is-core-module: 2.13.0 @@ -12794,7 +12781,7 @@ packages: base64id: 2.0.0 cors: 2.8.5 debug: 4.3.4 - engine.io: 6.5.2 + engine.io: 6.5.3 socket.io-adapter: 2.5.2 socket.io-parser: 4.2.4 transitivePeerDependencies: @@ -12809,8 +12796,8 @@ packages: flatstr: 1.0.12 dev: true - /sonic-boom@3.5.0: - resolution: {integrity: sha512-02A0wEmj4d3aEIW/Sp6LMP1dNcG5cYmQPjhgtytIXa9tNmFZx3ragUPFmyBdgdM0yJJVSWwlLLEVHgrYfA0wtQ==} + /sonic-boom@3.7.0: + resolution: {integrity: sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==} dependencies: atomic-sleep: 1.0.0 dev: false @@ -12847,7 +12834,7 @@ packages: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.15 + spdx-license-ids: 3.0.16 /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} @@ -12856,10 +12843,10 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.15 + spdx-license-ids: 3.0.16 - /spdx-license-ids@3.0.15: - resolution: {integrity: sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==} + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} /split-on-first@1.1.0: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} @@ -13092,7 +13079,7 @@ packages: resolution: {integrity: sha512-8UGpNdM7oxjhqnNQB6/ouhT9reM80+A6a+NScg3rwzK2f0W/q8M+MdUivG1hL6wAdqF8DE8K2IbdzwwJCZ4WPw==} engines: {node: '>=12.*'} dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 qs: 6.11.2 dev: false @@ -13300,7 +13287,7 @@ packages: dev: false optional: true - /terser-webpack-plugin@5.3.9(@swc/core@1.3.92)(webpack@5.88.2): + /terser-webpack-plugin@5.3.9(@swc/core@1.3.93)(webpack@5.88.2): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -13317,12 +13304,12 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.19 - '@swc/core': 1.3.92 + '@swc/core': 1.3.93 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.21.0 - webpack: 5.88.2(@swc/core@1.3.92) + webpack: 5.88.2(@swc/core@1.3.93) dev: true /terser@5.21.0: @@ -13495,7 +13482,7 @@ packages: semver: 7.5.4 source-map: 0.7.4 typescript: 5.2.2 - webpack: 5.88.2(@swc/core@1.3.92) + webpack: 5.88.2(@swc/core@1.3.93) dev: true /ts-morph@20.0.0: @@ -13505,7 +13492,7 @@ packages: code-block-writer: 12.0.0 dev: false - /ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.5.1)(typescript@5.2.2): + /ts-node@10.9.1(@swc/core@1.3.93)(@types/node@20.5.1)(typescript@5.2.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -13520,7 +13507,7 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.3.92 + '@swc/core': 1.3.93 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 @@ -13538,7 +13525,7 @@ packages: dev: true optional: true - /ts-node@10.9.1(@swc/core@1.3.92)(@types/node@20.8.4)(typescript@5.2.2): + /ts-node@10.9.1(@swc/core@1.3.93)(@types/node@20.8.5)(typescript@5.2.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -13553,12 +13540,12 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.3.92 + '@swc/core': 1.3.93 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.8.4 + '@types/node': 20.8.5 acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 @@ -13678,8 +13665,8 @@ packages: resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} engines: {node: '>=14.16'} - /type-fest@4.3.3: - resolution: {integrity: sha512-bxhiFii6BBv6UiSDq7uKTMyADT9unXEl3ydGefndVLxFeB44LRbT4K7OJGDYSyDrKnklCC1Pre68qT2wbUl2Aw==} + /type-fest@4.4.0: + resolution: {integrity: sha512-HT3RRs7sTfY22KuPQJkD/XjbTbxgP2Je5HPt6H6JEGvcjHd5Lqru75EbrP3tb4FYjNJ+DjLp+MNQTFQU0mhXNw==} engines: {node: '>=16'} dev: false @@ -13895,13 +13882,13 @@ packages: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true - /v8-to-istanbul@9.1.0: - resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} + /v8-to-istanbul@9.1.3: + resolution: {integrity: sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==} engines: {node: '>=10.12.0'} dependencies: '@jridgewell/trace-mapping': 0.3.19 '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.9.0 + convert-source-map: 2.0.0 dev: true /validate-npm-package-license@3.0.4: @@ -13925,7 +13912,7 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - /vite-node@0.34.6(@types/node@20.8.4): + /vite-node@0.34.6(@types/node@20.8.5): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -13935,7 +13922,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.10(@types/node@20.8.4) + vite: 4.4.11(@types/node@20.8.5) transitivePeerDependencies: - '@types/node' - less @@ -13947,8 +13934,8 @@ packages: - terser dev: true - /vite@4.4.10(@types/node@20.8.4): - resolution: {integrity: sha512-TzIjiqx9BEXF8yzYdF2NTf1kFFbjMjUSV0LFZ3HyHoI3SGSPLnnFUKiIQtL3gl2AjHvMrprOvQ3amzaHgQlAxw==} + /vite@4.4.11(@types/node@20.8.5): + resolution: {integrity: sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -13975,7 +13962,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.8.4 + '@types/node': 20.8.5 esbuild: 0.18.20 postcss: 8.4.31 rollup: 3.29.4 @@ -14014,9 +14001,9 @@ packages: webdriverio: optional: true dependencies: - '@types/chai': 4.3.6 + '@types/chai': 4.3.8 '@types/chai-subset': 1.3.3 - '@types/node': 20.8.4 + '@types/node': 20.8.5 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -14028,15 +14015,15 @@ packages: chai: 4.3.10 debug: 4.3.4 local-pkg: 0.4.3 - magic-string: 0.30.4 + magic-string: 0.30.5 pathe: 1.1.1 picocolors: 1.0.0 std-env: 3.4.3 strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 4.4.10(@types/node@20.8.4) - vite-node: 0.34.6(@types/node@20.8.4) + vite: 4.4.11(@types/node@20.8.5) + vite-node: 0.34.6(@types/node@20.8.5) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -14124,7 +14111,7 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack@5.88.2(@swc/core@1.3.92): + /webpack@5.88.2(@swc/core@1.3.93): resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -14155,7 +14142,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(@swc/core@1.3.92)(webpack@5.88.2) + terser-webpack-plugin: 5.3.9(@swc/core@1.3.93)(webpack@5.88.2) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: diff --git a/src/common/@types/classes/common.response.ts b/src/common/@types/classes/common.response.ts index f89b65ea..83cd641c 100644 --- a/src/common/@types/classes/common.response.ts +++ b/src/common/@types/classes/common.response.ts @@ -2,14 +2,15 @@ export class AuthenticationResponse { /** * @example fb9eac5f-eb94-489b-8fca-24324558be18 */ - user: { + user!: { idx?: string + id: number }; /** * @example eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXKYjj.eyJ */ - accessToken: string; + accessToken!: string; /** * @example eyJh3d06e6e3e152ae839a6623c3cb6f961a.eyJ diff --git a/src/common/@types/classes/cursor.response.ts b/src/common/@types/classes/cursor.response.ts index 02e8f67a..e7222200 100644 --- a/src/common/@types/classes/cursor.response.ts +++ b/src/common/@types/classes/cursor.response.ts @@ -7,19 +7,19 @@ export class CursorMeta { * @example AdVxY2F0ZWdvcnlfaWQ9MjMx */ @ApiProperty() - nextCursor: string; + nextCursor!: string; /** * @example false */ @ApiProperty() - hasNextPage: boolean; + hasNextPage!: boolean; /** * @example true */ @ApiProperty() - hasPreviousPage: boolean; + hasPreviousPage!: boolean; /** * @example "lorem ipsum" @@ -31,8 +31,8 @@ export class CursorMeta { export class CursorPaginationResponse implements PaginationAbstractResponse { @IsArray() @ApiProperty({ isArray: true }) - readonly data: T[]; + readonly data!: T[]; @ApiProperty({ type: () => CursorMeta }) - readonly meta: CursorMeta; + readonly meta!: CursorMeta; } diff --git a/src/common/@types/global.d.ts b/src/common/@types/global.d.ts index a1820e37..bf82da84 100644 --- a/src/common/@types/global.d.ts +++ b/src/common/@types/global.d.ts @@ -47,6 +47,7 @@ declare global { JWT_ACCESS_EXPIRY: string JWT_REFRESH_EXPIRY: string JWT_SECRET: string + MAGIC_LINK_EXPIRY: string MAIL_HOST: string MAIL_PASSWORD: string diff --git a/src/common/@types/interfaces/authentication.interface.ts b/src/common/@types/interfaces/authentication.interface.ts index c0b311c3..521b9c0a 100644 --- a/src/common/@types/interfaces/authentication.interface.ts +++ b/src/common/@types/interfaces/authentication.interface.ts @@ -1,7 +1,7 @@ export interface OauthResponse { email: string - firstName?: string - lastName?: string + firstName: string + lastName: string accessToken: string } diff --git a/src/common/@types/interfaces/mail.interface.ts b/src/common/@types/interfaces/mail.interface.ts index 89bd0708..31a040c9 100644 --- a/src/common/@types/interfaces/mail.interface.ts +++ b/src/common/@types/interfaces/mail.interface.ts @@ -2,7 +2,7 @@ import type { EmailTemplate } from "../enums"; export interface MailPayload { template: string - replacements?: Record + replacements: Record to: string subject: string from: string diff --git a/src/common/constant/string.constants.ts b/src/common/constant/string.constants.ts index 1d4487ef..6f2ea648 100644 --- a/src/common/constant/string.constants.ts +++ b/src/common/constant/string.constants.ts @@ -15,7 +15,7 @@ const packageJson = readPackageSync(); export const APP_NAME = packageJson.name; export const SWAGGER_API_CURRENT_VERSION = packageJson.version; -export const SWAGGER_DESCRIPTION = packageJson.description; +export const SWAGGER_DESCRIPTION = packageJson.description!; export const SWAGGER_TITLE = `${capitalize(APP_NAME)} API Documentation`; export const SWAGGER_API_ENDPOINT = "doc"; diff --git a/src/common/database/base.repository.ts b/src/common/database/base.repository.ts index 64d4633e..899eeb30 100644 --- a/src/common/database/base.repository.ts +++ b/src/common/database/base.repository.ts @@ -1,3 +1,5 @@ +/* // eslint-disable-file ts/dot-notation */ + import type { Dictionary, EntityData, @@ -445,7 +447,7 @@ export class BaseRepository extends EntityRepository { const length = instances.length; if (length > 0) { - const last = instances[length - 1][cursor] as string | number | Date; + const last = instances[length - 1]![cursor] as string | number | Date; pages.meta.nextCursor = this.encodeCursor(last); pages.meta.hasNextPage = currentCount > first; @@ -483,11 +485,11 @@ export class BaseRepository extends EntityRepository { const oppositeOrder = getOppositeOrder(order); const countWhere = where; - // eslint-disable-next-line ts/dot-notation + //@ts-expect-error countWhere["$and"] = this.getFilters("createdAt", decoded, oppositeOrder); previousCount = await repo.count(countWhere); - // eslint-disable-next-line ts/dot-notation + //@ts-expect-error where["$and"] = this.getFilters("createdAt", decoded, queryOrder); } diff --git a/src/common/database/mikro-orm.encrypted.ts b/src/common/database/mikro-orm.encrypted.ts index 432a21df..c20d137b 100644 --- a/src/common/database/mikro-orm.encrypted.ts +++ b/src/common/database/mikro-orm.encrypted.ts @@ -6,7 +6,7 @@ export class EncryptedType extends Type { private readonly encKey = process.env.ENC_KEY; private readonly encIV = process.env.ENC_IV; - convertToDatabaseValue(value: string | undefined, _platform: Platform): string { + convertToDatabaseValue(value: string , _platform: Platform): string { if (value && !(typeof value.valueOf() === "string")) throw ValidationError.invalidType(EncryptedType, value, "JS"); diff --git a/src/common/database/user.subscriber.ts b/src/common/database/user.subscriber.ts index f5e97e66..70f599b1 100644 --- a/src/common/database/user.subscriber.ts +++ b/src/common/database/user.subscriber.ts @@ -13,12 +13,14 @@ export class UserSubscriber implements EventSubscriber { } async beforeCreate(arguments_: EventArgs): Promise { - if (arguments_.changeSet.payload?.password) + if (arguments_.changeSet?.payload?.password) arguments_.entity.password = await HelperService.hashString(arguments_.entity.password); } + async beforeUpdate(arguments_: EventArgs): Promise { - if (arguments_.changeSet.payload?.password) - arguments_.entity.password = await HelperService.hashString(arguments_.entity.password); - } + if (arguments_.changeSet?.payload?.password) + arguments_.entity.password = await HelperService.hashString(arguments_.entity.password); + } + } diff --git a/src/common/decorators/api-file.decorator.ts b/src/common/decorators/api-file.decorator.ts index db5a9d63..f2da68a8 100644 --- a/src/common/decorators/api-file.decorator.ts +++ b/src/common/decorators/api-file.decorator.ts @@ -27,7 +27,7 @@ interface ApiFilesOptions extends ApiFileOptions { * @returns A function that returns a decorator. */ export function ApiFile(options_?: ApiFileOptions) { - const options: ApiFileOptions = { fieldName: "file", required: false, ...options_ }; + const options = { fieldName: "file", required: false, ...options_ } satisfies ApiFilesOptions return applyDecorators( UseInterceptors(FileInterceptor(options.fieldName, options.localOptions)), @@ -54,12 +54,12 @@ export function ApiFile(options_?: ApiFileOptions) { * @returns A function that returns a decorator. */ export function ApiFiles(options_?: ApiFilesOptions) { - const options: ApiFilesOptions = { + const options = { fieldName: "files", required: false, maxCount: 10, ...options_, - }; + } satisfies ApiFilesOptions; return applyDecorators( UseInterceptors( diff --git a/src/common/decorators/auth.decorator.ts b/src/common/decorators/auth.decorator.ts index 4e959046..146b3b03 100644 --- a/src/common/decorators/auth.decorator.ts +++ b/src/common/decorators/auth.decorator.ts @@ -17,11 +17,11 @@ interface AuthGuard { */ export function Auth(options_?: AuthGuard) { - const options: AuthGuard = { + const options = { guards: [JwtAuthGuard, PoliciesGuard], unauthorizedResponse: API_UNAUTHORISED_RESPONSE, ...options_, - }; + } satisfies AuthGuard; return applyDecorators( UseGuards(...options.guards), diff --git a/src/common/decorators/swagger-api.decorator.ts b/src/common/decorators/swagger-api.decorator.ts index 979af9d4..7a171fde 100644 --- a/src/common/decorators/swagger-api.decorator.ts +++ b/src/common/decorators/swagger-api.decorator.ts @@ -16,7 +16,9 @@ export function SwaggerResponse({ notFound, badRequest, params, + //@ts-ignore body, + //@ts-ignore response, }: SwaggerResponseOptions) { const decsToApply = [ApiOperation({ summary: operation })]; diff --git a/src/common/decorators/validation/is-after.validator.ts b/src/common/decorators/validation/is-after.validator.ts index d93ff0df..b4793348 100644 --- a/src/common/decorators/validation/is-after.validator.ts +++ b/src/common/decorators/validation/is-after.validator.ts @@ -13,7 +13,7 @@ import { isAfter } from "date-fns"; class IsAfterConstraint implements ValidatorConstraintInterface { async validate(value: string, arguments_: ValidationArguments) { const [relatedPropertyName] = arguments_.constraints; - const relatedValue = (arguments_.object)[relatedPropertyName] as string | Date; + const relatedValue = (arguments_.object as Record)[relatedPropertyName] as string | Date; return isAfter(new Date(value), new Date(relatedValue)); } diff --git a/src/common/decorators/validation/is-date-field.validator.ts b/src/common/decorators/validation/is-date-field.validator.ts index 7339c18f..2081441d 100644 --- a/src/common/decorators/validation/is-date-field.validator.ts +++ b/src/common/decorators/validation/is-date-field.validator.ts @@ -16,7 +16,8 @@ export function IsDateField(options_?: DateFieldOptions) { arrayMinSize: 0, arrayMaxSize: Number.MAX_SAFE_INTEGER, ...options_, - }; + } satisfies DateFieldOptions; + const decoratorsToApply = [ IsDateString( { strict: true }, diff --git a/src/common/decorators/validation/is-date-format.validator.ts b/src/common/decorators/validation/is-date-format.validator.ts index 1c8713e7..1761b97d 100644 --- a/src/common/decorators/validation/is-date-format.validator.ts +++ b/src/common/decorators/validation/is-date-format.validator.ts @@ -31,9 +31,9 @@ class IsDateInFormatConstraint implements ValidatorConstraintInterface { const [format] = arguments_.constraints as string[]; if (isArray(value)) - return value.some(v => isMatch(v, format)); + return value.some(v => isMatch(v, format!)); - return isMatch(value, format); + return isMatch(value, format!); } defaultMessage(arguments_: ValidationArguments) { diff --git a/src/common/decorators/validation/is-equal-to.validator.ts b/src/common/decorators/validation/is-equal-to.validator.ts index c7cbf27c..f6a8e541 100644 --- a/src/common/decorators/validation/is-equal-to.validator.ts +++ b/src/common/decorators/validation/is-equal-to.validator.ts @@ -12,7 +12,7 @@ import { class IsEqualToConstraint implements ValidatorConstraintInterface { async validate(value: string, arguments_: ValidationArguments) { const [relatedPropertyName] = arguments_.constraints; - const relatedValue = (arguments_.object)[relatedPropertyName]; + const relatedValue = (arguments_.object as Record)[relatedPropertyName] return value === relatedValue; } diff --git a/src/common/decorators/validation/is-greater-than.validator.ts b/src/common/decorators/validation/is-greater-than.validator.ts index 88825282..bdfb1c39 100644 --- a/src/common/decorators/validation/is-greater-than.validator.ts +++ b/src/common/decorators/validation/is-greater-than.validator.ts @@ -12,7 +12,7 @@ import { class IsGreaterThanConstraint implements ValidatorConstraintInterface { async validate(value: string, arguments_: ValidationArguments) { const [relatedPropertyName] = arguments_.constraints; - const relatedValue: string = (arguments_.object)[relatedPropertyName]; + const relatedValue = (arguments_.object as Record)[relatedPropertyName] as string; return Number.parseFloat(value) > Number.parseFloat(relatedValue); } diff --git a/src/common/decorators/validation/is-number-field.decorator.ts b/src/common/decorators/validation/is-number-field.decorator.ts index ff03307f..817481bd 100644 --- a/src/common/decorators/validation/is-number-field.decorator.ts +++ b/src/common/decorators/validation/is-number-field.decorator.ts @@ -21,7 +21,7 @@ import type { NumberFieldOptions } from "@common/@types"; */ export function IsNumberField(options_?: NumberFieldOptions) { - const options: NumberFieldOptions = { + const options = { min: 1, required: true, each: false, @@ -31,7 +31,8 @@ export function IsNumberField(options_?: NumberFieldOptions) { int: true, positive: true, ...options_, - }; + } satisfies NumberFieldOptions; + const decoratorsToApply = [ Type(() => Number), Min(options.min, { diff --git a/src/common/decorators/validation/is-string-field.decorator.ts b/src/common/decorators/validation/is-string-field.decorator.ts index 154ee4e2..acd3242d 100644 --- a/src/common/decorators/validation/is-string-field.decorator.ts +++ b/src/common/decorators/validation/is-string-field.decorator.ts @@ -21,7 +21,7 @@ import { Sanitize, Trim } from "./transform.decorator"; */ export function IsStringField(options_?: StringFieldOptions) { - const options: StringFieldOptions = { + const options = { required: true, each: false, sanitize: true, @@ -31,7 +31,8 @@ export function IsStringField(options_?: StringFieldOptions) { arrayMinSize: 0, arrayMaxSize: Number.MAX_SAFE_INTEGER, ...options_, - }; + } satisfies StringFieldOptions; + const decoratorsToApply = [ IsString({ message: validationI18nMessage("validation.isDataType", { diff --git a/src/common/decorators/validation/is-uuid.validator.ts b/src/common/decorators/validation/is-uuid.validator.ts index 000df438..32132ca2 100644 --- a/src/common/decorators/validation/is-uuid.validator.ts +++ b/src/common/decorators/validation/is-uuid.validator.ts @@ -9,11 +9,12 @@ import { validationI18nMessage } from "@lib/i18n"; * @returns A decorator function that takes in a target, propertyKey, and descriptor. */ export function IsUUIDField(options_?: UUIDFieldOptions) { - const options: UUIDFieldOptions = { + const options = { each: false, required: true, ...options_, - }; + } satisfies UUIDFieldOptions; + const decoratorsToApply = [ IsUUID("4", { message: validationI18nMessage("validation.isDataType", { diff --git a/src/common/decorators/validation/min-max-length.decorator.ts b/src/common/decorators/validation/min-max-length.decorator.ts index 83fd9e3e..1a467ea7 100644 --- a/src/common/decorators/validation/min-max-length.decorator.ts +++ b/src/common/decorators/validation/min-max-length.decorator.ts @@ -9,7 +9,7 @@ import { validationI18nMessage } from "@lib/i18n"; * @returns A function that takes in a target, propertyKey, and descriptor */ export function MinMaxLength(options_?: MinMaxLengthOptions) { - const options: MinMaxLengthOptions = { minLength: 2, maxLength: 500, each: false, ...options_ }; + const options = { minLength: 2, maxLength: 500, each: false, ...options_ }; return applyDecorators( MinLength(options.minLength, { diff --git a/src/common/decorators/validation/validation-field.generator.ts b/src/common/decorators/validation/validation-field.generator.ts index 87cf6643..721630a1 100644 --- a/src/common/decorators/validation/validation-field.generator.ts +++ b/src/common/decorators/validation/validation-field.generator.ts @@ -18,17 +18,17 @@ import type { NumberFieldOptions, StringFieldOptions } from "@common/@types"; import { Sanitize, Trim } from "./transform.decorator"; export class ValidatorFieldBuilder { - private decoratorsToApply: PropertyDecorator[]; + private decoratorsToApply!: PropertyDecorator[]; constructor(readonly options: NumberFieldOptions & StringFieldOptions) {} number() { this.decoratorsToApply.push( Type(() => Number), - Min(this.options.min, { + Min(this.options.min!, { message: validationI18nMessage("validation.min"), }), - Max(this.options.max, { + Max(this.options.max!, { message: validationI18nMessage("validation.max"), }), ); diff --git a/src/common/dtos/pagination.dto.ts b/src/common/dtos/pagination.dto.ts index 8782dd19..4b495320 100644 --- a/src/common/dtos/pagination.dto.ts +++ b/src/common/dtos/pagination.dto.ts @@ -23,7 +23,7 @@ export abstract class PaginationDto { * The search query */ @IsStringField({ required: false, minLength: 1, maxLength: 100 }) - search: string; + search?: string; /** * The `withDeleted` property is a boolean flag that diff --git a/src/common/guards/auth.guard.ts b/src/common/guards/auth.guard.ts index 9687b25c..442fac35 100644 --- a/src/common/guards/auth.guard.ts +++ b/src/common/guards/auth.guard.ts @@ -23,7 +23,12 @@ export class AuthGuard implements CanActivate { throw new UnauthorizedException(translate("exception.apiUnauthorizedResponse")); try { - const decoded: { idx: string } = this.jwt.verify(token.split(" ")[1]); + const tokenValue = token.split(" ")[1] + + if(!tokenValue){ + return false; + } + const decoded: { idx: string } = this.jwt.verify(tokenValue); request.idx = decoded.idx; diff --git a/src/common/guards/throttle.guard.ts b/src/common/guards/throttle.guard.ts index 22b57d82..c4e5988e 100644 --- a/src/common/guards/throttle.guard.ts +++ b/src/common/guards/throttle.guard.ts @@ -8,6 +8,13 @@ export class CustomThrottlerGuard extends ThrottlerGuard { protected errorMessage = THROTTLE_LIMIT_RESPONSE; protected async getTracker(request: Request): Promise { - return request.ips.length > 0 ? request.ips[0] : request.ip; + if (request.ips.length > 0 && request.ips[0]) { + return request.ips[0]; + } else if (request.ip) { + return request.ip; + } + throw new Error("Unable to get IP address"); + } + } diff --git a/src/common/helpers/helpers.utils.ts b/src/common/helpers/helpers.utils.ts index 307bf902..b591ad2f 100644 --- a/src/common/helpers/helpers.utils.ts +++ b/src/common/helpers/helpers.utils.ts @@ -1,16 +1,15 @@ import { existsSync } from "node:fs"; import { join } from "node:path"; +import type { AuthenticationResponse } from "@common/@types"; +import type { User } from "@entities"; import type { Options as ArgonOptions } from "argon2"; import { argon2id, hash, verify } from "argon2"; import { format, zonedTimeToUtc } from "date-fns-tz"; import { pick } from "helper-fns"; -import type { RedisOptions } from "ioredis"; import type { Observable } from "rxjs"; import { from } from "rxjs"; import sharp from "sharp"; -import type { User } from "@entities"; -import type { AuthenticationResponse } from "@common/@types"; const argon2Options: ArgonOptions & { raw?: false } = { type: argon2id, @@ -92,24 +91,34 @@ which is the hashed password to compare against. */ return new Date(format(currentUtcTime, "yyyy-MM-dd HH:mm:ss")); }, - redisUrlToOptions(url: string): RedisOptions { - if (url.includes("://:")) { - const array = url.split("://:")[1].split("@"); - const secondArray = array[1].split(":"); - return { - password: array[0], - host: secondArray[0], - port: Number.parseInt(secondArray[1], 10), - }; - } + //TODO: fix this + // redisUrlToOptions(url: string): RedisOptions { + // if(!REDIS_URI_REGEX.test(url)){ + // throw new Error("Invalid redis url"); + // } - const connectionString = url.split("://")[1]; - const array = connectionString.split(":"); + // const separator = "://"; - return { - host: array[0], - port: Number.parseInt(array[1], 10), - }; - }, + // if (url.includes("://:")) { + // const [_, credentials] = url.split(separator); + // const [password, rest] = credentials.split("@"); + // const [host, port] = rest.split(":"); + + // return { + // password, + // host, + // port: Number.parseInt(port, 10), + // }; + // } + + // const connectionString = url.split(separator)[1]; + // const [host, port] = connectionString.split(":"); + + // return { + // host, + // port: Number.parseInt(port, 10), + // }; + + // }, }; diff --git a/src/common/interceptors/request-sanitizer.interceptor.ts b/src/common/interceptors/request-sanitizer.interceptor.ts index aa00b751..54cf1418 100644 --- a/src/common/interceptors/request-sanitizer.interceptor.ts +++ b/src/common/interceptors/request-sanitizer.interceptor.ts @@ -13,8 +13,8 @@ export class RequestSanitizerInterceptor implements NestInterceptor { } cleanRequest(request: Request): void { - request.query = this.cleanObject(request.query); - request.params = this.cleanObject(request.params); + request.query = this.cleanObject(request.query) || {}; // defaulting to an empty object if query is undefined + request.params = this.cleanObject(request.params) || {}; // defaulting to an empty object if params is undefined // we wont be sending body on GET and DELETE requests diff --git a/src/common/middlewares/ip.middleware.ts b/src/common/middlewares/ip.middleware.ts index 646e71c1..f139795f 100644 --- a/src/common/middlewares/ip.middleware.ts +++ b/src/common/middlewares/ip.middleware.ts @@ -6,7 +6,7 @@ import { getClientIp } from "@supercharge/request-ip"; @Injectable() export class RealIpMiddleware implements NestMiddleware { use(request: Request, _response: Response, next: NextFunction) { - request.realIp = getClientIp(request); + request.realIp = getClientIp(request)!; next(); } } diff --git a/src/common/misc/file.ts b/src/common/misc/file.ts index 5e116f0a..c1ea3ee1 100644 --- a/src/common/misc/file.ts +++ b/src/common/misc/file.ts @@ -15,7 +15,7 @@ export const ImageMulterOption: MulterOptions = { if (!FileType.IMAGE.test(file.mimetype)) return callback(new Error(MULTER_IMAGE_FILTER), false); - return callback(undefined, true); + return callback(null, true); }, }; diff --git a/src/common/misc/workers.ts b/src/common/misc/workers.ts index 7c54e0e2..5abd0bea 100644 --- a/src/common/misc/workers.ts +++ b/src/common/misc/workers.ts @@ -15,6 +15,6 @@ function workerFunction(data: { functionName: string; input: string }) { } } -const threadWorker = new ThreadWorker(workerFunction); +const threadWorker = new ThreadWorker(workerFunction as any); export default threadWorker; diff --git a/src/entities/conversation.entity.ts b/src/entities/conversation.entity.ts index 4e43c2b1..7806f223 100644 --- a/src/entities/conversation.entity.ts +++ b/src/entities/conversation.entity.ts @@ -5,7 +5,7 @@ import { Message, User } from "./index"; @Entity() export class Conversation extends BaseEntity { @Property({ index: true }) - chatName: string; + chatName!: string; @ManyToMany(() => User, user => user.conversations, { index: true }) users = new Collection(this); diff --git a/src/entities/message.entity.ts b/src/entities/message.entity.ts index 844f8018..012cd7f6 100644 --- a/src/entities/message.entity.ts +++ b/src/entities/message.entity.ts @@ -1,7 +1,7 @@ +import { BaseEntity } from "@common/database"; import type { Ref } from "@mikro-orm/core"; import { Entity, ManyToOne, Property, Rel } from "@mikro-orm/core"; -import { BaseEntity } from "@common/database"; -import type { Conversation, Post } from "./index"; +import type { Conversation, User } from "./index"; @Entity() export class Message extends BaseEntity { @@ -12,7 +12,7 @@ export class Message extends BaseEntity { eager: false, index: true, }) - sender: Rel>; + sender!: Rel>; @ManyToOne({ eager: false, diff --git a/src/entities/news-letter.entity.ts b/src/entities/news-letter.entity.ts index ceba9b09..32ba6926 100644 --- a/src/entities/news-letter.entity.ts +++ b/src/entities/news-letter.entity.ts @@ -4,7 +4,7 @@ import { BaseEntity } from "@common/database"; @Entity() export class NewsLetter extends BaseEntity { @Property({ index: true, unique: true }) - name: string; + name!: string; @Property({ columnType: "text" }) content!: string; diff --git a/src/entities/otp-log.entity.ts b/src/entities/otp-log.entity.ts index d996d5b8..ae3b2318 100644 --- a/src/entities/otp-log.entity.ts +++ b/src/entities/otp-log.entity.ts @@ -18,7 +18,7 @@ export class OtpLog extends BaseEntity { eager: false, index: true, }) - user: Rel>; + user!: Rel>; @Property() isUsed? = false; diff --git a/src/entities/post.entity.ts b/src/entities/post.entity.ts index 876d4b84..f651344b 100644 --- a/src/entities/post.entity.ts +++ b/src/entities/post.entity.ts @@ -46,7 +46,7 @@ export class Post extends BaseEntity { eager: false, index: true, }) - author: Rel>; + author!: Rel>; @OneToMany(() => Comment, comment => comment.post, { eager: false, @@ -84,7 +84,7 @@ export class Post extends BaseEntity { getReadingTime(content: string) { const avgWordsPerMin = 250; - const count = content.match(/\w+/g).length; + const count = content.match(/\w+/g)?.length ?? 0; return Math.ceil(count / avgWordsPerMin); } diff --git a/src/entities/referral.entity.ts b/src/entities/referral.entity.ts index 2d2f1970..ffac3d8e 100644 --- a/src/entities/referral.entity.ts +++ b/src/entities/referral.entity.ts @@ -9,12 +9,12 @@ export class Referral extends BaseEntity { @ManyToOne({ index: true, }) - referrer: Rel>; + referrer!: Rel>; @Property({ index: true, }) - mobileNumber: string; + mobileNumber!: string; @Index() @Enum(() => ReferralStatus) diff --git a/src/entities/refresh-token.entity.ts b/src/entities/refresh-token.entity.ts index aab9845d..212caf63 100644 --- a/src/entities/refresh-token.entity.ts +++ b/src/entities/refresh-token.entity.ts @@ -11,7 +11,7 @@ export class RefreshToken extends BaseEntity { @ManyToOne({ eager: false, }) - user: Rel>; + user!: Rel>; @Property() isRevoked? = false; diff --git a/src/lib/aws/aws.s3.service.ts b/src/lib/aws/aws.s3.service.ts index 571a04be..df3cc6d0 100644 --- a/src/lib/aws/aws.s3.service.ts +++ b/src/lib/aws/aws.s3.service.ts @@ -16,8 +16,8 @@ import { Inject, Injectable } from "@nestjs/common"; import { lookup } from "mime-types"; import { omit } from "helper-fns"; -import type { Observable } from "rxjs"; -import { from, map, mergeMap } from "rxjs"; +import type { Observable, } from "rxjs"; +import { forkJoin, from, map, of, switchMap, throwError } from "rxjs"; import type { AwsS3, AwsS3MultiPart, @@ -48,9 +48,16 @@ export class AwsS3Service { * @returns An array of strings, which are the names of the buckets. */ listBucket(): Observable { - return from(this.s3Client.send(new ListBucketsCommand({}))).pipe(map(listBucket => listBucket.Buckets.map((value: Bucket) => value.Name))); + return from(this.s3Client.send(new ListBucketsCommand({}))).pipe( + switchMap(listBucket => { + if (!listBucket?.Buckets) return of([]); + + return of(listBucket.Buckets.map((value: Bucket) => value.Name ?? "")); + }) + ); } + /** * The function `listItemInBucket` retrieves a list of objects in an AWS S3 bucket and maps them to a * custom interface. @@ -59,32 +66,37 @@ export class AwsS3Service { * the specified prefix. If no prefix is provided, all objects in the bucket will be listed. * @returns The function `listItemInBucket` returns an array of objects of type `IAwsS3[]`. */ + listItemInBucket(prefix?: string): Observable { return from(this.s3Client.send( new ListObjectsV2Command({ Bucket: this.bucket, - Prefix: prefix, - }), - )).pipe(map((listItems) => { - const mapList = listItems.Contents.map((value) => { - const lastIndex = value.Key.lastIndexOf("/"); - const path = value.Key.slice(0, lastIndex); - const filename = value.Key.slice(lastIndex, value.Key.length); - - const mime = this.getMime(filename); - return { - path, - pathWithFilename: value.Key, - filename, - completedUrl: `${this.baseUrl}/${value.Key}`, - baseUrl: this.baseUrl, - mime, - }; - }); - - return mapList; - }, - )); + Prefix: prefix + }) + )).pipe( + map(response => { + if (response && response.Contents) { + return response.Contents.map(value => { + if(!value.Key) return null + const lastIndex = value.Key.lastIndexOf("/"); + const path = value.Key.slice(0, lastIndex); + const filename = value.Key.slice(lastIndex, value.Key.length); + + const mime = this.getMime(filename); + return { + path, + pathWithFilename: value.Key, + filename, + completedUrl: `${this.baseUrl}/${value.Key}`, + baseUrl: this.baseUrl, + mime, + }; + + }).filter(value => value !== null) as AwsS3[]; + } + return []; + }) + ); } /** @@ -107,7 +119,15 @@ export class AwsS3Service { Bucket: this.bucket, Key: key, }), - )).pipe(map(item => item.Body)); + )).pipe(switchMap(item => { + + if(!item.Body) { + return throwError(() => "Item not found"); + + } + return of(item.Body) + + })); } /** @@ -159,8 +179,8 @@ export class AwsS3Service { content: Uint8Array | Buffer, options?: AwsS3PutItemOptions, ): Observable { - const filename = options.keepOriginalName ? originalFilename : this.generateFileName(originalFilename); - const { key, mime, path } = this.getOptions(options, filename); + const filename = options?.keepOriginalName ? originalFilename : this.generateFileName(originalFilename); + const { key, mime, path } = this.getOptions(filename,options); return from(this.s3Client.send( new PutObjectCommand({ Bucket: this.bucket, @@ -232,30 +252,33 @@ export class AwsS3Service { ); return listObjectsObservable.pipe( - map(lists => - lists.Contents.map(value => ({ + map(lists =>{ + if(!lists || !lists?.Contents) return [] + + return lists.Contents.map(value => ({ Key: value.Key, - })), + })); + } ), - mergeMap(listItems => - from( - Promise.all([ + switchMap(listItems => + forkJoin([ + from( this.s3Client.send( new DeleteObjectsCommand({ Bucket: this.bucket, Delete: { Objects: listItems, }, - }), + })), ), + from( this.s3Client.send( new DeleteObjectCommand({ Bucket: this.bucket, Key: directory, }), - ), + )), ]), - ), ), ); } @@ -274,7 +297,7 @@ export class AwsS3Service { filename: string, options?: AwsS3PutItemOptions, ): Observable { - const { key, mime, path, acl } = this.getOptions(options, filename); + const { key, mime, path, acl } = this.getOptions(filename,options ); return from(this.s3Client.send( new CreateMultipartUploadCommand({ @@ -283,8 +306,7 @@ export class AwsS3Service { ACL: acl, }), )).pipe(map(response => ({ - - uploadId: response.UploadId, + uploadId: response?.UploadId ?? "", path, pathWithFilename: key, filename, @@ -303,8 +325,8 @@ export class AwsS3Service { * file. * @returns An object with the properties `key`, `mime`, `path`, and `acl`. */ - private getOptions(options: AwsS3PutItemOptions, filename: string) { - let path = options?.path ?? undefined; + private getOptions( filename: string,options?: AwsS3PutItemOptions) { + let path = options?.path ?? filename; const acl = options?.acl ?? "public-read"; if (path) diff --git a/src/lib/casl/casl-ability.factory.ts b/src/lib/casl/casl-ability.factory.ts index 22f54760..fdfd2ebe 100644 --- a/src/lib/casl/casl-ability.factory.ts +++ b/src/lib/casl/casl-ability.factory.ts @@ -16,7 +16,7 @@ export class CaslAbilityFactory { /* Giving the user the ability to read and write to everything if they are an admin. */ - if (user.roles.includes(Roles.ADMIN)) + if (user.roles!.includes(Roles.ADMIN)) can(Action.Manage, "all"); // read-write access to everything else can(Action.Read, "all"); // read-only access to everything diff --git a/src/lib/casl/generic.policy.ts b/src/lib/casl/generic.policy.ts index e6b8c50c..a455f2f8 100644 --- a/src/lib/casl/generic.policy.ts +++ b/src/lib/casl/generic.policy.ts @@ -6,7 +6,7 @@ import type { PoliciesHandler } from "./policy.interface"; export class GenericPolicyHandler implements PoliciesHandler { constructor( - private readonly ClassType, + private readonly ClassType: any, private readonly action: Action = Action.Read, ) {} diff --git a/src/lib/config/config.module.ts b/src/lib/config/config.module.ts index 42473f79..be8b145a 100644 --- a/src/lib/config/config.module.ts +++ b/src/lib/config/config.module.ts @@ -22,6 +22,8 @@ import { redisConfigValidationSchema, sentry, sentryConfigurationValidationSchema, + stripe, + stripeonfigValidationSchema, throttle, throttleConfigValidationSchema, } from "./configs"; @@ -42,6 +44,7 @@ import { facebookOauth, throttle, sentry, + stripe ], cache: true, isGlobal: true, @@ -57,6 +60,7 @@ import { ...facebookOauthConfigValidationSchema, ...throttleConfigValidationSchema, ...sentryConfigurationValidationSchema, + ...stripeonfigValidationSchema }), validationOptions: { abortEarly: true, diff --git a/src/lib/config/configs/mail.config.ts b/src/lib/config/configs/mail.config.ts index b88286a9..5f535c96 100644 --- a/src/lib/config/configs/mail.config.ts +++ b/src/lib/config/configs/mail.config.ts @@ -24,7 +24,7 @@ export const mail = registerAs("mail", () => ({ password: process.env.MAIL_PASSWORD, host: process.env.MAIL_HOST, port: process.env.MAIL_PORT ?? +process.env.MAIL_PORT, - server: process.env.MAIL_SERVER, + type: process.env.MAIL_SERVER, previewEmail: process.env.MAIL_PREVIEW_EMAIL, bccList: process.env?.MAIL_BCC_LIST ? process.env.MAIL_BCC_LIST.split(",") : [], templateDir: process.env.MAIL_TEMPLATE_DIR, diff --git a/src/lib/config/configs/minio.config.ts b/src/lib/config/configs/minio.config.ts index e20d65d6..5593f362 100644 --- a/src/lib/config/configs/minio.config.ts +++ b/src/lib/config/configs/minio.config.ts @@ -11,7 +11,7 @@ export const minioConfigValidationSchema = { export const minio = registerAs("minio", () => ({ host: process.env.MINIO_HOST, - port: Number.parseInt(process.env.MINIO_PORT, 10), + port: Number.parseInt(process.env.MINIO_PORT!, 10), accessKey: process.env.MINIO_ACCESS_KEY, secretKey: process.env.MINIO_SECRET_KEY, useSSl: process.env.MINIO_USE_SSL === "true", diff --git a/src/lib/config/configs/stripe.config.ts b/src/lib/config/configs/stripe.config.ts index 1595a53b..0643d32b 100644 --- a/src/lib/config/configs/stripe.config.ts +++ b/src/lib/config/configs/stripe.config.ts @@ -1,7 +1,7 @@ import { registerAs } from "@nestjs/config"; import Joi from "joi"; -export const strpeonfigValidationSchema = { +export const stripeonfigValidationSchema = { STRIPE_API_KEY: Joi.string().required(), STRIPE_ACCOUNT: Joi.string().required(), STRIPE_CONNECT: Joi.string().required(), @@ -9,6 +9,6 @@ export const strpeonfigValidationSchema = { export const stripe = registerAs("stripe", () => ({ apiKey: process.env.STRIPE_API_KEY, - connect: process.env.STRIPE_ACCOUNT, - account: process.env.STRIPE_CONNECT, + connect: process.env.STRIPE_CONNECT, + account: process.env.STRIPE_ACCOUNT, })); diff --git a/src/lib/crud/crud.controller.ts b/src/lib/crud/crud.controller.ts index ee9fd3ca..9cb3adda 100644 --- a/src/lib/crud/crud.controller.ts +++ b/src/lib/crud/crud.controller.ts @@ -16,6 +16,7 @@ export class AbstractValidationPipe extends ValidationPipe { } async transform(value: any, metadata: ArgumentMetadata) { + //@ts-ignore const targetType = this.targetTypes[metadata.type]; if (!targetType) @@ -53,7 +54,7 @@ export function ControllerFactory< C extends RequiredEntityData, U extends EntityData, > implements Crud { - protected service: BaseService; + protected service!: BaseService; @Get(":idx") @SwaggerResponse({ diff --git a/src/lib/crud/crud.service.ts b/src/lib/crud/crud.service.ts index 639c0b7c..f748d5bf 100644 --- a/src/lib/crud/crud.service.ts +++ b/src/lib/crud/crud.service.ts @@ -14,7 +14,7 @@ export abstract class BaseService< CreateDto extends RequiredEntityData = RequiredEntityData, UpdateDto extends EntityData = EntityData, > implements Crud { - protected searchField: keyof Entity; + protected searchField!: keyof Entity; protected queryName = "entity"; protected constructor(private readonly repository: BaseRepository) {} @@ -65,11 +65,11 @@ export abstract class BaseService< return this.repository.qbOffsetPagination({ pageOptionsDto: { + ...dto, alias: this.queryName, order: QueryOrder.ASC, offset: dto.offset, searchField: this.searchField, - ...dto, }, qb, }); diff --git a/src/lib/firebase-admin/firebase.service.ts b/src/lib/firebase-admin/firebase.service.ts index b0cdeab9..5f2ac84d 100644 --- a/src/lib/firebase-admin/firebase.service.ts +++ b/src/lib/firebase-admin/firebase.service.ts @@ -11,7 +11,7 @@ interface NestFirebase { @Injectable() export class NestFirebaseService implements NestFirebase { - private _firebaseConnection: admin.app.App; + private _firebaseConnection!: admin.app.App; constructor( @Inject(MODULE_OPTIONS_TOKEN) private _NestFirebaseOptions: FirebaseModuleOptions, diff --git a/src/lib/i18n/translate.ts b/src/lib/i18n/translate.ts index d213a1f5..374c818e 100644 --- a/src/lib/i18n/translate.ts +++ b/src/lib/i18n/translate.ts @@ -2,7 +2,14 @@ import type { Path, TranslateOptions } from "nestjs-i18n"; import { I18nContext, i18nValidationMessage } from "nestjs-i18n"; export function translate(key: Path, options: TranslateOptions = {}) { - return I18nContext.current().t(key, options); + const i18nContext = I18nContext.current(); + + if (i18nContext) { + return i18nContext.t(key, options); + } + + // Handle the case when i18nContext is undefined + return ''; // or throw an error, return a default value, etc. } export function validationI18nMessage(key: Path, arguments_?: any) { diff --git a/src/lib/mailer/index.ts b/src/lib/mailer/index.ts index 1427d627..75116b9a 100644 --- a/src/lib/mailer/index.ts +++ b/src/lib/mailer/index.ts @@ -1,6 +1,6 @@ import { Global, Module } from "@nestjs/common"; import { ConfigModule, ConfigService } from "@nestjs/config"; -import { TemplateEngine } from "@common/@types"; +import { Server, TemplateEngine } from "@common/@types"; import { MailModule } from "./mailer.module"; @Global() @@ -10,11 +10,13 @@ import { MailModule } from "./mailer.module"; imports: [ConfigModule], inject: [ConfigService], useFactory: (configService: ConfigService) => ({ - host: configService.get("mail.host", { infer: true }), - port: configService.get("mail.port", { infer: true }), - username: configService.get("mail.username", { infer: true }), - password: configService.get("mail.password", { infer: true }), - server: configService.get("mail.server", { infer: true }), + credentials: { + type: configService.get("mail.type", { infer: true }) as Server.SMTP, + host: configService.get("mail.host", { infer: true }), + port: configService.get("mail.port", { infer: true }), + username: configService.get("mail.username", { infer: true }), + password: configService.get("mail.password", { infer: true }), + }, previewEmail: configService.get("mail.previewEmail", { infer: true }), templateDir: configService.get("mail.templateDir", { infer: true }), templateEngine: { diff --git a/src/lib/mailer/mailer.options.ts b/src/lib/mailer/mailer.options.ts index 0f19bab9..e7204cfd 100644 --- a/src/lib/mailer/mailer.options.ts +++ b/src/lib/mailer/mailer.options.ts @@ -3,16 +3,24 @@ import type { Options as PugOptions } from "pug"; import type { Server, TemplateEngine } from "@common/@types"; export interface MailModuleOptions { - host?: string - port?: number - password?: string - username?: string + + credentials: | { + type: Server.SES + sesKey: string + sesAccessKey: string + sesRegion: string + } + | { + type: Server.SMTP; + host: string; + port: number + password: string; + username: string; + } previewEmail: boolean retryAttempts?: number - server: Server - sesKey?: string - sesAccessKey?: string - sesRegion?: string + + templateDir: string templateEngine: | { diff --git a/src/lib/mailer/mailer.service.ts b/src/lib/mailer/mailer.service.ts index f0f14a38..db6114d0 100644 --- a/src/lib/mailer/mailer.service.ts +++ b/src/lib/mailer/mailer.service.ts @@ -55,13 +55,13 @@ export class MailerService { // create Nodemailer SES transporter - if (this.options.server === Server.SES) { + if (this.options.credentials.type === Server.SES) { const ses = new aws.SES({ apiVersion: "2010-12-01", - region: this.options.sesRegion, + region: this.options.credentials.sesRegion, credentials: { - accessKeyId: this.options.sesKey, - secretAccessKey: this.options.sesAccessKey, + accessKeyId: this.options.credentials.sesKey, + secretAccessKey: this.options.credentials.sesAccessKey, }, }); @@ -74,12 +74,12 @@ export class MailerService { this.transporter = createTransport({ pool: true, maxConnections: 5, - host: this.options.host, - port: this.options.port, + host: this.options.credentials.host, + port: this.options.credentials.port, secure: true, auth: { - user: this.options.username, - pass: this.options.password, + user: this.options.credentials.username, + pass: this.options.credentials.password, }, tls: { // do not fail on invalid certs diff --git a/src/lib/minio.module.ts b/src/lib/minio.module.ts index cc2f1700..a3076679 100644 --- a/src/lib/minio.module.ts +++ b/src/lib/minio.module.ts @@ -9,11 +9,11 @@ import { NestMinioModule } from "nestjs-minio"; inject: [ConfigService], isGlobal: true, useFactory: async (configService: ConfigService) => ({ - endPoint: configService.get("minio.host"), - port: configService.get("minio.port"), - accessKey: configService.get("minio.accessKey"), - secretKey: configService.get("minio.secretKey"), - useSSL: configService.get("minio.ssl"), + endPoint: configService.get("minio.host") || "localhost", + port: configService.get("minio.port") || 9000, + accessKey: configService.get("minio.accessKey") || "minio", + secretKey: configService.get("minio.secretKey") || "minio", + useSSL: configService.get("minio.ssl",), }), }), ], diff --git a/src/lib/stripe.module.ts b/src/lib/stripe.module.ts index 8f5c3a4a..b42ca1eb 100644 --- a/src/lib/stripe.module.ts +++ b/src/lib/stripe.module.ts @@ -16,7 +16,7 @@ const logger = new Logger("Stripe"); logger, webhookConfig: { stripeSecrets: { - account: configService.get("stripe.account", { infer: true }), + account: configService.get("stripe.account", { infer: true })!, connect: configService.get("stripe.connect", { infer: true }), }, }, diff --git a/src/main.ts b/src/main.ts index f9faee05..b91522c0 100644 --- a/src/main.ts +++ b/src/main.ts @@ -96,7 +96,7 @@ async function bootstrap() { module.hot.dispose(() => app.close()); } - const port = process.env.PORT ?? configService.get("app.port", { infer: true }); + const port = process.env.PORT ?? configService.get("app.port", { infer: true })!; await app.listen(port); diff --git a/src/modules/auth/auth.controller.ts b/src/modules/auth/auth.controller.ts index 24082d01..3803d10d 100644 --- a/src/modules/auth/auth.controller.ts +++ b/src/modules/auth/auth.controller.ts @@ -184,6 +184,6 @@ export class AuthController { ): Observable { return fromAll ? this.authService.logoutFromAll(user) - : this.authService.logout(user, refreshToken.refreshToken); + : this.authService.logout(user, refreshToken!.refreshToken); } } diff --git a/src/modules/auth/auth.service.ts b/src/modules/auth/auth.service.ts index 8abf59f0..6aa3d724 100644 --- a/src/modules/auth/auth.service.ts +++ b/src/modules/auth/auth.service.ts @@ -6,6 +6,7 @@ import { ForbiddenException, Injectable, NotFoundException, + UnauthorizedException, } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; import { init } from "@paralleldrive/cuid2"; @@ -79,7 +80,7 @@ export class AuthService { } return user && isPasswordLogin - ? HelperService.verifyHash(user.password, pass).pipe( + ? HelperService.verifyHash(user.password, pass!).pipe( map((isValid) => { if (isValid) return omit(user, ["password"]); @@ -198,7 +199,7 @@ export class AuthService { const otp = this.otpRepository.create({ user: userExists, otpCode: otpNumber, - expiresIn: new Date(Date.now() + (protocol.otpExpiryInMinutes * 60_000)), // prettier-ignore + expiresIn: new Date(Date.now() + (protocol?.otpExpiryInMinutes ?? 5 * 60_000)), // prettier-ignore }); return from( @@ -245,6 +246,19 @@ export class AuthService { ), ).pipe( switchMap((details) => { + + if(!details) { + + return throwError( + () => + new NotFoundException( + translate("exception.itemDoesNotExist", { + args: { item: "Otp" }, + }), + ), + ); + } + const user = details.user.getEntity(); this.userRepository.assign(user, { password }); @@ -332,6 +346,19 @@ export class AuthService { }), ).pipe( switchMap((userDetails) => { + + if(!userDetails) { + + return throwError( + () => + new NotFoundException( + translate("exception.itemDoesNotExist", { + args: { item: "Account" }, + }), + ), + ); + } + return HelperService.verifyHash(userDetails.password, oldPassword).pipe( switchMap((isValid) => { if (!isValid) { @@ -354,6 +381,10 @@ export class AuthService { } async findUser(condition: FilterQuery): Promise { - return this.userRepository.findOne(condition); + const user = await this.userRepository.findOne(condition); + + if (!user) + throw new UnauthorizedException(); + return user } } diff --git a/src/modules/auth/strategies/facebook.strategy.ts b/src/modules/auth/strategies/facebook.strategy.ts index eebb3fb7..68de93b0 100644 --- a/src/modules/auth/strategies/facebook.strategy.ts +++ b/src/modules/auth/strategies/facebook.strategy.ts @@ -2,13 +2,14 @@ import { InjectRepository } from "@mikro-orm/nestjs"; import { Injectable } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; import { PassportStrategy } from "@nestjs/passport"; -import { omit, randomString } from "helper-fns"; +import { omit, randomAvatar, randomString } from "helper-fns"; import type { Profile } from "passport-facebook"; import { Strategy } from "passport-facebook"; import type { VerifyCallback } from "passport-google-oauth20"; import { User } from "@entities"; import { BaseRepository } from "@common/database"; import type { OauthResponse } from "@common/@types"; +import { faker } from "@mikro-orm/seeder"; @Injectable() export class FacebookStrategy extends PassportStrategy(Strategy, "facebook") { @@ -43,14 +44,14 @@ export class FacebookStrategy extends PassportStrategy(Strategy, "facebook") { ): Promise { const { name, emails, username, photos } = profile; const user: OauthResponse = { - email: emails[0].value, - firstName: name?.givenName, - lastName: name?.familyName, + email: emails![0]!.value, + firstName: name?.givenName ?? faker.color.human(), + lastName: name?.familyName ?? faker.animal.cetacean(), accessToken, }; // Check if the user already exists in your database const existingUser = await this.userRepo.findOne({ - email: emails[0].value, + email: emails![0]!.value, isDeleted: false, }); @@ -62,8 +63,9 @@ export class FacebookStrategy extends PassportStrategy(Strategy, "facebook") { // If the user doesn't exist, create a new user const newUser = this.userRepo.create({ ...omit(user, ["accessToken"]), - avatar: photos[0].value, - username, + avatar: photos?.[0]?.value ?? randomAvatar(), + username: username ?? emails![0]!.value, + bio: faker.lorem.paragraph(), password: randomString({ length: 10, symbols: true, numbers: true }), }); diff --git a/src/modules/auth/strategies/google.strategy.ts b/src/modules/auth/strategies/google.strategy.ts index e3ee1aee..1aadc2e1 100644 --- a/src/modules/auth/strategies/google.strategy.ts +++ b/src/modules/auth/strategies/google.strategy.ts @@ -2,12 +2,13 @@ import { InjectRepository } from "@mikro-orm/nestjs"; import { Injectable } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; import { PassportStrategy } from "@nestjs/passport"; -import { omit, randomString } from "helper-fns"; +import { omit, randomAvatar, randomString } from "helper-fns"; import type { Profile, VerifyCallback } from "passport-google-oauth20"; import { Strategy } from "passport-google-oauth20"; import { User } from "@entities"; import { BaseRepository } from "@common/database"; import type { OauthResponse } from "@common/@types"; +import { faker } from "@mikro-orm/seeder"; @Injectable() export class GoogleStrategy extends PassportStrategy(Strategy, "google") { @@ -41,15 +42,15 @@ export class GoogleStrategy extends PassportStrategy(Strategy, "google") { ): Promise { const { name, emails, photos, username } = profile; const user: OauthResponse = { - email: emails[0].value, - firstName: name?.givenName, - lastName: name?.familyName, + email: emails![0]!.value, + firstName: name?.givenName ?? faker.color.human(), + lastName: name?.familyName ?? faker.animal.cetacean(), accessToken, }; // Check if the user already exists in your database const existingUser = await this.userRepo.findOne({ - email: emails[0].value, + email: emails![0]!.value, isDeleted: false, }); @@ -61,8 +62,9 @@ export class GoogleStrategy extends PassportStrategy(Strategy, "google") { // If the user doesn't exist, create a new user const newUser = this.userRepo.create({ ...omit(user, ["accessToken"]), - avatar: photos[0].value, - username, + avatar: photos?.[0]?.value ?? randomAvatar(), + username: username ?? emails![0]!.value, + bio: faker.lorem.paragraph(), password: randomString({ length: 10, symbols: true, numbers: true }), }); diff --git a/src/modules/auth/strategies/jwt-2fa.strategy.ts b/src/modules/auth/strategies/jwt-2fa.strategy.ts index 6a77aff2..88fd8976 100644 --- a/src/modules/auth/strategies/jwt-2fa.strategy.ts +++ b/src/modules/auth/strategies/jwt-2fa.strategy.ts @@ -1,8 +1,8 @@ -import { Injectable, UnauthorizedException } from "@nestjs/common"; +import type { JwtPayload } from "@common/@types"; +import { Injectable } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; import { PassportStrategy } from "@nestjs/passport"; import { ExtractJwt, Strategy } from "passport-jwt"; -import type { JwtPayload } from "@common/@types"; import { AuthService } from "../auth.service"; @Injectable() @@ -31,8 +31,6 @@ export class JwtTwofaStrategy extends PassportStrategy(Strategy, "jwt2fa") { // Accept the JWT and attempt to validate it using the user service const user = await this.authService.findUser({ id }); - if (!user) - throw new UnauthorizedException(); return user; } diff --git a/src/modules/auth/strategies/jwt.strategy.ts b/src/modules/auth/strategies/jwt.strategy.ts index 991ac3d3..b76c92de 100644 --- a/src/modules/auth/strategies/jwt.strategy.ts +++ b/src/modules/auth/strategies/jwt.strategy.ts @@ -1,8 +1,8 @@ -import { Injectable, UnauthorizedException } from "@nestjs/common"; +import type { JwtPayload } from "@common/@types"; +import { Injectable } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; import { PassportStrategy } from "@nestjs/passport"; import { ExtractJwt, Strategy } from "passport-jwt"; -import type { JwtPayload } from "@common/@types"; import { AuthService } from "../auth.service"; @Injectable() @@ -31,8 +31,6 @@ export class JwtStrategy extends PassportStrategy(Strategy) { // Accept the JWT and attempt to validate it using the user service const user = await this.authService.findUser(id); - if (!user) - throw new UnauthorizedException(); return user; } diff --git a/src/modules/auth/strategies/magic-login.strategy.ts b/src/modules/auth/strategies/magic-login.strategy.ts index 5ffe75d4..ddbc56d5 100644 --- a/src/modules/auth/strategies/magic-login.strategy.ts +++ b/src/modules/auth/strategies/magic-login.strategy.ts @@ -1,12 +1,12 @@ import type { Loaded } from "@mikro-orm/core"; -import { Injectable, Logger, UnauthorizedException } from "@nestjs/common"; +import { Injectable, Logger } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; import { PassportStrategy } from "@nestjs/passport"; import Strategy from "passport-magic-login"; -import { MailerService } from "@lib/mailer/mailer.service"; -import type { User } from "@entities"; import { EmailSubject, EmailTemplate } from "@common/@types"; +import type { User } from "@entities"; +import { MailerService } from "@lib/mailer/mailer.service"; import { AuthService } from "../auth.service"; interface MagicLoginPayload { @@ -63,7 +63,7 @@ export class MagicLoginStrategy extends PassportStrategy(Strategy, "magicLogin") callback: (callback_: null, user: Promise>) => void, ) => { // Get or create a user with the provided email from the database - callback(undefined, this.validate(payload.destination)); + callback(null, this.validate(payload.destination)); }, }); } @@ -78,9 +78,6 @@ export class MagicLoginStrategy extends PassportStrategy(Strategy, "magicLogin") // Accept the JWT and attempt to validate it using the user service const user = await this.authService.findUser({ email }); - if (!user) - throw new UnauthorizedException(); - return user; } } diff --git a/src/modules/category/dto/create-category.dto.ts b/src/modules/category/dto/create-category.dto.ts index b660979a..f1583aff 100644 --- a/src/modules/category/dto/create-category.dto.ts +++ b/src/modules/category/dto/create-category.dto.ts @@ -6,12 +6,12 @@ export class CreateCategoryDto { * @example "Lorem ipsum dolor sit" */ @IsStringField() - title: string; + name!: string; /** * Description of tag * @example "Lorem ipsum dolor sit" */ @IsStringField() - description: string; + description!: string; } diff --git a/src/modules/chat/chat.gateway.ts b/src/modules/chat/chat.gateway.ts index 49892ca6..6813756b 100644 --- a/src/modules/chat/chat.gateway.ts +++ b/src/modules/chat/chat.gateway.ts @@ -30,7 +30,7 @@ import { SocketConnectionService } from "./socket-connection.service"; namespace: "chat", }) export class ChatGateway implements OnGatewayConnection, OnGatewayInit, OnGatewayDisconnect { - @WebSocketServer() server: Namespace; + @WebSocketServer() server!: Namespace; private readonly logger = new Logger(ChatGateway.name); constructor( @@ -43,7 +43,7 @@ export class ChatGateway implements OnGatewayConnection, OnGatewayInit, OnGatewa async handleConnection(client: Socket) { // validate user, disconnect if unidentified try { - const payload: JwtPayload = await this.jwtService.verify(client.handshake.headers.authorization); + const payload: JwtPayload = await this.jwtService.verify(client.handshake.headers.authorization!); const user = await this.authService.findUser(payload.sub); if (!user) diff --git a/src/modules/chat/chat.service.ts b/src/modules/chat/chat.service.ts index 6c43e3ce..801c0721 100644 --- a/src/modules/chat/chat.service.ts +++ b/src/modules/chat/chat.service.ts @@ -22,7 +22,10 @@ export class ChatService { ) {} async createConversation(conversation: IConversation) { - const conversationNew = this.conversationRepository.create(conversation); + const conversationNew = this.conversationRepository.create({ + chatName: conversation.users.map(user => user.username).join(", "), + users: conversation.users + }); await this.em.persistAndFlush(conversationNew); } @@ -30,12 +33,14 @@ export class ChatService { async sendMessage(data: IConversation) { const [sender, receiver] = data.users; const conversationExists = await this.getConversation( - sender.id, - receiver.id, + sender!.id, + receiver!.id, ); const messageNew = this.messageRepository.create({ - body: data.message, + body: data!.message, + sender: sender!, + conversation: conversationExists, }); if (conversationExists) { @@ -46,6 +51,7 @@ export class ChatService { } else { const conversationNew = this.conversationRepository.create({ + chatName: data.users.map(user => user.username).join(", "), users: data.users, messages: [messageNew], }); @@ -63,7 +69,7 @@ export class ChatService { sender: number, receiver: number, ): Promise { - return this.conversationRepository.findOne({ users: [sender, receiver] }); + return this.conversationRepository.findOneOrFail({ users: [sender, receiver] }); } async getConversationForUser(user: User) { diff --git a/src/modules/chat/dto/create-chat.dto.ts b/src/modules/chat/dto/create-chat.dto.ts index 77d70ef8..6f06ed71 100644 --- a/src/modules/chat/dto/create-chat.dto.ts +++ b/src/modules/chat/dto/create-chat.dto.ts @@ -5,5 +5,5 @@ export class CreateChatDto { message!: string; @IsStringField({ required: false }) - to?: string; + to!: string; } diff --git a/src/modules/chat/dto/message-seen.dto.ts b/src/modules/chat/dto/message-seen.dto.ts index 446e98c0..e8fb892f 100644 --- a/src/modules/chat/dto/message-seen.dto.ts +++ b/src/modules/chat/dto/message-seen.dto.ts @@ -2,5 +2,5 @@ import { IsStringField } from "@common/decorators"; export class MessageSeenDto { @IsStringField() - receiver: string; + receiver!: string; } diff --git a/src/modules/chat/socket-connection.service.ts b/src/modules/chat/socket-connection.service.ts index 3fa5baf1..e8357f64 100644 --- a/src/modules/chat/socket-connection.service.ts +++ b/src/modules/chat/socket-connection.service.ts @@ -1,5 +1,6 @@ import { Injectable } from "@nestjs/common"; import type { User } from "@entities"; +import { WsException } from "@nestjs/websockets"; interface SocketConnection { connectedUser: User @@ -19,18 +20,31 @@ export class SocketConnectionService { } findByUserId(id: number) { - let user: User; + let user = null; for (const value of this.socketConnections.values()) { - if (value.id === id) + if (value.id === id){ + user = value; + } } + + if(!user){ + + throw new WsException("User not found"); + } + + return user; } findBySocketId(id: string) { - return this.socketConnections.get(id); + const socket = this.socketConnections.get(id); + if(!socket){ + throw new WsException("Socket not found"); + } + return socket; } deleteBySocketId(id: string) { diff --git a/src/modules/newsletter/dto/subscribe.dto.ts b/src/modules/newsletter/dto/subscribe.dto.ts index 466ff452..1c8dea76 100644 --- a/src/modules/newsletter/dto/subscribe.dto.ts +++ b/src/modules/newsletter/dto/subscribe.dto.ts @@ -7,5 +7,5 @@ export class SubscribeNewsletterDto { */ @IsEmailField() - email: string; + email!: string; } diff --git a/src/modules/post/dtos/create-post.dto.ts b/src/modules/post/dtos/create-post.dto.ts index 815276fb..48da6f48 100644 --- a/src/modules/post/dtos/create-post.dto.ts +++ b/src/modules/post/dtos/create-post.dto.ts @@ -50,7 +50,7 @@ export class CreatePostDto { */ @IsEnumField(PostStateEnum, { required: false }) - state: PostStateEnum; + state?: PostStateEnum; /** * Published status of post diff --git a/src/modules/post/post.service.ts b/src/modules/post/post.service.ts index f5dbd171..9d257ebc 100644 --- a/src/modules/post/post.service.ts +++ b/src/modules/post/post.service.ts @@ -184,7 +184,7 @@ export class PostService { switchMap(([post, user]) => { if (!user.favorites.contains(post)) { user.favorites.add(post); - post.favoritesCount += 1; + post.favoritesCount = (post.favoritesCount ?? 0) + 1; } return from(this.em.flush()).pipe(map(() => post)); @@ -222,7 +222,7 @@ export class PostService { switchMap(([post, user]) => { if (!user.favorites.contains(post)) { user.favorites.remove(post); - post.favoritesCount -= 1; + post.favoritesCount = (post.favoritesCount ?? 0) - 1; } return from(this.em.flush()).pipe(map(() => post)); @@ -246,7 +246,20 @@ export class PostService { }, }, ), - ).pipe(map(post => post.comments.getItems())); + ).pipe(switchMap(post => { + if(!post) { + return throwError( + () => + new NotFoundException( + translate("exception.itemDoesNotExist", { + args: { item: "Post" }, + }), + ), + ); + } + return of(post.comments.getItems()) + + })); } /** diff --git a/src/modules/tags/dto/create-tag.dto.ts b/src/modules/tags/dto/create-tag.dto.ts index 34b4dc2e..b55c9bee 100644 --- a/src/modules/tags/dto/create-tag.dto.ts +++ b/src/modules/tags/dto/create-tag.dto.ts @@ -6,12 +6,12 @@ export class CreateTagDto { * @example "Lorem ipsum" */ @IsStringField() - title: string; + title!: string; /** * Description of tag * @example "Lorem ipsum" */ @IsStringField() - description: string; + description!: string; } diff --git a/src/modules/token/refresh-tokens.repository.ts b/src/modules/token/refresh-tokens.repository.ts index 58ba9963..90966708 100644 --- a/src/modules/token/refresh-tokens.repository.ts +++ b/src/modules/token/refresh-tokens.repository.ts @@ -44,11 +44,11 @@ export class RefreshTokensRepository { */ findTokenById(id: number): Observable { return from( - this.refreshTokenRepository.findOne({ + this.refreshTokenRepository.findOneOrFail({ id, isRevoked: false, }), - ); + ) } /** diff --git a/src/modules/token/tokens.service.ts b/src/modules/token/tokens.service.ts index 0ad6c225..2396c825 100644 --- a/src/modules/token/tokens.service.ts +++ b/src/modules/token/tokens.service.ts @@ -222,7 +222,7 @@ export class TokensService { } return from( - this.userRepository.findOne({ + this.userRepository.findOneOrFail({ id: subId, }), ); diff --git a/src/modules/twofa/dtos/twofa.dto.ts b/src/modules/twofa/dtos/twofa.dto.ts index 9194de47..d98a1095 100644 --- a/src/modules/twofa/dtos/twofa.dto.ts +++ b/src/modules/twofa/dtos/twofa.dto.ts @@ -6,5 +6,5 @@ export class TwofaDto { * @example 123456 */ @IsStringField({ minLength: 1, required: true }) - code: string; + code!: string; } diff --git a/src/modules/twofa/twofa.service.ts b/src/modules/twofa/twofa.service.ts index 0eafd395..2c69a71e 100644 --- a/src/modules/twofa/twofa.service.ts +++ b/src/modules/twofa/twofa.service.ts @@ -65,7 +65,7 @@ export class TwoFactorService { isTwoFactorCodeValid(twoFactorAuthenticationCode: string, user: User): boolean { return authenticator.verify({ token: twoFactorAuthenticationCode, - secret: user.twoFactorSecret, + secret: user.twoFactorSecret!, }); } diff --git a/src/modules/user/dtos/create-user.dto.ts b/src/modules/user/dtos/create-user.dto.ts index 6c1353e6..40b55188 100644 --- a/src/modules/user/dtos/create-user.dto.ts +++ b/src/modules/user/dtos/create-user.dto.ts @@ -80,6 +80,15 @@ export class CreateUserDto { @IsEmailField() email!: string; + + /** + * Bio of user + * @example John + */ + + @IsStringField({ maxLength: 1000 }) + bio!: string; + /** * Password of user * @example SomePassword@123 diff --git a/src/modules/user/user.service.ts b/src/modules/user/user.service.ts index 53233b2f..d9d1b859 100644 --- a/src/modules/user/user.service.ts +++ b/src/modules/user/user.service.ts @@ -101,7 +101,10 @@ export class UserService { */ create(dto: RecordWithFile): Observable { const { files, ...rest } = dto; - const user = this.userRepository.create(rest); + const user = this.userRepository.create({ + ...rest, + avatar: "", + }); return from( this.em.transactional(async (em) => { diff --git a/src/socket-io.adapter.ts b/src/socket-io.adapter.ts index cab39458..5e704b4d 100644 --- a/src/socket-io.adapter.ts +++ b/src/socket-io.adapter.ts @@ -7,7 +7,7 @@ import type { Adapter } from "socket.io-adapter"; import type { Namespace, Server, ServerOptions } from "socket.io"; export class SocketIOAdapter extends IoAdapter { - private adapterConstructor: ((nsp: Namespace) => Adapter); + private adapterConstructor!: ((nsp: Namespace) => Adapter); constructor( app: INestApplicationContext, @@ -44,10 +44,10 @@ export class SocketIOAdapter extends IoAdapter { origin: this.configService.get("app.allowedOrigins", { infer: true }), }; - const optionsWithCORS: ServerOptions = { + const optionsWithCORS = { ...options, cors, - }; + } const server: Server = super.createIOServer(port, optionsWithCORS); diff --git a/tsconfig.json b/tsconfig.json index 74f6e7ff..afcf2024 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -27,7 +27,11 @@ "include": [ "test/**/*", "src/**/*", - "eslint.config.js" + "eslint.config.mjs" + ], + "exclude": [ + "node_modules", + "dist" ], "types": [ "./src/common/types/global.d.ts"