diff --git a/Readme.md b/Readme.md index 926039f5e..9d631e479 100644 --- a/Readme.md +++ b/Readme.md @@ -63,6 +63,7 @@ Nest is an MIT-licensed open source project. It can grow thanks to the sponsors + diff --git a/package-lock.json b/package-lock.json index 05e9c2128..c77c500ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,8 +33,8 @@ "devDependencies": { "@apollo/server": "5.3.0", "@as-integrations/express5": "1.1.2", - "@commitlint/cli": "20.3.1", - "@commitlint/config-angular": "20.3.1", + "@commitlint/cli": "20.4.1", + "@commitlint/config-angular": "20.4.1", "@eslint/eslintrc": "3.3.3", "@eslint/js": "9.39.2", "@fastify/cors": "11.2.0", @@ -58,7 +58,7 @@ "@types/gulp": "4.0.18", "@types/http-errors": "2.0.5", "@types/mocha": "10.0.10", - "@types/node": "25.1.0", + "@types/node": "25.2.0", "@types/sinon": "21.0.0", "@types/supertest": "6.0.3", "@types/ws": "8.18.1", @@ -82,7 +82,7 @@ "fastify": "5.7.2", "fastify-plugin": "5.1.0", "find-my-way": "9.4.0", - "globals": "17.2.0", + "globals": "17.3.0", "graphql": "16.12.0", "graphql-subscriptions": "3.0.0", "gulp": "5.0.1", @@ -622,46 +622,46 @@ } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.974.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.974.0.tgz", - "integrity": "sha512-ci+GiM0c4ULo4D79UMcY06LcOLcfvUfiyt8PzNY0vbt5O8BfCPYf4QomwVgkNcLLCYmroO4ge2Yy1EsLUlcD6g==", + "version": "3.975.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.975.0.tgz", + "integrity": "sha512-HpgJuleH7P6uILxzJKQOmlHdwaCY+xYC6VgRDzlwVEqU/HXjo4m2gOAyjUbpXlBOCWfGgMUzfBlNJ9z3MboqEQ==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.0", + "@aws-sdk/core": "^3.973.1", "@aws-sdk/middleware-host-header": "^3.972.1", "@aws-sdk/middleware-logger": "^3.972.1", "@aws-sdk/middleware-recursion-detection": "^3.972.1", - "@aws-sdk/middleware-user-agent": "^3.972.1", + "@aws-sdk/middleware-user-agent": "^3.972.2", "@aws-sdk/region-config-resolver": "^3.972.1", "@aws-sdk/types": "^3.973.0", "@aws-sdk/util-endpoints": "3.972.0", "@aws-sdk/util-user-agent-browser": "^3.972.1", "@aws-sdk/util-user-agent-node": "^3.972.1", "@smithy/config-resolver": "^4.4.6", - "@smithy/core": "^3.21.0", + "@smithy/core": "^3.21.1", "@smithy/fetch-http-handler": "^5.3.9", "@smithy/hash-node": "^4.2.8", "@smithy/invalid-dependency": "^4.2.8", "@smithy/middleware-content-length": "^4.2.8", - "@smithy/middleware-endpoint": "^4.4.10", - "@smithy/middleware-retry": "^4.4.26", + "@smithy/middleware-endpoint": "^4.4.11", + "@smithy/middleware-retry": "^4.4.27", "@smithy/middleware-serde": "^4.2.9", "@smithy/middleware-stack": "^4.2.8", "@smithy/node-config-provider": "^4.3.8", "@smithy/node-http-handler": "^4.4.8", "@smithy/protocol-http": "^5.3.8", - "@smithy/smithy-client": "^4.10.11", + "@smithy/smithy-client": "^4.10.12", "@smithy/types": "^4.12.0", "@smithy/url-parser": "^4.2.8", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.25", - "@smithy/util-defaults-mode-node": "^4.2.28", + "@smithy/util-defaults-mode-browser": "^4.3.26", + "@smithy/util-defaults-mode-node": "^4.2.29", "@smithy/util-endpoints": "^3.2.8", "@smithy/util-middleware": "^4.2.8", "@smithy/util-retry": "^4.2.8", @@ -673,21 +673,21 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.973.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.1.tgz", - "integrity": "sha512-Ocubx42QsMyVs9ANSmFpRm0S+hubWljpPLjOi9UFrtcnVJjrVJTzQ51sN0e5g4e8i8QZ7uY73zosLmgYL7kZTQ==", + "version": "3.973.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.4.tgz", + "integrity": "sha512-8Rk+kPP74YiR47x54bxYlKZswsaSh0a4XvvRUMLvyS/koNawhsGu/+qSZxREqUeTO+GkKpFvSQIsAZR+deUP+g==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/types": "^3.973.0", - "@aws-sdk/xml-builder": "^3.972.1", - "@smithy/core": "^3.21.1", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/xml-builder": "^3.972.2", + "@smithy/core": "^3.22.0", "@smithy/node-config-provider": "^4.3.8", "@smithy/property-provider": "^4.2.8", "@smithy/protocol-http": "^5.3.8", "@smithy/signature-v4": "^5.3.8", - "@smithy/smithy-client": "^4.10.12", + "@smithy/smithy-client": "^4.11.1", "@smithy/types": "^4.12.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-middleware": "^4.2.8", @@ -769,15 +769,15 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.1.tgz", - "integrity": "sha512-/etNHqnx96phy/SjI0HRC588o4vKH5F0xfkZ13yAATV7aNrb+5gYGNE6ePWafP+FuZ3HkULSSlJFj0AxgrAqYw==", + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.2.tgz", + "integrity": "sha512-wzH1EdrZsytG1xN9UHaK12J9+kfrnd2+c8y0LVoS4O4laEjPoie1qVK3k8/rZe7KOtvULzyMnO3FT4Krr9Z0Dg==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/core": "^3.973.0", - "@aws-sdk/types": "^3.973.0", + "@aws-sdk/core": "^3.973.2", + "@aws-sdk/types": "^3.973.1", "@smithy/property-provider": "^4.2.8", "@smithy/types": "^4.12.0", "tslib": "^2.6.2" @@ -787,20 +787,20 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.2", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.2.tgz", - "integrity": "sha512-mXgdaUfe5oM+tWKyeZ7Vh/iQ94FrkMky1uuzwTOmFADiRcSk5uHy/e3boEFedXiT/PRGzgBmqvJVK4F6lUISCg==", + "version": "3.972.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.4.tgz", + "integrity": "sha512-OC7F3ipXV12QfDEWybQGHLzoeHBlAdx/nLzPfHP0Wsabu3JBffu5nlzSaJNf7to9HGtOW8Bpu8NX0ugmDrCbtw==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/core": "^3.973.1", - "@aws-sdk/types": "^3.973.0", + "@aws-sdk/core": "^3.973.4", + "@aws-sdk/types": "^3.973.1", "@smithy/fetch-http-handler": "^5.3.9", "@smithy/node-http-handler": "^4.4.8", "@smithy/property-provider": "^4.2.8", "@smithy/protocol-http": "^5.3.8", - "@smithy/smithy-client": "^4.10.12", + "@smithy/smithy-client": "^4.11.1", "@smithy/types": "^4.12.0", "@smithy/util-stream": "^4.5.10", "tslib": "^2.6.2" @@ -810,22 +810,22 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.1.tgz", - "integrity": "sha512-OdbJA3v+XlNDsrYzNPRUwr8l7gw1r/nR8l4r96MDzSBDU8WEo8T6C06SvwaXR8SpzsjO3sq5KMP86wXWg7Rj4g==", + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.2.tgz", + "integrity": "sha512-Jrb8sLm6k8+L7520irBrvCtdLxNtrG7arIxe9TCeMJt/HxqMGJdbIjw8wILzkEHLMIi4MecF2FbXCln7OT1Tag==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/core": "^3.973.0", - "@aws-sdk/credential-provider-env": "^3.972.1", - "@aws-sdk/credential-provider-http": "^3.972.1", - "@aws-sdk/credential-provider-login": "^3.972.1", - "@aws-sdk/credential-provider-process": "^3.972.1", - "@aws-sdk/credential-provider-sso": "^3.972.1", - "@aws-sdk/credential-provider-web-identity": "^3.972.1", - "@aws-sdk/nested-clients": "3.974.0", - "@aws-sdk/types": "^3.973.0", + "@aws-sdk/core": "^3.973.2", + "@aws-sdk/credential-provider-env": "^3.972.2", + "@aws-sdk/credential-provider-http": "^3.972.3", + "@aws-sdk/credential-provider-login": "^3.972.2", + "@aws-sdk/credential-provider-process": "^3.972.2", + "@aws-sdk/credential-provider-sso": "^3.972.2", + "@aws-sdk/credential-provider-web-identity": "^3.972.2", + "@aws-sdk/nested-clients": "3.975.0", + "@aws-sdk/types": "^3.973.1", "@smithy/credential-provider-imds": "^4.2.8", "@smithy/property-provider": "^4.2.8", "@smithy/shared-ini-file-loader": "^4.4.3", @@ -837,16 +837,16 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.1.tgz", - "integrity": "sha512-CccqDGL6ZrF3/EFWZefvKW7QwwRdxlHUO8NVBKNVcNq6womrPDvqB6xc9icACtE0XB0a7PLoSTkAg8bQVkTO2w==", + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.2.tgz", + "integrity": "sha512-mlaw2aiI3DrimW85ZMn3g7qrtHueidS58IGytZ+mbFpsYLK5wMjCAKZQtt7VatLMtSBG/dn/EY4njbnYXIDKeQ==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/core": "^3.973.0", - "@aws-sdk/nested-clients": "3.974.0", - "@aws-sdk/types": "^3.973.0", + "@aws-sdk/core": "^3.973.2", + "@aws-sdk/nested-clients": "3.975.0", + "@aws-sdk/types": "^3.973.1", "@smithy/property-provider": "^4.2.8", "@smithy/protocol-http": "^5.3.8", "@smithy/shared-ini-file-loader": "^4.4.3", @@ -858,20 +858,20 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.1.tgz", - "integrity": "sha512-DwXPk9GfuU/xG9tmCyXFVkCr6X3W8ZCoL5Ptb0pbltEx1/LCcg7T+PBqDlPiiinNCD6ilIoMJDWsnJ8ikzZA7Q==", + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.3.tgz", + "integrity": "sha512-iu+JwWHM7tHowKqE+8wNmI3sM6mPEiI9Egscz2BEV7adyKmV95oR9tBO4VIOl72FGDi7X9mXg19VtqIpSkEEsA==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.1", - "@aws-sdk/credential-provider-http": "^3.972.1", - "@aws-sdk/credential-provider-ini": "^3.972.1", - "@aws-sdk/credential-provider-process": "^3.972.1", - "@aws-sdk/credential-provider-sso": "^3.972.1", - "@aws-sdk/credential-provider-web-identity": "^3.972.1", - "@aws-sdk/types": "^3.973.0", + "@aws-sdk/credential-provider-env": "^3.972.2", + "@aws-sdk/credential-provider-http": "^3.972.4", + "@aws-sdk/credential-provider-ini": "^3.972.2", + "@aws-sdk/credential-provider-process": "^3.972.2", + "@aws-sdk/credential-provider-sso": "^3.972.2", + "@aws-sdk/credential-provider-web-identity": "^3.972.2", + "@aws-sdk/types": "^3.973.1", "@smithy/credential-provider-imds": "^4.2.8", "@smithy/property-provider": "^4.2.8", "@smithy/shared-ini-file-loader": "^4.4.3", @@ -883,15 +883,15 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.1.tgz", - "integrity": "sha512-bi47Zigu3692SJwdBvo8y1dEwE6B61stCwCFnuRWJVTfiM84B+VTSCV661CSWJmIZzmcy7J5J3kWyxL02iHj0w==", + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.2.tgz", + "integrity": "sha512-NLKLTT7jnUe9GpQAVkPTJO+cs2FjlQDt5fArIYS7h/Iw/CvamzgGYGFRVD2SE05nOHCMwafUSi42If8esGFV+g==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/core": "^3.973.0", - "@aws-sdk/types": "^3.973.0", + "@aws-sdk/core": "^3.973.2", + "@aws-sdk/types": "^3.973.1", "@smithy/property-provider": "^4.2.8", "@smithy/shared-ini-file-loader": "^4.4.3", "@smithy/types": "^4.12.0", @@ -902,17 +902,17 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.1.tgz", - "integrity": "sha512-dLZVNhM7wSgVUFsgVYgI5hb5Z/9PUkT46pk/SHrSmUqfx6YDvoV4YcPtaiRqviPpEGGiRtdQMEadyOKIRqulUQ==", + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.2.tgz", + "integrity": "sha512-YpwDn8g3gCGUl61cCV0sRxP2pFIwg+ZsMfWQ/GalSyjXtRkctCMFA+u0yPb/Q4uTfNEiya1Y4nm0C5rIHyPW5Q==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/client-sso": "3.974.0", - "@aws-sdk/core": "^3.973.0", - "@aws-sdk/token-providers": "3.974.0", - "@aws-sdk/types": "^3.973.0", + "@aws-sdk/client-sso": "3.975.0", + "@aws-sdk/core": "^3.973.2", + "@aws-sdk/token-providers": "3.975.0", + "@aws-sdk/types": "^3.973.1", "@smithy/property-provider": "^4.2.8", "@smithy/shared-ini-file-loader": "^4.4.3", "@smithy/types": "^4.12.0", @@ -923,16 +923,16 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.1.tgz", - "integrity": "sha512-YMDeYgi0u687Ay0dAq/pFPKuijrlKTgsaB/UATbxCs/FzZfMiG4If5ksywHmmW7MiYUF8VVv+uou3TczvLrN4w==", + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.2.tgz", + "integrity": "sha512-x9DAiN9Qz+NjJ99ltDiVQ8d511M/tuF/9MFbe2jUgo7HZhD6+x4S3iT1YcP07ndwDUjmzKGmeOEgE24k4qvfdg==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/core": "^3.973.0", - "@aws-sdk/nested-clients": "3.974.0", - "@aws-sdk/types": "^3.973.0", + "@aws-sdk/core": "^3.973.2", + "@aws-sdk/nested-clients": "3.975.0", + "@aws-sdk/types": "^3.973.1", "@smithy/property-provider": "^4.2.8", "@smithy/shared-ini-file-loader": "^4.4.3", "@smithy/types": "^4.12.0", @@ -942,32 +942,16 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/credential-providers": { - "version": "3.975.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.975.0.tgz", - "integrity": "sha512-3aisLw0I1yrmUpPuhqXZg8eLWOMQhwD/kRaP57WpTJzb2dGz3VouIgkyiUQALMx4KrA2SCy74zq52HnbFxtwRg==", + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.2.tgz", + "integrity": "sha512-42hZ8jEXT2uR6YybCzNq9OomqHPw43YIfRfz17biZjMQA4jKSQUaHIl6VvqO2Ddl5904pXg2Yd/ku78S0Ikgog==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/client-cognito-identity": "3.975.0", - "@aws-sdk/core": "^3.973.1", - "@aws-sdk/credential-provider-cognito-identity": "^3.972.1", - "@aws-sdk/credential-provider-env": "^3.972.1", - "@aws-sdk/credential-provider-http": "^3.972.2", - "@aws-sdk/credential-provider-ini": "^3.972.1", - "@aws-sdk/credential-provider-login": "^3.972.1", - "@aws-sdk/credential-provider-node": "^3.972.1", - "@aws-sdk/credential-provider-process": "^3.972.1", - "@aws-sdk/credential-provider-sso": "^3.972.1", - "@aws-sdk/credential-provider-web-identity": "^3.972.1", - "@aws-sdk/nested-clients": "3.975.0", - "@aws-sdk/types": "^3.973.0", - "@smithy/config-resolver": "^4.4.6", - "@smithy/core": "^3.21.1", - "@smithy/credential-provider-imds": "^4.2.8", - "@smithy/node-config-provider": "^4.3.8", - "@smithy/property-provider": "^4.2.8", + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, @@ -975,7 +959,61 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/nested-clients": { + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.2.tgz", + "integrity": "sha512-iUzdXKOgi4JVDDEG/VvoNw50FryRCEm0qAudw12DcZoiNJWl0rN6SYVLcL1xwugMfQncCXieK5UBlG6mhH7iYA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.2.tgz", + "integrity": "sha512-/mzlyzJDtngNFd/rAYvqx29a2d0VuiYKN84Y/Mu9mGw7cfMOCyRK+896tb9wV6MoPRHUX7IXuKCIL8nzz2Pz5A==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.4.tgz", + "integrity": "sha512-6sU8jrSJvY/lqSnU6IYsa8SrCKwOZ4Enl6O4xVJo8RCq9Bdr5Giuw2eUaJAk9GPcpr4OFcmSFv3JOLhpKGeRZA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@aws-sdk/core": "^3.973.4", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.972.0", + "@smithy/core": "^3.22.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { "version": "3.975.0", "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.975.0.tgz", "integrity": "sha512-OkeFHPlQj2c/Y5bQGkX14pxhDWUGUFt3LRHhjcDKsSCw6lrxKcxN3WFZN0qbJwKNydP+knL5nxvfgKiCLpTLRA==", @@ -1026,137 +1064,15 @@ "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.1.tgz", - "integrity": "sha512-/R82lXLPmZ9JaUGSUdKtBp2k/5xQxvBT3zZWyKiBOhyulFotlfvdlrO8TnqstBimsl4lYEYySDL+W6ldFh6ALg==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "^3.973.0", - "@smithy/protocol-http": "^5.3.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.1.tgz", - "integrity": "sha512-JGgFl6cHg9G2FHu4lyFIzmFN8KESBiRr84gLC3Aeni0Gt1nKm+KxWLBuha/RPcXxJygGXCcMM4AykkIwxor8RA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "^3.973.0", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.1.tgz", - "integrity": "sha512-taGzNRe8vPHjnliqXIHp9kBgIemLE/xCaRTMH1NH0cncHeaPcjxtnCroAAM9aOlPuKvBe2CpZESyvM1+D8oI7Q==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/types": "^3.973.0", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.972.2", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.2.tgz", - "integrity": "sha512-d+Exq074wy0X6wvShg/kmZVtkah+28vMuqCtuY3cydg8LUZOJBtbAolCpEJizSyb8mJJZF9BjWaTANXL4OYnkg==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-sdk/core": "^3.973.1", - "@aws-sdk/types": "^3.973.0", - "@aws-sdk/util-endpoints": "3.972.0", - "@smithy/core": "^3.21.1", - "@smithy/protocol-http": "^5.3.8", - "@smithy/types": "^4.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/nested-clients": { - "version": "3.974.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.974.0.tgz", - "integrity": "sha512-k3dwdo/vOiHMJc9gMnkPl1BA5aQfTrZbz+8fiDkWrPagqAioZgmo5oiaOaeX0grObfJQKDtcpPFR4iWf8cgl8Q==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.0", - "@aws-sdk/middleware-host-header": "^3.972.1", - "@aws-sdk/middleware-logger": "^3.972.1", - "@aws-sdk/middleware-recursion-detection": "^3.972.1", - "@aws-sdk/middleware-user-agent": "^3.972.1", - "@aws-sdk/region-config-resolver": "^3.972.1", - "@aws-sdk/types": "^3.973.0", - "@aws-sdk/util-endpoints": "3.972.0", - "@aws-sdk/util-user-agent-browser": "^3.972.1", - "@aws-sdk/util-user-agent-node": "^3.972.1", - "@smithy/config-resolver": "^4.4.6", - "@smithy/core": "^3.21.0", - "@smithy/fetch-http-handler": "^5.3.9", - "@smithy/hash-node": "^4.2.8", - "@smithy/invalid-dependency": "^4.2.8", - "@smithy/middleware-content-length": "^4.2.8", - "@smithy/middleware-endpoint": "^4.4.10", - "@smithy/middleware-retry": "^4.4.26", - "@smithy/middleware-serde": "^4.2.9", - "@smithy/middleware-stack": "^4.2.8", - "@smithy/node-config-provider": "^4.3.8", - "@smithy/node-http-handler": "^4.4.8", - "@smithy/protocol-http": "^5.3.8", - "@smithy/smithy-client": "^4.10.11", - "@smithy/types": "^4.12.0", - "@smithy/url-parser": "^4.2.8", - "@smithy/util-base64": "^4.3.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.1", - "@smithy/util-defaults-mode-browser": "^4.3.25", - "@smithy/util-defaults-mode-node": "^4.2.28", - "@smithy/util-endpoints": "^3.2.8", - "@smithy/util-middleware": "^4.2.8", - "@smithy/util-retry": "^4.2.8", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.1.tgz", - "integrity": "sha512-voIY8RORpxLAEgEkYaTFnkaIuRwVBEc+RjVZYcSSllPV+ZEKAacai6kNhJeE3D70Le+JCfvRb52tng/AVHY+jQ==", + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.2.tgz", + "integrity": "sha512-/7vRBsfmiOlg2X67EdKrzzQGw5/SbkXb7ALHQmlQLkZh8qNgvS2G2dDC6NtF3hzFlpP3j2k+KIEtql/6VrI6JA==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/types": "^3.973.0", + "@aws-sdk/types": "^3.973.1", "@smithy/config-resolver": "^4.4.6", "@smithy/node-config-provider": "^4.3.8", "@smithy/types": "^4.12.0", @@ -1167,15 +1083,15 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.974.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.974.0.tgz", - "integrity": "sha512-cBykL0LiccKIgNhGWvQRTPvsBLPZxnmJU3pYxG538jpFX8lQtrCy1L7mmIHNEdxIdIGEPgAEHF8/JQxgBToqUQ==", + "version": "3.975.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.975.0.tgz", + "integrity": "sha512-AWQt64hkVbDQ+CmM09wnvSk2mVyH4iRROkmYkr3/lmUtFNbE2L/fnw26sckZnUcFCsHPqbkQrcsZAnTcBLbH4w==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/core": "^3.973.0", - "@aws-sdk/nested-clients": "3.974.0", + "@aws-sdk/core": "^3.973.1", + "@aws-sdk/nested-clients": "3.975.0", "@aws-sdk/types": "^3.973.0", "@smithy/property-provider": "^4.2.8", "@smithy/shared-ini-file-loader": "^4.4.3", @@ -1187,9 +1103,9 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.973.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.0.tgz", - "integrity": "sha512-jYIdB7a7jhRTvyb378nsjyvJh1Si+zVduJ6urMNGpz8RjkmHZ+9vM2H07XaIB2Cfq0GhJRZYOfUCH8uqQhqBkQ==", + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -1249,29 +1165,29 @@ } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.1.tgz", - "integrity": "sha512-IgF55NFmJX8d9Wql9M0nEpk2eYbuD8G4781FN4/fFgwTXBn86DvlZJuRWDCMcMqZymnBVX7HW9r+3r9ylqfW0w==", + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.2.tgz", + "integrity": "sha512-gz76bUyebPZRxIsBHJUd/v+yiyFzm9adHbr8NykP2nm+z/rFyvQneOHajrUejtmnc5tTBeaDPL4X25TnagRk4A==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/types": "^3.973.0", + "@aws-sdk/types": "^3.973.1", "@smithy/types": "^4.12.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.1.tgz", - "integrity": "sha512-oIs4JFcADzoZ0c915R83XvK2HltWupxNsXUIuZse2rgk7b97zTpkxaqXiH0h9ylh31qtgo/t8hp4tIqcsMrEbQ==", + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.2.tgz", + "integrity": "sha512-vnxOc4C6AR7hVbwyFo1YuH0GB6dgJlWt8nIOOJpnzJAWJPkUMPJ9Zv2lnKsSU7TTZbhP2hEO8OZ4PYH59XFv8Q==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@aws-sdk/middleware-user-agent": "^3.972.1", - "@aws-sdk/types": "^3.973.0", + "@aws-sdk/middleware-user-agent": "^3.972.3", + "@aws-sdk/types": "^3.973.1", "@smithy/node-config-provider": "^4.3.8", "@smithy/types": "^4.12.0", "tslib": "^2.6.2" @@ -1289,9 +1205,9 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.1.tgz", - "integrity": "sha512-6zZGlPOqn7Xb+25MAXGb1JhgvaC5HjZj6GzszuVrnEgbhvzBRFGKYemuHBV4bho+dtqeYKPgaZUv7/e80hIGNg==", + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.2.tgz", + "integrity": "sha512-jGOOV/bV1DhkkUhHiZ3/1GZ67cZyOXaDb7d1rYD6ZiXf5V9tBNOcgqXwRRPvrCbYaFRa1pPMFb3ZjqjWpR3YfA==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -1511,17 +1427,17 @@ } }, "node_modules/@commitlint/cli": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-20.3.1.tgz", - "integrity": "sha512-NtInjSlyev/+SLPvx/ulz8hRE25Wf5S9dLNDcIwazq0JyB4/w1ROF/5nV0ObPTX8YpRaKYeKtXDYWqumBNHWsw==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-20.4.1.tgz", + "integrity": "sha512-uuFKKpc7OtQM+6SRqT+a4kV818o1pS+uvv/gsRhyX7g4x495jg+Q7P0+O9VNGyLXBYP0syksS7gMRDJKcekr6A==", "dev": true, "license": "MIT", "dependencies": { - "@commitlint/format": "^20.3.1", - "@commitlint/lint": "^20.3.1", - "@commitlint/load": "^20.3.1", - "@commitlint/read": "^20.3.1", - "@commitlint/types": "^20.3.1", + "@commitlint/format": "^20.4.0", + "@commitlint/lint": "^20.4.1", + "@commitlint/load": "^20.4.0", + "@commitlint/read": "^20.4.0", + "@commitlint/types": "^20.4.0", "tinyexec": "^1.0.0", "yargs": "^17.0.0" }, @@ -1533,9 +1449,9 @@ } }, "node_modules/@commitlint/config-angular": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-angular/-/config-angular-20.3.1.tgz", - "integrity": "sha512-aSChDBSwGfTa68AK9RgZl9K5rAV3qC8/XfHJAODaDuuMJ/99V7yMVlg0C/EHEiD3O0KC74nEbjvxmtAjYelPTA==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-angular/-/config-angular-20.4.1.tgz", + "integrity": "sha512-Zt+qkZFKjMdQQp0Qvckp/JFJxwQbLrvnWHQc52y1VSPvZtuazcvcsdF3tPz1Ezsxzi3vY+GiOHVAHqWXLYTIrw==", "dev": true, "license": "MIT", "dependencies": { @@ -1556,13 +1472,13 @@ } }, "node_modules/@commitlint/config-validator": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-20.3.1.tgz", - "integrity": "sha512-ErVLC/IsHhcvxCyh+FXo7jy12/nkQySjWXYgCoQbZLkFp4hysov8KS6CdxBB0cWjbZWjvNOKBMNoUVqkmGmahw==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-20.4.0.tgz", + "integrity": "sha512-zShmKTF+sqyNOfAE0vKcqnpvVpG0YX8F9G/ZIQHI2CoKyK+PSdladXMSns400aZ5/QZs+0fN75B//3Q5CHw++w==", "dev": true, "license": "MIT", "dependencies": { - "@commitlint/types": "^20.3.1", + "@commitlint/types": "^20.4.0", "ajv": "^8.11.0" }, "engines": { @@ -1570,13 +1486,13 @@ } }, "node_modules/@commitlint/ensure": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-20.3.1.tgz", - "integrity": "sha512-h664FngOEd7bHAm0j8MEKq+qm2mH+V+hwJiIE2bWcw3pzJMlO0TPKtk0ATyRAtV6jQw+xviRYiIjjSjfajiB5w==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-20.4.1.tgz", + "integrity": "sha512-WLQqaFx1pBooiVvBrA1YfJNFqZF8wS/YGOtr5RzApDbV9tQ52qT5VkTsY65hFTnXhW8PcDfZLaknfJTmPejmlw==", "dev": true, "license": "MIT", "dependencies": { - "@commitlint/types": "^20.3.1", + "@commitlint/types": "^20.4.0", "lodash.camelcase": "^4.3.0", "lodash.kebabcase": "^4.1.1", "lodash.snakecase": "^4.1.1", @@ -1598,40 +1514,27 @@ } }, "node_modules/@commitlint/format": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-20.3.1.tgz", - "integrity": "sha512-jfsjGPFTd2Yti2YHwUH4SPRPbWKAJAwrfa3eNa9bXEdrXBb9mCwbIrgYX38LdEJK9zLJ3AsLBP4/FLEtxyu2AA==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-20.4.0.tgz", + "integrity": "sha512-i3ki3WR0rgolFVX6r64poBHXM1t8qlFel1G1eCBvVgntE3fCJitmzSvH5JD/KVJN/snz6TfaX2CLdON7+s4WVQ==", "dev": true, "license": "MIT", "dependencies": { - "@commitlint/types": "^20.3.1", - "chalk": "^5.3.0" + "@commitlint/types": "^20.4.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=v18" } }, - "node_modules/@commitlint/format/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/@commitlint/is-ignored": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-20.3.1.tgz", - "integrity": "sha512-tWwAoh93QvAhxgp99CzCuHD86MgxE4NBtloKX+XxQxhfhSwHo7eloiar/yzx53YW9eqSLP95zgW2KDDk4/WX+A==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-20.4.1.tgz", + "integrity": "sha512-In5EO4JR1lNsAv1oOBBO24V9ND1IqdAJDKZiEpdfjDl2HMasAcT7oA+5BKONv1pRoLG380DGPE2W2RIcUwdgLA==", "dev": true, "license": "MIT", "dependencies": { - "@commitlint/types": "^20.3.1", + "@commitlint/types": "^20.4.0", "semver": "^7.6.0" }, "engines": { @@ -1652,60 +1555,59 @@ } }, "node_modules/@commitlint/lint": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-20.3.1.tgz", - "integrity": "sha512-LaOtrQ24+6SfUaWg8A+a+Wc77bvLbO5RIr6iy9F7CI3/0iq1uPEWgGRCwqWTuLGHkZDAcwaq0gZ01zpwZ1jCGw==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-20.4.1.tgz", + "integrity": "sha512-g94LrGl/c6UhuhDQqNqU232aslLEN2vzc7MPfQTHzwzM4GHNnEAwVWWnh0zX8S5YXecuLXDwbCsoGwmpAgPWKA==", "dev": true, "license": "MIT", "dependencies": { - "@commitlint/is-ignored": "^20.3.1", - "@commitlint/parse": "^20.3.1", - "@commitlint/rules": "^20.3.1", - "@commitlint/types": "^20.3.1" + "@commitlint/is-ignored": "^20.4.1", + "@commitlint/parse": "^20.4.1", + "@commitlint/rules": "^20.4.1", + "@commitlint/types": "^20.4.0" }, "engines": { "node": ">=v18" } }, "node_modules/@commitlint/load": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-20.3.1.tgz", - "integrity": "sha512-YDD9XA2XhgYgbjju8itZ/weIvOOobApDqwlPYCX5NLO/cPtw2UMO5Cmn44Ks8RQULUVI5fUT6roKvyxcoLbNmw==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-20.4.0.tgz", + "integrity": "sha512-Dauup/GfjwffBXRJUdlX/YRKfSVXsXZLnINXKz0VZkXdKDcaEILAi9oflHGbfydonJnJAbXEbF3nXPm9rm3G6A==", "dev": true, "license": "MIT", "dependencies": { - "@commitlint/config-validator": "^20.3.1", + "@commitlint/config-validator": "^20.4.0", "@commitlint/execute-rule": "^20.0.0", - "@commitlint/resolve-extends": "^20.3.1", - "@commitlint/types": "^20.3.1", - "chalk": "^5.3.0", + "@commitlint/resolve-extends": "^20.4.0", + "@commitlint/types": "^20.4.0", "cosmiconfig": "^9.0.0", "cosmiconfig-typescript-loader": "^6.1.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0" + "is-plain-obj": "^4.1.0", + "lodash.mergewith": "^4.6.2", + "picocolors": "^1.1.1" }, "engines": { "node": ">=v18" } }, - "node_modules/@commitlint/load/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "node_modules/@commitlint/load/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, "license": "MIT", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@commitlint/message": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-20.0.0.tgz", - "integrity": "sha512-gLX4YmKnZqSwkmSB9OckQUrI5VyXEYiv3J5JKZRxIp8jOQsWjZgHSG/OgEfMQBK9ibdclEdAyIPYggwXoFGXjQ==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-20.4.0.tgz", + "integrity": "sha512-B5lGtvHgiLAIsK5nLINzVW0bN5hXv+EW35sKhYHE8F7V9Uz1fR4tx3wt7mobA5UNhZKUNgB/+ldVMQE6IHZRyA==", "dev": true, "license": "MIT", "engines": { @@ -1713,48 +1615,42 @@ } }, "node_modules/@commitlint/parse": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-20.3.1.tgz", - "integrity": "sha512-TuUTdbLpyUNLgDzLDYlI2BeTE6V/COZbf3f8WwsV0K6eq/2nSpNTMw7wHtXb+YxeY9wwxBp/Ldad4P+YIxHJoA==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-20.4.1.tgz", + "integrity": "sha512-XNtZjeRcFuAfUnhYrCY02+mpxwY4OmnvD3ETbVPs25xJFFz1nRo/25nHj+5eM+zTeRFvWFwD4GXWU2JEtoK1/w==", "dev": true, "license": "MIT", "dependencies": { - "@commitlint/types": "^20.3.1", - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-parser": "^5.0.0" + "@commitlint/types": "^20.4.0", + "conventional-changelog-angular": "^8.1.0", + "conventional-commits-parser": "^6.2.1" }, "engines": { "node": ">=v18" } }, - "node_modules/@commitlint/parse/node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "node_modules/@commitlint/parse/node_modules/conventional-changelog-angular": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.1.0.tgz", + "integrity": "sha512-GGf2Nipn1RUCAktxuVauVr1e3r8QrLP/B0lEUsFktmGqc3ddbQkhoJZHJctVU829U1c6mTSWftrVOCHaL85Q3w==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.mjs" + "compare-func": "^2.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@commitlint/read": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-20.3.1.tgz", - "integrity": "sha512-nCmJAdIg3OdNVUpQW0Idk/eF/vfOo2W2xzmvRmNeptLrzFK7qhwwl/kIwy1Q1LZrKHUFNj7PGNpIT5INbgZWzA==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-20.4.0.tgz", + "integrity": "sha512-QfpFn6/I240ySEGv7YWqho4vxqtPpx40FS7kZZDjUJ+eHxu3azfhy7fFb5XzfTqVNp1hNoI3tEmiEPbDB44+cg==", "dev": true, "license": "MIT", "dependencies": { - "@commitlint/top-level": "^20.0.0", - "@commitlint/types": "^20.3.1", + "@commitlint/top-level": "^20.4.0", + "@commitlint/types": "^20.4.0", "git-raw-commits": "^4.0.0", "minimist": "^1.2.8", "tinyexec": "^1.0.0" @@ -1764,14 +1660,14 @@ } }, "node_modules/@commitlint/resolve-extends": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-20.3.1.tgz", - "integrity": "sha512-iGTGeyaoDyHDEZNjD8rKeosjSNs8zYanmuowY4ful7kFI0dnY4b5QilVYaFQJ6IM27S57LAeH5sKSsOHy4bw5w==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-20.4.0.tgz", + "integrity": "sha512-ay1KM8q0t+/OnlpqXJ+7gEFQNlUtSU5Gxr8GEwnVf2TPN3+ywc5DzL3JCxmpucqxfHBTFwfRMXxPRRnR5Ki20g==", "dev": true, "license": "MIT", "dependencies": { - "@commitlint/config-validator": "^20.3.1", - "@commitlint/types": "^20.3.1", + "@commitlint/config-validator": "^20.4.0", + "@commitlint/types": "^20.4.0", "global-directory": "^4.0.1", "import-meta-resolve": "^4.0.0", "lodash.mergewith": "^4.6.2", @@ -1782,16 +1678,16 @@ } }, "node_modules/@commitlint/rules": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-20.3.1.tgz", - "integrity": "sha512-/uic4P+4jVNpqQxz02+Y6vvIC0A2J899DBztA1j6q3f3MOKwydlNrojSh0dQmGDxxT1bXByiRtDhgFnOFnM6Pg==", + "version": "20.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-20.4.1.tgz", + "integrity": "sha512-WtqypKEPbQEuJwJS4aKs0OoJRBKz1HXPBC9wRtzVNH68FLhPWzxXlF09hpUXM9zdYTpm4vAdoTGkWiBgQ/vL0g==", "dev": true, "license": "MIT", "dependencies": { - "@commitlint/ensure": "^20.3.1", - "@commitlint/message": "^20.0.0", + "@commitlint/ensure": "^20.4.1", + "@commitlint/message": "^20.4.0", "@commitlint/to-lines": "^20.0.0", - "@commitlint/types": "^20.3.1" + "@commitlint/types": "^20.4.0" }, "engines": { "node": ">=v18" @@ -1808,45 +1704,32 @@ } }, "node_modules/@commitlint/top-level": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-20.0.0.tgz", - "integrity": "sha512-drXaPSP2EcopukrUXvUXmsQMu3Ey/FuJDc/5oiW4heoCfoE5BdLQyuc7veGeE3aoQaTVqZnh4D5WTWe2vefYKg==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-20.4.0.tgz", + "integrity": "sha512-NDzq8Q6jmFaIIBC/GG6n1OQEaHdmaAAYdrZRlMgW6glYWGZ+IeuXmiymDvQNXPc82mVxq2KiE3RVpcs+1OeDeA==", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^7.0.0" + "escalade": "^3.2.0" }, "engines": { "node": ">=v18" } }, "node_modules/@commitlint/types": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.3.1.tgz", - "integrity": "sha512-VmIFV/JkBRhDRRv7N5B7zEUkNZIx9Mp+8Pe65erz0rKycXLsi8Epcw0XJ+btSeRXgTzE7DyOyA9bkJ9mn/yqVQ==", + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.4.0.tgz", + "integrity": "sha512-aO5l99BQJ0X34ft8b0h7QFkQlqxC6e7ZPVmBKz13xM9O8obDaM1Cld4sQlJDXXU/VFuUzQ30mVtHjVz74TuStw==", "dev": true, "license": "MIT", "dependencies": { - "@types/conventional-commits-parser": "^5.0.0", - "chalk": "^5.3.0" + "conventional-commits-parser": "^6.2.1", + "picocolors": "^1.1.1" }, "engines": { "node": ">=v18" } }, - "node_modules/@commitlint/types/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/@conventional-changelog/git-client": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-2.5.1.tgz", @@ -6217,9 +6100,9 @@ } }, "node_modules/@smithy/core": { - "version": "3.21.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.21.1.tgz", - "integrity": "sha512-NUH8R4O6FkN8HKMojzbGg/5pNjsfTjlMmeFclyPfPaXXUrbr5TzhWgbf7t92wfrpCHRgpjyz7ffASIS3wX28aA==", + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.0.tgz", + "integrity": "sha512-6vjCHD6vaY8KubeNw2Fg3EK0KLGQYdldG4fYgQmA0xSW0dJ8G2xFhSOdrlUakWVoP5JuWHtFODg3PNd/DN3FDA==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -6338,14 +6221,14 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.4.11", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.11.tgz", - "integrity": "sha512-/WqsrycweGGfb9sSzME4CrsuayjJF6BueBmkKlcbeU5q18OhxRrvvKlmfw3tpDsK5ilx2XUJvoukwxHB0nHs/Q==", + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.12.tgz", + "integrity": "sha512-9JMKHVJtW9RysTNjcBZQHDwB0p3iTP6B1IfQV4m+uCevkVd/VuLgwfqk5cnI4RHcp4cPwoIvxQqN4B1sxeHo8Q==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@smithy/core": "^3.21.1", + "@smithy/core": "^3.22.0", "@smithy/middleware-serde": "^4.2.9", "@smithy/node-config-provider": "^4.3.8", "@smithy/shared-ini-file-loader": "^4.4.3", @@ -6359,9 +6242,9 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.4.27", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.27.tgz", - "integrity": "sha512-xFUYCGRVsfgiN5EjsJJSzih9+yjStgMTCLANPlf0LVQkPDYCe0hz97qbdTZosFOiYlGBlHYityGRxrQ/hxhfVQ==", + "version": "4.4.29", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.29.tgz", + "integrity": "sha512-bmTn75a4tmKRkC5w61yYQLb3DmxNzB8qSVu9SbTYqW6GAL0WXO2bDZuMAn/GJSbOdHEdjZvWxe+9Kk015bw6Cg==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -6369,7 +6252,7 @@ "@smithy/node-config-provider": "^4.3.8", "@smithy/protocol-http": "^5.3.8", "@smithy/service-error-classification": "^4.2.8", - "@smithy/smithy-client": "^4.10.12", + "@smithy/smithy-client": "^4.11.1", "@smithy/types": "^4.12.0", "@smithy/util-middleware": "^4.2.8", "@smithy/util-retry": "^4.2.8", @@ -6558,15 +6441,15 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.10.12", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.10.12.tgz", - "integrity": "sha512-VKO/HKoQ5OrSHW6AJUmEnUKeXI1/5LfCwO9cwyao7CmLvGnZeM1i36Lyful3LK1XU7HwTVieTqO1y2C/6t3qtA==", + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.1.tgz", + "integrity": "sha512-SERgNg5Z1U+jfR6/2xPYjSEHY1t3pyTHC/Ma3YQl6qWtmiL42bvNId3W/oMUWIwu7ekL2FMPdqAmwbQegM7HeQ==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "@smithy/core": "^3.21.1", - "@smithy/middleware-endpoint": "^4.4.11", + "@smithy/core": "^3.22.0", + "@smithy/middleware-endpoint": "^4.4.12", "@smithy/middleware-stack": "^4.2.8", "@smithy/protocol-http": "^5.3.8", "@smithy/types": "^4.12.0", @@ -6681,15 +6564,15 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.26", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.26.tgz", - "integrity": "sha512-vva0dzYUTgn7DdE0uaha10uEdAgmdLnNFowKFjpMm6p2R0XDk5FHPX3CBJLzWQkQXuEprsb0hGz9YwbicNWhjw==", + "version": "4.3.28", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.28.tgz", + "integrity": "sha512-/9zcatsCao9h6g18p/9vH9NIi5PSqhCkxQ/tb7pMgRFnqYp9XUOyOlGPDMHzr8n5ih6yYgwJEY2MLEobUgi47w==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { "@smithy/property-provider": "^4.2.8", - "@smithy/smithy-client": "^4.10.12", + "@smithy/smithy-client": "^4.11.1", "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, @@ -6698,9 +6581,9 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.29", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.29.tgz", - "integrity": "sha512-c6D7IUBsZt/aNnTBHMTf+OVh+h/JcxUUgfTcIJaWRe6zhOum1X+pNKSZtZ+7fbOn5I99XVFtmrnXKv8yHHErTQ==", + "version": "4.2.31", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.31.tgz", + "integrity": "sha512-JTvoApUXA5kbpceI2vuqQzRjeTbLpx1eoa5R/YEZbTgtxvIB7AQZxFJ0SEyfCpgPCyVV9IT7we+ytSeIB3CyWA==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -6709,7 +6592,7 @@ "@smithy/credential-provider-imds": "^4.2.8", "@smithy/node-config-provider": "^4.3.8", "@smithy/property-provider": "^4.2.8", - "@smithy/smithy-client": "^4.10.12", + "@smithy/smithy-client": "^4.11.1", "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, @@ -7044,16 +6927,6 @@ "@types/node": "*" } }, - "node_modules/@types/conventional-commits-parser": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.2.tgz", - "integrity": "sha512-BgT2szDXnVypgpNxOK8aL5SGjUdaQbC++WZNjF1Qge3Og2+zhHj+RWhmehLhYyvQwqAmvezruVfOf8+3m74W+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/cookie": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", @@ -7259,9 +7132,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.1.0.tgz", - "integrity": "sha512-t7frlewr6+cbx+9Ohpl0NOTKXZNV9xHRmNOvql47BFJKcEG1CxtxlPEEe+gR9uhVWM4DwhnvTF110mIL4yP9RA==", + "version": "25.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.0.tgz", + "integrity": "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==", "license": "MIT", "peer": true, "dependencies": { @@ -10655,12 +10528,11 @@ } }, "node_modules/conventional-commits-parser": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.2.0.tgz", - "integrity": "sha512-uLnoLeIW4XaoFtH37qEcg/SXMJmKF4vi7V0H2rnPueg+VEtFGA/asSCNTcq4M/GQ6QmlzchAEtOoDTtKqWeHag==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.2.1.tgz", + "integrity": "sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "meow": "^13.0.0" }, @@ -13560,24 +13432,6 @@ "node": ">=20" } }, - "node_modules/find-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", - "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^7.2.0", - "path-exists": "^5.0.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/findup-sync": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", @@ -14831,9 +14685,9 @@ "license": "ISC" }, "node_modules/globals": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.2.0.tgz", - "integrity": "sha512-tovnCz/fEq+Ripoq+p/gN1u7l6A7wwkoBT9pRCzTHzsD/LvADIzXZdjmRymh5Ztf0DYC3Rwg5cZRYjxzBmzbWg==", + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz", + "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==", "dev": true, "license": "MIT", "engines": { @@ -17938,19 +17792,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-text-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "text-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", @@ -19821,22 +19662,6 @@ "node": ">=4" } }, - "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -19943,12 +19768,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, "node_modules/lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", @@ -20039,13 +19858,6 @@ "lodash.escape": "^3.0.0" } }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.upperfirst": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", @@ -23296,38 +23108,6 @@ "node": ">=4" } }, - "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -23853,16 +23633,6 @@ "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", "dev": true }, - "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -27121,19 +26891,6 @@ "b4a": "^1.6.4" } }, - "node_modules/text-extensions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", - "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -28038,19 +27795,6 @@ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "license": "MIT" }, - "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -28994,19 +28738,6 @@ "node": ">=6" } }, - "node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/yoctocolors-cjs": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", diff --git a/package.json b/package.json index 9ba113bf7..660331524 100644 --- a/package.json +++ b/package.json @@ -82,8 +82,8 @@ "devDependencies": { "@apollo/server": "5.3.0", "@as-integrations/express5": "1.1.2", - "@commitlint/cli": "20.3.1", - "@commitlint/config-angular": "20.3.1", + "@commitlint/cli": "20.4.1", + "@commitlint/config-angular": "20.4.1", "@eslint/eslintrc": "3.3.3", "@eslint/js": "9.39.2", "@fastify/cors": "11.2.0", @@ -107,7 +107,7 @@ "@types/gulp": "4.0.18", "@types/http-errors": "2.0.5", "@types/mocha": "10.0.10", - "@types/node": "25.1.0", + "@types/node": "25.2.0", "@types/sinon": "21.0.0", "@types/supertest": "6.0.3", "@types/ws": "8.18.1", @@ -131,7 +131,7 @@ "fastify": "5.7.2", "fastify-plugin": "5.1.0", "find-my-way": "9.4.0", - "globals": "17.2.0", + "globals": "17.3.0", "graphql": "16.12.0", "graphql-subscriptions": "3.0.0", "gulp": "5.0.1", diff --git a/packages/microservices/client/client-tcp.ts b/packages/microservices/client/client-tcp.ts index f8df2edff..098bc0d6a 100644 --- a/packages/microservices/client/client-tcp.ts +++ b/packages/microservices/client/client-tcp.ts @@ -19,6 +19,7 @@ export class ClientTCP extends ClientProxy { protected readonly host: string; protected readonly socketClass: Type; protected readonly tlsOptions?: ConnectionOptions; + protected readonly maxBufferSize?: number; protected socket: TcpSocket | null = null; protected connectionPromise: Promise | null = null; protected pendingEventListeners: Array<{ @@ -32,6 +33,7 @@ export class ClientTCP extends ClientProxy { this.host = this.getOptionsProp(options, 'host', TCP_DEFAULT_HOST); this.socketClass = this.getOptionsProp(options, 'socketClass', JsonSocket); this.tlsOptions = this.getOptionsProp(options, 'tlsOptions'); + this.maxBufferSize = this.getOptionsProp(options, 'maxBufferSize'); this.initializeSerializer(options); this.initializeDeserializer(options); @@ -108,6 +110,13 @@ export class ClientTCP extends ClientProxy { } else { socket = new net.Socket(); } + // Pass maxBufferSize only if socketClass is JsonSocket + // For custom socket classes, users should handle maxBufferSize in their own implementation + if (this.maxBufferSize !== undefined && this.socketClass === JsonSocket) { + return new this.socketClass(socket, { + maxBufferSize: this.maxBufferSize, + }); + } return new this.socketClass(socket); } diff --git a/packages/microservices/helpers/json-socket.ts b/packages/microservices/helpers/json-socket.ts index 7f37b323a..2812408d1 100644 --- a/packages/microservices/helpers/json-socket.ts +++ b/packages/microservices/helpers/json-socket.ts @@ -4,7 +4,11 @@ import { CorruptedPacketLengthException } from '../errors/corrupted-packet-lengt import { MaxPacketLengthExceededException } from '../errors/max-packet-length-exceeded.exception'; import { TcpSocket } from './tcp-socket'; -const MAX_BUFFER_SIZE = (512 * 1024 * 1024) / 4; // 512 MBs in characters with 4 bytes per character (32-bit) +const DEFAULT_MAX_BUFFER_SIZE = (512 * 1024 * 1024) / 4; // 512 MBs in characters with 4 bytes per character (32-bit) + +export interface JsonSocketOptions { + maxBufferSize?: number; +} export class JsonSocket extends TcpSocket { private contentLength: number | null = null; @@ -12,6 +16,12 @@ export class JsonSocket extends TcpSocket { private readonly stringDecoder = new StringDecoder(); private readonly delimiter = '#'; + private readonly maxBufferSize: number; + + constructor(socket: any, options?: JsonSocketOptions) { + super(socket); + this.maxBufferSize = options?.maxBufferSize ?? DEFAULT_MAX_BUFFER_SIZE; + } protected handleSend(message: any, callback?: (err?: any) => void) { this.socket.write(this.formatMessageData(message), 'utf-8', callback); @@ -23,7 +33,7 @@ export class JsonSocket extends TcpSocket { : dataRaw; this.buffer += data; - if (this.buffer.length > MAX_BUFFER_SIZE) { + if (this.buffer.length > this.maxBufferSize) { const bufferLength = this.buffer.length; this.buffer = ''; throw new MaxPacketLengthExceededException(bufferLength); diff --git a/packages/microservices/interfaces/client-metadata.interface.ts b/packages/microservices/interfaces/client-metadata.interface.ts index 26b68e36c..415f54c2e 100644 --- a/packages/microservices/interfaces/client-metadata.interface.ts +++ b/packages/microservices/interfaces/client-metadata.interface.ts @@ -43,5 +43,10 @@ export interface TcpClientOptions { deserializer?: Deserializer; tlsOptions?: ConnectionOptions; socketClass?: Type; + /** + * Maximum buffer size in characters (default: 128MB in characters, i.e., (512 * 1024 * 1024) / 4). + * This limit prevents memory exhaustion when receiving large TCP messages. + */ + maxBufferSize?: number; }; } diff --git a/packages/microservices/interfaces/microservice-configuration.interface.ts b/packages/microservices/interfaces/microservice-configuration.interface.ts index 67e32b012..809486914 100644 --- a/packages/microservices/interfaces/microservice-configuration.interface.ts +++ b/packages/microservices/interfaces/microservice-configuration.interface.ts @@ -109,6 +109,11 @@ export interface TcpOptions { tlsOptions?: TlsOptions; deserializer?: Deserializer; socketClass?: Type; + /** + * Maximum buffer size in characters (default: 128MB in characters, i.e., (512 * 1024 * 1024) / 4). + * This limit prevents memory exhaustion when receiving large TCP messages. + */ + maxBufferSize?: number; }; } diff --git a/packages/microservices/server/server-tcp.ts b/packages/microservices/server/server-tcp.ts index d79308113..eed4fc75a 100644 --- a/packages/microservices/server/server-tcp.ts +++ b/packages/microservices/server/server-tcp.ts @@ -37,6 +37,7 @@ export class ServerTCP extends Server { protected readonly port: number; protected readonly host: string; protected readonly socketClass: Type; + protected readonly maxBufferSize?: number; protected isManuallyTerminated = false; protected retryAttemptsCount = 0; protected tlsOptions?: TlsOptions; @@ -51,6 +52,7 @@ export class ServerTCP extends Server { this.host = this.getOptionsProp(options, 'host', TCP_DEFAULT_HOST); this.socketClass = this.getOptionsProp(options, 'socketClass', JsonSocket); this.tlsOptions = this.getOptionsProp(options, 'tlsOptions'); + this.maxBufferSize = this.getOptionsProp(options, 'maxBufferSize'); this.init(); this.initializeSerializer(options); @@ -211,6 +213,13 @@ export class ServerTCP extends Server { } protected getSocketInstance(socket: Socket): TcpSocket { + // Pass maxBufferSize only if socketClass is JsonSocket + // For custom socket classes, users should handle maxBufferSize in their own implementation + if (this.maxBufferSize !== undefined && this.socketClass === JsonSocket) { + return new this.socketClass(socket, { + maxBufferSize: this.maxBufferSize, + }); + } return new this.socketClass(socket); } } diff --git a/packages/microservices/test/client/client-tcp.spec.ts b/packages/microservices/test/client/client-tcp.spec.ts index 7a9449700..dbf3d85b8 100644 --- a/packages/microservices/test/client/client-tcp.spec.ts +++ b/packages/microservices/test/client/client-tcp.spec.ts @@ -4,6 +4,7 @@ import * as sinon from 'sinon'; import { TLSSocket } from 'tls'; import { ClientTCP } from '../../client/client-tcp'; import { TcpEventsMap } from '../../events/tcp.events'; +import { TcpSocket } from '../../helpers/tcp-socket'; describe('ClientTCP', () => { let client: ClientTCP; @@ -260,4 +261,53 @@ describe('ClientTCP', () => { expect(jsonSocket.socket).instanceOf(NetSocket); }); }); + + describe('maxBufferSize', () => { + const DEFAULT_MAX_BUFFER_SIZE = (512 * 1024 * 1024) / 4; + + describe('when maxBufferSize is not provided', () => { + it('should use default maxBufferSize', () => { + const client = new ClientTCP({}); + const socket = client.createSocket(); + expect(socket['maxBufferSize']).to.equal(DEFAULT_MAX_BUFFER_SIZE); + }); + }); + + describe('when maxBufferSize is provided', () => { + it('should use custom maxBufferSize', () => { + const customSize = 5000; + const client = new ClientTCP({ maxBufferSize: customSize }); + const socket = client.createSocket(); + expect(socket['maxBufferSize']).to.equal(customSize); + }); + + it('should pass maxBufferSize to JsonSocket', () => { + const customSize = 10000; + const client = new ClientTCP({ maxBufferSize: customSize }); + const socket = client.createSocket(); + expect(socket['maxBufferSize']).to.equal(customSize); + }); + }); + + describe('when custom socketClass is provided', () => { + it('should not pass maxBufferSize to custom socket class', () => { + class CustomSocket extends TcpSocket { + constructor(socket: any) { + super(socket); + } + protected handleSend() {} + protected handleData() {} + } + + const client = new ClientTCP({ + socketClass: CustomSocket as any, + maxBufferSize: 5000, + }); + const socket = client.createSocket(); + expect(socket).to.be.instanceOf(CustomSocket); + // Custom socket should not have maxBufferSize property + expect(socket['maxBufferSize']).to.be.undefined; + }); + }); + }); }); diff --git a/packages/microservices/test/json-socket/max-buffer-size.spec.ts b/packages/microservices/test/json-socket/max-buffer-size.spec.ts new file mode 100644 index 000000000..fc97f45bc --- /dev/null +++ b/packages/microservices/test/json-socket/max-buffer-size.spec.ts @@ -0,0 +1,229 @@ +import { expect } from 'chai'; +import { Socket } from 'net'; +import * as sinon from 'sinon'; +import { MaxPacketLengthExceededException } from '../../errors/max-packet-length-exceeded.exception'; +import { TcpEventsMap } from '../../events/tcp.events'; +import { JsonSocket } from '../../helpers/json-socket'; + +const DEFAULT_MAX_BUFFER_SIZE = (512 * 1024 * 1024) / 4; // 512 MBs in characters with 4 bytes per character (32-bit) + +describe('JsonSocket maxBufferSize', () => { + describe('default maxBufferSize', () => { + it('should use default maxBufferSize when not provided', () => { + const socket = new JsonSocket(new Socket()); + expect(socket['maxBufferSize']).to.equal(DEFAULT_MAX_BUFFER_SIZE); + }); + + it('should accept data up to default maxBufferSize', () => { + const socket = new JsonSocket(new Socket()); + // Account for header length (number + '#') + // Use a smaller size to ensure total buffer (header + data) doesn't exceed limit + // Create valid JSON string data + const headerOverhead = 20; // Approximate header size for large numbers + const dataSize = DEFAULT_MAX_BUFFER_SIZE - headerOverhead; + const largeData = '"' + 'x'.repeat(dataSize - 2) + '"'; // Valid JSON string + const packet = `${largeData.length}#${largeData}`; + + expect(() => { + socket['handleData'](packet); + }).to.not.throw(); + }); + + it('should throw MaxPacketLengthExceededException when exceeding default maxBufferSize', () => { + const socket = new JsonSocket(new Socket()); + const largeData = 'x'.repeat(DEFAULT_MAX_BUFFER_SIZE + 1); + const packet = `${largeData.length}#${largeData}`; + + expect(() => { + socket['handleData'](packet); + }).to.throw(MaxPacketLengthExceededException); + }); + }); + + describe('custom maxBufferSize', () => { + it('should use custom maxBufferSize when provided', () => { + const customSize = 1000; + const socket = new JsonSocket(new Socket(), { + maxBufferSize: customSize, + }); + expect(socket['maxBufferSize']).to.equal(customSize); + }); + + it('should accept data up to custom maxBufferSize', () => { + const customSize = 1000; + const socket = new JsonSocket(new Socket(), { + maxBufferSize: customSize, + }); + // Account for header length (number + '#') + // For 1000, header is "1000#" = 5 characters + const headerOverhead = 5; + const dataSize = customSize - headerOverhead; + // Create valid JSON string data + const data = '"' + 'x'.repeat(dataSize - 2) + '"'; // Valid JSON string + const packet = `${data.length}#${data}`; + + expect(() => { + socket['handleData'](packet); + }).to.not.throw(); + }); + + it('should throw MaxPacketLengthExceededException when exceeding custom maxBufferSize', () => { + const customSize = 1000; + const socket = new JsonSocket(new Socket(), { + maxBufferSize: customSize, + }); + const largeData = 'x'.repeat(customSize + 1); + const packet = `${largeData.length}#${largeData}`; + + expect(() => { + socket['handleData'](packet); + }).to.throw(MaxPacketLengthExceededException); + }); + + it('should throw MaxPacketLengthExceededException with correct buffer length', () => { + const customSize = 1000; + const socket = new JsonSocket(new Socket(), { + maxBufferSize: customSize, + }); + const largeData = 'x'.repeat(customSize + 100); + const packet = `${largeData.length}#${largeData}`; + // Total buffer size will be: header length (5) + data length (1100) = 1105 + const expectedBufferSize = packet.length; + + try { + socket['handleData'](packet); + expect.fail('Should have thrown MaxPacketLengthExceededException'); + } catch (err) { + expect(err).to.be.instanceof(MaxPacketLengthExceededException); + expect(err.message).to.include(String(expectedBufferSize)); + } + }); + }); + + describe('chunked data exceeding maxBufferSize', () => { + it('should throw MaxPacketLengthExceededException when chunked data exceeds limit', () => { + const customSize = 100; + const socket = new JsonSocket(new Socket(), { + maxBufferSize: customSize, + }); + + // Send data in chunks without a valid header delimiter + // This will accumulate in the buffer without being processed + // First chunk: partial header + socket['handleData']('50'); + + // Second chunk: more data that accumulates beyond limit + // Buffer now has "50" (2 chars), send enough to exceed customSize + const exceedingData = 'x'.repeat(customSize); + expect(() => { + socket['handleData'](exceedingData); + }).to.throw(MaxPacketLengthExceededException); + }); + + it('should clear buffer after throwing MaxPacketLengthExceededException', () => { + const customSize = 100; + const socket = new JsonSocket(new Socket(), { + maxBufferSize: customSize, + }); + const largeData = 'x'.repeat(customSize + 1); + const packet = `${largeData.length}#${largeData}`; + + try { + socket['handleData'](packet); + } catch (err) { + // Expected + } + + expect(socket['buffer']).to.equal(''); + }); + }); + + describe('error handling when maxBufferSize exceeded', () => { + it(`should emit ${TcpEventsMap.ERROR} event when maxBufferSize is exceeded`, () => { + const customSize = 100; + const socket = new JsonSocket(new Socket(), { + maxBufferSize: customSize, + }); + const socketEmitSpy: sinon.SinonSpy = sinon.spy( + socket['socket'], + 'emit', + ); + + const largeData = 'x'.repeat(customSize + 1); + const packet = Buffer.from(`${largeData.length}#${largeData}`); + + socket['onData'](packet); + + expect(socketEmitSpy.called).to.be.true; + expect(socketEmitSpy.calledWith(TcpEventsMap.ERROR)).to.be.true; + socketEmitSpy.restore(); + }); + + it(`should send a FIN packet when maxBufferSize is exceeded`, () => { + const customSize = 100; + const socket = new JsonSocket(new Socket(), { + maxBufferSize: customSize, + }); + const socketEndSpy = sinon.spy(socket['socket'], 'end'); + + const largeData = 'x'.repeat(customSize + 1); + const packet = Buffer.from(`${largeData.length}#${largeData}`); + + socket['onData'](packet); + + expect(socketEndSpy.calledOnce).to.be.true; + socketEndSpy.restore(); + }); + }); + + describe('edge cases', () => { + it('should handle maxBufferSize of 0', () => { + const socket = new JsonSocket(new Socket(), { maxBufferSize: 0 }); + expect(socket['maxBufferSize']).to.equal(0); + + const packet = '5#"test"'; + expect(() => { + socket['handleData'](packet); + }).to.throw(MaxPacketLengthExceededException); + }); + + it('should handle very large custom maxBufferSize', () => { + const veryLargeSize = 10 * 1024 * 1024; // 10MB in characters + const socket = new JsonSocket(new Socket(), { + maxBufferSize: veryLargeSize, + }); + expect(socket['maxBufferSize']).to.equal(veryLargeSize); + + // Account for header length (number + '#') + // For 10MB, header is approximately "10485760#" = 10 characters + const headerOverhead = 20; // Safe overhead for large numbers + const dataSize = veryLargeSize - headerOverhead; + // Create valid JSON string data + const data = '"' + 'x'.repeat(dataSize - 2) + '"'; // Valid JSON string + const packet = `${data.length}#${data}`; + + expect(() => { + socket['handleData'](packet); + }).to.not.throw(); + }); + + it('should handle maxBufferSize exactly at the limit', () => { + const customSize = 100; + const socket = new JsonSocket(new Socket(), { + maxBufferSize: customSize, + }); + // Account for header: "100#" = 4 characters + // So data can be 100 - 4 = 96 characters to stay at limit + const headerOverhead = 4; + const dataSize = customSize - headerOverhead; + // Create valid JSON string data + const data = '"' + 'x'.repeat(dataSize - 2) + '"'; // Valid JSON string + const packet = `${data.length}#${data}`; + + // Should not throw when exactly at limit + expect(() => { + socket['handleData'](packet); + }).to.not.throw(); + }); + }); +}); diff --git a/packages/microservices/test/server/server-tcp.spec.ts b/packages/microservices/test/server/server-tcp.spec.ts index 072e768ac..fb54d9001 100644 --- a/packages/microservices/test/server/server-tcp.spec.ts +++ b/packages/microservices/test/server/server-tcp.spec.ts @@ -1,7 +1,9 @@ import { expect } from 'chai'; +import { Socket as NetSocket } from 'net'; import * as sinon from 'sinon'; import { NO_MESSAGE_HANDLER } from '../../constants'; import { BaseRpcContext } from '../../ctx-host/base-rpc.context'; +import { TcpSocket } from '../../helpers/tcp-socket'; import { ServerTCP } from '../../server/server-tcp'; import { objectToMap } from './utils/object-to-map'; @@ -137,4 +139,57 @@ describe('ServerTCP', () => { expect(handler.calledWith(data)).to.be.true; }); }); + + describe('maxBufferSize', () => { + const DEFAULT_MAX_BUFFER_SIZE = (512 * 1024 * 1024) / 4; + + describe('when maxBufferSize is not provided', () => { + it('should use default maxBufferSize', () => { + const server = new ServerTCP({}); + const socket = new NetSocket(); + const jsonSocket = server['getSocketInstance'](socket); + expect(jsonSocket['maxBufferSize']).to.equal(DEFAULT_MAX_BUFFER_SIZE); + }); + }); + + describe('when maxBufferSize is provided', () => { + it('should use custom maxBufferSize', () => { + const customSize = 5000; + const server = new ServerTCP({ maxBufferSize: customSize }); + const socket = new NetSocket(); + const jsonSocket = server['getSocketInstance'](socket); + expect(jsonSocket['maxBufferSize']).to.equal(customSize); + }); + + it('should pass maxBufferSize to JsonSocket', () => { + const customSize = 10000; + const server = new ServerTCP({ maxBufferSize: customSize }); + const socket = new NetSocket(); + const jsonSocket = server['getSocketInstance'](socket); + expect(jsonSocket['maxBufferSize']).to.equal(customSize); + }); + }); + + describe('when custom socketClass is provided', () => { + it('should not pass maxBufferSize to custom socket class', () => { + class CustomSocket extends TcpSocket { + constructor(socket: any) { + super(socket); + } + protected handleSend() {} + protected handleData() {} + } + + const server = new ServerTCP({ + socketClass: CustomSocket as any, + maxBufferSize: 5000, + }); + const socket = new NetSocket(); + const customSocket = server['getSocketInstance'](socket); + expect(customSocket).to.be.instanceOf(CustomSocket); + // Custom socket should not have maxBufferSize property + expect(customSocket['maxBufferSize']).to.be.undefined; + }); + }); + }); }); diff --git a/sample/01-cats-app/package.json b/sample/01-cats-app/package.json index 96d4b6473..efa964747 100644 --- a/sample/01-cats-app/package.json +++ b/sample/01-cats-app/package.json @@ -47,7 +47,7 @@ "tsconfig-paths": "4.2.0", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "typescript": "5.9.3", "typescript-eslint": "8.54.0" }, diff --git a/sample/02-gateways/package.json b/sample/02-gateways/package.json index 19bc77c60..29834465f 100644 --- a/sample/02-gateways/package.json +++ b/sample/02-gateways/package.json @@ -45,7 +45,7 @@ "@types/ws": "8.5.13", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "redis": "5.10.0", diff --git a/sample/03-microservices/package.json b/sample/03-microservices/package.json index 5680ab0e9..7c1efaf19 100644 --- a/sample/03-microservices/package.json +++ b/sample/03-microservices/package.json @@ -48,7 +48,7 @@ "tsconfig-paths": "4.2.0", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "typescript": "5.9.3", "typescript-eslint": "8.54.0" } diff --git a/sample/04-grpc/package.json b/sample/04-grpc/package.json index 8a22f5405..4c03be679 100644 --- a/sample/04-grpc/package.json +++ b/sample/04-grpc/package.json @@ -42,7 +42,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/05-sql-typeorm/package.json b/sample/05-sql-typeorm/package.json index dce309f4e..bd313207a 100644 --- a/sample/05-sql-typeorm/package.json +++ b/sample/05-sql-typeorm/package.json @@ -41,7 +41,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/06-mongoose/package.json b/sample/06-mongoose/package.json index 9c0a8952c..e4e8c6f16 100644 --- a/sample/06-mongoose/package.json +++ b/sample/06-mongoose/package.json @@ -40,7 +40,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/07-sequelize/package.json b/sample/07-sequelize/package.json index e7ab95c5f..cb8284d42 100644 --- a/sample/07-sequelize/package.json +++ b/sample/07-sequelize/package.json @@ -43,7 +43,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/08-webpack/package.json b/sample/08-webpack/package.json index ace2c4332..25f861b21 100644 --- a/sample/08-webpack/package.json +++ b/sample/08-webpack/package.json @@ -27,7 +27,7 @@ "@types/node": "24.10.9", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "start-server-webpack-plugin": "2.2.5", "ts-loader": "9.5.4", "ts-node": "10.9.2", diff --git a/sample/09-babel-example/package.json b/sample/09-babel-example/package.json index 67b7e4a97..e6b0a54f3 100644 --- a/sample/09-babel-example/package.json +++ b/sample/09-babel-example/package.json @@ -23,11 +23,11 @@ }, "devDependencies": { "@babel/cli": "7.28.6", - "@babel/core": "7.28.6", - "@babel/node": "7.28.6", - "@babel/plugin-proposal-decorators": "7.28.6", - "@babel/plugin-transform-runtime": "7.28.5", - "@babel/preset-env": "7.28.6", + "@babel/core": "7.29.0", + "@babel/node": "7.29.0", + "@babel/plugin-proposal-decorators": "7.29.0", + "@babel/plugin-transform-runtime": "7.29.0", + "@babel/preset-env": "7.29.0", "@babel/register": "7.28.6", "@babel/runtime": "7.28.6", "@nestjs/testing": "11.1.12", diff --git a/sample/10-fastify/package.json b/sample/10-fastify/package.json index b8837c75d..cf9e2c0b2 100644 --- a/sample/10-fastify/package.json +++ b/sample/10-fastify/package.json @@ -38,7 +38,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/11-swagger/package.json b/sample/11-swagger/package.json index 33cecf5df..03fc31001 100644 --- a/sample/11-swagger/package.json +++ b/sample/11-swagger/package.json @@ -40,7 +40,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/12-graphql-schema-first/package.json b/sample/12-graphql-schema-first/package.json index 1c777e669..941ed2cd5 100644 --- a/sample/12-graphql-schema-first/package.json +++ b/sample/12-graphql-schema-first/package.json @@ -46,7 +46,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/13-mongo-typeorm/package.json b/sample/13-mongo-typeorm/package.json index 937f9151a..9d8c7ca4f 100644 --- a/sample/13-mongo-typeorm/package.json +++ b/sample/13-mongo-typeorm/package.json @@ -41,7 +41,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/14-mongoose-base/package.json b/sample/14-mongoose-base/package.json index d60a44b42..9b88f8feb 100644 --- a/sample/14-mongoose-base/package.json +++ b/sample/14-mongoose-base/package.json @@ -39,7 +39,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/15-mvc/package.json b/sample/15-mvc/package.json index d744dabba..40a5a0f71 100644 --- a/sample/15-mvc/package.json +++ b/sample/15-mvc/package.json @@ -45,7 +45,7 @@ "tsconfig-paths": "4.2.0", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "typescript": "5.9.3", "typescript-eslint": "8.54.0" } diff --git a/sample/16-gateways-ws/package.json b/sample/16-gateways-ws/package.json index c1a3eaab4..d1720231a 100644 --- a/sample/16-gateways-ws/package.json +++ b/sample/16-gateways-ws/package.json @@ -50,7 +50,7 @@ "tsconfig-paths": "4.2.0", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "typescript": "5.9.3", "typescript-eslint": "8.54.0" } diff --git a/sample/17-mvc-fastify/package.json b/sample/17-mvc-fastify/package.json index aec2b7281..267fc503b 100644 --- a/sample/17-mvc-fastify/package.json +++ b/sample/17-mvc-fastify/package.json @@ -40,7 +40,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/18-context/package.json b/sample/18-context/package.json index 36d913d78..258e95280 100644 --- a/sample/18-context/package.json +++ b/sample/18-context/package.json @@ -41,7 +41,7 @@ "tsconfig-paths": "4.2.0", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "typescript": "5.9.3", "typescript-eslint": "8.54.0" } diff --git a/sample/19-auth-jwt/package.json b/sample/19-auth-jwt/package.json index 2a34a75d4..4a5304475 100644 --- a/sample/19-auth-jwt/package.json +++ b/sample/19-auth-jwt/package.json @@ -41,7 +41,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/20-cache/package.json b/sample/20-cache/package.json index 29b405114..5ac4052fa 100644 --- a/sample/20-cache/package.json +++ b/sample/20-cache/package.json @@ -42,7 +42,7 @@ "eslint-config-prettier": "10.1.8", "eslint-plugin-import": "2.32.0", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "rimraf": "6.1.2", diff --git a/sample/21-serializer/package.json b/sample/21-serializer/package.json index b934f8823..f77f31889 100644 --- a/sample/21-serializer/package.json +++ b/sample/21-serializer/package.json @@ -47,7 +47,7 @@ "eslint-config-prettier": "10.1.8", "eslint-plugin-import": "2.32.0", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "typescript": "5.9.3", "typescript-eslint": "8.54.0" } diff --git a/sample/22-graphql-prisma/package.json b/sample/22-graphql-prisma/package.json index 28fffa29d..a6935a765 100644 --- a/sample/22-graphql-prisma/package.json +++ b/sample/22-graphql-prisma/package.json @@ -51,7 +51,7 @@ "eslint-config-prettier": "10.1.8", "eslint-plugin-import": "2.32.0", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "prisma": "^7.0.0", diff --git a/sample/23-graphql-code-first/package.json b/sample/23-graphql-code-first/package.json index 91285e55f..32a5bdfa9 100644 --- a/sample/23-graphql-code-first/package.json +++ b/sample/23-graphql-code-first/package.json @@ -45,7 +45,7 @@ "eslint": "9.39.2", "eslint-plugin-import": "2.32.0", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "rimraf": "6.1.2", diff --git a/sample/24-serve-static/package.json b/sample/24-serve-static/package.json index 0a09fc71e..ad83fde41 100644 --- a/sample/24-serve-static/package.json +++ b/sample/24-serve-static/package.json @@ -47,7 +47,7 @@ "tsconfig-paths": "4.2.0", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "typescript": "5.9.3", "typescript-eslint": "8.54.0" } diff --git a/sample/28-sse/package.json b/sample/28-sse/package.json index 792abaa64..45941e67e 100644 --- a/sample/28-sse/package.json +++ b/sample/28-sse/package.json @@ -47,7 +47,7 @@ "eslint-config-prettier": "10.1.8", "eslint-plugin-import": "2.32.0", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "typescript": "5.9.3", "typescript-eslint": "8.54.0" }, diff --git a/sample/29-file-upload/package.json b/sample/29-file-upload/package.json index 4a86a18a0..251b26206 100644 --- a/sample/29-file-upload/package.json +++ b/sample/29-file-upload/package.json @@ -50,7 +50,7 @@ "eslint-config-prettier": "10.1.8", "eslint-plugin-import": "2.32.0", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "typescript": "5.9.3", "typescript-eslint": "8.54.0" }, diff --git a/sample/30-event-emitter/package.json b/sample/30-event-emitter/package.json index 8994a7056..c9855ebf0 100644 --- a/sample/30-event-emitter/package.json +++ b/sample/30-event-emitter/package.json @@ -39,7 +39,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/31-graphql-federation-code-first/gateway/package.json b/sample/31-graphql-federation-code-first/gateway/package.json index b3aaff75b..b024db957 100644 --- a/sample/31-graphql-federation-code-first/gateway/package.json +++ b/sample/31-graphql-federation-code-first/gateway/package.json @@ -45,7 +45,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/31-graphql-federation-code-first/users-application/package.json b/sample/31-graphql-federation-code-first/users-application/package.json index 7d2d7e5e2..04bace3dc 100644 --- a/sample/31-graphql-federation-code-first/users-application/package.json +++ b/sample/31-graphql-federation-code-first/users-application/package.json @@ -47,7 +47,7 @@ "eslint": "9.39.2", "eslint-config-prettier": "10.1.8", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/32-graphql-federation-schema-first/gateway/package.json b/sample/32-graphql-federation-schema-first/gateway/package.json index 7b8430828..a7e47e8d4 100644 --- a/sample/32-graphql-federation-schema-first/gateway/package.json +++ b/sample/32-graphql-federation-schema-first/gateway/package.json @@ -48,7 +48,7 @@ "eslint": "9.39.2", "eslint-config-prettier": "10.1.8", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/32-graphql-federation-schema-first/posts-application/package.json b/sample/32-graphql-federation-schema-first/posts-application/package.json index 2d4d6e995..7a1f7584c 100644 --- a/sample/32-graphql-federation-schema-first/posts-application/package.json +++ b/sample/32-graphql-federation-schema-first/posts-application/package.json @@ -49,7 +49,7 @@ "eslint": "9.39.2", "eslint-config-prettier": "10.1.8", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "supertest": "7.2.2", diff --git a/sample/33-graphql-mercurius/package.json b/sample/33-graphql-mercurius/package.json index 48121225c..0e1caa43d 100644 --- a/sample/33-graphql-mercurius/package.json +++ b/sample/33-graphql-mercurius/package.json @@ -42,7 +42,7 @@ "@types/supertest": "6.0.3", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "jest": "30.2.0", "prettier": "3.8.1", "rimraf": "6.1.2", diff --git a/sample/36-hmr-esm/package.json b/sample/36-hmr-esm/package.json index 7c17d9076..f1b10b1de 100644 --- a/sample/36-hmr-esm/package.json +++ b/sample/36-hmr-esm/package.json @@ -53,7 +53,7 @@ "tsconfig-paths": "4.2.0", "eslint": "9.39.2", "eslint-plugin-prettier": "5.5.5", - "globals": "17.2.0", + "globals": "17.3.0", "typescript": "5.9.3", "typescript-eslint": "8.54.0" },