diff --git a/.env.example b/.env.example index 52ce3a6..1584004 100644 --- a/.env.example +++ b/.env.example @@ -22,3 +22,13 @@ DISCORD_CLIENT_SECRET=someclientsecret GITHUB_CLIENT_ID=someclientid GITHUB_CLIENT_SECRET=someclientsecret DRIVE_DISK=s3 +MAIL_MAILER=smtp +MAIL_FROM_NAME=xContest Automated Mailer +MAIL_FROM_ADDRESS=noreply@local.host +SMTP_HOST=local.host +SMTP_PORT=465 +SMTP_USERNAME=noreply@local.host +SMTP_PASSWORD=localpassword +REDIS_HOST=redis +REDIS_PORT=6379 +REDIS_PASSWORD=thisisaverysecurepassword \ No newline at end of file diff --git a/.github/workflows/api_testing.yml b/.github/workflows/api_testing.yml index d9ea488..944878b 100644 --- a/.github/workflows/api_testing.yml +++ b/.github/workflows/api_testing.yml @@ -22,6 +22,15 @@ jobs: --health-interval 10s --health-timeout 5s --health-retries 5 + redis: + image: redis:8.6-trixie + ports: + - 6379:6379 + options: > + --health-cmd "redis-cli ping" + --health-interval 10s + --health-timeout 5s + --health-retries 5 steps: - uses: actions/checkout@v4 - name: Install pnpm @@ -32,13 +41,15 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 24 cache: 'pnpm' - name: Copy .env.example to .env run: | cp .env.example .env sed -i 's/DB_HOST=db/DB_HOST=127.0.0.1/' .env + sed -i 's/REDIS_HOST=redis/REDIS_HOST=127.0.0.1/' .env + sed -i 's/REDIS_PASSWORD=.*/REDIS_PASSWORD=/' .env - name: Install Dependencies run: pnpm install --frozen-lockfile diff --git a/.gitignore b/.gitignore index 68b65b7..5be1fa9 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ tmp .env.local .env.production.local .env.development.local +redis.conf # Frontend assets compiled code public/assets @@ -52,3 +53,7 @@ yarn-error.log # Useless stuff that doesn't need to be shared .eslintcache + +# Adonis.JS shared types +.adonisjs/ +database/schema.ts \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 3d50c27..b4747b8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.16.0-alpine3.22 AS base +FROM node:24.14.0-alpine3.22 AS base # Install pnpm and husky RUN corepack enable && corepack prepare pnpm@10.30.1 --activate && npm install -g husky diff --git a/ace.js b/ace.js index df02fb7..81068a6 100644 --- a/ace.js +++ b/ace.js @@ -19,7 +19,7 @@ /** * Register hook to process TypeScript files using ts-node */ -import 'ts-node-maintained/register/esm' +import '@poppinss/ts-exec' /** * Import ace console entrypoint diff --git a/adonisrc.ts b/adonisrc.ts index 3be4726..f113062 100644 --- a/adonisrc.ts +++ b/adonisrc.ts @@ -1,5 +1,8 @@ +import { indexPolicies } from '@adonisjs/bouncer' +import { indexEntities } from '@adonisjs/core' import { defineConfig } from '@adonisjs/core/app' + export default defineConfig({ /* |-------------------------------------------------------------------------- @@ -16,6 +19,15 @@ export default defineConfig({ shutdownInReverseOrder: true, }, + // AdonisJS v7 + + hooks: { + init: [ + indexEntities(), + indexPolicies(), + ], + }, + /* |-------------------------------------------------------------------------- | Commands @@ -25,7 +37,7 @@ export default defineConfig({ | will be scanned automatically from the "./commands" directory. | */ - commands: [() => import('@adonisjs/core/commands'), () => import('@adonisjs/lucid/commands'), () => import('@adonisjs/session/commands'), () => import('@adonisjs/bouncer/commands')], + commands: [() => import('@adonisjs/core/commands'), () => import('@adonisjs/lucid/commands'), () => import('@adonisjs/session/commands'), () => import('@adonisjs/bouncer/commands'), () => import('@adonisjs/mail/commands')], /* |-------------------------------------------------------------------------- @@ -51,6 +63,9 @@ export default defineConfig({ () => import('@adonisjs/ally/ally_provider'), () => import('@adonisjs/bouncer/bouncer_provider'), () => import('@adonisjs/drive/drive_provider'), + () => import('@adonisjs/mail/mail_provider'), + () => import('@adonisjs/core/providers/edge_provider'), + () => import('@adonisjs/redis/redis_provider'), ], /* @@ -61,7 +76,13 @@ export default defineConfig({ | List of modules to import before starting the application. | */ - preloads: [() => import('#start/routes'), () => import('#start/kernel'), () => import('#start/events')], + preloads: [ + () => import('#start/routes'), + () => import('#start/kernel'), + () => import('#start/events'), + () => import('#start/mail'), + { file: () => import('#workers/mail'), environment: ['web'] }, + ], /* |-------------------------------------------------------------------------- @@ -75,16 +96,20 @@ export default defineConfig({ tests: { suites: [ { - files: ['tests/unit/**/*.spec(.ts|.js)'], + files: ['tests/unit/**/*.spec.{ts,js}'], name: 'unit', - timeout: 2000, + timeout: 500, }, { - files: ['tests/functional/**/*.spec(.ts|.js)'], + files: ['tests/functional/**/*.spec.{ts,js}'], name: 'functional', - timeout: 30000, + timeout: 1000, }, ], - forceExit: false, + forceExit: true, }, + metaFiles: [{ + pattern: 'resources/views/**/*.edge', + reloadServer: false, + }], }) diff --git a/app/controllers/teams_controller.ts b/app/controllers/teams_controller.ts index 2cd3091..578af54 100644 --- a/app/controllers/teams_controller.ts +++ b/app/controllers/teams_controller.ts @@ -40,7 +40,7 @@ import { applyQueryFilters } from '#utils/query' import Task from '#models/task/task' import { generateMemorableToken, generateSecureToken, invitationValidity } from '#utils/teams' import TeamInvitation from '#models/team/team_invitation' -import InvitationSent from '#events/invitation_sent' +import mail from '@adonisjs/mail/services/main' import env from '#start/env' import { ApiOperation, ApiRequest, ApiResponse } from '#openapi/decorators' import { merged, paginated } from '#openapi/tools' @@ -196,7 +196,37 @@ export default class TeamsController { token: payload.email ? generateSecureToken() : generateMemorableToken(), expiresAt: invitationValidity[payload.validFor as keyof typeof invitationValidity](), }) - await InvitationSent.dispatch(invitation) + if (invitation.inviteeEmail) { + await invitation.load('inviter') + await invitation.load('team') + await invitation.team.load('event') + + const { inviter, team: invitedTeam } = invitation + const event = invitedTeam.event + const baseUrl = env.get('WEBSITE') + + await mail.sendLater((message) => { + message + .to(invitation.inviteeEmail!) + .subject("You've been invited!") + .htmlView('events/invite', { + invitee: { name: invitation.inviteeEmail }, + inviter: { + name: + [inviter.name, inviter.surname].filter(Boolean).join(' ') || inviter.nickname, + }, + event: { + title: event.title, + date: event.createdAt?.toISODate() ?? '', + description: event.description, + location: 'TBD', //! Event location should be added to the event model. + }, + team: { name: invitedTeam.name }, + inviteLink: `${baseUrl}/invitations/${invitation.id}?token=${invitation.token}`, + unsubscribeLink: `${baseUrl}/unsubscribe`, + }) + }) + } return invitation } diff --git a/app/utils/query.ts b/app/utils/query.ts index 32119b4..f962ab4 100644 --- a/app/utils/query.ts +++ b/app/utils/query.ts @@ -23,7 +23,7 @@ import { commonQueryValidator } from '#validators/common' import type { ModelQueryBuilderContract } from '@adonisjs/lucid/types/model' -import type { Request, Response } from '@adonisjs/core/http' +import type { HttpRequest, HttpResponse } from '@adonisjs/core/http' /** * Applies common filters (search, sorting, status, filter) to any Lucid query @@ -39,8 +39,8 @@ export async function applyQueryFilters allowedColumns = [], defaultTable, }: { - request: Request, - response: Response, + request: HttpRequest, + response: HttpResponse, searchColumn: string defaultPageSize?: number, allowedColumns?: string[], diff --git a/config/app.ts b/config/app.ts index fa3d7aa..4832aa6 100644 --- a/config/app.ts +++ b/config/app.ts @@ -21,20 +21,9 @@ * */ -import env from '#start/env' import app from '@adonisjs/core/services/app' -import { Secret } from '@adonisjs/core/helpers' import { defineConfig } from '@adonisjs/core/http' -/** - * The app key is used for encrypting cookies, generating signed URLs, - * and by the "encryption" module. - * - * The encryption module will fail to decrypt data if the key is lost or - * changed. Therefore it is recommended to keep the app key secure. - */ -export const appKey = new Secret(env.get('APP_KEY')) - /** * The configuration settings used by the HTTP server */ diff --git a/app/events/invitation_sent.ts b/config/encryption.ts similarity index 79% rename from app/events/invitation_sent.ts rename to config/encryption.ts index 96fef49..3aef6e6 100644 --- a/app/events/invitation_sent.ts +++ b/config/encryption.ts @@ -5,27 +5,30 @@ * _> {} +} \ No newline at end of file diff --git a/config/redis.ts b/config/redis.ts new file mode 100644 index 0000000..bfafaa6 --- /dev/null +++ b/config/redis.ts @@ -0,0 +1,59 @@ +/* + * ______ __ __ + * _ __/ ____/___ ____ / /____ _____/ /_ + * | |/_/ / / __ \/ __ \/ __/ _ \/ ___/ __/ + * _> 10 ? null : times * 50 + }, + }, + }, +}) + +export default redisConfig + +declare module '@adonisjs/redis/types' { + export interface RedisConnections extends InferConnections {} +} \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml index 08eea93..6b07de7 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -78,6 +78,27 @@ services: - prod command: server -s3 -dir=/data + redis: + image: redis:8.6-trixie # This has no password!!! Must be set in config file. + container_name: redis + restart: always + ports: + - "6379:6379" + volumes: + - redisdata:/data + - ./redis.conf:/usr/local/etc/redis/redis.conf + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 1s + timeout: 5s + retries: 10 + profiles: + - base + - dev + - prod + + volumes: pgdata: weedstore: + redisdata: \ No newline at end of file diff --git a/docs/spec/openapi.json b/docs/spec/openapi.json index af3e043..a0dc53f 100644 --- a/docs/spec/openapi.json +++ b/docs/spec/openapi.json @@ -1 +1 @@ -{"openapi":"3.1.0","info":{"title":"xContest REST API","description":"Specification document for REST API component of xContest platform","version":"1.0.0"},"paths":{"/auth/{provider}/redirect":{"get":{"operationId":"AuthController.redirect","tags":["Auth"],"description":"Redirects to the social provider for authentication","responses":{"307":{"description":"Redirects to the social provider"}},"parameters":[{"name":"provider","in":"path","required":true,"schema":{"enum":["discord","github"]}}]}},"/auth/{provider}/callback":{"get":{"operationId":"AuthController.callback","tags":["Auth"],"description":"Handles the callback from the social provider","responses":{"307":{"description":"Redirects to the status page"}},"parameters":[{"name":"provider","in":"path","required":true,"schema":{"enum":["discord","github"]}}]}},"/auth/register":{"post":{"operationId":"AuthController.register","tags":["Auth"],"description":"Registers a new user with email and password","responses":{"201":{"description":"User registered successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"nickname":{"type":"string","minLength":3,"maxLength":16},"name":{"type":"string","minLength":3,"maxLength":32},"surname":{"type":"string","minLength":3,"maxLength":32},"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":8}},"required":["nickname","email","password"],"additionalProperties":false}}}}}},"/auth/login":{"post":{"operationId":"AuthController.login","tags":["Auth"],"description":"Logs in a user with email and password","responses":{"200":{"description":"User logged in successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string"}},"required":["email","password"],"additionalProperties":false}}}}}},"/auth/logout":{"post":{"operationId":"AuthController.logout","tags":["Auth"],"description":"Logs out the current user","responses":{"200":{"description":"User logged out successfully"}},"security":[{"session":[]}]}},"/events":{"get":{"operationId":"EventsController.index","tags":["Events"],"description":"Get a list of all active events","responses":{"200":{"description":"A list of active events","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Event"}}}}}}},"post":{"operationId":"EventsController.store","tags":["Events"],"description":"Create a new event","responses":{"201":{"description":"The newly created event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"403":{"description":"Missing permission to create events"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string"},"status":{"enum":["DRAFT","ACTIVE","ARCHIVED"]},"minTeamSize":{"type":"number","minimum":1},"maxTeamSize":{"type":"number","minimum":1},"slug":{"type":"string","pattern":"^[a-z0-9-]+$"}},"required":["title","description","status","minTeamSize","maxTeamSize","slug"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/events/{id}":{"get":{"operationId":"EventsController.show","tags":["Events"],"description":"Get a specific event by its slug or UUID","responses":{"200":{"description":"The requested event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"403":{"description":"Missing permission to view this event"},"404":{"description":"Event not found"}}},"put":{"operationId":"EventsController.update","tags":["Events"],"description":"Update an existing event by its slug or UUID","responses":{"200":{"description":"The updated event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"403":{"description":"Missing permission to edit this event"},"404":{"description":"Event not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string"},"status":{"enum":["DRAFT","ACTIVE","ARCHIVED"]},"minTeamSize":{"type":"number","minimum":1},"maxTeamSize":{"type":"number","minimum":1},"slug":{"type":"string"}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"patch":{"operationId":"EventsController.update","tags":["Events"],"description":"Update an existing event by its slug or UUID","responses":{"200":{"description":"The updated event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"403":{"description":"Missing permission to edit this event"},"404":{"description":"Event not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string"},"status":{"enum":["DRAFT","ACTIVE","ARCHIVED"]},"minTeamSize":{"type":"number","minimum":1},"maxTeamSize":{"type":"number","minimum":1},"slug":{"type":"string"}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"EventsController.destroy","tags":["Events"],"description":"Delete an event by its slug or UUID. Requires confirmation of the event slug.","responses":{"204":{"description":"Event deleted successfully"},"403":{"description":"Missing permission to delete this event"},"404":{"description":"Event not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"confirmation":{"type":"string"}},"required":["confirmation"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/events/{id}/administrators":{"get":{"operationId":"EventsController.indexAdministrators","tags":["Events"],"description":"Get a list of all administrators for an event","responses":{"200":{"description":"A list of administrators for the event","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventAdministrator"}}}}},"403":{"description":"Missing permission to view administrators for this event"},"404":{"description":"Event not found"}},"security":[{"session":[]}]},"post":{"operationId":"EventsController.storeAdministrator","tags":["Events"],"description":"Create a new administrator for an event","responses":{"201":{"description":"The newly created administrator","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventAdministrator"}}}},"403":{"description":"Missing permission to manage administrators for this event"},"404":{"description":"Event not found"},"409":{"description":"User is already an administrator of this event"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"number","minimum":0},"permissions":{"type":"number","minimum":0}},"required":["userId"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/events/{id}/administrators/{adminId}":{"put":{"operationId":"EventsController.updateAdministrator","tags":["Events"],"description":"Update permissions for an event administrator","responses":{"200":{"description":"The updated administrator","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventAdministrator"}}}},"403":{"description":"Missing permission to manage administrators for this event"},"404":{"description":"Event or administrator not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"permissions":{"type":"number","minimum":0}},"required":["permissions"],"additionalProperties":false}}}},"security":[{"session":[]}]},"patch":{"operationId":"EventsController.updateAdministrator","tags":["Events"],"description":"Update permissions for an event administrator","responses":{"200":{"description":"The updated administrator","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventAdministrator"}}}},"403":{"description":"Missing permission to manage administrators for this event"},"404":{"description":"Event or administrator not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"permissions":{"type":"number","minimum":0}},"required":["permissions"],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"EventsController.destroyAdministrator","tags":["Events"],"description":"Remove administrator from an event","responses":{"204":{"description":"Administrator removed successfully"},"403":{"description":"Missing permission to manage administrators for this event"},"404":{"description":"Event or administrator not found"}},"security":[{"session":[]}]}},"/teams/{id}":{"get":{"operationId":"TeamsController.show","tags":["Teams"],"description":"Get a specific team by ID","responses":{"200":{"description":"The requested team","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Team"},{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/TeamMember"}}},"required":["members"]}]}}}},"403":{"description":"Missing permission to view this event"},"404":{"description":"Team not found"}}},"put":{"operationId":"TeamsController.update","tags":["Teams"],"description":"Update a team by ID","responses":{"200":{"description":"The updated team","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"403":{"description":"Missing permission to edit this team"},"404":{"description":"Team not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"security":[{"session":[]}]},"patch":{"operationId":"TeamsController.update","tags":["Teams"],"description":"Update a team by ID","responses":{"200":{"description":"The updated team","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"403":{"description":"Missing permission to edit this team"},"404":{"description":"Team not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"TeamsController.destroy","tags":["Teams"],"description":"Delete a team by ID. Requires confirmation of the team name.","responses":{"204":{"description":"Team deleted successfully"},"403":{"description":"Missing permission to delete this team"},"404":{"description":"Team not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"confirmation":{"type":"string"}},"required":["confirmation"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/events/{event_id}/teams":{"post":{"operationId":"TeamsController.store","tags":["Teams"],"description":"Create a new team in an event","responses":{"201":{"description":"The newly created team","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"403":{"description":"Missing permission or invalid access code"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"accessCode":{"type":"string"}},"required":["name"],"additionalProperties":false}}}}},"get":{"operationId":"TeamsController.index","tags":["Teams"],"description":"Get a list of teams for an event","responses":{"200":{"description":"A list of teams","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/PaginationMeta"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Team"}}},"required":["meta","data"]}}}},"403":{"description":"Missing permission to view this event"}},"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","minimum":1,"maximum":100}},{"name":"search","in":"query","required":false,"schema":{"type":"string","minLength":2}},{"name":"orderBy","in":"query","required":false,"schema":{"type":"string"}},{"name":"orderDirection","in":"query","required":false,"schema":{"enum":["asc","desc"]}},{"name":"filter","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","pattern":"^[^:]+:[><=!~]{1,2}[^:]+$"},"description":"Custom filter in a format key:[op]value.\n For example name:~Adam will find every name that contains Adam.\n Supported ops: <, >, <=, >=, =, !, ~"}}]}},"/teams/{id}/invites":{"post":{"operationId":"TeamsController.storeInvite","tags":["Teams"],"description":"Create a new team invitation","responses":{"201":{"description":"The newly created invitation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamInvitation"}}}},"403":{"description":"Missing permission to invite to this team"},"404":{"description":"Team not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"validFor":{"enum":["1 hour","4 hours","12 hours","1 day","3 days","1 week"]}},"required":["validFor"],"additionalProperties":false}}}},"security":[{"session":[]}]},"get":{"operationId":"TeamsController.indexInvites","tags":["Teams"],"description":"Get a list of team invitations for a team","responses":{"200":{"description":"A list of team invitations","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TeamInvitation"}}}}},"403":{"description":"Missing permission to edit this team"},"404":{"description":"Team not found"}},"security":[{"session":[]}]}},"/teams/{id}/kick":{"post":{"operationId":"TeamsController.kickMember","tags":["Teams"],"description":"Kick a member from a team","responses":{"204":{"description":"Team member removed successfully"},"403":{"description":"Missing permission to kick this member"},"404":{"description":"Team or member not found"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"member":{"type":"string","format":"uuid"}},"required":["member"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/invitations/{id}":{"get":{"operationId":"TeamsController.respondToInvite","tags":["Teams"],"description":"Accept or decline a team invitation","responses":{"200":{"description":"Invitation responded successfully","content":{"application/json":{"schema":{"type":"object","properties":{"invitation":{"$ref":"#/components/schemas/TeamInvitation"},"member":{"$ref":"#/components/schemas/TeamMember"}},"required":["invitation","member"]}}}},"403":{"description":"Missing permission to respond to this invitation"},"404":{"description":"Invitation not found"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":16,"maxLength":45}},{"name":"action","in":"query","required":false,"schema":{"enum":["ACCEPT","REJECT"]}}],"security":[{"session":[]}]}},"/invitations":{"get":{"operationId":"TeamsController.indexUserInvites","tags":["Teams"],"description":"Get a list of pending team invitations for the current user","responses":{"200":{"description":"A list of team invitations for the user","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/PaginationMeta"},"data":{"type":"array","items":{"$ref":"#/components/schemas/TeamInvitation"}}},"required":["meta","data"]}}}}},"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","minimum":1,"maximum":100}},{"name":"search","in":"query","required":false,"schema":{"type":"string","minLength":2}},{"name":"orderBy","in":"query","required":false,"schema":{"type":"string"}},{"name":"orderDirection","in":"query","required":false,"schema":{"enum":["asc","desc"]}},{"name":"filter","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","pattern":"^[^:]+:[><=!~]{1,2}[^:]+$"},"description":"Custom filter in a format key:[op]value.\n For example name:~Adam will find every name that contains Adam.\n Supported ops: <, >, <=, >=, =, !, ~"}}],"security":[{"session":[]}]}},"/events/{event_id}/organizations":{"get":{"operationId":"OrganizationsController.index","tags":["Organizations"],"description":"Get a list of organizations for an event","responses":{"200":{"description":"A list of organizations","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Organization"}}}}},"403":{"description":"Missing permission to view this event"}}},"post":{"operationId":"OrganizationsController.store","tags":["Organizations"],"description":"Create a new organization for an event","responses":{"201":{"description":"The newly created organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"403":{"description":"Missing permission to manage organizations"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string","maxLength":2000},"logoUrl":{"type":"string","format":"uri"},"websiteUrl":{"type":"string","format":"uri"}},"required":["name"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/events/{event_id}/organizations/{id}":{"get":{"operationId":"OrganizationsController.show","tags":["Organizations"],"description":"Get a specific organization by ID","responses":{"200":{"description":"The requested organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"403":{"description":"Missing permission to view this event"},"404":{"description":"Organization not found"}}},"put":{"operationId":"OrganizationsController.update","tags":["Organizations"],"description":"Update an organization by ID","responses":{"200":{"description":"The updated organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"403":{"description":"Missing permission to manage organizations"},"404":{"description":"Organization not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string","maxLength":2000},"logoUrl":{"type":"string","format":"uri"},"websiteUrl":{"type":"string","format":"uri"}},"required":["name"],"additionalProperties":false}}}},"security":[{"session":[]}]},"patch":{"operationId":"OrganizationsController.update","tags":["Organizations"],"description":"Update an organization by ID","responses":{"200":{"description":"The updated organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"403":{"description":"Missing permission to manage organizations"},"404":{"description":"Organization not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string","maxLength":2000},"logoUrl":{"type":"string","format":"uri"},"websiteUrl":{"type":"string","format":"uri"}},"required":["name"],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"OrganizationsController.destroy","tags":["Organizations"],"description":"Delete an organization by ID","responses":{"204":{"description":"Organization deleted successfully"},"403":{"description":"Missing permission to manage organizations"},"404":{"description":"Organization not found"}},"security":[{"session":[]}]}},"/tasks/{id}/sponsors":{"get":{"operationId":"OrganizationsController.indexSponsors","tags":["Organizations"],"description":"Get a list of sponsors for a task","responses":{"200":{"description":"A list of sponsors for the task","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Sponsor"}}}}},"404":{"description":"Task not found"}},"security":[{"session":[]}]},"post":{"operationId":"OrganizationsController.storeSponsor","tags":["Organizations"],"description":"Create a new sponsor for a task","responses":{"201":{"description":"The newly created sponsor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sponsor"}}}},"400":{"description":"Organization does not belong to the same event"},"403":{"description":"Missing permission to manage sponsors"},"404":{"description":"Task not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid"}},"required":["organizationId"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/tasks/{id}/sponsors/{sponsorId}":{"get":{"operationId":"OrganizationsController.showSponsor","tags":["Organizations"],"description":"Get a specific sponsor by ID","responses":{"200":{"description":"The requested sponsor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sponsor"}}}},"403":{"description":"Missing permission to view this event"},"404":{"description":"Sponsor not found"}},"security":[{"session":[]}]},"delete":{"operationId":"OrganizationsController.destroySponsor","tags":["Organizations"],"description":"Delete a sponsor by ID","responses":{"204":{"description":"Sponsor deleted successfully"},"403":{"description":"Missing permission to manage sponsors"},"404":{"description":"Sponsor not found"}},"security":[{"session":[]}]}},"/tasks/{id}":{"get":{"operationId":"TasksController.show","tags":["Tasks"],"description":"Get a specific task by its ID or slug","responses":{"200":{"description":"The requested task","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"403":{"description":"Missing permission to view this task"},"404":{"description":"Task not found"}}},"put":{"operationId":"TasksController.update","tags":["Tasks"],"description":"Update a task by its ID or slug","responses":{"200":{"description":"The updated task","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Task not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string"},"taskType":{"enum":["HACKATHON","CTF","ALGO"]},"status":{"enum":["DRAFT","ACTIVE","ARCHIVED"]},"autoregister":{"type":"boolean"},"slug":{"type":"string","pattern":"^[a-z0-9-]+$"},"resultsPublishedAt":{"type":"null"},"registrationStartAt":{"type":"null"},"registrationEndAt":{"type":"null"},"detailsRevealAt":{"type":"null"},"submissionsStartAt":{"type":"null"},"submissionsEndAt":{"type":"null"}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"patch":{"operationId":"TasksController.update","tags":["Tasks"],"description":"Update a task by its ID or slug","responses":{"200":{"description":"The updated task","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Task not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string"},"taskType":{"enum":["HACKATHON","CTF","ALGO"]},"status":{"enum":["DRAFT","ACTIVE","ARCHIVED"]},"autoregister":{"type":"boolean"},"slug":{"type":"string","pattern":"^[a-z0-9-]+$"},"resultsPublishedAt":{"type":"null"},"registrationStartAt":{"type":"null"},"registrationEndAt":{"type":"null"},"detailsRevealAt":{"type":"null"},"submissionsStartAt":{"type":"null"},"submissionsEndAt":{"type":"null"}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"TasksController.destroy","tags":["Tasks"],"description":"Delete a task by its ID or slug","responses":{"204":{"description":"Task deleted successfully"},"403":{"description":"Missing permission to delete this task"},"404":{"description":"Task not found"}},"security":[{"session":[]}]}},"/tasks/{taskId}/registrations":{"post":{"operationId":"TasksController.storeTaskRegistration","tags":["Tasks"],"description":"Register a team to a task","responses":{"201":{"description":"The newly created task registration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRegistration"}}}},"400":{"description":"Team does not belong to the same event or registration is not open"},"403":{"description":"Missing permission to register team"},"404":{"description":"Task or team not found"},"409":{"description":"Team is already registered to the task"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","format":"uuid"}},"required":["teamId"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/registrations/{id}":{"delete":{"operationId":"TasksController.destroyTaskRegistration","tags":["Tasks"],"description":"Unregister a team from a task","responses":{"204":{"description":"Task registration deleted successfully"},"403":{"description":"Missing permission to unregister team"},"404":{"description":"Task registration not found"}},"security":[{"session":[]}]}},"/hackathon/tasks/{id}":{"put":{"operationId":"HackathonController.updateTask","tags":["Hackathons"],"description":"Update a hackathon task by its ID or slug","responses":{"200":{"description":"The updated hackathon task","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HackathonTask"}}}},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Hackathon task not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"requirementsDocumentUrl":{"type":"string","format":"uri"}},"required":["requirementsDocumentUrl"],"additionalProperties":false}}}},"security":[{"session":[]}]},"patch":{"operationId":"HackathonController.updateTask","tags":["Hackathons"],"description":"Update a hackathon task by its ID or slug","responses":{"200":{"description":"The updated hackathon task","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HackathonTask"}}}},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Hackathon task not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"requirementsDocumentUrl":{"type":"string","format":"uri"}},"required":["requirementsDocumentUrl"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/hackathon/tasks/{id}/jury":{"get":{"operationId":"HackathonController.indexJuryMembers","tags":["Hackathons"],"description":"Get a list of jury members for a hackathon task","responses":{"200":{"description":"A list of jury members for the task","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JuryMember"}}}}},"404":{"description":"Task not found"}},"security":[{"session":[]}]},"post":{"operationId":"HackathonController.storeJuryMember","tags":["Hackathons"],"description":"Create a new jury member for a hackathon task","responses":{"201":{"description":"The newly created jury member","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JuryMember"}}}},"400":{"description":"Invalid request or jury members can only be assigned to hackathon tasks"},"403":{"description":"Missing permission to manage jury members"},"404":{"description":"Task not found"},"409":{"description":"User is already a jury member"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","maxLength":2000},"organizationId":{"type":["string","null"],"format":"uuid"},"userId":{"type":"number","minimum":0}},"required":["userId"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/hackathon/tasks/{id}/jury/{juryMemberId}":{"get":{"operationId":"HackathonController.showJuryMember","tags":["Hackathons"],"description":"Get a specific jury member by ID","responses":{"200":{"description":"The requested jury member","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JuryMember"}}}},"403":{"description":"Missing permission to view this event"},"404":{"description":"Jury member not found"}},"security":[{"session":[]}]},"put":{"operationId":"HackathonController.updateJuryMember","tags":["Hackathons"],"description":"Update a jury member by ID","responses":{"200":{"description":"The updated jury member","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JuryMember"}}}},"403":{"description":"Missing permission to manage jury members"},"404":{"description":"Jury member not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","maxLength":2000},"organizationId":{"type":["string","null"],"format":"uuid"}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"patch":{"operationId":"HackathonController.updateJuryMember","tags":["Hackathons"],"description":"Update a jury member by ID","responses":{"200":{"description":"The updated jury member","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JuryMember"}}}},"403":{"description":"Missing permission to manage jury members"},"404":{"description":"Jury member not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","maxLength":2000},"organizationId":{"type":["string","null"],"format":"uuid"}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"HackathonController.destroyJuryMember","tags":["Hackathons"],"description":"Delete a jury member by ID","responses":{"204":{"description":"Jury member deleted successfully"},"403":{"description":"Missing permission to manage jury members"},"404":{"description":"Jury member not found"}},"security":[{"session":[]}]}},"/event/{event_id}/tasks":{"get":{"operationId":"TasksController.index","tags":["Tasks"],"description":"Get a list of tasks for an event","responses":{"200":{"description":"A list of tasks","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Task"}}}}},"403":{"description":"Missing permission to view this event"}}}},"/event/{event_id}/task":{"post":{"operationId":"TasksController.store","tags":["Tasks"],"description":"Create a new task for an event","responses":{"201":{"description":"The newly created task","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"403":{"description":"Missing permission to create tasks"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string"},"taskType":{"enum":["HACKATHON","CTF","ALGO"]},"status":{"enum":["DRAFT","ACTIVE","ARCHIVED"]},"autoregister":{"enum":["1",1,"true",true,"on","0",0,"false",false]},"slug":{"type":"string","pattern":"^[a-z0-9-]+$"},"resultsPublishedAt":{"type":"null"},"registrationStartAt":{"type":"null"},"registrationEndAt":{"type":"null"},"detailsRevealAt":{"type":"null"},"submissionsStartAt":{"type":"null"},"submissionsEndAt":{"type":"null"},"requirementsDocumentUrl":{"type":"string","format":"uri"}},"required":["title","description","taskType","slug"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/tasks/{task_id}/scores":{"get":{"operationId":"ScoresController.indexCriteria","tags":["Scores"],"description":"Get a list of scoring criteria for a task","responses":{"200":{"description":"A list of scoring criteria","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ScoringCriterion"}}}}},"403":{"description":"Missing permission to view this task"},"404":{"description":"Task not found"}},"security":[{"session":[]}]},"post":{"operationId":"ScoresController.storeCriteria","tags":["Scores"],"description":"Create a new scoring criterion for a task","responses":{"201":{"description":"The newly created scoring criterion","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoringCriterion"}}}},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Task not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"type":"string","minLength":1,"maxLength":255},"maximumScore":{"type":"integer","minimum":1},"weight":{"type":"number","minimum":0,"maximum":100},"description":{"type":["string","null"]}},"required":["category","maximumScore","weight"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/tasks/{task_id}/scores/{id}":{"get":{"operationId":"ScoresController.showCriteria","tags":["Scores"],"description":"Get a specific scoring criterion by ID","responses":{"200":{"description":"The requested scoring criterion","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoringCriterion"}}}},"403":{"description":"Missing permission to view this task"},"404":{"description":"Scoring criterion not found"}},"security":[{"session":[]}]},"put":{"operationId":"ScoresController.updateCriteria","tags":["Scores"],"description":"Update a scoring criterion by ID","responses":{"200":{"description":"The updated scoring criterion","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoringCriterion"}}}},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Scoring criterion not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"type":"string","minLength":1,"maxLength":255},"maximumScore":{"type":"integer","minimum":1},"weight":{"type":"number","minimum":0,"maximum":100},"description":{"type":["string","null"]}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"patch":{"operationId":"ScoresController.updateCriteria","tags":["Scores"],"description":"Update a scoring criterion by ID","responses":{"200":{"description":"The updated scoring criterion","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoringCriterion"}}}},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Scoring criterion not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"type":"string","minLength":1,"maxLength":255},"maximumScore":{"type":"integer","minimum":1},"weight":{"type":"number","minimum":0,"maximum":100},"description":{"type":["string","null"]}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"ScoresController.destroyCriteria","tags":["Scores"],"description":"Delete a scoring criterion by ID","responses":{"204":{"description":"Scoring criterion deleted successfully"},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Scoring criterion not found"}},"security":[{"session":[]}]}}},"components":{"schemas":{"User":{"type":"object","properties":{"id":{"type":"number"},"nickname":{"example":"JohnnyBravo","type":"string"},"name":{"example":"John","type":"string"},"surname":{"example":"Bravo","type":"string"},"email":{"example":"johnny.bravo@example.com","type":"string"},"avatarUrl":{"example":"https://example.com/avatar.png","type":"string"},"permissions":{"format":"binary","type":"number"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","nickname","email","permissions","createdAt","updatedAt"]},"Event":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"slug":{"example":"best-hackathon-ever","type":"string"},"title":{"example":"Awesome Hackathon","type":"string"},"description":{"example":"A first ever hackathon using a modern platform","type":"string"},"status":{"example":"ACTIVE","enum":["DRAFT","ACTIVE","ARCHIVED"]},"minTeamSize":{"type":"number"},"maxTeamSize":{"example":4,"type":"number"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","slug","title","description","status","minTeamSize","maxTeamSize","createdAt","updatedAt"]},"EventAdministrator":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08a","type":"string"},"eventId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"userId":{"type":"number"},"permissions":{"format":"binary","type":"number"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","eventId","userId","permissions","createdAt","updatedAt"]},"Team":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"eventId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"name":{"example":"Team Awesome","type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","eventId","name","createdAt","updatedAt"]},"TeamMember":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"teamId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"userId":{"example":1,"type":"number"},"permissions":{"format":"binary","type":"number"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","teamId","userId","permissions","createdAt","updatedAt"]},"PaginationMeta":{"type":"object","properties":{"total":{"type":"number"},"perPage":{"example":25,"type":"number"},"currentPage":{"type":"number"},"lastPage":{"example":3,"type":"number"},"firstPage":{"type":"number"},"firstPageUrl":{"example":"/data?page=1","type":"string"},"lastPageUrl":{"example":"/data?page=3","type":"string"},"nextPageUrl":{"example":"/data?page=2","type":"string"},"previousPageUrl":{"example":null,"type":"string"}},"required":["total","perPage","currentPage","lastPage","firstPage","firstPageUrl","lastPageUrl"]},"TeamInvitation":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"teamId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"inviterId":{"example":1,"type":"number"},"inviteeEmail":{"example":"user@example.com","type":"string"},"token":{"example":"secure-token-here","type":"string"},"status":{"example":"PENDING","enum":["PENDING","ACCEPTED","DECLINED","FAILED","EXPIRED"]},"expiresAt":{"format":"date-time","type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","teamId","inviterId","token","status","createdAt","updatedAt"]},"Organization":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"name":{"example":"Acme Corporation","type":"string"},"description":{"example":"A leading corporation","type":"string"},"logoUrl":{"example":"https://example.com/logo.png","type":"string"},"websiteUrl":{"example":"https://example.com","type":"string"},"eventId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","name","description","eventId","createdAt","updatedAt"]},"Sponsor":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"taskId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"organizationId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"createdAt":{"format":"date-time","type":"string"}},"required":["id","taskId","organizationId","createdAt"]},"Task":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"eventId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"slug":{"example":"awesome-hackathon-task","type":"string"},"title":{"example":"Awesome Hackathon Task","type":"string"},"description":{"example":"Build an awesome application","type":"string"},"taskType":{"example":"HACKATHON","type":"string"},"status":{"example":"ACTIVE","type":"string"},"autoregister":{"example":false,"type":"boolean"},"resultsPublishedAt":{"format":"date-time","type":"string"},"registrationStartAt":{"format":"date-time","type":"string"},"registrationEndAt":{"format":"date-time","type":"string"},"detailsRevealAt":{"format":"date-time","type":"string"},"submissionsStartAt":{"format":"date-time","type":"string"},"submissionsEndAt":{"format":"date-time","type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","eventId","slug","title","description","taskType","status","autoregister","createdAt","updatedAt"]},"TaskRegistration":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"teamId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"taskId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"createdAt":{"format":"date-time","type":"string"}},"required":["id","teamId","taskId","createdAt"]},"HackathonTask":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"taskId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"requirementsDocumentUrl":{"example":"https://example.com/requirements.pdf","type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","taskId","requirementsDocumentUrl","createdAt","updatedAt"]},"JuryMember":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"description":{"example":"Senior judge with 10 years experience","type":"string"},"userId":{"example":1,"type":"number"},"taskId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"organizationId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","description","userId","taskId","createdAt","updatedAt"]},"ScoringCriterion":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"taskId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"category":{"example":"Code Quality","type":"string"},"description":{"example":"Assessment of code quality and best practices","type":"string"},"maximumScore":{"example":100,"type":"number"},"weight":{"example":1.5,"type":"number"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","taskId","category","maximumScore","weight","createdAt","updatedAt"]}},"responses":{},"parameters":{},"examples":{},"requestBodies":{},"headers":{},"securitySchemes":{"session":{"type":"apiKey","in":"cookie","name":"xcontest-session"}},"links":{},"callbacks":{}},"tags":[{"name":"Auth","description":"Endpoints provided by AuthController"},{"name":"Events","description":"Endpoints provided by EventsController"},{"name":"Teams","description":"Endpoints provided by TeamsController"},{"name":"Organizations","description":"Endpoints provided by OrganizationsController"},{"name":"Tasks","description":"Endpoints provided by TasksController"},{"name":"Hackathons","description":"Endpoints provided by HackathonsController"},{"name":"Scores","description":"Endpoints provided by ScoresController"}],"servers":[]} \ No newline at end of file +{"openapi":"3.1.0","info":{"title":"xContest REST API","description":"Specification document for REST API component of xContest platform","version":"1.0.0"},"paths":{"/auth/{provider}/redirect":{"get":{"operationId":"AuthController.redirect","tags":["Auth"],"description":"Redirects to the social provider for authentication","responses":{"307":{"description":"Redirects to the social provider"}},"parameters":[{"name":"provider","in":"path","required":true,"schema":{"enum":["discord","github"]}}]}},"/auth/{provider}/callback":{"get":{"operationId":"AuthController.callback","tags":["Auth"],"description":"Handles the callback from the social provider","responses":{"307":{"description":"Redirects to the status page"}},"parameters":[{"name":"provider","in":"path","required":true,"schema":{"enum":["discord","github"]}}]}},"/auth/register":{"post":{"operationId":"AuthController.register","tags":["Auth"],"description":"Registers a new user with email and password","responses":{"201":{"description":"User registered successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"nickname":{"type":"string","minLength":3,"maxLength":16},"name":{"type":"string","minLength":3,"maxLength":32},"surname":{"type":"string","minLength":3,"maxLength":32},"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":8}},"required":["nickname","email","password"],"additionalProperties":false}}}}}},"/auth/login":{"post":{"operationId":"AuthController.login","tags":["Auth"],"description":"Logs in a user with email and password","responses":{"200":{"description":"User logged in successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string"}},"required":["email","password"],"additionalProperties":false}}}}}},"/auth/logout":{"post":{"operationId":"AuthController.logout","tags":["Auth"],"description":"Logs out the current user","responses":{"200":{"description":"User logged out successfully"}},"security":[{"session":[]}]}},"/events":{"get":{"operationId":"EventsController.index","tags":["Events"],"description":"Get a list of all active events","responses":{"200":{"description":"A list of active events","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Event"}}}}}}},"post":{"operationId":"EventsController.store","tags":["Events"],"description":"Create a new event","responses":{"201":{"description":"The newly created event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"403":{"description":"Missing permission to create events"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string"},"status":{"enum":["DRAFT","ACTIVE","ARCHIVED"]},"minTeamSize":{"type":"number","minimum":1},"maxTeamSize":{"type":"number","minimum":1},"slug":{"type":"string","pattern":"^[a-z0-9-]+$"}},"required":["title","description","status","minTeamSize","maxTeamSize","slug"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/events/{id}":{"get":{"operationId":"EventsController.show","tags":["Events"],"description":"Get a specific event by its slug or UUID","responses":{"200":{"description":"The requested event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"403":{"description":"Missing permission to view this event"},"404":{"description":"Event not found"}}},"put":{"operationId":"EventsController.update","tags":["Events"],"description":"Update an existing event by its slug or UUID","responses":{"200":{"description":"The updated event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"403":{"description":"Missing permission to edit this event"},"404":{"description":"Event not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string"},"status":{"enum":["DRAFT","ACTIVE","ARCHIVED"]},"minTeamSize":{"type":"number","minimum":1},"maxTeamSize":{"type":"number","minimum":1},"slug":{"type":"string"}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"patch":{"operationId":"EventsController.update","tags":["Events"],"description":"Update an existing event by its slug or UUID","responses":{"200":{"description":"The updated event","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Event"}}}},"403":{"description":"Missing permission to edit this event"},"404":{"description":"Event not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string"},"status":{"enum":["DRAFT","ACTIVE","ARCHIVED"]},"minTeamSize":{"type":"number","minimum":1},"maxTeamSize":{"type":"number","minimum":1},"slug":{"type":"string"}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"EventsController.destroy","tags":["Events"],"description":"Delete an event by its slug or UUID. Requires confirmation of the event slug.","responses":{"204":{"description":"Event deleted successfully"},"403":{"description":"Missing permission to delete this event"},"404":{"description":"Event not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"confirmation":{"type":"string"}},"required":["confirmation"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/events/{id}/administrators":{"get":{"operationId":"EventsController.indexAdministrators","tags":["Events"],"description":"Get a list of all administrators for an event","responses":{"200":{"description":"A list of administrators for the event","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventAdministrator"}}}}},"403":{"description":"Missing permission to view administrators for this event"},"404":{"description":"Event not found"}},"security":[{"session":[]}]},"post":{"operationId":"EventsController.storeAdministrator","tags":["Events"],"description":"Create a new administrator for an event","responses":{"201":{"description":"The newly created administrator","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventAdministrator"}}}},"403":{"description":"Missing permission to manage administrators for this event"},"404":{"description":"Event not found"},"409":{"description":"User is already an administrator of this event"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"userId":{"type":"number","minimum":0},"permissions":{"type":"number","minimum":0}},"required":["userId"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/events/{id}/administrators/{adminId}":{"put":{"operationId":"EventsController.updateAdministrator","tags":["Events"],"description":"Update permissions for an event administrator","responses":{"200":{"description":"The updated administrator","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventAdministrator"}}}},"403":{"description":"Missing permission to manage administrators for this event"},"404":{"description":"Event or administrator not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"permissions":{"type":"number","minimum":0}},"required":["permissions"],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"EventsController.destroyAdministrator","tags":["Events"],"description":"Remove administrator from an event","responses":{"204":{"description":"Administrator removed successfully"},"403":{"description":"Missing permission to manage administrators for this event"},"404":{"description":"Event or administrator not found"}},"security":[{"session":[]}]}},"/teams/{id}":{"get":{"operationId":"TeamsController.show","tags":["Teams"],"description":"Get a specific team by ID","responses":{"200":{"description":"The requested team","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Team"},{"type":"object","properties":{"members":{"type":"array","items":{"$ref":"#/components/schemas/TeamMember"}}},"required":["members"]}]}}}},"403":{"description":"Missing permission to view this event"},"404":{"description":"Team not found"}}},"put":{"operationId":"TeamsController.update","tags":["Teams"],"description":"Update a team by ID","responses":{"200":{"description":"The updated team","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"403":{"description":"Missing permission to edit this team"},"404":{"description":"Team not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"security":[{"session":[]}]},"patch":{"operationId":"TeamsController.update","tags":["Teams"],"description":"Update a team by ID","responses":{"200":{"description":"The updated team","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"403":{"description":"Missing permission to edit this team"},"404":{"description":"Team not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"TeamsController.destroy","tags":["Teams"],"description":"Delete a team by ID. Requires confirmation of the team name.","responses":{"204":{"description":"Team deleted successfully"},"403":{"description":"Missing permission to delete this team"},"404":{"description":"Team not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"confirmation":{"type":"string"}},"required":["confirmation"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/events/{event_id}/teams":{"post":{"operationId":"TeamsController.store","tags":["Teams"],"description":"Create a new team in an event","responses":{"201":{"description":"The newly created team","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Team"}}}},"403":{"description":"Missing permission or invalid access code"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"accessCode":{"type":"string"}},"required":["name"],"additionalProperties":false}}}}},"get":{"operationId":"TeamsController.index","tags":["Teams"],"description":"Get a list of teams for an event","responses":{"200":{"description":"A list of teams","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/PaginationMeta"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Team"}}},"required":["meta","data"]}}}},"403":{"description":"Missing permission to view this event"}},"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","minimum":1,"maximum":100}},{"name":"search","in":"query","required":false,"schema":{"type":"string","minLength":2}},{"name":"orderBy","in":"query","required":false,"schema":{"type":"string"}},{"name":"orderDirection","in":"query","required":false,"schema":{"enum":["asc","desc"]}},{"name":"filter","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","pattern":"^[^:]+:[><=!~]{1,2}[^:]+$"},"description":"Custom filter in a format key:[op]value.\n For example name:~Adam will find every name that contains Adam.\n Supported ops: <, >, <=, >=, =, !, ~"}}]}},"/teams/{id}/invites":{"post":{"operationId":"TeamsController.storeInvite","tags":["Teams"],"description":"Create a new team invitation","responses":{"201":{"description":"The newly created invitation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamInvitation"}}}},"403":{"description":"Missing permission to invite to this team"},"404":{"description":"Team not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"validFor":{"enum":["1 hour","4 hours","12 hours","1 day","3 days","1 week"]}},"required":["validFor"],"additionalProperties":false}}}},"security":[{"session":[]}]},"get":{"operationId":"TeamsController.indexInvites","tags":["Teams"],"description":"Get a list of team invitations for a team","responses":{"200":{"description":"A list of team invitations","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TeamInvitation"}}}}},"403":{"description":"Missing permission to edit this team"},"404":{"description":"Team not found"}},"security":[{"session":[]}]}},"/teams/{id}/kick":{"post":{"operationId":"TeamsController.kickMember","tags":["Teams"],"description":"Kick a member from a team","responses":{"204":{"description":"Team member removed successfully"},"403":{"description":"Missing permission to kick this member"},"404":{"description":"Team or member not found"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"member":{"type":"string","format":"uuid"}},"required":["member"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/invitations/{id}":{"get":{"operationId":"TeamsController.respondToInvite","tags":["Teams"],"description":"Accept or decline a team invitation","responses":{"200":{"description":"Invitation responded successfully","content":{"application/json":{"schema":{"type":"object","properties":{"invitation":{"$ref":"#/components/schemas/TeamInvitation"},"member":{"$ref":"#/components/schemas/TeamMember"}},"required":["invitation","member"]}}}},"403":{"description":"Missing permission to respond to this invitation"},"404":{"description":"Invitation not found"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":16,"maxLength":45}},{"name":"action","in":"query","required":false,"schema":{"enum":["ACCEPT","REJECT"]}}],"security":[{"session":[]}]}},"/invitations":{"get":{"operationId":"TeamsController.indexUserInvites","tags":["Teams"],"description":"Get a list of pending team invitations for the current user","responses":{"200":{"description":"A list of team invitations for the user","content":{"application/json":{"schema":{"type":"object","properties":{"meta":{"$ref":"#/components/schemas/PaginationMeta"},"data":{"type":"array","items":{"$ref":"#/components/schemas/TeamInvitation"}}},"required":["meta","data"]}}}}},"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"number","minimum":0}},{"name":"limit","in":"query","required":false,"schema":{"type":"number","minimum":1,"maximum":100}},{"name":"search","in":"query","required":false,"schema":{"type":"string","minLength":2}},{"name":"orderBy","in":"query","required":false,"schema":{"type":"string"}},{"name":"orderDirection","in":"query","required":false,"schema":{"enum":["asc","desc"]}},{"name":"filter","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","pattern":"^[^:]+:[><=!~]{1,2}[^:]+$"},"description":"Custom filter in a format key:[op]value.\n For example name:~Adam will find every name that contains Adam.\n Supported ops: <, >, <=, >=, =, !, ~"}}],"security":[{"session":[]}]}},"/events/{event_id}/organizations":{"get":{"operationId":"OrganizationsController.index","tags":["Organizations"],"description":"Get a list of organizations for an event","responses":{"200":{"description":"A list of organizations","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Organization"}}}}},"403":{"description":"Missing permission to view this event"}}},"post":{"operationId":"OrganizationsController.store","tags":["Organizations"],"description":"Create a new organization for an event","responses":{"201":{"description":"The newly created organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"403":{"description":"Missing permission to manage organizations"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string","maxLength":2000},"logoUrl":{"type":"string","format":"uri"},"websiteUrl":{"type":"string","format":"uri"}},"required":["name"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/events/{event_id}/organizations/{id}":{"get":{"operationId":"OrganizationsController.show","tags":["Organizations"],"description":"Get a specific organization by ID","responses":{"200":{"description":"The requested organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"403":{"description":"Missing permission to view this event"},"404":{"description":"Organization not found"}}},"put":{"operationId":"OrganizationsController.update","tags":["Organizations"],"description":"Update an organization by ID","responses":{"200":{"description":"The updated organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"403":{"description":"Missing permission to manage organizations"},"404":{"description":"Organization not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string","maxLength":2000},"logoUrl":{"type":"string","format":"uri"},"websiteUrl":{"type":"string","format":"uri"}},"required":["name"],"additionalProperties":false}}}},"security":[{"session":[]}]},"patch":{"operationId":"OrganizationsController.update","tags":["Organizations"],"description":"Update an organization by ID","responses":{"200":{"description":"The updated organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}}},"403":{"description":"Missing permission to manage organizations"},"404":{"description":"Organization not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string","maxLength":2000},"logoUrl":{"type":"string","format":"uri"},"websiteUrl":{"type":"string","format":"uri"}},"required":["name"],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"OrganizationsController.destroy","tags":["Organizations"],"description":"Delete an organization by ID","responses":{"204":{"description":"Organization deleted successfully"},"403":{"description":"Missing permission to manage organizations"},"404":{"description":"Organization not found"}},"security":[{"session":[]}]}},"/tasks/{id}/sponsors":{"get":{"operationId":"OrganizationsController.indexSponsors","tags":["Organizations"],"description":"Get a list of sponsors for a task","responses":{"200":{"description":"A list of sponsors for the task","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Sponsor"}}}}},"404":{"description":"Task not found"}},"security":[{"session":[]}]},"post":{"operationId":"OrganizationsController.storeSponsor","tags":["Organizations"],"description":"Create a new sponsor for a task","responses":{"201":{"description":"The newly created sponsor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sponsor"}}}},"400":{"description":"Organization does not belong to the same event"},"403":{"description":"Missing permission to manage sponsors"},"404":{"description":"Task not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"organizationId":{"type":"string","format":"uuid"}},"required":["organizationId"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/tasks/{id}/sponsors/{sponsorId}":{"get":{"operationId":"OrganizationsController.showSponsor","tags":["Organizations"],"description":"Get a specific sponsor by ID","responses":{"200":{"description":"The requested sponsor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sponsor"}}}},"403":{"description":"Missing permission to view this event"},"404":{"description":"Sponsor not found"}},"security":[{"session":[]}]},"delete":{"operationId":"OrganizationsController.destroySponsor","tags":["Organizations"],"description":"Delete a sponsor by ID","responses":{"204":{"description":"Sponsor deleted successfully"},"403":{"description":"Missing permission to manage sponsors"},"404":{"description":"Sponsor not found"}},"security":[{"session":[]}]}},"/tasks/{id}":{"get":{"operationId":"TasksController.show","tags":["Tasks"],"description":"Get a specific task by its ID or slug","responses":{"200":{"description":"The requested task","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"403":{"description":"Missing permission to view this task"},"404":{"description":"Task not found"}}},"put":{"operationId":"TasksController.update","tags":["Tasks"],"description":"Update a task by its ID or slug","responses":{"200":{"description":"The updated task","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Task not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string"},"taskType":{"enum":["HACKATHON","CTF","ALGO"]},"status":{"enum":["DRAFT","ACTIVE","ARCHIVED"]},"autoregister":{"type":"boolean"},"slug":{"type":"string","pattern":"^[a-z0-9-]+$"},"resultsPublishedAt":{"type":"null"},"registrationStartAt":{"type":"null"},"registrationEndAt":{"type":"null"},"detailsRevealAt":{"type":"null"},"submissionsStartAt":{"type":"null"},"submissionsEndAt":{"type":"null"}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"patch":{"operationId":"TasksController.update","tags":["Tasks"],"description":"Update a task by its ID or slug","responses":{"200":{"description":"The updated task","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Task not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string"},"taskType":{"enum":["HACKATHON","CTF","ALGO"]},"status":{"enum":["DRAFT","ACTIVE","ARCHIVED"]},"autoregister":{"type":"boolean"},"slug":{"type":"string","pattern":"^[a-z0-9-]+$"},"resultsPublishedAt":{"type":"null"},"registrationStartAt":{"type":"null"},"registrationEndAt":{"type":"null"},"detailsRevealAt":{"type":"null"},"submissionsStartAt":{"type":"null"},"submissionsEndAt":{"type":"null"}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"TasksController.destroy","tags":["Tasks"],"description":"Delete a task by its ID or slug","responses":{"204":{"description":"Task deleted successfully"},"403":{"description":"Missing permission to delete this task"},"404":{"description":"Task not found"}},"security":[{"session":[]}]}},"/tasks/{taskId}/registrations":{"post":{"operationId":"TasksController.storeTaskRegistration","tags":["Tasks"],"description":"Register a team to a task","responses":{"201":{"description":"The newly created task registration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRegistration"}}}},"400":{"description":"Team does not belong to the same event or registration is not open"},"403":{"description":"Missing permission to register team"},"404":{"description":"Task or team not found"},"409":{"description":"Team is already registered to the task"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"teamId":{"type":"string","format":"uuid"}},"required":["teamId"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/registrations/{id}":{"delete":{"operationId":"TasksController.destroyTaskRegistration","tags":["Tasks"],"description":"Unregister a team from a task","responses":{"204":{"description":"Task registration deleted successfully"},"403":{"description":"Missing permission to unregister team"},"404":{"description":"Task registration not found"}},"security":[{"session":[]}]}},"/hackathon/tasks/{id}":{"put":{"operationId":"HackathonController.updateTask","tags":["Hackathons"],"description":"Update a hackathon task by its ID or slug","responses":{"200":{"description":"The updated hackathon task","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HackathonTask"}}}},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Hackathon task not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"requirementsDocumentUrl":{"type":"string","format":"uri"}},"required":["requirementsDocumentUrl"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/hackathon/tasks/{id}/jury":{"get":{"operationId":"HackathonController.indexJuryMembers","tags":["Hackathons"],"description":"Get a list of jury members for a hackathon task","responses":{"200":{"description":"A list of jury members for the task","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/JuryMember"}}}}},"404":{"description":"Task not found"}},"security":[{"session":[]}]},"post":{"operationId":"HackathonController.storeJuryMember","tags":["Hackathons"],"description":"Create a new jury member for a hackathon task","responses":{"201":{"description":"The newly created jury member","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JuryMember"}}}},"400":{"description":"Invalid request or jury members can only be assigned to hackathon tasks"},"403":{"description":"Missing permission to manage jury members"},"404":{"description":"Task not found"},"409":{"description":"User is already a jury member"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","maxLength":2000},"organizationId":{"type":["string","null"],"format":"uuid"},"userId":{"type":"number","minimum":0}},"required":["userId"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/hackathon/tasks/{id}/jury/{juryMemberId}":{"get":{"operationId":"HackathonController.showJuryMember","tags":["Hackathons"],"description":"Get a specific jury member by ID","responses":{"200":{"description":"The requested jury member","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JuryMember"}}}},"403":{"description":"Missing permission to view this event"},"404":{"description":"Jury member not found"}},"security":[{"session":[]}]},"put":{"operationId":"HackathonController.updateJuryMember","tags":["Hackathons"],"description":"Update a jury member by ID","responses":{"200":{"description":"The updated jury member","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JuryMember"}}}},"403":{"description":"Missing permission to manage jury members"},"404":{"description":"Jury member not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","maxLength":2000},"organizationId":{"type":["string","null"],"format":"uuid"}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"HackathonController.destroyJuryMember","tags":["Hackathons"],"description":"Delete a jury member by ID","responses":{"204":{"description":"Jury member deleted successfully"},"403":{"description":"Missing permission to manage jury members"},"404":{"description":"Jury member not found"}},"security":[{"session":[]}]}},"/event/{event_id}/tasks":{"get":{"operationId":"TasksController.index","tags":["Tasks"],"description":"Get a list of tasks for an event","responses":{"200":{"description":"A list of tasks","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Task"}}}}},"403":{"description":"Missing permission to view this event"}}}},"/event/{event_id}/task":{"post":{"operationId":"TasksController.store","tags":["Tasks"],"description":"Create a new task for an event","responses":{"201":{"description":"The newly created task","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Task"}}}},"403":{"description":"Missing permission to create tasks"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":3,"maxLength":255},"description":{"type":"string"},"taskType":{"enum":["HACKATHON","CTF","ALGO"]},"status":{"enum":["DRAFT","ACTIVE","ARCHIVED"]},"autoregister":{"enum":["1",1,"true",true,"on","0",0,"false",false]},"slug":{"type":"string","pattern":"^[a-z0-9-]+$"},"resultsPublishedAt":{"type":"null"},"registrationStartAt":{"type":"null"},"registrationEndAt":{"type":"null"},"detailsRevealAt":{"type":"null"},"submissionsStartAt":{"type":"null"},"submissionsEndAt":{"type":"null"},"requirementsDocumentUrl":{"type":"string","format":"uri"}},"required":["title","description","taskType","slug"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/tasks/{task_id}/scores":{"get":{"operationId":"ScoresController.indexCriteria","tags":["Scores"],"description":"Get a list of scoring criteria for a task","responses":{"200":{"description":"A list of scoring criteria","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ScoringCriterion"}}}}},"403":{"description":"Missing permission to view this task"},"404":{"description":"Task not found"}},"security":[{"session":[]}]},"post":{"operationId":"ScoresController.storeCriteria","tags":["Scores"],"description":"Create a new scoring criterion for a task","responses":{"201":{"description":"The newly created scoring criterion","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoringCriterion"}}}},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Task not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"type":"string","minLength":1,"maxLength":255},"maximumScore":{"type":"integer","minimum":1},"weight":{"type":"number","minimum":0,"maximum":100},"description":{"type":["string","null"]}},"required":["category","maximumScore","weight"],"additionalProperties":false}}}},"security":[{"session":[]}]}},"/tasks/{task_id}/scores/{id}":{"get":{"operationId":"ScoresController.showCriteria","tags":["Scores"],"description":"Get a specific scoring criterion by ID","responses":{"200":{"description":"The requested scoring criterion","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoringCriterion"}}}},"403":{"description":"Missing permission to view this task"},"404":{"description":"Scoring criterion not found"}},"security":[{"session":[]}]},"put":{"operationId":"ScoresController.updateCriteria","tags":["Scores"],"description":"Update a scoring criterion by ID","responses":{"200":{"description":"The updated scoring criterion","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScoringCriterion"}}}},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Scoring criterion not found"}},"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"category":{"type":"string","minLength":1,"maxLength":255},"maximumScore":{"type":"integer","minimum":1},"weight":{"type":"number","minimum":0,"maximum":100},"description":{"type":["string","null"]}},"required":[],"additionalProperties":false}}}},"security":[{"session":[]}]},"delete":{"operationId":"ScoresController.destroyCriteria","tags":["Scores"],"description":"Delete a scoring criterion by ID","responses":{"204":{"description":"Scoring criterion deleted successfully"},"403":{"description":"Missing permission to edit this task"},"404":{"description":"Scoring criterion not found"}},"security":[{"session":[]}]}}},"components":{"schemas":{"User":{"type":"object","properties":{"id":{"type":"number"},"nickname":{"example":"JohnnyBravo","type":"string"},"name":{"example":"John","type":"string"},"surname":{"example":"Bravo","type":"string"},"email":{"example":"johnny.bravo@example.com","type":"string"},"avatarUrl":{"example":"https://example.com/avatar.png","type":"string"},"permissions":{"format":"binary","type":"number"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","nickname","email","permissions","createdAt","updatedAt"]},"Event":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"slug":{"example":"best-hackathon-ever","type":"string"},"title":{"example":"Awesome Hackathon","type":"string"},"description":{"example":"A first ever hackathon using a modern platform","type":"string"},"status":{"example":"ACTIVE","enum":["DRAFT","ACTIVE","ARCHIVED"]},"minTeamSize":{"type":"number"},"maxTeamSize":{"example":4,"type":"number"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","slug","title","description","status","minTeamSize","maxTeamSize","createdAt","updatedAt"]},"EventAdministrator":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08a","type":"string"},"eventId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"userId":{"type":"number"},"permissions":{"format":"binary","type":"number"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","eventId","userId","permissions","createdAt","updatedAt"]},"Team":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"eventId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"name":{"example":"Team Awesome","type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","eventId","name","createdAt","updatedAt"]},"TeamMember":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"teamId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"userId":{"example":1,"type":"number"},"permissions":{"format":"binary","type":"number"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","teamId","userId","permissions","createdAt","updatedAt"]},"PaginationMeta":{"type":"object","properties":{"total":{"type":"number"},"perPage":{"example":25,"type":"number"},"currentPage":{"type":"number"},"lastPage":{"example":3,"type":"number"},"firstPage":{"type":"number"},"firstPageUrl":{"example":"/data?page=1","type":"string"},"lastPageUrl":{"example":"/data?page=3","type":"string"},"nextPageUrl":{"example":"/data?page=2","type":"string"},"previousPageUrl":{"example":null,"type":"string"}},"required":["total","perPage","currentPage","lastPage","firstPage","firstPageUrl","lastPageUrl"]},"TeamInvitation":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"teamId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"inviterId":{"example":1,"type":"number"},"inviteeEmail":{"example":"user@example.com","type":"string"},"token":{"example":"secure-token-here","type":"string"},"status":{"example":"PENDING","enum":["PENDING","ACCEPTED","DECLINED","FAILED","EXPIRED"]},"expiresAt":{"format":"date-time","type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","teamId","inviterId","token","status","createdAt","updatedAt"]},"Organization":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"name":{"example":"Acme Corporation","type":"string"},"description":{"example":"A leading corporation","type":"string"},"logoUrl":{"example":"https://example.com/logo.png","type":"string"},"websiteUrl":{"example":"https://example.com","type":"string"},"eventId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","name","description","eventId","createdAt","updatedAt"]},"Sponsor":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"taskId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"organizationId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"createdAt":{"format":"date-time","type":"string"}},"required":["id","taskId","organizationId","createdAt"]},"Task":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"eventId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"slug":{"example":"awesome-hackathon-task","type":"string"},"title":{"example":"Awesome Hackathon Task","type":"string"},"description":{"example":"Build an awesome application","type":"string"},"taskType":{"example":"HACKATHON","type":"string"},"status":{"example":"ACTIVE","type":"string"},"autoregister":{"example":false,"type":"boolean"},"resultsPublishedAt":{"format":"date-time","type":"string"},"registrationStartAt":{"format":"date-time","type":"string"},"registrationEndAt":{"format":"date-time","type":"string"},"detailsRevealAt":{"format":"date-time","type":"string"},"submissionsStartAt":{"format":"date-time","type":"string"},"submissionsEndAt":{"format":"date-time","type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","eventId","slug","title","description","taskType","status","autoregister","createdAt","updatedAt"]},"TaskRegistration":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"teamId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"taskId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"createdAt":{"format":"date-time","type":"string"}},"required":["id","teamId","taskId","createdAt"]},"HackathonTask":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"taskId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"requirementsDocumentUrl":{"example":"https://example.com/requirements.pdf","type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","taskId","requirementsDocumentUrl","createdAt","updatedAt"]},"JuryMember":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"description":{"example":"Senior judge with 10 years experience","type":"string"},"userId":{"example":1,"type":"number"},"taskId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"organizationId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","description","userId","taskId","createdAt","updatedAt"]},"ScoringCriterion":{"type":"object","properties":{"id":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"taskId":{"example":"d62a1715-6b7a-4b40-8bdd-4a10f2ceb08c","type":"string"},"category":{"example":"Code Quality","type":"string"},"description":{"example":"Assessment of code quality and best practices","type":"string"},"maximumScore":{"example":100,"type":"number"},"weight":{"example":1.5,"type":"number"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","taskId","category","maximumScore","weight","createdAt","updatedAt"]}},"responses":{},"parameters":{},"examples":{},"requestBodies":{},"headers":{},"securitySchemes":{"session":{"type":"apiKey","in":"cookie","name":"xcontest-session"}},"links":{},"callbacks":{}},"tags":[{"name":"Auth","description":"Endpoints provided by AuthController"},{"name":"Events","description":"Endpoints provided by EventsController"},{"name":"Teams","description":"Endpoints provided by TeamsController"},{"name":"Organizations","description":"Endpoints provided by OrganizationsController"},{"name":"Tasks","description":"Endpoints provided by TasksController"},{"name":"Hackathons","description":"Endpoints provided by HackathonsController"},{"name":"Scores","description":"Endpoints provided by ScoresController"}],"servers":[]} \ No newline at end of file diff --git a/eslint.config.js b/eslint.config.js index 790a579..ded390f 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -189,6 +189,7 @@ export default configApp([ local: { rules: { 'copyright-header': copyrightRule } }, }, files: ['app/**/*.ts', 'config/**/*.ts', 'database/**/*.ts', 'start/**/*.ts', 'tests/**/*.ts'], + ignores: ['database/schema.ts'], rules: { 'local/copyright-header': 'error', }, diff --git a/package.json b/package.json index 4ba11ee..738c6a9 100644 --- a/package.json +++ b/package.json @@ -33,18 +33,21 @@ "#start/*": "./start/*.js", "#tests/*": "./tests/*.js", "#config/*": "./config/*.js", - "#openapi/*": "./docs/generator/*.js" + "#openapi/*": "./docs/generator/*.js", + "#workers/*": "./workers/*.js", + "#generated/*": "./.adonisjs/server/*.js", + "#transformers/*": "./app/transformers/*.js" }, "devDependencies": { - "@adonisjs/assembler": "^7.8.2", - "@adonisjs/eslint-config": "^2.0.0", - "@adonisjs/prettier-config": "^1.4.4", - "@adonisjs/tsconfig": "^1.4.0", + "@adonisjs/assembler": "^8.0.0", + "@adonisjs/eslint-config": "^3.0.0", + "@adonisjs/prettier-config": "^1.4.5", + "@adonisjs/tsconfig": "^2.0.0", "@japa/api-client": "^3.1.0", "@japa/assert": "^4.0.1", - "@japa/plugin-adonisjs": "^4.0.0", + "@japa/plugin-adonisjs": "^5.1.0", "@japa/runner": "^4.2.0", - "@swc/core": "1.11.24", + "@poppinss/ts-exec": "^1.4.4", "@types/luxon": "^3.7.1", "@types/node": "^22.15.18", "eslint": "^9.26.0", @@ -52,24 +55,28 @@ "husky": "^9.1.7", "pino-pretty": "^13.0.0", "prettier": "^3.5.3", - "ts-node-maintained": "^10.9.5", "typescript": "~5.8", - "typescript-eslint": "^8.56.1" + "typescript-eslint": "^8.56.1", + "youch": "^4.1.0" }, "dependencies": { - "@adonisjs/ally": "^5.1.1", - "@adonisjs/auth": "^9.4.0", - "@adonisjs/bouncer": "^3.1.6", - "@adonisjs/core": "^6.18.0", - "@adonisjs/cors": "^2.2.1", - "@adonisjs/drive": "^3.4.1", - "@adonisjs/lucid": "^21.6.1", - "@adonisjs/session": "^7.7.1", + "@adonisjs/ally": "^6.0.0", + "@adonisjs/auth": "^10.0.0", + "@adonisjs/bouncer": "^4.0.0", + "@adonisjs/core": "^7.0.0", + "@adonisjs/cors": "^3.0.0", + "@adonisjs/drive": "^4.0.0", + "@adonisjs/lucid": "^22.0.0", + "@adonisjs/mail": "^10.0.0", + "@adonisjs/redis": "^10.0.0", + "@adonisjs/session": "^8.0.0", "@aws-sdk/client-s3": "^3.995.0", "@aws-sdk/s3-request-presigner": "^3.995.0", "@poppinss/colors": "^4.1.6", "@scalar/core": "^0.3.42", "@vinejs/vine": "^4.3.0", + "bullmq": "^5.70.1", + "edge.js": "^6.5.0", "luxon": "^3.7.2", "openapi3-ts": "^4.5.0", "pg": "^8.18.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a2e265..efaf8dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,29 +9,35 @@ importers: .: dependencies: '@adonisjs/ally': - specifier: ^5.1.1 - version: 5.1.1(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0)) + specifier: ^6.0.0 + version: 6.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0)) '@adonisjs/auth': - specifier: ^9.4.0 - version: 9.6.0(34f7b8323dd7e033f83e16958dfe5221) + specifier: ^10.0.0 + version: 10.0.0(f076a244769c106c7c479bb7a4b5800d) '@adonisjs/bouncer': - specifier: ^3.1.6 - version: 3.1.6(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0)) + specifier: ^4.0.0 + version: 4.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(edge.js@6.5.0) '@adonisjs/core': - specifier: ^6.18.0 - version: 6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0) + specifier: ^7.0.0 + version: 7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0) '@adonisjs/cors': - specifier: ^2.2.1 - version: 2.2.1(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0)) + specifier: ^3.0.0 + version: 3.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0)) '@adonisjs/drive': - specifier: ^3.4.1 - version: 3.4.1(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@aws-sdk/client-s3@3.995.0)(@aws-sdk/s3-request-presigner@3.995.0) + specifier: ^4.0.0 + version: 4.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@aws-sdk/client-s3@3.995.0)(@aws-sdk/s3-request-presigner@3.995.0)(edge.js@6.5.0) '@adonisjs/lucid': - specifier: ^21.6.1 - version: 21.8.2(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0) + specifier: ^22.0.0 + version: 22.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0) + '@adonisjs/mail': + specifier: ^10.0.0 + version: 10.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@types/luxon@3.7.1)(@types/node@22.19.11)(dayjs@1.11.19)(edge.js@6.5.0)(luxon@3.7.2) + '@adonisjs/redis': + specifier: ^10.0.0 + version: 10.0.0(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0)) '@adonisjs/session': - specifier: ^7.7.1 - version: 7.7.1(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@adonisjs/lucid@21.8.2(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0)) + specifier: ^8.0.0 + version: 8.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@adonisjs/lucid@22.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0))(@adonisjs/redis@10.0.0(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0)))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))(@japa/plugin-adonisjs@5.1.0(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))(@japa/runner@4.5.0))(edge.js@6.5.0) '@aws-sdk/client-s3': specifier: ^3.995.0 version: 3.995.0 @@ -43,10 +49,16 @@ importers: version: 4.1.6 '@scalar/core': specifier: ^0.3.42 - version: 0.3.42 + version: 0.3.43 '@vinejs/vine': specifier: ^4.3.0 version: 4.3.0 + bullmq: + specifier: ^5.70.1 + version: 5.70.1 + edge.js: + specifier: ^6.5.0 + version: 6.5.0 luxon: specifier: ^3.7.2 version: 3.7.2 @@ -61,17 +73,17 @@ importers: version: 0.2.2 devDependencies: '@adonisjs/assembler': - specifier: ^7.8.2 - version: 7.8.2(typescript@5.8.3) + specifier: ^8.0.0 + version: 8.0.0(typescript@5.8.3) '@adonisjs/eslint-config': - specifier: ^2.0.0 - version: 2.1.2(eslint@9.39.3)(prettier@3.8.1)(typescript@5.8.3) + specifier: ^3.0.0 + version: 3.0.0(eslint@9.39.3)(prettier@3.8.1)(typescript@5.8.3) '@adonisjs/prettier-config': - specifier: ^1.4.4 + specifier: ^1.4.5 version: 1.4.5 '@adonisjs/tsconfig': - specifier: ^1.4.0 - version: 1.4.1 + specifier: ^2.0.0 + version: 2.0.0 '@japa/api-client': specifier: ^3.1.0 version: 3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0) @@ -79,14 +91,14 @@ importers: specifier: ^4.0.1 version: 4.2.0(@japa/runner@4.5.0) '@japa/plugin-adonisjs': - specifier: ^4.0.0 - version: 4.0.0(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))(@japa/runner@4.5.0) + specifier: ^5.1.0 + version: 5.1.0(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))(@japa/runner@4.5.0) '@japa/runner': specifier: ^4.2.0 version: 4.5.0 - '@swc/core': - specifier: 1.11.24 - version: 1.11.24 + '@poppinss/ts-exec': + specifier: ^1.4.4 + version: 1.4.4 '@types/luxon': specifier: ^3.7.1 version: 3.7.1 @@ -108,55 +120,71 @@ importers: prettier: specifier: ^3.5.3 version: 3.8.1 - ts-node-maintained: - specifier: ^10.9.5 - version: 10.9.6(@swc/core@1.11.24)(@types/node@22.19.11)(typescript@5.8.3) typescript: specifier: ~5.8 version: 5.8.3 typescript-eslint: specifier: ^8.56.1 version: 8.56.1(eslint@9.39.3)(typescript@5.8.3) + youch: + specifier: ^4.1.0 + version: 4.1.0 packages: '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} - '@adonisjs/ace@13.4.0': - resolution: {integrity: sha512-7Wq6CpXmQm3m/6fKfzubAadCdiH2kKSni+K8s5KcTIFryKSqW+f06UAPOUwRJWqy80hnVlujAjveIsNJSPeJjA==} - engines: {node: '>=18.16.0'} + '@adonisjs/ace@14.0.1': + resolution: {integrity: sha512-tvvhCuRJbhlmmzn9p9CsWWUbi4p5dBc9XppI5pQZGE6cl8o4KPJKqWYTVcZT2Q2N03vw8Pg4Ec+2KyO/EotOJw==} + engines: {node: '>=24.0.0'} + peerDependencies: + youch: ^4.1.0-beta.11 || ^4.1.0 - '@adonisjs/ally@5.1.1': - resolution: {integrity: sha512-Uu+g5y7jnmMP0iXhPYTx9caJnovp+CTqxDN6XpyuLQGVZjNr9fqbPeaBVs1/jTAVSAtpv4UrHsb+827XXd24Jw==} + '@adonisjs/ally@6.0.0': + resolution: {integrity: sha512-lrN0xBI7WAZR0dOpGwgYvdqgxzd3lmoNc0PQQ5NZ6vC+xF5GJSf3lEwwMqZolSy0sJIK7xVNfJA82xjn43tsRQ==} engines: {node: '>=20.6.0'} peerDependencies: - '@adonisjs/core': ^6.2.0 + '@adonisjs/assembler': ^8.0.0 + '@adonisjs/core': ^7.0.0-next.8 || ^7.0.0 + peerDependenciesMeta: + '@adonisjs/assembler': + optional: true - '@adonisjs/application@8.4.2': - resolution: {integrity: sha512-gxyQgl1n7M/hv7ZKQOlTo2adBMehjEO0ssWSG3AGW2RXdCvkHQKlatFXMuXJMmGg2P1AWJX0LEiXey9+qxC9Uw==} - engines: {node: '>=18.16.0'} + '@adonisjs/application@9.0.0': + resolution: {integrity: sha512-iQpq/JRJsnrqOMHfu72CYjmlkH5FwT28DhUKEOjktccmFh8OLdVZ2Sieb8b2/qNv4c+w8Yo7keOGEzOYUrU+kA==} + engines: {node: '>=24.0.0'} peerDependencies: - '@adonisjs/config': ^5.0.0 - '@adonisjs/fold': ^10.0.0 + '@adonisjs/assembler': ^8.0.0-next.23 || ^8.0.0 + '@adonisjs/config': ^6.1.0-next.0 || ^6.0.0 + '@adonisjs/fold': ^11.0.0-next.3 || ^11.0.0 + peerDependenciesMeta: + '@adonisjs/assembler': + optional: true - '@adonisjs/assembler@7.8.2': - resolution: {integrity: sha512-csLdMW58cwuRjdPEDE0dqwHZCT5snCh+1sQ19HPnQ/BLKPPAvQdDRdw0atoC8LVmouB8ghXVHp3SxnVxlvXYWQ==} - engines: {node: '>=20.6.0'} + '@adonisjs/assembler@8.0.0': + resolution: {integrity: sha512-fA2FNC4Kldzu1aT6NZpk031oi/mQTN2I7MBVCcMBtfuKY+xXCgfTepx/krn2X/Gg0UKK8zeT+ioyLJ1Z77SV5w==} + engines: {node: '>=24.0.0'} peerDependencies: typescript: ^4.0.0 || ^5.0.0 - '@adonisjs/auth@9.6.0': - resolution: {integrity: sha512-v7wHlY606TwqnWWU5SIMJV0ZcNhjH2LeBLb764eCFVgeNEEdv8konhRcABqTTNADrHr1ANVuV7PymN9gzgG63w==} - engines: {node: '>=18.16.0'} + '@adonisjs/auth@10.0.0': + resolution: {integrity: sha512-ag78Yhrwi+ljsQKXZFwe5Qpkbt6az8NqWvU2NZSVVzP/JWwp5GShzX6DOAzVQIhbViBnLB66xnkL7qnRd62tdA==} + engines: {node: '>=24.0.0'} peerDependencies: - '@adonisjs/core': ^6.11.0 - '@adonisjs/lucid': ^20.0.0 || ^21.0.1 - '@adonisjs/session': ^7.4.1 - '@japa/api-client': ^2.0.3 || ^3.0.0 - '@japa/browser-client': ^2.0.3 - '@japa/plugin-adonisjs': ^3.0.1 || ^4.0.0 + '@adonisjs/assembler': ^8.0.0-next.26 || ^8.0.0 + '@adonisjs/core': ^7.0.0-next.16 || ^7.0.0 + '@adonisjs/i18n': ^3.0.0-next.2 || ^3.0.0 + '@adonisjs/lucid': ^22.0.0-next.1 || ^22.0.0 + '@adonisjs/session': ^8.0.0-next.1 || ^8.0.0 + '@japa/api-client': ^3.1.1 + '@japa/browser-client': ^2.2.0 + '@japa/plugin-adonisjs': ^5.1.0-next.0 || ^5.1.0 peerDependenciesMeta: + '@adonisjs/assembler': + optional: true + '@adonisjs/i18n': + optional: true '@adonisjs/lucid': optional: true '@adonisjs/session': @@ -168,41 +196,44 @@ packages: '@japa/plugin-adonisjs': optional: true - '@adonisjs/bodyparser@10.1.3': - resolution: {integrity: sha512-FtxUbVYDHrW94z4+w1dOTq31TLkD3wAoyVVCQLY9irNOBrjSH9ucKP4tq8tq2jeQffoRh3R2j7jp2VW8psSQcA==} - engines: {node: '>=18.16.0'} + '@adonisjs/bodyparser@11.0.0': + resolution: {integrity: sha512-R5WmPtJ2mcv6x755uZmYSHX1eOUr2p/JZpxPYLDqybwwmuvQ5guL79zdBen4euAdc/VLD17sOFyxeuHxikHewQ==} + engines: {node: '>=24.0.0'} peerDependencies: - '@adonisjs/http-server': ^7.4.0 + '@adonisjs/http-server': ^8.0.0-next.17 || ^8.0.0 - '@adonisjs/bouncer@3.1.6': - resolution: {integrity: sha512-vBTaiY3JpQaVo8ZnrRH4km1mBxc1SlAmjAzuYDF9zX9rl9nIxDPKWIDojBpYQXr13SvmOS+BKfACtV55l8g6Cw==} - engines: {node: '>=18.16.0'} + '@adonisjs/bouncer@4.0.0': + resolution: {integrity: sha512-FfJmnYeCxDPTqMqYRB5VAPdhMVJsZhov1mad5Gc1lYcXgGjmuBjfhAbhKtRDIBrJ1FrUBSf8shT61bN5LX3w7g==} + engines: {node: '>=24.0.0'} peerDependencies: - '@adonisjs/core': ^6.17.1 - '@adonisjs/i18n': ^2.2.0 - edge.js: ^6.2.1 + '@adonisjs/assembler': ^8.0.0-next.26 || ^8.0.0 + '@adonisjs/core': ^7.0.0-next.16 || ^7.0.0 + '@adonisjs/i18n': ^3.0.0-next.2 || ^3.0.0 + edge.js: ^6.4.0 peerDependenciesMeta: - '@adonisjs/core': + '@adonisjs/assembler': optional: true '@adonisjs/i18n': optional: true edge.js: optional: true - '@adonisjs/config@5.0.3': - resolution: {integrity: sha512-dO7gkYxZsrsnR8n7d5KUpyi+Q5c6BnV2rmFDqEmEjz5AkOZLLzJJJbeHgMb+M27le7ifEUoa8MRu6RED8NMsJg==} - engines: {node: '>=18.16.0'} + '@adonisjs/config@6.1.0': + resolution: {integrity: sha512-YVDRL8xHCtM6iMnAefOBaz6iXVpojwBPDQWPKxnVSucycYeNGrGitJiLy+cGaeAU7Gjm8al9SJRJt3rRPr5PKg==} + engines: {node: '>=24.0.0'} - '@adonisjs/core@6.20.0': - resolution: {integrity: sha512-2DpPlQALzPScD5yzDJ4O7ZyzUt3tqHj4zjQDcO2CifhvOnli9tw0xsJpmPVbnogu1Z//N0YB1esOCD7JPmWLxg==} - engines: {node: '>=20.6.0'} + '@adonisjs/core@7.0.0': + resolution: {integrity: sha512-acmnZAsO0fmxCsQkc1SQHRXM0LTRkbCzxpQf+1+ONuqbeiKar25As58it/P06G+pGJUCCfo3sXP9JvEKIAxQFA==} + engines: {node: '>=24.0.0'} hasBin: true peerDependencies: - '@adonisjs/assembler': ^7.8.0 - '@vinejs/vine': ^2.1.0 || ^3.0.0 || ^4.0.0 - argon2: ^0.31.2 || ^0.41.0 || ^0.43.0 || ^0.44.0 - bcrypt: ^5.1.1 || ^6.0.0 + '@adonisjs/assembler': ^8.0.0-next.23 || ^8.0.0 + '@vinejs/vine': ^4.0.0 + argon2: ^0.44.0 + bcrypt: ^6.0.0 edge.js: ^6.2.0 + pino-pretty: ^13.1.3 + youch: ^4.1.0-beta.13 || ^4.1.0 peerDependenciesMeta: '@adonisjs/assembler': optional: true @@ -214,42 +245,52 @@ packages: optional: true edge.js: optional: true + pino-pretty: + optional: true + youch: + optional: true - '@adonisjs/cors@2.2.1': - resolution: {integrity: sha512-qnrSG8ylpgTeZBOYEN3yXxY0PBUEg1KGDhgn9VKVFGxLKT+o9GGVOSZxUK3wG341B1zB9w5vuZN1z4M0Jitb6g==} + '@adonisjs/cors@3.0.0': + resolution: {integrity: sha512-S3LS+zZ2SziwVvilnkKg4DjmU+df1xqdZRDSQjUKJr5hYEOVAlnci0kHTiz2szxB+QiseQXr/XfN/D5ooMMlYQ==} engines: {node: '>=18.16.0'} peerDependencies: - '@adonisjs/core': ^6.2.0 + '@adonisjs/assembler': ^8.0.0-next.7 || ^8.0.0 + '@adonisjs/core': ^7.0.0-next.0 || ^7.0.0 + peerDependenciesMeta: + '@adonisjs/assembler': + optional: true - '@adonisjs/drive@3.4.1': - resolution: {integrity: sha512-oDYY4wJ7wDMlO4E+dZPYBu+T3Av7Mj+JL8+J33qgyxtiJylnZgoZDuRfFjZZix/bFNNuWX2sLwTMnyiDcK+YsA==} - engines: {node: '>=20.6.0'} + '@adonisjs/drive@4.0.0': + resolution: {integrity: sha512-dJPmTKmYba05/e6x807VjL9m5JT56bZKqAgFknkS96kUSH52i9M+InsZTwUQ87cW9UQ1tED8ts++LgsyE3EkEQ==} + engines: {node: '>=24.0.0'} peerDependencies: - '@adonisjs/core': ^6.2.0 - '@aws-sdk/client-s3': ^3.577.0 - '@aws-sdk/s3-request-presigner': ^3.577.0 - '@google-cloud/storage': ^7.10.2 + '@adonisjs/assembler': ^8.0.0-next.7 || ^8.0.0 + '@adonisjs/core': ^7.0.0-next.0 || ^7.0.0 + '@aws-sdk/client-s3': ^3.884.0 + '@aws-sdk/s3-request-presigner': ^3.884.0 + '@google-cloud/storage': ^7.17.0 + edge.js: ^6.4.0 peerDependenciesMeta: + '@adonisjs/assembler': + optional: true '@aws-sdk/client-s3': optional: true '@aws-sdk/s3-request-presigner': optional: true '@google-cloud/storage': optional: true + edge.js: + optional: true - '@adonisjs/encryption@6.0.2': - resolution: {integrity: sha512-37XqVPsZi6zXMbC0Me1/qlcTP0uE+KAtYOFx7D7Tvtz377NL/6gqxqgpW/BopgOSD+CVDXjzO/Wx3M2UrbkJRQ==} - engines: {node: '>=18.16.0'} - - '@adonisjs/env@6.2.0': - resolution: {integrity: sha512-DZ7zQ4sBhzWftjU/SxJ7BstimrEiByCvmtAcMNDpDjOtJnR50172PRz1X7KjM3EqjCVrB19izzRVx/rmpCRPOA==} - engines: {node: '>=18.16.0'} + '@adonisjs/env@7.0.0': + resolution: {integrity: sha512-9lSGONI4B1E7LxyVZiUd1yCH9BOri4Ybp4b9x3ojT9AkKfYwqvj4S2USIvFAlkE7eHUC2WMvPgMLX17342Y3ww==} + engines: {node: '>=24.0.0'} - '@adonisjs/eslint-config@2.1.2': - resolution: {integrity: sha512-cGCdyObOwN1WnqzVdI/wNJFAiaO6NrltZobAGK8zzEx8RbzNGRU5trRtRlX/eq29g8bWatdu6HYS/whVQm9KHg==} + '@adonisjs/eslint-config@3.0.0': + resolution: {integrity: sha512-JA2EUNDiX3PUbE/FLzgZgurCL/jsu5ExN24MKJWMU861Po4xSQgKz4B8NtE5qALBUALO4lGucSOcJ7x3j/nH2w==} peerDependencies: - eslint: ^9.9.0 - prettier: ^3.3.3 + eslint: ^9.9.0 || ^10.0.0 + prettier: ^3.8.1 '@adonisjs/eslint-plugin@2.2.2': resolution: {integrity: sha512-OAIrljEpbhyikG+BQ8r7195GoRDPmMEBUfSfr6ajM6IPtQMPAb/oKzeXF8XTy2CxupUoGhMd2n8+sx/pgL1m4g==} @@ -257,22 +298,22 @@ packages: peerDependencies: eslint: ^9.9.1 || ^10.0.0 - '@adonisjs/events@9.0.2': - resolution: {integrity: sha512-qZn2e9V9C8tF4MNqEWv5JGxMG7gcHSJM8RncGpjuJ4cwFwd2jF4xrN6wkCprTVwoyZSxNS0Cp9NkAonySjG5vg==} - engines: {node: '>=18.16.0'} + '@adonisjs/events@10.1.0': + resolution: {integrity: sha512-RGMj9711BxCRFngmSV35uyP50Nhk3TMw2wCUw4409qMyWIvd6lMFlHotdhTkV+yTtc2waZE7+gMpgq6k1N7fKQ==} + engines: {node: '>=24.0.0'} peerDependencies: - '@adonisjs/application': ^8.0.2 - '@adonisjs/fold': ^10.0.1 + '@adonisjs/application': ^9.0.0-next.14 || ^9.0.0 + '@adonisjs/fold': ^11.0.0-next.4 || ^11.0.0 - '@adonisjs/fold@10.2.1': - resolution: {integrity: sha512-WuW62T3jZB0w/7C7YbDkfzIMJaEQZ2cGdf6qoeevB0zYNH4kTp2oREfTx45ndNjiN6D5GhjoR8JRpjiAfppFIA==} - engines: {node: '>=18.16.0'} + '@adonisjs/fold@11.0.0': + resolution: {integrity: sha512-RnmDPWz2imVp/B74xitxCPqTdoP07bZvfJe1bh9CD9Rmia4jjDvehZF67KFyGNMZ24MuKasqs3jOcM1vGJp0GA==} + engines: {node: '>=24.0.0'} - '@adonisjs/hash@9.1.1': - resolution: {integrity: sha512-ZkRguwjAp4skKvKDdRAfdJ2oqQ0N7p9l3sioyXO1E8o0WcsyDgEpsTQtuVNoIdMiw4sn4gJlmL3nyF4BcK1ZDQ==} + '@adonisjs/hash@10.0.0': + resolution: {integrity: sha512-emzCZ+ckoCwYaJwYLIfzOYoHK/NfLMmAaPnyNRrTn8dEU/Guz7R9m5kjePZat1FfrePq6OEufcmMqp6XwAJCaw==} engines: {node: '>=20.6.0'} peerDependencies: - argon2: ^0.31.2 || ^0.41.0 || ^0.43.0 + argon2: ^0.31.2 || ^0.41.0 || ^0.43.0 || ^0.44.0 bcrypt: ^5.1.1 || ^6.0.0 peerDependenciesMeta: argon2: @@ -280,31 +321,46 @@ packages: bcrypt: optional: true - '@adonisjs/health@2.0.0': - resolution: {integrity: sha512-dEAABiAJew1imzwi+OvV/SAnjkMp8TbD5ZIzx1dMRnPynJAlRf37//bHLwZ5Cw44ke5kPzZ/l1n9cx/VeBCicA==} - engines: {node: '>=20.6.0'} + '@adonisjs/health@3.1.0': + resolution: {integrity: sha512-m3doBnSwi/l9v1DO79xmjAoSPl9b2XCp+crGwF8QUlhe5CgWgtfnL0SeFNEiZGliD3c4gYdihKz4Pnydctva8A==} + engines: {node: '>=24.0.0'} - '@adonisjs/http-server@7.8.0': - resolution: {integrity: sha512-aVMOpExPDNwxjnKGnc4g4sJTIQC3CfNwzWfPFWJm4WnAGXxdI3OxI2zU9FTopB50y0OVK3dWO4/c1Fu6U4vjWQ==} - engines: {node: '>=18.16.0'} + '@adonisjs/http-server@8.0.0': + resolution: {integrity: sha512-j1R15a7jALDOit9iKJ7XnSEdYJEsyiUkm+i0tywWquEOtDZdSSoU28e/cyizvJpW4kkZ3VDiKoLiYUrCA8IXSg==} + engines: {node: '>=24.0.0'} peerDependencies: - '@adonisjs/application': ^8.0.2 - '@adonisjs/encryption': ^6.0.0 - '@adonisjs/events': ^9.0.0 - '@adonisjs/fold': ^10.0.1 - '@adonisjs/logger': ^6.0.1 - - '@adonisjs/logger@6.0.7': - resolution: {integrity: sha512-zeWk14EuFGD+YrwLfwrzUcEKS06equr1Xn624+b28H3s0JhjmgXNfsDRlBe9X+GgJiuD8Zf3/52MX//7cGaNWQ==} - engines: {node: '>=18.16.0'} + '@adonisjs/application': ^9.0.0-next.14 || ^9.0.0 + '@adonisjs/events': ^10.1.0-next.4 || ^10.1.0 + '@adonisjs/fold': ^11.0.0-next.4 || ^11.0.0 + '@adonisjs/logger': ^7.1.0-next.3 || ^7.1.0 + '@boringnode/encryption': ^0.2.0 || ^1.0.0 + youch: ^4.1.0-beta.13 || ^4.1.0 + peerDependenciesMeta: + youch: + optional: true - '@adonisjs/lucid@21.8.2': - resolution: {integrity: sha512-+ocmllAr77cc7EgQoDQokNpB3lz1Rmw0olcNtx7TbR8TeCAiegDAkNe1HylKzNOGX+i0kvb0FeOvSlZ9N0GmXQ==} - engines: {node: '>=18.16.0'} + '@adonisjs/http-transformers@2.3.1': + resolution: {integrity: sha512-N3gBcKyoPHDeVvVIedTzc+ARSUURwNGTPid/e3iLdM4v/myoSnXd76FL/GGzMmjfqqxegpjI2IEMibG7ylrKSQ==} + engines: {node: '>=24.0.0'} + peerDependencies: + '@adonisjs/fold': ^11.0.0-next.2 + + '@adonisjs/logger@7.1.0': + resolution: {integrity: sha512-l96HiHkoh1h2lL5DreGx9gexoPHVqJ0OFs118EpyyrZHtPlq3dojMQlO+h/r/igalZ9ESsZs3uBYfgc7RLrVvA==} + engines: {node: '>=24.0.0'} peerDependencies: - '@adonisjs/assembler': ^7.7.0 - '@adonisjs/core': ^6.10.1 - '@vinejs/vine': ^2.0.0 || ^3.0.0 || ^4.0.0 + pino-pretty: ^13.1.1 + peerDependenciesMeta: + pino-pretty: + optional: true + + '@adonisjs/lucid@22.0.0': + resolution: {integrity: sha512-yZVD9QnWfRgj8HmA0CIc3rvaNXB6boCQl7JjQH1A2l8pIsH/aQPkHSKidD/opgAjhy3TuDXjHi3R+jRVn5f6ZQ==} + engines: {node: '>=24.0.0'} + peerDependencies: + '@adonisjs/assembler': ^8.0.0-next.29 || ^8.0.0 + '@adonisjs/core': ^7.0.0-next.21 || ^7.0.0 + '@vinejs/vine': ^3.0.0 || ^4.0.0 luxon: ^3.4.4 peerDependenciesMeta: '@adonisjs/assembler': @@ -314,11 +370,31 @@ packages: luxon: optional: true - '@adonisjs/presets@2.6.4': - resolution: {integrity: sha512-WvzWouziX88GMoGBLDobGRaSktWfz+fRqADJyhJd7+l0M2VMm5NF0LvAXbV8lMBLtBCicOxk973bJ9Kmyfy3qQ==} + '@adonisjs/mail@10.0.0': + resolution: {integrity: sha512-u8V7RI8YbLTBO6uITVzLsR/s2dwAXNvjBzmTT7tzGtZ2WPmQ8hPmDtEshkguWDuQpvMHKQEEHoAQ7KEUpZuQ0g==} + engines: {node: '>=24.0.0'} + peerDependencies: + '@adonisjs/assembler': ^8.0.0-next.14 || ^8.0.0 + '@adonisjs/core': ^7.0.0-next.8 || ^7.0.0 + '@aws-sdk/client-sesv2': ^3.997.0 + edge.js: ^6.0.1 + mjml: ^4.18.0 + peerDependenciesMeta: + '@adonisjs/assembler': + optional: true + '@aws-sdk/client-sesv2': + optional: true + edge.js: + optional: true + mjml: + optional: true + + '@adonisjs/presets@3.0.0': + resolution: {integrity: sha512-+gVIvyEiM7jiN5Gb93200TAC8ed3vZIPfxFFo0pIVgX8k40BleuYhWxFhI6TPocVXXIIpw2JuMFV2Pqjk36W2A==} + engines: {node: '>=24.0.0'} peerDependencies: - '@adonisjs/assembler': ^7.8.2 - '@adonisjs/core': ^6.13.0 + '@adonisjs/assembler': ^8.0.0-next.9 || ^8.0.0 + '@adonisjs/core': ^7.0.0-next.1 || ^7.0.0 peerDependenciesMeta: '@adonisjs/assembler': optional: true @@ -326,23 +402,33 @@ packages: '@adonisjs/prettier-config@1.4.5': resolution: {integrity: sha512-UOYmJQeOhWRIWE2v/cXmpMPq2Its5lOpNeJ+nr79yASAVFVtlDE5qdHicMgVdTbFPWFgHzmU8icVk6YmaOnSXg==} - '@adonisjs/repl@4.1.2': - resolution: {integrity: sha512-NnczRJusl0082GOjEFYwObW/yBGJtpfJFnkFCQdQ6eykgBHVNYaY6qstfob+l1bedetRj0hrDY6YfsWMkA0MCg==} - engines: {node: '>=18.16.0'} + '@adonisjs/redis@10.0.0': + resolution: {integrity: sha512-3Wh+2HaxSNHE8LCdDu0QtucyTLoS75xhZDO8nPbaBCRSvLj4gO0dtzshYD7HbFUipkNV+rooJJQWqvsrs0JdJA==} + engines: {node: '>=24.0.0'} + peerDependencies: + '@adonisjs/core': ^7.0.0-next.0 || ^7.0.0 - '@adonisjs/session@7.7.1': - resolution: {integrity: sha512-govnDxtc+ZVTOrmgFHi5IG6zs9ylsCH6cbgRvDDlH+15xYuy93mGhO+R96JoqgwVDSSuS0tFP/0HJQDglOoOPA==} - engines: {node: '>=18.16.0'} + '@adonisjs/repl@5.0.0': + resolution: {integrity: sha512-cPp0w5svYUA3M1gdxQBO2Mx5g+SZfPweqKCAxk7C1Os/Qu67JKgWqXqNnl1q0Tzv/l0L19Ms1C7ivzQxeBNajg==} + engines: {node: '>=24.0.0'} + + '@adonisjs/session@8.0.0': + resolution: {integrity: sha512-JPPhZG3shdNKkMl8J9Gt9UVxk1nwzvaKctIzj1T2gTP4UwsTncX6eXk9djK6xU2mgP3ipxGKI5chpfPnW95poA==} + engines: {node: '>=24.0.0'} peerDependencies: - '@adonisjs/core': ^6.6.0 - '@adonisjs/lucid': ^21.0.0 - '@adonisjs/redis': ^8.0.1 || ^9.0.0 - '@aws-sdk/client-dynamodb': ^3.658.0 - '@aws-sdk/util-dynamodb': ^3.658.0 - '@japa/api-client': ^2.0.3 || ^3.0.0 + '@adonisjs/assembler': ^8.0.0-next.26 || ^8.0.0 + '@adonisjs/core': ^7.0.0-next.16 || ^7.0.0 + '@adonisjs/lucid': ^22.0.0-next.0 || ^22.0.0 + '@adonisjs/redis': ^10.0.0-next.2 || ^10.0.0 + '@aws-sdk/client-dynamodb': ^3.955.0 + '@aws-sdk/util-dynamodb': ^3.955.0 + '@japa/api-client': ^3.1.0 '@japa/browser-client': ^2.0.3 - edge.js: ^6.0.2 + '@japa/plugin-adonisjs': ^5.1.0-next.0 || ^5.1.0 + edge.js: ^6.4.0 peerDependenciesMeta: + '@adonisjs/assembler': + optional: true '@adonisjs/lucid': optional: true '@adonisjs/redis': @@ -355,14 +441,13 @@ packages: optional: true '@japa/browser-client': optional: true + '@japa/plugin-adonisjs': + optional: true edge.js: optional: true - '@adonisjs/tsconfig@1.4.1': - resolution: {integrity: sha512-b7bHdnTaDRGfec4XVtpwsSEukZ549MgqOShScCd1b4xkMK8z1q/jb0Xs4iUL86oIDhty2y7k5vvA6aoQKPAvXQ==} - - '@antfu/install-pkg@0.4.1': - resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} + '@adonisjs/tsconfig@2.0.0': + resolution: {integrity: sha512-Uz8qvB6KR9otCh9zei2VEj7tPwdsrT7R+voYoN4tUfEijWRdTNgJ8d1CtyLKHaggCCOwZIwZLVklV/h2FDHgNw==} '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} @@ -371,6 +456,68 @@ packages: resolution: {integrity: sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==} engines: {node: '>=4'} + '@ast-grep/napi-darwin-arm64@0.41.0': + resolution: {integrity: sha512-SoAzCj1o9/mdtOdj6pZI1qpZkfncd+2DsWAa2ZmoomKc7CFKCzPniJtThXeOq+IJKcufS8zFGbk57ScMpDgd5A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@ast-grep/napi-darwin-x64@0.41.0': + resolution: {integrity: sha512-SSQeJzm19nNQ+caTgLLFgmhhjhyL8C+8yDSYSYYwOwqkj/Zx5sZHFvND2f8XeOM9Tey7Lkvaf1Prp4l/NwrskA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@ast-grep/napi-linux-arm64-gnu@0.41.0': + resolution: {integrity: sha512-Td7ciWtsbuYlFV4OC8bg7s+DexXsGLy29yKJqI1ZvoE+9SpWPdFVojeIu9qiQinGh27uggOAZ25WCROnZ2kJpw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@ast-grep/napi-linux-arm64-musl@0.41.0': + resolution: {integrity: sha512-2wx0SfNZ7eBJN40ne9ncuODoU8ck85wXJ94WV40Ol8Pr4owtrd1yFXQqZTMrq5xYcf4Z3yQWwmEhaH6TJAoBbg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@ast-grep/napi-linux-x64-gnu@0.41.0': + resolution: {integrity: sha512-OzaoOpW4/uX9T5D6h2mXCncCaQ+Ph/hzzH3c91ozNrFYqsQ7MDS04PUhRJQ4Z79H4yuXx2jkbXaj3+ZNR3DP6g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@ast-grep/napi-linux-x64-musl@0.41.0': + resolution: {integrity: sha512-Oeg3BhOC+FA32mW3FHfXXW/AelvicfRhQIrWq5YNS44Sdy9scA34b2FiBPLaj4dHwBgg3ebEfDgmiYBQOMkXaw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@ast-grep/napi-win32-arm64-msvc@0.41.0': + resolution: {integrity: sha512-6rE9lQbey3rRfr3wQxrfGMcLeyNRydjA4rfdfAciWQApQ+lat5QI7tlgqPqo5EKITUNwap6YY+IxfwBxsLbHYg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@ast-grep/napi-win32-ia32-msvc@0.41.0': + resolution: {integrity: sha512-ITtAD7tI3/vImz13wJUUns3UDIsrE3d2/JhhLN3CE1YqNItuNoW53nWqR3YcC/KsfSJnDddD6R0gMVkmlXapAg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@ast-grep/napi-win32-x64-msvc@0.41.0': + resolution: {integrity: sha512-DSqDh4KJ5+8x+gfAtWdXdeRpGfTjgm00kTW/pqUxhMdW6DVShMSDrFR+lj3dL9FmzMrwVGb+mcN8dWNqGA85Cw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@ast-grep/napi@0.41.0': + resolution: {integrity: sha512-3kK6hCxyinsxZIM6p/gWoN33v0GgxBXU6uDbM/J2j3t7f9lXRvA1J+8HeiemCtXNA75H1EK5Oo7/E28HOhYHDg==} + engines: {node: '>= 10'} + '@aws-crypto/crc32@5.2.0': resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} @@ -557,29 +704,29 @@ packages: '@borewit/text-codec@0.2.1': resolution: {integrity: sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==} - '@chevrotain/cst-dts-gen@11.1.1': - resolution: {integrity: sha512-fRHyv6/f542qQqiRGalrfJl/evD39mAvbJLCekPazhiextEatq1Jx1K/i9gSd5NNO0ds03ek0Cbo/4uVKmOBcw==} + '@boringnode/encryption@1.0.0': + resolution: {integrity: sha512-wGGOE7ywA4W6KAVoVC7s1P4ULzFLIQA/JvthGAa41EA0CaH7kGGawkBB5t5tvWopgBNMhOpIg3uxvULxqf2rQw==} + engines: {node: '>=20.6'} + + '@chevrotain/cst-dts-gen@11.1.2': + resolution: {integrity: sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==} - '@chevrotain/gast@11.1.1': - resolution: {integrity: sha512-Ko/5vPEYy1vn5CbCjjvnSO4U7GgxyGm+dfUZZJIWTlQFkXkyym0jFYrWEU10hyCjrA7rQtiHtBr0EaZqvHFZvg==} + '@chevrotain/gast@11.1.2': + resolution: {integrity: sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==} - '@chevrotain/regexp-to-ast@11.1.1': - resolution: {integrity: sha512-ctRw1OKSXkOrR8VTvOxrQ5USEc4sNrfwXHa1NuTcR7wre4YbjPcKw+82C2uylg/TEwFRgwLmbhlln4qkmDyteg==} + '@chevrotain/regexp-to-ast@11.1.2': + resolution: {integrity: sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==} - '@chevrotain/types@11.1.1': - resolution: {integrity: sha512-wb2ToxG8LkgPYnKe9FH8oGn3TMCBdnwiuNC5l5y+CtlaVRbCytU0kbVsk6CGrqTL4ZN4ksJa0TXOYbxpbthtqw==} + '@chevrotain/types@11.1.2': + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} - '@chevrotain/utils@11.1.1': - resolution: {integrity: sha512-71eTYMzYXYSFPrbg/ZwftSaSDld7UYlS8OQa3lNnn9jzNtpFbaReRRyghzqS7rI3CDaorqpPJJcXGHK+FE1TVQ==} + '@chevrotain/utils@11.1.2': + resolution: {integrity: sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -598,10 +745,6 @@ packages: resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.15.2': - resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.17.0': resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -618,17 +761,13 @@ packages: resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.5': - resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.4.1': resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@faker-js/faker@9.9.0': - resolution: {integrity: sha512-OEl393iCOoo/z8bMezRlJu+GlRGlsKbUAN7jKB6LhnKoqKve5DXRpalbItIIcwnCjs1k/FOPjFzcA6Qn+H+YbA==} - engines: {node: '>=18.0.0', npm: '>=9.0.0'} + '@faker-js/faker@10.3.0': + resolution: {integrity: sha512-It0Sne6P3szg7JIi6CgKbvTZoMjxBZhcv91ZrqrNuaZQfB5WoqYYbzCUOq89YR+VY8juY9M1vDWmDDa2TzfXCw==} + engines: {node: ^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0, npm: '>=10'} '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} @@ -646,6 +785,12 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@ioredis/commands@1.5.0': + resolution: {integrity: sha512-eUgLqrMf8nJkZxT24JvVRrQya1vZkQh8BBeYNwGDqa5I0VUi8ACx7uFvAaLxintokpTenkK6DASvo/bvNbBGow==} + + '@ioredis/commands@1.5.1': + resolution: {integrity: sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==} + '@japa/api-client@3.2.1': resolution: {integrity: sha512-dICbeEkgGRpjkm3CviOpvPfYMBZddaoW2w20pgNMm3CfvD2bixWOFn6FBRZRq5L+fHYe/O/xfSNGMCQBFy7Zlw==} engines: {node: '>=18.16.0'} @@ -673,15 +818,15 @@ packages: resolution: {integrity: sha512-ogPT87QLaugKyPVcq+ZypcetVeJpXZN7RfVRlRDIrSHsHBw6ILCtNXghVxD9POjqxtUM7RON3sUkgZzLnVQA5g==} engines: {node: '>=18.16.0'} - '@japa/plugin-adonisjs@4.0.0': - resolution: {integrity: sha512-M2LUtHhKr4KgBfX73tDHNCD1IOmcXp9dvC+AinmRxsggIFnarsClcfjT/sXc3uNzjZW7Lk31LvcH76AxJHBmJQ==} + '@japa/plugin-adonisjs@5.1.0': + resolution: {integrity: sha512-KTbpxdyyJHvplvXXJDVqCwFXPUe+QCiWMZQOklMhafzMWU0lAPEgVla3esUTgN0NQU/m9m+a/B6XUTEu5VYDIg==} engines: {node: '>=18.16.0'} peerDependencies: - '@adonisjs/core': ^6.17.0 - '@japa/api-client': ^2.0.3 || ^3.0.0 - '@japa/browser-client': ^2.0.3 - '@japa/runner': ^3.1.2 || ^4.0.0 - playwright: ^1.42.1 + '@adonisjs/core': ^7.0.0-next.21 || ^7.0.0 + '@japa/api-client': ^3.1.0 + '@japa/browser-client': ^2.2.0 + '@japa/runner': ^4.0.0 || ^5.0.0 + playwright: ^1.57.0 peerDependenciesMeta: '@japa/api-client': optional: true @@ -706,15 +851,35 @@ packages: resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} + cpu: [arm64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} + cpu: [x64] + os: [darwin] - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} + cpu: [arm64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} + cpu: [arm] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + cpu: [x64] + os: [linux] - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + cpu: [x64] + os: [win32] '@noble/hashes@1.8.0': resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} @@ -746,20 +911,14 @@ packages: resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@poppinss/chokidar-ts@4.1.9': - resolution: {integrity: sha512-Nl4JAb5dvwmZhXElSuiuHy4YkB7YFql/AE2tTu9TyJCfPnUrcwm2iMTUZVa+aGz+bolRPuPNKsuypxN59gBvQQ==} - engines: {node: '>=18.16.0'} - peerDependencies: - typescript: ^5.0.0 - '@poppinss/cliui@6.7.0': resolution: {integrity: sha512-ihlhDUHw4Lfx6Euo8SSDar/rHHD8T1aFXJ1Z3NYSYjHcr9rSK5iy6zC5xvQJCeGY1BTninW520iKv/hd4lS0tA==} '@poppinss/colors@4.1.6': resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} - '@poppinss/dumper@0.6.5': - resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} + '@poppinss/dumper@0.7.0': + resolution: {integrity: sha512-0UTYalzk2t6S4rA2uHOz5bSSW2CHdv4vggJI6Alg90yvl0UgXs6XSXpH96OH+bRkX4J/06djv29pqXJ0lq5Kag==} '@poppinss/exception@1.2.3': resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} @@ -767,6 +926,9 @@ packages: '@poppinss/hooks@7.3.0': resolution: {integrity: sha512-/H35z/bWqHg7085QOxWUDYMidx6Kl6b8kIyzIXlRYzWvsk1xm9hQOlXWdWEYch+Gmn8eL7tThx59MBj8BLxDrQ==} + '@poppinss/inspect@1.0.1': + resolution: {integrity: sha512-kLeEaBSGhlleyYvKc7c9s3uE6xv7cwyulE0EgHf4jU/CL96h0yC4mkdw1wvC1l1PYYQozCGy46FwMBAAMOobCA==} + '@poppinss/macroable@1.1.0': resolution: {integrity: sha512-y/YKzZDuG8XrpXpM7Z1RdQpiIc0MAKyva24Ux1PB4aI7RiSI/79K8JVDcdyubriTm7vJ1LhFs8CrZpmPnx/8Pw==} @@ -776,8 +938,8 @@ packages: '@poppinss/middleware@3.2.7': resolution: {integrity: sha512-MZC0Z97ozSz+PpfyxUPUy/ImuthpqvBbY7qku7f4Q2maHz+2uXfchfO8OggXLS6zEJ078l+jpAHZ2rDIRdjeVg==} - '@poppinss/multiparty@2.0.1': - resolution: {integrity: sha512-Pf3V9PFyZDIkDBBiAOT2hdmA+1l/+hverHbUnMzNzwtwgO50s2ZPt5KxUydVA0hceg9gryo5unQ0WUF1SO9tkQ==} + '@poppinss/multiparty@3.0.0': + resolution: {integrity: sha512-z9jchUzsv7E+7sa4tWHb0+95Byx7w0ydlPGxg3nzyb7h3QlRdeW8/QkU9SexUY4lsT12do93AfNBAhSuOoVqjA==} '@poppinss/oauth-client@7.0.2': resolution: {integrity: sha512-7zFnfGtd7oLb9Ox9Kz77QwU8t4IV8PdHIicSkLgXGis1ZfLb/853dm+26xz0dPo0qZCJvbBVelgmDvm+JFMhQw==} @@ -797,32 +959,32 @@ packages: '@poppinss/string@1.7.1': resolution: {integrity: sha512-OrLzv/nGDU6l6dLXIQHe8nbNSWWfuSbpB/TW5nRpZFf49CLuQlIHlSPN9IdSUv2vG+59yGM6LoibsaHn8B8mDw==} + '@poppinss/ts-exec@1.4.4': + resolution: {integrity: sha512-jQLbeQG3n9B+hpygIAQpNaNd3y9+7sLn0Jioo9qEo84Vd3XeRMKr3Qql/u2bixzONO2+RsBbzEJ3AWb2iCPARw==} + engines: {node: '>=24.0.0'} + '@poppinss/types@1.2.1': resolution: {integrity: sha512-qUYnzl0m9HJTWsXtr8Xo7CwDx6wcjrvo14bOVbIMIlKJCzKrm3LX55dRTDr1/x4PpSvKVgmxvC6Ly2YiqXKOvQ==} - '@poppinss/utils@6.10.1': - resolution: {integrity: sha512-da+MMyeXhBaKtxQiWPfy7+056wk3lVIhioJnXHXkJ2/OHDaZfFcyKHNl1R06sdYO8lIRXcXdoZ6LO2ARmkAREA==} - engines: {node: '>=18.16.0'} - '@poppinss/utils@7.0.0-next.6': resolution: {integrity: sha512-1OQDbCKmFROvWpmzvkQV/mCzBXSwhED8SJfJ0HiYKiLNEqYM8Kpa4EK0AfmXGQc+DdIj6eqib/vT8i5tJ2fatw==} - '@poppinss/utils@7.0.0-next.7': - resolution: {integrity: sha512-Jwc6YqiLf8wAarEpC2bzamq5XIe3i553LeCzZhqYamSK1zZjYoa6tEPjKq1ASARjuNpYQAj96TLBw/yXJJDF/A==} + '@poppinss/utils@7.0.1': + resolution: {integrity: sha512-mveSvLI2YPC114mK5HCuSYfUtjpClf1wHG1VCqZJCp4U2ypPhIt62Iku5urh0kPAFvnvCVHx2bXBSH14qMTOlQ==} '@poppinss/validator-lite@2.1.2': resolution: {integrity: sha512-UhSG1ouT6r67VbEFHK/8ax3EMZYHioew9PqGmEZjV41G15aPZi6cyhXtBVvF9xqkHMflA5V680k7bQzV0kfD5w==} - '@scalar/core@0.3.42': - resolution: {integrity: sha512-RbyooMuG4oQEOhiA/tC+++bkIK1zeYGNxrTzSAgTrTzVlbFKPzw72fs4gX9/eHDo7qVc9FsymIW6qVpWbySzNg==} + '@scalar/core@0.3.43': + resolution: {integrity: sha512-id97ufmbFPXCGKLizx0pATqeVm0hJk6WVLX1IUPYZJBTvo4Bq4u/hUGeWZtdn+Drgc11zMkGHL3LADulgFFyNA==} engines: {node: '>=20'} '@scalar/helpers@0.2.16': resolution: {integrity: sha512-JlDUKdmwAHdcFUdTngNtx/uhLKTBACXlgvri7iKb6Jx6ImRIBgHwxZNAqlil1L047+QBrKh97lnezNpzNQAffQ==} engines: {node: '>=20'} - '@scalar/types@0.6.7': - resolution: {integrity: sha512-ihHaoPF9qQR05pV3mfE7yBlHQdm5CoJVE0HiJFH6xSrzLfk2yJ6XdD3OzyRCqyxkZ38bj2RIZMS6LJsGy4p66g==} + '@scalar/types@0.6.8': + resolution: {integrity: sha512-24AwoTKOggB+VNY65yIuSXwE5/kwjplqrx4v+VYuRBtIMVt3I+Ppaz45Xk3QoDirNCGtraNRpAbfArLRlFcP/w==} engines: {node: '>=20'} '@sec-ant/readable-stream@0.4.1': @@ -831,18 +993,10 @@ packages: '@sinclair/typebox@0.34.48': resolution: {integrity: sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==} - '@sindresorhus/is@6.3.1': - resolution: {integrity: sha512-FX4MfcifwJyFOI2lPoX7PQxCqx8BG1HCho7WdiXwpEQx1Ycij0JxkfYtGK7yqNScrZGSlt6RE6sw8QYoH7eKnQ==} - engines: {node: '>=16'} - '@sindresorhus/is@7.2.0': resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==} engines: {node: '>=18'} - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - '@sindresorhus/merge-streams@4.0.0': resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} @@ -1075,72 +1229,72 @@ packages: peerDependencies: eslint: ^9.0.0 || ^10.0.0 - '@swc/core-darwin-arm64@1.11.24': - resolution: {integrity: sha512-dhtVj0PC1APOF4fl5qT2neGjRLgHAAYfiVP8poJelhzhB/318bO+QCFWAiimcDoyMgpCXOhTp757gnoJJrheWA==} + '@swc/core-darwin-arm64@1.15.18': + resolution: {integrity: sha512-+mIv7uBuSaywN3C9LNuWaX1jJJ3SKfiJuE6Lr3bd+/1Iv8oMU7oLBjYMluX1UrEPzwN2qCdY6Io0yVicABoCwQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.11.24': - resolution: {integrity: sha512-H/3cPs8uxcj2Fe3SoLlofN5JG6Ny5bl8DuZ6Yc2wr7gQFBmyBkbZEz+sPVgsID7IXuz7vTP95kMm1VL74SO5AQ==} + '@swc/core-darwin-x64@1.15.18': + resolution: {integrity: sha512-wZle0eaQhnzxWX5V/2kEOI6Z9vl/lTFEC6V4EWcn+5pDjhemCpQv9e/TDJ0GIoiClX8EDWRvuZwh+Z3dhL1NAg==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.11.24': - resolution: {integrity: sha512-PHJgWEpCsLo/NGj+A2lXZ2mgGjsr96ULNW3+T3Bj2KTc8XtMUkE8tmY2Da20ItZOvPNC/69KroU7edyo1Flfbw==} + '@swc/core-linux-arm-gnueabihf@1.15.18': + resolution: {integrity: sha512-ao61HGXVqrJFHAcPtF4/DegmwEkVCo4HApnotLU8ognfmU8x589z7+tcf3hU+qBiU1WOXV5fQX6W9Nzs6hjxDw==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.11.24': - resolution: {integrity: sha512-C2FJb08+n5SD4CYWCTZx1uR88BN41ZieoHvI8A55hfVf2woT8+6ZiBzt74qW2g+ntZ535Jts5VwXAKdu41HpBg==} + '@swc/core-linux-arm64-gnu@1.15.18': + resolution: {integrity: sha512-3xnctOBLIq3kj8PxOCgPrGjBLP/kNOddr6f5gukYt/1IZxsITQaU9TDyjeX6jG+FiCIHjCuWuffsyQDL5Ew1bg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] libc: [glibc] - '@swc/core-linux-arm64-musl@1.11.24': - resolution: {integrity: sha512-ypXLIdszRo0re7PNNaXN0+2lD454G8l9LPK/rbfRXnhLWDBPURxzKlLlU/YGd2zP98wPcVooMmegRSNOKfvErw==} + '@swc/core-linux-arm64-musl@1.15.18': + resolution: {integrity: sha512-0a+Lix+FSSHBSBOA0XznCcHo5/1nA6oLLjcnocvzXeqtdjnPb+SvchItHI+lfeiuj1sClYPDvPMLSLyXFaiIKw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] libc: [musl] - '@swc/core-linux-x64-gnu@1.11.24': - resolution: {integrity: sha512-IM7d+STVZD48zxcgo69L0yYptfhaaE9cMZ+9OoMxirNafhKKXwoZuufol1+alEFKc+Wbwp+aUPe/DeWC/Lh3dg==} + '@swc/core-linux-x64-gnu@1.15.18': + resolution: {integrity: sha512-wG9J8vReUlpaHz4KOD/5UE1AUgirimU4UFT9oZmupUDEofxJKYb1mTA/DrMj0s78bkBiNI+7Fo2EgPuvOJfuAA==} engines: {node: '>=10'} cpu: [x64] os: [linux] libc: [glibc] - '@swc/core-linux-x64-musl@1.11.24': - resolution: {integrity: sha512-DZByJaMVzSfjQKKQn3cqSeqwy6lpMaQDQQ4HPlch9FWtDx/dLcpdIhxssqZXcR2rhaQVIaRQsCqwV6orSDGAGw==} + '@swc/core-linux-x64-musl@1.15.18': + resolution: {integrity: sha512-4nwbVvCphKzicwNWRmvD5iBaZj8JYsRGa4xOxJmOyHlMDpsvvJ2OR2cODlvWyGFH6BYL1MfIAK3qph3hp0Az6g==} engines: {node: '>=10'} cpu: [x64] os: [linux] libc: [musl] - '@swc/core-win32-arm64-msvc@1.11.24': - resolution: {integrity: sha512-Q64Ytn23y9aVDKN5iryFi8mRgyHw3/kyjTjT4qFCa8AEb5sGUuSj//AUZ6c0J7hQKMHlg9do5Etvoe61V98/JQ==} + '@swc/core-win32-arm64-msvc@1.15.18': + resolution: {integrity: sha512-zk0RYO+LjiBCat2RTMHzAWaMky0cra9loH4oRrLKLLNuL+jarxKLFDA8xTZWEkCPLjUTwlRN7d28eDLLMgtUcQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.11.24': - resolution: {integrity: sha512-9pKLIisE/Hh2vJhGIPvSoTK4uBSPxNVyXHmOrtdDot4E1FUUI74Vi8tFdlwNbaj8/vusVnb8xPXsxF1uB0VgiQ==} + '@swc/core-win32-ia32-msvc@1.15.18': + resolution: {integrity: sha512-yVuTrZ0RccD5+PEkpcLOBAuPbYBXS6rslENvIXfvJGXSdX5QGi1ehC4BjAMl5FkKLiam4kJECUI0l7Hq7T1vwg==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.11.24': - resolution: {integrity: sha512-sybnXtOsdB+XvzVFlBVGgRHLqp3yRpHK7CrmpuDKszhj/QhmsaZzY/GHSeALlMtLup13M0gqbcQvsTNlAHTg3w==} + '@swc/core-win32-x64-msvc@1.15.18': + resolution: {integrity: sha512-7NRmE4hmUQNCbYU3Hn9Tz57mK9Qq4c97ZS+YlamlK6qG9Fb5g/BB3gPDe0iLlJkns/sYv2VWSkm8c3NmbEGjbg==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.11.24': - resolution: {integrity: sha512-MaQEIpfcEMzx3VWWopbofKJvaraqmL6HbLlw2bFZ7qYqYw3rkhM0cQVEgyzbHtTWwCwPMFZSC2DUbhlZgrMfLg==} + '@swc/core@1.15.18': + resolution: {integrity: sha512-z87aF9GphWp//fnkRsqvtY+inMVPgYW3zSlXH1kJFvRT5H/wiAn+G32qW5l3oEk63KSF1x3Ov0BfHCObAmT8RA==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -1161,20 +1315,8 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - '@ts-morph/common@0.24.0': - resolution: {integrity: sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==} - - '@tsconfig/node10@1.0.12': - resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@ts-morph/common@0.28.1': + resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==} '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} @@ -1203,15 +1345,15 @@ packages: '@types/node@22.19.11': resolution: {integrity: sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==} + '@types/nodemailer@7.0.11': + resolution: {integrity: sha512-E+U4RzR2dKrx+u3N4DlsmLaDC6mMZOM/TPROxA0UAPiTgI0y4CEFBmZE+coGWTjakDriRsXG368lNk1u9Q0a2g==} + '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} '@types/pluralize@0.0.33': resolution: {integrity: sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==} - '@types/qs@6.14.0': - resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} - '@types/superagent@8.1.9': resolution: {integrity: sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==} @@ -1233,32 +1375,16 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.56.0': - resolution: {integrity: sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.56.1': resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.56.0': - resolution: {integrity: sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.56.1': resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.56.0': - resolution: {integrity: sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.56.1': resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1272,33 +1398,16 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.56.0': - resolution: {integrity: sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.56.1': resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.56.0': - resolution: {integrity: sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.56.1': resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.56.0': - resolution: {integrity: sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.56.1': resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1306,10 +1415,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.56.0': - resolution: {integrity: sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.56.1': resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1325,19 +1430,11 @@ packages: abstract-logging@2.0.1: resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} - accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.5: - resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} - engines: {node: '>=0.4.0'} - acorn@8.16.0: resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} @@ -1374,15 +1471,9 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - as-table@1.0.55: - resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} - asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -1390,6 +1481,10 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true + async-retry@1.3.3: resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} @@ -1422,13 +1517,14 @@ packages: brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - brace-expansion@5.0.3: resolution: {integrity: sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==} engines: {node: 18 || 20 || >=22} + brace-expansion@5.0.4: + resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + engines: {node: 18 || 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -1442,6 +1538,13 @@ packages: resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} engines: {node: '>=18.20'} + bullmq@5.70.1: + resolution: {integrity: sha512-HjfGHfICkAClrFL0Y07qNbWcmiOCv1l+nusupXUjrvTPuDEyPEJ23MP0lUwUs/QEy1a3pWt/P/sCsSZ1RjRK+w==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -1462,8 +1565,8 @@ packages: resolution: {integrity: sha512-TO9xmyXTZ9HUHI8M1OnvExxYB0eYVS/1e5s7IDMTAoIcwUd+aNcFODs6Xk83mobk0velyHFQgA1yIrvYc6wclw==} engines: {node: '>=20'} - caniuse-lite@1.0.30001770: - resolution: {integrity: sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==} + caniuse-lite@1.0.30001775: + resolution: {integrity: sha512-s3Qv7Lht9zbVKE9XoTyRG6wVDCKdtOFIjBGg3+Yhn6JaytuNKPIjBMTMIY1AnOH3seL5mvF+x33oGAyK3hVt3A==} case-anything@3.1.2: resolution: {integrity: sha512-wljhAjDDIv/hM2FzgJnYQg90AWmZMNtESCjTeLH680qTzdo0nErlCxOmgzgX4ZsZAtIvqHyD87ES8QyriXB+BQ==} @@ -1484,13 +1587,17 @@ packages: resolution: {integrity: sha512-drVkSqfwA+TvuEhFipiR1OC9boEGZL5RrWvVsOthdcvQNXyCCuKkEiTOTXZ7qxSf/GLwq4GvzfrQD/Wz325hgw==} engines: {node: '>=16'} - chevrotain@11.1.1: - resolution: {integrity: sha512-f0yv5CPKaFxfsPTBzX7vGuim4oIC1/gcS7LUGdBSwl2dU6+FON6LVUksdOo1qJjoUvXNn45urgh8C+0a24pACQ==} + chevrotain@11.1.2: + resolution: {integrity: sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==} chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + chokidar@5.0.0: + resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} + engines: {node: '>= 20.19.0'} + ci-info@4.4.0: resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} engines: {node: '>=8'} @@ -1507,10 +1614,14 @@ packages: resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} - cli-truncate@5.1.1: - resolution: {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==} + cli-truncate@5.2.0: + resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} engines: {node: '>=20'} + cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} + code-block-writer@13.0.3: resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} @@ -1544,9 +1655,9 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} - engines: {node: '>= 0.6'} + content-disposition@1.0.1: + resolution: {integrity: sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==} + engines: {node: '>=18'} content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} @@ -1555,38 +1666,20 @@ packages: cookie-es@2.0.0: resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==} - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} - - cookie@1.1.1: - resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} - engines: {node: '>=18'} - cookiejar@2.1.4: resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} - copy-file@11.1.0: - resolution: {integrity: sha512-X8XDzyvYaA6msMyAM575CUoygY5b44QzLcGRKsK3MFmXcOvQa518dNPLsKYwkYsn72g3EiW+LE0ytd/FlqWmyw==} - engines: {node: '>=18'} - core-js-compat@3.48.0: resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==} - cpy@11.1.0: - resolution: {integrity: sha512-QGHetPSSuprVs+lJmMDcivvrBwTKASzXQ5qxFvRC2RFESjjod71bDvFvhxTjDgkNjrrb72AI6JPjfYwxrIy33A==} - engines: {node: '>=18'} - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - data-uri-to-buffer@2.0.2: - resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} - dateformat@4.6.3: resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} @@ -1622,10 +1715,30 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -1634,24 +1747,36 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - diff@4.0.4: - resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} - engines: {node: '>=0.3.1'} - dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - dotenv@16.6.1: - resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} - engines: {node: '>=12'} - dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + edge-error@4.0.2: + resolution: {integrity: sha512-jB76VYn8wapDHKHSOmP3vbKLoa77RJYsTLNmfl8+cuCD69uxZtP3h+kqV+Prw/YkYmN7yHyp4IApE15pDByk0A==} + engines: {node: '>=18.16.0'} + + edge-lexer@6.0.4: + resolution: {integrity: sha512-rHlTSZUQfBu/fwnAjoaLCGGmDzpRPgUC8FEqNdJtpPEjBRCqU3a4Le7iJ8KSQfY2WvWx6NTGAwti62xj3eIz1w==} + engines: {node: '>=18.16.0'} + + edge-parser@9.1.0: + resolution: {integrity: sha512-Z7sEbRNjjGuUVch3ELHMbjgksVjQlAjUASCwUWe+1I+nJ0mVBmUD2rn6zyes/+EjLssvEGQcIWMjLMNn1ChXgQ==} + engines: {node: '>=18.16.0'} + + edge.js@6.5.0: + resolution: {integrity: sha512-WEXNseOSK6n5+Maf6dBPCMgsOuw4mpOqItMniXmdILVCH5PcjQ/CZDfw8IYyMwAjhshoznG+8WjsERy4+56xhA==} + engines: {node: '>=18.16.0'} + edgejs-parser@0.2.18: resolution: {integrity: sha512-O1Xg3ISESg2bl8DqP5q3x1b88cqTSgLmEBqNhGH482JdAIexDY7gh7FA9Y5kHOFwRNsTLFoziwQou0lprJ1MYQ==} @@ -1665,8 +1790,9 @@ packages: resolution: {integrity: sha512-KxdRyyFcS85pH3dnU8Y5yFUm2YJdaHwcBZWrfG8o89ZY9a13/f9itbN+YG3ELbBo9Pg5zvIozstmuV8bX13q6g==} engines: {node: '>=14.16'} - emoji-regex@10.6.0: - resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + emittery@1.2.1: + resolution: {integrity: sha512-sFz64DCRjirhwHLxofFqxYQm6DCp6o0Ix7jwKQvuCHPn4GMRZNuBZyLPu9Ccmk/QSCAMZt6FOUqA8JZCQvA9fw==} + engines: {node: '>=14.16'} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1712,6 +1838,10 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + escape-goat@4.0.0: + resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} + engines: {node: '>=12'} + escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -1740,11 +1870,11 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-unicorn@60.0.0: - resolution: {integrity: sha512-QUzTefvP8stfSXsqKQ+vBQSEsXIlAiCduS/V1Em+FKgL9c21U/IIm20/e3MFy1jyCf14tHAhqC1sX8OTy6VUCg==} + eslint-plugin-unicorn@63.0.0: + resolution: {integrity: sha512-Iqecl9118uQEXYh7adylgEmGfkn5es3/mlQTLLkd4pXkIk9CTGrAbeUux+YljSa2ohXCBmQQ0+Ej1kZaFgcfkA==} engines: {node: ^20.10.0 || >=21.0.0} peerDependencies: - eslint: '>=9.29.0' + eslint: '>=9.38.0' eslint-scope@8.4.0: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} @@ -1885,9 +2015,9 @@ packages: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} - flydrive@1.3.0: - resolution: {integrity: sha512-B0wsqrZR76d+J2ce6AxNcA1JDo4pViluaaFp5Fjso52zGY+s19uF8rKsQS8TJJsiyySKPI1b8K1w2j3RAUxd1Q==} - engines: {node: '>=20.6.0'} + flydrive@2.0.0: + resolution: {integrity: sha512-Q0tO6297z4I/8XSPp01ZOXpaSO+nsPbo2VGpRmHauQxFVJow0B6Od7QWcbsTpqL79+Kh/G/D1O8p4nxMPxc7uA==} + engines: {node: '>=24.0.0'} peerDependencies: '@aws-sdk/client-s3': ^3.577.0 '@aws-sdk/s3-request-presigner': ^3.577.0 @@ -1939,13 +2069,13 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-source@2.0.12: - resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} - get-stream@9.0.1: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} + get-tsconfig@4.13.6: + resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} + getopts@2.3.0: resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==} @@ -1965,17 +2095,10 @@ packages: resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} - globby@14.1.0: - resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} - engines: {node: '>=18'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -2023,6 +2146,39 @@ packages: engines: {node: '>=18'} hasBin: true + ical-generator@10.0.0: + resolution: {integrity: sha512-YUQ7H4eZdLfYvx3zE/qN4AoG0qqwMZG37vLdWzysXFDn/YQEfctZ9tQuPSBncARKgv79d2smWf5Sh67k6xiZfg==} + engines: {node: 20 || 22 || >=24} + peerDependencies: + '@touch4it/ical-timezones': '>=1.6.0' + '@types/luxon': '>= 1.26.0' + '@types/mocha': '>= 8.2.1' + '@types/node': '*' + dayjs: '>= 1.10.0' + luxon: '>= 1.26.0' + moment: '>= 2.29.0' + moment-timezone: '>= 0.5.33' + rrule: '>= 2.6.8' + peerDependenciesMeta: + '@touch4it/ical-timezones': + optional: true + '@types/luxon': + optional: true + '@types/mocha': + optional: true + '@types/node': + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + moment-timezone: + optional: true + rrule: + optional: true + iconv-lite@0.7.2: resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} @@ -2046,6 +2202,9 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -2069,6 +2228,14 @@ packages: resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} engines: {node: '>= 0.10'} + ioredis@5.10.0: + resolution: {integrity: sha512-HVBe9OFuqs+Z6n64q09PQvP1/R4Bm+30PAyyD4wIEqssh3v9L21QjCVk4kRLucMBcDokJTcLjsGeVRlq/nH6DA==} + engines: {node: '>=12.22.0'} + + ioredis@5.9.3: + resolution: {integrity: sha512-VI5tMCdeoxZWU5vjHWsiE/Su76JGhBvWF1MJnV9ZtGltHk9BmD48oDq8Tj8haZ85aceXZMxLNDQZRVo5QKNgXA==} + engines: {node: '>=12.22.0'} + ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -2081,6 +2248,11 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -2097,6 +2269,15 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2113,6 +2294,10 @@ packages: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -2124,6 +2309,9 @@ packages: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} + js-stringify@1.0.2: + resolution: {integrity: sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -2131,11 +2319,6 @@ packages: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} - engines: {node: '>=6'} - hasBin: true - jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -2164,9 +2347,9 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - knex-dynamic-connection@3.2.0: - resolution: {integrity: sha512-+j6KeUSim0FR8EobOqA1a/TZbN9mahjzHzJgOfQVkv6PUnSqJp70c/5n63M2YVNgNHETyBIUhV8stuQ0T/mG3g==} - engines: {node: '>=14.0.0'} + knex-dynamic-connection@4.0.0-next.0: + resolution: {integrity: sha512-UCLUVzY9lfZHhpmZ+jPLZqeEFTqaVs8nkqVe5/FTWTT9IT/d0yvHJ2Yp2DCiX59ItPs4OtVmYTw4YukGaTJmeA==} + engines: {node: '>=24.0.0'} knex@3.1.0: resolution: {integrity: sha512-GLoII6hR0c4ti243gMs5/1Rb3B+AjwMOfjYm97pu0FOQa7JH56hgBxYf5WK2525ceSbBY1cjeZ9yk99GPMB6Kw==} @@ -2211,14 +2394,20 @@ packages: lodash-es@4.17.23: resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + + lodash.isarguments@3.1.0: + resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} lodash@4.17.23: resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} - log-update@7.1.0: - resolution: {integrity: sha512-y9pi/ZOQQVvTgfRDEHV1Cj4zQUkJZPipEUNOxhn1R6KgmdMs7LKvXWCd9eMVPGJgvYzFLCenecWr0Ps8ChVv2A==} + log-update@7.2.0: + resolution: {integrity: sha512-iLs7dGSyjZiUgvrUvuD3FndAxVJk+TywBkkkwUSm9HdYoskJalWg5qVsEiXeufPvRVPbCUmNQewg798rx+sPXg==} engines: {node: '>=20'} lru-cache@10.4.3: @@ -2232,9 +2421,6 @@ packages: resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} engines: {node: '>=12'} - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -2243,10 +2429,6 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memoize@10.2.0: - resolution: {integrity: sha512-DeC6b7QBrZsRs3Y02A6A7lQyzFbsQbqgjI6UW0GigGWV+u1s25TycMr0XHZE4cJce7rY/vyw2ctMQqfDkIhUEA==} - engines: {node: '>=18'} - merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -2288,31 +2470,29 @@ packages: resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==} engines: {node: 18 || 20 || >=22} + minimatch@10.2.4: + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mustache@4.2.0: - resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true + msgpackr@1.11.5: + resolution: {integrity: sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==} + nanoid@5.1.6: resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} engines: {node: ^18 || >=20} @@ -2321,13 +2501,20 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} + nodemailer@8.0.1: + resolution: {integrity: sha512-5kcldIXmaEjZcHR6F28IKGSgpmZHaF1IXLWFTG+Xh3S+Cce4MiakLtWY+PlBU69fLbRa8HlaGIrC/QolUpHkhg==} + engines: {node: '>=6.0.0'} + normalize-package-data@6.0.2: resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} @@ -2363,6 +2550,10 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} + openapi3-ts@4.5.0: resolution: {integrity: sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==} @@ -2370,14 +2561,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - p-event@6.0.1: - resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==} - engines: {node: '>=16.17'} - - p-filter@4.1.0: - resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} - engines: {node: '>=18'} - p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -2386,17 +2569,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@7.0.4: - resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} - engines: {node: '>=18'} - - p-timeout@6.1.4: - resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} - engines: {node: '>=14.16'} - - package-manager-detector@0.2.11: - resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} - package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} @@ -2408,6 +2580,10 @@ packages: resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} engines: {node: '>= 18'} + parse-imports@3.0.0: + resolution: {integrity: sha512-IwiqoJANa4O6M76LBWEvoS2iPIUqBOnKG1lV3/J0oVM6V2XjED+mYAXedEMX5xUglVjfGpZOfaEyuOUjBuUE4g==} + engines: {node: '>= 22'} + parse-json@8.3.0: resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} engines: {node: '>=18'} @@ -2434,10 +2610,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-type@6.0.0: - resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} - engines: {node: '>=18'} - pg-cloudflare@1.3.0: resolution: {integrity: sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==} @@ -2524,6 +2696,10 @@ packages: resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} engines: {node: '>=0.10.0'} + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2552,12 +2728,12 @@ packages: resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} - printable-characters@1.0.42: - resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} - process-warning@5.0.0: resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -2573,19 +2749,12 @@ packages: resolution: {integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==} engines: {node: '>=0.6'} - quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} quick-format-unescaped@4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - random-bytes@1.0.0: - resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} - engines: {node: '>= 0.8'} - raw-body@3.0.2: resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} @@ -2613,6 +2782,10 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + readdirp@5.0.0: + resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} + engines: {node: '>= 20.19.0'} + real-require@0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} @@ -2621,6 +2794,14 @@ packages: resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} engines: {node: '>= 10.13.0'} + redis-errors@1.2.0: + resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} + engines: {node: '>=4'} + + redis-parser@3.0.0: + resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} + engines: {node: '>=4'} + reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} @@ -2628,8 +2809,8 @@ packages: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true - regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + regjsparser@0.13.0: + resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} hasBin: true resolve-from@4.0.0: @@ -2640,6 +2821,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.22.11: resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} @@ -2657,15 +2841,16 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-stable-stringify@2.5.0: resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} engines: {node: '>=10'} @@ -2726,9 +2911,9 @@ packages: slashes@3.0.12: resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} - slice-ansi@7.1.2: - resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} - engines: {node: '>=18'} + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} slugify@1.6.6: resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} @@ -2737,10 +2922,6 @@ packages: sonic-boom@4.2.1: resolution: {integrity: sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==} - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -2761,8 +2942,8 @@ packages: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} - stacktracey@2.1.8: - resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} + standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} @@ -2772,14 +2953,14 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} - engines: {node: '>=18'} - string-width@8.2.0: resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} engines: {node: '>=20'} + stringify-attributes@4.0.0: + resolution: {integrity: sha512-6Hq3K153wTTfhEHb4V/viuqmb0DRn08JCrRnmqc4Q/tmoNuvd4DEyqkiiJXtvVz8ZSUhlCQr7zCpCVTgrelesg==} + engines: {node: '>=14.16'} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -2788,6 +2969,10 @@ packages: resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + strip-final-newline@4.0.0: resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} engines: {node: '>=18'} @@ -2851,9 +3036,6 @@ packages: resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} engines: {node: '>=8'} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} @@ -2884,22 +3066,8 @@ packages: peerDependencies: typescript: '>=4.8.4' - ts-morph@23.0.0: - resolution: {integrity: sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==} - - ts-node-maintained@10.9.6: - resolution: {integrity: sha512-m/1ZCksNnIofWjmY5/K+6y8oia05Y/5+vMWTvuFzrr6UGRV7ImrLMyYAB06cHlwBW5/NuYeZoh44mAOGNRNxZA==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true + ts-morph@27.0.2: + resolution: {integrity: sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==} tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -2937,10 +3105,6 @@ packages: engines: {node: '>=0.8.0'} hasBin: true - uid-safe@2.1.5: - resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} - engines: {node: '>= 0.8'} - uint8array-extras@1.5.0: resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} engines: {node: '>=18'} @@ -2973,8 +3137,9 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -2996,16 +3161,17 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - - wrap-ansi@9.0.2: - resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} - engines: {node: '>=18'} + wrap-ansi@10.0.0: + resolution: {integrity: sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==} + engines: {node: '>=20'} wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wsl-utils@0.3.1: + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} + engines: {node: '>=20'} + xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -3015,13 +3181,9 @@ packages: engines: {node: '>= 14.6'} hasBin: true - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} @@ -3034,14 +3196,8 @@ packages: youch-core@0.3.3: resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} - youch-terminal@2.2.3: - resolution: {integrity: sha512-/PE77ZwG072tXBvF47S9RL9/G80u86icZ5QwyjblyM67L4n/T5qQeM3Xrecbu8kkDDr/9T/PTj/X+6G/OSRQug==} - - youch@3.3.4: - resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==} - - youch@4.1.0-beta.14: - resolution: {integrity: sha512-VqcHA/HqOxaBMjBQCYz1h8jYdAAeLm6cVLmefijJjMY4aovOfKkqMry7amNX3JiN4hXArb7ZVYBNpjEVkV3r/A==} + youch@4.1.0: + resolution: {integrity: sha512-cYekNh2tUoU+voS11X0D0UQntVCSO6LQ1h10VriQGmfbpf0mnGTruwZICts23UUNiZCXm8H8hQBtRrdsbhuNNg==} zod@4.3.6: resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} @@ -3050,166 +3206,169 @@ snapshots: '@adobe/css-tools@4.4.4': {} - '@adonisjs/ace@13.4.0': + '@adonisjs/ace@14.0.1(youch@4.1.0)': dependencies: '@poppinss/cliui': 6.7.0 '@poppinss/hooks': 7.3.0 '@poppinss/macroable': 1.1.0 '@poppinss/prompts': 3.1.6 - '@poppinss/utils': 6.10.1 + '@poppinss/utils': 7.0.1 fastest-levenshtein: 1.0.16 jsonschema: 1.5.0 - string-width: 7.2.0 - yargs-parser: 21.1.1 - youch: 3.3.4 - youch-terminal: 2.2.3 + string-width: 8.2.0 + yargs-parser: 22.0.0 + youch: 4.1.0 - '@adonisjs/ally@5.1.1(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))': + '@adonisjs/ally@6.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))': dependencies: - '@adonisjs/core': 6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0) + '@adonisjs/core': 7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0) '@poppinss/oauth-client': 7.0.2 - '@poppinss/utils': 6.10.1 + optionalDependencies: + '@adonisjs/assembler': 8.0.0(typescript@5.8.3) - '@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1)': + '@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0)': dependencies: - '@adonisjs/config': 5.0.3 - '@adonisjs/fold': 10.2.1 + '@adonisjs/config': 6.1.0 + '@adonisjs/fold': 11.0.0 '@poppinss/hooks': 7.3.0 '@poppinss/macroable': 1.1.0 - '@poppinss/utils': 6.10.1 + '@poppinss/utils': 7.0.1 glob-parent: 6.0.2 tempura: 0.4.1 + optionalDependencies: + '@adonisjs/assembler': 8.0.0(typescript@5.8.3) - '@adonisjs/assembler@7.8.2(typescript@5.8.3)': + '@adonisjs/assembler@8.0.0(typescript@5.8.3)': dependencies: - '@adonisjs/env': 6.2.0 - '@antfu/install-pkg': 0.4.1 - '@poppinss/chokidar-ts': 4.1.9(typescript@5.8.3) + '@adonisjs/env': 7.0.0 + '@antfu/install-pkg': 1.1.0 + '@ast-grep/napi': 0.41.0 '@poppinss/cliui': 6.7.0 '@poppinss/hooks': 7.3.0 - '@poppinss/utils': 6.10.1 - cpy: 11.1.0 + '@poppinss/utils': 7.0.1 + chokidar: 5.0.0 dedent: 1.7.1 execa: 9.6.1 fast-glob: 3.3.3 + fdir: 6.5.0(picomatch@4.0.3) get-port: 7.1.0 + get-tsconfig: 4.13.6 + import-meta-resolve: 4.2.0 junk: 4.0.1 + open: 11.0.0 + parse-imports: 3.0.0 picomatch: 4.0.3 pretty-hrtime: 1.0.3 - slash: 5.1.0 - ts-morph: 23.0.0 + tmp-cache: 1.1.0 + ts-morph: 27.0.2 typescript: 5.8.3 transitivePeerDependencies: - babel-plugin-macros - '@adonisjs/auth@9.6.0(34f7b8323dd7e033f83e16958dfe5221)': + '@adonisjs/auth@10.0.0(f076a244769c106c7c479bb7a4b5800d)': dependencies: - '@adonisjs/core': 6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0) - '@adonisjs/presets': 2.6.4(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0)) - '@poppinss/utils': 6.10.1 + '@adonisjs/core': 7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0) + '@adonisjs/presets': 3.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0)) basic-auth: 2.0.1 optionalDependencies: - '@adonisjs/lucid': 21.8.2(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0) - '@adonisjs/session': 7.7.1(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@adonisjs/lucid@21.8.2(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0)) + '@adonisjs/assembler': 8.0.0(typescript@5.8.3) + '@adonisjs/lucid': 22.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0) + '@adonisjs/session': 8.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@adonisjs/lucid@22.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0))(@adonisjs/redis@10.0.0(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0)))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))(@japa/plugin-adonisjs@5.1.0(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))(@japa/runner@4.5.0))(edge.js@6.5.0) '@japa/api-client': 3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0) - '@japa/plugin-adonisjs': 4.0.0(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))(@japa/runner@4.5.0) - transitivePeerDependencies: - - '@adonisjs/assembler' + '@japa/plugin-adonisjs': 5.1.0(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))(@japa/runner@4.5.0) - '@adonisjs/bodyparser@10.1.3(@adonisjs/http-server@7.8.0(@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1))(@adonisjs/fold@10.2.1))(@adonisjs/fold@10.2.1)(@adonisjs/logger@6.0.7))': + '@adonisjs/bodyparser@11.0.0(@adonisjs/http-server@8.0.0(@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0))(@adonisjs/events@10.1.0(@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0))(@adonisjs/fold@11.0.0))(@adonisjs/fold@11.0.0)(@adonisjs/logger@7.1.0(pino-pretty@13.1.3))(@boringnode/encryption@1.0.0)(youch@4.1.0))': dependencies: - '@adonisjs/http-server': 7.8.0(@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1))(@adonisjs/fold@10.2.1))(@adonisjs/fold@10.2.1)(@adonisjs/logger@6.0.7) - '@paralleldrive/cuid2': 2.3.1 + '@adonisjs/http-server': 8.0.0(@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0))(@adonisjs/events@10.1.0(@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0))(@adonisjs/fold@11.0.0))(@adonisjs/fold@11.0.0)(@adonisjs/logger@7.1.0(pino-pretty@13.1.3))(@boringnode/encryption@1.0.0)(youch@4.1.0) '@poppinss/macroable': 1.1.0 - '@poppinss/multiparty': 2.0.1 - '@poppinss/utils': 6.10.1 - '@types/qs': 6.14.0 - bytes: 3.1.2 + '@poppinss/middleware': 3.2.7 + '@poppinss/multiparty': 3.0.0 + '@poppinss/qs': 6.15.0 + '@poppinss/utils': 7.0.1 file-type: 21.3.0 inflation: 2.1.0 media-typer: 1.1.0 - qs: 6.15.0 raw-body: 3.0.2 transitivePeerDependencies: - supports-color - '@adonisjs/bouncer@3.1.6(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))': + '@adonisjs/bouncer@4.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(edge.js@6.5.0)': dependencies: - '@poppinss/utils': 6.10.1 + '@adonisjs/core': 7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0) + '@poppinss/utils': 7.0.1 optionalDependencies: - '@adonisjs/core': 6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0) - - '@adonisjs/config@5.0.3': - dependencies: - '@poppinss/utils': 6.10.1 - - '@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0)': - dependencies: - '@adonisjs/ace': 13.4.0 - '@adonisjs/application': 8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1) - '@adonisjs/bodyparser': 10.1.3(@adonisjs/http-server@7.8.0(@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1))(@adonisjs/fold@10.2.1))(@adonisjs/fold@10.2.1)(@adonisjs/logger@6.0.7)) - '@adonisjs/config': 5.0.3 - '@adonisjs/encryption': 6.0.2 - '@adonisjs/env': 6.2.0 - '@adonisjs/events': 9.0.2(@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1))(@adonisjs/fold@10.2.1) - '@adonisjs/fold': 10.2.1 - '@adonisjs/hash': 9.1.1 - '@adonisjs/health': 2.0.0 - '@adonisjs/http-server': 7.8.0(@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1))(@adonisjs/fold@10.2.1))(@adonisjs/fold@10.2.1)(@adonisjs/logger@6.0.7) - '@adonisjs/logger': 6.0.7 - '@adonisjs/repl': 4.1.2 - '@antfu/install-pkg': 1.1.0 - '@paralleldrive/cuid2': 2.3.1 + '@adonisjs/assembler': 8.0.0(typescript@5.8.3) + edge.js: 6.5.0 + + '@adonisjs/config@6.1.0': + dependencies: + '@poppinss/utils': 7.0.1 + + '@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0)': + dependencies: + '@adonisjs/ace': 14.0.1(youch@4.1.0) + '@adonisjs/application': 9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0) + '@adonisjs/bodyparser': 11.0.0(@adonisjs/http-server@8.0.0(@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0))(@adonisjs/events@10.1.0(@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0))(@adonisjs/fold@11.0.0))(@adonisjs/fold@11.0.0)(@adonisjs/logger@7.1.0(pino-pretty@13.1.3))(@boringnode/encryption@1.0.0)(youch@4.1.0)) + '@adonisjs/config': 6.1.0 + '@adonisjs/env': 7.0.0 + '@adonisjs/events': 10.1.0(@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0))(@adonisjs/fold@11.0.0) + '@adonisjs/fold': 11.0.0 + '@adonisjs/hash': 10.0.0 + '@adonisjs/health': 3.1.0 + '@adonisjs/http-server': 8.0.0(@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0))(@adonisjs/events@10.1.0(@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0))(@adonisjs/fold@11.0.0))(@adonisjs/fold@11.0.0)(@adonisjs/logger@7.1.0(pino-pretty@13.1.3))(@boringnode/encryption@1.0.0)(youch@4.1.0) + '@adonisjs/http-transformers': 2.3.1(@adonisjs/fold@11.0.0) + '@adonisjs/logger': 7.1.0(pino-pretty@13.1.3) + '@adonisjs/repl': 5.0.0 + '@boringnode/encryption': 1.0.0 '@poppinss/colors': 4.1.6 - '@poppinss/dumper': 0.6.5 + '@poppinss/dumper': 0.7.0 '@poppinss/macroable': 1.1.0 - '@poppinss/utils': 6.10.1 + '@poppinss/utils': 7.0.1 '@sindresorhus/is': 7.2.0 '@types/he': 1.2.3 error-stack-parser-es: 1.0.5 he: 1.2.0 - parse-imports: 2.2.1 pretty-hrtime: 1.0.3 - string-width: 7.2.0 - youch: 3.3.4 - youch-terminal: 2.2.3 + string-width: 8.2.0 optionalDependencies: - '@adonisjs/assembler': 7.8.2(typescript@5.8.3) + '@adonisjs/assembler': 8.0.0(typescript@5.8.3) '@vinejs/vine': 4.3.0 + edge.js: 6.5.0 + pino-pretty: 13.1.3 + youch: 4.1.0 transitivePeerDependencies: - supports-color - '@adonisjs/cors@2.2.1(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))': + '@adonisjs/cors@3.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))': dependencies: - '@adonisjs/core': 6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0) + '@adonisjs/core': 7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0) + optionalDependencies: + '@adonisjs/assembler': 8.0.0(typescript@5.8.3) - '@adonisjs/drive@3.4.1(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@aws-sdk/client-s3@3.995.0)(@aws-sdk/s3-request-presigner@3.995.0)': + '@adonisjs/drive@4.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@aws-sdk/client-s3@3.995.0)(@aws-sdk/s3-request-presigner@3.995.0)(edge.js@6.5.0)': dependencies: - '@adonisjs/core': 6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0) - flydrive: 1.3.0(@aws-sdk/client-s3@3.995.0)(@aws-sdk/s3-request-presigner@3.995.0) + '@adonisjs/core': 7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0) + flydrive: 2.0.0(@aws-sdk/client-s3@3.995.0)(@aws-sdk/s3-request-presigner@3.995.0) optionalDependencies: + '@adonisjs/assembler': 8.0.0(typescript@5.8.3) '@aws-sdk/client-s3': 3.995.0 '@aws-sdk/s3-request-presigner': 3.995.0 + edge.js: 6.5.0 - '@adonisjs/encryption@6.0.2': + '@adonisjs/env@7.0.0': dependencies: - '@poppinss/utils': 6.10.1 - - '@adonisjs/env@6.2.0': - dependencies: - '@poppinss/utils': 6.10.1 + '@poppinss/utils': 7.0.1 '@poppinss/validator-lite': 2.1.2 - dotenv: 16.6.1 split-lines: 3.0.0 - '@adonisjs/eslint-config@2.1.2(eslint@9.39.3)(prettier@3.8.1)(typescript@5.8.3)': + '@adonisjs/eslint-config@3.0.0(eslint@9.39.3)(prettier@3.8.1)(typescript@5.8.3)': dependencies: '@adonisjs/eslint-plugin': 2.2.2(eslint@9.39.3)(typescript@5.8.3) '@stylistic/eslint-plugin': 5.9.0(eslint@9.39.3) eslint: 9.39.3 eslint-config-prettier: 10.1.8(eslint@9.39.3) eslint-plugin-prettier: 5.5.5(eslint-config-prettier@10.1.8(eslint@9.39.3))(eslint@9.39.3)(prettier@3.8.1) - eslint-plugin-unicorn: 60.0.0(eslint@9.39.3) + eslint-plugin-unicorn: 63.0.0(eslint@9.39.3) prettier: 3.8.1 typescript-eslint: 8.56.1(eslint@9.39.3)(typescript@5.8.3) transitivePeerDependencies: @@ -3219,7 +3378,7 @@ snapshots: '@adonisjs/eslint-plugin@2.2.2(eslint@9.39.3)(typescript@5.8.3)': dependencies: - '@typescript-eslint/utils': 8.56.0(eslint@9.39.3)(typescript@5.8.3) + '@typescript-eslint/utils': 8.56.1(eslint@9.39.3)(typescript@5.8.3) eslint: 9.39.3 micromatch: 4.0.8 read-package-up: 12.0.0 @@ -3227,45 +3386,44 @@ snapshots: - supports-color - typescript - '@adonisjs/events@9.0.2(@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1))(@adonisjs/fold@10.2.1)': + '@adonisjs/events@10.1.0(@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0))(@adonisjs/fold@11.0.0)': dependencies: - '@adonisjs/application': 8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1) - '@adonisjs/fold': 10.2.1 - '@poppinss/utils': 6.10.1 - '@sindresorhus/is': 6.3.1 - emittery: 1.2.0 + '@adonisjs/application': 9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0) + '@adonisjs/fold': 11.0.0 + '@poppinss/utils': 7.0.1 + '@sindresorhus/is': 7.2.0 + emittery: 1.2.1 - '@adonisjs/fold@10.2.1': + '@adonisjs/fold@11.0.0': dependencies: - '@poppinss/utils': 7.0.0-next.7 - parse-imports: 2.2.1 + '@poppinss/utils': 7.0.1 + parse-imports: 3.0.0 - '@adonisjs/hash@9.1.1': + '@adonisjs/hash@10.0.0': dependencies: '@phc/format': 1.0.0 - '@poppinss/utils': 6.10.1 + '@poppinss/utils': 7.0.1 - '@adonisjs/health@2.0.0': + '@adonisjs/health@3.1.0': dependencies: - '@poppinss/utils': 6.10.1 + '@poppinss/utils': 7.0.1 check-disk-space: 3.4.0 - '@adonisjs/http-server@7.8.0(@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1))(@adonisjs/fold@10.2.1))(@adonisjs/fold@10.2.1)(@adonisjs/logger@6.0.7)': + '@adonisjs/http-server@8.0.0(@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0))(@adonisjs/events@10.1.0(@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0))(@adonisjs/fold@11.0.0))(@adonisjs/fold@11.0.0)(@adonisjs/logger@7.1.0(pino-pretty@13.1.3))(@boringnode/encryption@1.0.0)(youch@4.1.0)': dependencies: - '@adonisjs/application': 8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1) - '@adonisjs/encryption': 6.0.2 - '@adonisjs/events': 9.0.2(@adonisjs/application@8.4.2(@adonisjs/config@5.0.3)(@adonisjs/fold@10.2.1))(@adonisjs/fold@10.2.1) - '@adonisjs/fold': 10.2.1 - '@adonisjs/logger': 6.0.7 - '@paralleldrive/cuid2': 2.3.1 + '@adonisjs/application': 9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0) + '@adonisjs/events': 10.1.0(@adonisjs/application@9.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/config@6.1.0)(@adonisjs/fold@11.0.0))(@adonisjs/fold@11.0.0) + '@adonisjs/fold': 11.0.0 + '@adonisjs/logger': 7.1.0(pino-pretty@13.1.3) + '@boringnode/encryption': 1.0.0 '@poppinss/macroable': 1.1.0 '@poppinss/matchit': 3.2.0 '@poppinss/middleware': 3.2.7 - '@poppinss/utils': 6.10.1 + '@poppinss/qs': 6.15.0 + '@poppinss/utils': 7.0.1 '@sindresorhus/is': 7.2.0 - accepts: 1.3.8 - content-disposition: 0.5.4 - cookie: 1.1.1 + content-disposition: 1.0.1 + cookie-es: 2.0.0 destroy: 1.2.0 encodeurl: 2.0.0 etag: 1.8.1 @@ -3273,37 +3431,46 @@ snapshots: mime-types: 3.0.2 on-finished: 2.4.1 proxy-addr: 2.0.7 - qs: 6.15.0 tmp-cache: 1.1.0 type-is: 2.0.1 vary: 1.1.2 - youch: 3.3.4 + optionalDependencies: + youch: 4.1.0 - '@adonisjs/logger@6.0.7': + '@adonisjs/http-transformers@2.3.1(@adonisjs/fold@11.0.0)': dependencies: - '@poppinss/utils': 6.10.1 + '@adonisjs/fold': 11.0.0 + '@poppinss/exception': 1.2.3 + '@poppinss/types': 1.2.1 + + '@adonisjs/logger@7.1.0(pino-pretty@13.1.3)': + dependencies: + '@poppinss/utils': 7.0.1 abstract-logging: 2.0.1 pino: 10.3.1 + optionalDependencies: + pino-pretty: 13.1.3 - '@adonisjs/lucid@21.8.2(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0)': + '@adonisjs/lucid@22.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0)': dependencies: - '@adonisjs/core': 6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0) - '@adonisjs/presets': 2.6.4(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0)) - '@faker-js/faker': 9.9.0 + '@adonisjs/core': 7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0) + '@adonisjs/presets': 3.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0)) + '@faker-js/faker': 10.3.0 '@poppinss/hooks': 7.3.0 '@poppinss/macroable': 1.1.0 - '@poppinss/utils': 6.10.1 + '@poppinss/qs': 6.15.0 + '@poppinss/utils': 7.0.1 + deepmerge: 4.3.1 fast-deep-equal: 3.1.3 igniculus: 1.5.0 kleur: 4.1.5 knex: 3.1.0(pg@8.18.0) - knex-dynamic-connection: 3.2.0(pg@8.18.0) + knex-dynamic-connection: 4.0.0-next.0(pg@8.18.0) pretty-hrtime: 1.0.3 - qs: 6.15.0 slash: 5.1.0 tarn: 3.0.2 optionalDependencies: - '@adonisjs/assembler': 7.8.2(typescript@5.8.3) + '@adonisjs/assembler': 8.0.0(typescript@5.8.3) '@vinejs/vine': 4.3.0 luxon: 3.7.2 transitivePeerDependencies: @@ -3316,37 +3483,68 @@ snapshots: - supports-color - tedious - '@adonisjs/presets@2.6.4(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))': + '@adonisjs/mail@10.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@types/luxon@3.7.1)(@types/node@22.19.11)(dayjs@1.11.19)(edge.js@6.5.0)(luxon@3.7.2)': dependencies: - '@adonisjs/core': 6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0) - '@poppinss/utils': 6.10.1 + '@adonisjs/core': 7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0) + '@poppinss/macroable': 1.1.0 + '@poppinss/object-builder': 1.1.0 + '@types/nodemailer': 7.0.11 + fastq: 1.20.1 + ical-generator: 10.0.0(@types/luxon@3.7.1)(@types/node@22.19.11)(dayjs@1.11.19)(luxon@3.7.2) + ky: 1.14.3 + nodemailer: 8.0.1 + optionalDependencies: + '@adonisjs/assembler': 8.0.0(typescript@5.8.3) + edge.js: 6.5.0 + transitivePeerDependencies: + - '@touch4it/ical-timezones' + - '@types/luxon' + - '@types/mocha' + - '@types/node' + - dayjs + - luxon + - moment + - moment-timezone + - rrule + + '@adonisjs/presets@3.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))': + dependencies: + '@adonisjs/core': 7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0) optionalDependencies: - '@adonisjs/assembler': 7.8.2(typescript@5.8.3) + '@adonisjs/assembler': 8.0.0(typescript@5.8.3) '@adonisjs/prettier-config@1.4.5': dependencies: prettier-plugin-edgejs: 1.0.6 - '@adonisjs/repl@4.1.2': + '@adonisjs/redis@10.0.0(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))': + dependencies: + '@adonisjs/core': 7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0) + '@poppinss/utils': 7.0.1 + emittery: 1.2.1 + ioredis: 5.10.0 + transitivePeerDependencies: + - supports-color + + '@adonisjs/repl@5.0.0': dependencies: '@poppinss/colors': 4.1.6 - string-width: 7.2.0 + string-width: 8.2.0 - '@adonisjs/session@7.7.1(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@adonisjs/lucid@21.8.2(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))': + '@adonisjs/session@8.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@adonisjs/lucid@22.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0))(@adonisjs/redis@10.0.0(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0)))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))(@japa/plugin-adonisjs@5.1.0(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))(@japa/runner@4.5.0))(edge.js@6.5.0)': dependencies: - '@adonisjs/core': 6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0) + '@adonisjs/core': 7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0) '@poppinss/macroable': 1.1.0 - '@poppinss/utils': 6.10.1 + '@poppinss/utils': 7.0.1 optionalDependencies: - '@adonisjs/lucid': 21.8.2(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0) + '@adonisjs/assembler': 8.0.0(typescript@5.8.3) + '@adonisjs/lucid': 22.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@vinejs/vine@4.3.0)(luxon@3.7.2)(pg@8.18.0) + '@adonisjs/redis': 10.0.0(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0)) '@japa/api-client': 3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0) + '@japa/plugin-adonisjs': 5.1.0(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))(@japa/runner@4.5.0) + edge.js: 6.5.0 - '@adonisjs/tsconfig@1.4.1': {} - - '@antfu/install-pkg@0.4.1': - dependencies: - package-manager-detector: 0.2.11 - tinyexec: 0.3.2 + '@adonisjs/tsconfig@2.0.0': {} '@antfu/install-pkg@1.1.0': dependencies: @@ -3355,6 +3553,45 @@ snapshots: '@arr/every@1.0.1': {} + '@ast-grep/napi-darwin-arm64@0.41.0': + optional: true + + '@ast-grep/napi-darwin-x64@0.41.0': + optional: true + + '@ast-grep/napi-linux-arm64-gnu@0.41.0': + optional: true + + '@ast-grep/napi-linux-arm64-musl@0.41.0': + optional: true + + '@ast-grep/napi-linux-x64-gnu@0.41.0': + optional: true + + '@ast-grep/napi-linux-x64-musl@0.41.0': + optional: true + + '@ast-grep/napi-win32-arm64-msvc@0.41.0': + optional: true + + '@ast-grep/napi-win32-ia32-msvc@0.41.0': + optional: true + + '@ast-grep/napi-win32-x64-msvc@0.41.0': + optional: true + + '@ast-grep/napi@0.41.0': + optionalDependencies: + '@ast-grep/napi-darwin-arm64': 0.41.0 + '@ast-grep/napi-darwin-x64': 0.41.0 + '@ast-grep/napi-linux-arm64-gnu': 0.41.0 + '@ast-grep/napi-linux-arm64-musl': 0.41.0 + '@ast-grep/napi-linux-x64-gnu': 0.41.0 + '@ast-grep/napi-linux-x64-musl': 0.41.0 + '@ast-grep/napi-win32-arm64-msvc': 0.41.0 + '@ast-grep/napi-win32-ia32-msvc': 0.41.0 + '@ast-grep/napi-win32-x64-msvc': 0.41.0 + '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 @@ -3876,30 +4113,30 @@ snapshots: '@borewit/text-codec@0.2.1': {} - '@chevrotain/cst-dts-gen@11.1.1': + '@boringnode/encryption@1.0.0': dependencies: - '@chevrotain/gast': 11.1.1 - '@chevrotain/types': 11.1.1 + '@poppinss/utils': 7.0.1 + + '@chevrotain/cst-dts-gen@11.1.2': + dependencies: + '@chevrotain/gast': 11.1.2 + '@chevrotain/types': 11.1.2 lodash-es: 4.17.23 - '@chevrotain/gast@11.1.1': + '@chevrotain/gast@11.1.2': dependencies: - '@chevrotain/types': 11.1.1 + '@chevrotain/types': 11.1.2 lodash-es: 4.17.23 - '@chevrotain/regexp-to-ast@11.1.1': {} + '@chevrotain/regexp-to-ast@11.1.2': {} - '@chevrotain/types@11.1.1': {} + '@chevrotain/types@11.1.2': {} - '@chevrotain/utils@11.1.1': {} + '@chevrotain/utils@11.1.2': {} '@colors/colors@1.5.0': optional: true - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.3)': dependencies: eslint: 9.39.3 @@ -3919,10 +4156,6 @@ snapshots: dependencies: '@eslint/core': 0.17.0 - '@eslint/core@0.15.2': - dependencies: - '@types/json-schema': 7.0.15 - '@eslint/core@0.17.0': dependencies: '@types/json-schema': 7.0.15 @@ -3945,17 +4178,12 @@ snapshots: '@eslint/object-schema@2.1.7': {} - '@eslint/plugin-kit@0.3.5': - dependencies: - '@eslint/core': 0.15.2 - levn: 0.4.1 - '@eslint/plugin-kit@0.4.1': dependencies: '@eslint/core': 0.17.0 levn: 0.4.1 - '@faker-js/faker@9.9.0': {} + '@faker-js/faker@10.3.0': {} '@humanfs/core@0.19.1': {} @@ -3968,6 +4196,10 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@ioredis/commands@1.5.0': {} + + '@ioredis/commands@1.5.1': {} + '@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0)': dependencies: '@japa/runner': 4.5.0 @@ -4005,11 +4237,11 @@ snapshots: '@poppinss/colors': 4.1.6 jest-diff: 30.2.0 supports-color: 10.2.2 - youch: 4.1.0-beta.14 + youch: 4.1.0 - '@japa/plugin-adonisjs@4.0.0(@adonisjs/core@6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))(@japa/runner@4.5.0)': + '@japa/plugin-adonisjs@5.1.0(@adonisjs/core@7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0))(@japa/api-client@3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0))(@japa/runner@4.5.0)': dependencies: - '@adonisjs/core': 6.20.0(@adonisjs/assembler@7.8.2(typescript@5.8.3))(@vinejs/vine@4.3.0) + '@adonisjs/core': 7.0.0(@adonisjs/assembler@8.0.0(typescript@5.8.3))(@vinejs/vine@4.3.0)(edge.js@6.5.0)(pino-pretty@13.1.3)(youch@4.1.0) '@japa/runner': 4.5.0 optionalDependencies: '@japa/api-client': 3.2.1(@japa/assert@4.2.0(@japa/runner@4.5.0))(@japa/runner@4.5.0) @@ -4039,14 +4271,23 @@ snapshots: dependencies: '@sinclair/typebox': 0.34.48 - '@jridgewell/resolve-uri@3.1.2': {} + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + optional: true - '@jridgewell/sourcemap-codec@1.5.5': {} + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + optional: true - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + optional: true '@noble/hashes@1.8.0': {} @@ -4072,21 +4313,12 @@ snapshots: '@pkgr/core@0.2.9': {} - '@poppinss/chokidar-ts@4.1.9(typescript@5.8.3)': - dependencies: - chokidar: 4.0.3 - emittery: 1.2.0 - memoize: 10.2.0 - picomatch: 4.0.3 - slash: 5.1.0 - typescript: 5.8.3 - '@poppinss/cliui@6.7.0': dependencies: '@poppinss/colors': 4.1.6 cli-table3: 0.6.5 - cli-truncate: 5.1.1 - log-update: 7.1.0 + cli-truncate: 5.2.0 + log-update: 7.2.0 pretty-hrtime: 1.0.3 string-width: 8.2.0 supports-color: 10.2.2 @@ -4095,7 +4327,7 @@ snapshots: dependencies: kleur: 4.1.5 - '@poppinss/dumper@0.6.5': + '@poppinss/dumper@0.7.0': dependencies: '@poppinss/colors': 4.1.6 '@sindresorhus/is': 7.2.0 @@ -4105,6 +4337,8 @@ snapshots: '@poppinss/hooks@7.3.0': {} + '@poppinss/inspect@1.0.1': {} + '@poppinss/macroable@1.1.0': {} '@poppinss/matchit@3.2.0': @@ -4113,11 +4347,9 @@ snapshots: '@poppinss/middleware@3.2.7': {} - '@poppinss/multiparty@2.0.1': + '@poppinss/multiparty@3.0.0': dependencies: http-errors: 2.0.1 - safe-buffer: 5.2.1 - uid-safe: 2.1.5 '@poppinss/oauth-client@7.0.2': dependencies: @@ -4142,16 +4374,14 @@ snapshots: pluralize: 8.0.0 slugify: 1.6.6 - '@poppinss/types@1.2.1': {} - - '@poppinss/utils@6.10.1': + '@poppinss/ts-exec@1.4.4': dependencies: - '@poppinss/exception': 1.2.3 - '@poppinss/object-builder': 1.1.0 - '@poppinss/string': 1.7.1 - flattie: 1.1.1 - safe-stable-stringify: 2.5.0 - secure-json-parse: 4.1.0 + '@swc/core': 1.15.18 + get-tsconfig: 4.13.6 + transitivePeerDependencies: + - '@swc/helpers' + + '@poppinss/types@1.2.1': {} '@poppinss/utils@7.0.0-next.6': dependencies: @@ -4161,7 +4391,7 @@ snapshots: '@poppinss/types': 1.2.1 flattie: 1.1.1 - '@poppinss/utils@7.0.0-next.7': + '@poppinss/utils@7.0.1': dependencies: '@poppinss/exception': 1.2.3 '@poppinss/object-builder': 1.1.0 @@ -4171,13 +4401,13 @@ snapshots: '@poppinss/validator-lite@2.1.2': {} - '@scalar/core@0.3.42': + '@scalar/core@0.3.43': dependencies: - '@scalar/types': 0.6.7 + '@scalar/types': 0.6.8 '@scalar/helpers@0.2.16': {} - '@scalar/types@0.6.7': + '@scalar/types@0.6.8': dependencies: '@scalar/helpers': 0.2.16 nanoid: 5.1.6 @@ -4188,12 +4418,8 @@ snapshots: '@sinclair/typebox@0.34.48': {} - '@sindresorhus/is@6.3.1': {} - '@sindresorhus/is@7.2.0': {} - '@sindresorhus/merge-streams@2.3.0': {} - '@sindresorhus/merge-streams@4.0.0': {} '@smithy/abort-controller@4.2.8': @@ -4541,58 +4767,58 @@ snapshots: '@stylistic/eslint-plugin@5.9.0(eslint@9.39.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.3) - '@typescript-eslint/types': 8.56.0 + '@typescript-eslint/types': 8.56.1 eslint: 9.39.3 eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 picomatch: 4.0.3 - '@swc/core-darwin-arm64@1.11.24': + '@swc/core-darwin-arm64@1.15.18': optional: true - '@swc/core-darwin-x64@1.11.24': + '@swc/core-darwin-x64@1.15.18': optional: true - '@swc/core-linux-arm-gnueabihf@1.11.24': + '@swc/core-linux-arm-gnueabihf@1.15.18': optional: true - '@swc/core-linux-arm64-gnu@1.11.24': + '@swc/core-linux-arm64-gnu@1.15.18': optional: true - '@swc/core-linux-arm64-musl@1.11.24': + '@swc/core-linux-arm64-musl@1.15.18': optional: true - '@swc/core-linux-x64-gnu@1.11.24': + '@swc/core-linux-x64-gnu@1.15.18': optional: true - '@swc/core-linux-x64-musl@1.11.24': + '@swc/core-linux-x64-musl@1.15.18': optional: true - '@swc/core-win32-arm64-msvc@1.11.24': + '@swc/core-win32-arm64-msvc@1.15.18': optional: true - '@swc/core-win32-ia32-msvc@1.11.24': + '@swc/core-win32-ia32-msvc@1.15.18': optional: true - '@swc/core-win32-x64-msvc@1.11.24': + '@swc/core-win32-x64-msvc@1.15.18': optional: true - '@swc/core@1.11.24': + '@swc/core@1.15.18': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.25 optionalDependencies: - '@swc/core-darwin-arm64': 1.11.24 - '@swc/core-darwin-x64': 1.11.24 - '@swc/core-linux-arm-gnueabihf': 1.11.24 - '@swc/core-linux-arm64-gnu': 1.11.24 - '@swc/core-linux-arm64-musl': 1.11.24 - '@swc/core-linux-x64-gnu': 1.11.24 - '@swc/core-linux-x64-musl': 1.11.24 - '@swc/core-win32-arm64-msvc': 1.11.24 - '@swc/core-win32-ia32-msvc': 1.11.24 - '@swc/core-win32-x64-msvc': 1.11.24 + '@swc/core-darwin-arm64': 1.15.18 + '@swc/core-darwin-x64': 1.15.18 + '@swc/core-linux-arm-gnueabihf': 1.15.18 + '@swc/core-linux-arm64-gnu': 1.15.18 + '@swc/core-linux-arm64-musl': 1.15.18 + '@swc/core-linux-x64-gnu': 1.15.18 + '@swc/core-linux-x64-musl': 1.15.18 + '@swc/core-win32-arm64-msvc': 1.15.18 + '@swc/core-win32-ia32-msvc': 1.15.18 + '@swc/core-win32-x64-msvc': 1.15.18 '@swc/counter@0.1.3': {} @@ -4609,20 +4835,11 @@ snapshots: '@tokenizer/token@0.3.0': {} - '@ts-morph/common@0.24.0': + '@ts-morph/common@0.28.1': dependencies: - fast-glob: 3.3.3 - minimatch: 9.0.5 - mkdirp: 3.0.1 + minimatch: 10.2.4 path-browserify: 1.0.1 - - '@tsconfig/node10@1.0.12': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} + tinyglobby: 0.2.15 '@types/chai@5.2.3': dependencies: @@ -4647,12 +4864,14 @@ snapshots: dependencies: undici-types: 6.21.0 + '@types/nodemailer@7.0.11': + dependencies: + '@types/node': 22.19.11 + '@types/normalize-package-data@2.4.4': {} '@types/pluralize@0.0.33': {} - '@types/qs@6.14.0': {} - '@types/superagent@8.1.9': dependencies: '@types/cookiejar': 2.1.5 @@ -4690,15 +4909,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.56.0(typescript@5.8.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.8.3) - '@typescript-eslint/types': 8.56.0 - debug: 4.4.3 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/project-service@8.56.1(typescript@5.8.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.8.3) @@ -4708,20 +4918,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.56.0': - dependencies: - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/visitor-keys': 8.56.0 - '@typescript-eslint/scope-manager@8.56.1': dependencies: '@typescript-eslint/types': 8.56.1 '@typescript-eslint/visitor-keys': 8.56.1 - '@typescript-eslint/tsconfig-utils@8.56.0(typescript@5.8.3)': - dependencies: - typescript: 5.8.3 - '@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.8.3)': dependencies: typescript: 5.8.3 @@ -4738,25 +4939,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.56.0': {} - '@typescript-eslint/types@8.56.1': {} - '@typescript-eslint/typescript-estree@8.56.0(typescript@5.8.3)': - dependencies: - '@typescript-eslint/project-service': 8.56.0(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.56.0(typescript@5.8.3) - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/visitor-keys': 8.56.0 - debug: 4.4.3 - minimatch: 9.0.5 - semver: 7.7.4 - tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.56.1(typescript@5.8.3)': dependencies: '@typescript-eslint/project-service': 8.56.1(typescript@5.8.3) @@ -4772,17 +4956,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.56.0(eslint@9.39.3)(typescript@5.8.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.3) - '@typescript-eslint/scope-manager': 8.56.0 - '@typescript-eslint/types': 8.56.0 - '@typescript-eslint/typescript-estree': 8.56.0(typescript@5.8.3) - eslint: 9.39.3 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/utils@8.56.1(eslint@9.39.3)(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.3) @@ -4794,11 +4967,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.56.0': - dependencies: - '@typescript-eslint/types': 8.56.0 - eslint-visitor-keys: 5.0.1 - '@typescript-eslint/visitor-keys@8.56.1': dependencies: '@typescript-eslint/types': 8.56.1 @@ -4821,19 +4989,10 @@ snapshots: abstract-logging@2.0.1: {} - accepts@1.3.8: - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - acorn-jsx@5.3.2(acorn@8.16.0): dependencies: acorn: 8.16.0 - acorn-walk@8.3.5: - dependencies: - acorn: 8.16.0 - acorn@8.16.0: {} ajv@6.14.0: @@ -4861,18 +5020,14 @@ snapshots: ansi-styles@6.2.3: {} - arg@4.1.3: {} - argparse@2.0.1: {} - as-table@1.0.55: - dependencies: - printable-characters: 1.0.42 - asap@2.0.6: {} assertion-error@2.0.1: {} + astring@1.9.0: {} + async-retry@1.3.3: dependencies: retry: 0.13.1 @@ -4898,11 +5053,11 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.2: + brace-expansion@5.0.3: dependencies: - balanced-match: 1.0.2 + balanced-match: 4.0.4 - brace-expansion@5.0.3: + brace-expansion@5.0.4: dependencies: balanced-match: 4.0.4 @@ -4913,13 +5068,29 @@ snapshots: browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.10.0 - caniuse-lite: 1.0.30001770 + caniuse-lite: 1.0.30001775 electron-to-chromium: 1.5.302 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) builtin-modules@5.0.0: {} + bullmq@5.70.1: + dependencies: + cron-parser: 4.9.0 + ioredis: 5.9.3 + msgpackr: 1.11.5 + node-abort-controller: 3.1.1 + semver: 7.7.4 + tslib: 2.8.1 + uuid: 11.1.0 + transitivePeerDependencies: + - supports-color + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + bytes@3.1.2: {} call-bind-apply-helpers@1.0.2: @@ -4936,7 +5107,7 @@ snapshots: camelcase@9.0.0: {} - caniuse-lite@1.0.30001770: {} + caniuse-lite@1.0.30001775: {} case-anything@3.1.2: {} @@ -4951,19 +5122,23 @@ snapshots: check-disk-space@3.4.0: {} - chevrotain@11.1.1: + chevrotain@11.1.2: dependencies: - '@chevrotain/cst-dts-gen': 11.1.1 - '@chevrotain/gast': 11.1.1 - '@chevrotain/regexp-to-ast': 11.1.1 - '@chevrotain/types': 11.1.1 - '@chevrotain/utils': 11.1.1 + '@chevrotain/cst-dts-gen': 11.1.2 + '@chevrotain/gast': 11.1.2 + '@chevrotain/regexp-to-ast': 11.1.2 + '@chevrotain/types': 11.1.2 + '@chevrotain/utils': 11.1.2 lodash-es: 4.17.23 chokidar@4.0.3: dependencies: readdirp: 4.1.2 + chokidar@5.0.0: + dependencies: + readdirp: 5.0.0 + ci-info@4.4.0: {} clean-regexp@1.0.0: @@ -4980,11 +5155,13 @@ snapshots: optionalDependencies: '@colors/colors': 1.5.0 - cli-truncate@5.1.1: + cli-truncate@5.2.0: dependencies: - slice-ansi: 7.1.2 + slice-ansi: 8.0.0 string-width: 8.2.0 + cluster-key-slot@1.1.2: {} + code-block-writer@13.0.3: {} color-convert@2.0.1: @@ -5009,39 +5186,21 @@ snapshots: concat-map@0.0.1: {} - content-disposition@0.5.4: - dependencies: - safe-buffer: 5.2.1 + content-disposition@1.0.1: {} content-type@1.0.5: {} cookie-es@2.0.0: {} - cookie@0.7.2: {} - - cookie@1.1.1: {} - cookiejar@2.1.4: {} - copy-file@11.1.0: - dependencies: - graceful-fs: 4.2.11 - p-event: 6.0.1 - core-js-compat@3.48.0: dependencies: browserslist: 4.28.1 - cpy@11.1.0: + cron-parser@4.9.0: dependencies: - copy-file: 11.1.0 - globby: 14.1.0 - junk: 4.0.1 - micromatch: 4.0.8 - p-filter: 4.1.0 - p-map: 7.0.4 - - create-require@1.1.1: {} + luxon: 3.7.2 cross-spawn@7.0.6: dependencies: @@ -5049,8 +5208,6 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - data-uri-to-buffer@2.0.2: {} - dateformat@4.6.3: {} dayjs@1.11.19: {} @@ -5067,32 +5224,70 @@ snapshots: deep-is@0.1.4: {} + deepmerge@4.3.1: {} + + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + + define-lazy-prop@3.0.0: {} + delayed-stream@1.0.0: {} + denque@2.1.0: {} + depd@2.0.0: {} destroy@1.2.0: {} + detect-libc@2.1.2: + optional: true + dezalgo@1.0.4: dependencies: asap: 2.0.6 wrappy: 1.0.2 - diff@4.0.4: {} - dlv@1.1.3: {} - dotenv@16.6.1: {} - dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 es-errors: 1.3.0 gopd: 1.2.0 + edge-error@4.0.2: {} + + edge-lexer@6.0.4: + dependencies: + edge-error: 4.0.2 + + edge-parser@9.1.0: + dependencies: + acorn: 8.16.0 + astring: 1.9.0 + edge-error: 4.0.2 + edge-lexer: 6.0.4 + js-stringify: 1.0.2 + + edge.js@6.5.0: + dependencies: + '@poppinss/inspect': 1.0.1 + '@poppinss/macroable': 1.1.0 + '@poppinss/utils': 7.0.1 + edge-error: 4.0.2 + edge-lexer: 6.0.4 + edge-parser: 9.1.0 + he: 1.2.0 + property-information: 7.1.0 + stringify-attributes: 4.0.0 + edgejs-parser@0.2.18: dependencies: - chevrotain: 11.1.1 + chevrotain: 11.1.2 ee-first@1.1.1: {} @@ -5100,7 +5295,7 @@ snapshots: emittery@1.2.0: {} - emoji-regex@10.6.0: {} + emittery@1.2.1: {} emoji-regex@8.0.0: {} @@ -5138,6 +5333,8 @@ snapshots: escalade@3.2.0: {} + escape-goat@4.0.0: {} + escape-string-regexp@1.0.5: {} escape-string-regexp@4.0.0: {} @@ -5155,17 +5352,15 @@ snapshots: optionalDependencies: eslint-config-prettier: 10.1.8(eslint@9.39.3) - eslint-plugin-unicorn@60.0.0(eslint@9.39.3): + eslint-plugin-unicorn@63.0.0(eslint@9.39.3): dependencies: '@babel/helper-validator-identifier': 7.28.5 '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.3) - '@eslint/plugin-kit': 0.3.5 change-case: 5.4.4 ci-info: 4.4.0 clean-regexp: 1.0.0 core-js-compat: 3.48.0 eslint: 9.39.3 - esquery: 1.7.0 find-up-simple: 1.0.1 globals: 16.5.0 indent-string: 5.0.0 @@ -5173,7 +5368,7 @@ snapshots: jsesc: 3.1.0 pluralize: 8.0.0 regexp-tree: 0.1.27 - regjsparser: 0.12.0 + regjsparser: 0.13.0 semver: 7.7.4 strip-indent: 4.1.1 @@ -5340,10 +5535,10 @@ snapshots: flattie@1.1.1: {} - flydrive@1.3.0(@aws-sdk/client-s3@3.995.0)(@aws-sdk/s3-request-presigner@3.995.0): + flydrive@2.0.0(@aws-sdk/client-s3@3.995.0)(@aws-sdk/s3-request-presigner@3.995.0): dependencies: '@humanwhocodes/retry': 0.4.3 - '@poppinss/utils': 6.10.1 + '@poppinss/utils': 7.0.1 etag: 1.8.1 mime-types: 3.0.2 optionalDependencies: @@ -5394,16 +5589,15 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 - get-source@2.0.12: - dependencies: - data-uri-to-buffer: 2.0.2 - source-map: 0.6.1 - get-stream@9.0.1: dependencies: '@sec-ant/readable-stream': 0.4.1 is-stream: 4.0.1 + get-tsconfig@4.13.6: + dependencies: + resolve-pkg-maps: 1.0.0 + getopts@2.3.0: {} glob-parent@5.1.2: @@ -5418,19 +5612,8 @@ snapshots: globals@16.5.0: {} - globby@14.1.0: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.3 - ignore: 7.0.5 - path-type: 6.0.0 - slash: 5.1.0 - unicorn-magic: 0.3.0 - gopd@1.2.0: {} - graceful-fs@4.2.11: {} - has-flag@4.0.0: {} has-symbols@1.1.0: {} @@ -5475,6 +5658,13 @@ snapshots: husky@9.1.7: {} + ical-generator@10.0.0(@types/luxon@3.7.1)(@types/node@22.19.11)(dayjs@1.11.19)(luxon@3.7.2): + optionalDependencies: + '@types/luxon': 3.7.1 + '@types/node': 22.19.11 + dayjs: 1.11.19 + luxon: 3.7.2 + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 @@ -5492,6 +5682,8 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-meta-resolve@4.2.0: {} + imurmurhash@0.1.4: {} indent-string@5.0.0: {} @@ -5504,6 +5696,34 @@ snapshots: interpret@2.2.0: {} + ioredis@5.10.0: + dependencies: + '@ioredis/commands': 1.5.1 + cluster-key-slot: 1.1.2 + debug: 4.4.3 + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + + ioredis@5.9.3: + dependencies: + '@ioredis/commands': 1.5.0 + cluster-key-slot: 1.1.2 + debug: 4.4.3 + denque: 2.1.0 + lodash.defaults: 4.2.0 + lodash.isarguments: 3.1.0 + redis-errors: 1.2.0 + redis-parser: 3.0.0 + standard-as-callback: 2.1.0 + transitivePeerDependencies: + - supports-color + ipaddr.js@1.9.1: {} is-builtin-module@5.0.0: @@ -5514,6 +5734,8 @@ snapshots: dependencies: hasown: 2.0.2 + is-docker@3.0.0: {} + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -5526,6 +5748,12 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-in-ssh@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-number@7.0.0: {} is-plain-obj@4.1.0: {} @@ -5534,6 +5762,10 @@ snapshots: is-unicode-supported@2.1.0: {} + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + isexe@2.0.0: {} jest-diff@30.2.0: @@ -5545,14 +5777,14 @@ snapshots: joycon@3.1.1: {} + js-stringify@1.0.2: {} + js-tokens@4.0.0: {} js-yaml@4.1.1: dependencies: argparse: 2.0.1 - jsesc@3.0.2: {} - jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -5571,7 +5803,7 @@ snapshots: kleur@4.1.5: {} - knex-dynamic-connection@3.2.0(pg@8.18.0): + knex-dynamic-connection@4.0.0-next.0(pg@8.18.0): dependencies: debug: 4.4.3 knex: 3.1.0(pg@8.18.0) @@ -5619,17 +5851,21 @@ snapshots: lodash-es@4.17.23: {} + lodash.defaults@4.2.0: {} + + lodash.isarguments@3.1.0: {} + lodash.merge@4.6.2: {} lodash@4.17.23: {} - log-update@7.1.0: + log-update@7.2.0: dependencies: ansi-escapes: 7.3.0 cli-cursor: 5.0.0 - slice-ansi: 7.1.2 - strip-ansi: 7.1.2 - wrap-ansi: 9.0.2 + slice-ansi: 8.0.0 + strip-ansi: 7.2.0 + wrap-ansi: 10.0.0 lru-cache@10.4.3: {} @@ -5637,16 +5873,10 @@ snapshots: luxon@3.7.2: {} - make-error@1.3.6: {} - math-intrinsics@1.1.0: {} media-typer@1.1.0: {} - memoize@10.2.0: - dependencies: - mimic-function: 5.0.1 - merge2@1.4.1: {} methods@1.1.2: {} @@ -5676,32 +5906,51 @@ snapshots: dependencies: brace-expansion: 5.0.3 - minimatch@3.1.2: + minimatch@10.2.4: dependencies: - brace-expansion: 1.1.12 + brace-expansion: 5.0.4 - minimatch@9.0.5: + minimatch@3.1.2: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 1.1.12 minimist@1.2.8: {} - mkdirp@3.0.1: {} - ms@2.1.2: {} ms@2.1.3: {} - mustache@4.2.0: {} + msgpackr-extract@3.0.3: + dependencies: + node-gyp-build-optional-packages: 5.2.2 + optionalDependencies: + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 + optional: true + + msgpackr@1.11.5: + optionalDependencies: + msgpackr-extract: 3.0.3 nanoid@5.1.6: {} natural-compare@1.4.0: {} - negotiator@0.6.3: {} + node-abort-controller@3.1.1: {} + + node-gyp-build-optional-packages@5.2.2: + dependencies: + detect-libc: 2.1.2 + optional: true node-releases@2.0.27: {} + nodemailer@8.0.1: {} + normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 @@ -5737,6 +5986,15 @@ snapshots: dependencies: mimic-function: 5.0.1 + open@11.0.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.1.0 + wsl-utils: 0.3.1 + openapi3-ts@4.5.0: dependencies: yaml: 2.8.2 @@ -5750,14 +6008,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - p-event@6.0.1: - dependencies: - p-timeout: 6.1.4 - - p-filter@4.1.0: - dependencies: - p-map: 7.0.4 - p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -5766,14 +6016,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@7.0.4: {} - - p-timeout@6.1.4: {} - - package-manager-detector@0.2.11: - dependencies: - quansync: 0.2.11 - package-manager-detector@1.6.0: {} parent-module@1.0.1: @@ -5785,6 +6027,11 @@ snapshots: es-module-lexer: 1.7.0 slashes: 3.0.12 + parse-imports@3.0.0: + dependencies: + es-module-lexer: 1.7.0 + slashes: 3.0.12 + parse-json@8.3.0: dependencies: '@babel/code-frame': 7.29.0 @@ -5803,8 +6050,6 @@ snapshots: path-parse@1.0.7: {} - path-type@6.0.0: {} - pg-cloudflare@1.3.0: optional: true @@ -5900,6 +6145,8 @@ snapshots: dependencies: xtend: 4.0.2 + powershell-utils@0.1.0: {} + prelude-ls@1.2.1: {} prettier-linter-helpers@1.0.1: @@ -5927,10 +6174,10 @@ snapshots: dependencies: parse-ms: 4.0.0 - printable-characters@1.0.42: {} - process-warning@5.0.0: {} + property-information@7.1.0: {} + proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -5947,14 +6194,10 @@ snapshots: dependencies: side-channel: 1.1.0 - quansync@0.2.11: {} - queue-microtask@1.2.3: {} quick-format-unescaped@4.0.4: {} - random-bytes@1.0.0: {} - raw-body@3.0.2: dependencies: bytes: 3.1.2 @@ -5994,24 +6237,34 @@ snapshots: readdirp@4.1.2: {} + readdirp@5.0.0: {} + real-require@0.2.0: {} rechoir@0.8.0: dependencies: resolve: 1.22.11 + redis-errors@1.2.0: {} + + redis-parser@3.0.0: + dependencies: + redis-errors: 1.2.0 + reflect-metadata@0.2.2: {} regexp-tree@0.1.27: {} - regjsparser@0.12.0: + regjsparser@0.13.0: dependencies: - jsesc: 3.0.2 + jsesc: 3.1.0 resolve-from@4.0.0: {} resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve@1.22.11: dependencies: is-core-module: 2.16.1 @@ -6027,14 +6280,14 @@ snapshots: reusify@1.1.0: {} + run-applescript@7.1.0: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 safe-buffer@5.1.2: {} - safe-buffer@5.2.1: {} - safe-stable-stringify@2.5.0: {} safer-buffer@2.1.2: {} @@ -6091,7 +6344,7 @@ snapshots: slashes@3.0.12: {} - slice-ansi@7.1.2: + slice-ansi@8.0.0: dependencies: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 @@ -6102,8 +6355,6 @@ snapshots: dependencies: atomic-sleep: 1.0.0 - source-map@0.6.1: {} - spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 @@ -6122,10 +6373,7 @@ snapshots: split2@4.2.0: {} - stacktracey@2.1.8: - dependencies: - as-table: 1.0.55 - get-source: 2.0.12 + standard-as-callback@2.1.0: {} statuses@2.0.2: {} @@ -6135,16 +6383,14 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@7.2.0: + string-width@8.2.0: dependencies: - emoji-regex: 10.6.0 get-east-asian-width: 1.5.0 strip-ansi: 7.1.2 - string-width@8.2.0: + stringify-attributes@4.0.0: dependencies: - get-east-asian-width: 1.5.0 - strip-ansi: 7.1.2 + escape-goat: 4.0.0 strip-ansi@6.0.1: dependencies: @@ -6154,6 +6400,10 @@ snapshots: dependencies: ansi-regex: 6.2.2 + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + strip-final-newline@4.0.0: {} strip-indent@4.1.1: {} @@ -6206,8 +6456,6 @@ snapshots: tildify@2.0.0: {} - tinyexec@0.3.2: {} - tinyexec@1.0.2: {} tinyglobby@0.2.15: @@ -6233,31 +6481,11 @@ snapshots: dependencies: typescript: 5.8.3 - ts-morph@23.0.0: + ts-morph@27.0.2: dependencies: - '@ts-morph/common': 0.24.0 + '@ts-morph/common': 0.28.1 code-block-writer: 13.0.3 - ts-node-maintained@10.9.6(@swc/core@1.11.24)(@types/node@22.19.11)(typescript@5.8.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.12 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.19.11 - acorn: 8.16.0 - acorn-walk: 8.3.5 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.4 - make-error: 1.3.6 - typescript: 5.8.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optionalDependencies: - '@swc/core': 1.11.24 - tslib@2.8.1: {} type-check@0.4.0: @@ -6291,10 +6519,6 @@ snapshots: uglify-js@3.19.3: {} - uid-safe@2.1.5: - dependencies: - random-bytes: 1.0.0 - uint8array-extras@1.5.0: {} undici-types@6.21.0: {} @@ -6317,7 +6541,7 @@ snapshots: dependencies: punycode: 2.3.1 - v8-compile-cache-lib@3.0.1: {} + uuid@11.1.0: {} validate-npm-package-license@3.0.4: dependencies: @@ -6334,23 +6558,24 @@ snapshots: word-wrap@1.2.5: {} - wordwrap@1.0.0: {} - - wrap-ansi@9.0.2: + wrap-ansi@10.0.0: dependencies: ansi-styles: 6.2.3 - string-width: 7.2.0 - strip-ansi: 7.1.2 + string-width: 8.2.0 + strip-ansi: 7.2.0 wrappy@1.0.2: {} + wsl-utils@0.3.1: + dependencies: + is-wsl: 3.1.1 + powershell-utils: 0.1.0 + xtend@4.0.2: {} yaml@2.8.2: {} - yargs-parser@21.1.1: {} - - yn@3.1.1: {} + yargs-parser@22.0.0: {} yocto-queue@0.1.0: {} @@ -6361,22 +6586,10 @@ snapshots: '@poppinss/exception': 1.2.3 error-stack-parser-es: 1.0.5 - youch-terminal@2.2.3: - dependencies: - kleur: 4.1.5 - string-width: 4.2.3 - wordwrap: 1.0.0 - - youch@3.3.4: - dependencies: - cookie: 0.7.2 - mustache: 4.2.0 - stacktracey: 2.1.8 - - youch@4.1.0-beta.14: + youch@4.1.0: dependencies: '@poppinss/colors': 4.1.6 - '@poppinss/dumper': 0.6.5 + '@poppinss/dumper': 0.7.0 '@speed-highlight/core': 1.2.14 cookie-es: 2.0.0 youch-core: 0.3.3 diff --git a/resources/views/events/invite.edge b/resources/views/events/invite.edge new file mode 100644 index 0000000..45b693b --- /dev/null +++ b/resources/views/events/invite.edge @@ -0,0 +1,212 @@ + + + + + + + + +
+
+
+

{{branding.name}}

+
+ +
+

You've been invited

+ +
+

Hi {{ invitee.name }},

+

{{ inviter.name }} has invited you to participate in an upcoming event on xContest.

+
+ +
+

Event Details

+ + + + + + + + + + + + + +
Event{{ event.title }}
Date{{ event.date }}
Location{{ event.location }}
+
+ {{ event.description }} +
+
+ + + + + +
+ Accept Invitation + + Decline +
+
+
+ +
+ If you have any questions, feel free to reach out to {{ inviter.name }} directly or contact our support team. +
+
+
+ + +
+ + \ No newline at end of file diff --git a/start/env.ts b/start/env.ts index dd42326..75e6a29 100644 --- a/start/env.ts +++ b/start/env.ts @@ -88,4 +88,23 @@ export default await Env.create(new URL('../', import.meta.url), { |---------------------------------------------------------- */ DRIVE_DISK: Env.schema.enum(['s3'] as const), + + /* + |---------------------------------------------------------- + | Variables for configuring the mail package + |---------------------------------------------------------- + */ + MAIL_MAILER: Env.schema.enum(['smtp'] as const), + MAIL_FROM_NAME: Env.schema.string(), + MAIL_FROM_ADDRESS: Env.schema.string(), + MAIL_REPLY_NAME: Env.schema.string.optional(), + MAIL_REPLY_ADDRESS: Env.schema.string.optional(), + SMTP_HOST: Env.schema.string(), + SMTP_PORT: Env.schema.number(), + SMTP_USERNAME: Env.schema.string(), + SMTP_PASSWORD: Env.schema.string(), + + REDIS_HOST: Env.schema.string({ format: 'host' }), + REDIS_PORT: Env.schema.number(), + REDIS_PASSWORD: Env.schema.string.optional(), }) diff --git a/start/events.ts b/start/events.ts index 38419f8..ae487fb 100644 --- a/start/events.ts +++ b/start/events.ts @@ -20,4 +20,3 @@ * along with this program. If not, see http://www.gnu.org/licenses/. * */ - diff --git a/start/kernel.ts b/start/kernel.ts index 6f0bf6f..a5f8212 100644 --- a/start/kernel.ts +++ b/start/kernel.ts @@ -23,7 +23,7 @@ /* |-------------------------------------------------------------------------- -| HTTP kernel file KERNELLL!!!!! +| HTTP kernel file |-------------------------------------------------------------------------- | | The HTTP kernel file is used to register the middleware with the server @@ -32,7 +32,7 @@ */ import router from '@adonisjs/core/services/router' -import server from '@adonisjs/core/services/server' // YEAAAHHH +import server from '@adonisjs/core/services/server' /** * The error handler is used to convert an exception diff --git a/start/mail.ts b/start/mail.ts new file mode 100644 index 0000000..06f7a37 --- /dev/null +++ b/start/mail.ts @@ -0,0 +1,53 @@ +/* + * ______ __ __ + * _ __/ ____/___ ____ / /____ _____/ /_ + * | |/_/ / / __ \/ __ \/ __/ _ \/ ___/ __/ + * _> ({ + async queue(mailMessage, config) { + await emailsQueue.add('send_email', { + mailMessage, + config, + mailerName: mailer.name, + }) + }, +})) + +app.terminating(async () => { + await emailsQueue.close() +}) \ No newline at end of file diff --git a/start/routes.ts b/start/routes.ts index 1f6e8ca..68ed801 100644 --- a/start/routes.ts +++ b/start/routes.ts @@ -36,6 +36,7 @@ import app from '@adonisjs/core/services/app' import { UserGuard } from '#utils/permissions' import { generateApiSpec } from '#openapi/index' + router.get('/', async () => ({ status: 200, message: 'API is running', @@ -88,8 +89,8 @@ router.resource('events', EventsController) router.group(() => { router.get('/', [EventsController, 'indexAdministrators']) router.post('/', [EventsController, 'storeAdministrator']) - router.put('/:adminId', [EventsController, 'updateAdministrator']) - router.patch('/:adminId', [EventsController, 'updateAdministrator']) + router.put('/:adminId', [EventsController, 'updateAdministrator']).as('events.update_administrator_put') + router.patch('/:adminId', [EventsController, 'updateAdministrator']).as('events.update_administrator_patch') router.delete('/:adminId', [EventsController, 'destroyAdministrator']) }).prefix('events/:id/administrators').use(middleware.auth()) @@ -140,8 +141,8 @@ router.group(() => { const HackathonController = () => import('#controllers/hackathons_controller') router.group(() => { - router.put('/:id', [HackathonController, 'updateTask']) - router.patch('/:id', [HackathonController, 'updateTask']) + router.put('/:id', [HackathonController, 'updateTask']).as('hackathon.update_task_put') + router.patch('/:id', [HackathonController, 'updateTask']).as('hackathon.update_task_patch') }).prefix('hackathon/tasks').use(middleware.auth()) @@ -149,8 +150,8 @@ router.group(() => { router.get('/', [HackathonController, 'indexJuryMembers']) router.post('/', [HackathonController, 'storeJuryMember']) router.get('/:juryMemberId', [HackathonController, 'showJuryMember']) - router.put('/:juryMemberId', [HackathonController, 'updateJuryMember']) - router.patch('/:juryMemberId', [HackathonController, 'updateJuryMember']) + router.put('/:juryMemberId', [HackathonController, 'updateJuryMember']).as('hackathon.update_jury_member_put') + router.patch('/:juryMemberId', [HackathonController, 'updateJuryMember']).as('hackathon.update_jury_member_patch') router.delete('/:juryMemberId', [HackathonController, 'destroyJuryMember']) }).prefix('hackathon/tasks/:id/jury').use(middleware.auth()) @@ -164,7 +165,7 @@ router.group(() => { router.get('/', [ScoresController, 'indexCriteria']) router.post('/', [ScoresController, 'storeCriteria']) router.get('/:id', [ScoresController, 'showCriteria']) - router.put('/:id', [ScoresController, 'updateCriteria']) - router.patch('/:id', [ScoresController, 'updateCriteria']) + router.put('/:id', [ScoresController, 'updateCriteria']).as('scores.update_criteria_put') + router.patch('/:id', [ScoresController, 'updateCriteria']).as('scores.update_criteria_patch') router.delete('/:id', [ScoresController, 'destroyCriteria']) }).prefix('tasks/:task_id/scores').use(middleware.auth()) diff --git a/workers/mail.ts b/workers/mail.ts new file mode 100644 index 0000000..50ab30a --- /dev/null +++ b/workers/mail.ts @@ -0,0 +1,46 @@ +/* + * ______ __ __ + * _ __/ ____/___ ____ / /____ _____/ /_ + * | |/_/ / / __ \/ __ \/ __/ _ \/ ___/ __/ + * _> { + if (job.name === 'send_email') { + const { mailMessage, config, mailerName } = job.data + await mail.use(mailerName).sendCompiled(mailMessage, config) + } + }, + { connection: redisConfig.connections.main }, +) + +app.terminating(async () => { + await worker.close() +}) \ No newline at end of file