From 424f257bd77fbe3e14446b91f90fe857b8bdbefa Mon Sep 17 00:00:00 2001 From: barsa Date: Thu, 11 Dec 2025 12:03:31 +0900 Subject: [PATCH] Update package dependencies and refactor authentication module - Added sharp dependency for image processing in package.json. - Updated argon2 dependency version to 0.44.0 for enhanced security. - Removed unused @nestjs/jwt dependency and refactored authentication module to utilize JoseJwtService for JWT handling. - Adjusted type definitions for @types/node and @types/pg to ensure compatibility across applications. - Cleaned up package.json files in BFF and Portal applications for consistency and improved dependency management. --- apps/bff/package.json | 6 +- .../modules/auth/application/auth.facade.ts | 2 - apps/bff/src/modules/auth/auth.module.ts | 11 +- .../auth/infra/token/jose-jwt.service.ts | 53 ++ .../infra/token/token-blacklist.service.ts | 8 +- .../modules/auth/infra/token/token.service.ts | 17 +- .../workflows/password-workflow.service.ts | 11 +- .../auth/presentation/http/auth.controller.ts | 17 +- apps/portal/next-env.d.ts | 2 +- apps/portal/package.json | 2 - apps/portal/src/app/globals.css | 2 +- package.json | 1 + packages/domain/package.json | 1 - pnpm-lock.yaml | 690 ++++++++++++------ 14 files changed, 529 insertions(+), 294 deletions(-) create mode 100644 apps/bff/src/modules/auth/infra/token/jose-jwt.service.ts diff --git a/apps/bff/package.json b/apps/bff/package.json index 7c11de08..11ecc5c7 100644 --- a/apps/bff/package.json +++ b/apps/bff/package.json @@ -36,13 +36,12 @@ "@nestjs/common": "^11.1.9", "@nestjs/config": "^4.0.2", "@nestjs/core": "^11.1.9", - "@nestjs/jwt": "^11.0.2", "@nestjs/passport": "^11.0.5", "@nestjs/platform-express": "^11.1.9", "@prisma/adapter-pg": "^7.1.0", "@prisma/client": "^7.1.0", "@sendgrid/mail": "^8.1.6", - "argon2": "^0.43.0", + "argon2": "^0.44.0", "bullmq": "^5.65.1", "cookie-parser": "^1.4.7", "helmet": "^8.1.0", @@ -70,10 +69,9 @@ "@types/cookie-parser": "^1.4.10", "@types/express": "^5.0.6", "@types/jest": "^30.0.0", - "@types/node": "24.10.3", "@types/passport-jwt": "^4.0.1", "@types/passport-local": "^1.0.38", - "@types/pg": "^8.15.6", + "@types/pg": "^8.16.0", "@types/ssh2-sftp-client": "^9.0.6", "@types/supertest": "^6.0.3", "jest": "^30.2.0", diff --git a/apps/bff/src/modules/auth/application/auth.facade.ts b/apps/bff/src/modules/auth/application/auth.facade.ts index c85a9393..504e69a0 100644 --- a/apps/bff/src/modules/auth/application/auth.facade.ts +++ b/apps/bff/src/modules/auth/application/auth.facade.ts @@ -1,5 +1,4 @@ import { Injectable, UnauthorizedException, BadRequestException, Inject } from "@nestjs/common"; -import { JwtService } from "@nestjs/jwt"; import { ConfigService } from "@nestjs/config"; import * as argon2 from "argon2"; import { UsersFacade } from "@bff/modules/users/application/users.facade.js"; @@ -38,7 +37,6 @@ export class AuthFacade { constructor( private readonly usersFacade: UsersFacade, private readonly mappingsService: MappingsService, - private readonly jwtService: JwtService, private readonly configService: ConfigService, private readonly whmcsService: WhmcsService, private readonly salesforceService: SalesforceService, diff --git a/apps/bff/src/modules/auth/auth.module.ts b/apps/bff/src/modules/auth/auth.module.ts index dd1125cd..e06617c4 100644 --- a/apps/bff/src/modules/auth/auth.module.ts +++ b/apps/bff/src/modules/auth/auth.module.ts @@ -1,7 +1,5 @@ import { Module } from "@nestjs/common"; -import { JwtModule } from "@nestjs/jwt"; import { PassportModule } from "@nestjs/passport"; -import { ConfigService } from "@nestjs/config"; import { APP_GUARD } from "@nestjs/core"; import { AuthFacade } from "./application/auth.facade.js"; import { AuthController } from "./presentation/http/auth.controller.js"; @@ -15,6 +13,7 @@ import { TokenBlacklistService } from "./infra/token/token-blacklist.service.js" import { EmailModule } from "@bff/infra/email/email.module.js"; import { CacheModule } from "@bff/infra/cache/cache.module.js"; import { AuthTokenService } from "./infra/token/token.service.js"; +import { JoseJwtService } from "./infra/token/jose-jwt.service.js"; import { SignupWorkflowService } from "./infra/workflows/workflows/signup-workflow.service.js"; import { PasswordWorkflowService } from "./infra/workflows/workflows/password-workflow.service.js"; import { WhmcsLinkWorkflowService } from "./infra/workflows/workflows/whmcs-link-workflow.service.js"; @@ -25,13 +24,6 @@ import { AuthRateLimitService } from "./infra/rate-limiting/auth-rate-limit.serv @Module({ imports: [ PassportModule, - JwtModule.registerAsync({ - useFactory: (configService: ConfigService) => ({ - secret: configService.get("JWT_SECRET"), - signOptions: { expiresIn: configService.get("JWT_EXPIRES_IN", "7d") }, - }), - inject: [ConfigService], - }), UsersModule, MappingsModule, IntegrationsModule, @@ -45,6 +37,7 @@ import { AuthRateLimitService } from "./infra/rate-limiting/auth-rate-limit.serv LocalStrategy, TokenBlacklistService, AuthTokenService, + JoseJwtService, SignupWorkflowService, PasswordWorkflowService, WhmcsLinkWorkflowService, diff --git a/apps/bff/src/modules/auth/infra/token/jose-jwt.service.ts b/apps/bff/src/modules/auth/infra/token/jose-jwt.service.ts new file mode 100644 index 00000000..4800190f --- /dev/null +++ b/apps/bff/src/modules/auth/infra/token/jose-jwt.service.ts @@ -0,0 +1,53 @@ +import { Injectable } from "@nestjs/common"; +import { ConfigService } from "@nestjs/config"; +import { SignJWT, decodeJwt, jwtVerify, errors, type JWTPayload } from "jose"; +import { parseJwtExpiry } from "../../utils/jwt-expiry.util.js"; + +@Injectable() +export class JoseJwtService { + private readonly secretKey: Uint8Array; + + constructor(private readonly configService: ConfigService) { + const secret = configService.get("JWT_SECRET"); + if (!secret) { + throw new Error("JWT_SECRET is required in environment variables"); + } + this.secretKey = new TextEncoder().encode(secret); + } + + async sign(payload: JWTPayload, expiresIn: string): Promise { + const expiresInSeconds = parseJwtExpiry(expiresIn); + const nowSeconds = Math.floor(Date.now() / 1000); + + return new SignJWT(payload) + .setProtectedHeader({ alg: "HS256" }) + .setIssuedAt(nowSeconds) + .setExpirationTime(nowSeconds + expiresInSeconds) + .sign(this.secretKey); + } + + async verify(token: string): Promise { + const { payload } = await jwtVerify(token, this.secretKey); + return payload as T; + } + + async verifyAllowExpired(token: string): Promise { + try { + return await this.verify(token); + } catch (err) { + if (err instanceof errors.JWTExpired) { + return this.decode(token); + } + throw err; + } + } + + decode(token: string): T | null { + try { + return decodeJwt(token) as T; + } catch { + return null; + } + } +} + diff --git a/apps/bff/src/modules/auth/infra/token/token-blacklist.service.ts b/apps/bff/src/modules/auth/infra/token/token-blacklist.service.ts index 722fa046..900cc2e5 100644 --- a/apps/bff/src/modules/auth/infra/token/token-blacklist.service.ts +++ b/apps/bff/src/modules/auth/infra/token/token-blacklist.service.ts @@ -1,17 +1,17 @@ import { Injectable, Inject } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; -import { JwtService } from "@nestjs/jwt"; import { createHash } from "crypto"; import { Redis } from "ioredis"; import { Logger } from "nestjs-pino"; import { parseJwtExpiry } from "../../utils/jwt-expiry.util.js"; +import { JoseJwtService } from "./jose-jwt.service.js"; @Injectable() export class TokenBlacklistService { constructor( @Inject("REDIS_CLIENT") private readonly redis: Redis, private readonly configService: ConfigService, - private readonly jwtService: JwtService, + private readonly jwtService: JoseJwtService, @Inject(Logger) private readonly logger: Logger ) {} @@ -24,14 +24,14 @@ export class TokenBlacklistService { // Use JwtService to safely decode and validate token try { - const decoded: unknown = this.jwtService.decode(token); + const decoded = this.jwtService.decode<{ sub?: string; exp?: number }>(token); if (!decoded || typeof decoded !== "object" || Array.isArray(decoded)) { this.logger.warn("Invalid JWT payload structure for blacklisting"); return; } - const { sub, exp } = decoded as { sub?: unknown; exp?: unknown }; + const { sub, exp } = decoded; if (typeof sub !== "string" || typeof exp !== "number") { this.logger.warn("Invalid JWT payload structure for blacklisting"); return; diff --git a/apps/bff/src/modules/auth/infra/token/token.service.ts b/apps/bff/src/modules/auth/infra/token/token.service.ts index 78f2db83..8ee5a626 100644 --- a/apps/bff/src/modules/auth/infra/token/token.service.ts +++ b/apps/bff/src/modules/auth/infra/token/token.service.ts @@ -4,17 +4,18 @@ import { UnauthorizedException, ServiceUnavailableException, } from "@nestjs/common"; -import { JwtService } from "@nestjs/jwt"; import { ConfigService } from "@nestjs/config"; import { Redis } from "ioredis"; import { Logger } from "nestjs-pino"; import { randomBytes, createHash } from "crypto"; +import type { JWTPayload } from "jose"; import type { AuthTokens } from "@customer-portal/domain/auth"; import type { User } from "@customer-portal/domain/customer"; import { UsersFacade } from "@bff/modules/users/application/users.facade.js"; import { mapPrismaUserToDomain } from "@bff/infra/mappers/index.js"; +import { JoseJwtService } from "./jose-jwt.service.js"; -export interface RefreshTokenPayload { +export interface RefreshTokenPayload extends JWTPayload { userId: string; tokenId: string; deviceId?: string; @@ -49,7 +50,7 @@ export class AuthTokenService { private readonly maintenanceMessage: string; constructor( - private readonly jwtService: JwtService, + private readonly jwtService: JoseJwtService, private readonly configService: ConfigService, @Inject("REDIS_CLIENT") private readonly redis: Redis, @Inject(Logger) private readonly logger: Logger, @@ -124,13 +125,9 @@ export class AuthTokenService { }; // Generate tokens - const accessToken = this.jwtService.sign(accessPayload, { - expiresIn: this.ACCESS_TOKEN_EXPIRY, - }); + const accessToken = await this.jwtService.sign(accessPayload, this.ACCESS_TOKEN_EXPIRY); - const refreshToken = this.jwtService.sign(refreshPayload, { - expiresIn: this.REFRESH_TOKEN_EXPIRY, - }); + const refreshToken = await this.jwtService.sign(refreshPayload, this.REFRESH_TOKEN_EXPIRY); // Store refresh token family in Redis const refreshTokenHash = this.hashToken(refreshToken); @@ -211,7 +208,7 @@ export class AuthTokenService { } try { // Verify refresh token - const payload = this.jwtService.verify(refreshToken); + const payload = await this.jwtService.verify(refreshToken); if (payload.type !== "refresh") { this.logger.warn("Token presented to refresh endpoint is not a refresh token", { diff --git a/apps/bff/src/modules/auth/infra/workflows/workflows/password-workflow.service.ts b/apps/bff/src/modules/auth/infra/workflows/workflows/password-workflow.service.ts index 52ab27fc..1a08d369 100644 --- a/apps/bff/src/modules/auth/infra/workflows/workflows/password-workflow.service.ts +++ b/apps/bff/src/modules/auth/infra/workflows/workflows/password-workflow.service.ts @@ -6,7 +6,6 @@ import { NotFoundException, } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; -import { JwtService } from "@nestjs/jwt"; import { Logger } from "nestjs-pino"; import * as argon2 from "argon2"; import type { Request } from "express"; @@ -16,6 +15,7 @@ import { EmailService } from "@bff/infra/email/email.service.js"; import { getErrorMessage } from "@bff/core/utils/error.util.js"; import { AuthTokenService } from "../../token/token.service.js"; import { AuthRateLimitService } from "../../rate-limiting/auth-rate-limit.service.js"; +import { JoseJwtService } from "../../token/jose-jwt.service.js"; import { type PasswordChangeResult, type ChangePasswordRequest, @@ -30,7 +30,7 @@ export class PasswordWorkflowService { private readonly auditService: AuditService, private readonly configService: ConfigService, private readonly emailService: EmailService, - private readonly jwtService: JwtService, + private readonly jwtService: JoseJwtService, private readonly tokenService: AuthTokenService, private readonly authRateLimitService: AuthRateLimitService, @Inject(Logger) private readonly logger: Logger @@ -99,10 +99,7 @@ export class PasswordWorkflowService { return; } - const token = this.jwtService.sign( - { sub: user.id, purpose: "password_reset" }, - { expiresIn: "15m" } - ); + const token = await this.jwtService.sign({ sub: user.id, purpose: "password_reset" }, "15m"); const appBase = this.configService.get("APP_BASE_URL", "http://localhost:3000"); const resetUrl = `${appBase}/auth/reset-password?token=${encodeURIComponent(token)}`; @@ -130,7 +127,7 @@ export class PasswordWorkflowService { async resetPassword(token: string, newPassword: string): Promise { try { - const payload = this.jwtService.verify<{ sub: string; purpose: string }>(token); + const payload = await this.jwtService.verify<{ sub: string; purpose: string }>(token); if (payload.purpose !== "password_reset") { throw new BadRequestException("Invalid token"); } diff --git a/apps/bff/src/modules/auth/presentation/http/auth.controller.ts b/apps/bff/src/modules/auth/presentation/http/auth.controller.ts index 9aa3d84e..9aed1037 100644 --- a/apps/bff/src/modules/auth/presentation/http/auth.controller.ts +++ b/apps/bff/src/modules/auth/presentation/http/auth.controller.ts @@ -12,7 +12,6 @@ import { } from "@nestjs/common"; import type { Request, Response } from "express"; import { RateLimitGuard, RateLimit } from "@bff/core/rate-limiting/index.js"; -import { JwtService } from "@nestjs/jwt"; import { AuthFacade } from "@bff/modules/auth/application/auth.facade.js"; import { LocalAuthGuard } from "./guards/local-auth.guard.js"; import { @@ -25,6 +24,7 @@ import { ZodValidationPipe } from "nestjs-zod"; import type { RequestWithUser } from "@bff/modules/auth/auth.types.js"; import { SalesforceReadThrottleGuard } from "@bff/integrations/salesforce/guards/salesforce-read-throttle.guard.js"; import { SalesforceWriteThrottleGuard } from "@bff/integrations/salesforce/guards/salesforce-write-throttle.guard.js"; +import { JoseJwtService } from "../../infra/token/jose-jwt.service.js"; // Import Zod schemas from domain import { @@ -108,7 +108,7 @@ const calculateCookieMaxAge = (isoTimestamp: string): number => { export class AuthController { constructor( private authFacade: AuthFacade, - private readonly jwtService: JwtService + private readonly jwtService: JoseJwtService ) {} private setAuthCookies(res: Response, tokens: AuthTokens): void { @@ -205,16 +205,9 @@ export class AuthController { let userId = req.user?.id; if (!userId && token) { - try { - const payload = await this.jwtService.verifyAsync<{ sub?: string }>(token, { - ignoreExpiration: true, - }); - - if (payload?.sub) { - userId = payload.sub; - } - } catch { - // Ignore verification errors – we still want to clear client cookies. + const payload = await this.jwtService.verifyAllowExpired<{ sub?: string }>(token); + if (payload?.sub) { + userId = payload.sub; } } diff --git a/apps/portal/next-env.d.ts b/apps/portal/next-env.d.ts index c4b7818f..9edff1c7 100644 --- a/apps/portal/next-env.d.ts +++ b/apps/portal/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/dev/types/routes.d.ts"; +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/portal/package.json b/apps/portal/package.json index 710bbe77..e610311d 100644 --- a/apps/portal/package.json +++ b/apps/portal/package.json @@ -28,7 +28,6 @@ "react": "19.2.1", "react-dom": "19.2.1", "tailwind-merge": "^3.4.0", - "tw-animate-css": "^1.4.0", "world-countries": "^5.1.0", "zod": "4.1.13", "zustand": "^5.0.9" @@ -37,7 +36,6 @@ "@next/bundle-analyzer": "^16.0.8", "@tailwindcss/postcss": "^4.1.17", "@tanstack/react-query-devtools": "^5.91.1", - "@types/node": "24.10.3", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "tailwindcss": "^4.1.17", diff --git a/apps/portal/src/app/globals.css b/apps/portal/src/app/globals.css index 3e3e5afd..e121c9d7 100644 --- a/apps/portal/src/app/globals.css +++ b/apps/portal/src/app/globals.css @@ -3,7 +3,7 @@ @import "../styles/tokens.css"; @import "../styles/utilities.css"; @import "../styles/responsive.css"; -@import "tw-animate-css"; + @custom-variant dark (&:is(.dark *)); diff --git a/package.json b/package.json index 0a7763b1..f69f9c10 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "globals": "^16.5.0", "husky": "^9.1.7", "prettier": "^3.7.4", + "sharp": "^0.33.5", "tsx": "^4.21.0", "typescript": "^5.9.3", "typescript-eslint": "^8.49.0" diff --git a/packages/domain/package.json b/packages/domain/package.json index 63868178..d8d0eba1 100644 --- a/packages/domain/package.json +++ b/packages/domain/package.json @@ -136,7 +136,6 @@ "zod": "4.1.13" }, "devDependencies": { - "@types/node": "24.10.3", "typescript": "5.9.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d0519e32..25f5f1b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ settings: overrides: js-yaml: '>=4.1.1' glob: ^8.1.0 + typescript: 5.9.3 + '@types/node': 24.10.3 + zod: 4.1.13 importers: @@ -20,7 +23,7 @@ importers: specifier: ^9.39.1 version: 9.39.1 '@types/node': - specifier: ^24.10.3 + specifier: 24.10.3 version: 24.10.3 eslint: specifier: ^9.39.1 @@ -40,11 +43,14 @@ importers: prettier: specifier: ^3.7.4 version: 3.7.4 + sharp: + specifier: ^0.33.5 + version: 0.33.5 tsx: specifier: ^4.21.0 version: 4.21.0 typescript: - specifier: ^5.9.3 + specifier: 5.9.3 version: 5.9.3 typescript-eslint: specifier: ^8.49.0 @@ -67,9 +73,6 @@ importers: '@nestjs/core': specifier: ^11.1.9 version: 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@11.1.9)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/jwt': - specifier: ^11.0.2 - version: 11.0.2(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2)) '@nestjs/passport': specifier: ^11.0.5 version: 11.0.5(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(passport@0.7.0) @@ -86,8 +89,8 @@ importers: specifier: ^8.1.6 version: 8.1.6 argon2: - specifier: ^0.43.0 - version: 0.43.1 + specifier: ^0.44.0 + version: 0.44.0 bullmq: specifier: ^5.65.1 version: 5.65.1 @@ -105,7 +108,7 @@ importers: version: 6.1.3 jsforce: specifier: ^3.10.10 - version: 3.10.10(@types/node@24.10.2) + version: 3.10.10(@types/node@24.10.3) nestjs-pino: specifier: ^4.5.0 version: 4.5.0(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(pino-http@11.0.0)(pino@10.1.0)(rxjs@7.8.2) @@ -127,9 +130,6 @@ importers: pg: specifier: ^8.16.3 version: 8.16.3 - pino-http: - specifier: ^11.0.0 - version: 11.0.0 rate-limiter-flexible: specifier: ^9.0.0 version: 9.0.0 @@ -141,17 +141,17 @@ importers: version: 7.8.2 salesforce-pubsub-api-client: specifier: ^5.5.1 - version: 5.5.1(@types/node@24.10.2) + version: 5.5.1(@types/node@24.10.3) ssh2-sftp-client: specifier: ^12.0.1 version: 12.0.1 zod: - specifier: ^4.1.13 + specifier: 4.1.13 version: 4.1.13 devDependencies: '@nestjs/cli': specifier: ^11.0.14 - version: 11.0.14(@swc/cli@0.7.9(@swc/core@1.15.3)(chokidar@4.0.3))(@swc/core@1.15.3)(@types/node@24.10.2) + version: 11.0.14(@swc/cli@0.7.9(@swc/core@1.15.3)(chokidar@4.0.3))(@swc/core@1.15.3)(@types/node@24.10.3) '@nestjs/schematics': specifier: ^11.0.9 version: 11.0.9(chokidar@4.0.3)(typescript@5.9.3) @@ -167,9 +167,6 @@ importers: '@types/jest': specifier: ^30.0.0 version: 30.0.0 - '@types/node': - specifier: ^24.10.2 - version: 24.10.2 '@types/passport-jwt': specifier: ^4.0.1 version: 4.0.1 @@ -177,8 +174,8 @@ importers: specifier: ^1.0.38 version: 1.0.38 '@types/pg': - specifier: ^8.15.6 - version: 8.15.6 + specifier: ^8.16.0 + version: 8.16.0 '@types/ssh2-sftp-client': specifier: ^9.0.6 version: 9.0.6 @@ -187,7 +184,7 @@ importers: version: 6.0.3 jest: specifier: ^30.2.0 - version: 30.2.0(@types/node@24.10.2)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3)) + version: 30.2.0(@types/node@24.10.3)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3)) pino-pretty: specifier: ^13.1.3 version: 13.1.3 @@ -199,12 +196,12 @@ importers: version: 7.1.4 ts-jest: specifier: ^29.4.6 - version: 29.4.6(@babel/core@7.28.5)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@30.2.0(@types/node@24.10.2)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.6(@babel/core@7.28.5)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@30.2.0(@types/node@24.10.3)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3)))(typescript@5.9.3) tsc-alias: specifier: ^1.8.16 version: 1.8.16 typescript: - specifier: ^5.9.3 + specifier: 5.9.3 version: 5.9.3 apps/portal: @@ -218,9 +215,6 @@ importers: '@tanstack/react-query': specifier: ^5.90.12 version: 5.90.12(react@19.2.1) - '@tanstack/react-query-devtools': - specifier: ^5.91.1 - version: 5.91.1(@tanstack/react-query@5.90.12(react@19.2.1))(react@19.2.1) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -242,14 +236,11 @@ importers: tailwind-merge: specifier: ^3.4.0 version: 3.4.0 - tw-animate-css: - specifier: ^1.4.0 - version: 1.4.0 world-countries: specifier: ^5.1.0 version: 5.1.0 zod: - specifier: ^4.1.13 + specifier: 4.1.13 version: 4.1.13 zustand: specifier: ^5.0.9 @@ -261,9 +252,9 @@ importers: '@tailwindcss/postcss': specifier: ^4.1.17 version: 4.1.17 - '@types/node': - specifier: ^24.10.2 - version: 24.10.2 + '@tanstack/react-query-devtools': + specifier: ^5.91.1 + version: 5.91.1(@tanstack/react-query@5.90.12(react@19.2.1))(react@19.2.1) '@types/react': specifier: ^19.2.7 version: 19.2.7 @@ -274,20 +265,17 @@ importers: specifier: ^4.1.17 version: 4.1.17 typescript: - specifier: ^5.9.3 + specifier: 5.9.3 version: 5.9.3 packages/domain: dependencies: zod: - specifier: ^4.1.13 + specifier: 4.1.13 version: 4.1.13 devDependencies: - '@types/node': - specifier: ^24.10.2 - version: 24.10.2 typescript: - specifier: ^5.9.3 + specifier: 5.9.3 version: 5.9.3 packages: @@ -550,6 +538,9 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@epic-web/invariant@1.0.0': + resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} + '@esbuild/aix-ppc64@0.27.1': resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} engines: {node: '>=18'} @@ -784,33 +775,65 @@ packages: resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} engines: {node: '>=18'} + '@img/sharp-darwin-arm64@0.33.5': + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + '@img/sharp-darwin-arm64@0.34.5': resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] + '@img/sharp-darwin-x64@0.33.5': + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + '@img/sharp-darwin-x64@0.34.5': resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] + '@img/sharp-libvips-darwin-arm64@1.2.4': resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] os: [darwin] + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] + '@img/sharp-libvips-darwin-x64@1.2.4': resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] + '@img/sharp-libvips-linux-arm64@1.2.4': resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] + '@img/sharp-libvips-linux-arm@1.2.4': resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] @@ -826,32 +849,64 @@ packages: cpu: [riscv64] os: [linux] + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] + '@img/sharp-libvips-linux-s390x@1.2.4': resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] + '@img/sharp-libvips-linux-x64@1.2.4': resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + cpu: [arm64] + os: [linux] + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + cpu: [x64] + os: [linux] + '@img/sharp-libvips-linuxmusl-x64@1.2.4': resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] + '@img/sharp-linux-arm64@0.33.5': + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + '@img/sharp-linux-arm64@0.34.5': resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + '@img/sharp-linux-arm@0.33.5': + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + '@img/sharp-linux-arm@0.34.5': resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -870,30 +925,59 @@ packages: cpu: [riscv64] os: [linux] + '@img/sharp-linux-s390x@0.33.5': + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + '@img/sharp-linux-s390x@0.34.5': resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + '@img/sharp-linux-x64@0.33.5': + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + '@img/sharp-linux-x64@0.34.5': resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + '@img/sharp-linuxmusl-arm64@0.33.5': + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + '@img/sharp-linuxmusl-arm64@0.34.5': resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + '@img/sharp-linuxmusl-x64@0.33.5': + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + '@img/sharp-linuxmusl-x64@0.34.5': resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + '@img/sharp-wasm32@0.33.5': + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + '@img/sharp-wasm32@0.34.5': resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -905,12 +989,24 @@ packages: cpu: [arm64] os: [win32] + '@img/sharp-win32-ia32@0.33.5': + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + '@img/sharp-win32-ia32@0.34.5': resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] + '@img/sharp-win32-x64@0.33.5': + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@img/sharp-win32-x64@0.34.5': resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -925,7 +1021,7 @@ packages: resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -934,7 +1030,7 @@ packages: resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -943,7 +1039,7 @@ packages: resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -952,7 +1048,7 @@ packages: resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -961,7 +1057,7 @@ packages: resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -970,7 +1066,7 @@ packages: resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -983,7 +1079,7 @@ packages: resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -992,7 +1088,7 @@ packages: resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -1001,7 +1097,7 @@ packages: resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -1010,7 +1106,7 @@ packages: resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -1019,7 +1115,7 @@ packages: resolution: {integrity: sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -1028,7 +1124,7 @@ packages: resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -1037,7 +1133,7 @@ packages: resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -1046,7 +1142,7 @@ packages: resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -1055,7 +1151,7 @@ packages: resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} engines: {node: '>=18'} peerDependencies: - '@types/node': '>=18' + '@types/node': 24.10.3 peerDependenciesMeta: '@types/node': optional: true @@ -1391,11 +1487,6 @@ packages: '@nestjs/websockets': optional: true - '@nestjs/jwt@11.0.2': - resolution: {integrity: sha512-rK8aE/3/Ma45gAWfCksAXUNbOoSOUudU0Kn3rT39htPF7wsYXtKfjALKeKKJbFrIWbLjsbqfXX5bIJNvgBugGA==} - peerDependencies: - '@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 - '@nestjs/mapped-types@2.1.0': resolution: {integrity: sha512-W+n+rM69XsFdwORF11UqJahn4J3xi4g/ZEOlJNL6KoW5ygWSmBB2p0S2BZ4FQeS/NDH72e6xIcu35SfJnE8bXw==} peerDependencies: @@ -1424,7 +1515,7 @@ packages: '@nestjs/schematics@11.0.9': resolution: {integrity: sha512-0NfPbPlEaGwIT8/TCThxLzrlz3yzDNkfRNpbL7FiplKq3w4qXpJg0JYwqgMEJnLQZm3L/L/5XjoyfJHUO3qX9g==} peerDependencies: - typescript: '>=4.8.2' + typescript: 5.9.3 '@nestjs/swagger@11.2.0': resolution: {integrity: sha512-5wolt8GmpNcrQv34tIPUtPoV1EeFbCetm40Ij3+M0FNNnf2RJ3FyWfuQvI8SBlcJyfaounYVTKzKHreFXsUyOg==} @@ -1566,7 +1657,7 @@ packages: engines: {node: ^20.19 || ^22.12 || >=24.0} peerDependencies: prisma: '*' - typescript: '>=5.4.0' + typescript: 5.9.3 peerDependenciesMeta: prisma: optional: true @@ -1979,12 +2070,6 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@18.19.130': - resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} - - '@types/node@24.10.2': - resolution: {integrity: sha512-WOhQTZ4G8xZ1tjJTvKOpyEVSGgOTvJAfDK3FNFgELyaTpzhdgHVHeqW8V+UJvzF5BT+/B54T/1S2K6gd9c7bbA==} - '@types/node@24.10.3': resolution: {integrity: sha512-gqkrWUsS8hcm0r44yn7/xZeV1ERva/nLgrLxFRUGb7aoNMIJfZJ3AC261zDQuOAKC7MiXai1WCpYc48jAHoShQ==} @@ -2000,8 +2085,8 @@ packages: '@types/passport@1.0.17': resolution: {integrity: sha512-aciLyx+wDwT2t2/kJGJR2AEeBz0nJU4WuRX04Wu9Dqc5lSUtwu0WERPHYsLhF9PtseiAMPBGNUOtFjxZ56prsg==} - '@types/pg@8.15.6': - resolution: {integrity: sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ==} + '@types/pg@8.16.0': + resolution: {integrity: sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ==} '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} @@ -2053,20 +2138,20 @@ packages: peerDependencies: '@typescript-eslint/parser': ^8.49.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: 5.9.3 '@typescript-eslint/parser@8.49.0': resolution: {integrity: sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: 5.9.3 '@typescript-eslint/project-service@8.49.0': resolution: {integrity: sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: 5.9.3 '@typescript-eslint/scope-manager@8.49.0': resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==} @@ -2076,14 +2161,14 @@ packages: resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: 5.9.3 '@typescript-eslint/type-utils@8.49.0': resolution: {integrity: sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: 5.9.3 '@typescript-eslint/types@8.49.0': resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} @@ -2093,14 +2178,14 @@ packages: resolution: {integrity: sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: 5.9.3 '@typescript-eslint/utils@8.49.0': resolution: {integrity: sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: 5.9.3 '@typescript-eslint/visitor-keys@8.49.0': resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==} @@ -2392,8 +2477,8 @@ packages: arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argon2@0.43.1: - resolution: {integrity: sha512-TfOzvDWUaQPurCT1hOwIeFNkgrAJDpbBGBGWDgzDsm11nNhImc13WhdGdCU6K7brkp8VpeY07oGtSex0Wmhg8w==} + argon2@0.44.0: + resolution: {integrity: sha512-zHPGN3S55sihSQo0dBbK0A5qpi2R31z7HZDZnry3ifOyj8bZZnpZND2gpmhnRGO1V/d555RwBqIK5W4Mrmv3ig==} engines: {node: '>=16.17.0'} argparse@2.0.1: @@ -2751,6 +2836,13 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -2852,7 +2944,7 @@ packages: resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: - typescript: '>=4.9.5' + typescript: 5.9.3 peerDependenciesMeta: typescript: optional: true @@ -2868,6 +2960,11 @@ packages: resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} engines: {node: '>=12.0.0'} + cross-env@10.1.0: + resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} + engines: {node: '>=20'} + hasBin: true + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -3131,7 +3228,7 @@ packages: resolution: {integrity: sha512-8J5cOAboXIV3f8OD6BOyj7Fik6n/as7J4MboiUSExWruf/lCu1OPR3ZVSdnta6WhzebrmAATEmNSBZsLWA6kbg==} peerDependencies: eslint: '>=9.0.0' - typescript: '>=3.3.1' + typescript: 5.9.3 peerDependenciesMeta: typescript: optional: true @@ -3441,7 +3538,7 @@ packages: resolution: {integrity: sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==} engines: {node: '>=14.21.3'} peerDependencies: - typescript: '>3.6.0' + typescript: 5.9.3 webpack: ^5.11.0 form-data-encoder@2.1.4: @@ -3731,6 +3828,9 @@ packages: is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.4: + resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} + is-async-function@2.1.1: resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} @@ -3933,7 +4033,7 @@ packages: resolution: {integrity: sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} peerDependencies: - '@types/node': '*' + '@types/node': 24.10.3 esbuild-register: '>=3.4.0' ts-node: '>=9.0.0' peerDependenciesMeta: @@ -4478,7 +4578,7 @@ packages: '@nestjs/common': ^10.0.0 || ^11.0.0 '@nestjs/swagger': ^7.4.2 || ^8.0.0 || ^11.0.0 rxjs: ^7.0.0 - zod: ^3.25.0 || ^4.0.0 + zod: 4.1.13 peerDependenciesMeta: '@nestjs/swagger': optional: true @@ -4870,7 +4970,7 @@ packages: hasBin: true peerDependencies: better-sqlite3: '>=9.0.0' - typescript: '>=5.4.0' + typescript: 5.9.3 peerDependenciesMeta: better-sqlite3: optional: true @@ -5165,6 +5265,10 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + sharp@0.34.5: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -5200,6 +5304,9 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-swizzle@0.2.4: + resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} + sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} @@ -5486,7 +5593,7 @@ packages: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.8.4' + typescript: 5.9.3 ts-jest@29.4.6: resolution: {integrity: sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==} @@ -5500,7 +5607,7 @@ packages: esbuild: '*' jest: ^29.0.0 || ^30.0.0 jest-util: ^29.0.0 || ^30.0.0 - typescript: '>=4.3 <6' + typescript: 5.9.3 peerDependenciesMeta: '@babel/core': optional: true @@ -5521,8 +5628,8 @@ packages: peerDependencies: '@swc/core': '>=1.2.50' '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' + '@types/node': 24.10.3 + typescript: 5.9.3 peerDependenciesMeta: '@swc/core': optional: true @@ -5556,9 +5663,6 @@ packages: tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - tw-animate-css@1.4.0: - resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} - tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} @@ -5610,7 +5714,7 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: 5.9.3 typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} @@ -5640,9 +5744,6 @@ packages: underscore@1.13.7: resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} @@ -5691,7 +5792,7 @@ packages: valibot@1.2.0: resolution: {integrity: sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==} peerDependencies: - typescript: '>=5' + typescript: 5.9.3 peerDependenciesMeta: typescript: optional: true @@ -5859,7 +5960,7 @@ packages: resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} engines: {node: '>=18.0.0'} peerDependencies: - zod: ^3.25.0 || ^4.0.0 + zod: 4.1.13 zod@4.1.13: resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} @@ -5908,11 +6009,11 @@ snapshots: optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/schematics-cli@19.2.19(@types/node@24.10.2)(chokidar@4.0.3)': + '@angular-devkit/schematics-cli@19.2.19(@types/node@24.10.3)(chokidar@4.0.3)': dependencies: '@angular-devkit/core': 19.2.19(chokidar@4.0.3) '@angular-devkit/schematics': 19.2.19(chokidar@4.0.3) - '@inquirer/prompts': 7.3.2(@types/node@24.10.2) + '@inquirer/prompts': 7.3.2(@types/node@24.10.3) ansi-colors: 4.1.3 symbol-observable: 4.0.0 yargs-parser: 21.1.1 @@ -6188,6 +6289,8 @@ snapshots: tslib: 2.8.1 optional: true + '@epic-web/invariant@1.0.0': {} + '@esbuild/aix-ppc64@0.27.1': optional: true @@ -6346,25 +6449,47 @@ snapshots: '@img/colour@1.0.0': optional: true + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + '@img/sharp-darwin-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.2.4 optional: true + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + '@img/sharp-darwin-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.2.4 optional: true + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + '@img/sharp-libvips-darwin-arm64@1.2.4': optional: true + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + '@img/sharp-libvips-darwin-x64@1.2.4': optional: true + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + '@img/sharp-libvips-linux-arm64@1.2.4': optional: true + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + '@img/sharp-libvips-linux-arm@1.2.4': optional: true @@ -6374,23 +6499,45 @@ snapshots: '@img/sharp-libvips-linux-riscv64@1.2.4': optional: true + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + '@img/sharp-libvips-linux-s390x@1.2.4': optional: true + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + '@img/sharp-libvips-linux-x64@1.2.4': optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': optional: true + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + '@img/sharp-libvips-linuxmusl-x64@1.2.4': optional: true + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + '@img/sharp-linux-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.2.4 optional: true + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + '@img/sharp-linux-arm@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.2.4 @@ -6406,26 +6553,51 @@ snapshots: '@img/sharp-libvips-linux-riscv64': 1.2.4 optional: true + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + '@img/sharp-linux-s390x@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.2.4 optional: true + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + '@img/sharp-linux-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.2.4 optional: true + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + '@img/sharp-linuxmusl-arm64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 optional: true + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + '@img/sharp-linuxmusl-x64@0.34.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.2.4 optional: true + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.7.1 + optional: true + '@img/sharp-wasm32@0.34.5': dependencies: '@emnapi/runtime': 1.7.1 @@ -6434,151 +6606,157 @@ snapshots: '@img/sharp-win32-arm64@0.34.5': optional: true + '@img/sharp-win32-ia32@0.33.5': + optional: true + '@img/sharp-win32-ia32@0.34.5': optional: true + '@img/sharp-win32-x64@0.33.5': + optional: true + '@img/sharp-win32-x64@0.34.5': optional: true '@inquirer/ansi@1.0.2': {} - '@inquirer/checkbox@4.3.2(@types/node@24.10.2)': + '@inquirer/checkbox@4.3.2(@types/node@24.10.3)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.3) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.3) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 - '@inquirer/confirm@5.1.21(@types/node@24.10.2)': + '@inquirer/confirm@5.1.21(@types/node@24.10.3)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.3) + '@inquirer/type': 3.0.10(@types/node@24.10.3) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 - '@inquirer/core@10.3.2(@types/node@24.10.2)': + '@inquirer/core@10.3.2(@types/node@24.10.3)': dependencies: '@inquirer/ansi': 1.0.2 '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.3) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 - '@inquirer/editor@4.2.23(@types/node@24.10.2)': + '@inquirer/editor@4.2.23(@types/node@24.10.3)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/external-editor': 1.0.3(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.3) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.3) + '@inquirer/type': 3.0.10(@types/node@24.10.3) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 - '@inquirer/expand@4.0.23(@types/node@24.10.2)': + '@inquirer/expand@4.0.23(@types/node@24.10.3)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.3) + '@inquirer/type': 3.0.10(@types/node@24.10.3) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 - '@inquirer/external-editor@1.0.3(@types/node@24.10.2)': + '@inquirer/external-editor@1.0.3(@types/node@24.10.3)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 '@inquirer/figures@1.0.15': {} - '@inquirer/input@4.3.1(@types/node@24.10.2)': + '@inquirer/input@4.3.1(@types/node@24.10.3)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.3) + '@inquirer/type': 3.0.10(@types/node@24.10.3) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 - '@inquirer/number@3.0.23(@types/node@24.10.2)': + '@inquirer/number@3.0.23(@types/node@24.10.3)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.3) + '@inquirer/type': 3.0.10(@types/node@24.10.3) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 - '@inquirer/password@4.0.23(@types/node@24.10.2)': + '@inquirer/password@4.0.23(@types/node@24.10.3)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.3) + '@inquirer/type': 3.0.10(@types/node@24.10.3) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 - '@inquirer/prompts@7.10.1(@types/node@24.10.2)': + '@inquirer/prompts@7.10.1(@types/node@24.10.3)': dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@24.10.2) - '@inquirer/confirm': 5.1.21(@types/node@24.10.2) - '@inquirer/editor': 4.2.23(@types/node@24.10.2) - '@inquirer/expand': 4.0.23(@types/node@24.10.2) - '@inquirer/input': 4.3.1(@types/node@24.10.2) - '@inquirer/number': 3.0.23(@types/node@24.10.2) - '@inquirer/password': 4.0.23(@types/node@24.10.2) - '@inquirer/rawlist': 4.1.11(@types/node@24.10.2) - '@inquirer/search': 3.2.2(@types/node@24.10.2) - '@inquirer/select': 4.4.2(@types/node@24.10.2) + '@inquirer/checkbox': 4.3.2(@types/node@24.10.3) + '@inquirer/confirm': 5.1.21(@types/node@24.10.3) + '@inquirer/editor': 4.2.23(@types/node@24.10.3) + '@inquirer/expand': 4.0.23(@types/node@24.10.3) + '@inquirer/input': 4.3.1(@types/node@24.10.3) + '@inquirer/number': 3.0.23(@types/node@24.10.3) + '@inquirer/password': 4.0.23(@types/node@24.10.3) + '@inquirer/rawlist': 4.1.11(@types/node@24.10.3) + '@inquirer/search': 3.2.2(@types/node@24.10.3) + '@inquirer/select': 4.4.2(@types/node@24.10.3) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 - '@inquirer/prompts@7.3.2(@types/node@24.10.2)': + '@inquirer/prompts@7.3.2(@types/node@24.10.3)': dependencies: - '@inquirer/checkbox': 4.3.2(@types/node@24.10.2) - '@inquirer/confirm': 5.1.21(@types/node@24.10.2) - '@inquirer/editor': 4.2.23(@types/node@24.10.2) - '@inquirer/expand': 4.0.23(@types/node@24.10.2) - '@inquirer/input': 4.3.1(@types/node@24.10.2) - '@inquirer/number': 3.0.23(@types/node@24.10.2) - '@inquirer/password': 4.0.23(@types/node@24.10.2) - '@inquirer/rawlist': 4.1.11(@types/node@24.10.2) - '@inquirer/search': 3.2.2(@types/node@24.10.2) - '@inquirer/select': 4.4.2(@types/node@24.10.2) + '@inquirer/checkbox': 4.3.2(@types/node@24.10.3) + '@inquirer/confirm': 5.1.21(@types/node@24.10.3) + '@inquirer/editor': 4.2.23(@types/node@24.10.3) + '@inquirer/expand': 4.0.23(@types/node@24.10.3) + '@inquirer/input': 4.3.1(@types/node@24.10.3) + '@inquirer/number': 3.0.23(@types/node@24.10.3) + '@inquirer/password': 4.0.23(@types/node@24.10.3) + '@inquirer/rawlist': 4.1.11(@types/node@24.10.3) + '@inquirer/search': 3.2.2(@types/node@24.10.3) + '@inquirer/select': 4.4.2(@types/node@24.10.3) optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 - '@inquirer/rawlist@4.1.11(@types/node@24.10.2)': + '@inquirer/rawlist@4.1.11(@types/node@24.10.3)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.3) + '@inquirer/type': 3.0.10(@types/node@24.10.3) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 - '@inquirer/search@3.2.2(@types/node@24.10.2)': + '@inquirer/search@3.2.2(@types/node@24.10.3)': dependencies: - '@inquirer/core': 10.3.2(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.3) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.3) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 - '@inquirer/select@4.4.2(@types/node@24.10.2)': + '@inquirer/select@4.4.2(@types/node@24.10.3)': dependencies: '@inquirer/ansi': 1.0.2 - '@inquirer/core': 10.3.2(@types/node@24.10.2) + '@inquirer/core': 10.3.2(@types/node@24.10.3) '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@24.10.2) + '@inquirer/type': 3.0.10(@types/node@24.10.3) yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 - '@inquirer/type@3.0.10(@types/node@24.10.2)': + '@inquirer/type@3.0.10(@types/node@24.10.3)': optionalDependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 '@ioredis/commands@1.4.0': {} @@ -6595,13 +6773,13 @@ snapshots: '@jest/console@30.2.0': dependencies: '@jest/types': 30.2.0 - '@types/node': 24.10.2 + '@types/node': 24.10.3 chalk: 4.1.2 jest-message-util: 30.2.0 jest-util: 30.2.0 slash: 3.0.0 - '@jest/core@30.2.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3))': + '@jest/core@30.2.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3))': dependencies: '@jest/console': 30.2.0 '@jest/pattern': 30.0.1 @@ -6609,14 +6787,14 @@ snapshots: '@jest/test-result': 30.2.0 '@jest/transform': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 24.10.2 + '@types/node': 24.10.3 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 4.3.1 exit-x: 0.2.2 graceful-fs: 4.2.11 jest-changed-files: 30.2.0 - jest-config: 30.2.0(@types/node@24.10.2)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3)) + jest-config: 30.2.0(@types/node@24.10.3)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3)) jest-haste-map: 30.2.0 jest-message-util: 30.2.0 jest-regex-util: 30.0.1 @@ -6643,7 +6821,7 @@ snapshots: dependencies: '@jest/fake-timers': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 24.10.2 + '@types/node': 24.10.3 jest-mock: 30.2.0 '@jest/expect-utils@30.2.0': @@ -6661,7 +6839,7 @@ snapshots: dependencies: '@jest/types': 30.2.0 '@sinonjs/fake-timers': 13.0.5 - '@types/node': 24.10.2 + '@types/node': 24.10.3 jest-message-util: 30.2.0 jest-mock: 30.2.0 jest-util: 30.2.0 @@ -6679,7 +6857,7 @@ snapshots: '@jest/pattern@30.0.1': dependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 jest-regex-util: 30.0.1 '@jest/reporters@30.2.0': @@ -6690,7 +6868,7 @@ snapshots: '@jest/transform': 30.2.0 '@jest/types': 30.2.0 '@jridgewell/trace-mapping': 0.3.31 - '@types/node': 24.10.2 + '@types/node': 24.10.3 chalk: 4.1.2 collect-v8-coverage: 1.0.3 exit-x: 0.2.2 @@ -6767,7 +6945,7 @@ snapshots: '@jest/schemas': 30.0.5 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 24.10.2 + '@types/node': 24.10.3 '@types/yargs': 17.0.35 chalk: 4.1.2 @@ -6924,12 +7102,12 @@ snapshots: bullmq: 5.65.1 tslib: 2.8.1 - '@nestjs/cli@11.0.14(@swc/cli@0.7.9(@swc/core@1.15.3)(chokidar@4.0.3))(@swc/core@1.15.3)(@types/node@24.10.2)': + '@nestjs/cli@11.0.14(@swc/cli@0.7.9(@swc/core@1.15.3)(chokidar@4.0.3))(@swc/core@1.15.3)(@types/node@24.10.3)': dependencies: '@angular-devkit/core': 19.2.19(chokidar@4.0.3) '@angular-devkit/schematics': 19.2.19(chokidar@4.0.3) - '@angular-devkit/schematics-cli': 19.2.19(@types/node@24.10.2)(chokidar@4.0.3) - '@inquirer/prompts': 7.10.1(@types/node@24.10.2) + '@angular-devkit/schematics-cli': 19.2.19(@types/node@24.10.3)(chokidar@4.0.3) + '@inquirer/prompts': 7.10.1(@types/node@24.10.3) '@nestjs/schematics': 11.0.9(chokidar@4.0.3)(typescript@5.9.3) ansis: 4.2.0 chokidar: 4.0.3 @@ -6990,12 +7168,6 @@ snapshots: optionalDependencies: '@nestjs/platform-express': 11.1.9(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.9) - '@nestjs/jwt@11.0.2(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))': - dependencies: - '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@types/jsonwebtoken': 9.0.10 - jsonwebtoken: 9.0.3 - '@nestjs/mapped-types@2.1.0(@nestjs/common@11.1.9(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2))(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)': dependencies: '@nestjs/common': 11.1.9(class-transformer@0.5.1)(class-validator@0.14.2)(reflect-metadata@0.2.2)(rxjs@7.8.2) @@ -7504,11 +7676,11 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.10.2 + '@types/node': 24.10.3 '@types/connect@3.4.38': dependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 '@types/cookie-parser@1.4.10(@types/express@5.0.6)': dependencies: @@ -7530,7 +7702,7 @@ snapshots: '@types/express-serve-static-core@5.1.0': dependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -7568,20 +7740,12 @@ snapshots: '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 - '@types/node': 24.10.2 + '@types/node': 24.10.3 '@types/methods@1.1.4': {} '@types/ms@2.1.0': {} - '@types/node@18.19.130': - dependencies: - undici-types: 5.26.5 - - '@types/node@24.10.2': - dependencies: - undici-types: 7.16.0 - '@types/node@24.10.3': dependencies: undici-types: 7.16.0 @@ -7606,9 +7770,9 @@ snapshots: dependencies: '@types/express': 5.0.6 - '@types/pg@8.15.6': + '@types/pg@8.16.0': dependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 pg-protocol: 1.10.3 pg-types: 2.2.0 @@ -7626,12 +7790,12 @@ snapshots: '@types/send@1.2.1': dependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 24.10.2 + '@types/node': 24.10.3 '@types/ssh2-sftp-client@9.0.6': dependencies: @@ -7639,7 +7803,7 @@ snapshots: '@types/ssh2@1.15.5': dependencies: - '@types/node': 18.19.130 + '@types/node': 24.10.3 '@types/stack-utils@2.0.3': {} @@ -7647,7 +7811,7 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 24.10.2 + '@types/node': 24.10.3 form-data: 4.0.5 '@types/supertest@6.0.3': @@ -8086,9 +8250,10 @@ snapshots: arg@4.1.3: optional: true - argon2@0.43.1: + argon2@0.44.0: dependencies: '@phc/format': 1.0.0 + cross-env: 10.1.0 node-addon-api: 8.5.0 node-gyp-build: 4.8.4 @@ -8522,6 +8687,16 @@ snapshots: color-name@1.1.4: {} + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.4 + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + colorette@2.0.20: {} combined-stream@1.0.8: @@ -8620,6 +8795,11 @@ snapshots: dependencies: luxon: 3.7.2 + cross-env@10.1.0: + dependencies: + '@epic-web/invariant': 1.0.0 + cross-spawn: 7.0.6 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -9656,9 +9836,9 @@ snapshots: inherits@2.0.4: {} - inquirer@8.2.7(@types/node@24.10.2): + inquirer@8.2.7(@types/node@24.10.3): dependencies: - '@inquirer/external-editor': 1.0.3(@types/node@24.10.2) + '@inquirer/external-editor': 1.0.3(@types/node@24.10.3) ansi-escapes: 4.3.2 chalk: 4.1.2 cli-cursor: 3.1.0 @@ -9711,6 +9891,8 @@ snapshots: is-arrayish@0.2.1: {} + is-arrayish@0.3.4: {} + is-async-function@2.1.1: dependencies: async-function: 1.0.0 @@ -9904,7 +10086,7 @@ snapshots: '@jest/expect': 30.2.0 '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 24.10.2 + '@types/node': 24.10.3 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.0 @@ -9924,15 +10106,15 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@30.2.0(@types/node@24.10.2)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3)): + jest-cli@30.2.0(@types/node@24.10.3)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3)) + '@jest/core': 30.2.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3)) '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.2.0(@types/node@24.10.2)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3)) + jest-config: 30.2.0(@types/node@24.10.3)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3)) jest-util: 30.2.0 jest-validate: 30.2.0 yargs: 17.7.2 @@ -9943,7 +10125,7 @@ snapshots: - supports-color - ts-node - jest-config@30.2.0(@types/node@24.10.2)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3)): + jest-config@30.2.0(@types/node@24.10.3)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3)): dependencies: '@babel/core': 7.28.5 '@jest/get-type': 30.1.0 @@ -9970,8 +10152,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 24.10.2 - ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3) + '@types/node': 24.10.3 + ts-node: 10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -10000,7 +10182,7 @@ snapshots: '@jest/environment': 30.2.0 '@jest/fake-timers': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 24.10.2 + '@types/node': 24.10.3 jest-mock: 30.2.0 jest-util: 30.2.0 jest-validate: 30.2.0 @@ -10008,7 +10190,7 @@ snapshots: jest-haste-map@30.2.0: dependencies: '@jest/types': 30.2.0 - '@types/node': 24.10.2 + '@types/node': 24.10.3 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -10047,7 +10229,7 @@ snapshots: jest-mock@30.2.0: dependencies: '@jest/types': 30.2.0 - '@types/node': 24.10.2 + '@types/node': 24.10.3 jest-util: 30.2.0 jest-pnp-resolver@1.2.3(jest-resolve@30.2.0): @@ -10081,7 +10263,7 @@ snapshots: '@jest/test-result': 30.2.0 '@jest/transform': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 24.10.2 + '@types/node': 24.10.3 chalk: 4.1.2 emittery: 0.13.1 exit-x: 0.2.2 @@ -10110,7 +10292,7 @@ snapshots: '@jest/test-result': 30.2.0 '@jest/transform': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 24.10.2 + '@types/node': 24.10.3 chalk: 4.1.2 cjs-module-lexer: 2.1.1 collect-v8-coverage: 1.0.3 @@ -10157,7 +10339,7 @@ snapshots: jest-util@30.2.0: dependencies: '@jest/types': 30.2.0 - '@types/node': 24.10.2 + '@types/node': 24.10.3 chalk: 4.1.2 ci-info: 4.3.1 graceful-fs: 4.2.11 @@ -10176,7 +10358,7 @@ snapshots: dependencies: '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 24.10.2 + '@types/node': 24.10.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -10185,24 +10367,24 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@30.2.0: dependencies: - '@types/node': 24.10.2 + '@types/node': 24.10.3 '@ungap/structured-clone': 1.3.0 jest-util: 30.2.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@30.2.0(@types/node@24.10.2)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3)): + jest@30.2.0(@types/node@24.10.3)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3)) + '@jest/core': 30.2.0(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3)) '@jest/types': 30.2.0 import-local: 3.2.0 - jest-cli: 30.2.0(@types/node@24.10.2)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3)) + jest-cli: 30.2.0(@types/node@24.10.3)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -10224,7 +10406,7 @@ snapshots: jsesc@3.1.0: {} - jsforce@3.10.10(@types/node@24.10.2): + jsforce@3.10.10(@types/node@24.10.3): dependencies: '@babel/runtime': 7.28.4 '@babel/runtime-corejs3': 7.28.4 @@ -10237,7 +10419,7 @@ snapshots: faye: 1.4.1 form-data: 4.0.5 https-proxy-agent: 5.0.1 - inquirer: 8.2.7(@types/node@24.10.2) + inquirer: 8.2.7(@types/node@24.10.3) multistream: 3.1.0 node-fetch: 2.7.0 open: 7.4.2 @@ -11039,7 +11221,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 24.10.2 + '@types/node': 24.10.3 long: 5.3.2 proxy-addr@2.0.7: @@ -11244,12 +11426,12 @@ snapshots: safer-buffer@2.1.2: {} - salesforce-pubsub-api-client@5.5.1(@types/node@24.10.2): + salesforce-pubsub-api-client@5.5.1(@types/node@24.10.3): dependencies: '@grpc/grpc-js': 1.14.2 '@grpc/proto-loader': 0.8.0 avro-js: 1.12.1 - jsforce: 3.10.10(@types/node@24.10.2) + jsforce: 3.10.10(@types/node@24.10.3) undici: 7.16.0 transitivePeerDependencies: - '@types/node' @@ -11349,6 +11531,32 @@ snapshots: setprototypeof@1.2.0: {} + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.1.2 + semver: 7.7.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + sharp@0.34.5: dependencies: '@img/colour': 1.0.0 @@ -11419,6 +11627,10 @@ snapshots: signal-exit@4.1.0: {} + simple-swizzle@0.2.4: + dependencies: + is-arrayish: 0.3.4 + sirv@2.0.4: dependencies: '@polka/url': 1.0.0-next.29 @@ -11736,12 +11948,12 @@ snapshots: dependencies: typescript: 5.9.3 - ts-jest@29.4.6(@babel/core@7.28.5)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@30.2.0(@types/node@24.10.2)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3)))(typescript@5.9.3): + ts-jest@29.4.6(@babel/core@7.28.5)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.28.5))(jest-util@30.2.0)(jest@30.2.0(@types/node@24.10.3)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.8 - jest: 30.2.0(@types/node@24.10.2)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3)) + jest: 30.2.0(@types/node@24.10.3)(ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -11756,14 +11968,14 @@ snapshots: babel-jest: 30.2.0(@babel/core@7.28.5) jest-util: 30.2.0 - ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.2)(typescript@5.9.3): + ts-node@10.9.2(@swc/core@1.15.3)(@types/node@24.10.3)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.10.2 + '@types/node': 24.10.3 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -11820,8 +12032,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - tw-animate-css@1.4.0: {} - tweetnacl@0.14.5: {} type-check@0.4.0: @@ -11917,8 +12127,6 @@ snapshots: underscore@1.13.7: {} - undici-types@5.26.5: {} - undici-types@7.16.0: {} undici@7.16.0: {}