diff --git a/docker-compose.yaml b/docker-compose.yaml index 64ae05b..60a626f 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -13,6 +13,17 @@ services: - valkey-data:/data ports: - "6379:6379" + postgres: + image: postgres:latest + ports: + - "${POSTGRES_PORT}:5432" + volumes: + - postgres-data:/var/lib/postgresql/data + environment: + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=${POSTGRES_DB} volumes: - valkey-data: \ No newline at end of file + valkey-data: + postgres-data: diff --git a/website/.env.example b/website/.env.example index 9e0c7cc..d6a9b7b 100644 --- a/website/.env.example +++ b/website/.env.example @@ -51,4 +51,10 @@ INERTIA_PUBLIC_TZ=Europe/Lisbon INERTIA_PUBLIC_EVENT_COUNTDOWN_DATE=2025-04-11 # Tuyau -INERTIA_PUBLIC_APP_URL=http://127.0.0.1:3333 \ No newline at end of file +INERTIA_PUBLIC_APP_URL=http://127.0.0.1:3333 + +DB_CONNECTION=postgres +POSTGRES_PORT=5432 +POSTGRES_USER=postgres +POSTGRES_PASSWORD= +POSTGRES_DB=postgres diff --git a/website/app/controllers/referrals_controller.ts b/website/app/controllers/referrals_controller.ts new file mode 100644 index 0000000..400519d --- /dev/null +++ b/website/app/controllers/referrals_controller.ts @@ -0,0 +1,34 @@ +import type { HttpContext } from '@adonisjs/core/http' +import { referralCodeCookie } from '../cookies/referrals_cookies.js' +import ReferralService from '#services/referral_service' +import { inject } from '@adonisjs/core' + +@inject() +export default class ReferralsController { + constructor(private referralService: ReferralService) {} + + async showReferralLink(ctx: HttpContext) { + const user = ctx.auth.getUserOrFail() + const referralLink = await this.referralService.getReferralLink(user) + + return ctx.inertia.render('referrals', { referralLink }) + } + + async link(ctx: HttpContext) { + const referralCode = ctx.params.referralCode as string + const referrer = await this.referralService.getReferrerByCode(referralCode) + + ctx.logger.debug(referrer, "Referrer with code %s", referralCode) + + if (referrer) { + const user = ctx.auth.user + if (user) { + await this.referralService.linkUserToReferrer(user, referrer) + } else { + referralCodeCookie.set(ctx, referralCode, { maxAge: 7*24*3600 }) + } + } + + return ctx.response.redirect().toRoute('pages:home') + } +} diff --git a/website/app/cookies/referrals_cookies.ts b/website/app/cookies/referrals_cookies.ts new file mode 100644 index 0000000..c65a8de --- /dev/null +++ b/website/app/cookies/referrals_cookies.ts @@ -0,0 +1,3 @@ +import { TypedCookie } from "#lib/adonisjs/cookies.js"; + +export const referralCodeCookie = new TypedCookie('referrer') \ No newline at end of file diff --git a/website/app/jobs/update_order_status.ts b/website/app/jobs/update_order_status.ts index 140a936..4172d77 100644 --- a/website/app/jobs/update_order_status.ts +++ b/website/app/jobs/update_order_status.ts @@ -5,6 +5,8 @@ import { Job } from 'adonisjs-jobs' import ConfirmPaymentNotification from '#mails/confirm_payment_notification' import mail from '@adonisjs/mail/services/main' import db from '@adonisjs/lucid/services/db' +import app from '@adonisjs/core/services/app' +import User from '#models/user' type UpdateOrderStatusPayload = { requestId: string @@ -29,13 +31,18 @@ export default class UpdateOrderStatus extends Job { this.logger.info(`Order status is no longer pending: ${order.status}`) return // Exit if the status is no longer "Pending" } + const apiResponse = await axios.get( `https://api.ifthenpay.com/spg/payment/mbway/status?mbWayKey=${env.get('IFTHENPAY_MBWAY_KEY')}&requestId=${requestId}` ) if (apiResponse.status === 200) { - const status = apiResponse.data.Message + let status = apiResponse.data.Message if (status) { + if (app.inDev) { + status = "Success" + } + if (status === 'Pending') { await UpdateOrderStatus.dispatch({ requestId, email }, { delay: 10000 }) // Retry after 5 seconds this.logger.info(`Requeued job for requestId: ${requestId}`) @@ -54,7 +61,19 @@ export default class UpdateOrderStatus extends Job { const total = order.total const orderId = order.id + await mail.send(new ConfirmPaymentNotification(email, products, total, orderId)) + + const user = await User.find(order.userId) + if (user) { + await user.load('participantProfile') + const participantProfile = user.participantProfile + if (participantProfile) { + // FIXME - this is a hack + participantProfile.purchasedTicket = 'early-bird-with-housing' + await participantProfile.save() + } + } } } else { await UpdateOrderStatus.dispatch({ requestId, email }, { delay: 10000 }) // Retry after 5 seconds diff --git a/website/app/middleware/link_to_user_middleware.ts b/website/app/middleware/link_to_user_middleware.ts new file mode 100644 index 0000000..142be08 --- /dev/null +++ b/website/app/middleware/link_to_user_middleware.ts @@ -0,0 +1,30 @@ +import type { HttpContext } from '@adonisjs/core/http' +import type { NextFn } from '@adonisjs/core/types/http' +import { referralCodeCookie } from '../cookies/referrals_cookies.js' +import ReferralService from '#services/referral_service' +import { inject } from '@adonisjs/core' + +@inject() +export default class LinkToUserMiddleware { + constructor(private referralService: ReferralService) {} + + async handle(ctx: HttpContext, next: NextFn) { + const referralCode = referralCodeCookie.get(ctx) + + if (referralCode) { + if (!ctx.auth.authenticationAttempted) await ctx.auth.check() + + const user = ctx.auth.user + if (user) { + referralCodeCookie.clear(ctx) + + const referrer = await this.referralService.getReferrerByCode(referralCode) + if (referrer) { + await this.referralService.linkUserToReferrer(user, referrer) + } + } + } + + return next() + } +} diff --git a/website/app/models/participant_profile.ts b/website/app/models/participant_profile.ts index 29f6757..18f48cb 100644 --- a/website/app/models/participant_profile.ts +++ b/website/app/models/participant_profile.ts @@ -17,6 +17,10 @@ export default class ParticipantProfile extends BaseModel { @column.dateTime({ autoCreate: true, autoUpdate: true }) declare updatedAt: DateTime + // Ticket Info + @column() + declare purchasedTicket: "early-bird-without-housing" | "early-bird-with-housing" | null + // General Info @column() diff --git a/website/app/models/promoter_profile.ts b/website/app/models/promoter_profile.ts new file mode 100644 index 0000000..2b0a68a --- /dev/null +++ b/website/app/models/promoter_profile.ts @@ -0,0 +1,18 @@ +import { DateTime } from 'luxon' +import { BaseModel, column, hasOne } from '@adonisjs/lucid/orm' +import User from './user.js' +import type { HasOne } from '@adonisjs/lucid/types/relations' + +export default class PromoterProfile extends BaseModel { + @column({ isPrimary: true }) + declare id: number + + @hasOne(() => User) + declare user: HasOne + + @column.dateTime({ autoCreate: true }) + declare createdAt: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + declare updatedAt: DateTime +} diff --git a/website/app/models/user.ts b/website/app/models/user.ts index 49e82c8..e9bd56c 100644 --- a/website/app/models/user.ts +++ b/website/app/models/user.ts @@ -1,8 +1,9 @@ import { DateTime } from 'luxon' import { BaseModel, belongsTo, column, hasMany } from '@adonisjs/lucid/orm' -import ParticipantProfile from './participant_profile.js' -import type { BelongsTo, HasMany } from '@adonisjs/lucid/types/relations' import Account from './account.js' +import type { BelongsTo, HasMany } from '@adonisjs/lucid/types/relations' +import PromoterProfile from './promoter_profile.js' +import ParticipantProfile from './participant_profile.js' export default class User extends BaseModel { @column({ isPrimary: true }) @@ -23,7 +24,33 @@ export default class User extends BaseModel { @hasMany(() => Account) declare accounts: HasMany - // Profiles + // Referrals + + @column() + declare referringPromoterId: number | null + + @belongsTo(() => User, { + foreignKey: 'promoterId', + }) + declare referringPromoter: BelongsTo + + @column() + declare referrerId: number | null + + @belongsTo(() => User, { + foreignKey: 'referrerId', + }) + declare referrer: BelongsTo + + // PromoterInfo + + @column() + declare promoterProfileId: number | null + + @belongsTo(() => PromoterProfile) + declare promoterProfile: BelongsTo + + // ParticipantProfile @column() declare participantProfileId: number | null @@ -33,7 +60,42 @@ export default class User extends BaseModel { // Functions + get role() { + if (this.isParticipant()) return 'participant' as const + if (this.isPromoter()) return 'promoter' as const + return 'unknown' as const + } + + isPromoter() { + return this.promoterProfileId !== null + } + + isParticipant() { + return this.participantProfileId !== null + } + isEmailVerified() { return this.emailVerifiedAt !== null } + + wasReferred() { + return this.referrerId !== null + } + + static async hasPurchasedTicket(user: User) { + if (!user.isParticipant()) return false + + await user.load('participantProfile') + return !!user.participantProfile.purchasedTicket + } + + static async getReferringPromoter(user: User) { + await user.load('referringPromoter') + return user.referringPromoter + } + + static async getReferrer(user: User) { + await user.load('referrer') + return user.referrer + } } diff --git a/website/app/services/referral_service.ts b/website/app/services/referral_service.ts new file mode 100644 index 0000000..f9cd2e6 --- /dev/null +++ b/website/app/services/referral_service.ts @@ -0,0 +1,141 @@ +import User from '#models/user' +import Sqids from 'sqids' +import { buildUrl } from '../url.js' + +// const POINTS_FOR_PROMOTER = 20 +// const POINTS_FOR_PARTICIPANT = 10 + +const sqids = new Sqids({ + minLength: 8, +}) + +export default class ReferralService { + // Low-level encoding/decoding + + #encode(id: number) { + return sqids.encode([id]) + } + + #decode(hashId: string): number | null { + const values = sqids.decode(hashId) + + if (values.length !== 1) return null + return values[0] + } + + // To be moved to a policy once bouncer is installed + + async canUserRefer(user: User) { + if (user.isPromoter()) + return true + + return await User.hasPurchasedTicket(user) + } + + async canUserBeLinked(user: User) { + return !user.isPromoter() && !user.wasReferred() && !await User.hasPurchasedTicket(user) + } + + // High-level methods + + async #getReferralCode(user: User) { + if (!await this.canUserRefer(user)) { + return null + } + + return this.#encode(user.id) + } + + async getReferralLink(user: User) { + const referralCode = await this.#getReferralCode(user) + if (!referralCode) { + return null + } + + return buildUrl() + .params({ referralCode: referralCode }) + .make('actions:referrals.link') + } + + async getReferrerByCode(referralCode: string): Promise { + const referralUserId = this.#decode(referralCode) + if (!referralUserId) return null + + const referrer = await User.find(referralUserId) + if (!referrer || !await this.canUserRefer(referrer)) return null + + return referrer + } + + async linkUserToReferrer(referredUser: User, referrer: User) { + if (!await this.canUserBeLinked(referredUser)) { + return + } + + await referredUser.related('referrer').associate(referrer) + + const referringPromoter = referrer.isPromoter() + ? referrer + : referrer.referringPromoterId !== null + ? await User.getReferringPromoter(referrer) + : null + + if (referringPromoter) { + await referredUser.related('referringPromoter').associate(referringPromoter) + } + } + + // To be moved to the points system, not implemented at the referral system level + // async handlePointAttribution(referredUser: User, referralCode: string) { + // // referredUser must be a participant + // if (!referredUser.isParticipant()) + // return + + // const referralUserId = ReferralService.decode(referralCode) + // if (!referralUserId) return + + // const referralUser = await User.find(referralUserId) + // if (!referralUser) return + + // if (referralUser.isPromoter()) { + + // // If the referralUser is a promoter + // // give points to the referralUser + // await db.transaction(async (trx) => { + // referralUser.useTransaction(trx) + // referredUser.useTransaction(trx) + + // referralUser.points += POINTS_FOR_PROMOTER + + // await referredUser.related('rootReferrer').associate(referralUser) + // await referredUser.related('referrer').associate(referralUser) + // referralUser.save() + // }) + // } else if (referralUser.isParticipant()) { + // const referralPromoter: User | null = referralUser.rootReferrerId !== null + // ? await User.find(referralUser.rootReferrerId) + // : null; + + // // If the referralUser is a participant and was + // // previously referred by a promoter, give points + // // to the referralUser and to the promoter, else + // // give only to the referralUser + // await db.transaction(async (trx) => { + // referralUser.useTransaction(trx) + // referredUser.useTransaction(trx) + // referralPromoter?.useTransaction(trx) + + // referralUser.points += POINTS_FOR_PARTICIPANT + // if (referralPromoter !== null && referralPromoter.isPromoter()) { + // await referredUser.related('referredByPromoter').associate(referralPromoter) + // referralPromoter.points += POINTS_FOR_PROMOTER - POINTS_FOR_PARTICIPANT + // referralPromoter.save() + // } + // await referralUser.save() + + // await referredUser.related('referredByUser').associate(referralUser) + // await referredUser.save() + // }) + // } + // } +} diff --git a/website/config/inertia.ts b/website/config/inertia.ts index 1a1c084..c0e1798 100644 --- a/website/config/inertia.ts +++ b/website/config/inertia.ts @@ -6,7 +6,7 @@ import type { InferSharedProps } from '@adonisjs/inertia/types' export type AuthenticationData = | { state: 'disabled' } | { state: 'unauthenticated' } - | { state: 'authenticated'; user: Pick } + | { state: 'authenticated'; user: Pick } const inertiaConfig = defineConfig({ /** @@ -26,7 +26,8 @@ const inertiaConfig = defineConfig({ const user = auth.user if (!user) return { state: 'unauthenticated' } - return { state: 'authenticated', user: { email: user.email } } + await user.load('participantProfile') + return { state: 'authenticated', user: { email: user.email, role: user.role } } }, }, diff --git a/website/database/migrations/1739294506253_create_promoter_profiles_table.ts b/website/database/migrations/1739294506253_create_promoter_profiles_table.ts new file mode 100644 index 0000000..eff020e --- /dev/null +++ b/website/database/migrations/1739294506253_create_promoter_profiles_table.ts @@ -0,0 +1,16 @@ +import { BaseSchema } from '@adonisjs/lucid/schema' + +export default class extends BaseSchema { + protected tableName = 'promoter_profiles' + + async up() { + this.schema.createTable(this.tableName, (table) => { + table.increments('id') + table.timestamps({ defaultToNow: true }) + }) + } + + async down() { + this.schema.dropTable(this.tableName) + } +} \ No newline at end of file diff --git a/website/database/migrations/1739294511724_alter_users_table.ts b/website/database/migrations/1739294511724_alter_users_table.ts new file mode 100644 index 0000000..83b2d8d --- /dev/null +++ b/website/database/migrations/1739294511724_alter_users_table.ts @@ -0,0 +1,32 @@ +import { BaseSchema } from '@adonisjs/lucid/schema' + +export default class extends BaseSchema { + protected tableName = 'users' + + async up() { + this.schema.alterTable(this.tableName, (table) => { + table.integer('referring_promoter_id') + .references('id') + .inTable('users') + + table.integer('referrer_id') + .references('id') + .inTable('users') + + table.integer('promoter_profile_id') + .unique() + .references('id') + .inTable('promoter_profiles') + }) + } + + async down() { + this.schema.alterTable(this.tableName, (table) => { + table.dropColumn('promoter_profile_id') + + table.dropColumn('referrer_id') + + table.dropColumn('root_referrer_id') + }) + } +} diff --git a/website/database/migrations/1739512417906_alter_participant_profiles_table.ts b/website/database/migrations/1739512417906_alter_participant_profiles_table.ts new file mode 100644 index 0000000..ae32113 --- /dev/null +++ b/website/database/migrations/1739512417906_alter_participant_profiles_table.ts @@ -0,0 +1,17 @@ +import { BaseSchema } from '@adonisjs/lucid/schema' + +export default class extends BaseSchema { + protected tableName = 'participant_profiles' + + async up() { + this.schema.alterTable(this.tableName, (table) => { + table.string('purchased_ticket').nullable() + }) + } + + async down() { + this.schema.alterTable(this.tableName, (table) => { + table.dropColumn('purchased_ticket') + }) + } +} \ No newline at end of file diff --git a/website/database/seeders/2_account_seeder.dev.ts b/website/database/seeders/2_account_seeder.dev.ts new file mode 100644 index 0000000..dc0def1 --- /dev/null +++ b/website/database/seeders/2_account_seeder.dev.ts @@ -0,0 +1,49 @@ +import { logger } from '#lib/adonisjs/logger.js' +import ParticipantProfile from '#models/participant_profile' +// import PromoterProfile from '#models/promoter_profile' +import User from '#models/user' +import app from '@adonisjs/core/services/app' +import { BaseSeeder } from '@adonisjs/lucid/seeders' +import { DateTime } from 'luxon' + +export default class extends BaseSeeder { + async run() { + if (!app.inDev) { + logger().info('Not running in development environment, skipping...') + return + } + + const email = 'test@eneiconf.pt' + + const user = new User() + user.email = email + user.emailVerifiedAt = DateTime.now() + + await user.related('accounts').create({ + id: `credentials:${email}`, + password: 'password', + }) + + const profile = await ParticipantProfile.create({ + firstName: 'Jorge', + lastName: 'Costa', + dateOfBirth: DateTime.fromObject({ year: 2003, month: 5, day: 9 }), + phone: '+351917777777', + university: 'pt.up.fe', + course: 'M.EIC', + curricularYear: '2', + finishedAt: null, + municipality: 'Braga', + heardAboutENEI: 'friends', + shirtSize: 'M', + isVegetarian: false, + isVegan: false, + transports: ['car'], + attendedBeforeEditions: [] + }) + + // const profile = await PromoterProfile.create({}) + + await user.related('participantProfile').associate(profile) + } +} \ No newline at end of file diff --git a/website/inertia/components/common/navbar.tsx b/website/inertia/components/common/navbar.tsx index 00674fb..94223fd 100644 --- a/website/inertia/components/common/navbar.tsx +++ b/website/inertia/components/common/navbar.tsx @@ -85,7 +85,7 @@ export function Navbar({ className }: { className?: string }) { className={cn('w-full transition-colors duration-300', !onTop && 'bg-enei-blue', className)} > -
+
Ir para a página inicial - {auth.state === 'authenticated' ? ( - - ) : ( - auth.state === 'unauthenticated' && - )} +
+
+ + Referenciações + +
+
+ {auth.state === 'authenticated' ? ( + + ) : ( + auth.state === 'unauthenticated' && + )} +
+
diff --git a/website/inertia/components/common/page.tsx b/website/inertia/components/common/page.tsx index 74d466d..27e5317 100644 --- a/website/inertia/components/common/page.tsx +++ b/website/inertia/components/common/page.tsx @@ -3,6 +3,24 @@ import React from 'react' import { cn } from '~/lib/utils' import { Navbar } from './navbar' import {Toaster} from '~/components/ui/toaster' +import { useAuth } from '~/hooks/use_auth' +import { Notification } from '../notifications' + +function PromoterNotification() { + const auth = useAuth() + + if (auth.state !== 'authenticated' || auth.user.role !== 'promoter') + return null + + return ( + +
+

Conta de Promotor

+
+
+ ) +} + export default function Page({ title, className, @@ -16,8 +34,8 @@ export default function Page({
+ - {children}
) diff --git a/website/inertia/components/ui/label.tsx b/website/inertia/components/ui/label.tsx index 9a5caaf..da58f00 100644 --- a/website/inertia/components/ui/label.tsx +++ b/website/inertia/components/ui/label.tsx @@ -4,7 +4,7 @@ import { cva, type VariantProps } from 'class-variance-authority' import { cn } from '~/lib/utils' -const labelVariants = cva( +export const labelVariants = cva( 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70' ) diff --git a/website/inertia/pages/referrals/page.tsx b/website/inertia/pages/referrals/page.tsx new file mode 100644 index 0000000..fb627cd --- /dev/null +++ b/website/inertia/pages/referrals/page.tsx @@ -0,0 +1,70 @@ +import ReferralsController from '#controllers/referrals_controller' +import { InferPageProps } from '@adonisjs/inertia/types' +import { Link } from '@tuyau/inertia/react' +import { CircleAlert } from 'lucide-react' +import Container from '~/components/common/containers' +import CardContainer from '~/components/common/containers/card' +import Page from '~/components/common/page' +import { buttonVariants } from '~/components/ui/button' +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '~/components/ui/card' +import { Input } from '~/components/ui/input' +import { Label } from '~/components/ui/label' +import { cn } from '~/lib/utils' + +export default function ReferralsPage({ + referralLink, +}: InferPageProps) { + const hasReferralLink = referralLink !== null + return ( + + + + + + +

Referenciações

+
+ + No ENEI, ao convidares pessoas para o evento, ganhas pontos para trocar por + recompensas! + +
+ +
+ + +

+ Partilha o teu link de referenciação com os teus amigos ou colegas. +
+ Por cada pessoa que se inscrever e comprar bilhete para o ENEI 2025 usando o teu + link, receberás pontos como recompensa. +

+
+ {!hasReferralLink && ( +
+ O link de referenciação só ficará + disponível quando{' '} + + comprares o teu bilhete para o ENEI 2025 + + . +
+ )} +
+
+
+
+
+ ) +} diff --git a/website/lib/adonisjs/cookies.ts b/website/lib/adonisjs/cookies.ts new file mode 100644 index 0000000..f7bb9d5 --- /dev/null +++ b/website/lib/adonisjs/cookies.ts @@ -0,0 +1,70 @@ +import { HttpContext } from '@adonisjs/core/http' +import type { CookieOptions } from '@adonisjs/core/types/http' + +type TypedCookieOptions = { kind: 'signed' } | { kind: 'encrypted' } + +const defaultOptions: TypedCookieOptions = { kind: 'signed' } + +class RawSignedCookie { + constructor(public name: string) {} + + get(ctx: HttpContext, defaultValue?: string) { + return ctx.request.cookie(this.name, defaultValue) + } + + set(ctx: HttpContext, value: any, options?: Partial) { + ctx.response.cookie(this.name, value, options) + } +} + +class RawEncryptedCookie { + constructor(public name: string) {} + + get(ctx: HttpContext, defaultValue?: string) { + return ctx.request.encryptedCookie(this.name, defaultValue) + } + + set(ctx: HttpContext, value: any, options?: Partial) { + ctx.response.encryptedCookie(this.name, value, options) + } +} + +export class TypedCookie { + #cookie: RawSignedCookie | RawEncryptedCookie + + constructor( + public name: string, + options?: Partial + ) { + const resolvedOptions = { ...defaultOptions, ...options } + + switch (resolvedOptions.kind) { + case 'signed': + this.#cookie = new RawSignedCookie(name) + break + case 'encrypted': + this.#cookie = new RawEncryptedCookie(name) + break + default: + throw new Error('Invalid cookie kind') + } + } + + get(ctx: HttpContext, defaultValue?: T) { + // The cast below is needed because @adonijs/core/http + // incorrectly enforces the type of the cookie value to be a string + // + // https://github.com/adonisjs/http-server/blob/d23061c14fda34ca082e731f16b161a8e1f4a2b3/src/request.ts#L894 + + const value = this.#cookie.get(ctx, defaultValue as unknown as string) + return value as T | null + } + + set(ctx: HttpContext, value: T, options?: Partial) { + this.#cookie.set(ctx, value, options) + } + + clear(ctx: HttpContext) { + ctx.response.clearCookie(this.name) + } +} diff --git a/website/package.json b/website/package.json index 58c97e2..63ce22d 100644 --- a/website/package.json +++ b/website/package.json @@ -155,6 +155,7 @@ "recharts": "^2.15.0", "reflect-metadata": "^0.2.2", "sonner": "^1.7.2", + "sqids": "^0.3.0", "tailwind-merge": "^2.6.0", "tailwindcss-animate": "^1.0.7", "use-resize-observer": "^9.1.0", diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index 8e3f668..d71faf1 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -16,7 +16,7 @@ importers: version: 5.0.2(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)) '@adonisjs/auth': specifier: ^9.3.1 - version: 9.3.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/lucid@21.6.0(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@vinejs/vine@3.0.0)(better-sqlite3@11.8.1)(luxon@3.5.0)(pg@8.13.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(@japa/plugin-adonisjs@4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@japa/runner@4.2.0)) + version: 9.3.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/lucid@21.6.0(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@vinejs/vine@3.0.0)(better-sqlite3@11.8.1)(luxon@3.5.0)(pg@8.13.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(@japa/plugin-adonisjs@4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@japa/runner@4.1.0)) '@adonisjs/core': specifier: ^6.17.1 version: 6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1) @@ -25,7 +25,7 @@ importers: version: 2.2.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)) '@adonisjs/inertia': specifier: ^3.0.1 - version: 3.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(@adonisjs/vite@4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/shield@8.1.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(edge.js@6.2.1))(edge.js@6.2.1)(vite@6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0)))(edge.js@6.2.1) + version: 3.0.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(@adonisjs/vite@4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/shield@8.1.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(edge.js@6.2.1))(edge.js@6.2.1)(vite@6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0)))(edge.js@6.2.1) '@adonisjs/limiter': specifier: ^2.3.3 version: 2.3.3(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/lucid@21.6.0(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@vinejs/vine@3.0.0)(better-sqlite3@11.8.1)(luxon@3.5.0)(pg@8.13.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))) @@ -34,7 +34,7 @@ importers: version: 21.6.0(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@vinejs/vine@3.0.0)(better-sqlite3@11.8.1)(luxon@3.5.0)(pg@8.13.1) '@adonisjs/mail': specifier: ^9.2.2 - version: 9.2.2(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@aws-sdk/client-ses@3.734.0)(@types/luxon@3.4.2)(@types/node@22.12.0)(dayjs@1.11.13)(edge.js@6.2.1)(luxon@3.5.0)(moment@2.30.1) + version: 9.2.2(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@aws-sdk/client-ses@3.734.0)(@types/luxon@3.4.2)(@types/node@22.10.10)(dayjs@1.11.13)(edge.js@6.2.1)(luxon@3.5.0)(moment@2.30.1) '@adonisjs/redis': specifier: ^9.1.0 version: 9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)) @@ -49,7 +49,7 @@ importers: version: 1.1.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)) '@adonisjs/vite': specifier: ^4.0.0 - version: 4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/shield@8.1.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(edge.js@6.2.1))(edge.js@6.2.1)(vite@6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0)) + version: 4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/shield@8.1.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(edge.js@6.2.1))(edge.js@6.2.1)(vite@6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0)) '@aws-sdk/client-ses': specifier: ^3.734.0 version: 3.734.0 @@ -154,7 +154,7 @@ importers: version: 1.0.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tanstack/react-virtual': specifier: ^3.11.2 - version: 3.11.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 3.13.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tuyau/client': specifier: ^0.2.4 version: 0.2.4 @@ -187,7 +187,7 @@ importers: version: 4.16.5 chrono-node: specifier: ^2.7.7 - version: 2.7.7 + version: 2.7.8 class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -217,7 +217,7 @@ importers: version: 1.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) jotai: specifier: ^2.11.1 - version: 2.11.1(@types/react@19.0.8)(react@19.0.0) + version: 2.11.3(@types/react@19.0.8)(react@19.0.0) lucide-react: specifier: ^0.473.0 version: 0.473.0(react@19.0.0) @@ -238,7 +238,7 @@ importers: version: 19.0.0 react-day-picker: specifier: ^9.5.0 - version: 9.5.1(react@19.0.0) + version: 9.5.0(react@19.0.0) react-dom: specifier: ^19.0.0 version: 19.0.0(react@19.0.0) @@ -256,13 +256,16 @@ importers: version: 2.1.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0) recharts: specifier: ^2.15.0 - version: 2.15.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.15.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) reflect-metadata: specifier: ^0.2.2 version: 0.2.2 sonner: specifier: ^1.7.2 - version: 1.7.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 1.7.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + sqids: + specifier: ^0.3.0 + version: 0.3.0 tailwind-merge: specifier: ^2.6.0 version: 2.6.0 @@ -284,7 +287,7 @@ importers: version: 7.8.2(typescript@5.7.3) '@adonisjs/eslint-config': specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(eslint@9.19.0(jiti@1.21.7))(prettier@3.4.2)(typescript@5.7.3) + version: 2.0.0-beta.7(eslint@9.18.0(jiti@1.21.7))(prettier@3.4.2)(typescript@5.7.3) '@adonisjs/prettier-config': specifier: ^1.4.0 version: 1.4.0 @@ -293,13 +296,13 @@ importers: version: 1.4.0 '@japa/assert': specifier: ^4.0.1 - version: 4.0.1(@japa/runner@4.2.0) + version: 4.0.1(@japa/runner@4.1.0) '@japa/plugin-adonisjs': specifier: ^4.0.0 - version: 4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@japa/runner@4.2.0) + version: 4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@japa/runner@4.1.0) '@japa/runner': specifier: ^4.1.0 - version: 4.2.0 + version: 4.1.0 '@shadx/cli': specifier: ^1.0.6 version: 1.0.6 @@ -314,7 +317,7 @@ importers: version: 3.4.2 '@types/node': specifier: ^22.10.10 - version: 22.12.0 + version: 22.10.10 '@types/react': specifier: ^19.0.8 version: 19.0.8 @@ -323,13 +326,13 @@ importers: version: 19.0.3(@types/react@19.0.8) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0)) + version: 4.3.4(vite@6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.5.1) eslint: specifier: ^9.18.0 - version: 9.19.0(jiti@1.21.7) + version: 9.18.0(jiti@1.21.7) eslint-plugin-only-warn: specifier: ^1.1.0 version: 1.1.0 @@ -341,7 +344,7 @@ importers: version: 9.1.7 lint-staged: specifier: ^15.4.2 - version: 15.4.3 + version: 15.4.2 openapi-types: specifier: ^12.1.3 version: 12.1.3 @@ -356,19 +359,19 @@ importers: version: 3.0.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) shadcn: specifier: ^2.1.8 - version: 2.3.0(typescript@5.7.3) + version: 2.1.8(typescript@5.7.3) tailwindcss: specifier: ^3.4.17 version: 3.4.17 ts-node-maintained: specifier: ^10.9.5 - version: 10.9.5(@swc/core@1.10.9(@swc/helpers@0.5.15))(@types/node@22.12.0)(typescript@5.7.3) + version: 10.9.5(@swc/core@1.10.9(@swc/helpers@0.5.15))(@types/node@22.10.10)(typescript@5.7.3) typescript: specifier: ~5.7.3 version: 5.7.3 vite: specifier: ^6.0.11 - version: 6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0) + version: 6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0) packages: @@ -512,14 +515,14 @@ packages: '@adonisjs/fold': ^10.0.1 '@adonisjs/logger': ^6.0.1 - '@adonisjs/inertia@3.1.0': - resolution: {integrity: sha512-BbuZyba7pVjN40AiyPNzOd0ArIikFsvPLz80Vs1Z2KUBsRR1qlIpH/tKiCsLgswFsSDeWYQwed97jUpvRG/tjw==} + '@adonisjs/inertia@3.0.1': + resolution: {integrity: sha512-4yANT28aW3aycejhEgrdsfrXT6fXshO9wrZy4DIUZ7aZ0EI/HyseXP90q46W3m/NxdLN3cI9eWmsWzeM13aeWg==} engines: {node: '>=20.6.0'} peerDependencies: '@adonisjs/core': ^6.9.1 '@adonisjs/session': ^7.4.0 '@adonisjs/vite': ^4.0.0 - '@japa/api-client': ^2.0.0 || ^3.0.0 + '@japa/api-client': ^2.0.0 edge.js: ^6.0.0 peerDependenciesMeta: '@japa/api-client': @@ -1253,8 +1256,8 @@ packages: resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.19.0': - resolution: {integrity: sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==} + '@eslint/js@9.18.0': + resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.5': @@ -1439,8 +1442,8 @@ packages: resolution: {integrity: sha512-+vaqMiPnVaxlKH1sAwRQ80AwzlPysPKivhB8q1I2+BGe35lNrfiHKGMC52fuGAZBNuH5W2nInSCxr4cN/BTEIQ==} engines: {node: '>=18.16.0'} - '@japa/errors-printer@4.1.2': - resolution: {integrity: sha512-exl/r07ssJhEEsMdFT2sXgP1sV7Tp3mZvYUEDMXZ8YjWZPHTFLLcA7o9q9FJSSB1ITrEIbx2SWTB+2fFUaZ3NA==} + '@japa/errors-printer@4.1.0': + resolution: {integrity: sha512-PdmNFcVYU//vbVeLR+lEOT8DckVgoVVx/JxuTulM/IHCEzz7zsYBY9BYEjcIxXY34nAMqLAkRSmnjUnL0tiJVA==} engines: {node: '>=18.16.0'} '@japa/plugin-adonisjs@4.0.0': @@ -1460,8 +1463,8 @@ packages: playwright: optional: true - '@japa/runner@4.2.0': - resolution: {integrity: sha512-e3BFn1rca/OTiagilkmRTrLVhl00iC/LrY5j4Ns/VZDONYHs9BKAbHaImxjD1zoHMEhwQEF+ce7fgMO/BK+lfg==} + '@japa/runner@4.1.0': + resolution: {integrity: sha512-tbKp4yuhy+LjOPEWOF9YaB9lhmqVvrcpAkkLysG2q3gKY7FFSaMaUlVc25eufuvZ7KMW+Gx03Sma05/vB4EztQ==} engines: {node: '>=18.16.0'} '@jest/schemas@29.6.3': @@ -2456,98 +2459,98 @@ packages: peerDependencies: '@redis/client': ^1.0.0 - '@rollup/rollup-android-arm-eabi@4.32.1': - resolution: {integrity: sha512-/pqA4DmqyCm8u5YIDzIdlLcEmuvxb0v8fZdFhVMszSpDTgbQKdw3/mB3eMUHIbubtJ6F9j+LtmyCnHTEqIHyzA==} + '@rollup/rollup-android-arm-eabi@4.32.0': + resolution: {integrity: sha512-G2fUQQANtBPsNwiVFg4zKiPQyjVKZCUdQUol53R8E71J7AsheRMV/Yv/nB8giOcOVqP7//eB5xPqieBYZe9bGg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.32.1': - resolution: {integrity: sha512-If3PDskT77q7zgqVqYuj7WG3WC08G1kwXGVFi9Jr8nY6eHucREHkfpX79c0ACAjLj3QIWKPJR7w4i+f5EdLH5Q==} + '@rollup/rollup-android-arm64@4.32.0': + resolution: {integrity: sha512-qhFwQ+ljoymC+j5lXRv8DlaJYY/+8vyvYmVx074zrLsu5ZGWYsJNLjPPVJJjhZQpyAKUGPydOq9hRLLNvh1s3A==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.32.1': - resolution: {integrity: sha512-zCpKHioQ9KgZToFp5Wvz6zaWbMzYQ2LJHQ+QixDKq52KKrF65ueu6Af4hLlLWHjX1Wf/0G5kSJM9PySW9IrvHA==} + '@rollup/rollup-darwin-arm64@4.32.0': + resolution: {integrity: sha512-44n/X3lAlWsEY6vF8CzgCx+LQaoqWGN7TzUfbJDiTIOjJm4+L2Yq+r5a8ytQRGyPqgJDs3Rgyo8eVL7n9iW6AQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.32.1': - resolution: {integrity: sha512-sFvF+t2+TyUo/ZQqUcifrJIgznx58oFZbdHS9TvHq3xhPVL9nOp+yZ6LKrO9GWTP+6DbFtoyLDbjTpR62Mbr3Q==} + '@rollup/rollup-darwin-x64@4.32.0': + resolution: {integrity: sha512-F9ct0+ZX5Np6+ZDztxiGCIvlCaW87HBdHcozUfsHnj1WCUTBUubAoanhHUfnUHZABlElyRikI0mgcw/qdEm2VQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.32.1': - resolution: {integrity: sha512-NbOa+7InvMWRcY9RG+B6kKIMD/FsnQPH0MWUvDlQB1iXnF/UcKSudCXZtv4lW+C276g3w5AxPbfry5rSYvyeYA==} + '@rollup/rollup-freebsd-arm64@4.32.0': + resolution: {integrity: sha512-JpsGxLBB2EFXBsTLHfkZDsXSpSmKD3VxXCgBQtlPcuAqB8TlqtLcbeMhxXQkCDv1avgwNjF8uEIbq5p+Cee0PA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.32.1': - resolution: {integrity: sha512-JRBRmwvHPXR881j2xjry8HZ86wIPK2CcDw0EXchE1UgU0ubWp9nvlT7cZYKc6bkypBt745b4bglf3+xJ7hXWWw==} + '@rollup/rollup-freebsd-x64@4.32.0': + resolution: {integrity: sha512-wegiyBT6rawdpvnD9lmbOpx5Sph+yVZKHbhnSP9MqUEDX08G4UzMU+D87jrazGE7lRSyTRs6NEYHtzfkJ3FjjQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.32.1': - resolution: {integrity: sha512-PKvszb+9o/vVdUzCCjL0sKHukEQV39tD3fepXxYrHE3sTKrRdCydI7uldRLbjLmDA3TFDmh418XH19NOsDRH8g==} + '@rollup/rollup-linux-arm-gnueabihf@4.32.0': + resolution: {integrity: sha512-3pA7xecItbgOs1A5H58dDvOUEboG5UfpTq3WzAdF54acBbUM+olDJAPkgj1GRJ4ZqE12DZ9/hNS2QZk166v92A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.32.1': - resolution: {integrity: sha512-9WHEMV6Y89eL606ReYowXuGF1Yb2vwfKWKdD1A5h+OYnPZSJvxbEjxTRKPgi7tkP2DSnW0YLab1ooy+i/FQp/Q==} + '@rollup/rollup-linux-arm-musleabihf@4.32.0': + resolution: {integrity: sha512-Y7XUZEVISGyge51QbYyYAEHwpGgmRrAxQXO3siyYo2kmaj72USSG8LtlQQgAtlGfxYiOwu+2BdbPjzEpcOpRmQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.32.1': - resolution: {integrity: sha512-tZWc9iEt5fGJ1CL2LRPw8OttkCBDs+D8D3oEM8mH8S1ICZCtFJhD7DZ3XMGM8kpqHvhGUTvNUYVDnmkj4BDXnw==} + '@rollup/rollup-linux-arm64-gnu@4.32.0': + resolution: {integrity: sha512-r7/OTF5MqeBrZo5omPXcTnjvv1GsrdH8a8RerARvDFiDwFpDVDnJyByYM/nX+mvks8XXsgPUxkwe/ltaX2VH7w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.32.1': - resolution: {integrity: sha512-FTYc2YoTWUsBz5GTTgGkRYYJ5NGJIi/rCY4oK/I8aKowx1ToXeoVVbIE4LGAjsauvlhjfl0MYacxClLld1VrOw==} + '@rollup/rollup-linux-arm64-musl@4.32.0': + resolution: {integrity: sha512-HJbifC9vex9NqnlodV2BHVFNuzKL5OnsV2dvTw6e1dpZKkNjPG6WUq+nhEYV6Hv2Bv++BXkwcyoGlXnPrjAKXw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.32.1': - resolution: {integrity: sha512-F51qLdOtpS6P1zJVRzYM0v6MrBNypyPEN1GfMiz0gPu9jN8ScGaEFIZQwteSsGKg799oR5EaP7+B2jHgL+d+Kw==} + '@rollup/rollup-linux-loongarch64-gnu@4.32.0': + resolution: {integrity: sha512-VAEzZTD63YglFlWwRj3taofmkV1V3xhebDXffon7msNz4b14xKsz7utO6F8F4cqt8K/ktTl9rm88yryvDpsfOw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.32.1': - resolution: {integrity: sha512-wO0WkfSppfX4YFm5KhdCCpnpGbtgQNj/tgvYzrVYFKDpven8w2N6Gg5nB6w+wAMO3AIfSTWeTjfVe+uZ23zAlg==} + '@rollup/rollup-linux-powerpc64le-gnu@4.32.0': + resolution: {integrity: sha512-Sts5DST1jXAc9YH/iik1C9QRsLcCoOScf3dfbY5i4kH9RJpKxiTBXqm7qU5O6zTXBTEZry69bGszr3SMgYmMcQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.32.1': - resolution: {integrity: sha512-iWswS9cIXfJO1MFYtI/4jjlrGb/V58oMu4dYJIKnR5UIwbkzR0PJ09O0PDZT0oJ3LYWXBSWahNf/Mjo6i1E5/g==} + '@rollup/rollup-linux-riscv64-gnu@4.32.0': + resolution: {integrity: sha512-qhlXeV9AqxIyY9/R1h1hBD6eMvQCO34ZmdYvry/K+/MBs6d1nRFLm6BOiITLVI+nFAAB9kUB6sdJRKyVHXnqZw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.32.1': - resolution: {integrity: sha512-RKt8NI9tebzmEthMnfVgG3i/XeECkMPS+ibVZjZ6mNekpbbUmkNWuIN2yHsb/mBPyZke4nlI4YqIdFPgKuoyQQ==} + '@rollup/rollup-linux-s390x-gnu@4.32.0': + resolution: {integrity: sha512-8ZGN7ExnV0qjXa155Rsfi6H8M4iBBwNLBM9lcVS+4NcSzOFaNqmt7djlox8pN1lWrRPMRRQ8NeDlozIGx3Omsw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.32.1': - resolution: {integrity: sha512-WQFLZ9c42ECqEjwg/GHHsouij3pzLXkFdz0UxHa/0OM12LzvX7DzedlY0SIEly2v18YZLRhCRoHZDxbBSWoGYg==} + '@rollup/rollup-linux-x64-gnu@4.32.0': + resolution: {integrity: sha512-VDzNHtLLI5s7xd/VubyS10mq6TxvZBp+4NRWoW+Hi3tgV05RtVm4qK99+dClwTN1McA6PHwob6DEJ6PlXbY83A==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.32.1': - resolution: {integrity: sha512-BLoiyHDOWoS3uccNSADMza6V6vCNiphi94tQlVIL5de+r6r/CCQuNnerf+1g2mnk2b6edp5dk0nhdZ7aEjOBsA==} + '@rollup/rollup-linux-x64-musl@4.32.0': + resolution: {integrity: sha512-qcb9qYDlkxz9DxJo7SDhWxTWV1gFuwznjbTiov289pASxlfGbaOD54mgbs9+z94VwrXtKTu+2RqwlSTbiOqxGg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.32.1': - resolution: {integrity: sha512-w2l3UnlgYTNNU+Z6wOR8YdaioqfEnwPjIsJ66KxKAf0p+AuL2FHeTX6qvM+p/Ue3XPBVNyVSfCrfZiQh7vZHLQ==} + '@rollup/rollup-win32-arm64-msvc@4.32.0': + resolution: {integrity: sha512-pFDdotFDMXW2AXVbfdUEfidPAk/OtwE/Hd4eYMTNVVaCQ6Yl8et0meDaKNL63L44Haxv4UExpv9ydSf3aSayDg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.32.1': - resolution: {integrity: sha512-Am9H+TGLomPGkBnaPWie4F3x+yQ2rr4Bk2jpwy+iV+Gel9jLAu/KqT8k3X4jxFPW6Zf8OMnehyutsd+eHoq1WQ==} + '@rollup/rollup-win32-ia32-msvc@4.32.0': + resolution: {integrity: sha512-/TG7WfrCAjeRNDvI4+0AAMoHxea/USWhAzf9PVDFHbcqrQ7hMMKp4jZIy4VEjk72AAfN5k4TiSMRXRKf/0akSw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.32.1': - resolution: {integrity: sha512-ar80GhdZb4DgmW3myIS9nRFYcpJRSME8iqWgzH2i44u+IdrzmiXVxeFnExQ5v4JYUSpg94bWjevMG8JHf1Da5Q==} + '@rollup/rollup-win32-x64-msvc@4.32.0': + resolution: {integrity: sha512-5hqO5S3PTEO2E5VjCePxv40gIgyS2KvO7E7/vvC/NbIW4SIRamkMr1hqj+5Y67fbBWv/bQLB6KelBQmXlyCjWA==} cpu: [x64] os: [win32] @@ -2589,8 +2592,8 @@ packages: resolution: {integrity: sha512-Igfg8lKu3dRVkTSEm98QpZUvKEOa71jDX4vKRcvJVyRc3UgN3j7vFMf0s7xLQhYmKa8kyJGQgUJDOV5V3neVlQ==} engines: {node: '>=18.0.0'} - '@smithy/core@3.1.2': - resolution: {integrity: sha512-htwQXkbdF13uwwDevz9BEzL5ABK+1sJpVQXywwGSH973AVOvisHNfpcB8A8761G6XgHoS2kHPqc9DqHJ2gp+/Q==} + '@smithy/core@3.1.1': + resolution: {integrity: sha512-hhUZlBWYuh9t6ycAcN90XOyG76C1AzwxZZgaCVPMYpWqqk9uMFo7HGG5Zu2cEhCJn7DdOi5krBmlibWWWPgdsw==} engines: {node: '>=18.0.0'} '@smithy/credential-provider-imds@4.0.1': @@ -2621,16 +2624,16 @@ packages: resolution: {integrity: sha512-OGXo7w5EkB5pPiac7KNzVtfCW2vKBTZNuCctn++TTSOMpe6RZO/n6WEC1AxJINn3+vWLKW49uad3lo/u0WJ9oQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.0.3': - resolution: {integrity: sha512-YdbmWhQF5kIxZjWqPIgboVfi8i5XgiYMM7GGKFMTvBei4XjNQfNv8sukT50ITvgnWKKKpOtp0C0h7qixLgb77Q==} + '@smithy/middleware-endpoint@4.0.2': + resolution: {integrity: sha512-Z9m67CXizGpj8CF/AW/7uHqYNh1VXXOn9Ap54fenWsCa0HnT4cJuE61zqG3cBkTZJDCy0wHJphilI41co/PE5g==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.0.4': - resolution: {integrity: sha512-wmxyUBGHaYUqul0wZiset4M39SMtDBOtUr2KpDuftKNN74Do9Y36Go6Eqzj9tL0mIPpr31ulB5UUtxcsCeGXsQ==} + '@smithy/middleware-retry@4.0.3': + resolution: {integrity: sha512-TiKwwQTwUDeDtwWW8UWURTqu7s6F3wN2pmziLU215u7bqpVT9Mk2oEvURjpRLA+5XeQhM68R5BpAGzVtomsqgA==} engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.0.2': - resolution: {integrity: sha512-Sdr5lOagCn5tt+zKsaW+U2/iwr6bI9p08wOkCp6/eL6iMbgdtc2R5Ety66rf87PeohR0ExI84Txz9GYv5ou3iQ==} + '@smithy/middleware-serde@4.0.1': + resolution: {integrity: sha512-Fh0E2SOF+S+P1+CsgKyiBInAt3o2b6Qk7YOp2W0Qx2XnfTdfMuSDKUEcnrtpxCzgKJnqXeLUZYqtThaP0VGqtA==} engines: {node: '>=18.0.0'} '@smithy/middleware-stack@4.0.1': @@ -2673,8 +2676,8 @@ packages: resolution: {integrity: sha512-nCe6fQ+ppm1bQuw5iKoeJ0MJfz2os7Ic3GBjOkLOPtavbD1ONoyE3ygjBfz2ythFWm4YnRm6OxW+8p/m9uCoIA==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.1.3': - resolution: {integrity: sha512-A2Hz85pu8BJJaYFdX8yb1yocqigyqBzn+OVaVgm+Kwi/DkN8vhN2kbDVEfADo6jXf5hPKquMLGA3UINA64UZ7A==} + '@smithy/smithy-client@4.1.2': + resolution: {integrity: sha512-0yApeHWBqocelHGK22UivZyShNxFbDNrgREBllGh5Ws0D0rg/yId/CJfeoKKpjbfY2ju8j6WgDUGZHYQmINZ5w==} engines: {node: '>=18.0.0'} '@smithy/types@4.1.0': @@ -2709,12 +2712,12 @@ packages: resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.0.4': - resolution: {integrity: sha512-Ej1bV5sbrIfH++KnWxjjzFNq9nyP3RIUq2c9Iqq7SmMO/idUR24sqvKH2LUQFTSPy/K7G4sB2m8n7YYlEAfZaw==} + '@smithy/util-defaults-mode-browser@4.0.3': + resolution: {integrity: sha512-7c5SF1fVK0EOs+2EOf72/qF199zwJflU1d02AevwKbAUPUZyE9RUZiyJxeUmhVxfKDWdUKaaVojNiaDQgnHL9g==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.0.4': - resolution: {integrity: sha512-HE1I7gxa6yP7ZgXPCFfZSDmVmMtY7SHqzFF55gM/GPegzZKaQWZZ+nYn9C2Cc3JltCMyWe63VPR3tSFDEvuGjw==} + '@smithy/util-defaults-mode-node@4.0.3': + resolution: {integrity: sha512-CVnD42qYD3JKgDlImZ9+On+MqJHzq9uJgPbMdeBE8c2x8VJ2kf2R3XO/yVFx+30ts5lD/GlL0eFIShY3x9ROgQ==} engines: {node: '>=18.0.0'} '@smithy/util-endpoints@3.0.1': @@ -2905,14 +2908,14 @@ packages: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} - '@tanstack/react-virtual@3.11.2': - resolution: {integrity: sha512-OuFzMXPF4+xZgx8UzJha0AieuMihhhaWG0tCqpp6tDzlFwOmNBPYMuLOtMJ1Tr4pXLHmgjcWhG6RlknY2oNTdQ==} + '@tanstack/react-virtual@3.13.0': + resolution: {integrity: sha512-CchF0NlLIowiM2GxtsoKBkXA4uqSnY2KvnXo+kyUFD4a4ll6+J0qzoRsUPMwXV/H26lRsxgJIr/YmjYum2oEjg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/virtual-core@3.11.2': - resolution: {integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==} + '@tanstack/virtual-core@3.13.0': + resolution: {integrity: sha512-NBKJP3OIdmZY3COJdWkSonr50FMVIi+aj5ZJ7hI/DTpEKg2RMfo/KvP8A3B/zOSpMgIe52B5E2yn7rryULzA6g==} '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} @@ -3046,8 +3049,8 @@ packages: '@types/node@18.19.74': resolution: {integrity: sha512-HMwEkkifei3L605gFdV+/UwtpxP6JSzM+xFk2Ia6DNFSwSVBRh9qp5Tgf4lNFOMfPVuU0WnkcWpXZpgn5ufO4A==} - '@types/node@22.12.0': - resolution: {integrity: sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==} + '@types/node@22.10.10': + resolution: {integrity: sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==} '@types/nodemailer@6.4.17': resolution: {integrity: sha512-I9CCaIp6DTldEg7vyUTZi8+9Vo0hi1/T8gv3C89yk1rSAAzoKQ8H8ki/jBYJSFoH/BisgLP8tkZMlQ91CIquww==} @@ -3075,51 +3078,51 @@ packages: '@types/validator@13.12.2': resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==} - '@typescript-eslint/eslint-plugin@8.22.0': - resolution: {integrity: sha512-4Uta6REnz/xEJMvwf72wdUnC3rr4jAQf5jnTkeRQ9b6soxLxhDEbS/pfMPoJLDfFPNVRdryqWUIV/2GZzDJFZw==} + '@typescript-eslint/eslint-plugin@8.21.0': + resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.22.0': - resolution: {integrity: sha512-MqtmbdNEdoNxTPzpWiWnqNac54h8JDAmkWtJExBVVnSrSmi9z+sZUt0LfKqk9rjqmKOIeRhO4fHHJ1nQIjduIQ==} + '@typescript-eslint/parser@8.21.0': + resolution: {integrity: sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/scope-manager@8.22.0': - resolution: {integrity: sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==} + '@typescript-eslint/scope-manager@8.21.0': + resolution: {integrity: sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.22.0': - resolution: {integrity: sha512-NzE3aB62fDEaGjaAYZE4LH7I1MUwHooQ98Byq0G0y3kkibPJQIXVUspzlFOmOfHhiDLwKzMlWxaNv+/qcZurJA==} + '@typescript-eslint/type-utils@8.21.0': + resolution: {integrity: sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.22.0': - resolution: {integrity: sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==} + '@typescript-eslint/types@8.21.0': + resolution: {integrity: sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.22.0': - resolution: {integrity: sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==} + '@typescript-eslint/typescript-estree@8.21.0': + resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.22.0': - resolution: {integrity: sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg==} + '@typescript-eslint/utils@8.21.0': + resolution: {integrity: sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.22.0': - resolution: {integrity: sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==} + '@typescript-eslint/visitor-keys@8.21.0': + resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vavite/multibuild@5.1.0': @@ -3387,8 +3390,8 @@ packages: resolution: {integrity: sha512-lDsx2BzkKe7gkCYiT5Acj02DpTwDznl/VNN7Psn7M3USPG7Vs/BaClZJJTAG+ufAR9++N1/NiUTdaFBWDIl5TQ==} engines: {node: '>=12'} - bullmq@5.39.0: - resolution: {integrity: sha512-aS+wtZsjW4/9mv2iZRynkSvEXCFS5h3Ko+OgArJco5rEgTE7v/TehDKv6gYEsKVbavOgiNlUNjgEhWhrzDSLBg==} + bullmq@5.40.2: + resolution: {integrity: sha512-Cn4NUpwGAF4WnuXR2kTZCTAUEUHajSCn/IqiDG9ry1kVvAwwwg1Ati3J5HN2uZjqD5PBfNDXYnsc2+0PzakDwg==} busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} @@ -3443,8 +3446,8 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001696: - resolution: {integrity: sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==} + caniuse-lite@1.0.30001695: + resolution: {integrity: sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==} case-anything@3.1.0: resolution: {integrity: sha512-rRYnn5Elur8RuNHKoJ2b0tgn+pjYxL7BzWom+JZ7NKKn1lt/yGV/tUNwOovxYa9l9VL5hnXQdMc+mENbhJzosQ==} @@ -3506,8 +3509,8 @@ packages: chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - chrono-node@2.7.7: - resolution: {integrity: sha512-p3S7gotuTPu5oqhRL2p1fLwQXGgdQaRTtWR3e8Di9P1Pa9mzkK5DWR5AWBieMUh2ZdOnPgrK+zCrbbtyuA+D/Q==} + chrono-node@2.7.8: + resolution: {integrity: sha512-pzxemrTKu6jFVyAfkNxUckp9nlrmRFtr5lGrEJcVKyeKV9WSeGT78Oysazlzd/H0BdMv7EzACtJrw0pi2KODBQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} ci-info@4.1.0: @@ -3994,8 +3997,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.88: - resolution: {integrity: sha512-K3C2qf1o+bGzbilTDCTBhTQcMS9KW60yTAaTeeXsfvQuTDDwlokLam/AdqlqcSy9u4UainDgsHV23ksXAOgamw==} + electron-to-chromium@1.5.87: + resolution: {integrity: sha512-mPFwmEWmRivw2F8x3w3l2m6htAUN97Gy0kwpO++2m9iT1Gt8RCFVUfv9U/sIbHJ6rY4P6/ooqFL/eL7ock+pPg==} embla-carousel-react@8.5.2: resolution: {integrity: sha512-Tmx+uY3MqseIGdwp0ScyUuxpBgx5jX1f7od4Cm5mDwg/dptEiTKf9xp6tw0lZN2VA9JbnVMl/aikmbc53c6QFA==} @@ -4010,8 +4013,8 @@ packages: embla-carousel@8.5.2: resolution: {integrity: sha512-xQ9oVLrun/eCG/7ru3R+I5bJ7shsD8fFwLEY7yPe27/+fDHCNj0OT5EoG5ZbFyOxOcG6yTwW8oTz/dWyFnyGpg==} - emittery@1.1.0: - resolution: {integrity: sha512-rsX7ktqARv/6UQDgMaLfIqUWAEzzbCQiVh7V9rhDXp6c37yoJcks12NVD+XPkgl4AEavmNhVfrhGoqYwIsMYYA==} + emittery@1.0.3: + resolution: {integrity: sha512-tJdCJitoy2lrC2ldJcqN4vkqJ00lT+tOWNT1hBJjO/3FDMJa5TTIiYGCKGkn/WfCyOzUMObeohbVTj00fhiLiA==} engines: {node: '>=14.16'} emoji-regex@10.4.0: @@ -4038,8 +4041,8 @@ packages: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} - engine.io@6.6.4: - resolution: {integrity: sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==} + engine.io@6.6.3: + resolution: {integrity: sha512-2hkLItQMBkoYSagneiisupWGvsQlWXqzhSMvsjaM8GYbnfUsX7tzYQq9QARnate5LRedVTX+MbkSZAANAr3NtQ==} engines: {node: '>=10.2.0'} enquirer@2.3.6: @@ -4158,8 +4161,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.19.0: - resolution: {integrity: sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==} + eslint@9.18.0: + resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -4890,8 +4893,8 @@ packages: engines: {node: '>=0.10.30'} deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial). - jotai@2.11.1: - resolution: {integrity: sha512-41Su098mpHIX29hF/XOpDb0SqF6EES7+HXfrhuBqVSzRkxX48hD5i8nGsEewWZNAsBWJCTTmuz8M946Ih2PfcQ==} + jotai@2.11.3: + resolution: {integrity: sha512-B/PsewAQ0UOS5e2+TTWegUPQ3SCLPCjPY24LYUjfn2EorGlluTA2dFjVLgF1+xHLjK9Jit3y5mKHyMG3Xq/GZg==} engines: {node: '>=12.20.0'} peerDependencies: '@types/react': '>=17.0.0' @@ -5038,8 +5041,8 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lint-staged@15.4.3: - resolution: {integrity: sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==} + lint-staged@15.4.2: + resolution: {integrity: sha512-gCqzB/Li281uZJgReNci+oXXqUEdrFAQAzTE/LwoxxiEuP41vozNe4BATS+4ehdqkWn+Z6bGc3EDcBja3npBVw==} engines: {node: '>=18.12.0'} hasBin: true @@ -5062,6 +5065,9 @@ packages: lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash._reinterpolate@3.0.0: + resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} + lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} @@ -5075,6 +5081,13 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.template@4.5.0: + resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==} + deprecated: This package is deprecated. Use https://socket.dev/npm/package/eta instead. + + lodash.templatesettings@4.2.0: + resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} + lodash@2.4.2: resolution: {integrity: sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw==} engines: {'0': node, '1': rhino} @@ -5098,8 +5111,8 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -5617,8 +5630,8 @@ packages: peberminta@0.9.0: resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} - peek-readable@5.4.1: - resolution: {integrity: sha512-SJBMUmpY1Dplha/cZckswot1Gv/8bHYBpqdsU5vwvyhihHrTnsWA1L1YXpkXyPHGo99ERdaJ3hEJim4Nylce+A==} + peek-readable@5.3.1: + resolution: {integrity: sha512-GVlENSDW6KHaXcd9zkZltB7tCLosKB/4Hg0fqBJkAoBgYG2Tn1xtMgXtSUuMU9AK/gCm/tTdT8mgAeF4YNeeqw==} engines: {node: '>=14.16'} pez@1.0.0: @@ -5880,6 +5893,7 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} deprecated: |- You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) qs@2.4.2: @@ -5921,8 +5935,8 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-day-picker@9.5.1: - resolution: {integrity: sha512-PxuK8inYLlYgM2zZUVBPsaBM5jI40suPeG+naKyx7kpyF032RRlEAUEjkpW9/poTASh/vyWAOVqjGuGw+47isw==} + react-day-picker@9.5.0: + resolution: {integrity: sha512-WmJnPFVLnKh5Qscm7wavMNg86rqPverSWjx+zgK8/ZmGRSQ8c8OoqW10RI+AzAfT2atIxImpCUU2R9Z7Xb2SUA==} engines: {node: '>=18'} peerDependencies: react: '>=16.8.0' @@ -6074,8 +6088,8 @@ packages: recharts-scale@0.4.5: resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} - recharts@2.15.1: - resolution: {integrity: sha512-v8PUTUlyiDe56qUj82w/EDVuzEFXwEHp9/xOowGAZwfLjB9uAy3GllQVIYMWF6nU+qibx85WF75zD7AjqoT54Q==} + recharts@2.15.0: + resolution: {integrity: sha512-cIvMxDfpAmqAmVgc4yb7pgm/O1tmmkl/CjrvXuW+62/+7jj/iF9Ykm+hb/UJt42TREHMyd3gb+pkgoa2MxgDIw==} engines: {node: '>=14'} peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -6167,8 +6181,8 @@ packages: rndm@1.2.0: resolution: {integrity: sha512-fJhQQI5tLrQvYIYFpOnFinzv9dwmR7hRnUz1XqP3OJ1jIweTNOd6aTO4jwQSgcBSFUB+/KHJxuGneime+FdzOw==} - rollup@4.32.1: - resolution: {integrity: sha512-z+aeEsOeEa3mEbS1Tjl6sAZ8NE3+AalQz1RJGj81M+fizusbdDMoEJwdJNHfaB40Scr4qNu+welOfes7maKonA==} + rollup@4.32.0: + resolution: {integrity: sha512-JmrhfQR31Q4AuNBjjAX4s+a/Pu/Q8Q9iwjWBsjRH1q52SPFE2NqRMK6fUZKKnvKO6id+h7JIRf0oYsph53eATg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -6243,8 +6257,8 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - shadcn@2.3.0: - resolution: {integrity: sha512-Q/ra8/r2wb5W0DX0LKuPpsT6/0vtgwW/DR9uunJ6/3lXMOBo2UyUeCQ2m9/XAlALHhyGnzHngf8s8NrW1kcg5Q==} + shadcn@2.1.8: + resolution: {integrity: sha512-UxNK1O/3otO5joqc113+tVZuSFHvVNaDjVakqCjhW89RpRSObRMBaSaaC6jvG70DhR8dJ35l907w1keUrGmWAw==} hasBin: true sharp@0.33.5: @@ -6350,8 +6364,8 @@ packages: sonic-boom@4.2.0: resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} - sonner@1.7.3: - resolution: {integrity: sha512-KXLWQfyR6AHpYZuQk8eO8fCbZSJY3JOpgsu/tbGc++jgPjj8JsR1ZpO8vFhqR/OxvWMQCSAmnSShY0gr4FPqHg==} + sonner@1.7.2: + resolution: {integrity: sha512-zMbseqjrOzQD1a93lxahm+qMGxWovdMxBlkTbbnZdNqVLt4j+amF9PQxUCL32WfztOFt9t9ADYkejAL3jF9iNA==} peerDependencies: react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc @@ -6397,6 +6411,9 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + sqids@0.3.0: + resolution: {integrity: sha512-lOQK1ucVg+W6n3FhRwwSeUijxe93b51Bfz5PMRMihVf1iVkl82ePQG7V5vwrhzB11v0NtsR25PSZRGiSomJaJw==} + stacktracey@2.1.8: resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} @@ -6705,8 +6722,8 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - typescript-eslint@8.22.0: - resolution: {integrity: sha512-Y2rj210FW1Wb6TWXzQc5+P+EWI9/zdS57hLEc0gnyuvdzWo8+Y8brKlbj0muejonhMI/xAZCnZZwjbIfv1CkOw==} + typescript-eslint@8.21.0: + resolution: {integrity: sha512-txEKYY4XMKwPXxNkN8+AxAdX6iIJAPiJbHE/FpQccs/sxw8Lf26kqwC3cn0xkHlW8kEbLhkhCsjWuMveaY9Rxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -7070,7 +7087,7 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - '@adonisjs/auth@9.3.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/lucid@21.6.0(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@vinejs/vine@3.0.0)(better-sqlite3@11.8.1)(luxon@3.5.0)(pg@8.13.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(@japa/plugin-adonisjs@4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@japa/runner@4.2.0))': + '@adonisjs/auth@9.3.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/lucid@21.6.0(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@vinejs/vine@3.0.0)(better-sqlite3@11.8.1)(luxon@3.5.0)(pg@8.13.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(@japa/plugin-adonisjs@4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@japa/runner@4.1.0))': dependencies: '@adonisjs/core': 6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1) '@adonisjs/presets': 2.6.4(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)) @@ -7079,7 +7096,7 @@ snapshots: optionalDependencies: '@adonisjs/lucid': 21.6.0(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@vinejs/vine@3.0.0)(better-sqlite3@11.8.1)(luxon@3.5.0)(pg@8.13.1) '@adonisjs/session': 7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1) - '@japa/plugin-adonisjs': 4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@japa/runner@4.2.0) + '@japa/plugin-adonisjs': 4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@japa/runner@4.1.0) transitivePeerDependencies: - '@adonisjs/assembler' @@ -7152,25 +7169,25 @@ snapshots: dotenv: 16.4.7 split-lines: 3.0.0 - '@adonisjs/eslint-config@2.0.0-beta.7(eslint@9.19.0(jiti@1.21.7))(prettier@3.4.2)(typescript@5.7.3)': + '@adonisjs/eslint-config@2.0.0-beta.7(eslint@9.18.0(jiti@1.21.7))(prettier@3.4.2)(typescript@5.7.3)': dependencies: - '@adonisjs/eslint-plugin': 2.0.0-beta.5(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) - '@stylistic/eslint-plugin-ts': 2.13.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) - eslint: 9.19.0(jiti@1.21.7) - eslint-config-prettier: 9.1.0(eslint@9.19.0(jiti@1.21.7)) - eslint-plugin-prettier: 5.2.3(eslint-config-prettier@9.1.0(eslint@9.19.0(jiti@1.21.7)))(eslint@9.19.0(jiti@1.21.7))(prettier@3.4.2) - eslint-plugin-unicorn: 55.0.0(eslint@9.19.0(jiti@1.21.7)) + '@adonisjs/eslint-plugin': 2.0.0-beta.5(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + '@stylistic/eslint-plugin-ts': 2.13.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + eslint: 9.18.0(jiti@1.21.7) + eslint-config-prettier: 9.1.0(eslint@9.18.0(jiti@1.21.7)) + eslint-plugin-prettier: 5.2.3(eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@1.21.7)))(eslint@9.18.0(jiti@1.21.7))(prettier@3.4.2) + eslint-plugin-unicorn: 55.0.0(eslint@9.18.0(jiti@1.21.7)) prettier: 3.4.2 - typescript-eslint: 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + typescript-eslint: 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) transitivePeerDependencies: - '@types/eslint' - supports-color - typescript - '@adonisjs/eslint-plugin@2.0.0-beta.5(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': + '@adonisjs/eslint-plugin@2.0.0-beta.5(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) - eslint: 9.19.0(jiti@1.21.7) + '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + eslint: 9.18.0(jiti@1.21.7) transitivePeerDependencies: - supports-color - typescript @@ -7181,7 +7198,7 @@ snapshots: '@adonisjs/fold': 10.1.3 '@poppinss/utils': 6.9.2 '@sindresorhus/is': 6.3.1 - emittery: 1.1.0 + emittery: 1.0.3 '@adonisjs/fold@10.1.3': dependencies: @@ -7226,11 +7243,11 @@ snapshots: vary: 1.1.2 youch: 3.3.4 - '@adonisjs/inertia@3.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(@adonisjs/vite@4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/shield@8.1.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(edge.js@6.2.1))(edge.js@6.2.1)(vite@6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0)))(edge.js@6.2.1)': + '@adonisjs/inertia@3.0.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(@adonisjs/vite@4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/shield@8.1.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(edge.js@6.2.1))(edge.js@6.2.1)(vite@6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0)))(edge.js@6.2.1)': dependencies: '@adonisjs/core': 6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1) '@adonisjs/session': 7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1) - '@adonisjs/vite': 4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/shield@8.1.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(edge.js@6.2.1))(edge.js@6.2.1)(vite@6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0)) + '@adonisjs/vite': 4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/shield@8.1.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(edge.js@6.2.1))(edge.js@6.2.1)(vite@6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0)) '@poppinss/utils': 6.9.2 '@tuyau/utils': 0.0.6 edge-error: 4.0.2 @@ -7284,7 +7301,7 @@ snapshots: - supports-color - tedious - '@adonisjs/mail@9.2.2(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@aws-sdk/client-ses@3.734.0)(@types/luxon@3.4.2)(@types/node@22.12.0)(dayjs@1.11.13)(edge.js@6.2.1)(luxon@3.5.0)(moment@2.30.1)': + '@adonisjs/mail@9.2.2(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@aws-sdk/client-ses@3.734.0)(@types/luxon@3.4.2)(@types/node@22.10.10)(dayjs@1.11.13)(edge.js@6.2.1)(luxon@3.5.0)(moment@2.30.1)': dependencies: '@adonisjs/core': 6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1) '@poppinss/colors': 4.1.4 @@ -7295,7 +7312,7 @@ snapshots: fastq: 1.18.0 formdata-node: 6.0.3 got: 14.4.5 - ical-generator: 7.2.0(@types/luxon@3.4.2)(@types/node@22.12.0)(dayjs@1.11.13)(luxon@3.5.0)(moment@2.30.1) + ical-generator: 7.2.0(@types/luxon@3.4.2)(@types/node@22.10.10)(dayjs@1.11.13)(luxon@3.5.0)(moment@2.30.1) nodemailer: 6.10.0 optionalDependencies: '@aws-sdk/client-ses': 3.734.0 @@ -7325,7 +7342,7 @@ snapshots: dependencies: '@adonisjs/core': 6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1) '@poppinss/utils': 6.9.2 - emittery: 1.1.0 + emittery: 1.0.3 ioredis: 5.4.2 transitivePeerDependencies: - supports-color @@ -7363,14 +7380,14 @@ snapshots: '@adonisjs/tsconfig@1.4.0': {} - '@adonisjs/vite@4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/shield@8.1.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(edge.js@6.2.1))(edge.js@6.2.1)(vite@6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0))': + '@adonisjs/vite@4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/shield@8.1.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(edge.js@6.2.1))(edge.js@6.2.1)(vite@6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0))': dependencies: '@adonisjs/core': 6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1) '@poppinss/utils': 6.9.2 - '@vavite/multibuild': 5.1.0(vite@6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0)) + '@vavite/multibuild': 5.1.0(vite@6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0)) edge-error: 4.0.2 - vite: 6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0) - vite-plugin-restart: 0.4.2(vite@6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0)) + vite: 6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0) + vite-plugin-restart: 0.4.2(vite@6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0)) optionalDependencies: '@adonisjs/shield': 8.1.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/session@7.5.1(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@adonisjs/redis@9.1.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1)))(edge.js@6.2.1))(edge.js@6.2.1) edge.js: 6.2.1 @@ -7438,26 +7455,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.734.0 '@aws-sdk/util-user-agent-node': 3.734.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.2 + '@smithy/core': 3.1.1 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.3 - '@smithy/middleware-retry': 4.0.4 - '@smithy/middleware-serde': 4.0.2 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 + '@smithy/middleware-serde': 4.0.1 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.3 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.4 - '@smithy/util-defaults-mode-node': 4.0.4 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -7482,26 +7499,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.734.0 '@aws-sdk/util-user-agent-node': 3.734.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.2 + '@smithy/core': 3.1.1 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.3 - '@smithy/middleware-retry': 4.0.4 - '@smithy/middleware-serde': 4.0.2 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 + '@smithy/middleware-serde': 4.0.1 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.3 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.4 - '@smithy/util-defaults-mode-node': 4.0.4 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -7513,12 +7530,12 @@ snapshots: '@aws-sdk/core@3.734.0': dependencies: '@aws-sdk/types': 3.734.0 - '@smithy/core': 3.1.2 + '@smithy/core': 3.1.1 '@smithy/node-config-provider': 4.0.1 '@smithy/property-provider': 4.0.1 '@smithy/protocol-http': 5.0.1 '@smithy/signature-v4': 5.0.1 - '@smithy/smithy-client': 4.1.3 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/util-middleware': 4.0.1 fast-xml-parser: 4.4.1 @@ -7540,7 +7557,7 @@ snapshots: '@smithy/node-http-handler': 4.0.2 '@smithy/property-provider': 4.0.1 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.3 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/util-stream': 4.0.2 tslib: 2.8.1 @@ -7638,7 +7655,7 @@ snapshots: '@aws-sdk/core': 3.734.0 '@aws-sdk/types': 3.734.0 '@aws-sdk/util-endpoints': 3.734.0 - '@smithy/core': 3.1.2 + '@smithy/core': 3.1.1 '@smithy/protocol-http': 5.0.1 '@smithy/types': 4.1.0 tslib: 2.8.1 @@ -7658,26 +7675,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.734.0 '@aws-sdk/util-user-agent-node': 3.734.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.2 + '@smithy/core': 3.1.1 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.3 - '@smithy/middleware-retry': 4.0.4 - '@smithy/middleware-serde': 4.0.2 + '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-retry': 4.0.3 + '@smithy/middleware-serde': 4.0.1 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.3 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.4 - '@smithy/util-defaults-mode-node': 4.0.4 + '@smithy/util-defaults-mode-browser': 4.0.3 + '@smithy/util-defaults-mode-node': 4.0.3 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -8119,9 +8136,9 @@ snapshots: '@esbuild/win32-x64@0.24.2': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.19.0(jiti@1.21.7))': + '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@1.21.7))': dependencies: - eslint: 9.19.0(jiti@1.21.7) + eslint: 9.18.0(jiti@1.21.7) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -8152,7 +8169,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.19.0': {} + '@eslint/js@9.18.0': {} '@eslint/object-schema@2.1.5': {} @@ -8299,9 +8316,9 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@japa/assert@4.0.1(@japa/runner@4.2.0)': + '@japa/assert@4.0.1(@japa/runner@4.1.0)': dependencies: - '@japa/runner': 4.2.0 + '@japa/runner': 4.1.0 '@poppinss/macroable': 1.0.4 '@types/chai': 5.0.1 assertion-error: 2.0.1 @@ -8313,26 +8330,26 @@ snapshots: '@poppinss/macroable': 1.0.4 '@poppinss/string': 1.2.0 async-retry: 1.3.3 - emittery: 1.1.0 + emittery: 1.0.3 string-width: 7.2.0 time-span: 5.1.0 - '@japa/errors-printer@4.1.2': + '@japa/errors-printer@4.1.0': dependencies: '@poppinss/colors': 4.1.4 jest-diff: 29.7.0 supports-color: 10.0.0 youch: 4.1.0-beta.5 - '@japa/plugin-adonisjs@4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@japa/runner@4.2.0)': + '@japa/plugin-adonisjs@4.0.0(@adonisjs/core@6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1))(@japa/runner@4.1.0)': dependencies: '@adonisjs/core': 6.17.1(@adonisjs/assembler@7.8.2(typescript@5.7.3))(@vinejs/vine@3.0.0)(edge.js@6.2.1) - '@japa/runner': 4.2.0 + '@japa/runner': 4.1.0 - '@japa/runner@4.2.0': + '@japa/runner@4.1.0': dependencies: '@japa/core': 10.3.0 - '@japa/errors-printer': 4.1.2 + '@japa/errors-printer': 4.1.0 '@poppinss/colors': 4.1.4 '@poppinss/hooks': 7.2.5 fast-glob: 3.3.3 @@ -8496,7 +8513,7 @@ snapshots: '@poppinss/chokidar-ts@4.1.5(typescript@5.7.3)': dependencies: chokidar: 4.0.3 - emittery: 1.1.0 + emittery: 1.0.3 memoize: 10.0.0 picomatch: 4.0.2 slash: 5.1.0 @@ -9387,61 +9404,61 @@ snapshots: dependencies: '@redis/client': 1.6.0 - '@rollup/rollup-android-arm-eabi@4.32.1': + '@rollup/rollup-android-arm-eabi@4.32.0': optional: true - '@rollup/rollup-android-arm64@4.32.1': + '@rollup/rollup-android-arm64@4.32.0': optional: true - '@rollup/rollup-darwin-arm64@4.32.1': + '@rollup/rollup-darwin-arm64@4.32.0': optional: true - '@rollup/rollup-darwin-x64@4.32.1': + '@rollup/rollup-darwin-x64@4.32.0': optional: true - '@rollup/rollup-freebsd-arm64@4.32.1': + '@rollup/rollup-freebsd-arm64@4.32.0': optional: true - '@rollup/rollup-freebsd-x64@4.32.1': + '@rollup/rollup-freebsd-x64@4.32.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.32.1': + '@rollup/rollup-linux-arm-gnueabihf@4.32.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.32.1': + '@rollup/rollup-linux-arm-musleabihf@4.32.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.32.1': + '@rollup/rollup-linux-arm64-gnu@4.32.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.32.1': + '@rollup/rollup-linux-arm64-musl@4.32.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.32.1': + '@rollup/rollup-linux-loongarch64-gnu@4.32.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.32.1': + '@rollup/rollup-linux-powerpc64le-gnu@4.32.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.32.1': + '@rollup/rollup-linux-riscv64-gnu@4.32.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.32.1': + '@rollup/rollup-linux-s390x-gnu@4.32.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.32.1': + '@rollup/rollup-linux-x64-gnu@4.32.0': optional: true - '@rollup/rollup-linux-x64-musl@4.32.1': + '@rollup/rollup-linux-x64-musl@4.32.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.32.1': + '@rollup/rollup-win32-arm64-msvc@4.32.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.32.1': + '@rollup/rollup-win32-ia32-msvc@4.32.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.32.1': + '@rollup/rollup-win32-x64-msvc@4.32.0': optional: true '@sec-ant/readable-stream@0.4.1': {} @@ -9492,9 +9509,9 @@ snapshots: '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@smithy/core@3.1.2': + '@smithy/core@3.1.1': dependencies: - '@smithy/middleware-serde': 4.0.2 + '@smithy/middleware-serde': 4.0.1 '@smithy/protocol-http': 5.0.1 '@smithy/types': 4.1.0 '@smithy/util-body-length-browser': 4.0.0 @@ -9545,10 +9562,10 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.0.3': + '@smithy/middleware-endpoint@4.0.2': dependencies: - '@smithy/core': 3.1.2 - '@smithy/middleware-serde': 4.0.2 + '@smithy/core': 3.1.1 + '@smithy/middleware-serde': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/shared-ini-file-loader': 4.0.1 '@smithy/types': 4.1.0 @@ -9556,19 +9573,19 @@ snapshots: '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@smithy/middleware-retry@4.0.4': + '@smithy/middleware-retry@4.0.3': dependencies: '@smithy/node-config-provider': 4.0.1 '@smithy/protocol-http': 5.0.1 '@smithy/service-error-classification': 4.0.1 - '@smithy/smithy-client': 4.1.3 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 tslib: 2.8.1 uuid: 9.0.1 - '@smithy/middleware-serde@4.0.2': + '@smithy/middleware-serde@4.0.1': dependencies: '@smithy/types': 4.1.0 tslib: 2.8.1 @@ -9634,10 +9651,10 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/smithy-client@4.1.3': + '@smithy/smithy-client@4.1.2': dependencies: - '@smithy/core': 3.1.2 - '@smithy/middleware-endpoint': 4.0.3 + '@smithy/core': 3.1.1 + '@smithy/middleware-endpoint': 4.0.2 '@smithy/middleware-stack': 4.0.1 '@smithy/protocol-http': 5.0.1 '@smithy/types': 4.1.0 @@ -9682,21 +9699,21 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.0.4': + '@smithy/util-defaults-mode-browser@4.0.3': dependencies: '@smithy/property-provider': 4.0.1 - '@smithy/smithy-client': 4.1.3 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 bowser: 2.11.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.0.4': + '@smithy/util-defaults-mode-node@4.0.3': dependencies: '@smithy/config-resolver': 4.0.1 '@smithy/credential-provider-imds': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/property-provider': 4.0.1 - '@smithy/smithy-client': 4.1.3 + '@smithy/smithy-client': 4.1.2 '@smithy/types': 4.1.0 tslib: 2.8.1 @@ -9756,10 +9773,10 @@ snapshots: '@speed-highlight/core@1.2.7': {} - '@stylistic/eslint-plugin-ts@2.13.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': + '@stylistic/eslint-plugin-ts@2.13.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) - eslint: 9.19.0(jiti@1.21.7) + '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + eslint: 9.18.0(jiti@1.21.7) eslint-visitor-keys: 4.2.0 espree: 10.3.0 transitivePeerDependencies: @@ -9882,13 +9899,13 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tanstack/react-virtual@3.11.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@tanstack/react-virtual@3.13.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@tanstack/virtual-core': 3.11.2 + '@tanstack/virtual-core': 3.13.0 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@tanstack/virtual-core@3.11.2': {} + '@tanstack/virtual-core@3.13.0': {} '@tokenizer/token@0.3.0': {} @@ -9975,7 +9992,7 @@ snapshots: '@types/cors@2.8.17': dependencies: - '@types/node': 22.12.0 + '@types/node': 22.10.10 '@types/d3-array@3.2.1': {} @@ -10019,13 +10036,13 @@ snapshots: dependencies: undici-types: 5.26.5 - '@types/node@22.12.0': + '@types/node@22.10.10': dependencies: undici-types: 6.20.0 '@types/nodemailer@6.4.17': dependencies: - '@types/node': 22.12.0 + '@types/node': 22.10.10 '@types/normalize-package-data@2.4.4': {} @@ -10045,15 +10062,15 @@ snapshots: '@types/validator@13.12.2': {} - '@typescript-eslint/eslint-plugin@8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.22.0 - '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.22.0 - eslint: 9.19.0(jiti@1.21.7) + '@typescript-eslint/parser': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.21.0 + eslint: 9.18.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -10062,40 +10079,40 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.22.0 - '@typescript-eslint/types': 8.22.0 - '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.22.0 + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.21.0 debug: 4.4.0 - eslint: 9.19.0(jiti@1.21.7) + eslint: 9.18.0(jiti@1.21.7) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.22.0': + '@typescript-eslint/scope-manager@8.21.0': dependencies: - '@typescript-eslint/types': 8.22.0 - '@typescript-eslint/visitor-keys': 8.22.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/visitor-keys': 8.21.0 - '@typescript-eslint/type-utils@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) debug: 4.4.0 - eslint: 9.19.0(jiti@1.21.7) + eslint: 9.18.0(jiti@1.21.7) ts-api-utils: 2.0.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.22.0': {} + '@typescript-eslint/types@8.21.0': {} - '@typescript-eslint/typescript-estree@8.22.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.21.0(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.22.0 - '@typescript-eslint/visitor-keys': 8.22.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/visitor-keys': 8.21.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -10106,28 +10123,28 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3)': + '@typescript-eslint/utils@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.22.0 - '@typescript-eslint/types': 8.22.0 - '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) - eslint: 9.19.0(jiti@1.21.7) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) + eslint: 9.18.0(jiti@1.21.7) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.22.0': + '@typescript-eslint/visitor-keys@8.21.0': dependencies: - '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/types': 8.21.0 eslint-visitor-keys: 4.2.0 - '@vavite/multibuild@5.1.0(vite@6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0))': + '@vavite/multibuild@5.1.0(vite@6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0))': dependencies: '@types/node': 18.19.74 cac: 6.7.14 picocolors: 1.1.1 - vite: 6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0) + vite: 6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0) '@vinejs/compiler@3.0.0': {} @@ -10142,14 +10159,14 @@ snapshots: normalize-url: 8.0.1 validator: 13.12.0 - '@vitejs/plugin-react@4.3.4(vite@6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0))': + '@vitejs/plugin-react@4.3.4(vite@6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0))': dependencies: '@babel/core': 7.26.7 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.7) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0) + vite: 6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0) transitivePeerDependencies: - supports-color @@ -10181,7 +10198,7 @@ snapshots: '@poppinss/utils': 6.9.2 '@queuedash/api': 2.1.1 '@trpc/server': 10.45.2 - bullmq: 5.39.0 + bullmq: 5.40.2 import-meta-resolve: 4.1.0 transitivePeerDependencies: - supports-color @@ -10275,7 +10292,7 @@ snapshots: autoprefixer@10.4.20(postcss@8.5.1): dependencies: browserslist: 4.24.4 - caniuse-lite: 1.0.30001696 + caniuse-lite: 1.0.30001695 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -10367,8 +10384,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001696 - electron-to-chromium: 1.5.88 + caniuse-lite: 1.0.30001695 + electron-to-chromium: 1.5.87 node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) @@ -10398,7 +10415,7 @@ snapshots: transitivePeerDependencies: - supports-color - bullmq@5.39.0: + bullmq@5.40.2: dependencies: cron-parser: 4.9.0 ioredis: 5.4.2 @@ -10460,7 +10477,7 @@ snapshots: camelcase@8.0.0: {} - caniuse-lite@1.0.30001696: {} + caniuse-lite@1.0.30001695: {} case-anything@3.1.0: {} @@ -10478,7 +10495,7 @@ snapshots: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.3 + loupe: 3.1.2 pathval: 2.0.0 chalk-animation@2.0.3: @@ -10532,7 +10549,7 @@ snapshots: chownr@1.1.4: {} - chrono-node@2.7.7: + chrono-node@2.7.8: dependencies: dayjs: 1.11.13 @@ -10947,7 +10964,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.88: {} + electron-to-chromium@1.5.87: {} embla-carousel-react@8.5.2(react@19.0.0): dependencies: @@ -10961,7 +10978,7 @@ snapshots: embla-carousel@8.5.2: {} - emittery@1.1.0: {} + emittery@1.0.3: {} emoji-regex@10.4.0: {} @@ -10979,13 +10996,13 @@ snapshots: engine.io-parser@5.2.3: {} - engine.io@6.6.4: + engine.io@6.6.3: dependencies: '@types/cors': 2.8.17 - '@types/node': 22.12.0 + '@types/node': 22.10.10 accepts: 1.3.8 base64id: 2.0.0 - cookie: 0.7.2 + cookie: 1.0.2 cors: 2.8.5 debug: 4.3.7 engine.io-parser: 5.2.3 @@ -11098,29 +11115,29 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@9.1.0(eslint@9.19.0(jiti@1.21.7)): + eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@1.21.7)): dependencies: - eslint: 9.19.0(jiti@1.21.7) + eslint: 9.18.0(jiti@1.21.7) eslint-plugin-only-warn@1.1.0: {} - eslint-plugin-prettier@5.2.3(eslint-config-prettier@9.1.0(eslint@9.19.0(jiti@1.21.7)))(eslint@9.19.0(jiti@1.21.7))(prettier@3.4.2): + eslint-plugin-prettier@5.2.3(eslint-config-prettier@9.1.0(eslint@9.18.0(jiti@1.21.7)))(eslint@9.18.0(jiti@1.21.7))(prettier@3.4.2): dependencies: - eslint: 9.19.0(jiti@1.21.7) + eslint: 9.18.0(jiti@1.21.7) prettier: 3.4.2 prettier-linter-helpers: 1.0.0 synckit: 0.9.2 optionalDependencies: - eslint-config-prettier: 9.1.0(eslint@9.19.0(jiti@1.21.7)) + eslint-config-prettier: 9.1.0(eslint@9.18.0(jiti@1.21.7)) - eslint-plugin-unicorn@55.0.0(eslint@9.19.0(jiti@1.21.7)): + eslint-plugin-unicorn@55.0.0(eslint@9.18.0(jiti@1.21.7)): dependencies: '@babel/helper-validator-identifier': 7.25.9 - '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@1.21.7)) ci-info: 4.1.0 clean-regexp: 1.0.0 core-js-compat: 3.40.0 - eslint: 9.19.0(jiti@1.21.7) + eslint: 9.18.0(jiti@1.21.7) esquery: 1.6.0 globals: 15.14.0 indent-string: 4.0.0 @@ -11142,14 +11159,14 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.19.0(jiti@1.21.7): + eslint@9.18.0(jiti@1.21.7): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@1.21.7)) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.1 '@eslint/core': 0.10.0 '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.19.0 + '@eslint/js': 9.18.0 '@eslint/plugin-kit': 0.2.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -11679,12 +11696,12 @@ snapshots: husky@9.1.7: {} - ical-generator@7.2.0(@types/luxon@3.4.2)(@types/node@22.12.0)(dayjs@1.11.13)(luxon@3.5.0)(moment@2.30.1): + ical-generator@7.2.0(@types/luxon@3.4.2)(@types/node@22.10.10)(dayjs@1.11.13)(luxon@3.5.0)(moment@2.30.1): dependencies: uuid-random: 1.3.2 optionalDependencies: '@types/luxon': 3.4.2 - '@types/node': 22.12.0 + '@types/node': 22.10.10 dayjs: 1.11.13 luxon: 3.5.0 moment: 2.30.1 @@ -11854,7 +11871,7 @@ snapshots: moment: 2.30.1 topo: 1.1.0 - jotai@2.11.1(@types/react@19.0.8)(react@19.0.0): + jotai@2.11.3(@types/react@19.0.8)(react@19.0.0): optionalDependencies: '@types/react': 19.0.8 react: 19.0.0 @@ -11972,7 +11989,7 @@ snapshots: lines-and-columns@1.2.4: {} - lint-staged@15.4.3: + lint-staged@15.4.2: dependencies: chalk: 5.4.1 commander: 13.1.0 @@ -12010,6 +12027,8 @@ snapshots: lodash-es@4.17.21: {} + lodash._reinterpolate@3.0.0: {} + lodash.defaults@4.2.0: {} lodash.isarguments@3.1.0: {} @@ -12018,6 +12037,15 @@ snapshots: lodash.merge@4.6.2: {} + lodash.template@4.5.0: + dependencies: + lodash._reinterpolate: 3.0.0 + lodash.templatesettings: 4.2.0 + + lodash.templatesettings@4.2.0: + dependencies: + lodash._reinterpolate: 3.0.0 + lodash@2.4.2: {} lodash@4.17.21: {} @@ -12044,7 +12072,7 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@3.1.3: {} + loupe@3.1.2: {} lower-case@2.0.2: dependencies: @@ -12243,7 +12271,7 @@ snapshots: '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 - caniuse-lite: 1.0.30001696 + caniuse-lite: 1.0.30001695 postcss: 8.4.31 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -12525,7 +12553,7 @@ snapshots: peberminta@0.9.0: {} - peek-readable@5.4.1: {} + peek-readable@5.3.1: {} pez@1.0.0: dependencies: @@ -12889,7 +12917,7 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-day-picker@9.5.1(react@19.0.0): + react-day-picker@9.5.0(react@19.0.0): dependencies: '@date-fns/tz': 1.2.0 date-fns: 4.1.0 @@ -13085,7 +13113,7 @@ snapshots: dependencies: decimal.js-light: 2.5.1 - recharts@2.15.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + recharts@2.15.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: clsx: 2.1.1 eventemitter3: 4.0.7 @@ -13183,29 +13211,29 @@ snapshots: rndm@1.2.0: {} - rollup@4.32.1: + rollup@4.32.0: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.32.1 - '@rollup/rollup-android-arm64': 4.32.1 - '@rollup/rollup-darwin-arm64': 4.32.1 - '@rollup/rollup-darwin-x64': 4.32.1 - '@rollup/rollup-freebsd-arm64': 4.32.1 - '@rollup/rollup-freebsd-x64': 4.32.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.32.1 - '@rollup/rollup-linux-arm-musleabihf': 4.32.1 - '@rollup/rollup-linux-arm64-gnu': 4.32.1 - '@rollup/rollup-linux-arm64-musl': 4.32.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.32.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.32.1 - '@rollup/rollup-linux-riscv64-gnu': 4.32.1 - '@rollup/rollup-linux-s390x-gnu': 4.32.1 - '@rollup/rollup-linux-x64-gnu': 4.32.1 - '@rollup/rollup-linux-x64-musl': 4.32.1 - '@rollup/rollup-win32-arm64-msvc': 4.32.1 - '@rollup/rollup-win32-ia32-msvc': 4.32.1 - '@rollup/rollup-win32-x64-msvc': 4.32.1 + '@rollup/rollup-android-arm-eabi': 4.32.0 + '@rollup/rollup-android-arm64': 4.32.0 + '@rollup/rollup-darwin-arm64': 4.32.0 + '@rollup/rollup-darwin-x64': 4.32.0 + '@rollup/rollup-freebsd-arm64': 4.32.0 + '@rollup/rollup-freebsd-x64': 4.32.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.32.0 + '@rollup/rollup-linux-arm-musleabihf': 4.32.0 + '@rollup/rollup-linux-arm64-gnu': 4.32.0 + '@rollup/rollup-linux-arm64-musl': 4.32.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.32.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.32.0 + '@rollup/rollup-linux-riscv64-gnu': 4.32.0 + '@rollup/rollup-linux-s390x-gnu': 4.32.0 + '@rollup/rollup-linux-x64-gnu': 4.32.0 + '@rollup/rollup-linux-x64-musl': 4.32.0 + '@rollup/rollup-win32-arm64-msvc': 4.32.0 + '@rollup/rollup-win32-ia32-msvc': 4.32.0 + '@rollup/rollup-win32-x64-msvc': 4.32.0 fsevents: 2.3.3 run-parallel@1.2.0: @@ -13279,7 +13307,7 @@ snapshots: setprototypeof@1.2.0: {} - shadcn@2.3.0(typescript@5.7.3): + shadcn@2.1.8(typescript@5.7.3): dependencies: '@antfu/ni': 0.21.12 '@babel/core': 7.26.7 @@ -13294,6 +13322,7 @@ snapshots: fs-extra: 11.3.0 https-proxy-agent: 6.2.1 kleur: 4.1.5 + lodash.template: 4.5.0 node-fetch: 3.3.2 ora: 6.3.1 postcss: 8.5.1 @@ -13438,7 +13467,7 @@ snapshots: base64id: 2.0.0 cors: 2.8.5 debug: 4.3.7 - engine.io: 6.6.4 + engine.io: 6.6.3 socket.io-adapter: 2.5.5 socket.io-parser: 4.2.4 transitivePeerDependencies: @@ -13463,7 +13492,7 @@ snapshots: dependencies: atomic-sleep: 1.0.0 - sonner@1.7.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + sonner@1.7.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -13504,6 +13533,8 @@ snapshots: sprintf-js@1.1.3: {} + sqids@0.3.0: {} + stacktracey@2.1.8: dependencies: as-table: 1.0.55 @@ -13592,7 +13623,7 @@ snapshots: strtok3@8.0.1: dependencies: '@tokenizer/token': 0.3.0 - peek-readable: 5.4.1 + peek-readable: 5.3.1 styled-jsx@5.1.6(@babel/core@7.24.5)(react@19.0.0): dependencies: @@ -13761,14 +13792,14 @@ snapshots: '@ts-morph/common': 0.26.0 code-block-writer: 13.0.3 - ts-node-maintained@10.9.5(@swc/core@1.10.9(@swc/helpers@0.5.15))(@types/node@22.12.0)(typescript@5.7.3): + ts-node-maintained@10.9.5(@swc/core@1.10.9(@swc/helpers@0.5.15))(@types/node@22.10.10)(typescript@5.7.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.12.0 + '@types/node': 22.10.10 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -13821,12 +13852,12 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - typescript-eslint@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3): + typescript-eslint@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/parser': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) - '@typescript-eslint/utils': 8.22.0(eslint@9.19.0(jiti@1.21.7))(typescript@5.7.3) - eslint: 9.19.0(jiti@1.21.7) + '@typescript-eslint/eslint-plugin': 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/parser': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@1.21.7))(typescript@5.7.3) + eslint: 9.18.0(jiti@1.21.7) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -13943,18 +13974,18 @@ snapshots: hoek: 2.16.3 joi: 4.9.0 - vite-plugin-restart@0.4.2(vite@6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0)): + vite-plugin-restart@0.4.2(vite@6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0)): dependencies: micromatch: 4.0.8 - vite: 6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0) + vite: 6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0) - vite@6.0.11(@types/node@22.12.0)(jiti@1.21.7)(yaml@2.7.0): + vite@6.0.11(@types/node@22.10.10)(jiti@1.21.7)(yaml@2.7.0): dependencies: esbuild: 0.24.2 postcss: 8.5.1 - rollup: 4.32.1 + rollup: 4.32.0 optionalDependencies: - '@types/node': 22.12.0 + '@types/node': 22.10.10 fsevents: 2.3.3 jiti: 1.21.7 yaml: 2.7.0 diff --git a/website/start/kernel.ts b/website/start/kernel.ts index 1862afd..a18081a 100644 --- a/website/start/kernel.ts +++ b/website/start/kernel.ts @@ -42,7 +42,8 @@ router.use([ () => import('@adonisjs/auth/initialize_auth_middleware'), () => import('#middleware/auth/logout_if_authentication_disabled_middleware'), () => import('#middleware/log_user_middleware'), - () => import('#middleware/update_logger_storage_middleware') + () => import('#middleware/update_logger_storage_middleware'), + () => import('#middleware/link_to_user_middleware') ]) /** @@ -61,5 +62,6 @@ export const middleware = router.named({ verifySocialCallback: () => import('#middleware/auth/verify_social_callback_middleware'), guest: () => import('#middleware/auth/guest_middleware'), auth: () => import('#middleware/auth/auth_middleware'), + silentAuth: () => import('#middleware/auth/silent_auth_middleware'), finishRedirect: () => import('#middleware/finish_redirect_middleware'), }) diff --git a/website/start/routes.ts b/website/start/routes.ts index 6c7fc7d..19041cc 100644 --- a/website/start/routes.ts +++ b/website/start/routes.ts @@ -14,6 +14,7 @@ const AuthenticationController = () => import('#controllers/authentication_contr const OrdersController = () => import('#controllers/orders_controller') const TicketsController = () => import('#controllers/tickets_controller') const ProfilesController = () => import('#controllers/profiles_controller') +const ReferralsController = () => import('#controllers/referrals_controller') router.on('/').renderInertia('home').as('pages:home') @@ -150,3 +151,12 @@ router }) .use([middleware.auth(), middleware.verifiedEmail(), middleware.participant()]) .prefix('payment') + +// Referrals +router.get('/referrals', [ReferralsController, 'showReferralLink']) + .middleware(middleware.auth()) + .as('pages:referrals') + +router.route(`/r/:referralCode`, ['GET', 'POST'], [ReferralsController, 'link']) + .middleware([middleware.automaticSubmit(), middleware.silentAuth()]) + .as('actions:referrals.link') \ No newline at end of file