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"
},