diff --git a/package.json b/package.json index cebf38c5..1c1e201f 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "express-rate-limit": "^7.1.0", "express-session": "^1.17.3", "express-validator": "^6.14.0", - "firebase-admin": "^11.4.1", + "firebase-admin": "^11.11.1", "jsonwebtoken": "^9.0.2", "mongoose": "^6.12.0", "node-cron": "3.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db4e122d..25c9f218 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,7 +7,7 @@ settings: dependencies: '@adminjs/express': specifier: ^5.1.0 - version: 5.1.0(adminjs@6.8.7)(express-formidable@1.2.0)(express-session@1.17.3)(express@4.18.2)(tslib@2.6.2) + version: 5.1.0(adminjs@6.8.7)(express-formidable@1.2.0)(express-session@1.17.3)(express@4.18.2)(tslib@2.7.0) '@adminjs/mongoose': specifier: ^3.0.3 version: 3.0.3(adminjs@6.8.7)(mongoose@6.12.0) @@ -60,14 +60,14 @@ dependencies: specifier: ^6.14.0 version: 6.15.0 firebase-admin: - specifier: ^11.4.1 - version: 11.10.1 + specifier: ^11.11.1 + version: 11.11.1 jsonwebtoken: specifier: ^9.0.2 version: 9.0.2 mongoose: specifier: ^6.12.0 - version: 6.12.0 + version: 6.12.0(@aws-sdk/client-sso-oidc@3.654.0) node-cron: specifier: 3.0.2 version: 3.0.2 @@ -123,7 +123,7 @@ devDependencies: version: 10.2.0 mongodb: specifier: ^4.1.0 - version: 4.17.1 + version: 4.17.1(@aws-sdk/client-sso-oidc@3.654.0) nodemon: specifier: ^3.0.1 version: 3.0.1 @@ -184,7 +184,7 @@ packages: - prop-types dev: false - /@adminjs/express@5.1.0(adminjs@6.8.7)(express-formidable@1.2.0)(express-session@1.17.3)(express@4.18.2)(tslib@2.6.2): + /@adminjs/express@5.1.0(adminjs@6.8.7)(express-formidable@1.2.0)(express-session@1.17.3)(express@4.18.2)(tslib@2.7.0): resolution: {integrity: sha512-+mrtDmoAYA9R+/FTYWOLL48g005yrgcAWC2phdwqGzznIxGKSp2YERcfzdTI7Svtnlaal72/QW8Q3OhzJjVLzQ==} peerDependencies: adminjs: '>=6.0.0' @@ -198,7 +198,7 @@ packages: express-formidable: 1.2.0 express-session: 1.17.3 path-to-regexp: 6.2.1 - tslib: 2.6.2 + tslib: 2.7.0 dev: false /@adminjs/mongoose@3.0.3(adminjs@6.8.7)(mongoose@6.12.0): @@ -210,7 +210,7 @@ packages: adminjs: 6.8.7 escape-regexp: 0.0.1 lodash: 4.17.21 - mongoose: 6.12.0 + mongoose: 6.12.0(@aws-sdk/client-sso-oidc@3.654.0) dev: false /@ampproject/remapping@2.2.1: @@ -221,504 +221,527 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: false - /@aws-crypto/crc32@3.0.0: - resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} + /@aws-crypto/sha256-browser@5.2.0: + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} requiresBuild: true dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.425.0 - tslib: 1.14.1 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.654.0 + '@aws-sdk/util-locate-window': 3.568.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 optional: true - /@aws-crypto/ie11-detection@3.0.0: - resolution: {integrity: sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==} + /@aws-crypto/sha256-js@5.2.0: + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - tslib: 1.14.1 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.654.0 + tslib: 2.6.2 optional: true - /@aws-crypto/sha256-browser@3.0.0: - resolution: {integrity: sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==} + /@aws-crypto/supports-web-crypto@5.2.0: + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} requiresBuild: true dependencies: - '@aws-crypto/ie11-detection': 3.0.0 - '@aws-crypto/sha256-js': 3.0.0 - '@aws-crypto/supports-web-crypto': 3.0.0 - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.425.0 - '@aws-sdk/util-locate-window': 3.310.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 + tslib: 2.6.2 optional: true - /@aws-crypto/sha256-js@3.0.0: - resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} + /@aws-crypto/util@5.2.0: + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} requiresBuild: true dependencies: - '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.425.0 - tslib: 1.14.1 + '@aws-sdk/types': 3.654.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.6.2 optional: true - /@aws-crypto/supports-web-crypto@3.0.0: - resolution: {integrity: sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==} - requiresBuild: true - dependencies: - tslib: 1.14.1 + /@aws-sdk/client-cognito-identity@3.654.0: + resolution: {integrity: sha512-3K806KJVivVP011R7Wf4ujGKP8R6d7KFlo9t0Swr9YFnStCdSdjmRX1yW8RpzSzRC4xyuUw+bo8wPf+tE/YxnA==} + engines: {node: '>=16.0.0'} + requiresBuild: true + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.654.0(@aws-sdk/client-sts@3.654.0) + '@aws-sdk/client-sts': 3.654.0 + '@aws-sdk/core': 3.654.0 + '@aws-sdk/credential-provider-node': 3.654.0(@aws-sdk/client-sso-oidc@3.654.0)(@aws-sdk/client-sts@3.654.0) + '@aws-sdk/middleware-host-header': 3.654.0 + '@aws-sdk/middleware-logger': 3.654.0 + '@aws-sdk/middleware-recursion-detection': 3.654.0 + '@aws-sdk/middleware-user-agent': 3.654.0 + '@aws-sdk/region-config-resolver': 3.654.0 + '@aws-sdk/types': 3.654.0 + '@aws-sdk/util-endpoints': 3.654.0 + '@aws-sdk/util-user-agent-browser': 3.654.0 + '@aws-sdk/util-user-agent-node': 3.654.0 + '@smithy/config-resolver': 3.0.8 + '@smithy/core': 2.4.5 + '@smithy/fetch-http-handler': 3.2.8 + '@smithy/hash-node': 3.0.6 + '@smithy/invalid-dependency': 3.0.6 + '@smithy/middleware-content-length': 3.0.8 + '@smithy/middleware-endpoint': 3.1.3 + '@smithy/middleware-retry': 3.0.20 + '@smithy/middleware-serde': 3.0.6 + '@smithy/middleware-stack': 3.0.6 + '@smithy/node-config-provider': 3.1.7 + '@smithy/node-http-handler': 3.2.3 + '@smithy/protocol-http': 4.1.3 + '@smithy/smithy-client': 3.3.4 + '@smithy/types': 3.4.2 + '@smithy/url-parser': 3.0.6 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.20 + '@smithy/util-defaults-mode-node': 3.0.20 + '@smithy/util-endpoints': 2.1.2 + '@smithy/util-middleware': 3.0.6 + '@smithy/util-retry': 3.0.6 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt optional: true - /@aws-crypto/util@3.0.0: - resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} - requiresBuild: true - dependencies: - '@aws-sdk/types': 3.425.0 - '@aws-sdk/util-utf8-browser': 3.259.0 - tslib: 1.14.1 + /@aws-sdk/client-sso-oidc@3.654.0(@aws-sdk/client-sts@3.654.0): + resolution: {integrity: sha512-gbHrKsEnaAtmkNCVQzLyiqMzpDaThV/bWl/ODEklI+t6stW3Pe3oDMstEHLfJ6JU5g8sYnx4VLuxlnJMtUkvPw==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@aws-sdk/client-sts': ^3.654.0 + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sts': 3.654.0 + '@aws-sdk/core': 3.654.0 + '@aws-sdk/credential-provider-node': 3.654.0(@aws-sdk/client-sso-oidc@3.654.0)(@aws-sdk/client-sts@3.654.0) + '@aws-sdk/middleware-host-header': 3.654.0 + '@aws-sdk/middleware-logger': 3.654.0 + '@aws-sdk/middleware-recursion-detection': 3.654.0 + '@aws-sdk/middleware-user-agent': 3.654.0 + '@aws-sdk/region-config-resolver': 3.654.0 + '@aws-sdk/types': 3.654.0 + '@aws-sdk/util-endpoints': 3.654.0 + '@aws-sdk/util-user-agent-browser': 3.654.0 + '@aws-sdk/util-user-agent-node': 3.654.0 + '@smithy/config-resolver': 3.0.8 + '@smithy/core': 2.4.5 + '@smithy/fetch-http-handler': 3.2.8 + '@smithy/hash-node': 3.0.6 + '@smithy/invalid-dependency': 3.0.6 + '@smithy/middleware-content-length': 3.0.8 + '@smithy/middleware-endpoint': 3.1.3 + '@smithy/middleware-retry': 3.0.20 + '@smithy/middleware-serde': 3.0.6 + '@smithy/middleware-stack': 3.0.6 + '@smithy/node-config-provider': 3.1.7 + '@smithy/node-http-handler': 3.2.3 + '@smithy/protocol-http': 4.1.3 + '@smithy/smithy-client': 3.3.4 + '@smithy/types': 3.4.2 + '@smithy/url-parser': 3.0.6 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.20 + '@smithy/util-defaults-mode-node': 3.0.20 + '@smithy/util-endpoints': 2.1.2 + '@smithy/util-middleware': 3.0.6 + '@smithy/util-retry': 3.0.6 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt optional: true - /@aws-sdk/client-cognito-identity@3.427.0: - resolution: {integrity: sha512-9brRaNnl6haE7R3R43A5CSNw0k1YtB3xjuArbMg/p6NDUpvRSRgOVNWu2R02Yjh/j2ZuaLOCPLuCipb+PHQPKQ==} - engines: {node: '>=14.0.0'} - requiresBuild: true - 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.14 - '@smithy/fetch-http-handler': 2.2.2 - '@smithy/hash-node': 2.0.11 - '@smithy/invalid-dependency': 2.0.11 - '@smithy/middleware-content-length': 2.0.13 - '@smithy/middleware-endpoint': 2.0.11 - '@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.10 - '@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.14 - '@smithy/util-defaults-mode-node': 2.0.18 - '@smithy/util-retry': 2.0.4 - '@smithy/util-utf8': 2.0.0 + /@aws-sdk/client-sso@3.654.0: + resolution: {integrity: sha512-4kBxs2IzCDtj6a6lRXa/lXK5wWpMGzwKtb+HMXf/rJYVM6x7wYRzc1hYrOd3DYkFQ/sR3dUFj+0mTP0os3aAbA==} + engines: {node: '>=16.0.0'} + requiresBuild: true + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.654.0 + '@aws-sdk/middleware-host-header': 3.654.0 + '@aws-sdk/middleware-logger': 3.654.0 + '@aws-sdk/middleware-recursion-detection': 3.654.0 + '@aws-sdk/middleware-user-agent': 3.654.0 + '@aws-sdk/region-config-resolver': 3.654.0 + '@aws-sdk/types': 3.654.0 + '@aws-sdk/util-endpoints': 3.654.0 + '@aws-sdk/util-user-agent-browser': 3.654.0 + '@aws-sdk/util-user-agent-node': 3.654.0 + '@smithy/config-resolver': 3.0.8 + '@smithy/core': 2.4.5 + '@smithy/fetch-http-handler': 3.2.8 + '@smithy/hash-node': 3.0.6 + '@smithy/invalid-dependency': 3.0.6 + '@smithy/middleware-content-length': 3.0.8 + '@smithy/middleware-endpoint': 3.1.3 + '@smithy/middleware-retry': 3.0.20 + '@smithy/middleware-serde': 3.0.6 + '@smithy/middleware-stack': 3.0.6 + '@smithy/node-config-provider': 3.1.7 + '@smithy/node-http-handler': 3.2.3 + '@smithy/protocol-http': 4.1.3 + '@smithy/smithy-client': 3.3.4 + '@smithy/types': 3.4.2 + '@smithy/url-parser': 3.0.6 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.20 + '@smithy/util-defaults-mode-node': 3.0.20 + '@smithy/util-endpoints': 2.1.2 + '@smithy/util-middleware': 3.0.6 + '@smithy/util-retry': 3.0.6 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt optional: true - /@aws-sdk/client-sso@3.427.0: - resolution: {integrity: sha512-sFVFEmsQ1rmgYO1SgrOTxE/MTKpeE4hpOkm1WqhLQK7Ij136vXpjCxjH1JYZiHiUzO1wr9t4ex4dlB5J3VS/Xg==} - engines: {node: '>=14.0.0'} - requiresBuild: true - 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.14 - '@smithy/fetch-http-handler': 2.2.2 - '@smithy/hash-node': 2.0.11 - '@smithy/invalid-dependency': 2.0.11 - '@smithy/middleware-content-length': 2.0.13 - '@smithy/middleware-endpoint': 2.0.11 - '@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.10 - '@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.14 - '@smithy/util-defaults-mode-node': 2.0.18 - '@smithy/util-retry': 2.0.4 - '@smithy/util-utf8': 2.0.0 + /@aws-sdk/client-sts@3.654.0: + resolution: {integrity: sha512-tyHa8jsBy+/NQZFHm6Q2Q09Vi9p3EH4yPy6PU8yPewpi2klreObtrUd0anJa6nzjS9SSuqnlZWsRic3cQ4QwCg==} + engines: {node: '>=16.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/client-sso-oidc': 3.654.0(@aws-sdk/client-sts@3.654.0) + '@aws-sdk/core': 3.654.0 + '@aws-sdk/credential-provider-node': 3.654.0(@aws-sdk/client-sso-oidc@3.654.0)(@aws-sdk/client-sts@3.654.0) + '@aws-sdk/middleware-host-header': 3.654.0 + '@aws-sdk/middleware-logger': 3.654.0 + '@aws-sdk/middleware-recursion-detection': 3.654.0 + '@aws-sdk/middleware-user-agent': 3.654.0 + '@aws-sdk/region-config-resolver': 3.654.0 + '@aws-sdk/types': 3.654.0 + '@aws-sdk/util-endpoints': 3.654.0 + '@aws-sdk/util-user-agent-browser': 3.654.0 + '@aws-sdk/util-user-agent-node': 3.654.0 + '@smithy/config-resolver': 3.0.8 + '@smithy/core': 2.4.5 + '@smithy/fetch-http-handler': 3.2.8 + '@smithy/hash-node': 3.0.6 + '@smithy/invalid-dependency': 3.0.6 + '@smithy/middleware-content-length': 3.0.8 + '@smithy/middleware-endpoint': 3.1.3 + '@smithy/middleware-retry': 3.0.20 + '@smithy/middleware-serde': 3.0.6 + '@smithy/middleware-stack': 3.0.6 + '@smithy/node-config-provider': 3.1.7 + '@smithy/node-http-handler': 3.2.3 + '@smithy/protocol-http': 4.1.3 + '@smithy/smithy-client': 3.3.4 + '@smithy/types': 3.4.2 + '@smithy/url-parser': 3.0.6 + '@smithy/util-base64': 3.0.0 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-body-length-node': 3.0.0 + '@smithy/util-defaults-mode-browser': 3.0.20 + '@smithy/util-defaults-mode-node': 3.0.20 + '@smithy/util-endpoints': 2.1.2 + '@smithy/util-middleware': 3.0.6 + '@smithy/util-retry': 3.0.6 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt optional: true - /@aws-sdk/client-sts@3.427.0: - resolution: {integrity: sha512-le2wLJKILyWuRfPz2HbyaNtu5kEki+ojUkTqCU6FPDRrqUvEkaaCBH9Awo/2AtrCfRkiobop8RuTTj6cAnpiJg==} - engines: {node: '>=14.0.0'} + /@aws-sdk/core@3.654.0: + resolution: {integrity: sha512-4Rwx7BVaNaFqmXBDmnOkMbyuIFFbpZ+ru4lr660p45zY1QoNNSalechfoRffcokLFOZO+VWEJkdcorPUUU993w==} + engines: {node: '>=16.0.0'} requiresBuild: true 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.14 - '@smithy/fetch-http-handler': 2.2.2 - '@smithy/hash-node': 2.0.11 - '@smithy/invalid-dependency': 2.0.11 - '@smithy/middleware-content-length': 2.0.13 - '@smithy/middleware-endpoint': 2.0.11 - '@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.10 - '@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.14 - '@smithy/util-defaults-mode-node': 2.0.18 - '@smithy/util-retry': 2.0.4 - '@smithy/util-utf8': 2.0.0 - fast-xml-parser: 4.2.5 + '@smithy/core': 2.4.5 + '@smithy/node-config-provider': 3.1.7 + '@smithy/property-provider': 3.1.6 + '@smithy/protocol-http': 4.1.3 + '@smithy/signature-v4': 4.1.4 + '@smithy/smithy-client': 3.3.4 + '@smithy/types': 3.4.2 + '@smithy/util-middleware': 3.0.6 + fast-xml-parser: 4.4.1 tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt optional: true - /@aws-sdk/credential-provider-cognito-identity@3.427.0: - resolution: {integrity: sha512-BQNzNrMJlBAfXhYNdAUqaVASpT9Aho5swj7glZKxx4Uds1w5Pih2e14JWgnl8XgUWAZ36pchTrV1aA4JT7N8vw==} - engines: {node: '>=14.0.0'} + /@aws-sdk/credential-provider-cognito-identity@3.654.0: + resolution: {integrity: sha512-0aq4Ri9VYjixS7AZKNmuJc/5MlQdfrkgtzHV1TBisoroi/ed1WWnZmQvUFi3ZqRkt1Cvi7oZi6J1gZEfzq8p8g==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@aws-sdk/client-cognito-identity': 3.427.0 - '@aws-sdk/types': 3.425.0 - '@smithy/property-provider': 2.0.12 - '@smithy/types': 2.3.5 + '@aws-sdk/client-cognito-identity': 3.654.0 + '@aws-sdk/types': 3.654.0 + '@smithy/property-provider': 3.1.6 + '@smithy/types': 3.4.2 tslib: 2.6.2 transitivePeerDependencies: - aws-crt optional: true - /@aws-sdk/credential-provider-env@3.425.0: - resolution: {integrity: sha512-J20etnLvMKXRVi5FK4F8yOCNm2RTaQn5psQTGdDEPWJNGxohcSpzzls8U2KcMyUJ+vItlrThr4qwgpHG3i/N0w==} - engines: {node: '>=14.0.0'} + /@aws-sdk/credential-provider-env@3.654.0: + resolution: {integrity: sha512-kogsx3Ql81JouHS7DkheCDU9MYAvK0AokxjcshDveGmf7BbgbWCA8Fnb9wjQyNDaOXNvkZu8Z8rgkX91z324/w==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/property-provider': 2.0.12 - '@smithy/types': 2.3.5 + '@aws-sdk/types': 3.654.0 + '@smithy/property-provider': 3.1.6 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@aws-sdk/credential-provider-http@3.425.0: - resolution: {integrity: sha512-aP9nkoVWf+OlNMecrUqe4+RuQrX13nucVbty0HTvuwfwJJj0T6ByWZzle+fo1D+5OxvJmtzTflBWt6jUERdHWA==} - engines: {node: '>=14.0.0'} + /@aws-sdk/credential-provider-http@3.654.0: + resolution: {integrity: sha512-tgmAH4MBi/aDR882lfw48+tDV95ZH3GWc1Eoe6DpNLiM3GN2VfU/cZwuHmi6aq+vAbdIlswBHJ/+va0fOvlyjw==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/fetch-http-handler': 2.2.2 - '@smithy/node-http-handler': 2.1.7 - '@smithy/property-provider': 2.0.12 - '@smithy/protocol-http': 3.0.7 - '@smithy/types': 2.3.5 + '@aws-sdk/types': 3.654.0 + '@smithy/fetch-http-handler': 3.2.8 + '@smithy/node-http-handler': 3.2.3 + '@smithy/property-provider': 3.1.6 + '@smithy/protocol-http': 4.1.3 + '@smithy/smithy-client': 3.3.4 + '@smithy/types': 3.4.2 + '@smithy/util-stream': 3.1.8 tslib: 2.6.2 optional: true - /@aws-sdk/credential-provider-ini@3.427.0: - resolution: {integrity: sha512-NmH1cO/w98CKMltYec3IrJIIco19wRjATFNiw83c+FGXZ+InJwReqBnruxIOmKTx2KDzd6fwU1HOewS7UjaaaQ==} - engines: {node: '>=14.0.0'} + /@aws-sdk/credential-provider-ini@3.654.0(@aws-sdk/client-sso-oidc@3.654.0)(@aws-sdk/client-sts@3.654.0): + resolution: {integrity: sha512-DKSdaNu2hwdmuvnm9KnA0NLqMWxxmxSOLWjSUSoFIm++wGXUjPrRMFYKvMktaXnPuyf5my8gF/yGbwzPZ8wlTg==} + engines: {node: '>=16.0.0'} requiresBuild: true + peerDependencies: + '@aws-sdk/client-sts': ^3.654.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.16 - '@smithy/property-provider': 2.0.12 - '@smithy/shared-ini-file-loader': 2.2.0 - '@smithy/types': 2.3.5 + '@aws-sdk/client-sts': 3.654.0 + '@aws-sdk/credential-provider-env': 3.654.0 + '@aws-sdk/credential-provider-http': 3.654.0 + '@aws-sdk/credential-provider-process': 3.654.0 + '@aws-sdk/credential-provider-sso': 3.654.0(@aws-sdk/client-sso-oidc@3.654.0) + '@aws-sdk/credential-provider-web-identity': 3.654.0(@aws-sdk/client-sts@3.654.0) + '@aws-sdk/types': 3.654.0 + '@smithy/credential-provider-imds': 3.2.3 + '@smithy/property-provider': 3.1.6 + '@smithy/shared-ini-file-loader': 3.1.7 + '@smithy/types': 3.4.2 tslib: 2.6.2 transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' - aws-crt optional: true - /@aws-sdk/credential-provider-node@3.427.0: - resolution: {integrity: sha512-wYYbQ57nKL8OfgRbl8k6uXcdnYml+p3LSSfDUAuUEp1HKlQ8lOXFJ3BdLr5qrk7LhpyppSRnWBmh2c3kWa7ANQ==} - engines: {node: '>=14.0.0'} + /@aws-sdk/credential-provider-node@3.654.0(@aws-sdk/client-sso-oidc@3.654.0)(@aws-sdk/client-sts@3.654.0): + resolution: {integrity: sha512-wPV7CNYaXDEc+SS+3R0v8SZwkHRUE1z2k2j1d49tH5QBDT4tb/k2V/biXWkwSk3hbR+IMWXmuhJDv/5lybhIvg==} + engines: {node: '>=16.0.0'} requiresBuild: true 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.16 - '@smithy/property-provider': 2.0.12 - '@smithy/shared-ini-file-loader': 2.2.0 - '@smithy/types': 2.3.5 + '@aws-sdk/credential-provider-env': 3.654.0 + '@aws-sdk/credential-provider-http': 3.654.0 + '@aws-sdk/credential-provider-ini': 3.654.0(@aws-sdk/client-sso-oidc@3.654.0)(@aws-sdk/client-sts@3.654.0) + '@aws-sdk/credential-provider-process': 3.654.0 + '@aws-sdk/credential-provider-sso': 3.654.0(@aws-sdk/client-sso-oidc@3.654.0) + '@aws-sdk/credential-provider-web-identity': 3.654.0(@aws-sdk/client-sts@3.654.0) + '@aws-sdk/types': 3.654.0 + '@smithy/credential-provider-imds': 3.2.3 + '@smithy/property-provider': 3.1.6 + '@smithy/shared-ini-file-loader': 3.1.7 + '@smithy/types': 3.4.2 tslib: 2.6.2 transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' + - '@aws-sdk/client-sts' - aws-crt optional: true - /@aws-sdk/credential-provider-process@3.425.0: - resolution: {integrity: sha512-YY6tkLdvtb1Fgofp3b1UWO+5vwS14LJ/smGmuGpSba0V7gFJRdcrJ9bcb9vVgAGuMdjzRJ+bUKlLLtqXkaykEw==} - engines: {node: '>=14.0.0'} + /@aws-sdk/credential-provider-process@3.654.0: + resolution: {integrity: sha512-PmQoo8sZ9Q2Ow8OMzK++Z9lI7MsRUG7sNq3E72DVA215dhtTICTDQwGlXH2AAmIp7n+G9LLRds+4wo2ehG4mkg==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/property-provider': 2.0.12 - '@smithy/shared-ini-file-loader': 2.2.0 - '@smithy/types': 2.3.5 + '@aws-sdk/types': 3.654.0 + '@smithy/property-provider': 3.1.6 + '@smithy/shared-ini-file-loader': 3.1.7 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@aws-sdk/credential-provider-sso@3.427.0: - resolution: {integrity: sha512-c+tXyS/i49erHs4bAp6vKNYeYlyQ0VNMBgoco0LCn1rL0REtHbfhWMnqDLF6c2n3yIWDOTrQu0D73Idnpy16eA==} - engines: {node: '>=14.0.0'} + /@aws-sdk/credential-provider-sso@3.654.0(@aws-sdk/client-sso-oidc@3.654.0): + resolution: {integrity: sha512-7GFme6fWEdA/XYKzZPOAdj/jS6fMBy1NdSIZsDXikS0v9jU+ZzHrAaWt13YLzHyjgxB9Sg9id9ncdY1IiubQXQ==} + engines: {node: '>=16.0.0'} requiresBuild: true 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.12 - '@smithy/shared-ini-file-loader': 2.2.0 - '@smithy/types': 2.3.5 + '@aws-sdk/client-sso': 3.654.0 + '@aws-sdk/token-providers': 3.654.0(@aws-sdk/client-sso-oidc@3.654.0) + '@aws-sdk/types': 3.654.0 + '@smithy/property-provider': 3.1.6 + '@smithy/shared-ini-file-loader': 3.1.7 + '@smithy/types': 3.4.2 tslib: 2.6.2 transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' - aws-crt optional: true - /@aws-sdk/credential-provider-web-identity@3.425.0: - resolution: {integrity: sha512-/0R65TgRzL01JU3SzloivWNwdkbIhr06uY/F5pBHf/DynQqaspKNfdHn6AiozgSVDfwRHFjKBTUy6wvf3QFkuA==} - engines: {node: '>=14.0.0'} + /@aws-sdk/credential-provider-web-identity@3.654.0(@aws-sdk/client-sts@3.654.0): + resolution: {integrity: sha512-6a2g9gMtZToqSu+CusjNK5zvbLJahQ9di7buO3iXgbizXpLXU1rnawCpWxwslMpT5fLgMSKDnKDrr6wdEk7jSw==} + engines: {node: '>=16.0.0'} requiresBuild: true + peerDependencies: + '@aws-sdk/client-sts': ^3.654.0 dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/property-provider': 2.0.12 - '@smithy/types': 2.3.5 + '@aws-sdk/client-sts': 3.654.0 + '@aws-sdk/types': 3.654.0 + '@smithy/property-provider': 3.1.6 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@aws-sdk/credential-providers@3.427.0: - resolution: {integrity: sha512-rKKohSHju462vo+uQnPjcEZPBAfAMgGH6K1XyyCNpuOC0yYLkG87PYpvAQeb8riTrkHPX0dYUHuTHZ6zQgMGjA==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/client-cognito-identity': 3.427.0 - '@aws-sdk/client-sso': 3.427.0 - '@aws-sdk/client-sts': 3.427.0 - '@aws-sdk/credential-provider-cognito-identity': 3.427.0 - '@aws-sdk/credential-provider-env': 3.425.0 - '@aws-sdk/credential-provider-http': 3.425.0 - '@aws-sdk/credential-provider-ini': 3.427.0 - '@aws-sdk/credential-provider-node': 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.16 - '@smithy/property-provider': 2.0.12 - '@smithy/types': 2.3.5 + /@aws-sdk/credential-providers@3.654.0(@aws-sdk/client-sso-oidc@3.654.0): + resolution: {integrity: sha512-e9ZDKnmXOMOQW9e3RQyaLUcerZFzHCickRSPoSxAsGKnrhH/ltIm9Od3uyVILl1TGJoOCxVDMBE9nPfl+vNRzQ==} + engines: {node: '>=16.0.0'} + requiresBuild: true + dependencies: + '@aws-sdk/client-cognito-identity': 3.654.0 + '@aws-sdk/client-sso': 3.654.0 + '@aws-sdk/client-sts': 3.654.0 + '@aws-sdk/credential-provider-cognito-identity': 3.654.0 + '@aws-sdk/credential-provider-env': 3.654.0 + '@aws-sdk/credential-provider-http': 3.654.0 + '@aws-sdk/credential-provider-ini': 3.654.0(@aws-sdk/client-sso-oidc@3.654.0)(@aws-sdk/client-sts@3.654.0) + '@aws-sdk/credential-provider-node': 3.654.0(@aws-sdk/client-sso-oidc@3.654.0)(@aws-sdk/client-sts@3.654.0) + '@aws-sdk/credential-provider-process': 3.654.0 + '@aws-sdk/credential-provider-sso': 3.654.0(@aws-sdk/client-sso-oidc@3.654.0) + '@aws-sdk/credential-provider-web-identity': 3.654.0(@aws-sdk/client-sts@3.654.0) + '@aws-sdk/types': 3.654.0 + '@smithy/credential-provider-imds': 3.2.3 + '@smithy/property-provider': 3.1.6 + '@smithy/types': 3.4.2 tslib: 2.6.2 transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' - aws-crt optional: true - /@aws-sdk/middleware-host-header@3.425.0: - resolution: {integrity: sha512-E5Gt41LObQ+cr8QnLthwsH3MtVSNXy1AKJMowDr85h0vzqA/FHUkgHyOGntgozzjXT5M0MaSRYxS0xwTR5D4Ew==} - engines: {node: '>=14.0.0'} - requiresBuild: true - dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/protocol-http': 3.0.7 - '@smithy/types': 2.3.5 - tslib: 2.6.2 - optional: true - - /@aws-sdk/middleware-logger@3.425.0: - resolution: {integrity: sha512-INE9XWRXx2f4a/r2vOU0tAmgctVp7nEaEasemNtVBYhqbKLZvr9ndLBSgKGgJ8LIcXAoISipaMuFiqIGkFsm7A==} - engines: {node: '>=14.0.0'} + /@aws-sdk/middleware-host-header@3.654.0: + resolution: {integrity: sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/types': 2.3.5 + '@aws-sdk/types': 3.654.0 + '@smithy/protocol-http': 4.1.3 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@aws-sdk/middleware-recursion-detection@3.425.0: - resolution: {integrity: sha512-77gnzJ5b91bgD75L/ugpOyerx6lR3oyS4080X1YI58EzdyBMkDrHM4FbMcY2RynETi3lwXCFzLRyZjWXY1mRlw==} - engines: {node: '>=14.0.0'} + /@aws-sdk/middleware-logger@3.654.0: + resolution: {integrity: sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/protocol-http': 3.0.7 - '@smithy/types': 2.3.5 + '@aws-sdk/types': 3.654.0 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@aws-sdk/middleware-sdk-sts@3.425.0: - resolution: {integrity: sha512-JFojrg76oKAoBknnr9EL5N2aJ1mRCtBqXoZYST58GSx8uYdFQ89qS65VNQ8JviBXzsrCNAn4vDhZ5Ch5E6TxGQ==} - engines: {node: '>=14.0.0'} + /@aws-sdk/middleware-recursion-detection@3.654.0: + resolution: {integrity: sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@aws-sdk/middleware-signing': 3.425.0 - '@aws-sdk/types': 3.425.0 - '@smithy/types': 2.3.5 + '@aws-sdk/types': 3.654.0 + '@smithy/protocol-http': 4.1.3 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@aws-sdk/middleware-signing@3.425.0: - resolution: {integrity: sha512-ZpOfgJHk7ovQ0sSwg3tU4NxFOnz53lJlkJRf7S+wxQALHM0P2MJ6LYBrZaFMVsKiJxNIdZBXD6jclgHg72ZW6Q==} - engines: {node: '>=14.0.0'} + /@aws-sdk/middleware-user-agent@3.654.0: + resolution: {integrity: sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.425.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 + '@aws-sdk/types': 3.654.0 + '@aws-sdk/util-endpoints': 3.654.0 + '@smithy/protocol-http': 4.1.3 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@aws-sdk/middleware-user-agent@3.427.0: - resolution: {integrity: sha512-y9HxYsNvnA3KqDl8w1jHeCwz4P9CuBEtu/G+KYffLeAMBsMZmh4SIkFFCO9wE/dyYg6+yo07rYcnnIfy7WA0bw==} - engines: {node: '>=14.0.0'} + /@aws-sdk/region-config-resolver@3.654.0: + resolution: {integrity: sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.425.0 - '@aws-sdk/util-endpoints': 3.427.0 - '@smithy/protocol-http': 3.0.7 - '@smithy/types': 2.3.5 + '@aws-sdk/types': 3.654.0 + '@smithy/node-config-provider': 3.1.7 + '@smithy/types': 3.4.2 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.6 tslib: 2.6.2 optional: true - /@aws-sdk/region-config-resolver@3.425.0: - resolution: {integrity: sha512-u7uv/iUOapIJdRgRkO3wnpYsUgV6ponsZJQgVg/8L+n+Vo5PQL5gAcIuAOwcYSKQPFaeK+KbmByI4SyOK203Vw==} - engines: {node: '>=14.0.0'} + /@aws-sdk/token-providers@3.654.0(@aws-sdk/client-sso-oidc@3.654.0): + resolution: {integrity: sha512-D8GeJYmvbfWkQDtTB4owmIobSMexZel0fOoetwvgCQ/7L8VPph3Q2bn1TRRIXvH7wdt6DcDxA3tKMHPBkT3GlA==} + engines: {node: '>=16.0.0'} requiresBuild: true + peerDependencies: + '@aws-sdk/client-sso-oidc': ^3.654.0 dependencies: - '@smithy/node-config-provider': 2.1.1 - '@smithy/types': 2.3.5 - '@smithy/util-config-provider': 2.0.0 - '@smithy/util-middleware': 2.0.4 + '@aws-sdk/client-sso-oidc': 3.654.0(@aws-sdk/client-sts@3.654.0) + '@aws-sdk/types': 3.654.0 + '@smithy/property-provider': 3.1.6 + '@smithy/shared-ini-file-loader': 3.1.7 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@aws-sdk/token-providers@3.427.0: - resolution: {integrity: sha512-4E5E+4p8lJ69PBY400dJXF06LUHYx5lkKzBEsYqWWhoZcoftrvi24ltIhUDoGVLkrLcTHZIWSdFAWSos4hXqeg==} - engines: {node: '>=14.0.0'} + /@aws-sdk/types@3.654.0: + resolution: {integrity: sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==} + engines: {node: '>=16.0.0'} requiresBuild: true 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.14 - '@smithy/fetch-http-handler': 2.2.2 - '@smithy/hash-node': 2.0.11 - '@smithy/invalid-dependency': 2.0.11 - '@smithy/middleware-content-length': 2.0.13 - '@smithy/middleware-endpoint': 2.0.11 - '@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.10 - '@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.14 - '@smithy/util-defaults-mode-node': 2.0.18 - '@smithy/util-retry': 2.0.4 - '@smithy/util-utf8': 2.0.0 + '@smithy/types': 3.4.2 tslib: 2.6.2 - transitivePeerDependencies: - - aws-crt optional: true - /@aws-sdk/types@3.425.0: - resolution: {integrity: sha512-6lqbmorwerN4v+J5dqbHPAsjynI0mkEF+blf+69QTaKKGaxBBVaXgqoqul9RXYcK5MMrrYRbQIMd0zYOoy90kA==} - engines: {node: '>=14.0.0'} + /@aws-sdk/util-endpoints@3.654.0: + resolution: {integrity: sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.5 + '@aws-sdk/types': 3.654.0 + '@smithy/types': 3.4.2 + '@smithy/util-endpoints': 2.1.2 tslib: 2.6.2 optional: true - /@aws-sdk/util-endpoints@3.427.0: - resolution: {integrity: sha512-rSyiAIFF/EVvity/+LWUqoTMJ0a25RAc9iqx0WZ4tf1UjuEXRRXxZEb+jEZg1bk+pY84gdLdx9z5E+MSJCZxNQ==} - engines: {node: '>=14.0.0'} + /@aws-sdk/util-locate-window@3.568.0: + resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/node-config-provider': 2.1.1 tslib: 2.6.2 optional: true - /@aws-sdk/util-locate-window@3.310.0: - resolution: {integrity: sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==} - engines: {node: '>=14.0.0'} + /@aws-sdk/util-user-agent-browser@3.654.0: + resolution: {integrity: sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==} requiresBuild: true dependencies: - tslib: 2.6.2 - optional: true - - /@aws-sdk/util-user-agent-browser@3.425.0: - resolution: {integrity: sha512-22Y9iMtjGcFjGILR6/xdp1qRezlHVLyXtnpEsbuPTiernRCPk6zfAnK/ATH77r02MUjU057tdxVkd5umUBTn9Q==} - requiresBuild: true - dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/types': 2.3.5 + '@aws-sdk/types': 3.654.0 + '@smithy/types': 3.4.2 bowser: 2.11.0 tslib: 2.6.2 optional: true - /@aws-sdk/util-user-agent-node@3.425.0: - resolution: {integrity: sha512-SIR4F5uQeeVAi8lv4OgRirtdtNi5zeyogTuQgGi9su8F/WP1N6JqxofcwpUY5f8/oJ2UlXr/tx1f09UHfJJzvA==} - engines: {node: '>=14.0.0'} + /@aws-sdk/util-user-agent-node@3.654.0: + resolution: {integrity: sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==} + engines: {node: '>=16.0.0'} requiresBuild: true peerDependencies: aws-crt: '>=1.0.0' @@ -726,16 +749,9 @@ packages: aws-crt: optional: true dependencies: - '@aws-sdk/types': 3.425.0 - '@smithy/node-config-provider': 2.1.1 - '@smithy/types': 2.3.5 - tslib: 2.6.2 - optional: true - - /@aws-sdk/util-utf8-browser@3.259.0: - resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} - requiresBuild: true - dependencies: + '@aws-sdk/types': 3.654.0 + '@smithy/node-config-provider': 3.1.7 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true @@ -2244,7 +2260,7 @@ packages: resolution: {integrity: sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==} dependencies: '@firebase/util': 1.9.3 - tslib: 2.6.2 + tslib: 2.7.0 dev: false /@firebase/database-compat@0.3.4: @@ -2255,7 +2271,7 @@ packages: '@firebase/database-types': 0.10.4 '@firebase/logger': 0.4.0 '@firebase/util': 1.9.3 - tslib: 2.6.2 + tslib: 2.7.0 dev: false /@firebase/database-types@0.10.4: @@ -2273,19 +2289,19 @@ packages: '@firebase/logger': 0.4.0 '@firebase/util': 1.9.3 faye-websocket: 0.11.4 - tslib: 2.6.2 + tslib: 2.7.0 dev: false /@firebase/logger@0.4.0: resolution: {integrity: sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==} dependencies: - tslib: 2.6.2 + tslib: 2.7.0 dev: false /@firebase/util@1.9.3: resolution: {integrity: sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==} dependencies: - tslib: 2.6.2 + tslib: 2.7.0 dev: false /@floating-ui/core@1.4.1: @@ -2313,7 +2329,7 @@ packages: fast-deep-equal: 3.1.3 functional-red-black-tree: 1.0.1 google-gax: 3.6.1 - protobufjs: 7.2.5 + protobufjs: 7.4.0 transitivePeerDependencies: - encoding - supports-color @@ -2355,10 +2371,10 @@ packages: abort-controller: 3.0.0 async-retry: 1.3.3 compressible: 2.0.18 - duplexify: 4.1.2 - ent: 2.2.0 + duplexify: 4.1.3 + ent: 2.2.1 extend: 3.0.2 - fast-xml-parser: 4.2.7 + fast-xml-parser: 4.4.1 gaxios: 5.1.3 google-auth-library: 8.9.0 mime: 3.0.0 @@ -2373,26 +2389,25 @@ packages: dev: false optional: true - /@grpc/grpc-js@1.8.21: - resolution: {integrity: sha512-KeyQeZpxeEBSqFVTi3q2K7PiPXmgBfECc4updA1ejCLjYmoAlvvM3ZMp5ztTDUCUQmoY3CpDxvchjO1+rFkoHg==} + /@grpc/grpc-js@1.8.22: + resolution: {integrity: sha512-oAjDdN7fzbUi+4hZjKG96MR6KTEubAeMpQEb+77qy+3r0Ua5xTFuie6JOLr4ZZgl5g+W5/uRTS2M1V8mVAFPuA==} engines: {node: ^8.13.0 || >=10.10.0} requiresBuild: true dependencies: - '@grpc/proto-loader': 0.7.8 - '@types/node': 20.4.7 + '@grpc/proto-loader': 0.7.13 + '@types/node': 22.6.1 dev: false optional: true - /@grpc/proto-loader@0.7.8: - resolution: {integrity: sha512-GU12e2c8dmdXb7XUlOgYWZ2o2i+z9/VeACkxTA/zzAe2IjclC5PnVL0lpgjhrqfpDYHzM8B1TF6pqWegMYAzlA==} + /@grpc/proto-loader@0.7.13: + resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} engines: {node: '>=6'} hasBin: true requiresBuild: true dependencies: - '@types/long': 4.0.2 lodash.camelcase: 4.3.0 - long: 4.0.0 - protobufjs: 7.2.5 + long: 5.2.3 + protobufjs: 7.4.0 yargs: 17.7.2 dev: false optional: true @@ -2487,8 +2502,8 @@ packages: '@jridgewell/sourcemap-codec': 1.4.14 dev: false - /@jsdoc/salty@0.2.5: - resolution: {integrity: sha512-TfRP53RqunNe2HBobVBJ0VLhK1HbfvBYeTC1ahnN64PWvyYyGebmMiPkuwvD9fpw2ZbkoPb8Q7mwy0aR8Z9rvw==} + /@jsdoc/salty@0.2.8: + resolution: {integrity: sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg==} engines: {node: '>=v12.0.0'} requiresBuild: true dependencies: @@ -2496,8 +2511,8 @@ packages: dev: false optional: true - /@mongodb-js/saslprep@1.1.0: - resolution: {integrity: sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==} + /@mongodb-js/saslprep@1.1.9: + resolution: {integrity: sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==} requiresBuild: true dependencies: sparse-bitfield: 3.0.3 @@ -2749,385 +2764,434 @@ packages: rollup: 2.79.1 dev: false - /@smithy/abort-controller@2.0.11: - resolution: {integrity: sha512-MSzE1qR2JNyb7ot3blIOT3O3H0Jn06iNDEgHRaqZUwBgx5EG+VIx24Y21tlKofzYryIOcWpIohLrIIyocD6LMA==} - engines: {node: '>=14.0.0'} + /@smithy/abort-controller@3.1.4: + resolution: {integrity: sha512-VupaALAQlXViW3/enTf/f5l5JZYSAxoJL7f0nanhNNKnww6DGCg1oYIuNP78KDugnkwthBO6iEcym16HhWV8RQ==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.5 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/config-resolver@2.0.14: - resolution: {integrity: sha512-K1K+FuWQoy8j/G7lAmK85o03O89s2Vvh6kMFmzEmiHUoQCRH1rzbDtMnGNiaMHeSeYJ6y79IyTusdRG+LuWwtg==} - engines: {node: '>=14.0.0'} + /@smithy/config-resolver@3.0.8: + resolution: {integrity: sha512-Tv1obAC18XOd2OnDAjSWmmthzx6Pdeh63FbLin8MlPiuJ2ATpKkq0NcNOJFr0dO+JmZXnwu8FQxKJ3TKJ3Hulw==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/node-config-provider': 2.1.1 - '@smithy/types': 2.3.5 - '@smithy/util-config-provider': 2.0.0 - '@smithy/util-middleware': 2.0.4 + '@smithy/node-config-provider': 3.1.7 + '@smithy/types': 3.4.2 + '@smithy/util-config-provider': 3.0.0 + '@smithy/util-middleware': 3.0.6 tslib: 2.6.2 optional: true - /@smithy/credential-provider-imds@2.0.16: - resolution: {integrity: sha512-tKa2xF+69TvGxJT+lnJpGrKxUuAZDLYXFhqnPEgnHz+psTpkpcB4QRjHj63+uj83KaeFJdTfW201eLZeRn6FfA==} - engines: {node: '>=14.0.0'} + /@smithy/core@2.4.5: + resolution: {integrity: sha512-Z0qlPXgZ0pouYgnu/cZTEYeRAvniiKZmVl4wIbZHX/nEMHkMDV9ao6KFArsU9KndE0TuhL149xcRx45wfw1YCA==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/node-config-provider': 2.1.1 - '@smithy/property-provider': 2.0.12 - '@smithy/types': 2.3.5 - '@smithy/url-parser': 2.0.11 + '@smithy/middleware-endpoint': 3.1.3 + '@smithy/middleware-retry': 3.0.20 + '@smithy/middleware-serde': 3.0.6 + '@smithy/protocol-http': 4.1.3 + '@smithy/smithy-client': 3.3.4 + '@smithy/types': 3.4.2 + '@smithy/util-body-length-browser': 3.0.0 + '@smithy/util-middleware': 3.0.6 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 optional: true - /@smithy/eventstream-codec@2.0.11: - resolution: {integrity: sha512-BQCTjxhCYRZIfXapa2LmZSaH8QUBGwMZw7XRN83hrdixbLjIcj+o549zjkedFS07Ve2TlvWUI6BTzP+nv7snBA==} + /@smithy/credential-provider-imds@3.2.3: + resolution: {integrity: sha512-VoxMzSzdvkkjMJNE38yQgx4CfnmT+Z+5EUXkg4x7yag93eQkVQgZvN3XBSHC/ylfBbLbAtdu7flTCChX9I+mVg==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@aws-crypto/crc32': 3.0.0 - '@smithy/types': 2.3.5 - '@smithy/util-hex-encoding': 2.0.0 + '@smithy/node-config-provider': 3.1.7 + '@smithy/property-provider': 3.1.6 + '@smithy/types': 3.4.2 + '@smithy/url-parser': 3.0.6 tslib: 2.6.2 optional: true - /@smithy/fetch-http-handler@2.2.2: - resolution: {integrity: sha512-K7aRtRuaBjzlk+jWWeyfDTLAmRRvmA4fU8eHUXtjsuEDgi3f356ZE32VD2ssxIH13RCLVZbXMt5h7wHzYiSuVA==} + /@smithy/fetch-http-handler@3.2.8: + resolution: {integrity: sha512-Lqe0B8F5RM7zkw//6avq1SJ8AfaRd3ubFUS1eVp5WszV7p6Ne5hQ4dSuMHDpNRPhgTvj4va9Kd/pcVigHEHRow==} requiresBuild: true dependencies: - '@smithy/protocol-http': 3.0.7 - '@smithy/querystring-builder': 2.0.11 - '@smithy/types': 2.3.5 - '@smithy/util-base64': 2.0.0 + '@smithy/protocol-http': 4.1.3 + '@smithy/querystring-builder': 3.0.6 + '@smithy/types': 3.4.2 + '@smithy/util-base64': 3.0.0 tslib: 2.6.2 optional: true - /@smithy/hash-node@2.0.11: - resolution: {integrity: sha512-PbleVugN2tbhl1ZoNWVrZ1oTFFas/Hq+s6zGO8B9bv4w/StTriTKA9W+xZJACOj9X7zwfoTLbscM+avCB1KqOQ==} - engines: {node: '>=14.0.0'} + /@smithy/hash-node@3.0.6: + resolution: {integrity: sha512-c/FHEdKK/7DU2z6ZE91L36ahyXWayR3B+FzELjnYq7wH5YqIseM24V+pWCS9kFn1Ln8OFGTf+pyYPiHZuX0s/Q==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.5 - '@smithy/util-buffer-from': 2.0.0 - '@smithy/util-utf8': 2.0.0 + '@smithy/types': 3.4.2 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 optional: true - /@smithy/invalid-dependency@2.0.11: - resolution: {integrity: sha512-zazq99ujxYv/NOf9zh7xXbNgzoVLsqE0wle8P/1zU/XdhPi/0zohTPKWUzIxjGdqb5hkkwfBkNkl5H+LE0mvgw==} + /@smithy/invalid-dependency@3.0.6: + resolution: {integrity: sha512-czM7Ioq3s8pIXht7oD+vmgy4Wfb4XavU/k/irO8NdXFFOx7YAlsCCcKOh/lJD1mJSYQqiR7NmpZ9JviryD/7AQ==} requiresBuild: true dependencies: - '@smithy/types': 2.3.5 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/is-array-buffer@2.0.0: - resolution: {integrity: sha512-z3PjFjMyZNI98JFRJi/U0nGoLWMSJlDjAW4QUX2WNZLas5C0CmVV6LJ01JI0k90l7FvpmixjWxPFmENSClQ7ug==} + /@smithy/is-array-buffer@2.2.0: + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: tslib: 2.6.2 optional: true - /@smithy/middleware-content-length@2.0.13: - resolution: {integrity: sha512-Md2kxWpaec3bXp1oERFPQPBhOXCkGSAF7uc1E+4rkwjgw3/tqAXRtbjbggu67HJdwaif76As8AV6XxbD1HzqTQ==} - engines: {node: '>=14.0.0'} + /@smithy/is-array-buffer@3.0.0: + resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/protocol-http': 3.0.7 - '@smithy/types': 2.3.5 tslib: 2.6.2 optional: true - /@smithy/middleware-endpoint@2.0.11: - resolution: {integrity: sha512-mCugsvB15up6fqpzUEpMT4CuJmFkEI+KcozA7QMzYguXCaIilyMKsyxgamwmr+o7lo3QdjN0//XLQ9bWFL129g==} - engines: {node: '>=14.0.0'} + /@smithy/middleware-content-length@3.0.8: + resolution: {integrity: sha512-VuyszlSO49WKh3H9/kIO2kf07VUwGV80QRiaDxUfP8P8UKlokz381ETJvwLhwuypBYhLymCYyNhB3fLAGBX2og==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/middleware-serde': 2.0.11 - '@smithy/types': 2.3.5 - '@smithy/url-parser': 2.0.11 - '@smithy/util-middleware': 2.0.4 + '@smithy/protocol-http': 4.1.3 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/middleware-retry@2.0.16: - resolution: {integrity: sha512-Br5+0yoiMS0ugiOAfJxregzMMGIRCbX4PYo1kDHtLgvkA/d++aHbnHB819m5zOIAMPvPE7AThZgcsoK+WOsUTA==} - engines: {node: '>=14.0.0'} + /@smithy/middleware-endpoint@3.1.3: + resolution: {integrity: sha512-KeM/OrK8MVFUsoJsmCN0MZMVPjKKLudn13xpgwIMpGTYpA8QZB2Xq5tJ+RE6iu3A6NhOI4VajDTwBsm8pwwrhg==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@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 + '@smithy/middleware-serde': 3.0.6 + '@smithy/node-config-provider': 3.1.7 + '@smithy/shared-ini-file-loader': 3.1.7 + '@smithy/types': 3.4.2 + '@smithy/url-parser': 3.0.6 + '@smithy/util-middleware': 3.0.6 tslib: 2.6.2 - uuid: 8.3.2 optional: true - /@smithy/middleware-serde@2.0.11: - resolution: {integrity: sha512-NuxnjMyf4zQqhwwdh0OTj5RqpnuT6HcH5Xg5GrPijPcKzc2REXVEVK4Yyk8ckj8ez1XSj/bCmJ+oNjmqB02GWA==} - engines: {node: '>=14.0.0'} + /@smithy/middleware-retry@3.0.20: + resolution: {integrity: sha512-HELCOVwYw5hFDBm69d+LmmGjBCjWnwp/t7SJiHmp+c4u9vgfIaCjdSeIdnlOsLrr5ic5jGTJXvJFUQnd987b/g==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.5 + '@smithy/node-config-provider': 3.1.7 + '@smithy/protocol-http': 4.1.3 + '@smithy/service-error-classification': 3.0.6 + '@smithy/smithy-client': 3.3.4 + '@smithy/types': 3.4.2 + '@smithy/util-middleware': 3.0.6 + '@smithy/util-retry': 3.0.6 tslib: 2.6.2 + uuid: 9.0.1 optional: true - /@smithy/middleware-stack@2.0.5: - resolution: {integrity: sha512-bVQU/rZzBY7CbSxIrDTGZYnBWKtIw+PL/cRc9B7etZk1IKSOe0NvKMJyWllfhfhrTeMF6eleCzOihIQympAvPw==} - engines: {node: '>=14.0.0'} + /@smithy/middleware-serde@3.0.6: + resolution: {integrity: sha512-KKTUSl1MzOM0MAjGbudeaVNtIDo+PpekTBkCNwvfZlKndodrnvRo+00USatiyLOc0ujjO9UydMRu3O9dYML7ag==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.5 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/node-config-provider@2.1.1: - resolution: {integrity: sha512-1lF6s1YWBi1LBu2O30tD3jyTgMtuvk/Z1twzXM4GPYe4dmZix4nNREPJIPOcfFikNU2o0eTYP80+izx5F2jIJA==} - engines: {node: '>=14.0.0'} + /@smithy/middleware-stack@3.0.6: + resolution: {integrity: sha512-2c0eSYhTQ8xQqHMcRxLMpadFbTXg6Zla5l0mwNftFCZMQmuhI7EbAJMx6R5eqfuV3YbJ3QGyS3d5uSmrHV8Khg==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/property-provider': 2.0.12 - '@smithy/shared-ini-file-loader': 2.2.0 - '@smithy/types': 2.3.5 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/node-http-handler@2.1.7: - resolution: {integrity: sha512-PQIKZXlp3awCDn/xNlCSTFE7aYG/5Tx33M05NfQmWYeB5yV1GZZOSz4dXpwiNJYTXb9jPqjl+ueXXkwtEluFFA==} - engines: {node: '>=14.0.0'} + /@smithy/node-config-provider@3.1.7: + resolution: {integrity: sha512-g3mfnC3Oo8pOI0dYuPXLtdW1WGVb3bR2tkV21GNkm0ZvQjLTtamXAwCWt/FCb0HGvKt3gHHmF1XerG0ICfalOg==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/abort-controller': 2.0.11 - '@smithy/protocol-http': 3.0.7 - '@smithy/querystring-builder': 2.0.11 - '@smithy/types': 2.3.5 + '@smithy/property-provider': 3.1.6 + '@smithy/shared-ini-file-loader': 3.1.7 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/property-provider@2.0.12: - resolution: {integrity: sha512-Un/OvvuQ1Kg8WYtoMCicfsFFuHb/TKL3pCA6ZIo/WvNTJTR94RtoRnL7mY4XkkUAoFMyf6KjcQJ76y1FX7S5rw==} - engines: {node: '>=14.0.0'} + /@smithy/node-http-handler@3.2.3: + resolution: {integrity: sha512-/gcm5DJ3k1b1zEInzBGAZC8ntJ+jwrz1NcSIu+9dSXd1FfG0G6QgkDI40tt8/WYUbHtLyo8fEqtm2v29koWo/w==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.5 + '@smithy/abort-controller': 3.1.4 + '@smithy/protocol-http': 4.1.3 + '@smithy/querystring-builder': 3.0.6 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/protocol-http@3.0.7: - resolution: {integrity: sha512-HnZW8y+r66ntYueCDbLqKwWcMNWW8o3eVpSrHNluwtBJ/EUWfQHRKSiu6vZZtc6PGfPQWgVfucoCE/C3QufMAA==} - engines: {node: '>=14.0.0'} + /@smithy/property-provider@3.1.6: + resolution: {integrity: sha512-NK3y/T7Q/Bw+Z8vsVs9MYIQ5v7gOX7clyrXcwhhIBQhbPgRl6JDrZbusO9qWDhcEus75Tg+VCxtIRfo3H76fpw==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.5 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/querystring-builder@2.0.11: - resolution: {integrity: sha512-b4kEbVMxpmfv2VWUITn2otckTi7GlMteZQxi+jlwedoATOGEyrCJPfRcYQJjbCi3fZ2QTfh3PcORvB27+j38Yg==} - engines: {node: '>=14.0.0'} + /@smithy/protocol-http@4.1.3: + resolution: {integrity: sha512-GcbMmOYpH9iRqtC05RbRnc/0FssxSTHlmaNhYBTgSgNCYpdR3Kt88u5GAZTBmouzv+Zlj/VRv92J9ruuDeJuEw==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.5 - '@smithy/util-uri-escape': 2.0.0 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/querystring-parser@2.0.11: - resolution: {integrity: sha512-YXe7jhi7s3dQ0Fu9dLoY/gLu6NCyy8tBWJL/v2c9i7/RLpHgKT+uT96/OqZkHizCJ4kr0ZD46tzMjql/o60KLg==} - engines: {node: '>=14.0.0'} + /@smithy/querystring-builder@3.0.6: + resolution: {integrity: sha512-sQe08RunoObe+Usujn9+R2zrLuQERi3CWvRO3BvnoWSYUaIrLKuAIeY7cMeDax6xGyfIP3x/yFWbEKSXvOnvVg==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.5 + '@smithy/types': 3.4.2 + '@smithy/util-uri-escape': 3.0.0 tslib: 2.6.2 optional: true - /@smithy/service-error-classification@2.0.4: - resolution: {integrity: sha512-77506l12I5gxTZqBkx3Wb0RqMG81bMYLaVQ+EqIWFwQDJRs5UFeXogKxSKojCmz1wLUziHZQXm03MBzPQiumQw==} - engines: {node: '>=14.0.0'} + /@smithy/querystring-parser@3.0.6: + resolution: {integrity: sha512-UJKw4LlEkytzz2Wq+uIdHf6qOtFfee/o7ruH0jF5I6UAuU+19r9QV7nU3P/uI0l6+oElRHmG/5cBBcGJrD7Ozg==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.5 + '@smithy/types': 3.4.2 + tslib: 2.6.2 optional: true - /@smithy/shared-ini-file-loader@2.2.0: - resolution: {integrity: sha512-xFXqs4vAb5BdkzHSRrTapFoaqS4/3m/CGZzdw46fBjYZ0paYuLAoMY60ICCn1FfGirG+PiJ3eWcqJNe4/SkfyA==} - engines: {node: '>=14.0.0'} + /@smithy/service-error-classification@3.0.6: + resolution: {integrity: sha512-53SpchU3+DUZrN7J6sBx9tBiCVGzsib2e4sc512Q7K9fpC5zkJKs6Z9s+qbMxSYrkEkle6hnMtrts7XNkMJJMg==} + engines: {node: '>=16.0.0'} + requiresBuild: true + dependencies: + '@smithy/types': 3.4.2 + optional: true + + /@smithy/shared-ini-file-loader@3.1.7: + resolution: {integrity: sha512-IA4K2qTJYXkF5OfVN4vsY1hfnUZjaslEE8Fsr/gGFza4TAC2A9NfnZuSY2srQIbt9bwtjHiAayrRVgKse4Q7fA==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.5 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/signature-v4@2.0.11: - resolution: {integrity: sha512-EFVU1dT+2s8xi227l1A9O27edT/GNKvyAK6lZnIZ0zhIHq/jSLznvkk15aonGAM1kmhmZBVGpI7Tt0odueZK9A==} - engines: {node: '>=14.0.0'} + /@smithy/signature-v4@4.1.4: + resolution: {integrity: sha512-72MiK7xYukNsnLJI9NqvUHqTu0ziEsfMsYNlWpiJfuGQnCTFKpckThlEatirvcA/LmT1h7rRO+pJD06PYsPu9Q==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/eventstream-codec': 2.0.11 - '@smithy/is-array-buffer': 2.0.0 - '@smithy/types': 2.3.5 - '@smithy/util-hex-encoding': 2.0.0 - '@smithy/util-middleware': 2.0.4 - '@smithy/util-uri-escape': 2.0.0 - '@smithy/util-utf8': 2.0.0 + '@smithy/is-array-buffer': 3.0.0 + '@smithy/protocol-http': 4.1.3 + '@smithy/types': 3.4.2 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-middleware': 3.0.6 + '@smithy/util-uri-escape': 3.0.0 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 optional: true - /@smithy/smithy-client@2.1.10: - resolution: {integrity: sha512-2OEmZDiW1Z196QHuQZ5M6cBE8FCSG0H2HADP1G+DY8P3agsvb0YJyfhyKuJbxIQy15tr3eDAK6FOrlbxgKOOew==} - engines: {node: '>=14.0.0'} + /@smithy/smithy-client@3.3.4: + resolution: {integrity: sha512-NKw/2XxOW/Rg3rzB90HxsmGok5oS6vRzJgMh/JN4BHaOQQ4q5OuX999GmOGxEp730wbpIXIowfKZmIMXkG4v0Q==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/middleware-stack': 2.0.5 - '@smithy/types': 2.3.5 - '@smithy/util-stream': 2.0.15 + '@smithy/middleware-endpoint': 3.1.3 + '@smithy/middleware-stack': 3.0.6 + '@smithy/protocol-http': 4.1.3 + '@smithy/types': 3.4.2 + '@smithy/util-stream': 3.1.8 tslib: 2.6.2 optional: true - /@smithy/types@2.3.5: - resolution: {integrity: sha512-ehyDt8M9hehyxrLQGoA1BGPou8Js1Ocoh5M0ngDhJMqbFmNK5N6Xhr9/ZExWkyIW8XcGkiMPq3ZUEE0ScrhbuQ==} - engines: {node: '>=14.0.0'} + /@smithy/types@3.4.2: + resolution: {integrity: sha512-tHiFcfcVedVBHpmHUEUHOCCih8iZbIAYn9NvPsNzaPm/237I3imdDdZoOC8c87H5HBAVEa06tTgb+OcSWV9g5w==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: tslib: 2.6.2 optional: true - /@smithy/url-parser@2.0.11: - resolution: {integrity: sha512-h89yXMCCF+S5k9XIoKltMIWTYj+FcEkU/IIFZ6RtE222fskOTL4Iak6ZRG+ehSvZDt8yKEcxqheTDq7JvvtK3g==} + /@smithy/url-parser@3.0.6: + resolution: {integrity: sha512-47Op/NU8Opt49KyGpHtVdnmmJMsp2hEwBdyjuFB9M2V5QVOwA7pBhhxKN5z6ztKGrMw76gd8MlbPuzzvaAncuQ==} requiresBuild: true dependencies: - '@smithy/querystring-parser': 2.0.11 - '@smithy/types': 2.3.5 + '@smithy/querystring-parser': 3.0.6 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/util-base64@2.0.0: - resolution: {integrity: sha512-Zb1E4xx+m5Lud8bbeYi5FkcMJMnn+1WUnJF3qD7rAdXpaL7UjkFQLdmW5fHadoKbdHpwH9vSR8EyTJFHJs++tA==} - engines: {node: '>=14.0.0'} + /@smithy/util-base64@3.0.0: + resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/util-buffer-from': 2.0.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-utf8': 3.0.0 tslib: 2.6.2 optional: true - /@smithy/util-body-length-browser@2.0.0: - resolution: {integrity: sha512-JdDuS4ircJt+FDnaQj88TzZY3+njZ6O+D3uakS32f2VNnDo3vyEuNdBOh/oFd8Df1zSZOuH1HEChk2AOYDezZg==} + /@smithy/util-body-length-browser@3.0.0: + resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} requiresBuild: true dependencies: tslib: 2.6.2 optional: true - /@smithy/util-body-length-node@2.1.0: - resolution: {integrity: sha512-/li0/kj/y3fQ3vyzn36NTLGmUwAICb7Jbe/CsWCktW363gh1MOcpEcSO3mJ344Gv2dqz8YJCLQpb6hju/0qOWw==} - engines: {node: '>=14.0.0'} + /@smithy/util-body-length-node@3.0.0: + resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: tslib: 2.6.2 optional: true - /@smithy/util-buffer-from@2.0.0: - resolution: {integrity: sha512-/YNnLoHsR+4W4Vf2wL5lGv0ksg8Bmk3GEGxn2vEQt52AQaPSCuaO5PM5VM7lP1K9qHRKHwrPGktqVoAHKWHxzw==} + /@smithy/util-buffer-from@2.2.0: + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/is-array-buffer': 2.0.0 + '@smithy/is-array-buffer': 2.2.0 tslib: 2.6.2 optional: true - /@smithy/util-config-provider@2.0.0: - resolution: {integrity: sha512-xCQ6UapcIWKxXHEU4Mcs2s7LcFQRiU3XEluM2WcCjjBtQkUN71Tb+ydGmJFPxMUrW/GWMgQEEGipLym4XG0jZg==} - engines: {node: '>=14.0.0'} + /@smithy/util-buffer-from@3.0.0: + resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: + '@smithy/is-array-buffer': 3.0.0 tslib: 2.6.2 optional: true - /@smithy/util-defaults-mode-browser@2.0.14: - resolution: {integrity: sha512-NupG7SWUucm3vJrvlpt9jG1XeoPJphjcivgcUUXhDJbUPy4F04LhlTiAhWSzwlCNcF8OJsMvZ/DWbpYD3pselw==} + /@smithy/util-config-provider@3.0.0: + resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} + engines: {node: '>=16.0.0'} + requiresBuild: true + dependencies: + tslib: 2.6.2 + optional: true + + /@smithy/util-defaults-mode-browser@3.0.20: + resolution: {integrity: sha512-HpYmCpEThQJpCKzwzrGrklhdegRfuXI9keHRrHidbyEMliCdgic6t38MikJeZEkdIcEMhO1g95HIYMzjUzB+xg==} engines: {node: '>= 10.0.0'} requiresBuild: true dependencies: - '@smithy/property-provider': 2.0.12 - '@smithy/smithy-client': 2.1.10 - '@smithy/types': 2.3.5 + '@smithy/property-provider': 3.1.6 + '@smithy/smithy-client': 3.3.4 + '@smithy/types': 3.4.2 bowser: 2.11.0 tslib: 2.6.2 optional: true - /@smithy/util-defaults-mode-node@2.0.18: - resolution: {integrity: sha512-+3jMom/b/Cdp21tDnY4vKu249Al+G/P0HbRbct7/aSZDlROzv1tksaYukon6UUv7uoHn+/McqnsvqZHLlqvQ0g==} + /@smithy/util-defaults-mode-node@3.0.20: + resolution: {integrity: sha512-atdsHNtAX0rwTvRRGsrONU0C0XzapH6tI8T1y/OReOvWN7uBwXqqWRft6m8egU2DgeReU0xqT3PHdGCe5VRaaQ==} engines: {node: '>= 10.0.0'} requiresBuild: true dependencies: - '@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.10 - '@smithy/types': 2.3.5 + '@smithy/config-resolver': 3.0.8 + '@smithy/credential-provider-imds': 3.2.3 + '@smithy/node-config-provider': 3.1.7 + '@smithy/property-provider': 3.1.6 + '@smithy/smithy-client': 3.3.4 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/util-hex-encoding@2.0.0: - resolution: {integrity: sha512-c5xY+NUnFqG6d7HFh1IFfrm3mGl29lC+vF+geHv4ToiuJCBmIfzx6IeHLg+OgRdPFKDXIw6pvi+p3CsscaMcMA==} - engines: {node: '>=14.0.0'} + /@smithy/util-endpoints@2.1.2: + resolution: {integrity: sha512-FEISzffb4H8DLzGq1g4MuDpcv6CIG15fXoQzDH9SjpRJv6h7J++1STFWWinilG0tQh9H1v2UKWG19Jjr2B16zQ==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: + '@smithy/node-config-provider': 3.1.7 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/util-middleware@2.0.4: - resolution: {integrity: sha512-Pbu6P4MBwRcjrLgdTR1O4Y3c0sTZn2JdOiJNcgL7EcIStcQodj+6ZTXtbyU/WTEU3MV2NMA10LxFc3AWHZ3+4A==} - engines: {node: '>=14.0.0'} + /@smithy/util-hex-encoding@3.0.0: + resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/types': 2.3.5 tslib: 2.6.2 optional: true - /@smithy/util-retry@2.0.4: - resolution: {integrity: sha512-b+n1jBBKc77C1E/zfBe1Zo7S9OXGBiGn55N0apfhZHxPUP/fMH5AhFUUcWaJh7NAnah284M5lGkBKuhnr3yK5w==} - engines: {node: '>= 14.0.0'} + /@smithy/util-middleware@3.0.6: + resolution: {integrity: sha512-BxbX4aBhI1O9p87/xM+zWy0GzT3CEVcXFPBRDoHAM+pV0eSW156pR+PSYEz0DQHDMYDsYAflC2bQNz2uaDBUZQ==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/service-error-classification': 2.0.4 - '@smithy/types': 2.3.5 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/util-stream@2.0.15: - resolution: {integrity: sha512-A/hkYJPH2N5MCWYvky4tTpQihpYAEzqnUfxDyG3L/yMndy/2sLvxnyQal9Opuj1e9FiKSTeMyjnU9xxZGs0mRw==} - engines: {node: '>=14.0.0'} + /@smithy/util-retry@3.0.6: + resolution: {integrity: sha512-BRZiuF7IwDntAbevqMco67an0Sr9oLQJqqRCsSPZZHYRnehS0LHDAkJk/pSmI7Z8c/1Vet294H7fY2fWUgB+Rg==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: - '@smithy/fetch-http-handler': 2.2.2 - '@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 - '@smithy/util-utf8': 2.0.0 + '@smithy/service-error-classification': 3.0.6 + '@smithy/types': 3.4.2 tslib: 2.6.2 optional: true - /@smithy/util-uri-escape@2.0.0: - resolution: {integrity: sha512-ebkxsqinSdEooQduuk9CbKcI+wheijxEb3utGXkCoYQkJnwTnLbH1JXGimJtUkQwNQbsbuYwG2+aFVyZf5TLaw==} - engines: {node: '>=14.0.0'} + /@smithy/util-stream@3.1.8: + resolution: {integrity: sha512-hoKOqSmb8FD3WLObuB5hwbM7bNIWgcnvkThokTvVq7J5PKjlLUK5qQQcB9zWLHIoSaIlf3VIv2OxZY2wtQjcRQ==} + engines: {node: '>=16.0.0'} + requiresBuild: true + dependencies: + '@smithy/fetch-http-handler': 3.2.8 + '@smithy/node-http-handler': 3.2.3 + '@smithy/types': 3.4.2 + '@smithy/util-base64': 3.0.0 + '@smithy/util-buffer-from': 3.0.0 + '@smithy/util-hex-encoding': 3.0.0 + '@smithy/util-utf8': 3.0.0 + tslib: 2.6.2 + optional: true + + /@smithy/util-uri-escape@3.0.0: + resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} + engines: {node: '>=16.0.0'} requiresBuild: true dependencies: tslib: 2.6.2 optional: true - /@smithy/util-utf8@2.0.0: - resolution: {integrity: sha512-rctU1VkziY84n5OXe3bPNpKR001ZCME2JCaBBFgtiM2hfKbHFudc/BkMuPab8hRbLd0j3vbnBTTZ1igBf0wgiQ==} + /@smithy/util-utf8@2.3.0: + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@smithy/util-buffer-from': 2.0.0 + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.6.2 + optional: true + + /@smithy/util-utf8@3.0.0: + resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} + engines: {node: '>=16.0.0'} + requiresBuild: true + dependencies: + '@smithy/util-buffer-from': 3.0.0 tslib: 2.6.2 optional: true @@ -3634,13 +3698,13 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 20.4.7 + '@types/node': 22.6.1 dev: false /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 20.4.7 + '@types/node': 22.6.1 dev: false /@types/cookie@0.4.1: @@ -3660,7 +3724,7 @@ packages: /@types/express-serve-static-core@4.17.35: resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} dependencies: - '@types/node': 20.4.7 + '@types/node': 22.6.1 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -3680,7 +3744,7 @@ packages: requiresBuild: true dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.4.7 + '@types/node': 22.6.1 dev: false optional: true @@ -3698,11 +3762,11 @@ packages: /@types/jsonwebtoken@9.0.2: resolution: {integrity: sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==} dependencies: - '@types/node': 20.4.7 + '@types/node': 22.6.1 dev: false - /@types/linkify-it@3.0.2: - resolution: {integrity: sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==} + /@types/linkify-it@5.0.0: + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} requiresBuild: true dev: false optional: true @@ -3713,17 +3777,17 @@ packages: dev: false optional: true - /@types/markdown-it@12.2.3: - resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} + /@types/markdown-it@14.1.2: + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} requiresBuild: true dependencies: - '@types/linkify-it': 3.0.2 - '@types/mdurl': 1.0.2 + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 dev: false optional: true - /@types/mdurl@1.0.2: - resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} + /@types/mdurl@2.0.0: + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} requiresBuild: true dev: false optional: true @@ -3741,6 +3805,12 @@ packages: /@types/node@20.4.7: resolution: {integrity: sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==} + /@types/node@22.6.1: + resolution: {integrity: sha512-V48tCfcKb/e6cVUigLAaJDAILdMP0fUW6BidkPK4GpGjXcfbnoHasCZDwz3N3yVt5we2RHm4XTQCpv0KJz9zqw==} + dependencies: + undici-types: 6.19.8 + dev: false + /@types/object.omit@3.0.0: resolution: {integrity: sha512-I27IoPpH250TUzc9FzXd0P1BV/BMJuzqD3jOz98ehf9dQqGkxlq+hO1bIqZGWqCg5bVOy0g4AUVJtnxe0klDmw==} dev: false @@ -3790,7 +3860,7 @@ packages: requiresBuild: true dependencies: '@types/glob': 8.1.0 - '@types/node': 20.4.7 + '@types/node': 22.6.1 dev: false optional: true @@ -3802,7 +3872,7 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 20.4.7 + '@types/node': 22.6.1 dev: false /@types/serve-static@1.15.2: @@ -3810,7 +3880,7 @@ packages: dependencies: '@types/http-errors': 2.0.1 '@types/mime': 1.3.2 - '@types/node': 20.4.7 + '@types/node': 22.6.1 dev: false /@types/throttle-debounce@2.1.0: @@ -4475,7 +4545,7 @@ packages: debug: 4.3.4 express-session: 1.17.3 kruptein: 3.0.6 - mongodb: 4.17.1 + mongodb: 4.17.1(@aws-sdk/client-sso-oidc@3.654.0) transitivePeerDependencies: - supports-color dev: false @@ -4767,14 +4837,14 @@ packages: engines: {node: '>=12'} dev: false - /duplexify@4.1.2: - resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} + /duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} requiresBuild: true dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.2 - stream-shift: 1.0.1 + stream-shift: 1.0.3 dev: false optional: true @@ -4837,15 +4907,12 @@ packages: - utf-8-validate dev: false - /ent@2.2.0: - resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} - requiresBuild: true - dev: false - optional: true - - /entities@2.1.0: - resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} + /ent@2.2.1: + resolution: {integrity: sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==} + engines: {node: '>= 0.4'} requiresBuild: true + dependencies: + punycode: 1.4.1 dev: false optional: true @@ -4854,6 +4921,13 @@ packages: engines: {node: '>=0.12'} dev: false + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + requiresBuild: true + dev: false + optional: true + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -5176,23 +5250,14 @@ packages: dev: false optional: true - /fast-xml-parser@4.2.5: - resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} + /fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} hasBin: true requiresBuild: true dependencies: strnum: 1.0.5 optional: true - /fast-xml-parser@4.2.7: - resolution: {integrity: sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==} - hasBin: true - requiresBuild: true - dependencies: - strnum: 1.0.5 - dev: false - optional: true - /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: @@ -5269,18 +5334,18 @@ packages: locate-path: 6.0.0 path-exists: 4.0.0 - /firebase-admin@11.10.1: - resolution: {integrity: sha512-atv1E6GbuvcvWaD3eHwrjeP5dAVs+EaHEJhu9CThMzPY6In8QYDiUR6tq5SwGl4SdA/GcAU0nhwWc/FSJsAzfQ==} + /firebase-admin@11.11.1: + resolution: {integrity: sha512-UyEbq+3u6jWzCYbUntv/HuJiTixwh36G1R9j0v71mSvGAx/YZEWEW7uSGLYxBYE6ckVRQoKMr40PYUEzrm/4dg==} engines: {node: '>=14'} dependencies: '@fastify/busboy': 1.2.1 '@firebase/database-compat': 0.3.4 '@firebase/database-types': 0.10.4 - '@types/node': 20.4.7 + '@types/node': 22.6.1 jsonwebtoken: 9.0.2 - jwks-rsa: 3.0.1 + jwks-rsa: 3.1.0 node-forge: 1.3.1 - uuid: 9.0.0 + uuid: 9.0.1 optionalDependencies: '@google-cloud/firestore': 6.8.0 '@google-cloud/storage': 6.12.0 @@ -5379,7 +5444,7 @@ packages: extend: 3.0.2 https-proxy-agent: 5.0.1 is-stream: 2.0.1 - node-fetch: 2.6.12 + node-fetch: 2.7.0 transitivePeerDependencies: - encoding - supports-color @@ -5461,12 +5526,13 @@ packages: /glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported requiresBuild: true dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 5.1.6 + minimatch: 5.0.1 once: 1.4.0 dev: false optional: true @@ -5519,16 +5585,16 @@ packages: hasBin: true requiresBuild: true dependencies: - '@grpc/grpc-js': 1.8.21 - '@grpc/proto-loader': 0.7.8 + '@grpc/grpc-js': 1.8.22 + '@grpc/proto-loader': 0.7.13 '@types/long': 4.0.2 '@types/rimraf': 3.0.2 abort-controller: 3.0.0 - duplexify: 4.1.2 + duplexify: 4.1.3 fast-text-encoding: 1.0.6 google-auth-library: 8.9.0 is-stream-ended: 0.1.4 - node-fetch: 2.6.12 + node-fetch: 2.7.0 object-hash: 3.0.0 proto3-json-serializer: 1.1.1 protobufjs: 7.2.4 @@ -5543,6 +5609,7 @@ packages: /google-p12-pem@4.0.1: resolution: {integrity: sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==} engines: {node: '>=12.0.0'} + deprecated: Package is no longer maintained hasBin: true requiresBuild: true dependencies: @@ -5874,8 +5941,8 @@ packages: engines: {node: '>= 0.6.0'} dev: false - /jose@4.14.4: - resolution: {integrity: sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g==} + /jose@4.15.9: + resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} dev: false /js-tokens@4.0.0: @@ -5896,27 +5963,27 @@ packages: dev: false optional: true - /jsdoc@4.0.2: - resolution: {integrity: sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==} + /jsdoc@4.0.3: + resolution: {integrity: sha512-Nu7Sf35kXJ1MWDZIMAuATRQTg1iIPdzh7tqJ6jjvaU/GfDf+qi5UV8zJR3Mo+/pYFvm8mzay4+6O5EWigaQBQw==} engines: {node: '>=12.0.0'} hasBin: true requiresBuild: true dependencies: '@babel/parser': 7.22.7 - '@jsdoc/salty': 0.2.5 - '@types/markdown-it': 12.2.3 + '@jsdoc/salty': 0.2.8 + '@types/markdown-it': 14.1.2 bluebird: 3.7.2 catharsis: 0.9.0 escape-string-regexp: 2.0.0 js2xmlparser: 4.0.2 klaw: 3.0.0 - markdown-it: 12.3.2 - markdown-it-anchor: 8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2) + markdown-it: 14.1.0 + markdown-it-anchor: 8.6.7(@types/markdown-it@14.1.2)(markdown-it@14.1.0) marked: 4.3.0 mkdirp: 1.0.4 requizzle: 0.2.4 strip-json-comments: 3.1.1 - underscore: 1.13.6 + underscore: 1.13.7 dev: false optional: true @@ -5993,14 +6060,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.21 '@types/jsonwebtoken': 9.0.2 debug: 4.3.4 - jose: 4.14.4 + jose: 4.15.9 limiter: 1.1.5 lru-memoizer: 2.2.0 transitivePeerDependencies: @@ -6077,19 +6144,19 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false - /linkify-it@3.0.3: - resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} - requiresBuild: true + /linkify-it@4.0.1: + resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} dependencies: uc.micro: 1.0.6 dev: false - optional: true - /linkify-it@4.0.1: - resolution: {integrity: sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==} + /linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + requiresBuild: true dependencies: - uc.micro: 1.0.6 + uc.micro: 2.1.0 dev: false + optional: true /linkifyjs@3.0.5: resolution: {integrity: sha512-1Y9XQH65eQKA9p2xtk+zxvnTeQBG7rdAXSkUG97DmuI/Xhji9uaUzaWxRj6rf9YC0v8KKHkxav7tnLX82Sz5Fg==} @@ -6188,12 +6255,6 @@ packages: triple-beam: 1.4.1 dev: false - /long@4.0.0: - resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} - requiresBuild: true - dev: false - optional: true - /long@5.2.3: resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} requiresBuild: true @@ -6257,41 +6318,42 @@ packages: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: false - /markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2): + /markdown-it-anchor@8.6.7(@types/markdown-it@14.1.2)(markdown-it@14.1.0): resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} requiresBuild: true peerDependencies: '@types/markdown-it': '*' markdown-it: '*' dependencies: - '@types/markdown-it': 12.2.3 - markdown-it: 12.3.2 + '@types/markdown-it': 14.1.2 + markdown-it: 14.1.0 dev: false optional: true - /markdown-it@12.3.2: - resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} + /markdown-it@13.0.1: + resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} hasBin: true - requiresBuild: true dependencies: argparse: 2.0.1 - entities: 2.1.0 - linkify-it: 3.0.3 + entities: 3.0.1 + linkify-it: 4.0.1 mdurl: 1.0.1 uc.micro: 1.0.6 dev: false - optional: true - /markdown-it@13.0.1: - resolution: {integrity: sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==} + /markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true + requiresBuild: true dependencies: argparse: 2.0.1 - entities: 3.0.1 - linkify-it: 4.0.1 - mdurl: 1.0.1 - uc.micro: 1.0.6 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 dev: false + optional: true /marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} @@ -6305,6 +6367,12 @@ packages: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} dev: false + /mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + requiresBuild: true + dev: false + optional: true + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -6391,16 +6459,6 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - dev: true - - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - requiresBuild: true - dependencies: - brace-expansion: 2.0.1 - dev: false - optional: true /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -6454,7 +6512,7 @@ packages: '@types/whatwg-url': 8.2.2 whatwg-url: 11.0.0 - /mongodb@4.17.1: + /mongodb@4.17.1(@aws-sdk/client-sso-oidc@3.654.0): resolution: {integrity: sha512-MBuyYiPUPRTqfH2dV0ya4dcr2E5N52ocBuZ8Sgg/M030nGF78v855B3Z27mZJnp8PxjnUquEnAtjOsphgMZOlQ==} engines: {node: '>=12.9.0'} dependencies: @@ -6462,23 +6520,25 @@ packages: mongodb-connection-string-url: 2.6.0 socks: 2.7.1 optionalDependencies: - '@aws-sdk/credential-providers': 3.427.0 - '@mongodb-js/saslprep': 1.1.0 + '@aws-sdk/credential-providers': 3.654.0(@aws-sdk/client-sso-oidc@3.654.0) + '@mongodb-js/saslprep': 1.1.9 transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' - aws-crt - /mongoose@6.12.0: + /mongoose@6.12.0(@aws-sdk/client-sso-oidc@3.654.0): resolution: {integrity: sha512-sd/q83C6TBRPBrrD2A/POSbA/exbCFM2WOuY7Lf2JuIJFlHFG39zYSDTTAEiYlzIfahNOLmXPxBGFxdAch41Mw==} engines: {node: '>=12.0.0'} dependencies: bson: 4.7.2 kareem: 2.5.1 - mongodb: 4.17.1 + mongodb: 4.17.1(@aws-sdk/client-sso-oidc@3.654.0) mpath: 0.9.0 mquery: 4.0.3 ms: 2.1.3 sift: 16.0.1 transitivePeerDependencies: + - '@aws-sdk/client-sso-oidc' - aws-crt - supports-color dev: false @@ -6528,8 +6588,8 @@ packages: uuid: 8.3.2 dev: false - /node-fetch@2.6.12: - resolution: {integrity: sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==} + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} requiresBuild: true peerDependencies: @@ -7001,7 +7061,7 @@ packages: engines: {node: '>=12.0.0'} requiresBuild: true dependencies: - protobufjs: 7.2.5 + protobufjs: 7.4.0 dev: false optional: true @@ -7018,12 +7078,12 @@ packages: espree: 9.6.1 estraverse: 5.3.0 glob: 8.1.0 - jsdoc: 4.0.2 + jsdoc: 4.0.3 minimist: 1.2.8 protobufjs: 7.2.4 semver: 7.5.4 - tmp: 0.2.1 - uglify-js: 3.17.4 + tmp: 0.2.3 + uglify-js: 3.19.3 dev: false optional: true @@ -7042,13 +7102,13 @@ packages: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.4.7 + '@types/node': 22.6.1 long: 5.2.3 dev: false optional: true - /protobufjs@7.2.5: - resolution: {integrity: sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==} + /protobufjs@7.4.0: + resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} engines: {node: '>=12.0.0'} requiresBuild: true dependencies: @@ -7062,7 +7122,7 @@ packages: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.4.7 + '@types/node': 22.6.1 long: 5.2.3 dev: false optional: true @@ -7083,10 +7143,23 @@ packages: resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} dev: true + /punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + requiresBuild: true + dev: false + optional: true + /punycode@1.3.2: resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} dev: false + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + requiresBuild: true + dev: false + optional: true + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} @@ -7769,8 +7842,8 @@ packages: dev: false optional: true - /stream-shift@1.0.1: - resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + /stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} requiresBuild: true dev: false optional: true @@ -7928,9 +8001,9 @@ packages: dependencies: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 - node-fetch: 2.6.12 + node-fetch: 2.7.0 stream-events: 1.0.5 - uuid: 9.0.0 + uuid: 9.0.1 transitivePeerDependencies: - encoding - supports-color @@ -7978,12 +8051,10 @@ packages: '@popperjs/core': 2.11.8 dev: false - /tmp@0.2.1: - resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} - engines: {node: '>=8.17.0'} + /tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} requiresBuild: true - dependencies: - rimraf: 3.0.2 dev: false optional: true @@ -8027,13 +8098,14 @@ packages: engines: {node: '>= 14.0.0'} dev: false - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} requiresBuild: true optional: true - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + dev: false /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} @@ -8076,8 +8148,14 @@ packages: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} dev: false - /uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + /uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + requiresBuild: true + dev: false + optional: true + + /uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -8095,12 +8173,16 @@ packages: resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==} dev: true - /underscore@1.13.6: - resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} + /underscore@1.13.7: + resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} requiresBuild: true dev: false optional: true + /undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + dev: false + /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} engines: {node: '>=4'} @@ -8208,11 +8290,12 @@ packages: /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + dev: false - /uuid@9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true - dev: false + requiresBuild: true /v8-compile-cache@2.3.0: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} diff --git a/src/lottery/modules/contracts.js b/src/lottery/modules/contracts.js index a415b0af..6281bec7 100644 --- a/src/lottery/modules/contracts.js +++ b/src/lottery/modules/contracts.js @@ -15,15 +15,15 @@ const quests = buildQuests({ description: "이벤트 참여만 해도 송편코인을 얻을 수 있다고?? 이벤트 참여에 동의하고 송편코인을 받아 보세요.", imageUrl: - "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_firstLogin.png", + "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_firstLogin.png", reward: 200, }, firstRoomCreation: { name: "첫 방 개설", description: - "원하는 택시팟을 찾을 수 없다면? 원하는 조건으로 방 개설 페이지에서 방을 직접 개설해보세요.", + "원하는 택시팟을 찾을 수 없다면? 원하는 조건으로 방 개설 페이지에서 방을 직접 개설해 보세요.", imageUrl: - "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_firstRoomCreation.png", + "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_firstRoomCreation.png", reward: 500, }, roomSharing: { @@ -31,7 +31,7 @@ const quests = buildQuests({ description: "방을 공유해 친구들을 택시팟에 초대해 보세요. 채팅창 상단의 햄버거(☰) 버튼을 누르면 공유하기 버튼을 찾을 수 있어요.", imageUrl: - "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_roomSharing.png", + "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_roomSharing.png", reward: 500, isApiRequired: true, }, @@ -40,64 +40,68 @@ const quests = buildQuests({ description: "2명 이상과 함께 택시를 타고 택시비를 결제한 후 정산을 요청해 보세요. 정산하기 버튼은 채팅 페이지 좌측 하단의 + 버튼을 눌러 찾을 수 있어요.", imageUrl: - "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_paying.png", + "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_fareSettlement.png", reward: 2000, maxCount: 0, }, farePayment: { name: "송금 완료면 I am 신뢰에요", description: - "2명 이상과 함께 택시를 타고 택시비를 결제한 분께 송금해주세요. 송금하기 버튼은 채팅 페이지 좌측 하단의 +버튼을 눌러 확인할 수 있어요.", + "2명 이상과 함께 택시를 타고 택시비를 결제한 분께 송금해 주세요. 송금하기 버튼은 채팅 페이지 좌측 하단의 + 버튼을 눌러 찾을 수 있어요.", imageUrl: - "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_sending.png", + "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_farePayment.png", reward: 2000, maxCount: 0, }, nicknameChanging: { name: "닉네임 폼 미쳤다", description: - "닉네임을 변경하여 자신을 표현하세요. 마이페이지수정하기 버튼을 눌러 닉네임을 수정할 수 있어요.", + "닉네임을 변경하여 자신을 표현하세요. 마이 페이지수정하기 버튼을 눌러 닉네임을 수정할 수 있어요.", imageUrl: - "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_nicknameChanging.png", + "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_nicknameChanging.png", reward: 500, }, accountChanging: { name: "계좌 등록을 해야 능률이 올라갑니다", description: - "정산하기 기능을 더욱 빠르고 이용할 수 있다고? 계좌번호를 등록하면 정산하기를 할 때 계좌가 자동으로 입력돼요. 마이페이지수정하기 버튼을 눌러 계좌번호를 등록 또는 수정할 수 있어요.", + "정산하기 기능을 더욱 빠르게 이용할 수 있다고? 계좌 번호를 등록하면 정산하기를 할 때 계좌가 자동으로 입력돼요. 마이 페이지수정하기 버튼을 눌러 계좌 번호를 등록 또는 수정할 수 있어요.", imageUrl: - "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_accountChanging.png", + "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_accountChanging.png", reward: 500, }, adPushAgreement: { name: "Taxi의 소울메이트", description: - "Taxi 서비스를 잊지 않도록 가끔 찾아갈게요! 광고성 푸시 알림 수신 동의를 해주시면 방이 많이 모이는 시즌, 주변에 택시앱 사용자가 있을 때 알려드릴 수 있어요.", + "Taxi 서비스를 잊지 않도록 가끔 찾아갈게요! 광고성 푸시 알림 수신 동의를 해주시면 방이 많이 모이는 시즌, 주변에 Taxi 앱 사용자가 있을 때 알려드릴 수 있어요.", imageUrl: - "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_adPushAgreement.png", + "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_adPushAgreement.png", reward: 500, }, eventSharing: { name: "Taxi를 아십니까", - description: "내가 초대한 사람이 이벤트에 참여하면 송편코인을 드려요.", + description: + "내가 초대한 사람이 이벤트에 참여하면 송편코인을 드려요. 다른 사람의 초대를 받아 이벤트에 참여한 경우에도 이 퀘스트가 달성돼요.", imageUrl: - "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024spring/quest_eventSharing.png", + "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_eventSharing.png", reward: 700, maxCount: 0, }, dailyAttendance: { - name: "하루 한 번 Taxi!", + name: "매일매일 출석 췤!", description: - "매일 Taxi에 접속하여 출석 체크를 하면 송편코인을 드려요! 하루에 한 번, 택시팟도 둘러보고 송편코인도 받아 가세요. 송편코인을 얻으려면 출석 체크 페이지에서 출석 버튼을 눌러야 해요.", - imageUrl: "", + "매일 Taxi에 접속하면 하루 한 번 송편코인을 드려요! 하루에 한 번, 택시팟도 둘러보고 송편코인도 받아 가세요.", + imageUrl: + "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_dailyAttendance.png", reward: 700, maxCount: 17, isApiRequired: true, }, itemPurchase: { - name: "itemPurchase", - description: "itemPurchase", - imageUrl: "", + name: "Taxi에서 산 응모권", + description: + "응모권 교환소에서 아무 경품 응모권이나 구매해 보세요. Taxi에서 판매하는 응모권은 모두 정품이니 안심해도 좋아요.", + imageUrl: + "https://sparcs-taxi-prod.s3.ap-northeast-2.amazonaws.com/assets/event-2024fall/quest_itemPurchase.png", reward: 500, }, }); diff --git a/src/lottery/modules/quests.js b/src/lottery/modules/quests.js index 0d79ac81..6bf162fb 100644 --- a/src/lottery/modules/quests.js +++ b/src/lottery/modules/quests.js @@ -85,7 +85,7 @@ const completeQuest = async (userId, timestamp, quest) => { // 3단계: 유저의 퀘스트 완료 횟수를 확인합니다. // maxCount가 0인 경우, 무제한으로 퀘스트를 완료할 수 있습니다. const questCount = eventStatus.completedQuests.filter( - (completedQuestId) => completedQuestId === quest.id + ({ questId }) => questId === quest.id ).length; if (quest.maxCount > 0 && questCount >= quest.maxCount) { logger.info( diff --git a/src/lottery/routes/docs/globalState.js b/src/lottery/routes/docs/globalState.js index 1bbf23f4..44b62384 100644 --- a/src/lottery/routes/docs/globalState.js +++ b/src/lottery/routes/docs/globalState.js @@ -103,9 +103,9 @@ globalStateDocs[`${apiPrefix}/`] = { "유저가 완료한 퀘스트의 배열. 여러 번 완료한 퀘스트의 경우 배열 내에 같은 퀘스트가 여러 번 포함됩니다.", items: { type: "object", - required: ["id", "completedAt"], + required: ["questId", "completedAt"], properties: { - id: { + questId: { type: "string", description: "퀘스트의 Id", example: "QUEST ID", diff --git a/src/lottery/routes/docs/items.js b/src/lottery/routes/docs/items.js index 06a6c118..28ecd53d 100644 --- a/src/lottery/routes/docs/items.js +++ b/src/lottery/routes/docs/items.js @@ -28,6 +28,7 @@ itemsDocs[`${apiPrefix}/`] = { "price", "isDisabled", "itemType", + "realStock", ], properties: { _id: { @@ -50,11 +51,6 @@ itemsDocs[`${apiPrefix}/`] = { description: "상품의 썸네일 이미지 URL", example: "THUMBNAIL URL", }, - instagramStoryStickerImageUrl: { - type: "string", - description: "인스타그램 스토리 스티커 이미지 URL", - example: "STICKER URL", - }, price: { type: "number", description: "상품의 가격. 0 이상의 정수입니다.", @@ -71,6 +67,98 @@ itemsDocs[`${apiPrefix}/`] = { "상품의 유형. 0: 일반 상품, 1: 일반 티켓, 2: 고급 티켓, 3: 랜덤박스입니다.", example: 0, }, + realStock: { + type: "number", + description: "상품의 실제 재고", + example: 30, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, + }, +}; +itemsDocs[`${apiPrefix}/{itemId}`] = { + get: { + tags: [`${apiPrefix}`], + summary: "상점에서 판매하는 특정 상품의 정보 반환", + description: "상점에서 판매하는 특정 상품의 정보를 가져옵니다.", + parameters: [ + { + in: "path", + name: "itemId", + required: true, + description: "정보를 조회할 상품의 ObjectId", + example: "ITEM ID", + }, + ], + responses: { + 200: { + content: { + "application/json": { + schema: { + type: "object", + required: ["item"], + properties: { + item: { + type: "object", + required: [ + "_id", + "name", + "description", + "imageUrl", + "price", + "isDisabled", + "itemType", + "realStock", + ], + description: "상품의 정보", + properties: { + _id: { + type: "string", + description: "상품의 ObjectId", + example: "ITEM ID", + }, + name: { + type: "string", + description: "상품의 이름", + example: "진짜 송편", + }, + description: { + type: "string", + description: "상품의 설명", + example: "먹을 수 있는 송편입니다.", + }, + imageUrl: { + type: "string", + description: "상품의 썸네일 이미지 URL", + example: "THUMBNAIL URL", + }, + price: { + type: "number", + description: "상품의 가격. 0 이상의 정수입니다.", + example: 400, + }, + isDisabled: { + type: "boolean", + description: "상품의 판매 중지 여부", + example: false, + }, + itemType: { + type: "number", + description: + "상품의 유형. 0: 일반 상품, 1: 일반 티켓, 2: 고급 티켓, 3: 랜덤박스입니다.", + example: 0, + }, + realStock: { + type: "number", + description: "상품의 실제 재고", + example: 30, }, }, }, @@ -114,6 +202,7 @@ itemsDocs[`${apiPrefix}/leaderboard/{itemId}`] = { "profileImageUrl", "amount", "probability", + "rank", ], properties: { nickname: { @@ -136,6 +225,11 @@ itemsDocs[`${apiPrefix}/leaderboard/{itemId}`] = { description: "유저가 상품에 당첨될 확률", example: 0.1, }, + rank: { + type: "number", + description: "순위", + example: 1, + }, }, }, }, diff --git a/src/lottery/routes/docs/schemas/itemsSchema.js b/src/lottery/routes/docs/schemas/itemsSchema.js index 7e570b5a..d224ba70 100644 --- a/src/lottery/routes/docs/schemas/itemsSchema.js +++ b/src/lottery/routes/docs/schemas/itemsSchema.js @@ -3,6 +3,9 @@ const { zodToSchemaObject } = require("../../../../routes/docs/utils"); const { objectId } = require("../../../../modules/patterns"); const itemsZod = { + getItemHandler: z.object({ + itemId: z.string().regex(objectId), + }), getItemLeaderboardHandler: z.object({ itemId: z.string().regex(objectId), }), diff --git a/src/lottery/routes/items.js b/src/lottery/routes/items.js index 135617b8..0de8be18 100644 --- a/src/lottery/routes/items.js +++ b/src/lottery/routes/items.js @@ -6,6 +6,11 @@ const { itemsZod } = require("./docs/schemas/itemsSchema"); const itemsHandlers = require("../services/items"); router.get("/", itemsHandlers.getItemsHandler); +router.get( + "/:itemId", + validateParams(itemsZod.getItemHandler), + itemsHandlers.getItemHandler +); router.get( "/leaderboard/:itemId", validateParams(itemsZod.getItemLeaderboardHandler), diff --git a/src/lottery/services/items.js b/src/lottery/services/items.js index 9196ad53..07730574 100644 --- a/src/lottery/services/items.js +++ b/src/lottery/services/items.js @@ -15,7 +15,7 @@ const getItemsHandler = async (req, res) => { const items = await itemModel .find( {}, - "_id name description imageUrl instagramStoryStickerImageUrl price isDisabled itemType" + "_id name description imageUrl price isDisabled itemType realStock" ) .lean(); res.json({ items }); @@ -25,6 +25,24 @@ const getItemsHandler = async (req, res) => { } }; +const getItemHandler = async (req, res) => { + try { + const { itemId } = req.params; + const item = await itemModel + .findById( + itemId, + "_id name description imageUrl price isDisabled itemType realStock" + ) + .lean(); + if (!item) return res.status(400).json({ error: "Items/ : invalid item" }); + + res.json({ item }); + } catch (err) { + logger.error(err); + res.status(500).json({ error: "Items/ : internal server error" }); + } +}; + // 유도 과정은 services/publicNotice.js 파일에 정의된 calculateProbabilityV2 함수의 주석 참조 const calculateWinProbability = (realStock, users, amount, totalAmount) => { if (users.length <= realStock) return 1; @@ -113,6 +131,7 @@ const getItemLeaderboardHandler = async (req, res) => { profileImageUrl: userInfo.profileImageUrl, amount: user.amount, probability: user.probability, + rank: user.rank, }; }) ); @@ -318,7 +337,7 @@ const purchaseItemHandler = async (req, res) => { } else { const transaction = new transactionModel({ type: "use", - amount: creditDelta, + amount: -creditDelta, userId: req.userOid, itemId: item._id, itemAmount: amount, @@ -363,6 +382,7 @@ const purchaseItemHandler = async (req, res) => { module.exports = { getItemsHandler, + getItemHandler, getItemLeaderboardHandler, purchaseItemHandler, }; diff --git a/src/middlewares/ban.js b/src/middlewares/ban.js new file mode 100644 index 00000000..f70b9550 --- /dev/null +++ b/src/middlewares/ban.js @@ -0,0 +1,19 @@ +const { validateServiceBanRecord } = require("../modules/ban"); + +const serviceMapper = new Map([ + ["/rooms/create", "service"], + ["/rooms/join", "service"], +]); + +const banMiddleware = async (req, res, next) => { + const banErrorMessage = await validateServiceBanRecord( + req, + serviceMapper.get(req.originalUrl) + ); + if (banErrorMessage !== undefined) { + return res.status(400).json({ error: banErrorMessage }); + } + next(); +}; + +module.exports = banMiddleware; diff --git a/src/modules/ban.js b/src/modules/ban.js new file mode 100644 index 00000000..4068db78 --- /dev/null +++ b/src/modules/ban.js @@ -0,0 +1,45 @@ +const logger = require("./logger"); +const { banModel } = require("./stores/mongo"); + +/** + * @param {*} req + * @param {String} service + */ +const validateServiceBanRecord = async (req, service) => { + let banRecord = undefined; + + try { + // 현재 시각이 expireAt 보다 작고, 본인인 경우(ban의 userId가 userId랑 같은 경우) 중 serviceName이 "service"인 record를 모두 가져옴 + const bans = await banModel + .find({ + userSid: req.session.loginInfo.sid, + expireAt: { + $gte: req.timestamp, + }, + serviceName: service, + }) + .sort({ expireAt: -1 }); + if (bans.length > 0) { + // 가장 expireAt이 큰 정지 기록만 반환함. + banRecord = bans[0]; + } + } catch (err) { + logger.error( + "Error occured while validateServiceBanRecord: " + err.message + ); + return; + } + if (banRecord !== undefined) { + const formattedExpireAt = banRecord.expireAt + .toISOString() + .replace("T", " ") + .split(".")[0]; + const banErrorMessage = `${req.originalUrl} : user ${req.userId} (${req.session.loginInfo.sid}) is temporarily restricted from service until ${formattedExpireAt}.`; + return banErrorMessage; + } + return; +}; + +module.exports = { + validateServiceBanRecord, +}; diff --git a/src/modules/fcm.js b/src/modules/fcm.js index 1fc53946..fa37f64e 100644 --- a/src/modules/fcm.js +++ b/src/modules/fcm.js @@ -196,17 +196,16 @@ const sendMessageByTokens = async (tokens, type, title, body, icon, link) => { title, body, url: link || "/", - icon: icon || "/icons-512.png", + icon: icon || "https://taxi.sparcs.org/icons-512.png", click_action: "FLUTTER_NOTIFICATION_CLICK", }, apns: { payload: { aps: { alert: { title, body } } } }, android: { - ttl: 0, + priority: "high", }, }; - const { responses, failureCount } = await getMessaging().sendMulticast( - message - ); + const { responses, failureCount } = + await getMessaging().sendEachForMulticast(message); // 메시지 전송에 실패한 기기가 존재할 경우, 해당 기기의 deviceToken을 DB에서 삭제합니다. if (failureCount) { diff --git a/src/modules/stores/mongo.js b/src/modules/stores/mongo.js index c66d4641..a0e3e645 100755 --- a/src/modules/stores/mongo.js +++ b/src/modules/stores/mongo.js @@ -28,35 +28,21 @@ const userSchema = Schema({ const banSchema = Schema({ // 정지 시킬 사용자를 기제함. - userId: { type: mongoose.Types.ObjectId, ref: "User", required: true }, + userSid: { type: String, required: true }, // 정지 사유 - reason: { + reason: { type: String, required: true }, + bannedAt: { type: Date, required: true }, // 정지 당한 시각 + expireAt: { type: Date, required: true }, // 정지 만료 시각 + // 정지를 당한 서비스를 기제함 + serviceName: { type: String, required: true, + // 필요시 이곳에 정지를 시킬 서비스를 추가함. + enum: [ + "service", // service: 방 생성/참여 제한 + "2023-fall-event", // xxxx-xxxx-event: 특정 이벤트 참여 제한 + ], }, - bannedAt: { - type: Date, // 정지 당한 시각 - required: true, - }, - expireAt: { - type: Date, // 정지 만료 시각 - required: true, - }, - services: [ - { - // 정지를 당한 서비스를 기제함 - serviceName: { - type: String, - required: true, - // 필요시 이곳에 정지를 시킬 서비스를 추가함. - enum: [ - "all", // all -> 과거/미래 모든 서비스 및 이벤트 이용 제한 - "service", // service -> 방 생성/참여 제한 - "2023-fall-event", // event -> 특정 이벤트 참여 제한 - ], - }, - }, - ], }); const participantSchema = Schema({ diff --git a/src/routes/docs/rooms.js b/src/routes/docs/rooms.js index 3ac66e6b..0c9303a2 100644 --- a/src/routes/docs/rooms.js +++ b/src/routes/docs/rooms.js @@ -72,6 +72,12 @@ roomsDocs[`${apiPrefix}/create`] = { }, }, examples: { + "방 생성 기능이 정지당한 경우": { + value: { + error: + "Rooms/join : user monday is temporarily restricted from creating rooms until 2024-08-23 15:00:00.", + }, + }, "출발지와 도착지가 같음": { value: { error: "Rooms/create : locations are same", @@ -309,6 +315,12 @@ roomsDocs[`${apiPrefix}/join`] = { }, }, examples: { + "방 참여 기능이 정지당한 경우": { + value: { + error: + "Rooms/join : user monday is temporarily restricted from joining rooms until 2024-08-23 15:00:00.", + }, + }, "사용자가 참여하는 진행 중 방이 5개 이상": { value: { error: "Rooms/join : participating in too many rooms", diff --git a/src/routes/docs/users.js b/src/routes/docs/users.js index deaeb113..0f19ecde 100644 --- a/src/routes/docs/users.js +++ b/src/routes/docs/users.js @@ -330,7 +330,7 @@ usersDocs[`${apiPrefix}/resetProfileImg`] = { }, }; -usersDocs[`${apiPrefix}/isBanned`] = { +usersDocs[`${apiPrefix}/getBanRecord`] = { get: { tags: [tag], summary: "본인의 현재 정지 기록을 가져움", @@ -344,10 +344,10 @@ usersDocs[`${apiPrefix}/isBanned`] = { type: "array", items: { properties: { - userId: { + userSid: { type: "string", - description: "사용자의 ObjectId", - pattern: objectId.source, + description: "사용자의 SSO ID", + pattern: "monday-sid", }, reason: { type: "string", @@ -364,85 +364,10 @@ usersDocs[`${apiPrefix}/isBanned`] = { description: "정지 만료 시각", example: "2024-05-21 12:00", }, - services: { - type: "array", - items: { - properties: { - serviceName: { - type: "string", - description: "정지를 당한 서비스 또는 이벤트 이름", - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - 400: { - content: { - "text/html": { - example: "Users/isBanned : there is no ban record", - }, - }, - }, - 500: { - content: { - "text/html": { - example: "Users/isBanned : internal server error", - }, - }, - }, - }, - }, -}; - -usersDocs[`${apiPrefix}/getBanRecord`] = { - get: { - tags: [tag], - summary: "본인의 모든 정지 기록을 가져움", - description: - "정지 기록들 중 본인인 경우에 해당하는 정지 기록을 모두 가져옴", - responses: { - 200: { - content: { - "application/json": { - schema: { - type: "array", - items: { - properties: { - userId: { - type: "string", - description: "사용자의 ObjectId", - pattern: objectId.source, - }, - reason: { + serviceName: { type: "string", - description: "정지 사유", - example: "미정산", - }, - bannedAt: { - type: "date", - description: "정지 당한 시각", - example: "2024-05-20 12:00", - }, - expireAt: { - type: "date", - description: "정지 만료 시각", - example: "2024-05-21 12:00", - }, - services: { - type: "array", - items: { - properties: { - serviceName: { - type: "string", - description: "정지를 당한 서비스 또는 이벤트 이름", - }, - }, - }, + description: "정지를 당한 서비스 또는 이벤트 이름", + example: "2023-fall-event", }, }, }, diff --git a/src/routes/rooms.js b/src/routes/rooms.js index 6345fa6f..b8bad634 100644 --- a/src/routes/rooms.js +++ b/src/routes/rooms.js @@ -35,6 +35,9 @@ router.get( // 이후 API 접근 시 로그인 필요 router.use(require("../middlewares/auth")); +// 방 생성/참여전 ban 여부 확인 +router.use(require("../middlewares/ban")); + // 특정 id 방 세부사항 보기 router.get( "/info", diff --git a/src/routes/users.js b/src/routes/users.js index d5366155..de3c0b1d 100755 --- a/src/routes/users.js +++ b/src/routes/users.js @@ -56,9 +56,6 @@ router.get("/editProfileImg/done", userHandlers.editProfileImgDoneHandler); // 프로필 이미지를 기본값으로 재설정합니다. router.get("/resetProfileImg", userHandlers.resetProfileImgHandler); -// 유저의 현재 유효한 서비스 정지 기록들만 반환합니다. -router.get("/isBanned", userHandlers.isBannedHandler); - // 유저의 서비스 정지 기록들을 모두 반환합니다. router.get("/getBanRecord", userHandlers.getBanRecordHandler); diff --git a/src/services/users.js b/src/services/users.js index 5d8ee632..8c51c736 100644 --- a/src/services/users.js +++ b/src/services/users.js @@ -200,27 +200,14 @@ const resetProfileImgHandler = async (req, res) => { } }; -const isBannedHandler = async (req, res) => { - try { - // 현재 시각이 expireAt 보다 작고 본인인 경우(ban의 userId가 userOid랑 같은 경우)의 record를 모두 가져옴 - const result = await banModel.find({ - userId: req.userOid, - expireAt: { - $gte: req.timestamp, - }, - }); - if (!result) - return res.status(500).send("Users/isBanned : internal server error"); - res.status(200).json(result); - } catch (err) { - res.status(500).send("Users/isBanned : internal server error"); - } -}; - const getBanRecordHandler = async (req, res) => { try { - // 본인인 경우(ban의 userId가 userOid랑 같은 경우)의 record를 모두 가져옴 - const result = await banModel.find({ userId: req.userOid }); + // 본인인 경우(ban의 userId가 userSid랑 같은 경우)의 record를 모두 가져옴 + const result = await banModel + .find({ + userSid: req.session.loginInfo.sid, + }) + .sort({ expireAt: -1 }); if (!result) return res.status(500).send("Users/getBanRecord : internal server error"); res.status(200).json(result); @@ -238,6 +225,5 @@ module.exports = { editProfileImgDoneHandler, resetNicknameHandler, resetProfileImgHandler, - isBannedHandler, getBanRecordHandler, };