diff --git a/package.json b/package.json index d043f16..4e3994e 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ }, "dependencies": { "@fastify/static": "^8.2.0", - "@keyv/redis": "^4.4.0", + "@keyv/redis": "^4.5.0", "@mikro-orm/cli": "^6.4.16", "@mikro-orm/core": "^6.4.16", "@mikro-orm/nestjs": "^6.1.1", @@ -54,14 +54,14 @@ "@nestjs/throttler": "^6.4.0", "axios": "^1.10.0", "bcrypt": "^5.1.1", - "bullmq": "^5.54.1", + "bullmq": "^5.56.1", "class-transformer": "^0.5.1", "class-validator": "^0.14.2", "dayjs": "^1.11.13", "decimal.js": "^10.5.0", - "dotenv": "^16.5.0", + "dotenv": "^16.6.1", "fastify": "^5.4.0", - "nodemailer": "^7.0.3", + "nodemailer": "^7.0.4", "passport-jwt": "^4.0.1", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.2", @@ -72,30 +72,30 @@ "@commitlint/cli": "^19.8.1", "@commitlint/config-conventional": "^19.8.1", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "^9.29.0", + "@eslint/js": "^9.30.1", "@nestjs/cli": "^11.0.7", "@nestjs/schematics": "^11.0.5", "@nestjs/testing": "^11.1.3", "@swc/cli": "^0.6.0", - "@swc/core": "^1.12.1", + "@swc/core": "^1.12.9", "@types/bcrypt": "^5.0.2", "@types/jest": "^29.5.14", - "@types/node": "^22.15.32", + "@types/node": "^22.16.0", "@types/nodemailer": "^6.4.17", "@types/passport-jwt": "^4.0.1", "@types/supertest": "^6.0.3", - "@typescript-eslint/eslint-plugin": "^8.34.1", - "@typescript-eslint/parser": "^8.34.1", - "eslint": "^9.29.0", + "@typescript-eslint/eslint-plugin": "^8.35.1", + "@typescript-eslint/parser": "^8.35.1", + "eslint": "^9.30.1", "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^3.10.1", - "eslint-plugin-import": "^2.31.0", - "eslint-plugin-prettier": "^5.5.0", - "globals": "^16.2.0", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-prettier": "^5.5.1", + "globals": "^16.3.0", "husky": "^9.1.7", "jest": "^29.7.0", "lint-staged": "^15.5.2", - "prettier": "^3.5.3", + "prettier": "^3.6.2", "source-map-support": "^0.5.21", "supertest": "^7.1.1", "ts-jest": "^29.4.0", @@ -103,7 +103,7 @@ "ts-node": "^10.9.2", "tsconfig-paths": "^4.2.0", "typescript": "^5.8.3", - "typescript-eslint": "^8.34.1" + "typescript-eslint": "^8.35.1" }, "jest": { "moduleFileExtensions": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 220fd4d..b6034d1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^8.2.0 version: 8.2.0 '@keyv/redis': - specifier: ^4.4.0 - version: 4.4.0(keyv@5.3.4) + specifier: ^4.5.0 + version: 4.5.0(keyv@5.3.4) '@mikro-orm/cli': specifier: ^6.4.16 version: 6.4.16(pg@8.16.0) @@ -37,19 +37,19 @@ importers: version: 1.1.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))(@nestjs/throttler@6.4.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))(ioredis@5.6.1)(reflect-metadata@0.2.2) '@nestjs-modules/mailer': specifier: ^2.0.2 - version: 2.0.2(@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))(nodemailer@7.0.3) + version: 2.0.2(@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))(nodemailer@7.0.4) '@nestjs/axios': specifier: ^4.0.0 version: 4.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))(axios@1.10.0)(rxjs@7.8.2) '@nestjs/bullmq': specifier: ^11.0.2 - version: 11.0.2(@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))(bullmq@5.54.1) + version: 11.0.2(@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))(bullmq@5.56.1) '@nestjs/cache-manager': specifier: ^3.0.1 version: 3.0.1(@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))(cache-manager@7.0.0)(keyv@5.3.4)(rxjs@7.8.2) '@nestjs/cli': specifier: ^11.0.7 - version: 11.0.7(@swc/cli@0.6.0(@swc/core@1.12.1)(chokidar@4.0.3))(@swc/core@1.12.1)(@types/node@22.15.32) + version: 11.0.7(@swc/cli@0.6.0(@swc/core@1.12.9)(chokidar@4.0.3))(@swc/core@1.12.9)(@types/node@22.16.0) '@nestjs/common': specifier: ^11.1.3 version: 11.1.3(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) @@ -81,8 +81,8 @@ importers: specifier: ^5.1.1 version: 5.1.1 bullmq: - specifier: ^5.54.1 - version: 5.54.1 + specifier: ^5.56.1 + version: 5.56.1 class-transformer: specifier: ^0.5.1 version: 0.5.1 @@ -96,14 +96,14 @@ importers: specifier: ^10.5.0 version: 10.5.0 dotenv: - specifier: ^16.5.0 - version: 16.5.0 + specifier: ^16.6.1 + version: 16.6.1 fastify: specifier: ^5.4.0 version: 5.4.0 nodemailer: - specifier: ^7.0.3 - version: 7.0.3 + specifier: ^7.0.4 + version: 7.0.4 passport-jwt: specifier: ^4.0.1 version: 4.0.1 @@ -122,7 +122,7 @@ importers: devDependencies: '@commitlint/cli': specifier: ^19.8.1 - version: 19.8.1(@types/node@22.15.32)(typescript@5.8.3) + version: 19.8.1(@types/node@22.16.0)(typescript@5.8.3) '@commitlint/config-conventional': specifier: ^19.8.1 version: 19.8.1 @@ -130,8 +130,8 @@ importers: specifier: ^3.3.1 version: 3.3.1 '@eslint/js': - specifier: ^9.29.0 - version: 9.29.0 + specifier: ^9.30.1 + version: 9.30.1 '@nestjs/schematics': specifier: ^11.0.5 version: 11.0.5(chokidar@4.0.3)(typescript@5.8.3) @@ -140,10 +140,10 @@ importers: version: 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))(@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)) '@swc/cli': specifier: ^0.6.0 - version: 0.6.0(@swc/core@1.12.1)(chokidar@4.0.3) + version: 0.6.0(@swc/core@1.12.9)(chokidar@4.0.3) '@swc/core': - specifier: ^1.12.1 - version: 1.12.1 + specifier: ^1.12.9 + version: 1.12.9 '@types/bcrypt': specifier: ^5.0.2 version: 5.0.2 @@ -151,8 +151,8 @@ importers: specifier: ^29.5.14 version: 29.5.14 '@types/node': - specifier: ^22.15.32 - version: 22.15.32 + specifier: ^22.16.0 + version: 22.16.0 '@types/nodemailer': specifier: ^6.4.17 version: 6.4.17 @@ -163,41 +163,41 @@ importers: specifier: ^6.0.3 version: 6.0.3 '@typescript-eslint/eslint-plugin': - specifier: ^8.34.1 - version: 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) + specifier: ^8.35.1 + version: 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) '@typescript-eslint/parser': - specifier: ^8.34.1 - version: 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) + specifier: ^8.35.1 + version: 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) eslint: - specifier: ^9.29.0 - version: 9.29.0(jiti@2.4.2) + specifier: ^9.30.1 + version: 9.30.1(jiti@2.4.2) eslint-config-prettier: specifier: ^10.1.5 - version: 10.1.5(eslint@9.29.0(jiti@2.4.2)) + version: 10.1.5(eslint@9.30.1(jiti@2.4.2)) eslint-import-resolver-typescript: specifier: ^3.10.1 - version: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.29.0(jiti@2.4.2)) + version: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.30.1(jiti@2.4.2)) eslint-plugin-import: - specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.29.0(jiti@2.4.2)) + specifier: ^2.32.0 + version: 2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)) eslint-plugin-prettier: - specifier: ^5.5.0 - version: 5.5.0(@types/eslint@9.6.1)(eslint-config-prettier@10.1.5(eslint@9.29.0(jiti@2.4.2)))(eslint@9.29.0(jiti@2.4.2))(prettier@3.5.3) + specifier: ^5.5.1 + version: 5.5.1(@types/eslint@9.6.1)(eslint-config-prettier@10.1.5(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2))(prettier@3.6.2) globals: - specifier: ^16.2.0 - version: 16.2.0 + specifier: ^16.3.0 + version: 16.3.0 husky: specifier: ^9.1.7 version: 9.1.7 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.32)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)) + version: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) lint-staged: specifier: ^15.5.2 version: 15.5.2 prettier: - specifier: ^3.5.3 - version: 3.5.3 + specifier: ^3.6.2 + version: 3.6.2 source-map-support: specifier: ^0.5.21 version: 0.5.21 @@ -206,13 +206,13 @@ importers: version: 7.1.1 ts-jest: specifier: ^29.4.0 - version: 29.4.0(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.15.32)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)))(typescript@5.8.3) + version: 29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(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.1)) + version: 9.5.2(typescript@5.8.3)(webpack@5.99.6(@swc/core@1.12.9)) ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3) + version: 10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -220,8 +220,8 @@ importers: specifier: ^5.8.3 version: 5.8.3 typescript-eslint: - specifier: ^8.34.1 - version: 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) + specifier: ^8.35.1 + version: 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) packages: @@ -264,22 +264,26 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.27.5': - resolution: {integrity: sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==} + '@babel/compat-data@7.28.0': + resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} engines: {node: '>=6.9.0'} - '@babel/core@7.27.4': - resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} + '@babel/core@7.28.0': + resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} engines: {node: '>=6.9.0'} - '@babel/generator@7.27.5': - resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} + '@babel/generator@7.28.0': + resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} @@ -310,8 +314,8 @@ packages: resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} engines: {node: '>=6.9.0'} - '@babel/parser@7.27.5': - resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==} + '@babel/parser@7.28.0': + resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} engines: {node: '>=6.0.0'} hasBin: true @@ -414,12 +418,12 @@ packages: resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.27.4': - resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} + '@babel/traverse@7.28.0': + resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} engines: {node: '>=6.9.0'} - '@babel/types@7.27.6': - resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==} + '@babel/types@7.28.0': + resolution: {integrity: sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==} engines: {node: '>=6.9.0'} '@bcoe/v8-coverage@0.2.3': @@ -585,36 +589,36 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.20.1': - resolution: {integrity: sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw==} + '@eslint/config-array@0.21.0': + resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.2.3': - resolution: {integrity: sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg==} + '@eslint/config-helpers@0.3.0': + resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.14.0': resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.15.0': - resolution: {integrity: sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw==} + '@eslint/core@0.15.1': + resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.29.0': - resolution: {integrity: sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==} + '@eslint/js@9.30.1': + resolution: {integrity: sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.2': - resolution: {integrity: sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg==} + '@eslint/plugin-kit@0.3.3': + resolution: {integrity: sha512-1+WqvgNMhmlAambTvT3KPtCl/Ibr68VldY2XY40SL1CE0ZXiakFR/cbTspaF5HsnpDMvcYYoJHfl4980NBjGag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fastify/accept-negotiator@2.0.1': @@ -677,8 +681,8 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@inquirer/checkbox@4.1.8': - resolution: {integrity: sha512-d/QAsnwuHX2OPolxvYcgSj7A9DO9H6gVOy2DvBTx+P2LH2iRTo/RSGV3iwCzW024nP9hw98KIuDmdyhZQj1UQg==} + '@inquirer/checkbox@4.1.9': + resolution: {integrity: sha512-DBJBkzI5Wx4jFaYm221LHvAhpKYkhVS0k9plqHwaHhofGNxvYB7J3Bz8w+bFJ05zaMb0sZNHo4KdmENQFlNTuQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -686,8 +690,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.12': - resolution: {integrity: sha512-dpq+ielV9/bqgXRUbNH//KsY6WEw9DrGPmipkpmgC1Y46cwuBTNx7PXFWTjc3MQ+urcc0QxoVHcMI0FW4Ok0hg==} + '@inquirer/confirm@5.1.13': + resolution: {integrity: sha512-EkCtvp67ICIVVzjsquUiVSd+V5HRGOGQfsqA4E4vMWhYnB7InUL0pa0TIWt1i+OfP16Gkds8CdIu6yGZwOM1Yw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -695,8 +699,8 @@ packages: '@types/node': optional: true - '@inquirer/core@10.1.13': - resolution: {integrity: sha512-1viSxebkYN2nJULlzCxES6G9/stgHSepZ9LqqfdIGPHj5OHhiBUXVS0a6R0bEC2A+VL4D9w6QB66ebCr6HGllA==} + '@inquirer/core@10.1.14': + resolution: {integrity: sha512-Ma+ZpOJPewtIYl6HZHZckeX1STvDnHTCB2GVINNUlSEn2Am6LddWwfPkIGY0IUFVjUUrr/93XlBwTK6mfLjf0A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -704,8 +708,8 @@ packages: '@types/node': optional: true - '@inquirer/editor@4.2.13': - resolution: {integrity: sha512-WbicD9SUQt/K8O5Vyk9iC2ojq5RHoCLK6itpp2fHsWe44VxxcA9z3GTWlvjSTGmMQpZr+lbVmrxdHcumJoLbMA==} + '@inquirer/editor@4.2.14': + resolution: {integrity: sha512-yd2qtLl4QIIax9DTMZ1ZN2pFrrj+yL3kgIWxm34SS6uwCr0sIhsNyudUjAo5q3TqI03xx4SEBkUJqZuAInp9uA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -713,8 +717,8 @@ packages: '@types/node': optional: true - '@inquirer/expand@4.0.15': - resolution: {integrity: sha512-4Y+pbr/U9Qcvf+N/goHzPEXiHH8680lM3Dr3Y9h9FFw4gHS+zVpbj8LfbKWIb/jayIB4aSO4pWiBTrBYWkvi5A==} + '@inquirer/expand@4.0.16': + resolution: {integrity: sha512-oiDqafWzMtofeJyyGkb1CTPaxUkjIcSxePHHQCfif8t3HV9pHcw1Kgdw3/uGpDvaFfeTluwQtWiqzPVjAqS3zA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -726,8 +730,8 @@ packages: resolution: {integrity: sha512-MJttijd8rMFcKJC8NYmprWr6hD3r9Gd9qUC0XwPNwoEPWSMVJwA2MlXxF+nhZZNMY+HXsWa+o7KY2emWYIn0jQ==} engines: {node: '>=18'} - '@inquirer/input@4.1.12': - resolution: {integrity: sha512-xJ6PFZpDjC+tC1P8ImGprgcsrzQRsUh9aH3IZixm1lAZFK49UGHxM3ltFfuInN2kPYNfyoPRh+tU4ftsjPLKqQ==} + '@inquirer/input@4.2.0': + resolution: {integrity: sha512-opqpHPB1NjAmDISi3uvZOTrjEEU5CWVu/HBkDby8t93+6UxYX0Z7Ps0Ltjm5sZiEbWenjubwUkivAEYQmy9xHw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -735,8 +739,8 @@ packages: '@types/node': optional: true - '@inquirer/number@3.0.15': - resolution: {integrity: sha512-xWg+iYfqdhRiM55MvqiTCleHzszpoigUpN5+t1OMcRkJrUrw7va3AzXaxvS+Ak7Gny0j2mFSTv2JJj8sMtbV2g==} + '@inquirer/number@3.0.16': + resolution: {integrity: sha512-kMrXAaKGavBEoBYUCgualbwA9jWUx2TjMA46ek+pEKy38+LFpL9QHlTd8PO2kWPUgI/KB+qi02o4y2rwXbzr3Q==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -744,8 +748,8 @@ packages: '@types/node': optional: true - '@inquirer/password@4.0.15': - resolution: {integrity: sha512-75CT2p43DGEnfGTaqFpbDC2p2EEMrq0S+IRrf9iJvYreMy5mAWj087+mdKyLHapUEPLjN10mNvABpGbk8Wdraw==} + '@inquirer/password@4.0.16': + resolution: {integrity: sha512-g8BVNBj5Zeb5/Y3cSN+hDUL7CsIFDIuVxb9EPty3lkxBaYpjL5BNRKSYOF9yOLe+JOcKFd+TSVeADQ4iSY7rbg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -771,8 +775,8 @@ packages: '@types/node': optional: true - '@inquirer/rawlist@4.1.3': - resolution: {integrity: sha512-7XrV//6kwYumNDSsvJIPeAqa8+p7GJh7H5kRuxirct2cgOcSWwwNGoXDRgpNFbY/MG2vQ4ccIWCi8+IXXyFMZA==} + '@inquirer/rawlist@4.1.4': + resolution: {integrity: sha512-5GGvxVpXXMmfZNtvWw4IsHpR7RzqAR624xtkPd1NxxlV5M+pShMqzL4oRddRkg8rVEOK9fKdJp1jjVML2Lr7TQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -780,8 +784,8 @@ packages: '@types/node': optional: true - '@inquirer/search@3.0.15': - resolution: {integrity: sha512-YBMwPxYBrADqyvP4nNItpwkBnGGglAvCLVW8u4pRmmvOsHUtCAUIMbUrLX5B3tFL1/WsLGdQ2HNzkqswMs5Uaw==} + '@inquirer/search@3.0.16': + resolution: {integrity: sha512-POCmXo+j97kTGU6aeRjsPyuCpQQfKcMXdeTMw708ZMtWrj5aykZvlUxH4Qgz3+Y1L/cAVZsSpA+UgZCu2GMOMg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -789,8 +793,8 @@ packages: '@types/node': optional: true - '@inquirer/select@4.2.3': - resolution: {integrity: sha512-OAGhXU0Cvh0PhLz9xTF/kx6g6x+sP+PcyTiLvCrewI99P3BBeexD+VbuwkNDvqGkk3y2h5ZiWLeRP7BFlhkUDg==} + '@inquirer/select@4.2.4': + resolution: {integrity: sha512-unTppUcTjmnbl/q+h8XeQDhAqIOmwWYWNyiiP2e3orXrg6tOaa5DHXja9PChCSbChOsktyKgOieRZFnajzxoBg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -899,35 +903,30 @@ packages: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jridgewell/gen-mapping@0.3.8': - resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} - engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.12': + resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.2.1': - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} + '@jridgewell/source-map@0.3.10': + resolution: {integrity: sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==} - '@jridgewell/source-map@0.3.6': - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + '@jridgewell/sourcemap-codec@1.5.4': + resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@jridgewell/trace-mapping@0.3.25': - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.29': + resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@keyv/redis@4.4.0': - resolution: {integrity: sha512-n/KEj3S7crVkoykggqsMUtcjNGvjagGPlJYgO/r6m9hhGZfhp1txJElHxcdJ1ANi/LJoBuOSILj15g6HD2ucqQ==} + '@keyv/redis@4.5.0': + resolution: {integrity: sha512-0uoeT8Ik0R22mqxB19Cf3nDuxCH8dppEMxL98o4LvI/rgVeWS/2iVWyjmZR6yNo6jSchVraXG2Y44iJwj++2IQ==} engines: {node: '>= 18'} peerDependencies: - keyv: ^5.3.3 + keyv: ^5.3.4 '@keyv/serialize@1.0.3': resolution: {integrity: sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==} @@ -1022,104 +1021,104 @@ packages: cpu: [x64] os: [win32] - '@napi-rs/nice-android-arm-eabi@1.0.1': - resolution: {integrity: sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==} + '@napi-rs/nice-android-arm-eabi@1.0.4': + resolution: {integrity: sha512-OZFMYUkih4g6HCKTjqJHhMUlgvPiDuSLZPbPBWHLjKmFTv74COzRlq/gwHtmEVaR39mJQ6ZyttDl2HNMUbLVoA==} engines: {node: '>= 10'} cpu: [arm] os: [android] - '@napi-rs/nice-android-arm64@1.0.1': - resolution: {integrity: sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA==} + '@napi-rs/nice-android-arm64@1.0.4': + resolution: {integrity: sha512-k8u7cjeA64vQWXZcRrPbmwjH8K09CBnNaPnI9L1D5N6iMPL3XYQzLcN6WwQonfcqCDv5OCY3IqX89goPTV4KMw==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@napi-rs/nice-darwin-arm64@1.0.1': - resolution: {integrity: sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA==} + '@napi-rs/nice-darwin-arm64@1.0.4': + resolution: {integrity: sha512-GsLdQvUcuVzoyzmtjsThnpaVEizAqH5yPHgnsBmq3JdVoVZHELFo7PuJEdfOH1DOHi2mPwB9sCJEstAYf3XCJA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@napi-rs/nice-darwin-x64@1.0.1': - resolution: {integrity: sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ==} + '@napi-rs/nice-darwin-x64@1.0.4': + resolution: {integrity: sha512-1y3gyT3e5zUY5SxRl3QDtJiWVsbkmhtUHIYwdWWIQ3Ia+byd/IHIEpqAxOGW1nhhnIKfTCuxBadHQb+yZASVoA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@napi-rs/nice-freebsd-x64@1.0.1': - resolution: {integrity: sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw==} + '@napi-rs/nice-freebsd-x64@1.0.4': + resolution: {integrity: sha512-06oXzESPRdXUuzS8n2hGwhM2HACnDfl3bfUaSqLGImM8TA33pzDXgGL0e3If8CcFWT98aHows5Lk7xnqYNGFeA==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@napi-rs/nice-linux-arm-gnueabihf@1.0.1': - resolution: {integrity: sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q==} + '@napi-rs/nice-linux-arm-gnueabihf@1.0.4': + resolution: {integrity: sha512-CgklZ6g8WL4+EgVVkxkEvvsi2DSLf9QIloxWO0fvQyQBp6VguUSX3eHLeRpqwW8cRm2Hv/Q1+PduNk7VK37VZw==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@napi-rs/nice-linux-arm64-gnu@1.0.1': - resolution: {integrity: sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA==} + '@napi-rs/nice-linux-arm64-gnu@1.0.4': + resolution: {integrity: sha512-wdAJ7lgjhAlsANUCv0zi6msRwq+D4KDgU+GCCHssSxWmAERZa2KZXO0H2xdmoJ/0i03i6YfK/sWaZgUAyuW2oQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/nice-linux-arm64-musl@1.0.1': - resolution: {integrity: sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw==} + '@napi-rs/nice-linux-arm64-musl@1.0.4': + resolution: {integrity: sha512-4b1KYG+sriufhFrpUS9uNOEYYJqSfcbnwGx6uGX7JjrH8tELG90cOpCawz5THNIwlS3DhLgnCOcn0+4p6z26QA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/nice-linux-ppc64-gnu@1.0.1': - resolution: {integrity: sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q==} + '@napi-rs/nice-linux-ppc64-gnu@1.0.4': + resolution: {integrity: sha512-iaf3vMRgr23oe1PUaKpxaH3DS0IMN0+N9iEiWVwYPm/U15vZFYdqVegGfN2PzrZLUl5lc8ZxbmEKDfuqslhAMA==} engines: {node: '>= 10'} cpu: [ppc64] os: [linux] - '@napi-rs/nice-linux-riscv64-gnu@1.0.1': - resolution: {integrity: sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig==} + '@napi-rs/nice-linux-riscv64-gnu@1.0.4': + resolution: {integrity: sha512-UXoREY6Yw6rHrGuTwQgBxpfjK34t6mTjibE9/cXbefL9AuUCJ9gEgwNKZiONuR5QGswChqo9cnthjdKkYyAdDg==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] - '@napi-rs/nice-linux-s390x-gnu@1.0.1': - resolution: {integrity: sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg==} + '@napi-rs/nice-linux-s390x-gnu@1.0.4': + resolution: {integrity: sha512-eFbgYCRPmsqbYPAlLYU5hYTNbogmIDUvknilehHsFhCH1+0/kN87lP+XaLT0Yeq4V/rpwChSd9vlz4muzFArtw==} engines: {node: '>= 10'} cpu: [s390x] os: [linux] - '@napi-rs/nice-linux-x64-gnu@1.0.1': - resolution: {integrity: sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA==} + '@napi-rs/nice-linux-x64-gnu@1.0.4': + resolution: {integrity: sha512-4T3E6uTCwWT6IPnwuPcWVz3oHxvEp/qbrCxZhsgzwTUBEwu78EGNXGdHfKJQt3soth89MLqZJw+Zzvnhrsg1mQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/nice-linux-x64-musl@1.0.1': - resolution: {integrity: sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ==} + '@napi-rs/nice-linux-x64-musl@1.0.4': + resolution: {integrity: sha512-NtbBkAeyBPLvCBkWtwkKXkNSn677eaT0cX3tygq+2qVv71TmHgX4gkX6o9BXjlPzdgPGwrUudavCYPT9tzkEqQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/nice-win32-arm64-msvc@1.0.1': - resolution: {integrity: sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg==} + '@napi-rs/nice-win32-arm64-msvc@1.0.4': + resolution: {integrity: sha512-vubOe3i+YtSJGEk/++73y+TIxbuVHi+W8ZzrRm2eETCjCRwNlgbfToQZ85dSA+4iBB/NJRGNp+O4hfdbbttZWA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@napi-rs/nice-win32-ia32-msvc@1.0.1': - resolution: {integrity: sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw==} + '@napi-rs/nice-win32-ia32-msvc@1.0.4': + resolution: {integrity: sha512-BMOVrUDZeg1RNRKVlh4eyLv5djAAVLiSddfpuuQ47EFjBcklg0NUeKMFKNrKQR4UnSn4HAiACLD7YK7koskwmg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - '@napi-rs/nice-win32-x64-msvc@1.0.1': - resolution: {integrity: sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg==} + '@napi-rs/nice-win32-x64-msvc@1.0.4': + resolution: {integrity: sha512-kCNk6HcRZquhw/whwh4rHsdPyOSCQCgnVDVik+Y9cuSVTDy3frpiCJTScJqPPS872h4JgZKkr/+CwcwttNEo9Q==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@napi-rs/nice@1.0.1': - resolution: {integrity: sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==} + '@napi-rs/nice@1.0.4': + resolution: {integrity: sha512-Sqih1YARrmMoHlXGgI9JrrgkzxcaaEso0AH+Y7j8NHonUs+xe4iDsgC3IBIDNdzEewbNpccNN6hip+b5vmyRLw==} engines: {node: '>= 10'} '@napi-rs/wasm-runtime@0.2.11': @@ -1385,68 +1384,68 @@ packages: chokidar: optional: true - '@swc/core-darwin-arm64@1.12.1': - resolution: {integrity: sha512-nUjWVcJ3YS2N40ZbKwYO2RJ4+o2tWYRzNOcIQp05FqW0+aoUCVMdAUUzQinPDynfgwVshDAXCKemY8X7nN5MaA==} + '@swc/core-darwin-arm64@1.12.9': + resolution: {integrity: sha512-GACFEp4nD6V+TZNR2JwbMZRHB+Yyvp14FrcmB6UCUYmhuNWjkxi+CLnEvdbuiKyQYv0zA+TRpCHZ+whEs6gwfA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.12.1': - resolution: {integrity: sha512-OGm4a4d3OeJn+tRt8H/eiHgTFrJbS6r8mi/Ob65tAEXZGHN900T2kR7c5ALr0V2hBOQ8BfhexwPoQlGQP/B95w==} + '@swc/core-darwin-x64@1.12.9': + resolution: {integrity: sha512-hv2kls7Ilkm2EpeJz+I9MCil7pGS3z55ZAgZfxklEuYsxpICycxeH+RNRv4EraggN44ms+FWCjtZFu0LGg2V3g==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.12.1': - resolution: {integrity: sha512-76YeeQKyK0EtNkQiNBZ0nbVGooPf9IucY0WqVXVpaU4wuG7ZyLEE2ZAIgXafIuzODGQoLfetue7I8boMxh1/MA==} + '@swc/core-linux-arm-gnueabihf@1.12.9': + resolution: {integrity: sha512-od9tDPiG+wMU9wKtd6y3nYJdNqgDOyLdgRRcrj1/hrbHoUPOM8wZQZdwQYGarw63iLXGgsw7t5HAF9Yc51ilFA==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.12.1': - resolution: {integrity: sha512-BxJDIJPq1+aCh9UsaSAN6wo3tuln8UhNXruOrzTI8/ElIig/3sAueDM6Eq7GvZSGGSA7ljhNATMJ0elD7lFatQ==} + '@swc/core-linux-arm64-gnu@1.12.9': + resolution: {integrity: sha512-6qx1ka9LHcLzxIgn2Mros+CZLkHK2TawlXzi/h7DJeNnzi8F1Hw0Yzjp8WimxNCg6s2n+o3jnmin1oXB7gg8rw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.12.1': - resolution: {integrity: sha512-NhLdbffSXvY0/FwUSAl4hKBlpe5GHQGXK8DxTo3HHjLsD9sCPYieo3vG0NQoUYAy4ZUY1WeGjyxeq4qZddJzEQ==} + '@swc/core-linux-arm64-musl@1.12.9': + resolution: {integrity: sha512-yghFZWKPVVGbUdqiD7ft23G0JX6YFGDJPz9YbLLAwGuKZ9th3/jlWoQDAw1Naci31LQhVC+oIji6ozihSuwB2A==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.12.1': - resolution: {integrity: sha512-CrYnV8SZIgArQ9LKH0xEF95PKXzX9WkRSc5j55arOSBeDCeDUQk1Bg/iKdnDiuj5HC1hZpvzwMzSBJjv+Z70jA==} + '@swc/core-linux-x64-gnu@1.12.9': + resolution: {integrity: sha512-SFUxyhWLZRNL8QmgGNqdi2Q43PNyFVkRZ2zIif30SOGFSxnxcf2JNeSeBgKIGVgaLSuk6xFVVCtJ3KIeaStgRg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.12.1': - resolution: {integrity: sha512-BQMl3d0HaGB0/h2xcKlGtjk/cGRn2tnbsaChAKcjFdCepblKBCz1pgO/mL7w5iXq3s57wMDUn++71/a5RAkZOA==} + '@swc/core-linux-x64-musl@1.12.9': + resolution: {integrity: sha512-9FB0wM+6idCGTI20YsBNBg9xSWtkDBymnpaTCsZM3qDc0l4uOpJMqbfWhQvp17x7r/ulZfb2QY8RDvQmCL6AcQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.12.1': - resolution: {integrity: sha512-b7NeGnpqTfmIGtUqXBl0KqoSmOnH64nRZoT5l4BAGdvwY7nxitWR94CqZuwyLPty/bLywmyDA9uO12Kvgb3+gg==} + '@swc/core-win32-arm64-msvc@1.12.9': + resolution: {integrity: sha512-zHOusMVbOH9ik5RtRrMiGzLpKwxrPXgXkBm3SbUCa65HAdjV33NZ0/R9Rv1uPESALtEl2tzMYLUxYA5ECFDFhA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.12.1': - resolution: {integrity: sha512-iU/29X2D7cHBp1to62cUg/5Xk8K+lyOJiKIGGW5rdzTW/c2zz3d/ehgpzVP/rqC4NVr88MXspqHU4il5gmDajw==} + '@swc/core-win32-ia32-msvc@1.12.9': + resolution: {integrity: sha512-aWZf0PqE0ot7tCuhAjRkDFf41AzzSQO0x2xRfTbnhpROp57BRJ/N5eee1VULO/UA2PIJRG7GKQky5bSGBYlFug==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.12.1': - resolution: {integrity: sha512-+Zh+JKDwiFqV5N9yAd2DhYVGPORGh9cfenu1ptr9yge+eHAf7vZJcC3rnj6QMR1QJh0Y5VC9+YBjRFjZVA7XDw==} + '@swc/core-win32-x64-msvc@1.12.9': + resolution: {integrity: sha512-C25fYftXOras3P3anSUeXXIpxmEkdAcsIL9yrr0j1xepTZ/yKwpnQ6g3coj8UXdeJy4GTVlR6+Ow/QiBgZQNOg==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.12.1': - resolution: {integrity: sha512-aKXdDTqxTVFl/bKQZ3EQUjEMBEoF6JBv29moMZq0kbVO43na6u/u+3Vcbhbrh+A2N0X5OL4RaveuWfAjEgOmeA==} + '@swc/core@1.12.9': + resolution: {integrity: sha512-O+LfT2JlVMsIMWG9x+rdxg8GzpzeGtCZQfXV7cKc1PjIKUkLFf1QJ7okuseA4f/9vncu37dQ2ZcRrPKy0Ndd5g==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -1579,8 +1578,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@22.15.32': - resolution: {integrity: sha512-3jigKqgSjsH6gYZv2nEsqdXfZqIFGAV36XYYjf9KGZ3PSG+IhLecqPnI310RvjutyMwifE2hhhNEklOUrvx/wA==} + '@types/node@22.16.0': + resolution: {integrity: sha512-B2egV9wALML1JCpv3VQoQ+yesQKAmNMBIAY7OteVrikcOcAkWm+dGL6qpeCktPjAv6N1JLnhbNiqS35UpFyBsQ==} '@types/nodemailer@6.4.17': resolution: {integrity: sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==} @@ -1627,157 +1626,157 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@8.34.1': - resolution: {integrity: sha512-STXcN6ebF6li4PxwNeFnqF8/2BNDvBupf2OPx2yWNzr6mKNGF7q49VM00Pz5FaomJyqvbXpY6PhO+T9w139YEQ==} + '@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.34.1 + '@typescript-eslint/parser': ^8.35.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.34.1': - resolution: {integrity: sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==} + '@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.34.1': - resolution: {integrity: sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA==} + '@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.34.1': - resolution: {integrity: sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA==} + '@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.34.1': - resolution: {integrity: sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg==} + '@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.34.1': - resolution: {integrity: sha512-Tv7tCCr6e5m8hP4+xFugcrwTOucB8lshffJ6zf1mF1TbU67R+ntCc6DzLNKM+s/uzDyv8gLq7tufaAhIBYeV8g==} + '@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.34.1': - resolution: {integrity: sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA==} + '@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.34.1': - resolution: {integrity: sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA==} + '@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.34.1': - resolution: {integrity: sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ==} + '@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.34.1': - resolution: {integrity: sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw==} + '@typescript-eslint/visitor-keys@8.35.1': + resolution: {integrity: sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@unrs/resolver-binding-android-arm-eabi@1.9.0': - resolution: {integrity: sha512-h1T2c2Di49ekF2TE8ZCoJkb+jwETKUIPDJ/nO3tJBKlLFPu+fyd93f0rGP/BvArKx2k2HlRM4kqkNarj3dvZlg==} + '@unrs/resolver-binding-android-arm-eabi@1.10.1': + resolution: {integrity: sha512-zohDKXT1Ok0yhbVGff4YAg9HUs5ietG5GpvJBPFSApZnGe7uf2cd26DRhKZbn0Be6xHUZrSzP+RAgMmzyc71EA==} cpu: [arm] os: [android] - '@unrs/resolver-binding-android-arm64@1.9.0': - resolution: {integrity: sha512-sG1NHtgXtX8owEkJ11yn34vt0Xqzi3k9TJ8zppDmyG8GZV4kVWw44FHwKwHeEFl07uKPeC4ZoyuQaGh5ruJYPA==} + '@unrs/resolver-binding-android-arm64@1.10.1': + resolution: {integrity: sha512-tAN6k5UrTd4nicpA7s2PbjR/jagpDzAmvXFjbpTazUe5FRsFxVcBlS1F5Lzp5jtWU6bdiqRhSvd4X8rdpCffeA==} cpu: [arm64] os: [android] - '@unrs/resolver-binding-darwin-arm64@1.9.0': - resolution: {integrity: sha512-nJ9z47kfFnCxN1z/oYZS7HSNsFh43y2asePzTEZpEvK7kGyuShSl3RRXnm/1QaqFL+iP+BjMwuB+DYUymOkA5A==} + '@unrs/resolver-binding-darwin-arm64@1.10.1': + resolution: {integrity: sha512-+FCsag8WkauI4dQ50XumCXdfvDCZEpMUnvZDsKMxfOisnEklpDFXc6ThY0WqybBYZbiwR5tWcFaZmI0G6b4vrg==} cpu: [arm64] os: [darwin] - '@unrs/resolver-binding-darwin-x64@1.9.0': - resolution: {integrity: sha512-TK+UA1TTa0qS53rjWn7cVlEKVGz2B6JYe0C++TdQjvWYIyx83ruwh0wd4LRxYBM5HeuAzXcylA9BH2trARXJTw==} + '@unrs/resolver-binding-darwin-x64@1.10.1': + resolution: {integrity: sha512-qYKGGm5wk71ONcXTMZ0+J11qQeOAPz3nw6VtqrBUUELRyXFyvK8cHhHsLBFR4GHnilc2pgY1HTB2TvdW9wO26Q==} cpu: [x64] os: [darwin] - '@unrs/resolver-binding-freebsd-x64@1.9.0': - resolution: {integrity: sha512-6uZwzMRFcD7CcCd0vz3Hp+9qIL2jseE/bx3ZjaLwn8t714nYGwiE84WpaMCYjU+IQET8Vu/+BNAGtYD7BG/0yA==} + '@unrs/resolver-binding-freebsd-x64@1.10.1': + resolution: {integrity: sha512-hOHMAhbvIQ63gkpgeNsXcWPSyvXH7ZEyeg254hY0Lp/hX8NdW+FsUWq73g9946Pc/BrcVI/I3C1cmZ4RCX9bNw==} cpu: [x64] os: [freebsd] - '@unrs/resolver-binding-linux-arm-gnueabihf@1.9.0': - resolution: {integrity: sha512-bPUBksQfrgcfv2+mm+AZinaKq8LCFvt5PThYqRotqSuuZK1TVKkhbVMS/jvSRfYl7jr3AoZLYbDkItxgqMKRkg==} + '@unrs/resolver-binding-linux-arm-gnueabihf@1.10.1': + resolution: {integrity: sha512-6ds7+zzHJgTDmpe0gmFcOTvSUhG5oZukkt+cCsSb3k4Uiz2yEQB4iCRITX2hBwSW+p8gAieAfecITjgqCkswXw==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm-musleabihf@1.9.0': - resolution: {integrity: sha512-uT6E7UBIrTdCsFQ+y0tQd3g5oudmrS/hds5pbU3h4s2t/1vsGWbbSKhBSCD9mcqaqkBwoqlECpUrRJCmldl8PA==} + '@unrs/resolver-binding-linux-arm-musleabihf@1.10.1': + resolution: {integrity: sha512-P7A0G2/jW00diNJyFeq4W9/nxovD62Ay8CMP4UK9OymC7qO7rG1a8Upad68/bdfpIOn7KSp7Aj/6lEW3yyznAA==} cpu: [arm] os: [linux] - '@unrs/resolver-binding-linux-arm64-gnu@1.9.0': - resolution: {integrity: sha512-vdqBh911wc5awE2bX2zx3eflbyv8U9xbE/jVKAm425eRoOVv/VseGZsqi3A3SykckSpF4wSROkbQPvbQFn8EsA==} + '@unrs/resolver-binding-linux-arm64-gnu@1.10.1': + resolution: {integrity: sha512-Cg6xzdkrpltcTPO4At+A79zkC7gPDQIgosJmVV8M104ImB6KZi1MrNXgDYIAfkhUYjPzjNooEDFRAwwPadS7ZA==} cpu: [arm64] os: [linux] - '@unrs/resolver-binding-linux-arm64-musl@1.9.0': - resolution: {integrity: sha512-/8JFZ/SnuDr1lLEVsxsuVwrsGquTvT51RZGvyDB/dOK3oYK2UqeXzgeyq6Otp8FZXQcEYqJwxb9v+gtdXn03eQ==} + '@unrs/resolver-binding-linux-arm64-musl@1.10.1': + resolution: {integrity: sha512-aNeg99bVkXa4lt+oZbjNRPC8ZpjJTKxijg/wILrJdzNyAymO2UC/HUK1UfDjt6T7U5p/mK24T3CYOi3/+YEQSA==} cpu: [arm64] os: [linux] - '@unrs/resolver-binding-linux-ppc64-gnu@1.9.0': - resolution: {integrity: sha512-FkJjybtrl+rajTw4loI3L6YqSOpeZfDls4SstL/5lsP2bka9TiHUjgMBjygeZEis1oC8LfJTS8FSgpKPaQx2tQ==} + '@unrs/resolver-binding-linux-ppc64-gnu@1.10.1': + resolution: {integrity: sha512-ylz5ojeXrkPrtnzVhpCO+YegG63/aKhkoTlY8PfMfBfLaUG8v6m6iqrL7sBUKdVBgOB4kSTUPt9efQdA/Y3Z/w==} cpu: [ppc64] os: [linux] - '@unrs/resolver-binding-linux-riscv64-gnu@1.9.0': - resolution: {integrity: sha512-w/NZfHNeDusbqSZ8r/hp8iL4S39h4+vQMc9/vvzuIKMWKppyUGKm3IST0Qv0aOZ1rzIbl9SrDeIqK86ZpUK37w==} + '@unrs/resolver-binding-linux-riscv64-gnu@1.10.1': + resolution: {integrity: sha512-xcWyhmJfXXOxK7lvE4+rLwBq+on83svlc0AIypfe6x4sMJR+S4oD7n9OynaQShfj2SufPw2KJAotnsNb+4nN2g==} cpu: [riscv64] os: [linux] - '@unrs/resolver-binding-linux-riscv64-musl@1.9.0': - resolution: {integrity: sha512-bEPBosut8/8KQbUixPry8zg/fOzVOWyvwzOfz0C0Rw6dp+wIBseyiHKjkcSyZKv/98edrbMknBaMNJfA/UEdqw==} + '@unrs/resolver-binding-linux-riscv64-musl@1.10.1': + resolution: {integrity: sha512-mW9JZAdOCyorgi1eLJr4gX7xS67WNG9XNPYj5P8VuttK72XNsmdw9yhOO4tDANMgiLXFiSFaiL1gEpoNtRPw/A==} cpu: [riscv64] os: [linux] - '@unrs/resolver-binding-linux-s390x-gnu@1.9.0': - resolution: {integrity: sha512-LDtMT7moE3gK753gG4pc31AAqGUC86j3AplaFusc717EUGF9ZFJ356sdQzzZzkBk1XzMdxFyZ4f/i35NKM/lFA==} + '@unrs/resolver-binding-linux-s390x-gnu@1.10.1': + resolution: {integrity: sha512-NZGKhBy6xkJ0k09cWNZz4DnhBcGlhDd3W+j7EYoNvf5TSwj2K6kbmfqTWITEgkvjsMUjm1wsrc4IJaH6VtjyHQ==} cpu: [s390x] os: [linux] - '@unrs/resolver-binding-linux-x64-gnu@1.9.0': - resolution: {integrity: sha512-WmFd5KINHIXj8o1mPaT8QRjA9HgSXhN1gl9Da4IZihARihEnOylu4co7i/yeaIpcfsI6sYs33cNZKyHYDh0lrA==} + '@unrs/resolver-binding-linux-x64-gnu@1.10.1': + resolution: {integrity: sha512-VsjgckJ0gNMw7p0d8In6uPYr+s0p16yrT2rvG4v2jUpEMYkpnfnCiALa9SWshbvlGjKQ98Q2x19agm3iFk8w8Q==} cpu: [x64] os: [linux] - '@unrs/resolver-binding-linux-x64-musl@1.9.0': - resolution: {integrity: sha512-CYuXbANW+WgzVRIl8/QvZmDaZxrqvOldOwlbUjIM4pQ46FJ0W5cinJ/Ghwa/Ng1ZPMJMk1VFdsD/XwmCGIXBWg==} + '@unrs/resolver-binding-linux-x64-musl@1.10.1': + resolution: {integrity: sha512-idMnajMeejnaFi0Mx9UTLSYFDAOTfAEP7VjXNgxKApso3Eu2Njs0p2V95nNIyFi4oQVGFmIuCkoznAXtF/Zbmw==} cpu: [x64] os: [linux] - '@unrs/resolver-binding-wasm32-wasi@1.9.0': - resolution: {integrity: sha512-6Rp2WH0OoitMYR57Z6VE8Y6corX8C6QEMWLgOV6qXiJIeZ1F9WGXY/yQ8yDC4iTraotyLOeJ2Asea0urWj2fKQ==} + '@unrs/resolver-binding-wasm32-wasi@1.10.1': + resolution: {integrity: sha512-7jyhjIRNFjzlr8x5pth6Oi9hv3a7ubcVYm2GBFinkBQKcFhw4nIs5BtauSNtDW1dPIGrxF0ciynCZqzxMrYMsg==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@unrs/resolver-binding-win32-arm64-msvc@1.9.0': - resolution: {integrity: sha512-rknkrTRuvujprrbPmGeHi8wYWxmNVlBoNW8+4XF2hXUnASOjmuC9FNF1tGbDiRQWn264q9U/oGtixyO3BT8adQ==} + '@unrs/resolver-binding-win32-arm64-msvc@1.10.1': + resolution: {integrity: sha512-TY79+N+Gkoo7E99K+zmsKNeiuNJYlclZJtKqsHSls8We2iGhgxtletVsiBYie93MSTDRDMI8pkBZJlIJSZPrdA==} cpu: [arm64] os: [win32] - '@unrs/resolver-binding-win32-ia32-msvc@1.9.0': - resolution: {integrity: sha512-Ceymm+iBl+bgAICtgiHyMLz6hjxmLJKqBim8tDzpX61wpZOx2bPK6Gjuor7I2RiUynVjvvkoRIkrPyMwzBzF3A==} + '@unrs/resolver-binding-win32-ia32-msvc@1.10.1': + resolution: {integrity: sha512-BAJN5PEPlEV+1m8+PCtFoKm3LQ1P57B4Z+0+efU0NzmCaGk7pUaOxuPgl+m3eufVeeNBKiPDltG0sSB9qEfCxw==} cpu: [ia32] os: [win32] - '@unrs/resolver-binding-win32-x64-msvc@1.9.0': - resolution: {integrity: sha512-k59o9ZyeyS0hAlcaKFezYSH2agQeRFEB7KoQLXl3Nb3rgkqT1NY9Vwy+SqODiLmYnEjxWJVRE/yq2jFVqdIxZw==} + '@unrs/resolver-binding-win32-x64-msvc@1.10.1': + resolution: {integrity: sha512-2v3erKKmmCyIVvvhI2nF15qEbdBpISTq44m9pyd5gfIJB1PN94oePTLWEd82XUbIbvKhv76xTSeUQSCOGesLeg==} cpu: [x64] os: [win32] @@ -2145,8 +2144,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.25.0: - resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} + browserslist@4.25.1: + resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2172,8 +2171,8 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - bullmq@5.54.1: - resolution: {integrity: sha512-0CQEWd70S0tiJrwa1pC6GAZ4AnIpDpQBXCGp2jigGZSFDfA9uupaFyPtDW+Cl9OdHZQ8djATywrIYw5MDmTIMw==} + bullmq@5.56.1: + resolution: {integrity: sha512-HmX53sf24bbDj5NVrDLDEjy8OSDmbGMESfvFhVK8NpHsA4WlAdKxPDf7c5b9RZf5wZGHyAd2XhWSkE9dmNPYww==} cache-manager@7.0.0: resolution: {integrity: sha512-5HLGorfU4g2GyLTXd+bbq8RhZPwLRlVm7hfS1EssJx4Ujq1FjyQAjHND93sI6ByQTlUlCQ0jrHZqLI0qtBFyHA==} @@ -2213,8 +2212,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001723: - resolution: {integrity: sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw==} + caniuse-lite@1.0.30001726: + resolution: {integrity: sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==} chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} @@ -2471,11 +2470,11 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + css-select@5.2.2: + resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + css-what@6.2.2: + resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} dargs@8.1.0: @@ -2674,6 +2673,10 @@ packages: resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} engines: {node: '>=12'} + dotenv@16.6.1: + resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} + engines: {node: '>=12'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -2697,8 +2700,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.169: - resolution: {integrity: sha512-q7SQx6mkLy0GTJK9K9OiWeaBMV4XQtBSdf6MJUzDB/H/5tFXfIiX38Lci1Kl6SsgiEhz1SQI1ejEOU5asWEhwQ==} + electron-to-chromium@1.5.179: + resolution: {integrity: sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -2717,8 +2720,8 @@ packages: resolution: {integrity: sha512-EuJWwlHPZ1LbADuKTClvHtwbaFn4rOD+dRAbWysqEOXRc2Uui0hJInNJrsdH0c+OhJA4nrCBdSkW4DD5YxAo6A==} engines: {node: '>=8.10.0'} - enhanced-resolve@5.18.1: - resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + enhanced-resolve@5.18.2: + resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} engines: {node: '>=10.13.0'} entities@2.2.0: @@ -2819,8 +2822,8 @@ packages: eslint-plugin-import-x: optional: true - eslint-module-utils@2.12.0: - resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2840,8 +2843,8 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-import@2.31.0: - resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2850,8 +2853,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-prettier@5.5.0: - resolution: {integrity: sha512-8qsOYwkkGrahrgoUv76NZi23koqXOGiiEzXMrT8Q7VcYaUISR+5MorIUxfWqYXN0fN/31WbSrxCxFkVQ43wwrA==} + eslint-plugin-prettier@5.5.1: + resolution: {integrity: sha512-dobTkHT6XaEVOo8IO90Q4DOSxnm3Y151QxPJlM/vKC0bVy+d6cVWQZLlFiuZPP0wS6vZwSKeJgKkcS+KfMBlRw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -2880,8 +2883,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.29.0: - resolution: {integrity: sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==} + eslint@9.30.1: + resolution: {integrity: sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -3283,16 +3286,12 @@ packages: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@16.2.0: - resolution: {integrity: sha512-O+7l9tPdHCU320IigZZPj5zmRCFG9xHmx9cU8FqU2Rp+JN714seHV+2S9+JslCpY4gJwU2vOGox0wzgae/MCEg==} + globals@16.3.0: + resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==} engines: {node: '>=18'} globalthis@1.0.4: @@ -3980,8 +3979,8 @@ packages: libbase64@1.3.0: resolution: {integrity: sha512-GgOXd0Eo6phYgh0DJtjQ2tO8dc0IVINtZJeARPeiIJqge+HdsWSuaDTe8ztQ7j/cONByDZ3zeB325AHiv5O0dg==} - libmime@5.3.6: - resolution: {integrity: sha512-j9mBC7eiqi6fgBPAGvKCXJKJSIASanYF4EeA4iBzSG0HxQxmXnR3KbyWqTn4CwsKSebqCv2f5XZfAO6sKzgvwA==} + libmime@5.3.7: + resolution: {integrity: sha512-FlDb3Wtha8P01kTL3P9M+ZDNDWPKPmKHWaU/cG/lg5pfuAwdflVpZE+wm9m7pKmC5ww6s+zTxBKS1p6yl3KpSw==} libphonenumber-js@1.12.9: resolution: {integrity: sha512-VWwAdNeJgN7jFOD+wN4qx83DTPMVPPAUyx9/TUkBXKLiNkuWWk6anV0439tgdtwaJDrEdqkvdN22iA6J4bUCZg==} @@ -4125,11 +4124,11 @@ packages: magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - mailparser@3.7.3: - resolution: {integrity: sha512-0RM14cZF0gO1y2Q/82hhWranispZOUSYHwvQ21h12x90NwD6+D5q59S5nOLqCtCdYitHN58LJXWEHa4RWm7BYA==} + mailparser@3.7.4: + resolution: {integrity: sha512-Beh4yyR4jLq3CZZ32asajByrXnW8dLyKCAQD3WvtTiBnMtFWhxO+wa93F6sJNjDmfjxXs4NRNjw3XAGLqZR3Vg==} - mailsplit@5.4.3: - resolution: {integrity: sha512-PFV0BBh4Tv7Omui5FtXXVtN4ExAxIi8Yvmb9JgBz+J6Hnnrv/YYXLlKKudLhXwd3/qWEATOslRsnzVCWDeCnmQ==} + mailsplit@5.4.5: + resolution: {integrity: sha512-oMfhmvclR689IIaQmIcR5nODnZRRVwAKtqFT407TIvmhX2OLUBnshUTcxzQBt3+96sZVDud9NfSe1NxAkUNXEQ==} make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} @@ -4384,8 +4383,8 @@ packages: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} - napi-postinstall@0.2.4: - resolution: {integrity: sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==} + napi-postinstall@0.3.0: + resolution: {integrity: sha512-M7NqKyhODKV1gRLdkwE7pDsZP2/SC2a2vHkOYh9MCpKMbWVfyVfUw5MaH83Fv6XMjxr5jryUp3IDDL9rlxsTeA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true @@ -4433,8 +4432,8 @@ packages: resolution: {integrity: sha512-Z+iLaBGVaSjbIzQ4pX6XV41HrooLsQ10ZWPUehGmuantvzWoDVBnmsdUcOIDM1t+yPor5pDhVlDESgOMEGxhHA==} engines: {node: '>=6.0.0'} - nodemailer@7.0.3: - resolution: {integrity: sha512-Ajq6Sz1x7cIK3pN6KesGTah+1gnwMnx5gKl3piQlQQE/PwyJ4Mbc8is2psWYxK3RJTVeqsDaCv8ZzXLCDHMTZw==} + nodemailer@7.0.4: + resolution: {integrity: sha512-9O00Vh89/Ld2EcVCqJ/etd7u20UhME0f/NToPfArwPEe1Don1zy4mAIz6ariRr7mJ2RDxtaDzN0WJVdVXPtZaw==} engines: {node: '>=6.0.0'} nopt@5.0.0: @@ -4687,26 +4686,26 @@ packages: pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - pg-cloudflare@1.2.5: - resolution: {integrity: sha512-OOX22Vt0vOSRrdoUPKJ8Wi2OpE/o/h9T8X1s4qSkCedbNah9ei2W2765be8iMVxQUsvgT7zIAT2eIa9fs5+vtg==} + pg-cloudflare@1.2.7: + resolution: {integrity: sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==} pg-connection-string@2.6.2: resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} - pg-connection-string@2.9.0: - resolution: {integrity: sha512-P2DEBKuvh5RClafLngkAuGe9OUlFV7ebu8w1kmaaOgPcpJd1RIFh7otETfI6hAR8YupOLFTY7nuvvIn7PLciUQ==} + pg-connection-string@2.9.1: + resolution: {integrity: sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==} pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - pg-pool@3.10.0: - resolution: {integrity: sha512-DzZ26On4sQ0KmqnO34muPcmKbhrjmyiO4lCCR0VwEd7MjmiKf5NTg/6+apUEu0NF7ESa37CGzFxH513CoUmWnA==} + pg-pool@3.10.1: + resolution: {integrity: sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==} peerDependencies: pg: '>=8.0' - pg-protocol@1.10.0: - resolution: {integrity: sha512-IpdytjudNuLv8nhlHs/UrVBhU0e78J0oIS/0AVdTbWxSOkFUVdsHC/NrorO6nXsQNDTT1kzDSOMJubBQviX18Q==} + pg-protocol@1.10.3: + resolution: {integrity: sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==} pg-types@2.2.0: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} @@ -4805,8 +4804,8 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier@3.5.3: - resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} engines: {node: '>=14'} hasBin: true @@ -5381,8 +5380,8 @@ packages: uglify-js: optional: true - terser@5.42.0: - resolution: {integrity: sha512-UYCvU9YQW2f/Vwl+P0GfhxJxbUGLwd+5QrrGgLajzWAtC/23AX0vcise32kkP7Eu0Wu9VlzzHAXkLObgjQfFlQ==} + terser@5.43.1: + resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} engines: {node: '>=10'} hasBin: true @@ -5443,8 +5442,8 @@ packages: token-stream@1.0.0: resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} - token-types@6.0.0: - resolution: {integrity: sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==} + token-types@6.0.3: + resolution: {integrity: sha512-IKJ6EzuPPWtKtEIEPpIdXv9j5j2LGJEYk0CKY2efgKoYKLBiZdh6iQkLVBow/CB3phyWAWCyk+bZeaimJn6uRQ==} engines: {node: '>=14.16'} tr46@0.0.3: @@ -5561,8 +5560,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.34.1: - resolution: {integrity: sha512-XjS+b6Vg9oT1BaIUfkW3M3LvqZE++rbzAMEHuccCfO/YkP43ha6w3jTEMilQxMF92nVOYCcdjv1ZUhAa1D/0ow==} + typescript-eslint@8.35.1: + resolution: {integrity: sha512-xslJjFzhOmHYQzSB/QTeASAHbjmxOGEP6Coh93TXmUBFQoJ1VU35UHIDmG06Jd6taf3wqqC1ntBnCMeymy5Ovw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -5607,8 +5606,8 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unrs-resolver@1.9.0: - resolution: {integrity: sha512-wqaRu4UnzBD2ABTC1kLfBjAqIDZ5YUTr/MLGa7By47JV1bJDSW7jq/ZSLigB7enLe7ubNaJhtnBXgrc/50cEhg==} + unrs-resolver@1.10.1: + resolution: {integrity: sha512-EFrL7Hw4kmhZdwWO3dwwFJo6hO3FXuQ6Bg8BK/faHZ9m1YxqBS31BNSTxklIQkxK/4LlV8zTYnPsIRLBzTzjCA==} update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} @@ -5677,8 +5676,8 @@ packages: resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} engines: {node: '>=6'} - webpack-sources@3.3.2: - resolution: {integrity: sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA==} + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} engines: {node: '>=10.13.0'} webpack@5.99.6: @@ -5807,8 +5806,8 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 '@angular-devkit/core@19.2.6(chokidar@4.0.3)': dependencies: @@ -5832,11 +5831,11 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics-cli@19.2.8(@types/node@22.15.32)(chokidar@4.0.3)': + '@angular-devkit/schematics-cli@19.2.8(@types/node@22.16.0)(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@22.15.32) + '@inquirer/prompts': 7.3.2(@types/node@22.16.0) ansi-colors: 4.1.3 symbol-observable: 4.0.0 yargs-parser: 21.1.1 @@ -5870,20 +5869,20 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.27.5': {} + '@babel/compat-data@7.28.0': {} - '@babel/core@7.27.4': + '@babel/core@7.28.0': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 + '@babel/generator': 7.28.0 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) '@babel/helpers': 7.27.6 - '@babel/parser': 7.27.5 + '@babel/parser': 7.28.0 '@babel/template': 7.27.2 - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.0 convert-source-map: 2.0.0 debug: 4.4.1 gensync: 1.0.0-beta.2 @@ -5892,35 +5891,37 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.27.5': + '@babel/generator@7.28.0': dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 jsesc: 3.1.0 '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.27.5 + '@babel/compat-data': 7.28.0 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.0 + browserslist: 4.25.1 lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-globals@7.28.0': {} + '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.6 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.4)': + '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color @@ -5935,95 +5936,95 @@ snapshots: '@babel/helpers@7.27.6': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.27.6 + '@babel/types': 7.28.0 - '@babel/parser@7.27.5': + '@babel/parser@7.28.0': dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.28.0 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.4)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.4)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.4)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.4)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.4)': + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.4)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.4)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.4)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.4)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.4)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.4)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.4)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.4)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.4)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.4)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.4)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.4)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/runtime@7.27.6': @@ -6032,22 +6033,22 @@ snapshots: '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 - '@babel/traverse@7.27.4': + '@babel/traverse@7.28.0': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.27.5 - '@babel/parser': 7.27.5 + '@babel/generator': 7.28.0 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.0 '@babel/template': 7.27.2 - '@babel/types': 7.27.6 + '@babel/types': 7.28.0 debug: 4.4.1 - globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.27.6': + '@babel/types@7.28.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -6057,11 +6058,11 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@commitlint/cli@19.8.1(@types/node@22.15.32)(typescript@5.8.3)': + '@commitlint/cli@19.8.1(@types/node@22.16.0)(typescript@5.8.3)': dependencies: '@commitlint/format': 19.8.1 '@commitlint/lint': 19.8.1 - '@commitlint/load': 19.8.1(@types/node@22.15.32)(typescript@5.8.3) + '@commitlint/load': 19.8.1(@types/node@22.16.0)(typescript@5.8.3) '@commitlint/read': 19.8.1 '@commitlint/types': 19.8.1 tinyexec: 1.0.1 @@ -6108,7 +6109,7 @@ snapshots: '@commitlint/rules': 19.8.1 '@commitlint/types': 19.8.1 - '@commitlint/load@19.8.1(@types/node@22.15.32)(typescript@5.8.3)': + '@commitlint/load@19.8.1(@types/node@22.16.0)(typescript@5.8.3)': dependencies: '@commitlint/config-validator': 19.8.1 '@commitlint/execute-rule': 19.8.1 @@ -6116,7 +6117,7 @@ snapshots: '@commitlint/types': 19.8.1 chalk: 5.4.1 cosmiconfig: 9.0.0(typescript@5.8.3) - cosmiconfig-typescript-loader: 6.1.0(@types/node@22.15.32)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3) + cosmiconfig-typescript-loader: 6.1.0(@types/node@22.16.0)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 @@ -6230,14 +6231,14 @@ snapshots: tslib: 2.8.1 optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.29.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.30.1(jiti@2.4.2))': dependencies: - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.30.1(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/config-array@0.20.1': + '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 debug: 4.4.1 @@ -6245,13 +6246,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.2.3': {} + '@eslint/config-helpers@0.3.0': {} '@eslint/core@0.14.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/core@0.15.0': + '@eslint/core@0.15.1': dependencies: '@types/json-schema': 7.0.15 @@ -6269,13 +6270,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.29.0': {} + '@eslint/js@9.30.1': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.3.2': + '@eslint/plugin-kit@0.3.3': dependencies: - '@eslint/core': 0.15.0 + '@eslint/core': 0.15.1 levn: 0.4.1 '@fastify/accept-negotiator@2.0.1': {} @@ -6354,27 +6355,27 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@inquirer/checkbox@4.1.8(@types/node@22.15.32)': + '@inquirer/checkbox@4.1.9(@types/node@22.16.0)': dependencies: - '@inquirer/core': 10.1.13(@types/node@22.15.32) + '@inquirer/core': 10.1.14(@types/node@22.16.0) '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@22.15.32) + '@inquirer/type': 3.0.7(@types/node@22.16.0) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 - '@inquirer/confirm@5.1.12(@types/node@22.15.32)': + '@inquirer/confirm@5.1.13(@types/node@22.16.0)': dependencies: - '@inquirer/core': 10.1.13(@types/node@22.15.32) - '@inquirer/type': 3.0.7(@types/node@22.15.32) + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 - '@inquirer/core@10.1.13(@types/node@22.15.32)': + '@inquirer/core@10.1.14(@types/node@22.16.0)': dependencies: '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@22.15.32) + '@inquirer/type': 3.0.7(@types/node@22.16.0) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 @@ -6382,108 +6383,108 @@ snapshots: wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 - '@inquirer/editor@4.2.13(@types/node@22.15.32)': + '@inquirer/editor@4.2.14(@types/node@22.16.0)': dependencies: - '@inquirer/core': 10.1.13(@types/node@22.15.32) - '@inquirer/type': 3.0.7(@types/node@22.15.32) + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) external-editor: 3.1.0 optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 - '@inquirer/expand@4.0.15(@types/node@22.15.32)': + '@inquirer/expand@4.0.16(@types/node@22.16.0)': dependencies: - '@inquirer/core': 10.1.13(@types/node@22.15.32) - '@inquirer/type': 3.0.7(@types/node@22.15.32) + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@inquirer/figures@1.0.12': {} - '@inquirer/input@4.1.12(@types/node@22.15.32)': + '@inquirer/input@4.2.0(@types/node@22.16.0)': dependencies: - '@inquirer/core': 10.1.13(@types/node@22.15.32) - '@inquirer/type': 3.0.7(@types/node@22.15.32) + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 - '@inquirer/number@3.0.15(@types/node@22.15.32)': + '@inquirer/number@3.0.16(@types/node@22.16.0)': dependencies: - '@inquirer/core': 10.1.13(@types/node@22.15.32) - '@inquirer/type': 3.0.7(@types/node@22.15.32) + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 - '@inquirer/password@4.0.15(@types/node@22.15.32)': + '@inquirer/password@4.0.16(@types/node@22.16.0)': dependencies: - '@inquirer/core': 10.1.13(@types/node@22.15.32) - '@inquirer/type': 3.0.7(@types/node@22.15.32) + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) ansi-escapes: 4.3.2 optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 - '@inquirer/prompts@7.3.2(@types/node@22.15.32)': + '@inquirer/prompts@7.3.2(@types/node@22.16.0)': dependencies: - '@inquirer/checkbox': 4.1.8(@types/node@22.15.32) - '@inquirer/confirm': 5.1.12(@types/node@22.15.32) - '@inquirer/editor': 4.2.13(@types/node@22.15.32) - '@inquirer/expand': 4.0.15(@types/node@22.15.32) - '@inquirer/input': 4.1.12(@types/node@22.15.32) - '@inquirer/number': 3.0.15(@types/node@22.15.32) - '@inquirer/password': 4.0.15(@types/node@22.15.32) - '@inquirer/rawlist': 4.1.3(@types/node@22.15.32) - '@inquirer/search': 3.0.15(@types/node@22.15.32) - '@inquirer/select': 4.2.3(@types/node@22.15.32) + '@inquirer/checkbox': 4.1.9(@types/node@22.16.0) + '@inquirer/confirm': 5.1.13(@types/node@22.16.0) + '@inquirer/editor': 4.2.14(@types/node@22.16.0) + '@inquirer/expand': 4.0.16(@types/node@22.16.0) + '@inquirer/input': 4.2.0(@types/node@22.16.0) + '@inquirer/number': 3.0.16(@types/node@22.16.0) + '@inquirer/password': 4.0.16(@types/node@22.16.0) + '@inquirer/rawlist': 4.1.4(@types/node@22.16.0) + '@inquirer/search': 3.0.16(@types/node@22.16.0) + '@inquirer/select': 4.2.4(@types/node@22.16.0) optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 - '@inquirer/prompts@7.4.1(@types/node@22.15.32)': + '@inquirer/prompts@7.4.1(@types/node@22.16.0)': dependencies: - '@inquirer/checkbox': 4.1.8(@types/node@22.15.32) - '@inquirer/confirm': 5.1.12(@types/node@22.15.32) - '@inquirer/editor': 4.2.13(@types/node@22.15.32) - '@inquirer/expand': 4.0.15(@types/node@22.15.32) - '@inquirer/input': 4.1.12(@types/node@22.15.32) - '@inquirer/number': 3.0.15(@types/node@22.15.32) - '@inquirer/password': 4.0.15(@types/node@22.15.32) - '@inquirer/rawlist': 4.1.3(@types/node@22.15.32) - '@inquirer/search': 3.0.15(@types/node@22.15.32) - '@inquirer/select': 4.2.3(@types/node@22.15.32) + '@inquirer/checkbox': 4.1.9(@types/node@22.16.0) + '@inquirer/confirm': 5.1.13(@types/node@22.16.0) + '@inquirer/editor': 4.2.14(@types/node@22.16.0) + '@inquirer/expand': 4.0.16(@types/node@22.16.0) + '@inquirer/input': 4.2.0(@types/node@22.16.0) + '@inquirer/number': 3.0.16(@types/node@22.16.0) + '@inquirer/password': 4.0.16(@types/node@22.16.0) + '@inquirer/rawlist': 4.1.4(@types/node@22.16.0) + '@inquirer/search': 3.0.16(@types/node@22.16.0) + '@inquirer/select': 4.2.4(@types/node@22.16.0) optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 - '@inquirer/rawlist@4.1.3(@types/node@22.15.32)': + '@inquirer/rawlist@4.1.4(@types/node@22.16.0)': dependencies: - '@inquirer/core': 10.1.13(@types/node@22.15.32) - '@inquirer/type': 3.0.7(@types/node@22.15.32) + '@inquirer/core': 10.1.14(@types/node@22.16.0) + '@inquirer/type': 3.0.7(@types/node@22.16.0) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 - '@inquirer/search@3.0.15(@types/node@22.15.32)': + '@inquirer/search@3.0.16(@types/node@22.16.0)': dependencies: - '@inquirer/core': 10.1.13(@types/node@22.15.32) + '@inquirer/core': 10.1.14(@types/node@22.16.0) '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@22.15.32) + '@inquirer/type': 3.0.7(@types/node@22.16.0) yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 - '@inquirer/select@4.2.3(@types/node@22.15.32)': + '@inquirer/select@4.2.4(@types/node@22.16.0)': dependencies: - '@inquirer/core': 10.1.13(@types/node@22.15.32) + '@inquirer/core': 10.1.14(@types/node@22.16.0) '@inquirer/figures': 1.0.12 - '@inquirer/type': 3.0.7(@types/node@22.15.32) + '@inquirer/type': 3.0.7(@types/node@22.16.0) ansi-escapes: 4.3.2 yoctocolors-cjs: 2.1.2 optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 - '@inquirer/type@3.0.7(@types/node@22.15.32)': + '@inquirer/type@3.0.7(@types/node@22.16.0)': optionalDependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@ioredis/commands@1.2.0': {} @@ -6521,27 +6522,27 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.32 + '@types/node': 22.16.0 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.32 + '@types/node': 22.16.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.32)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -6566,7 +6567,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.32 + '@types/node': 22.16.0 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -6584,7 +6585,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.15.32 + '@types/node': 22.16.0 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -6605,8 +6606,8 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.15.32 + '@jridgewell/trace-mapping': 0.3.29 + '@types/node': 22.16.0 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -6633,7 +6634,7 @@ snapshots: '@jest/source-map@29.6.3': dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.29 callsites: 3.1.0 graceful-fs: 4.2.11 @@ -6653,9 +6654,9 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.29 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 @@ -6676,38 +6677,35 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@types/yargs': 17.0.33 chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.8': + '@jridgewell/gen-mapping@0.3.12': dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.5.0 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/trace-mapping': 0.3.29 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/set-array@1.2.1': {} - - '@jridgewell/source-map@0.3.6': + '@jridgewell/source-map@0.3.10': dependencies: - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 - '@jridgewell/sourcemap-codec@1.5.0': {} + '@jridgewell/sourcemap-codec@1.5.4': {} - '@jridgewell/trace-mapping@0.3.25': + '@jridgewell/trace-mapping@0.3.29': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.4 '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.4 - '@keyv/redis@4.4.0(keyv@5.3.4)': + '@keyv/redis@4.5.0(keyv@5.3.4)': dependencies: '@redis/client': 1.6.1 cluster-key-slot: 1.1.2 @@ -6832,72 +6830,72 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true - '@napi-rs/nice-android-arm-eabi@1.0.1': + '@napi-rs/nice-android-arm-eabi@1.0.4': optional: true - '@napi-rs/nice-android-arm64@1.0.1': + '@napi-rs/nice-android-arm64@1.0.4': optional: true - '@napi-rs/nice-darwin-arm64@1.0.1': + '@napi-rs/nice-darwin-arm64@1.0.4': optional: true - '@napi-rs/nice-darwin-x64@1.0.1': + '@napi-rs/nice-darwin-x64@1.0.4': optional: true - '@napi-rs/nice-freebsd-x64@1.0.1': + '@napi-rs/nice-freebsd-x64@1.0.4': optional: true - '@napi-rs/nice-linux-arm-gnueabihf@1.0.1': + '@napi-rs/nice-linux-arm-gnueabihf@1.0.4': optional: true - '@napi-rs/nice-linux-arm64-gnu@1.0.1': + '@napi-rs/nice-linux-arm64-gnu@1.0.4': optional: true - '@napi-rs/nice-linux-arm64-musl@1.0.1': + '@napi-rs/nice-linux-arm64-musl@1.0.4': optional: true - '@napi-rs/nice-linux-ppc64-gnu@1.0.1': + '@napi-rs/nice-linux-ppc64-gnu@1.0.4': optional: true - '@napi-rs/nice-linux-riscv64-gnu@1.0.1': + '@napi-rs/nice-linux-riscv64-gnu@1.0.4': optional: true - '@napi-rs/nice-linux-s390x-gnu@1.0.1': + '@napi-rs/nice-linux-s390x-gnu@1.0.4': optional: true - '@napi-rs/nice-linux-x64-gnu@1.0.1': + '@napi-rs/nice-linux-x64-gnu@1.0.4': optional: true - '@napi-rs/nice-linux-x64-musl@1.0.1': + '@napi-rs/nice-linux-x64-musl@1.0.4': optional: true - '@napi-rs/nice-win32-arm64-msvc@1.0.1': + '@napi-rs/nice-win32-arm64-msvc@1.0.4': optional: true - '@napi-rs/nice-win32-ia32-msvc@1.0.1': + '@napi-rs/nice-win32-ia32-msvc@1.0.4': optional: true - '@napi-rs/nice-win32-x64-msvc@1.0.1': + '@napi-rs/nice-win32-x64-msvc@1.0.4': optional: true - '@napi-rs/nice@1.0.1': + '@napi-rs/nice@1.0.4': optionalDependencies: - '@napi-rs/nice-android-arm-eabi': 1.0.1 - '@napi-rs/nice-android-arm64': 1.0.1 - '@napi-rs/nice-darwin-arm64': 1.0.1 - '@napi-rs/nice-darwin-x64': 1.0.1 - '@napi-rs/nice-freebsd-x64': 1.0.1 - '@napi-rs/nice-linux-arm-gnueabihf': 1.0.1 - '@napi-rs/nice-linux-arm64-gnu': 1.0.1 - '@napi-rs/nice-linux-arm64-musl': 1.0.1 - '@napi-rs/nice-linux-ppc64-gnu': 1.0.1 - '@napi-rs/nice-linux-riscv64-gnu': 1.0.1 - '@napi-rs/nice-linux-s390x-gnu': 1.0.1 - '@napi-rs/nice-linux-x64-gnu': 1.0.1 - '@napi-rs/nice-linux-x64-musl': 1.0.1 - '@napi-rs/nice-win32-arm64-msvc': 1.0.1 - '@napi-rs/nice-win32-ia32-msvc': 1.0.1 - '@napi-rs/nice-win32-x64-msvc': 1.0.1 + '@napi-rs/nice-android-arm-eabi': 1.0.4 + '@napi-rs/nice-android-arm64': 1.0.4 + '@napi-rs/nice-darwin-arm64': 1.0.4 + '@napi-rs/nice-darwin-x64': 1.0.4 + '@napi-rs/nice-freebsd-x64': 1.0.4 + '@napi-rs/nice-linux-arm-gnueabihf': 1.0.4 + '@napi-rs/nice-linux-arm64-gnu': 1.0.4 + '@napi-rs/nice-linux-arm64-musl': 1.0.4 + '@napi-rs/nice-linux-ppc64-gnu': 1.0.4 + '@napi-rs/nice-linux-riscv64-gnu': 1.0.4 + '@napi-rs/nice-linux-s390x-gnu': 1.0.4 + '@napi-rs/nice-linux-x64-gnu': 1.0.4 + '@napi-rs/nice-linux-x64-musl': 1.0.4 + '@napi-rs/nice-win32-arm64-msvc': 1.0.4 + '@napi-rs/nice-win32-ia32-msvc': 1.0.4 + '@napi-rs/nice-win32-x64-msvc': 1.0.4 optional: true '@napi-rs/wasm-runtime@0.2.11': @@ -6923,13 +6921,13 @@ snapshots: reflect-metadata: 0.2.2 tslib: 2.8.1 - '@nestjs-modules/mailer@2.0.2(@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))(nodemailer@7.0.3)': + '@nestjs-modules/mailer@2.0.2(@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))(nodemailer@7.0.4)': dependencies: '@css-inline/css-inline': 0.14.1 '@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) glob: 10.3.12 - nodemailer: 7.0.3 + nodemailer: 7.0.4 optionalDependencies: '@types/ejs': 3.1.5 '@types/mjml': 4.7.4 @@ -6955,12 +6953,12 @@ 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/bullmq@11.0.2(@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))(bullmq@5.54.1)': + '@nestjs/bullmq@11.0.2(@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))(bullmq@5.56.1)': dependencies: '@nestjs/bull-shared': 11.0.2(@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)) '@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) - bullmq: 5.54.1 + bullmq: 5.56.1 tslib: 2.8.1 '@nestjs/cache-manager@3.0.1(@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))(cache-manager@7.0.0)(keyv@5.3.4)(rxjs@7.8.2)': @@ -6971,18 +6969,18 @@ snapshots: keyv: 5.3.4 rxjs: 7.8.2 - '@nestjs/cli@11.0.7(@swc/cli@0.6.0(@swc/core@1.12.1)(chokidar@4.0.3))(@swc/core@1.12.1)(@types/node@22.15.32)': + '@nestjs/cli@11.0.7(@swc/cli@0.6.0(@swc/core@1.12.9)(chokidar@4.0.3))(@swc/core@1.12.9)(@types/node@22.16.0)': 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@22.15.32)(chokidar@4.0.3) - '@inquirer/prompts': 7.4.1(@types/node@22.15.32) + '@angular-devkit/schematics-cli': 19.2.8(@types/node@22.16.0)(chokidar@4.0.3) + '@inquirer/prompts': 7.4.1(@types/node@22.16.0) '@nestjs/schematics': 11.0.5(chokidar@4.0.3)(typescript@5.8.3) ansis: 3.17.0 chokidar: 4.0.3 cli-table3: 0.6.5 commander: 4.1.1 - fork-ts-checker-webpack-plugin: 9.1.0(typescript@5.8.3)(webpack@5.99.6(@swc/core@1.12.1)) + fork-ts-checker-webpack-plugin: 9.1.0(typescript@5.8.3)(webpack@5.99.6(@swc/core@1.12.9)) glob: 11.0.1 node-emoji: 1.11.0 ora: 5.4.1 @@ -6990,11 +6988,11 @@ snapshots: tsconfig-paths: 4.2.0 tsconfig-paths-webpack-plugin: 4.2.0 typescript: 5.8.3 - webpack: 5.99.6(@swc/core@1.12.1) + webpack: 5.99.6(@swc/core@1.12.9) webpack-node-externals: 3.0.0 optionalDependencies: - '@swc/cli': 0.6.0(@swc/core@1.12.1)(chokidar@4.0.3) - '@swc/core': 1.12.1 + '@swc/cli': 0.6.0(@swc/core@1.12.9)(chokidar@4.0.3) + '@swc/core': 1.12.9 transitivePeerDependencies: - '@types/node' - esbuild @@ -7171,9 +7169,9 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@swc/cli@0.6.0(@swc/core@1.12.1)(chokidar@4.0.3)': + '@swc/cli@0.6.0(@swc/core@1.12.9)(chokidar@4.0.3)': dependencies: - '@swc/core': 1.12.1 + '@swc/core': 1.12.9 '@swc/counter': 0.1.3 '@xhmikosr/bin-wrapper': 13.0.5 commander: 8.3.0 @@ -7186,51 +7184,51 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@swc/core-darwin-arm64@1.12.1': + '@swc/core-darwin-arm64@1.12.9': optional: true - '@swc/core-darwin-x64@1.12.1': + '@swc/core-darwin-x64@1.12.9': optional: true - '@swc/core-linux-arm-gnueabihf@1.12.1': + '@swc/core-linux-arm-gnueabihf@1.12.9': optional: true - '@swc/core-linux-arm64-gnu@1.12.1': + '@swc/core-linux-arm64-gnu@1.12.9': optional: true - '@swc/core-linux-arm64-musl@1.12.1': + '@swc/core-linux-arm64-musl@1.12.9': optional: true - '@swc/core-linux-x64-gnu@1.12.1': + '@swc/core-linux-x64-gnu@1.12.9': optional: true - '@swc/core-linux-x64-musl@1.12.1': + '@swc/core-linux-x64-musl@1.12.9': optional: true - '@swc/core-win32-arm64-msvc@1.12.1': + '@swc/core-win32-arm64-msvc@1.12.9': optional: true - '@swc/core-win32-ia32-msvc@1.12.1': + '@swc/core-win32-ia32-msvc@1.12.9': optional: true - '@swc/core-win32-x64-msvc@1.12.1': + '@swc/core-win32-x64-msvc@1.12.9': optional: true - '@swc/core@1.12.1': + '@swc/core@1.12.9': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.23 optionalDependencies: - '@swc/core-darwin-arm64': 1.12.1 - '@swc/core-darwin-x64': 1.12.1 - '@swc/core-linux-arm-gnueabihf': 1.12.1 - '@swc/core-linux-arm64-gnu': 1.12.1 - '@swc/core-linux-arm64-musl': 1.12.1 - '@swc/core-linux-x64-gnu': 1.12.1 - '@swc/core-linux-x64-musl': 1.12.1 - '@swc/core-win32-arm64-msvc': 1.12.1 - '@swc/core-win32-ia32-msvc': 1.12.1 - '@swc/core-win32-x64-msvc': 1.12.1 + '@swc/core-darwin-arm64': 1.12.9 + '@swc/core-darwin-x64': 1.12.9 + '@swc/core-linux-arm-gnueabihf': 1.12.9 + '@swc/core-linux-arm64-gnu': 1.12.9 + '@swc/core-linux-arm64-musl': 1.12.9 + '@swc/core-linux-x64-gnu': 1.12.9 + '@swc/core-linux-x64-musl': 1.12.9 + '@swc/core-win32-arm64-msvc': 1.12.9 + '@swc/core-win32-ia32-msvc': 1.12.9 + '@swc/core-win32-x64-msvc': 1.12.9 '@swc/counter@0.1.3': {} @@ -7246,7 +7244,7 @@ snapshots: dependencies: debug: 4.4.1 fflate: 0.8.2 - token-types: 6.0.0 + token-types: 6.0.3 transitivePeerDependencies: - supports-color @@ -7267,41 +7265,41 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.7 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.28.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 '@types/babel__traverse@7.20.7': dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.28.0 '@types/bcrypt@5.0.2': dependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@types/connect@3.4.38': dependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@types/conventional-commits-parser@5.0.1': dependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@types/cookiejar@2.1.5': {} @@ -7322,7 +7320,7 @@ snapshots: '@types/express-serve-static-core@5.0.6': dependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.5 @@ -7335,7 +7333,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@types/http-cache-semantics@4.0.4': {} @@ -7363,11 +7361,11 @@ snapshots: '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@types/jsonwebtoken@9.0.7': dependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@types/methods@1.1.4': {} @@ -7383,13 +7381,13 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@22.15.32': + '@types/node@22.16.0': dependencies: undici-types: 6.21.0 '@types/nodemailer@6.4.17': dependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@types/passport-jwt@4.0.1': dependencies: @@ -7415,12 +7413,12 @@ snapshots: '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@types/serve-static@1.15.8': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 22.15.32 + '@types/node': 22.16.0 '@types/send': 0.17.5 '@types/stack-utils@2.0.3': {} @@ -7429,7 +7427,7 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 22.15.32 + '@types/node': 22.16.0 form-data: 4.0.3 '@types/supertest@6.0.3': @@ -7445,15 +7443,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.34.1 - '@typescript-eslint/type-utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.34.1 - eslint: 9.29.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.35.1 + '@typescript-eslint/type-utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.35.1 + eslint: 9.30.1(jiti@2.4.2) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -7462,55 +7460,55 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.34.1 - '@typescript-eslint/types': 8.34.1 - '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.34.1 + '@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.29.0(jiti@2.4.2) + eslint: 9.30.1(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.34.1(typescript@5.8.3)': + '@typescript-eslint/project-service@8.35.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.3) - '@typescript-eslint/types': 8.34.1 + '@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.34.1': + '@typescript-eslint/scope-manager@8.35.1': dependencies: - '@typescript-eslint/types': 8.34.1 - '@typescript-eslint/visitor-keys': 8.34.1 + '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/visitor-keys': 8.35.1 - '@typescript-eslint/tsconfig-utils@8.34.1(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.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) debug: 4.4.1 - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.30.1(jiti@2.4.2) ts-api-utils: 2.1.0(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.34.1': {} + '@typescript-eslint/types@8.35.1': {} - '@typescript-eslint/typescript-estree@8.34.1(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.35.1(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.34.1(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.34.1(typescript@5.8.3) - '@typescript-eslint/types': 8.34.1 - '@typescript-eslint/visitor-keys': 8.34.1 + '@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 @@ -7521,79 +7519,79 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.34.1 - '@typescript-eslint/types': 8.34.1 - '@typescript-eslint/typescript-estree': 8.34.1(typescript@5.8.3) - eslint: 9.29.0(jiti@2.4.2) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2)) + '@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.1(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.34.1': + '@typescript-eslint/visitor-keys@8.35.1': dependencies: - '@typescript-eslint/types': 8.34.1 + '@typescript-eslint/types': 8.35.1 eslint-visitor-keys: 4.2.1 - '@unrs/resolver-binding-android-arm-eabi@1.9.0': + '@unrs/resolver-binding-android-arm-eabi@1.10.1': optional: true - '@unrs/resolver-binding-android-arm64@1.9.0': + '@unrs/resolver-binding-android-arm64@1.10.1': optional: true - '@unrs/resolver-binding-darwin-arm64@1.9.0': + '@unrs/resolver-binding-darwin-arm64@1.10.1': optional: true - '@unrs/resolver-binding-darwin-x64@1.9.0': + '@unrs/resolver-binding-darwin-x64@1.10.1': optional: true - '@unrs/resolver-binding-freebsd-x64@1.9.0': + '@unrs/resolver-binding-freebsd-x64@1.10.1': optional: true - '@unrs/resolver-binding-linux-arm-gnueabihf@1.9.0': + '@unrs/resolver-binding-linux-arm-gnueabihf@1.10.1': optional: true - '@unrs/resolver-binding-linux-arm-musleabihf@1.9.0': + '@unrs/resolver-binding-linux-arm-musleabihf@1.10.1': optional: true - '@unrs/resolver-binding-linux-arm64-gnu@1.9.0': + '@unrs/resolver-binding-linux-arm64-gnu@1.10.1': optional: true - '@unrs/resolver-binding-linux-arm64-musl@1.9.0': + '@unrs/resolver-binding-linux-arm64-musl@1.10.1': optional: true - '@unrs/resolver-binding-linux-ppc64-gnu@1.9.0': + '@unrs/resolver-binding-linux-ppc64-gnu@1.10.1': optional: true - '@unrs/resolver-binding-linux-riscv64-gnu@1.9.0': + '@unrs/resolver-binding-linux-riscv64-gnu@1.10.1': optional: true - '@unrs/resolver-binding-linux-riscv64-musl@1.9.0': + '@unrs/resolver-binding-linux-riscv64-musl@1.10.1': optional: true - '@unrs/resolver-binding-linux-s390x-gnu@1.9.0': + '@unrs/resolver-binding-linux-s390x-gnu@1.10.1': optional: true - '@unrs/resolver-binding-linux-x64-gnu@1.9.0': + '@unrs/resolver-binding-linux-x64-gnu@1.10.1': optional: true - '@unrs/resolver-binding-linux-x64-musl@1.9.0': + '@unrs/resolver-binding-linux-x64-musl@1.10.1': optional: true - '@unrs/resolver-binding-wasm32-wasi@1.9.0': + '@unrs/resolver-binding-wasm32-wasi@1.10.1': dependencies: '@napi-rs/wasm-runtime': 0.2.11 optional: true - '@unrs/resolver-binding-win32-arm64-msvc@1.9.0': + '@unrs/resolver-binding-win32-arm64-msvc@1.10.1': optional: true - '@unrs/resolver-binding-win32-ia32-msvc@1.9.0': + '@unrs/resolver-binding-win32-ia32-msvc@1.10.1': optional: true - '@unrs/resolver-binding-win32-x64-msvc@1.9.0': + '@unrs/resolver-binding-win32-x64-msvc@1.10.1': optional: true '@webassemblyjs/ast@1.14.1': @@ -7948,13 +7946,13 @@ snapshots: b4a@1.6.7: {} - babel-jest@29.7.0(@babel/core@7.27.4): + babel-jest@29.7.0(@babel/core@7.28.0): dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.27.4) + babel-preset-jest: 29.6.3(@babel/core@7.28.0) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -7974,38 +7972,38 @@ snapshots: babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.27.6 + '@babel/types': 7.28.0 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.7 - babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.4): + babel-preset-current-node-syntax@1.1.0(@babel/core@7.28.0): dependencies: - '@babel/core': 7.27.4 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.4) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.4) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.4) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.4) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.4) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.4) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.4) + '@babel/core': 7.28.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.0) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.0) - babel-preset-jest@29.6.3(@babel/core@7.27.4): + babel-preset-jest@29.6.3(@babel/core@7.28.0): dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.4) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) babel-walk@3.0.0-canary-5: dependencies: - '@babel/types': 7.27.6 + '@babel/types': 7.28.0 optional: true balanced-match@1.0.2: {} @@ -8059,12 +8057,12 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.25.0: + browserslist@4.25.1: dependencies: - caniuse-lite: 1.0.30001723 - electron-to-chromium: 1.5.169 + caniuse-lite: 1.0.30001726 + electron-to-chromium: 1.5.179 node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.0) + update-browserslist-db: 1.1.3(browserslist@4.25.1) bs-logger@0.2.6: dependencies: @@ -8090,7 +8088,7 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - bullmq@5.54.1: + bullmq@5.56.1: dependencies: cron-parser: 4.9.0 ioredis: 5.6.1 @@ -8147,7 +8145,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001723: {} + caniuse-lite@1.0.30001726: {} chalk@3.0.0: dependencies: @@ -8174,8 +8172,8 @@ snapshots: cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 + css-select: 5.2.2 + css-what: 6.2.2 domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.2.2 @@ -8331,8 +8329,8 @@ snapshots: constantinople@4.0.1: dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 optional: true content-disposition@0.5.4: @@ -8362,9 +8360,9 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig-typescript-loader@6.1.0(@types/node@22.15.32)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3): + cosmiconfig-typescript-loader@6.1.0(@types/node@22.16.0)(cosmiconfig@9.0.0(typescript@5.8.3))(typescript@5.8.3): dependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 cosmiconfig: 9.0.0(typescript@5.8.3) jiti: 2.4.2 typescript: 5.8.3 @@ -8387,13 +8385,13 @@ snapshots: optionalDependencies: typescript: 5.8.3 - create-jest@29.7.0(@types/node@22.15.32)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)): + create-jest@29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.15.32)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -8423,16 +8421,16 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-select@5.1.0: + css-select@5.2.2: dependencies: boolbase: 1.0.0 - css-what: 6.1.0 + css-what: 6.2.2 domhandler: 5.0.3 domutils: 3.2.2 nth-check: 2.1.1 optional: true - css-what@6.1.0: + css-what@6.2.2: optional: true dargs@8.1.0: {} @@ -8604,12 +8602,14 @@ snapshots: dotenv-expand@12.0.1: dependencies: - dotenv: 16.5.0 + dotenv: 16.6.1 dotenv@16.4.7: {} dotenv@16.5.0: {} + dotenv@16.6.1: {} + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -8636,7 +8636,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.169: {} + electron-to-chromium@1.5.179: {} emittery@0.13.1: {} @@ -8649,7 +8649,7 @@ snapshots: encoding-japanese@2.2.0: optional: true - enhanced-resolve@5.18.1: + enhanced-resolve@5.18.2: dependencies: graceful-fs: 4.2.11 tapable: 2.2.2 @@ -8769,9 +8769,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.5(eslint@9.29.0(jiti@2.4.2)): + eslint-config-prettier@10.1.5(eslint@9.30.1(jiti@2.4.2)): dependencies: - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.30.1(jiti@2.4.2) eslint-import-resolver-node@0.3.9: dependencies: @@ -8781,33 +8781,33 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.31.0)(eslint@9.29.0(jiti@2.4.2)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.30.1(jiti@2.4.2)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.1 - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.30.1(jiti@2.4.2) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.14 - unrs-resolver: 1.9.0 + unrs-resolver: 1.10.1 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.29.0(jiti@2.4.2)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.29.0(jiti@2.4.2)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.29.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.30.1(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.31.0)(eslint@9.29.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.30.1(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.29.0(jiti@2.4.2)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -8816,9 +8816,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.29.0(jiti@2.4.2) + eslint: 9.30.1(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.29.0(jiti@2.4.2)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -8830,21 +8830,21 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-prettier@5.5.0(@types/eslint@9.6.1)(eslint-config-prettier@10.1.5(eslint@9.29.0(jiti@2.4.2)))(eslint@9.29.0(jiti@2.4.2))(prettier@3.5.3): + eslint-plugin-prettier@5.5.1(@types/eslint@9.6.1)(eslint-config-prettier@10.1.5(eslint@9.30.1(jiti@2.4.2)))(eslint@9.30.1(jiti@2.4.2))(prettier@3.6.2): dependencies: - eslint: 9.29.0(jiti@2.4.2) - prettier: 3.5.3 + eslint: 9.30.1(jiti@2.4.2) + prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.8 optionalDependencies: '@types/eslint': 9.6.1 - eslint-config-prettier: 10.1.5(eslint@9.29.0(jiti@2.4.2)) + eslint-config-prettier: 10.1.5(eslint@9.30.1(jiti@2.4.2)) eslint-scope@5.1.1: dependencies: @@ -8860,16 +8860,16 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.29.0(jiti@2.4.2): + eslint@9.30.1(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.29.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.20.1 - '@eslint/config-helpers': 0.2.3 + '@eslint/config-array': 0.21.0 + '@eslint/config-helpers': 0.3.0 '@eslint/core': 0.14.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.29.0 - '@eslint/plugin-kit': 0.3.2 + '@eslint/js': 9.30.1 + '@eslint/plugin-kit': 0.3.3 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -9115,14 +9115,14 @@ snapshots: dependencies: get-stream: 9.0.1 strtok3: 9.1.1 - token-types: 6.0.0 + token-types: 6.0.3 uint8array-extras: 1.4.0 file-type@21.0.0: dependencies: '@tokenizer/inflate': 0.2.7 strtok3: 10.3.1 - token-types: 6.0.0 + token-types: 6.0.3 uint8array-extras: 1.4.0 transitivePeerDependencies: - supports-color @@ -9195,7 +9195,7 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@9.1.0(typescript@5.8.3)(webpack@5.99.6(@swc/core@1.12.1)): + fork-ts-checker-webpack-plugin@9.1.0(typescript@5.8.3)(webpack@5.99.6(@swc/core@1.12.9)): dependencies: '@babel/code-frame': 7.27.1 chalk: 4.1.2 @@ -9210,7 +9210,7 @@ snapshots: semver: 7.7.2 tapable: 2.2.2 typescript: 5.8.3 - webpack: 5.99.6(@swc/core@1.12.1) + webpack: 5.99.6(@swc/core@1.12.9) form-data-encoder@2.1.4: {} @@ -9396,11 +9396,9 @@ snapshots: dependencies: ini: 4.1.1 - globals@11.12.0: {} - globals@14.0.0: {} - globals@16.2.0: {} + globals@16.3.0: {} globalthis@1.0.4: dependencies: @@ -9792,8 +9790,8 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.27.4 - '@babel/parser': 7.27.5 + '@babel/core': 7.28.0 + '@babel/parser': 7.28.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -9802,8 +9800,8 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.27.4 - '@babel/parser': 7.27.5 + '@babel/core': 7.28.0 + '@babel/parser': 7.28.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.7.2 @@ -9867,7 +9865,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.32 + '@types/node': 22.16.0 chalk: 4.1.2 co: 4.6.0 dedent: 1.6.0 @@ -9887,16 +9885,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.15.32)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)): + jest-cli@29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.32)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)) + create-jest: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.15.32)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -9906,12 +9904,12 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.15.32)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)): + jest-config@29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)): dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.27.4) + babel-jest: 29.7.0(@babel/core@7.28.0) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -9931,8 +9929,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.15.32 - ts-node: 10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3) + '@types/node': 22.16.0 + ts-node: 10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -9961,7 +9959,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.32 + '@types/node': 22.16.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -9971,7 +9969,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.15.32 + '@types/node': 22.16.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -10010,7 +10008,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.32 + '@types/node': 22.16.0 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -10045,7 +10043,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.32 + '@types/node': 22.16.0 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -10073,7 +10071,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.32 + '@types/node': 22.16.0 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -10093,15 +10091,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.27.4 - '@babel/generator': 7.27.5 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) - '@babel/types': 7.27.6 + '@babel/core': 7.28.0 + '@babel/generator': 7.28.0 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) + '@babel/types': 7.28.0 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.4) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.28.0) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -10119,7 +10117,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.32 + '@types/node': 22.16.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -10138,7 +10136,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.32 + '@types/node': 22.16.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -10147,23 +10145,23 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 22.15.32 + '@types/node': 22.16.0 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.15.32)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)): + jest@29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.15.32)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)) + jest-cli: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -10317,7 +10315,7 @@ snapshots: libbase64@1.3.0: optional: true - libmime@5.3.6: + libmime@5.3.7: dependencies: encoding-japanese: 2.2.0 iconv-lite: 0.6.3 @@ -10458,26 +10456,26 @@ snapshots: magic-string@0.30.17: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.4 - mailparser@3.7.3: + mailparser@3.7.4: dependencies: encoding-japanese: 2.2.0 he: 1.2.0 html-to-text: 9.0.5 iconv-lite: 0.6.3 - libmime: 5.3.6 + libmime: 5.3.7 linkify-it: 5.0.0 - mailsplit: 5.4.3 - nodemailer: 7.0.3 + mailsplit: 5.4.5 + nodemailer: 7.0.4 punycode.js: 2.3.1 tlds: 1.259.0 optional: true - mailsplit@5.4.3: + mailsplit@5.4.5: dependencies: libbase64: 1.3.0 - libmime: 5.3.6 + libmime: 5.3.7 libqp: 2.1.1 optional: true @@ -10932,7 +10930,7 @@ snapshots: mute-stream@2.0.0: {} - napi-postinstall@0.2.4: {} + napi-postinstall@0.3.0: {} natural-compare@1.4.0: {} @@ -10970,7 +10968,7 @@ snapshots: nodemailer@6.10.1: optional: true - nodemailer@7.0.3: {} + nodemailer@7.0.4: {} nopt@5.0.0: dependencies: @@ -11236,20 +11234,20 @@ snapshots: pend@1.2.0: {} - pg-cloudflare@1.2.5: + pg-cloudflare@1.2.7: optional: true pg-connection-string@2.6.2: {} - pg-connection-string@2.9.0: {} + pg-connection-string@2.9.1: {} pg-int8@1.0.1: {} - pg-pool@3.10.0(pg@8.16.0): + pg-pool@3.10.1(pg@8.16.0): dependencies: pg: 8.16.0 - pg-protocol@1.10.0: {} + pg-protocol@1.10.3: {} pg-types@2.2.0: dependencies: @@ -11261,13 +11259,13 @@ snapshots: pg@8.16.0: dependencies: - pg-connection-string: 2.9.0 - pg-pool: 3.10.0(pg@8.16.0) - pg-protocol: 1.10.0 + pg-connection-string: 2.9.1 + pg-pool: 3.10.1(pg@8.16.0) + pg-protocol: 1.10.3 pg-types: 2.2.0 pgpass: 1.0.5 optionalDependencies: - pg-cloudflare: 1.2.5 + pg-cloudflare: 1.2.7 pgpass@1.0.5: dependencies: @@ -11305,7 +11303,7 @@ snapshots: piscina@4.9.2: optionalDependencies: - '@napi-rs/nice': 1.0.1 + '@napi-rs/nice': 1.0.4 pkg-dir@4.2.0: dependencies: @@ -11337,7 +11335,7 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@3.5.3: {} + prettier@3.6.2: {} pretty-format@29.7.0: dependencies: @@ -11351,7 +11349,7 @@ snapshots: display-notification: 2.0.0 fixpack: 4.0.0 get-port: 5.1.1 - mailparser: 3.7.3 + mailparser: 3.7.4 nodemailer: 6.10.1 open: 7.4.2 p-event: 4.2.0 @@ -11973,20 +11971,20 @@ snapshots: tarn@3.0.2: {} - terser-webpack-plugin@5.3.14(@swc/core@1.12.1)(webpack@5.99.6(@swc/core@1.12.1)): + terser-webpack-plugin@5.3.14(@swc/core@1.12.9)(webpack@5.99.6(@swc/core@1.12.9)): dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.29 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - terser: 5.42.0 - webpack: 5.99.6(@swc/core@1.12.1) + terser: 5.43.1 + webpack: 5.99.6(@swc/core@1.12.9) optionalDependencies: - '@swc/core': 1.12.1 + '@swc/core': 1.12.9 - terser@5.42.0: + terser@5.43.1: dependencies: - '@jridgewell/source-map': 0.3.6 + '@jridgewell/source-map': 0.3.10 acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -12040,7 +12038,7 @@ snapshots: token-stream@1.0.0: optional: true - token-types@6.0.0: + token-types@6.0.3: dependencies: '@tokenizer/token': 0.3.0 ieee754: 1.2.1 @@ -12053,12 +12051,12 @@ snapshots: dependencies: typescript: 5.8.3 - ts-jest@29.4.0(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.15.32)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)))(typescript@5.8.3): + ts-jest@29.4.0(@babel/core@7.28.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.28.0))(jest-util@29.7.0)(jest@29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(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: 29.7.0(@types/node@22.15.32)(ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3)) + jest: 29.7.0(@types/node@22.16.0)(ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(typescript@5.8.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -12067,30 +12065,30 @@ snapshots: typescript: 5.8.3 yargs-parser: 21.1.1 optionalDependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.27.4) + babel-jest: 29.7.0(@babel/core@7.28.0) jest-util: 29.7.0 - ts-loader@9.5.2(typescript@5.8.3)(webpack@5.99.6(@swc/core@1.12.1)): + ts-loader@9.5.2(typescript@5.8.3)(webpack@5.99.6(@swc/core@1.12.9)): dependencies: chalk: 4.1.2 - enhanced-resolve: 5.18.1 + enhanced-resolve: 5.18.2 micromatch: 4.0.8 semver: 7.7.2 source-map: 0.7.4 typescript: 5.8.3 - webpack: 5.99.6(@swc/core@1.12.1) + webpack: 5.99.6(@swc/core@1.12.9) - ts-node@10.9.2(@swc/core@1.12.1)(@types/node@22.15.32)(typescript@5.8.3): + ts-node@10.9.2(@swc/core@1.12.9)(@types/node@22.16.0)(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': 22.15.32 + '@types/node': 22.16.0 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -12101,12 +12099,12 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.12.1 + '@swc/core': 1.12.9 tsconfig-paths-webpack-plugin@4.2.0: dependencies: chalk: 4.1.2 - enhanced-resolve: 5.18.1 + enhanced-resolve: 5.18.2 tapable: 2.2.2 tsconfig-paths: 4.2.0 @@ -12175,12 +12173,12 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3): + typescript-eslint@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.34.1(@typescript-eslint/parser@8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.34.1(eslint@9.29.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.29.0(jiti@2.4.2) + '@typescript-eslint/eslint-plugin': 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3))(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.30.1(jiti@2.4.2) typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -12217,33 +12215,33 @@ snapshots: universalify@2.0.1: {} - unrs-resolver@1.9.0: + unrs-resolver@1.10.1: dependencies: - napi-postinstall: 0.2.4 + napi-postinstall: 0.3.0 optionalDependencies: - '@unrs/resolver-binding-android-arm-eabi': 1.9.0 - '@unrs/resolver-binding-android-arm64': 1.9.0 - '@unrs/resolver-binding-darwin-arm64': 1.9.0 - '@unrs/resolver-binding-darwin-x64': 1.9.0 - '@unrs/resolver-binding-freebsd-x64': 1.9.0 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.9.0 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.9.0 - '@unrs/resolver-binding-linux-arm64-gnu': 1.9.0 - '@unrs/resolver-binding-linux-arm64-musl': 1.9.0 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.9.0 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.9.0 - '@unrs/resolver-binding-linux-riscv64-musl': 1.9.0 - '@unrs/resolver-binding-linux-s390x-gnu': 1.9.0 - '@unrs/resolver-binding-linux-x64-gnu': 1.9.0 - '@unrs/resolver-binding-linux-x64-musl': 1.9.0 - '@unrs/resolver-binding-wasm32-wasi': 1.9.0 - '@unrs/resolver-binding-win32-arm64-msvc': 1.9.0 - '@unrs/resolver-binding-win32-ia32-msvc': 1.9.0 - '@unrs/resolver-binding-win32-x64-msvc': 1.9.0 + '@unrs/resolver-binding-android-arm-eabi': 1.10.1 + '@unrs/resolver-binding-android-arm64': 1.10.1 + '@unrs/resolver-binding-darwin-arm64': 1.10.1 + '@unrs/resolver-binding-darwin-x64': 1.10.1 + '@unrs/resolver-binding-freebsd-x64': 1.10.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.10.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.10.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.10.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.10.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.10.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.10.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.10.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.10.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.10.1 + '@unrs/resolver-binding-linux-x64-musl': 1.10.1 + '@unrs/resolver-binding-wasm32-wasi': 1.10.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.10.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.10.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.10.1 - update-browserslist-db@1.1.3(browserslist@4.25.0): + update-browserslist-db@1.1.3(browserslist@4.25.1): dependencies: - browserslist: 4.25.0 + browserslist: 4.25.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -12266,7 +12264,7 @@ snapshots: v8-to-istanbul@9.3.0: dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.29 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 @@ -12307,9 +12305,9 @@ snapshots: webpack-node-externals@3.0.0: {} - webpack-sources@3.3.2: {} + webpack-sources@3.3.3: {} - webpack@5.99.6(@swc/core@1.12.1): + webpack@5.99.6(@swc/core@1.12.9): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -12317,9 +12315,9 @@ snapshots: '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 - browserslist: 4.25.0 + browserslist: 4.25.1 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.1 + enhanced-resolve: 5.18.2 es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -12331,9 +12329,9 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(@swc/core@1.12.1)(webpack@5.99.6(@swc/core@1.12.1)) + terser-webpack-plugin: 5.3.14(@swc/core@1.12.9)(webpack@5.99.6(@swc/core@1.12.9)) watchpack: 2.4.4 - webpack-sources: 3.3.2 + webpack-sources: 3.3.3 transitivePeerDependencies: - '@swc/core' - esbuild @@ -12400,8 +12398,8 @@ snapshots: with@7.0.2: dependencies: - '@babel/parser': 7.27.5 - '@babel/types': 7.27.6 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.0 assert-never: 1.4.0 babel-walk: 3.0.0-canary-5 optional: true diff --git a/src/common/enums/message.enum.ts b/src/common/enums/message.enum.ts index 93d02a4..39d338b 100755 --- a/src/common/enums/message.enum.ts +++ b/src/common/enums/message.enum.ts @@ -75,6 +75,30 @@ export const enum UserMessage { FAILED_TO_DELETE_EMAIL_USER = "خطا در حذف ایمیل", EMAIL_USER_QUOTA_UPDATED_SUCCESSFULLY = "ایمیل با موفقیت به روز رسانی شد", FAILED_TO_UPDATE_EMAIL_USER_QUOTA = "خطا در به روز رسانی حجم ایمیل", + USERNAME_REQUIRED = "نام کاربری الزامی است", + USERNAME_STRING = "نام کاربری باید یک رشته باشد", + USERNAME_MIN_LENGTH = "نام کاربری باید حداقل ۲ کاراکتر باشد", + USERNAME_MATCHES = "نام کاربری فقط میتواند شامل حروف، اعداد، نقطه، خط زیر و خط فاصله باشد", + PASSWORD_MATCHES = "رمز عبور باید حداقل ۸ کاراکتر باشد و شامل حروف بزرگ، حروف کوچک، اعداد و علائم خاص باشد", + PASSWORD_STRING = "رمز عبور باید یک رشته باشد", + PASSWORD_REQUIRED = "رمز عبور الزامی است", + PASSWORD_MIN_LENGTH = "رمز عبور باید حداقل ۸ کاراکتر باشد", + DOMAIN_ID_STRING = "شناسه دامنه باید یک رشته باشد", + DOMAIN_ID_REQUIRED = "شناسه دامنه الزامی است", + DOMAIN_ID_UUID = "شناسه دامنه باید یک یو یو آی دی باشد", + DISPLAY_NAME_STRING = "نام نمایشی باید یک رشته باشد", + DISPLAY_NAME_OPTIONAL = "نام نمایشی اختیاری است", + QUOTA_NUMBER = "حجم ایمیل باید یک عدد باشد", + QUOTA_OPTIONAL = "حجم ایمیل اختیاری است", + QUOTA_NOT_EMPTY = "حجم ایمیل نمیتواند خالی باشد", + ALIASES_ARRAY = "الیاس ها باید یک آرایه باشد", + ALIASES_STRING = "الیاس ها باید یک رشته باشد", + ALIASES_OPTIONAL = "الیاس ها اختیاری است", + TITLE_STRING = "عنوان باید یک رشته باشد", + TITLE_OPTIONAL = "عنوان اختیاری است", + TITLE_NOT_EMPTY = "عنوان نمیتواند خالی باشد", + EMAIL_USER_CREATED_SUCCESSFULLY = "ایمیل با موفقیت ایجاد شد", + STATUS_UPDATED = "وضعیت کاربر با موفقیت تغییر کرد", } export const enum CommonMessage { @@ -220,3 +244,7 @@ export const enum DnsRecordMessage { DNS_RECORD_NOT_FOUND = "رکورد DNS یافت نشد", DNS_RECORD_DELETED = "رکورد DNS با موفقیت حذف شد", } + +export const enum RoleMessage { + NOT_FOUND = "نقش یافت نشد", +} diff --git a/src/main.ts b/src/main.ts index d899ce2..7791d3b 100644 --- a/src/main.ts +++ b/src/main.ts @@ -23,10 +23,6 @@ async function bootstrap() { done(null); }); - fastifyAdapter.getInstance().addContentTypeParser("text/plain", (_request, _payload, done) => { - done(null); - }); - const app = await NestFactory.create(AppModule, fastifyAdapter); app.useGlobalPipes(new ValidationPipe({ transform: true, whitelist: true, forbidNonWhitelisted: true })); diff --git a/src/modules/domains/domains.controller.ts b/src/modules/domains/domains.controller.ts index a141538..0dbd1df 100644 --- a/src/modules/domains/domains.controller.ts +++ b/src/modules/domains/domains.controller.ts @@ -34,15 +34,15 @@ export class DomainsController { @Patch(":id") @ApiOperation({ summary: "Update domain" }) @ApiResponse({ status: 200, description: "Domain updated successfully" }) - updateDomain(@Param() paramDto: ParamDto, @Body() updateDomainDto: UpdateDomainDto) { - return this.domainsService.updateDomain(paramDto.id, updateDomainDto); + updateDomain(@Param() paramDto: ParamDto, @Body() updateDomainDto: UpdateDomainDto, @BusinessDec("id") businessId: string) { + return this.domainsService.updateDomain(paramDto.id, updateDomainDto, businessId); } @Delete(":id") @ApiOperation({ summary: "Delete domain" }) @ApiResponse({ status: 200, description: "Domain deleted successfully" }) - deleteDomain(@Param() paramDto: ParamDto) { - return this.domainsService.deleteDomain(paramDto.id); + deleteDomain(@Param() paramDto: ParamDto, @BusinessDec("id") businessId: string) { + return this.domainsService.deleteDomain(paramDto.id, businessId); } @Get("setup") diff --git a/src/modules/domains/services/domains.service.ts b/src/modules/domains/services/domains.service.ts index 4ead5ea..4c7b9ae 100644 --- a/src/modules/domains/services/domains.service.ts +++ b/src/modules/domains/services/domains.service.ts @@ -74,8 +74,11 @@ export class DomainsService { /** * Get domain by ID */ - async getDomainById(id: string): Promise { - const domain = await this.domainRepository.findOne({ id, deletedAt: null }, { populate: ["business", "dnsRecords"] }); + async getDomainById(id: string, businessId: string): Promise { + const domain = await this.domainRepository.findOne( + { id, deletedAt: null, business: { id: businessId } }, + { populate: ["business", "dnsRecords"] }, + ); if (!domain) throw new NotFoundException(DomainMessage.DOMAIN_NOT_FOUND); @@ -93,8 +96,8 @@ export class DomainsService { /** * Update domain */ - async updateDomain(id: string, updateDomainDto: UpdateDomainDto) { - const domain = await this.getDomainById(id); + async updateDomain(id: string, updateDomainDto: UpdateDomainDto, businessId: string) { + const domain = await this.getDomainById(id, businessId); this.em.assign(domain, updateDomainDto); @@ -107,8 +110,8 @@ export class DomainsService { /** * Delete domain */ - async deleteDomain(id: string) { - const domain = await this.getDomainById(id); + async deleteDomain(id: string, businessId: string) { + const domain = await this.getDomainById(id, businessId); // Soft delete domain.deletedAt = new Date(); @@ -122,8 +125,8 @@ export class DomainsService { /** * Verify domain ownership */ - async verifyDomain(id: string) { - const domain = await this.getDomainById(id); + async verifyDomain(id: string, businessId: string) { + const domain = await this.getDomainById(id, businessId); // Check DNS records for verification const isVerified = await this.dnsService.verifyDomainDNS(domain); @@ -208,7 +211,7 @@ export class DomainsService { const businessDomain = await this.domainRepository.findOne({ business: { id: businessId }, deletedAt: null }); if (!businessDomain) throw new NotFoundException(DomainMessage.DOMAIN_NOT_FOUND); - const domain = await this.getDomainById(businessDomain.id); + const domain = await this.getDomainById(businessDomain.id, businessId); const { dnsRecords } = await this.dnsService.getDomainDnsRecords(businessDomain.id); @@ -222,7 +225,7 @@ export class DomainsService { const businessDomain = await this.domainRepository.findOne({ business: { id: businessId }, deletedAt: null }); if (!businessDomain) throw new BadRequestException(DomainMessage.DOMAIN_NOT_FOUND); - const domain = await this.getDomainById(businessDomain.id); + const domain = await this.getDomainById(businessDomain.id, businessId); const { overallStatus, recommendations } = await this.checkDomainVerificationStatus(businessId); @@ -241,10 +244,10 @@ export class DomainsService { const businessDomain = await this.domainRepository.findOne({ business: { id: businessId }, deletedAt: null }); if (!businessDomain) throw new BadRequestException(DomainMessage.DOMAIN_NOT_FOUND); - const domain = await this.getDomainById(businessDomain.id); + const domain = await this.getDomainById(businessDomain.id, businessId); // Trigger DNS verification - await this.verifyDomain(domain.id); + await this.verifyDomain(domain.id, businessId); const { dnsRecords } = await this.dnsService.getDomainDnsRecords(domain.id); diff --git a/src/modules/mail-server/DTO/create-user.dto.ts b/src/modules/mail-server/DTO/create-user.dto.ts index 600db21..9c12436 100644 --- a/src/modules/mail-server/DTO/create-user.dto.ts +++ b/src/modules/mail-server/DTO/create-user.dto.ts @@ -1,96 +1,326 @@ import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; -import { IsArray, IsBoolean, IsEmail, IsNumber, IsOptional, IsString, IsUrl } from "class-validator"; +import { Type } from "class-transformer"; +import { IsArray, IsBoolean, IsEmail, IsNotEmpty, IsNumber, IsObject, IsOptional, IsString, ValidateNested } from "class-validator"; + +class MailboxesDto { + @ApiPropertyOptional({ description: "Sent messages mailbox", example: "string" }) + @IsOptional() + @IsString() + sent?: string; + + @ApiPropertyOptional({ description: "Trash mailbox", example: "string" }) + @IsOptional() + @IsString() + trash?: string; + + @ApiPropertyOptional({ description: "Junk/Spam mailbox", example: "string" }) + @IsOptional() + @IsString() + junk?: string; + + @ApiPropertyOptional({ description: "Drafts mailbox", example: "string" }) + @IsOptional() + @IsString() + drafts?: string; +} + +class FeatureFlagsDto { + @ApiPropertyOptional({ description: "Enable indexing feature", example: false }) + @IsOptional() + @IsBoolean() + indexing?: boolean; +} export class CreateUserDto { - @ApiProperty({ description: "Username for the user (letters and numbers only)", example: "testuser" }) + @IsNotEmpty() @IsString() + @ApiProperty({ description: "This is not an email address but authentication username, use only letters and numbers", example: "testuser" }) username: string; - @ApiProperty({ description: "Password for the user", example: "secretpassword123" }) + @IsNotEmpty() @IsString() + @ApiProperty({ description: "Password for the user. You can use false to create an account without a password", example: "secretpass" }) password: string; - @ApiPropertyOptional({ description: "Main email address for the user", example: "testuser@example.com" }) + @ApiPropertyOptional({ + description: "Bcrypt hash for password. If provided, plain text password is ignored", + example: false, + }) + @IsOptional() + hashedPassword?: string | boolean; + + @ApiPropertyOptional({ + description: "Allow weak passwords", + default: true, + }) + @IsOptional() + @IsBoolean() + allowUnsafe?: boolean; + + @ApiPropertyOptional({ + description: "Main email address for the user. If address is not set then a new one is generated based on the username and current domain name", + example: "testuser@example.com", + }) @IsOptional() @IsEmail() address?: string; - @ApiPropertyOptional({ description: "If true, do not set up an address for the user", default: false }) + @ApiPropertyOptional({ + description: "If true, then do not set up an address for the user", + default: false, + }) @IsOptional() @IsBoolean() emptyAddress?: boolean; - @ApiPropertyOptional({ description: "Display name for the user", example: "Test User" }) + @ApiPropertyOptional({ + description: 'Language code for the user, eg. "en" or "et". Mailbox names for the default mailboxes (eg. "Trash") depend on the language', + example: "en", + }) + @IsOptional() + @IsString() + language?: string; + + @ApiPropertyOptional({ + description: "Default retention time in ms for mailboxes. Messages in Trash and Junk folders have a capped retention time of 30 days", + example: 0, + }) + @IsOptional() + @IsNumber() + retention?: number; + + @ApiPropertyOptional({ + description: "Name for the user", + example: "Test User", + }) @IsOptional() @IsString() name?: string; @ApiPropertyOptional({ - description: "Array of email addresses to forward all messages to", - example: ["forward1@example.com", "forward2@example.com"], + description: "List of forwarding targets", + example: ["forward@example.com"], }) @IsOptional() @IsArray() - @IsEmail({}, { each: true }) - forward?: string[]; + @IsString({ each: true }) + targets?: string[]; - @ApiPropertyOptional({ description: "URL to upload all messages to", example: "https://example.com/webhook" }) + @ApiPropertyOptional({ + description: "Relay server for outbound messages", + example: "smtp://relay.example.com:587", + }) @IsOptional() - @IsUrl() - targetUrl?: string; + @IsString() + mtaRelay?: string; - @ApiPropertyOptional({ description: "Maximum storage in bytes allowed for this user", example: 1073741824 }) + @ApiPropertyOptional({ + description: "Spam level threshold (0-100)", + example: 50, + }) + @IsOptional() + @IsNumber() + spamLevel?: number; + + @ApiPropertyOptional({ + description: "Maximum storage in bytes allowed for this user. If not set then the default value is used", + example: 1073741824, + }) @IsOptional() @IsNumber() quota?: number; - @ApiPropertyOptional({ description: "Default retention time in milliseconds for mailboxes", example: 2592000000 }) - @IsOptional() - @IsNumber() - retention?: number; - - @ApiPropertyOptional({ description: "Language code for the user", example: "en" }) - @IsOptional() - @IsString() - language?: string; - - @ApiPropertyOptional({ description: "Maximum number of recipients allowed to send mail to in 24h", example: 2000 }) + @ApiPropertyOptional({ + description: "Maximum number of recipients allowed to send mail to in a 24h window. Requires ZoneMTA with the Wild Duck plugin", + example: 2000, + }) @IsOptional() @IsNumber() recipients?: number; - @ApiPropertyOptional({ description: "Maximum number of forwarded emails in 24h", example: 2000 }) + @ApiPropertyOptional({ + description: "Maximum number of forwarded emails in a 24h window. Requires ZoneMTA with the Wild Duck plugin", + example: 2000, + }) @IsOptional() @IsNumber() forwards?: number; - @ApiPropertyOptional({ description: "Array of tags to associate with the user", example: ["vip", "customer"] }) + @ApiPropertyOptional({ + description: "Maximum number of filters allowed for this user", + example: 0, + }) + @IsOptional() + @IsNumber() + filters?: number; + + @ApiPropertyOptional({ + description: "If true then requires the user to change password on next login", + default: false, + }) + @IsOptional() + @IsBoolean() + requirePasswordChange?: boolean; + + @ApiPropertyOptional({ + description: "Maximum upload size per day for IMAP", + example: 0, + }) + @IsOptional() + @IsNumber() + imapMaxUpload?: number; + + @ApiPropertyOptional({ + description: "Maximum download size per day for IMAP", + example: 0, + }) + @IsOptional() + @IsNumber() + imapMaxDownload?: number; + + @ApiPropertyOptional({ + description: "Maximum download size per day for POP3", + example: 0, + }) + @IsOptional() + @IsNumber() + pop3MaxDownload?: number; + + @ApiPropertyOptional({ + description: "Maximum number of messages to download for POP3", + example: 0, + }) + @IsOptional() + @IsNumber() + pop3MaxMessages?: number; + + @ApiPropertyOptional({ + description: "Maximum number of parallel IMAP connections allowed", + example: 0, + }) + @IsOptional() + @IsNumber() + imapMaxConnections?: number; + + @ApiPropertyOptional({ + description: "Maximum number of messages received per day", + example: 0, + }) + @IsOptional() + @IsNumber() + receivedMax?: number; + + @ApiPropertyOptional({ + description: "List of allowed From addresses", + example: ["allowed@example.com"], + }) + @IsOptional() + @IsArray() + @IsString({ each: true }) + fromWhitelist?: string[]; + + @ApiPropertyOptional({ + description: "Array of tags to be associated with that user. Tags can be used for filtering", + example: ["vip", "customer"], + }) @IsOptional() @IsArray() @IsString({ each: true }) tags?: string[]; - @ApiPropertyOptional({ description: "PGP public key for encryption" }) + @ApiPropertyOptional({ + description: "If true then autogenerated tags are added to the main address", + default: false, + }) + @IsOptional() + @IsBoolean() + addTagsToAddress?: boolean; + + @ApiPropertyOptional({ + description: "If true then sent messages are uploaded to Sent folder", + default: false, + }) + @IsOptional() + @IsBoolean() + uploadSentMessages?: boolean; + + @ApiPropertyOptional({ + description: "Mailbox configuration", + type: MailboxesDto, + }) + @IsOptional() + @ValidateNested() + @Type(() => MailboxesDto) + mailboxes?: MailboxesDto; + + @ApiPropertyOptional({ + description: "List of disabled scopes for this user", + example: ["imap"], + }) + @IsOptional() + @IsArray() + @IsString({ each: true }) + disabledScopes?: string[]; + + @ApiPropertyOptional({ + description: "Custom metadata object", + example: {}, + }) + @IsOptional() + @IsObject() + metaData?: Record; + + @ApiPropertyOptional({ + description: "Internal data object", + example: {}, + }) + @IsOptional() + @IsObject() + internalData?: Record; + + @ApiPropertyOptional({ + description: "Optional PGP public key. Wild Duck uses OpenPGP.js so keys using EC might not pass validation", + }) @IsOptional() @IsString() pubKey?: string; - @ApiPropertyOptional({ description: "Whether to encrypt stored messages", default: false }) + @ApiPropertyOptional({ + description: "Indicates if messages stored should be encrypted using the PGP key", + default: false, + }) @IsOptional() @IsBoolean() encryptMessages?: boolean; - @ApiPropertyOptional({ description: "Whether to encrypt forwarded messages", default: false }) + @ApiPropertyOptional({ + description: "Indicates if forwarded messages should be encrypted using the PGP key. Encryption applies after filter rules", + default: false, + }) @IsOptional() @IsBoolean() encryptForwarded?: boolean; - @ApiPropertyOptional({ description: "Session identifier for logging" }) + @ApiPropertyOptional({ + description: "Feature flags configuration", + type: FeatureFlagsDto, + }) + @IsOptional() + @ValidateNested() + @Type(() => FeatureFlagsDto) + featureFlags?: FeatureFlagsDto; + + @ApiPropertyOptional({ + description: "Optional string of user session to be stored in security log", + }) @IsOptional() @IsString() sess?: string; - @ApiPropertyOptional({ description: "IP address the request was made from", example: "192.168.1.1" }) + @ApiPropertyOptional({ + description: "IP address the request was made from", + example: "192.168.1.1", + }) @IsOptional() @IsString() ip?: string; diff --git a/src/modules/mail-server/services/wildduck-settings.service.ts b/src/modules/mail-server/services/wildduck-settings.service.ts index 897a15c..4af1ecc 100644 --- a/src/modules/mail-server/services/wildduck-settings.service.ts +++ b/src/modules/mail-server/services/wildduck-settings.service.ts @@ -24,7 +24,7 @@ export class WildDuckSettingsService extends WildDuckBaseService { /** * Set server setting value */ - setSetting(key: string, value: any): Observable { + setSetting(key: string, value: unknown): Observable { return this.post(`/settings/${key}`, { value }); } } diff --git a/src/modules/users/DTO/create-email-user.dto.ts b/src/modules/users/DTO/create-email-user.dto.ts index fe28cbe..effa711 100644 --- a/src/modules/users/DTO/create-email-user.dto.ts +++ b/src/modules/users/DTO/create-email-user.dto.ts @@ -1,73 +1,50 @@ import { ApiProperty, ApiPropertyOptional } from "@nestjs/swagger"; import { Transform } from "class-transformer"; -import { IsArray, IsNotEmpty, IsNumber, IsOptional, IsString, Matches, MinLength } from "class-validator"; +import { IsArray, IsNotEmpty, IsNumber, IsOptional, IsString, IsUUID, Matches, MinLength } from "class-validator"; + +import { UserMessage } from "../../../common/enums/message.enum"; export class CreateEmailUserDto { - @ApiProperty({ - description: "Username part of the email address (before @domain.com)", - example: "john.doe", - }) - @IsString() - @IsNotEmpty() - @MinLength(2) - @Matches(/^[a-zA-Z0-9._-]+$/, { - message: "Username can only contain letters, numbers, dots, underscores, and hyphens", - }) + @IsNotEmpty({ message: UserMessage.USERNAME_REQUIRED }) + @IsString({ message: UserMessage.USERNAME_STRING }) + @MinLength(2, { message: UserMessage.USERNAME_MIN_LENGTH }) + @Matches(/^[a-zA-Z0-9._-]+$/, { message: UserMessage.USERNAME_MATCHES }) + @ApiProperty({ description: "Username part of the email address (before @domain.com)", example: "john.doe" }) username: string; - @ApiProperty({ - description: "User password for email account", - example: "SecurePassword123!", - minLength: 8, - }) - @IsString() - @IsNotEmpty() - @MinLength(8) - @Matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]/, { - message: "Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character", - }) + @IsNotEmpty({ message: UserMessage.PASSWORD_REQUIRED }) + @IsString({ message: UserMessage.PASSWORD_STRING }) + @MinLength(8, { message: UserMessage.PASSWORD_MIN_LENGTH }) + @Matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]/, { message: UserMessage.PASSWORD_MATCHES }) + @ApiProperty({ description: "User password for email account", example: "SecurePassword123!", minLength: 8 }) password: string; - @ApiProperty({ - description: "Domain ID for the email address", - example: "12345678-1234-1234-1234-123456789012", - }) - @IsString() - @IsNotEmpty() + @IsNotEmpty({ message: UserMessage.DOMAIN_ID_REQUIRED }) + @IsUUID("7", { message: UserMessage.DOMAIN_ID_UUID }) + @ApiProperty({ description: "Domain ID for the email address", example: "12345678-1234-1234-1234-123456789012" }) domainId: string; - @ApiPropertyOptional({ - description: "Display name for the user", - example: "John Doe", - }) - @IsString() - @IsOptional() + @ApiPropertyOptional({ description: "Display name for the user", example: "John Doe" }) + @IsString({ message: UserMessage.DISPLAY_NAME_STRING }) + @IsOptional({ message: UserMessage.DISPLAY_NAME_OPTIONAL }) @Transform(({ value }) => value?.trim()) displayName?: string; - @ApiPropertyOptional({ - description: "Email quota in bytes (default: 1GB)", - example: 1073741824, - }) - @IsNumber() - @IsOptional() + @IsOptional({ message: UserMessage.QUOTA_OPTIONAL }) + @IsNotEmpty({ message: UserMessage.QUOTA_NOT_EMPTY }) + @IsNumber({ allowNaN: false, allowInfinity: false }, { message: UserMessage.QUOTA_NUMBER }) + @ApiPropertyOptional({ description: "Email quota in bytes (default: 1GB)", example: 1073741824 }) quota?: number; - @ApiPropertyOptional({ - description: "Additional email aliases for this user", - example: ["johndoe@example.com", "j.doe@example.com"], - }) - @IsArray() - @IsString({ each: true }) - @IsOptional() + @IsArray({ message: UserMessage.ALIASES_ARRAY }) + @IsString({ each: true, message: UserMessage.ALIASES_STRING }) + @IsOptional({ message: UserMessage.ALIASES_OPTIONAL }) + @ApiPropertyOptional({ description: "Additional email aliases for this user", example: ["johndoe@example.com", "j.doe@example.com"] }) aliases?: string[]; - @ApiPropertyOptional({ - description: "User role/title", - example: "Marketing Manager", - }) - @IsString() - @IsOptional() + @IsNotEmpty({ message: UserMessage.TITLE_NOT_EMPTY }) + @IsString({ message: UserMessage.TITLE_STRING }) @Transform(({ value }) => value?.trim()) - title?: string; + @ApiProperty({ description: "User role/title", example: "Marketing Manager" }) + title: string; } diff --git a/src/modules/users/entities/user.entity.ts b/src/modules/users/entities/user.entity.ts index d9773a8..18b7770 100644 --- a/src/modules/users/entities/user.entity.ts +++ b/src/modules/users/entities/user.entity.ts @@ -48,8 +48,8 @@ export class User extends BaseEntity { @ManyToOne(() => Business, { deleteRule: "restrict" }) business!: Business; - @ManyToOne(() => Domain, { nullable: true }) - domain?: Domain; // The domain this email user belongs to + @ManyToOne(() => Domain, { deleteRule: "restrict" }) + domain!: Domain; // The domain this email user belongs to [EntityRepositoryType]?: UserRepository; } diff --git a/src/modules/users/services/users.service.ts b/src/modules/users/services/users.service.ts index 9ec4eed..7d56286 100644 --- a/src/modules/users/services/users.service.ts +++ b/src/modules/users/services/users.service.ts @@ -10,7 +10,7 @@ import { DANAK_SMTPS_PORT, DANAK_SMTPS_SERVER, } from "../../../common/constants"; -import { BusinessMessage, DomainMessage, MailServerMessage, UserMessage } from "../../../common/enums/message.enum"; +import { BusinessMessage, DomainMessage, MailServerMessage, RoleMessage, UserMessage } from "../../../common/enums/message.enum"; import { Business } from "../../businesses/entities/business.entity"; import { DomainStatus } from "../../domains/enums/domain-status.enum"; import { DomainsService } from "../../domains/services/domains.service"; @@ -66,29 +66,21 @@ export class UsersService { const business = await this.em.findOne(Business, { id: businessId }); if (!business) throw new BadRequestException(BusinessMessage.NOT_FOUND); - const domain = await this.domainsService.getDomainById(domainId); + const domain = await this.domainsService.getDomainById(domainId, businessId); - if (domain.business.id !== businessId) { - throw new BadRequestException(DomainMessage.NOT_BELONG_TO_BUSINESS); - } + if (domain.business.id !== businessId) throw new BadRequestException(DomainMessage.NOT_BELONG_TO_BUSINESS); - if (domain.status !== DomainStatus.VERIFIED) { - throw new BadRequestException(DomainMessage.NOT_VERIFIED); - } + if (domain.status !== DomainStatus.VERIFIED) throw new BadRequestException(DomainMessage.NOT_VERIFIED); const emailAddress = `${username}@${domain.name}`; - // Check if email address already exists const existingUser = await this.userRepository.findOne({ emailAddress }); if (existingUser) throw new BadRequestException(UserMessage.EMAIL_ADDRESS_ALREADY_EXISTS); const hashedPassword = await this.passwordService.hashPassword(password); - let userRole = await this.em.findOne(Role, { name: RoleEnum.USER }); - if (!userRole) { - userRole = this.em.create(Role, { name: RoleEnum.USER }); - await this.em.persistAndFlush(userRole); - } + const userRole = await this.em.findOne(Role, { name: RoleEnum.USER }); + if (!userRole) throw new BadRequestException(RoleMessage.NOT_FOUND); try { const mailServerUser = await firstValueFrom( @@ -97,8 +89,8 @@ export class UsersService { password, address: emailAddress, name: displayName || username, - quota: quota || 1073741824, // 1GB default - tags: ["dmail-user"], + quota: quota || 1073741824, + language: "fa", }), ); @@ -121,7 +113,6 @@ export class UsersService { await this.em.persistAndFlush(user); - // Create aliases if provided if (aliases && aliases.length > 0) { for (const alias of aliases) { try { @@ -164,7 +155,7 @@ export class UsersService { encryption: DANAK_SMTPS_ENCRYPTION, }, }, - message: "Email user created successfully", + message: UserMessage.EMAIL_USER_CREATED_SUCCESSFULLY, }; } catch (error) { this.logger.error(`Failed to create email user ${emailAddress}:`, error); @@ -252,4 +243,19 @@ export class UsersService { throw new BadRequestException(UserMessage.FAILED_TO_UPDATE_EMAIL_USER_QUOTA); } } + + //===================================================== + + async updateEmailUserStatus(userId: string, businessId: string) { + const user = await this.userRepository.findOne({ id: userId, business: { id: businessId }, emailEnabled: true }); + if (!user) throw new NotFoundException(UserMessage.EMAIL_USER_NOT_FOUND); + + user.isActive = !user.isActive; + await this.em.flush(); + + return { + message: UserMessage.STATUS_UPDATED, + status: user.isActive, + }; + } } diff --git a/src/modules/users/users.controller.ts b/src/modules/users/users.controller.ts index 5c0b144..4785c2f 100644 --- a/src/modules/users/users.controller.ts +++ b/src/modules/users/users.controller.ts @@ -1,5 +1,5 @@ import { Body, Controller, Delete, Get, Param, Patch, Post, Query } from "@nestjs/common"; -import { ApiHeader, ApiOperation, ApiResponse, ApiTags } from "@nestjs/swagger"; +import { ApiHeader, ApiOperation, ApiResponse } from "@nestjs/swagger"; import { CreateEmailUserDto } from "./DTO/create-email-user.dto"; import { UsersService } from "./services/users.service"; @@ -7,8 +7,7 @@ import { AuthGuards } from "../../common/decorators/auth-guard.decorator"; import { BusinessDec } from "../../common/decorators/business.decorator"; import { ParamDto } from "../../common/DTO/param.dto"; -@ApiTags("email-users") -@Controller("email-users") +@Controller("users") @ApiHeader({ name: "x-business-id", description: "Business ID" }) @AuthGuards() export class UsersController { @@ -41,4 +40,11 @@ export class UsersController { updateEmailUserQuota(@Param() paramDto: ParamDto, @BusinessDec("id") businessId: string, @Body() body: { quota: number }) { return this.usersService.updateEmailUserQuota(paramDto.id, businessId, body.quota); } + + @Patch(":id/toggle-status") + @ApiOperation({ summary: "Update email user status" }) + @ApiResponse({ status: 200, description: "Email user status updated successfully" }) + updateEmailUserStatus(@Param() paramDto: ParamDto, @BusinessDec("id") businessId: string) { + return this.usersService.updateEmailUserStatus(paramDto.id, businessId); + } }