diff --git a/bun.lock b/bun.lock index 40a92c1..50aa8ec 100644 --- a/bun.lock +++ b/bun.lock @@ -21,6 +21,7 @@ "dayjs": "^1.11.13", "deepmerge": "^4.3.1", "dotenv": "^16.5.0", + "fastify": "^5.4.0", "find-up": "^7.0.0", "fs-extra": "^11.3.0", "jsonwebtoken": "^9.0.2", @@ -1086,7 +1087,7 @@ "fast-uri": ["fast-uri@3.0.6", "", {}, "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw=="], - "fastify": ["fastify@5.3.3", "", { "dependencies": { "@fastify/ajv-compiler": "^4.0.0", "@fastify/error": "^4.0.0", "@fastify/fast-json-stringify-compiler": "^5.0.0", "@fastify/proxy-addr": "^5.0.0", "abstract-logging": "^2.0.1", "avvio": "^9.0.0", "fast-json-stringify": "^6.0.0", "find-my-way": "^9.0.0", "light-my-request": "^6.0.0", "pino": "^9.0.0", "process-warning": "^5.0.0", "rfdc": "^1.3.1", "secure-json-parse": "^4.0.0", "semver": "^7.6.0", "toad-cache": "^3.7.0" } }, "sha512-nCBiBCw9q6jPx+JJNVgO8JVnTXeUyrGcyTKPQikRkA/PanrFcOIo4R+ZnLeOLPZPGgzjomqfVarzE0kYx7qWiQ=="], + "fastify": ["fastify@5.4.0", "https://registry.npmmirror.com/fastify/-/fastify-5.4.0.tgz", { "dependencies": { "@fastify/ajv-compiler": "^4.0.0", "@fastify/error": "^4.0.0", "@fastify/fast-json-stringify-compiler": "^5.0.0", "@fastify/proxy-addr": "^5.0.0", "abstract-logging": "^2.0.1", "avvio": "^9.0.0", "fast-json-stringify": "^6.0.0", "find-my-way": "^9.0.0", "light-my-request": "^6.0.0", "pino": "^9.0.0", "process-warning": "^5.0.0", "rfdc": "^1.3.1", "secure-json-parse": "^4.0.0", "semver": "^7.6.0", "toad-cache": "^3.7.0" } }, "sha512-I4dVlUe+WNQAhKSyv15w+dwUh2EPiEl4X2lGYMmNSgF83WzTMAPKGdWEv5tPsCQOb+SOZwz8Vlta2vF+OeDgRw=="], "fastify-plugin": ["fastify-plugin@5.0.1", "", {}, "sha512-HCxs+YnRaWzCl+cWRYFnHmeRFyR5GVnJTAaCJQiYzQSDwK9MgJdyAsuL3nh0EWRCYMgQ5MeziymvmAhUHYHDUQ=="], @@ -2142,6 +2143,8 @@ "@nestjs/jwt/@types/jsonwebtoken": ["@types/jsonwebtoken@9.0.7", "", { "dependencies": { "@types/node": "*" } }, "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg=="], + "@nestjs/platform-fastify/fastify": ["fastify@5.3.3", "", { "dependencies": { "@fastify/ajv-compiler": "^4.0.0", "@fastify/error": "^4.0.0", "@fastify/fast-json-stringify-compiler": "^5.0.0", "@fastify/proxy-addr": "^5.0.0", "abstract-logging": "^2.0.1", "avvio": "^9.0.0", "fast-json-stringify": "^6.0.0", "find-my-way": "^9.0.0", "light-my-request": "^6.0.0", "pino": "^9.0.0", "process-warning": "^5.0.0", "rfdc": "^1.3.1", "secure-json-parse": "^4.0.0", "semver": "^7.6.0", "toad-cache": "^3.7.0" } }, "sha512-nCBiBCw9q6jPx+JJNVgO8JVnTXeUyrGcyTKPQikRkA/PanrFcOIo4R+ZnLeOLPZPGgzjomqfVarzE0kYx7qWiQ=="], + "@nestjs/schematics/@angular-devkit/core": ["@angular-devkit/core@19.2.6", "", { "dependencies": { "ajv": "8.17.1", "ajv-formats": "3.0.1", "jsonc-parser": "3.3.1", "picomatch": "4.0.2", "rxjs": "7.8.1", "source-map": "0.7.4" }, "peerDependencies": { "chokidar": "^4.0.0" }, "optionalPeers": ["chokidar"] }, "sha512-WFgiYhrDMq83UNaGRAneIM7CYYdBozD+yYA9BjoU8AgBLKtrvn6S8ZcjKAk5heoHtY/u8pEb0mwDTz9gxFmJZQ=="], "@nestjs/schematics/@angular-devkit/schematics": ["@angular-devkit/schematics@19.2.6", "", { "dependencies": { "@angular-devkit/core": "19.2.6", "jsonc-parser": "3.3.1", "magic-string": "0.30.17", "ora": "5.4.1", "rxjs": "7.8.1" } }, "sha512-YTAxNnT++5eflx19OUHmOWu597/TbTel+QARiZCv1xQw99+X8DCKKOUXtqBRd53CAHlREDI33Rn/JLY3NYgMLQ=="], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2cc3851..c2911dd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,7 +34,7 @@ importers: version: 11.2.0(@fastify/static@8.2.0)(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2) '@nestjs/typeorm': specifier: ^11.0.0 - version: 11.0.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.25(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3))) + version: 11.0.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.25(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3))) bcrypt: specifier: ^6.0.0 version: 6.0.0 @@ -109,7 +109,7 @@ importers: version: 2.17.0 typeorm: specifier: ^0.3.24 - version: 0.3.25(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)) + version: 0.3.25(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)) uuid: specifier: ^11.1.0 version: 11.1.0 @@ -137,7 +137,7 @@ importers: version: 9.8.0 '@nestjs/cli': specifier: ^11.0.7 - version: 11.0.7(@swc/cli@0.7.7(@swc/core@1.12.7)(chokidar@4.0.3))(@swc/core@1.12.7)(@types/node@24.0.7) + version: 11.0.7(@swc/cli@0.7.7(@swc/core@1.12.7)(chokidar@4.0.3))(@swc/core@1.12.7)(@types/node@24.0.8) '@nestjs/schematics': specifier: ^11.0.5 version: 11.0.5(chokidar@4.0.3)(typescript@5.8.3) @@ -170,7 +170,7 @@ importers: version: 4.17.19 '@types/node': specifier: ^24.0.1 - version: 24.0.7 + version: 24.0.8 '@types/passport-jwt': specifier: ^4.0.1 version: 4.0.1 @@ -194,10 +194,10 @@ importers: version: 17.0.33 '@typescript-eslint/eslint-plugin': specifier: ^8.34.0 - version: 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3) + version: 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3) '@typescript-eslint/parser': specifier: ^8.34.0 - version: 8.35.0(eslint@9.30.0)(typescript@5.8.3) + version: 8.35.1(eslint@9.30.0)(typescript@5.8.3) bun-types: specifier: ^1.2.16 version: 1.2.17 @@ -209,31 +209,31 @@ importers: version: 9.30.0 eslint-config-airbnb-base: specifier: ^15.0.0 - version: 15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0))(eslint@9.30.0) + version: 15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0))(eslint@9.30.0) eslint-config-airbnb-typescript: specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0))(eslint@9.30.0) + version: 18.0.0(@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0))(eslint@9.30.0) eslint-config-prettier: specifier: ^10.1.5 version: 10.1.5(eslint@9.30.0) eslint-plugin-import: specifier: ^2.31.0 - version: 2.32.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0) + version: 2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0) eslint-plugin-jest: specifier: ^28.13.5 - version: 28.14.0(@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(jest@30.0.0(@types/node@24.0.7)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)))(typescript@5.8.3) + version: 28.14.0(@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(jest@30.0.0(@types/node@24.0.8)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)))(typescript@5.8.3) eslint-plugin-prettier: specifier: ^5.4.1 version: 5.5.1(@types/eslint@9.6.1)(eslint-config-prettier@10.1.5(eslint@9.30.0))(eslint@9.30.0)(prettier@3.6.2) eslint-plugin-unused-imports: specifier: ^4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0) globals: specifier: ^16.2.0 version: 16.2.0 jest: specifier: 30.0.0 - version: 30.0.0(@types/node@24.0.7)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)) + version: 30.0.0(@types/node@24.0.8)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)) prettier: specifier: ^3.5.3 version: 3.6.2 @@ -245,13 +245,13 @@ importers: version: 7.1.1 ts-jest: specifier: 29.4.0 - version: 29.4.0(@babel/core@7.27.7)(@jest/transform@30.0.0)(@jest/types@30.0.0)(babel-jest@30.0.0(@babel/core@7.27.7))(jest-util@30.0.0)(jest@30.0.0(@types/node@24.0.7)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)))(typescript@5.8.3) + version: 29.4.0(@babel/core@7.27.7)(@jest/transform@30.0.0)(@jest/types@30.0.0)(babel-jest@30.0.0(@babel/core@7.27.7))(jest-util@30.0.0)(jest@30.0.0(@types/node@24.0.8)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)))(typescript@5.8.3) ts-loader: specifier: ^9.5.2 version: 9.5.2(typescript@5.8.3)(webpack@5.99.6(@swc/core@1.12.7)) ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3) tsconfig-paths: specifier: 4.2.0 version: 4.2.0 @@ -832,21 +832,21 @@ packages: resolution: {integrity: sha512-1Nox8mAL52PKPfEnUQWBvKU/bp8FTT6AiDu76bFDEJj/qsRFSAVSldfCH3XYMqialti2zHXKvD5gN0AaHc0yKA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jridgewell/gen-mapping@0.3.10': - resolution: {integrity: sha512-HM2F4B9N4cA0RH2KQiIZOHAZqtP4xGS4IZ+SFe1SIbO4dyjf9MTY2Bo3vHYnm0hglWfXqBrzUBSa+cJfl3Xvrg==} + '@jridgewell/gen-mapping@0.3.11': + resolution: {integrity: sha512-C512c1ytBTio4MrpWKlJpyFHT6+qfFL8SZ58zBzJ1OOzUEjHeF1BtjY2fH7n4x/g2OV/KiiMLAivOp1DXmiMMw==} '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/source-map@0.3.8': - resolution: {integrity: sha512-3EDAPd0B8X1gsQQgGHU8vyxSp2MB414z3roN67fY7nI0GV3GDthHfaWcbCfrC95tpAzA5xUvAuoO9Dxx/ywwRQ==} + '@jridgewell/source-map@0.3.9': + resolution: {integrity: sha512-amBU75CKOOkcQLfyM6J+DnWwz41yTsWI7o8MQ003LwUIWb4NYX/evAblTx1oBBYJySqL/zHPxHXDw5ewpQaUFw==} - '@jridgewell/sourcemap-codec@1.5.2': - resolution: {integrity: sha512-gKYheCylLIedI+CSZoDtGkFV9YEBxRRVcfCH7OfAqh4TyUyRjEE6WVE/aXDXX0p8BIe/QgLcaAoI0220KRRFgg==} + '@jridgewell/sourcemap-codec@1.5.3': + resolution: {integrity: sha512-AiR5uKpFxP3PjO4R19kQGIMwxyRyPuXmKEEy301V1C0+1rVjS94EZQXf1QKZYN8Q0YM+estSPhmx5JwNftv6nw==} - '@jridgewell/trace-mapping@0.3.27': - resolution: {integrity: sha512-VO95AxtSFMelbg3ouljAYnfvTEwSWVt/2YLf+U5Ejd8iT5mXE2Sa/1LGyvySMne2CGsepGLI7KpF3EzE3Aq9Mg==} + '@jridgewell/trace-mapping@0.3.28': + resolution: {integrity: sha512-KNNHHwW3EIp4EDYOvYFGyIFfx36R2dNJYH4knnZlF8T5jdbD5Wx8xmSaQ2gP9URkJ04LGEtlcCtwArKcmFcwKw==} '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -1377,8 +1377,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@24.0.7': - resolution: {integrity: sha512-YIEUUr4yf8q8oQoXPpSlnvKNVKDQlPMWrmOcgzoduo7kvA2UF0/BwJ/eMKFTiTtkNL17I0M6Xe2tvwFU7be6iw==} + '@types/node@24.0.8': + resolution: {integrity: sha512-WytNrFSgWO/esSH9NbpWUfTMGQwCGIKfCmNlmFDNiI5gGhgMmEA+V1AEvKLeBNvvtBnailJtkrEa2OIISwrVAA==} '@types/passport-jwt@4.0.1': resolution: {integrity: sha512-Y0Ykz6nWP4jpxgEUYq8NoVZeCQPo1ZndJLfapI249g1jHChvRfZRO/LS3tqu26YgAS/laI1qx98sYGz0IalRXQ==} @@ -1428,63 +1428,63 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@8.35.0': - resolution: {integrity: sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg==} + '@typescript-eslint/eslint-plugin@8.35.1': + resolution: {integrity: sha512-9XNTlo7P7RJxbVeICaIIIEipqxLKguyh+3UbXuT2XQuFp6d8VOeDEGuz5IiX0dgZo8CiI6aOFLg4e8cF71SFVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.35.0 + '@typescript-eslint/parser': ^8.35.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.35.0': - resolution: {integrity: sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==} + '@typescript-eslint/parser@8.35.1': + resolution: {integrity: sha512-3MyiDfrfLeK06bi/g9DqJxP5pV74LNv4rFTyvGDmT3x2p1yp1lOd+qYZfiRPIOf/oON+WRZR5wxxuF85qOar+w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.35.0': - resolution: {integrity: sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ==} + '@typescript-eslint/project-service@8.35.1': + resolution: {integrity: sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.35.0': - resolution: {integrity: sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==} + '@typescript-eslint/scope-manager@8.35.1': + resolution: {integrity: sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.35.0': - resolution: {integrity: sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==} + '@typescript-eslint/tsconfig-utils@8.35.1': + resolution: {integrity: sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.35.0': - resolution: {integrity: sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA==} + '@typescript-eslint/type-utils@8.35.1': + resolution: {integrity: sha512-HOrUBlfVRz5W2LIKpXzZoy6VTZzMu2n8q9C2V/cFngIC5U1nStJgv0tMV4sZPzdf4wQm9/ToWUFPMN9Vq9VJQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.35.0': - resolution: {integrity: sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==} + '@typescript-eslint/types@8.35.1': + resolution: {integrity: sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.35.0': - resolution: {integrity: sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==} + '@typescript-eslint/typescript-estree@8.35.1': + resolution: {integrity: sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.35.0': - resolution: {integrity: sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==} + '@typescript-eslint/utils@8.35.1': + resolution: {integrity: sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.35.0': - resolution: {integrity: sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==} + '@typescript-eslint/visitor-keys@8.35.1': + resolution: {integrity: sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ucast/core@1.10.2': @@ -2357,8 +2357,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.177: - resolution: {integrity: sha512-7EH2G59nLsEMj97fpDuvVcYi6lwTcM1xuWw3PssD8xzboAW7zj7iB3COEEEATUfjLHrs5uKBLQT03V/8URx06g==} + electron-to-chromium@1.5.178: + resolution: {integrity: sha512-wObbz/ar3Bc6e4X5vf0iO8xTN8YAjN/tgiAOJLr7yjYFtP9wAjq8Mb5h0yn6kResir+VYx2DXBj9NNobs0ETSA==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -4938,8 +4938,8 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.10 - '@jridgewell/trace-mapping': 0.3.27 + '@jridgewell/gen-mapping': 0.3.11 + '@jridgewell/trace-mapping': 0.3.28 '@angular-devkit/core@19.2.6(chokidar@4.0.3)': dependencies: @@ -4963,11 +4963,11 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics-cli@19.2.8(@types/node@24.0.7)(chokidar@4.0.3)': + '@angular-devkit/schematics-cli@19.2.8(@types/node@24.0.8)(chokidar@4.0.3)': dependencies: '@angular-devkit/core': 19.2.8(chokidar@4.0.3) '@angular-devkit/schematics': 19.2.8(chokidar@4.0.3) - '@inquirer/prompts': 7.3.2(@types/node@24.0.7) + '@inquirer/prompts': 7.3.2(@types/node@24.0.8) ansi-colors: 4.1.3 symbol-observable: 4.0.0 yargs-parser: 21.1.1 @@ -5027,8 +5027,8 @@ snapshots: dependencies: '@babel/parser': 7.27.7 '@babel/types': 7.27.7 - '@jridgewell/gen-mapping': 0.3.10 - '@jridgewell/trace-mapping': 0.3.27 + '@jridgewell/gen-mapping': 0.3.11 + '@jridgewell/trace-mapping': 0.3.28 jsesc: 3.1.0 '@babel/helper-compilation-targets@7.27.2': @@ -5335,27 +5335,27 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@inquirer/checkbox@4.1.8(@types/node@24.0.7)': + '@inquirer/checkbox@4.1.8(@types/node@24.0.8)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.7) + '@inquirer/core': 10.1.13(@types/node@24.0.8) '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@24.0.7) + '@inquirer/type': 3.0.7(@types/node@24.0.8) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 - '@inquirer/confirm@5.1.12(@types/node@24.0.7)': + '@inquirer/confirm@5.1.12(@types/node@24.0.8)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.7) - '@inquirer/type': 3.0.7(@types/node@24.0.7) + '@inquirer/core': 10.1.13(@types/node@24.0.8) + '@inquirer/type': 3.0.7(@types/node@24.0.8) optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 - '@inquirer/core@10.1.13(@types/node@24.0.7)': + '@inquirer/core@10.1.13(@types/node@24.0.8)': dependencies: '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@24.0.7) + '@inquirer/type': 3.0.7(@types/node@24.0.8) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -5363,108 +5363,108 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 - '@inquirer/editor@4.2.13(@types/node@24.0.7)': + '@inquirer/editor@4.2.13(@types/node@24.0.8)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.7) - '@inquirer/type': 3.0.7(@types/node@24.0.7) + '@inquirer/core': 10.1.13(@types/node@24.0.8) + '@inquirer/type': 3.0.7(@types/node@24.0.8) external-editor: 3.1.0 optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 - '@inquirer/expand@4.0.15(@types/node@24.0.7)': + '@inquirer/expand@4.0.15(@types/node@24.0.8)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.7) - '@inquirer/type': 3.0.7(@types/node@24.0.7) + '@inquirer/core': 10.1.13(@types/node@24.0.8) + '@inquirer/type': 3.0.7(@types/node@24.0.8) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@inquirer/figures@1.0.12': {} - '@inquirer/input@4.1.12(@types/node@24.0.7)': + '@inquirer/input@4.1.12(@types/node@24.0.8)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.7) - '@inquirer/type': 3.0.7(@types/node@24.0.7) + '@inquirer/core': 10.1.13(@types/node@24.0.8) + '@inquirer/type': 3.0.7(@types/node@24.0.8) optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 - '@inquirer/number@3.0.15(@types/node@24.0.7)': + '@inquirer/number@3.0.15(@types/node@24.0.8)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.7) - '@inquirer/type': 3.0.7(@types/node@24.0.7) + '@inquirer/core': 10.1.13(@types/node@24.0.8) + '@inquirer/type': 3.0.7(@types/node@24.0.8) optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 - '@inquirer/password@4.0.15(@types/node@24.0.7)': + '@inquirer/password@4.0.15(@types/node@24.0.8)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.7) - '@inquirer/type': 3.0.7(@types/node@24.0.7) + '@inquirer/core': 10.1.13(@types/node@24.0.8) + '@inquirer/type': 3.0.7(@types/node@24.0.8) ansi-escapes: 4.3.2 optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 - '@inquirer/prompts@7.3.2(@types/node@24.0.7)': + '@inquirer/prompts@7.3.2(@types/node@24.0.8)': dependencies: - '@inquirer/checkbox': 4.1.8(@types/node@24.0.7) - '@inquirer/confirm': 5.1.12(@types/node@24.0.7) - '@inquirer/editor': 4.2.13(@types/node@24.0.7) - '@inquirer/expand': 4.0.15(@types/node@24.0.7) - '@inquirer/input': 4.1.12(@types/node@24.0.7) - '@inquirer/number': 3.0.15(@types/node@24.0.7) - '@inquirer/password': 4.0.15(@types/node@24.0.7) - '@inquirer/rawlist': 4.1.3(@types/node@24.0.7) - '@inquirer/search': 3.0.15(@types/node@24.0.7) - '@inquirer/select': 4.2.3(@types/node@24.0.7) + '@inquirer/checkbox': 4.1.8(@types/node@24.0.8) + '@inquirer/confirm': 5.1.12(@types/node@24.0.8) + '@inquirer/editor': 4.2.13(@types/node@24.0.8) + '@inquirer/expand': 4.0.15(@types/node@24.0.8) + '@inquirer/input': 4.1.12(@types/node@24.0.8) + '@inquirer/number': 3.0.15(@types/node@24.0.8) + '@inquirer/password': 4.0.15(@types/node@24.0.8) + '@inquirer/rawlist': 4.1.3(@types/node@24.0.8) + '@inquirer/search': 3.0.15(@types/node@24.0.8) + '@inquirer/select': 4.2.3(@types/node@24.0.8) optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 - '@inquirer/prompts@7.4.1(@types/node@24.0.7)': + '@inquirer/prompts@7.4.1(@types/node@24.0.8)': dependencies: - '@inquirer/checkbox': 4.1.8(@types/node@24.0.7) - '@inquirer/confirm': 5.1.12(@types/node@24.0.7) - '@inquirer/editor': 4.2.13(@types/node@24.0.7) - '@inquirer/expand': 4.0.15(@types/node@24.0.7) - '@inquirer/input': 4.1.12(@types/node@24.0.7) - '@inquirer/number': 3.0.15(@types/node@24.0.7) - '@inquirer/password': 4.0.15(@types/node@24.0.7) - '@inquirer/rawlist': 4.1.3(@types/node@24.0.7) - '@inquirer/search': 3.0.15(@types/node@24.0.7) - '@inquirer/select': 4.2.3(@types/node@24.0.7) + '@inquirer/checkbox': 4.1.8(@types/node@24.0.8) + '@inquirer/confirm': 5.1.12(@types/node@24.0.8) + '@inquirer/editor': 4.2.13(@types/node@24.0.8) + '@inquirer/expand': 4.0.15(@types/node@24.0.8) + '@inquirer/input': 4.1.12(@types/node@24.0.8) + '@inquirer/number': 3.0.15(@types/node@24.0.8) + '@inquirer/password': 4.0.15(@types/node@24.0.8) + '@inquirer/rawlist': 4.1.3(@types/node@24.0.8) + '@inquirer/search': 3.0.15(@types/node@24.0.8) + '@inquirer/select': 4.2.3(@types/node@24.0.8) optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 - '@inquirer/rawlist@4.1.3(@types/node@24.0.7)': + '@inquirer/rawlist@4.1.3(@types/node@24.0.8)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.7) - '@inquirer/type': 3.0.7(@types/node@24.0.7) + '@inquirer/core': 10.1.13(@types/node@24.0.8) + '@inquirer/type': 3.0.7(@types/node@24.0.8) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 - '@inquirer/search@3.0.15(@types/node@24.0.7)': + '@inquirer/search@3.0.15(@types/node@24.0.8)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.7) + '@inquirer/core': 10.1.13(@types/node@24.0.8) '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@24.0.7) + '@inquirer/type': 3.0.7(@types/node@24.0.8) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 - '@inquirer/select@4.2.3(@types/node@24.0.7)': + '@inquirer/select@4.2.3(@types/node@24.0.8)': dependencies: - '@inquirer/core': 10.1.13(@types/node@24.0.7) + '@inquirer/core': 10.1.13(@types/node@24.0.8) '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@24.0.7) + '@inquirer/type': 3.0.7(@types/node@24.0.8) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 - '@inquirer/type@3.0.7(@types/node@24.0.7)': + '@inquirer/type@3.0.7(@types/node@24.0.8)': optionalDependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@isaacs/balanced-match@4.0.1': {} @@ -5494,13 +5494,13 @@ snapshots: '@jest/console@30.0.0': dependencies: '@jest/types': 30.0.0 - '@types/node': 24.0.7 + '@types/node': 24.0.8 chalk: 4.1.2 jest-message-util: 30.0.0 jest-util: 30.0.0 slash: 3.0.0 - '@jest/core@30.0.0(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3))': + '@jest/core@30.0.0(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3))': dependencies: '@jest/console': 30.0.0 '@jest/pattern': 30.0.0 @@ -5508,14 +5508,14 @@ snapshots: '@jest/test-result': 30.0.0 '@jest/transform': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.7 + '@types/node': 24.0.8 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 4.2.0 exit-x: 0.2.2 graceful-fs: 4.2.11 jest-changed-files: 30.0.0 - jest-config: 30.0.0(@types/node@24.0.7)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)) + jest-config: 30.0.0(@types/node@24.0.8)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)) jest-haste-map: 30.0.0 jest-message-util: 30.0.0 jest-regex-util: 30.0.0 @@ -5542,7 +5542,7 @@ snapshots: dependencies: '@jest/fake-timers': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.7 + '@types/node': 24.0.8 jest-mock: 30.0.0 '@jest/expect-utils@29.7.0': @@ -5564,7 +5564,7 @@ snapshots: dependencies: '@jest/types': 30.0.0 '@sinonjs/fake-timers': 13.0.5 - '@types/node': 24.0.7 + '@types/node': 24.0.8 jest-message-util: 30.0.0 jest-mock: 30.0.0 jest-util: 30.0.0 @@ -5582,7 +5582,7 @@ snapshots: '@jest/pattern@30.0.0': dependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 jest-regex-util: 30.0.0 '@jest/reporters@30.0.0': @@ -5592,8 +5592,8 @@ snapshots: '@jest/test-result': 30.0.0 '@jest/transform': 30.0.0 '@jest/types': 30.0.0 - '@jridgewell/trace-mapping': 0.3.27 - '@types/node': 24.0.7 + '@jridgewell/trace-mapping': 0.3.28 + '@types/node': 24.0.8 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit-x: 0.2.2 @@ -5630,7 +5630,7 @@ snapshots: '@jest/source-map@30.0.0': dependencies: - '@jridgewell/trace-mapping': 0.3.27 + '@jridgewell/trace-mapping': 0.3.28 callsites: 3.1.0 graceful-fs: 4.2.11 @@ -5652,7 +5652,7 @@ snapshots: dependencies: '@babel/core': 7.27.7 '@jest/types': 30.0.0 - '@jridgewell/trace-mapping': 0.3.27 + '@jridgewell/trace-mapping': 0.3.28 babel-plugin-istanbul: 7.0.0 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -5673,7 +5673,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -5683,33 +5683,33 @@ snapshots: '@jest/schemas': 30.0.0 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@types/yargs': 17.0.33 chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.10': + '@jridgewell/gen-mapping@0.3.11': dependencies: - '@jridgewell/sourcemap-codec': 1.5.2 - '@jridgewell/trace-mapping': 0.3.27 + '@jridgewell/sourcemap-codec': 1.5.3 + '@jridgewell/trace-mapping': 0.3.28 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/source-map@0.3.8': + '@jridgewell/source-map@0.3.9': dependencies: - '@jridgewell/gen-mapping': 0.3.10 - '@jridgewell/trace-mapping': 0.3.27 + '@jridgewell/gen-mapping': 0.3.11 + '@jridgewell/trace-mapping': 0.3.28 - '@jridgewell/sourcemap-codec@1.5.2': {} + '@jridgewell/sourcemap-codec@1.5.3': {} - '@jridgewell/trace-mapping@0.3.27': + '@jridgewell/trace-mapping@0.3.28': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.2 + '@jridgewell/sourcemap-codec': 1.5.3 '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.2 + '@jridgewell/sourcemap-codec': 1.5.3 '@lukeed/csprng@1.1.0': {} @@ -5792,12 +5792,12 @@ snapshots: '@tybys/wasm-util': 0.9.0 optional: true - '@nestjs/cli@11.0.7(@swc/cli@0.7.7(@swc/core@1.12.7)(chokidar@4.0.3))(@swc/core@1.12.7)(@types/node@24.0.7)': + '@nestjs/cli@11.0.7(@swc/cli@0.7.7(@swc/core@1.12.7)(chokidar@4.0.3))(@swc/core@1.12.7)(@types/node@24.0.8)': dependencies: '@angular-devkit/core': 19.2.8(chokidar@4.0.3) '@angular-devkit/schematics': 19.2.8(chokidar@4.0.3) - '@angular-devkit/schematics-cli': 19.2.8(@types/node@24.0.7)(chokidar@4.0.3) - '@inquirer/prompts': 7.4.1(@types/node@24.0.7) + '@angular-devkit/schematics-cli': 19.2.8(@types/node@24.0.8)(chokidar@4.0.3) + '@inquirer/prompts': 7.4.1(@types/node@24.0.8) '@nestjs/schematics': 11.0.5(chokidar@4.0.3)(typescript@5.8.3) ansis: 3.17.0 chokidar: 4.0.3 @@ -5916,13 +5916,13 @@ snapshots: '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2) tslib: 2.8.1 - '@nestjs/typeorm@11.0.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.25(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)))': + '@nestjs/typeorm@11.0.0(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)(typeorm@0.3.25(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)))': dependencies: '@nestjs/common': 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) '@nestjs/core': 11.1.3(@nestjs/common@11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2) reflect-metadata: 0.2.2 rxjs: 7.8.2 - typeorm: 0.3.25(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)) + typeorm: 0.3.25(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)) '@noble/hashes@1.8.0': {} @@ -6142,16 +6142,16 @@ snapshots: '@types/bcrypt@5.0.2': dependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@types/connect@3.4.38': dependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@types/cookiejar@2.1.5': {} @@ -6169,7 +6169,7 @@ snapshots: '@types/express-serve-static-core@5.0.6': dependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.5 @@ -6183,7 +6183,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@types/http-cache-semantics@4.0.4': {} @@ -6210,16 +6210,16 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@types/jsonwebtoken@9.0.7': dependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@types/lodash@4.17.19': {} @@ -6229,7 +6229,7 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@24.0.7': + '@types/node@24.0.8': dependencies: undici-types: 7.8.0 @@ -6264,12 +6264,12 @@ snapshots: '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@types/serve-static@1.15.8': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@types/send': 0.17.5 '@types/stack-utils@2.0.3': {} @@ -6278,7 +6278,7 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 24.0.7 + '@types/node': 24.0.8 form-data: 4.0.3 '@types/supertest@6.0.3': @@ -6296,14 +6296,14 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.35.0 - '@typescript-eslint/type-utils': 8.35.0(eslint@9.30.0)(typescript@5.8.3) - '@typescript-eslint/utils': 8.35.0(eslint@9.30.0)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.35.0 + '@typescript-eslint/parser': 8.35.1(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.35.1 + '@typescript-eslint/type-utils': 8.35.1(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.1(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.35.1 eslint: 9.30.0 graphemer: 1.4.0 ignore: 7.0.5 @@ -6313,40 +6313,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3)': + '@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.35.0 - '@typescript-eslint/types': 8.35.0 - '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.35.0 + '@typescript-eslint/scope-manager': 8.35.1 + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.35.1 debug: 4.4.1 eslint: 9.30.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.35.0(typescript@5.8.3)': + '@typescript-eslint/project-service@8.35.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) - '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3) + '@typescript-eslint/types': 8.35.1 debug: 4.4.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.35.0': + '@typescript-eslint/scope-manager@8.35.1': dependencies: - '@typescript-eslint/types': 8.35.0 - '@typescript-eslint/visitor-keys': 8.35.0 + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/visitor-keys': 8.35.1 - '@typescript-eslint/tsconfig-utils@8.35.0(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.35.1(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@8.35.0(eslint@9.30.0)(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.35.1(eslint@9.30.0)(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) - '@typescript-eslint/utils': 8.35.0(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.1(eslint@9.30.0)(typescript@5.8.3) debug: 4.4.1 eslint: 9.30.0 ts-api-utils: 2.1.0(typescript@5.8.3) @@ -6354,14 +6354,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.35.0': {} + '@typescript-eslint/types@8.35.1': {} - '@typescript-eslint/typescript-estree@8.35.0(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.35.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.35.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) - '@typescript-eslint/types': 8.35.0 - '@typescript-eslint/visitor-keys': 8.35.0 + '@typescript-eslint/project-service': 8.35.1(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3) + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/visitor-keys': 8.35.1 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -6372,20 +6372,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.35.0(eslint@9.30.0)(typescript@5.8.3)': + '@typescript-eslint/utils@8.35.1(eslint@9.30.0)(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.0) - '@typescript-eslint/scope-manager': 8.35.0 - '@typescript-eslint/types': 8.35.0 - '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.35.1 + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) eslint: 9.30.0 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.35.0': + '@typescript-eslint/visitor-keys@8.35.1': dependencies: - '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/types': 8.35.1 eslint-visitor-keys: 4.2.1 '@ucast/core@1.10.2': {} @@ -6893,7 +6893,7 @@ snapshots: browserslist@4.25.1: dependencies: caniuse-lite: 1.0.30001726 - electron-to-chromium: 1.5.177 + electron-to-chromium: 1.5.178 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.1) @@ -6923,7 +6923,7 @@ snapshots: bun-types@1.2.17: dependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 cacheable-lookup@7.0.0: {} @@ -7256,7 +7256,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.177: {} + electron-to-chromium@1.5.178: {} emittery@0.13.1: {} @@ -7381,21 +7381,21 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0))(eslint@9.30.0): + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0))(eslint@9.30.0): dependencies: confusing-browser-globals: 1.0.11 eslint: 9.30.0 - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0) object.assign: 4.1.7 object.entries: 1.1.9 semver: 6.3.1 - eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0))(eslint@9.30.0): + eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0))(eslint@9.30.0): dependencies: - '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3) - '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.35.1(eslint@9.30.0)(typescript@5.8.3) eslint: 9.30.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0))(eslint@9.30.0) + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0))(eslint@9.30.0) transitivePeerDependencies: - eslint-plugin-import @@ -7411,17 +7411,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.30.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.30.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.35.1(eslint@9.30.0)(typescript@5.8.3) eslint: 9.30.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -7432,7 +7432,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.30.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.30.0) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint@9.30.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -7444,19 +7444,19 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.35.0(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/parser': 8.35.1(eslint@9.30.0)(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest@28.14.0(@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(jest@30.0.0(@types/node@24.0.7)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)))(typescript@5.8.3): + eslint-plugin-jest@28.14.0(@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(jest@30.0.0(@types/node@24.0.8)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)))(typescript@5.8.3): dependencies: - '@typescript-eslint/utils': 8.35.0(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.1(eslint@9.30.0)(typescript@5.8.3) eslint: 9.30.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3) - jest: 30.0.0(@types/node@24.0.7)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)) + '@typescript-eslint/eslint-plugin': 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3) + jest: 30.0.0(@types/node@24.0.8)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)) transitivePeerDependencies: - supports-color - typescript @@ -7471,11 +7471,11 @@ snapshots: '@types/eslint': 9.6.1 eslint-config-prettier: 10.1.5(eslint@9.30.0) - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0): dependencies: eslint: 9.30.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3) + '@typescript-eslint/eslint-plugin': 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.0)(typescript@5.8.3))(eslint@9.30.0)(typescript@5.8.3) eslint-scope@5.1.1: dependencies: @@ -8258,7 +8258,7 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: - '@jridgewell/trace-mapping': 0.3.27 + '@jridgewell/trace-mapping': 0.3.28 debug: 4.4.1 istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: @@ -8300,7 +8300,7 @@ snapshots: '@jest/expect': 30.0.0 '@jest/test-result': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.7 + '@types/node': 24.0.8 chalk: 4.1.2 co: 4.6.0 dedent: 1.6.0 @@ -8320,15 +8320,15 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@30.0.0(@types/node@24.0.7)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)): + jest-cli@30.0.0(@types/node@24.0.8)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)): dependencies: - '@jest/core': 30.0.0(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)) + '@jest/core': 30.0.0(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)) '@jest/test-result': 30.0.0 '@jest/types': 30.0.0 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.0.0(@types/node@24.0.7)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)) + jest-config: 30.0.0(@types/node@24.0.8)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)) jest-util: 30.0.0 jest-validate: 30.0.0 yargs: 17.7.2 @@ -8339,7 +8339,7 @@ snapshots: - supports-color - ts-node - jest-config@30.0.0(@types/node@24.0.7)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)): + jest-config@30.0.0(@types/node@24.0.8)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)): dependencies: '@babel/core': 7.27.7 '@jest/get-type': 30.0.0 @@ -8366,8 +8366,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 24.0.7 - ts-node: 10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3) + '@types/node': 24.0.8 + ts-node: 10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -8403,7 +8403,7 @@ snapshots: '@jest/environment': 30.0.0 '@jest/fake-timers': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.7 + '@types/node': 24.0.8 jest-mock: 30.0.0 jest-util: 30.0.0 jest-validate: 30.0.0 @@ -8413,7 +8413,7 @@ snapshots: jest-haste-map@30.0.0: dependencies: '@jest/types': 30.0.0 - '@types/node': 24.0.7 + '@types/node': 24.0.8 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -8471,7 +8471,7 @@ snapshots: jest-mock@30.0.0: dependencies: '@jest/types': 30.0.0 - '@types/node': 24.0.7 + '@types/node': 24.0.8 jest-util: 30.0.0 jest-pnp-resolver@1.2.3(jest-resolve@30.0.0): @@ -8505,7 +8505,7 @@ snapshots: '@jest/test-result': 30.0.0 '@jest/transform': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.7 + '@types/node': 24.0.8 chalk: 4.1.2 emittery: 0.13.1 exit-x: 0.2.2 @@ -8534,7 +8534,7 @@ snapshots: '@jest/test-result': 30.0.0 '@jest/transform': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.7 + '@types/node': 24.0.8 chalk: 4.1.2 cjs-module-lexer: 2.1.0 collect-v8-coverage: 1.0.2 @@ -8581,7 +8581,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 24.0.7 + '@types/node': 24.0.8 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -8590,7 +8590,7 @@ snapshots: jest-util@30.0.0: dependencies: '@jest/types': 30.0.0 - '@types/node': 24.0.7 + '@types/node': 24.0.8 chalk: 4.1.2 ci-info: 4.2.0 graceful-fs: 4.2.11 @@ -8609,7 +8609,7 @@ snapshots: dependencies: '@jest/test-result': 30.0.0 '@jest/types': 30.0.0 - '@types/node': 24.0.7 + '@types/node': 24.0.8 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -8618,24 +8618,24 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@30.0.0: dependencies: - '@types/node': 24.0.7 + '@types/node': 24.0.8 '@ungap/structured-clone': 1.3.0 jest-util: 30.0.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@30.0.0(@types/node@24.0.7)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)): + jest@30.0.0(@types/node@24.0.8)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)): dependencies: - '@jest/core': 30.0.0(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)) + '@jest/core': 30.0.0(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)) '@jest/types': 30.0.0 import-local: 3.2.0 - jest-cli: 30.0.0(@types/node@24.0.7)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)) + jest-cli: 30.0.0(@types/node@24.0.8)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -8811,7 +8811,7 @@ snapshots: magic-string@0.30.17: dependencies: - '@jridgewell/sourcemap-codec': 1.5.2 + '@jridgewell/sourcemap-codec': 1.5.3 make-dir@4.0.0: dependencies: @@ -9814,7 +9814,7 @@ snapshots: terser-webpack-plugin@5.3.14(@swc/core@1.12.7)(webpack@5.99.6(@swc/core@1.12.7)): dependencies: - '@jridgewell/trace-mapping': 0.3.27 + '@jridgewell/trace-mapping': 0.3.28 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 @@ -9825,7 +9825,7 @@ snapshots: terser@5.43.1: dependencies: - '@jridgewell/source-map': 0.3.8 + '@jridgewell/source-map': 0.3.9 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -9871,12 +9871,12 @@ snapshots: dependencies: typescript: 5.8.3 - ts-jest@29.4.0(@babel/core@7.27.7)(@jest/transform@30.0.0)(@jest/types@30.0.0)(babel-jest@30.0.0(@babel/core@7.27.7))(jest-util@30.0.0)(jest@30.0.0(@types/node@24.0.7)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)))(typescript@5.8.3): + ts-jest@29.4.0(@babel/core@7.27.7)(@jest/transform@30.0.0)(@jest/types@30.0.0)(babel-jest@30.0.0(@babel/core@7.27.7))(jest-util@30.0.0)(jest@30.0.0(@types/node@24.0.8)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 30.0.0(@types/node@24.0.7)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)) + jest: 30.0.0(@types/node@24.0.8)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -9901,14 +9901,14 @@ snapshots: typescript: 5.8.3 webpack: 5.99.6(@swc/core@1.12.7) - ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3): + ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.0.7 + '@types/node': 24.0.8 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -9995,7 +9995,7 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typeorm@0.3.25(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3)): + typeorm@0.3.25(mysql2@3.14.1)(reflect-metadata@0.2.2)(ts-node@10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3)): dependencies: '@sqltools/formatter': 1.2.5 ansis: 3.17.0 @@ -10014,7 +10014,7 @@ snapshots: yargs: 17.7.2 optionalDependencies: mysql2: 3.14.1 - ts-node: 10.9.2(@swc/core@1.12.7)(@types/node@24.0.7)(typescript@5.8.3) + ts-node: 10.9.2(@swc/core@1.12.7)(@types/node@24.0.8)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -10089,7 +10089,7 @@ snapshots: v8-to-istanbul@9.3.0: dependencies: - '@jridgewell/trace-mapping': 0.3.27 + '@jridgewell/trace-mapping': 0.3.28 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 diff --git a/src/config/database.config.ts b/src/config/database.config.ts index 2dae293..73d2e76 100644 --- a/src/config/database.config.ts +++ b/src/config/database.config.ts @@ -5,7 +5,16 @@ import { ContentFactory } from '@/modules/database/factories/content.factory'; import ContentSeeder from '@/modules/database/seeders/content.seeder'; export const database = createDBConfig((configure) => ({ - common: { synchronize: true }, + common: { + synchronize: true, + // 启用详细日志以便调试 SQL 错误 + logging: + configure.env.get('NODE_ENV') === 'development' + ? ['query', 'error', 'schema', 'warn', 'info', 'log'] + : ['error'], + // 启用最大日志记录 + maxQueryExecutionTime: 1000, + }, connections: [ { type: 'mysql', diff --git a/src/modules/content/controllers/manager/tag.controller.ts b/src/modules/content/controllers/manager/tag.controller.ts index d12374d..807c9e8 100644 --- a/src/modules/content/controllers/manager/tag.controller.ts +++ b/src/modules/content/controllers/manager/tag.controller.ts @@ -27,7 +27,7 @@ import { PaginateDto } from '@/modules/restful/dtos/paginate.dto'; const permission: PermissionChecker = async (ab) => ab.can(PermissionAction.MANAGE, TagEntity.name); -@ApiTags('标签查询') +@ApiTags('标签管理') @Depends(ContentModule) @Controller('tag') export class TagController { diff --git a/src/modules/core/filters/global-exception.filter.ts b/src/modules/core/filters/global-exception.filter.ts new file mode 100644 index 0000000..cb248e3 --- /dev/null +++ b/src/modules/core/filters/global-exception.filter.ts @@ -0,0 +1,98 @@ +import { + ArgumentsHost, + Catch, + ExceptionFilter, + HttpException, + HttpStatus, + Logger, +} from '@nestjs/common'; +import { FastifyReply, FastifyRequest } from 'fastify'; +import { QueryFailedError } from 'typeorm'; + +@Catch() +export class GlobalExceptionFilter implements ExceptionFilter { + private readonly logger = new Logger(GlobalExceptionFilter.name); + + catch(exception: unknown, host: ArgumentsHost) { + const ctx = host.switchToHttp(); + const request = ctx.getRequest(); + const response = ctx.getResponse(); + + let status = HttpStatus.INTERNAL_SERVER_ERROR; + let message = 'Internal server error'; + let details: any = null; + + // 记录完整的错误信息 + this.logError(exception, request); + + if (exception instanceof HttpException) { + status = exception.getStatus(); + const exceptionResponse = exception.getResponse(); + message = + typeof exceptionResponse === 'string' + ? exceptionResponse + : (exceptionResponse as any).message || exception.message; + } else if (exception instanceof QueryFailedError) { + // 专门处理 TypeORM 查询错误 + status = HttpStatus.BAD_REQUEST; + message = 'Database query failed'; + details = { + query: exception.query, + parameters: exception.parameters, + driverError: exception.driverError?.message, + sqlMessage: (exception as any).sqlMessage, + code: (exception as any).code, + errno: (exception as any).errno, + }; + } else if (exception instanceof Error) { + message = exception.message; + } + + const errorResponse = { + statusCode: status, + timestamp: new Date().toISOString(), + path: request.url, + method: request.method, + message, + ...(details && { details }), + }; + + response.status(status).send(errorResponse); + } + + private logError(exception: unknown, request: FastifyRequest) { + const errorInfo = { + timestamp: new Date().toISOString(), + method: request.method, + url: request.url, + headers: request.headers, + body: request.body, + query: request.query, + params: request.params, + }; + + if (exception instanceof QueryFailedError) { + this.logger.error(`Database Query Failed: ${exception.message}`, { + ...errorInfo, + query: exception.query, + parameters: exception.parameters, + driverError: exception.driverError, + stack: exception.stack, + sqlMessage: (exception as any).sqlMessage, + code: (exception as any).code, + errno: (exception as any).errno, + }); + } else if (exception instanceof Error) { + this.logger.error(`Unhandled Exception: ${exception.message}`, { + ...errorInfo, + stack: exception.stack, + name: exception.name, + }); + } else { + this.logger.error('Unknown Exception', { + ...errorInfo, + exception, + }); + } + } +} diff --git a/src/modules/rbac/controllers/manager/permission.controller.ts b/src/modules/rbac/controllers/manager/permission.controller.ts index dc3515c..d1437a0 100644 --- a/src/modules/rbac/controllers/manager/permission.controller.ts +++ b/src/modules/rbac/controllers/manager/permission.controller.ts @@ -13,7 +13,7 @@ import { PaginateWithTrashedDto } from '@/modules/restful/dtos/paginate-width-tr const permission: PermissionChecker = async (ab) => ab.can(PermissionAction.MANAGE, PermissionEntity.name); -@ApiTags('权限查询') +@ApiTags('权限管理') @ApiBearerAuth() @Depends(RbacModule) @Controller('permissions') diff --git a/src/modules/rbac/rbac.resolver.ts b/src/modules/rbac/rbac.resolver.ts index bf75780..ea05d70 100644 --- a/src/modules/rbac/rbac.resolver.ts +++ b/src/modules/rbac/rbac.resolver.ts @@ -243,7 +243,7 @@ export class RbacResolver

{ app: [{ name: '角色查询', description: '查询角色信息' }], manager: [ { name: '角色管理', description: '管理角色信息' }, - { name: '权限信息', description: '查询权限信息' }, + { name: '权限管理', description: '管理权限信息' }, ], }; return { routes, tags }; diff --git a/src/modules/rbac/services/permission.service.ts b/src/modules/rbac/services/permission.service.ts index df97207..ba8b14d 100644 --- a/src/modules/rbac/services/permission.service.ts +++ b/src/modules/rbac/services/permission.service.ts @@ -34,7 +34,7 @@ export class PermissionService extends BaseService< ) { const qb = await super.buildListQB(queryBuilder, options, callback); if (!isNil(options.role)) { - qb.andWhere('role.id IN (:...roles', { roles: [options.role] }); + qb.andWhere('role.id IN (:...roles)', { roles: [options.role] }); } return qb; } diff --git a/src/modules/user/routes.ts b/src/modules/user/routes.ts index f54e7e8..5a64585 100644 --- a/src/modules/user/routes.ts +++ b/src/modules/user/routes.ts @@ -22,10 +22,7 @@ export function createUserApi() { }; const tags: Record<'app' | 'manager', (string | TagOption)[]> = { - app: [ - { name: '用户管理', description: '对用户进行CRUD操作' }, - { name: '账户操作', description: '注册登录、查看修改账户信息、修改密码等' }, - ], + app: [{ name: '账户操作', description: '注册登录、查看修改账户信息、修改密码等' }], manager: [{ name: '用户管理', description: '管理用户信息' }], }; diff --git a/src/modules/user/services/user.service.ts b/src/modules/user/services/user.service.ts index c07421d..0abdda9 100644 --- a/src/modules/user/services/user.service.ts +++ b/src/modules/user/services/user.service.ts @@ -132,10 +132,10 @@ export class UserService extends BaseService { const { orderBy } = options; const qb = await super.buildListQB(queryBuilder, options, callback); if (!isNil(options.role)) { - qb.andWhere('roles.id IN (:...roles', { roles: [options.role] }); + qb.andWhere('roles.id IN (:...roles)', { roles: [options.role] }); } if (!isNil(options.permission)) { - qb.andWhere('permissions.id IN (:...permissions', { + qb.andWhere('permissions.id IN (:...permissions)', { permissions: [options.permission], }); } diff --git a/src/options.ts b/src/options.ts index 07c7746..06e3f9d 100644 --- a/src/options.ts +++ b/src/options.ts @@ -12,6 +12,7 @@ import { UserModule } from '@/modules/user/user.module'; import * as configs from './config'; import { ContentModule } from './modules/content/content.module'; +import { GlobalExceptionFilter } from './modules/core/filters/global-exception.filter'; import { CreateOptions } from './modules/core/types'; import * as dbCommands from './modules/database/commands'; import { DatabaseModule } from './modules/database/database.module'; @@ -32,7 +33,10 @@ export const createOptions: CreateOptions = { await UserModule.forRoot(configure), await RbacModule.forRoot(configure), ], - globals: { guard: RbacGuard }, + globals: { + guard: RbacGuard, + filter: GlobalExceptionFilter, + }, builder: async ({ configure, BootModule }) => { const container = await NestFactory.create( BootModule,