diff --git a/.gitignore b/.gitignore index 88ad69d..15629aa 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,8 @@ node_modules .env.* *.xdp* !.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* .vercel .output .idea diff --git a/.node-version b/.node-version index aaccf12..2edeafb 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -20.6.1 \ No newline at end of file +20 \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index b6cceea..b362ec7 100644 --- a/.prettierrc +++ b/.prettierrc @@ -5,7 +5,7 @@ "trailingComma": "all", "bracketSpacing": true, "printWidth": 100, - "plugins": ["prettier-plugin-svelte"], + "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], "pluginSearchDirs": ["."], "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] } diff --git a/Caddyfile b/Caddyfile new file mode 100644 index 0000000..e9a1ab9 --- /dev/null +++ b/Caddyfile @@ -0,0 +1,3 @@ +boredgame.localhost { + reverse_proxy / localhost:4173 +} \ No newline at end of file diff --git a/biome.json b/biome.json new file mode 100644 index 0000000..bf6d670 --- /dev/null +++ b/biome.json @@ -0,0 +1,55 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json", + "formatter": { + "enabled": true, + "formatWithErrors": false, + "indentStyle": "tab", + "indentWidth": 2, + "lineEnding": "lf", + "lineWidth": 150, + "attributePosition": "auto", + "ignore": [ + "**/.DS_Store", + "**/node_modules", + "./build", + "./.svelte-kit", + "./package", + "**/.env", + "**/.env.*", + "**/pnpm-lock.yaml", + "**/package-lock.json", + "**/yarn.lock" + ] + }, + "organizeImports": { "enabled": true }, + "linter": { "enabled": true, "rules": { "recommended": true } }, + "javascript": { + "formatter": { + "jsxQuoteStyle": "double", + "quoteProperties": "asNeeded", + "trailingCommas": "all", + "semicolons": "asNeeded", + "arrowParentheses": "always", + "bracketSpacing": true, + "bracketSameLine": false, + "quoteStyle": "single", + "attributePosition": "auto" + }, + "parser": { + "unsafeParameterDecoratorsEnabled": true + } + }, + "overrides": [ + { + "include": ["*.svelte"], + "linter": { + "rules": { + "style": { + "useConst": "off", + "useImportType": "off" + } + } + } + } + ] +} diff --git a/components.json b/components.json index 16aece3..767bdc4 100644 --- a/components.json +++ b/components.json @@ -9,5 +9,6 @@ "aliases": { "components": "$lib/components", "utils": "$lib/utils" - } + }, + "typescript": true } \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..82b9871 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,43 @@ +services: + postgres: + image: postgres:latest + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: postgres + ports: + - '5432:5432' + volumes: + - postgres_data:/var/lib/postgresql/data + redis: + image: redis:latest + ports: + - '6379:6379' + volumes: + - redis_data:/data +# cerbos: +# image: ghcr.io/cerbos/cerbos:0.38.1 +# environment: +# CERBOS_NO_TELEMETRY: 1 +# ports: +# - '3592:3592' +# volumes: +# - ./policies:/policies +# caddy: +# image: caddy:latest +# restart: unless-stopped +# ports: +# - "80:80" +# - "443:443" +# - "443:443/udp" +# volumes: +# - ./Caddyfile:/etc/caddy/Caddyfile +# - ./site:/srv +# - caddy_data:/data +# - caddy_config:/config +volumes: + postgres_data: + redis_data: +# policies_data: + # caddy_data: + # caddy_config: \ No newline at end of file diff --git a/drizzle.config.ts b/drizzle.config.ts index 78d6c71..f4618ee 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -1,11 +1,11 @@ -import 'dotenv/config'; -import { defineConfig } from 'drizzle-kit'; -import env from './src/env'; +import 'dotenv/config' +import { defineConfig } from 'drizzle-kit' +import env from './src/env' export default defineConfig({ dialect: 'postgresql', - schema: './src/db/schema/index.ts', - out: './src/db/migrations', + out: './src/lib/server/api/databases/migrations', + schema: './src/lib/server/api/databases/tables/drizzle.ts', dbCredentials: { host: env.DATABASE_HOST || 'localhost', port: Number(env.DATABASE_PORT) || 5432, @@ -18,4 +18,8 @@ export default defineConfig({ verbose: true, // Always as for confirmation strict: true, -}); + migrations: { + table: 'migrations', + schema: 'public', + }, +}) diff --git a/src/routes/api/crons/cleanupSessions/+server.ts b/oldApis/cleanupSessions/+server.ts similarity index 100% rename from src/routes/api/crons/cleanupSessions/+server.ts rename to oldApis/cleanupSessions/+server.ts diff --git a/src/routes/api/collection/+server.ts b/oldApis/collection/+server.ts similarity index 100% rename from src/routes/api/collection/+server.ts rename to oldApis/collection/+server.ts diff --git a/src/routes/api/wishlist/[id]/items/+server.ts b/oldApis/collection/[id]/items/+server.ts similarity index 96% rename from src/routes/api/wishlist/[id]/items/+server.ts rename to oldApis/collection/[id]/items/+server.ts index fc7727d..4d9ebe1 100644 --- a/src/routes/api/wishlist/[id]/items/+server.ts +++ b/oldApis/collection/[id]/items/+server.ts @@ -1,6 +1,6 @@ -import { error, json } from '@sveltejs/kit'; - -export async function GET({ url, locals, params }) { - const searchParams = Object.fromEntries(url.searchParams); - return json({}); -} +import { error, json } from '@sveltejs/kit'; + +export async function GET({ url, locals, params }) { + const searchParams = Object.fromEntries(url.searchParams); + return json({}); +} diff --git a/oldApis/collection/[id]/search/+server.ts b/oldApis/collection/[id]/search/+server.ts new file mode 100644 index 0000000..37e442e --- /dev/null +++ b/oldApis/collection/[id]/search/+server.ts @@ -0,0 +1,61 @@ +import { collection_items, usersTable } from '$db/schema' +import { error, json } from '@sveltejs/kit' +import { eq } from 'drizzle-orm' +import { db } from '../../../../src/lib/server/api/packages/drizzle' + +// Search a user's collection +export async function GET({ url, locals, params }) { + const searchParams = Object.fromEntries(url.searchParams) + const q = searchParams?.q || '' + const limit = Number.parseInt(searchParams?.limit) || 10 + const skip = Number.parseInt(searchParams?.skip) || 0 + const order = searchParams?.order || 'asc' + const sort = searchParams?.sort || 'name' + const collection_id = params.id + console.log('url', url) + console.log('username', locals?.user?.id) + + if (!locals.user) { + error(401, { message: 'Unauthorized' }) + } + + const collection = await db.query.collections.findFirst({ + where: eq(usersTable.id, locals?.user?.id), + }) + console.log('collection', collection) + + if (!collection) { + console.log('Collection was not found') + error(404, { message: 'Collection was not found' }) + } + + try { + const userCollectionItems = await db.query.collection_items.findMany({ + where: eq(collection_items.collection_id, collection_id), + with: { + game: { + columns: { + id: true, + name: true, + thumb_url: true, + }, + }, + }, + orderBy: (collection_items, { asc, desc }) => { + const dbSort = sort === 'dateAdded' ? collection_items.created_at : collection_items.times_played + if (order === 'asc') { + return asc(dbSort) + } else { + return desc(dbSort) + } + }, + offset: skip, + limit, + }) + + return json(userCollectionItems) + } catch (e) { + console.error(e) + error(500, { message: 'Something went wrong' }) + } +} diff --git a/src/routes/api/external/game/[id]/+server.ts b/oldApis/external/game/[id]/+server.ts similarity index 100% rename from src/routes/api/external/game/[id]/+server.ts rename to oldApis/external/game/[id]/+server.ts diff --git a/src/routes/api/external/search/+server.ts b/oldApis/external/search/+server.ts similarity index 100% rename from src/routes/api/external/search/+server.ts rename to oldApis/external/search/+server.ts diff --git a/src/routes/api/games/[id]/+server.ts b/oldApis/games/[id]/+server.ts similarity index 100% rename from src/routes/api/games/[id]/+server.ts rename to oldApis/games/[id]/+server.ts diff --git a/src/routes/api/games/random/+server.ts b/oldApis/games/random/+server.ts similarity index 100% rename from src/routes/api/games/random/+server.ts rename to oldApis/games/random/+server.ts diff --git a/src/routes/api/games/search/+server.ts b/oldApis/games/search/+server.ts similarity index 100% rename from src/routes/api/games/search/+server.ts rename to oldApis/games/search/+server.ts diff --git a/src/routes/api/publisher/+server.ts b/oldApis/publisher/+server.ts similarity index 100% rename from src/routes/api/publisher/+server.ts rename to oldApis/publisher/+server.ts diff --git a/src/routes/api/publisher/[id]/+server.ts b/oldApis/publisher/[id]/+server.ts similarity index 100% rename from src/routes/api/publisher/[id]/+server.ts rename to oldApis/publisher/[id]/+server.ts diff --git a/oldApis/reset-password/+server.ts b/oldApis/reset-password/+server.ts new file mode 100644 index 0000000..3187ce2 --- /dev/null +++ b/oldApis/reset-password/+server.ts @@ -0,0 +1,34 @@ +import { PUBLIC_SITE_URL } from '$env/static/public' +import { createPasswordResetToken } from '$lib/server/auth-utils.js' +import { error } from '@sveltejs/kit' +import { eq } from 'drizzle-orm' +import { usersTable } from '../../src/lib/server/api/databases/tables' +import { db } from '../../src/lib/server/api/packages/drizzle' + +export async function POST({ locals, request }) { + const { email }: { email: string } = await request.json() + + if (!locals.user) { + error(401, { message: 'Unauthorized' }) + } + + const user = await db.query.usersTable.findFirst({ + where: eq(usersTable.email, email), + }) + + if (!user) { + error(200, { + message: 'Email sent! Please check your email for a link to reset your password.', + }) + } + + const verificationToken = await createPasswordResetToken(user.id) + const verificationLink = PUBLIC_SITE_URL + verificationToken + + // TODO: send email + console.log('Verification link: ' + verificationLink) + + return new Response(null, { + status: 200, + }) +} diff --git a/oldApis/reset-password/[token]/+server.ts b/oldApis/reset-password/[token]/+server.ts new file mode 100644 index 0000000..8d6360b --- /dev/null +++ b/oldApis/reset-password/[token]/+server.ts @@ -0,0 +1,48 @@ +import { eq } from 'drizzle-orm' +import { isWithinExpirationDate } from 'oslo' +import { password_reset_tokens } from '../../../src/lib/server/api/databases/tables' +// import { lucia } from '$lib/server/lucia'; +import { db } from '../../../src/lib/server/api/packages/drizzle' + +export async function POST({ request, params }) { + const { password } = await request.json() + + if (typeof password !== 'string' || password.length < 8) { + return new Response(null, { + status: 400, + }) + } + + const verificationToken = params.token + + const token = await db.query.password_reset_tokens.findFirst({ + where: eq(password_reset_tokens.id, verificationToken), + }) + if (!token) { + await db.delete(password_reset_tokens).where(eq(password_reset_tokens.id, verificationToken)) + return new Response(null, { + status: 400, + }) + } + + if (!token?.expires_at || !isWithinExpirationDate(token.expires_at)) { + return new Response(null, { + status: 400, + }) + } + + // await lucia.invalidateUserSessions(token.user_id); + // const hashPassword = await new Argon2id().hash(password); + // // await db.update(usersTable).set({ hashed_password: hashPassword }).where(eq(usersTable.id, token.user_id)); + // + // const session = await lucia.createSession(token.user_id, {}); + // const sessionCookie = lucia.createSessionCookie(session.id); + + return new Response(null, { + status: 302, + headers: { + Location: '/', + 'Set-Cookie': sessionCookie.serialize(), + }, + }) +} diff --git a/src/routes/api/wishlist/+server.ts b/oldApis/wishlist/+server.ts similarity index 100% rename from src/routes/api/wishlist/+server.ts rename to oldApis/wishlist/+server.ts diff --git a/src/routes/api/collection/[id]/items/+server.ts b/oldApis/wishlist/[id]/items/+server.ts similarity index 96% rename from src/routes/api/collection/[id]/items/+server.ts rename to oldApis/wishlist/[id]/items/+server.ts index fc7727d..4d9ebe1 100644 --- a/src/routes/api/collection/[id]/items/+server.ts +++ b/oldApis/wishlist/[id]/items/+server.ts @@ -1,6 +1,6 @@ -import { error, json } from '@sveltejs/kit'; - -export async function GET({ url, locals, params }) { - const searchParams = Object.fromEntries(url.searchParams); - return json({}); -} +import { error, json } from '@sveltejs/kit'; + +export async function GET({ url, locals, params }) { + const searchParams = Object.fromEntries(url.searchParams); + return json({}); +} diff --git a/src/routes/api/wishlist/[id]/search/+server.ts b/oldApis/wishlist/[id]/search/+server.ts similarity index 100% rename from src/routes/api/wishlist/[id]/search/+server.ts rename to oldApis/wishlist/[id]/search/+server.ts diff --git a/package.json b/package.json index e1dd14b..9bc112e 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,11 @@ "version": "0.0.2", "private": "true", "scripts": { + "db:push": "drizzle-kit push", + "db:generate": "drizzle-kit generate", + "db:migrate": "tsx src/lib/server/api/databases/migrate.ts", + "db:seed": "tsx src/lib/server/api/databases/seed.ts", + "db:studio": "drizzle-kit studio --verbose", "dev": "NODE_OPTIONS=\"--inspect\" vite dev --host", "build": "vite build", "package": "svelte-kit package", @@ -11,107 +16,118 @@ "test:ui": "svelte-kit sync && playwright test --ui", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "test:unit": "vitest", + "initialize": "pnpm install && docker compose up --no-recreate -d && pnpm db:migrate && pnpm db:seed", "lint": "prettier --plugin-search-dir . --check . && eslint .", "format": "prettier --plugin-search-dir . --write .", "site:update": "pnpm update -i -L", - "generate": "drizzle-kit generate", - "migrate": "tsx src/db/migrate.ts", - "seed": "tsx src/db/seed.ts", - "push": "drizzle-kit push" + "test:unit": "vitest" }, "devDependencies": { + "@biomejs/biome": "1.8.3", + "@faker-js/faker": "^8.4.1", "@melt-ui/pp": "^0.3.2", "@melt-ui/svelte": "^0.83.0", - "@playwright/test": "^1.45.1", - "@resvg/resvg-js": "^2.6.2", - "@sveltejs/adapter-auto": "^3.2.2", - "@sveltejs/enhanced-img": "^0.3.0", - "@sveltejs/kit": "^2.5.18", - "@sveltejs/vite-plugin-svelte": "^3.1.1", + "@playwright/test": "^1.46.1", + "@sveltejs/adapter-auto": "^3.2.4", + "@sveltejs/enhanced-img": "^0.3.4", + "@sveltejs/kit": "^2.5.25", + "@sveltejs/vite-plugin-svelte": "^3.1.2", "@types/cookie": "^0.6.0", - "@types/node": "^20.14.10", - "@types/pg": "^8.11.6", - "@typescript-eslint/eslint-plugin": "^7.16.0", - "@typescript-eslint/parser": "^7.16.0", - "autoprefixer": "^10.4.19", - "drizzle-kit": "^0.23.0", + "@types/node": "^20.16.3", + "@types/pg": "^8.11.8", + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", + "autoprefixer": "^10.4.20", + "drizzle-kit": "^0.23.2", "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-svelte": "^2.42.0", + "eslint-plugin-svelte": "^2.43.0", "just-clone": "^6.2.0", "just-debounce-it": "^3.2.0", - "postcss": "^8.4.39", + "lucia": "3.2.0", + "lucide-svelte": "^0.408.0", + "nodemailer": "^6.9.15", + "postcss": "^8.4.44", "postcss-import": "^16.1.0", "postcss-load-config": "^5.1.0", "postcss-preset-env": "^9.6.0", "prettier": "^3.3.3", - "prettier-plugin-svelte": "^3.2.5", + "prettier-plugin-svelte": "^3.2.6", "sass": "^1.77.8", "satori": "^0.10.14", "satori-html": "^0.3.2", "svelte": "5.0.0-next.175", - "svelte-check": "^3.8.4", + "svelte-check": "^3.8.6", "svelte-headless-table": "^0.18.2", - "svelte-meta-tags": "^3.1.2", + "svelte-meta-tags": "^3.1.4", "svelte-preprocess": "^6.0.2", "svelte-sequential-preprocessor": "^2.0.1", "sveltekit-flash-message": "^2.4.4", - "sveltekit-rate-limiter": "^0.5.1", - "sveltekit-superforms": "^2.16.0", - "tailwindcss": "^3.4.4", + "sveltekit-rate-limiter": "^0.5.2", + "sveltekit-superforms": "^2.17.0", + "tailwindcss": "^3.4.10", "ts-node": "^10.9.2", - "tslib": "^2.6.3", - "tsx": "^4.16.2", - "typescript": "^5.5.3", - "vite": "^5.3.3", + "tslib": "^2.7.0", + "tsx": "^4.19.0", + "typescript": "^5.5.4", + "vite": "^5.4.3", "vitest": "^1.6.0", "zod": "^3.23.8" }, "type": "module", - "engines": { - "node": ">=18.0.0 <19.0.0 || >=20.0.0 <21.0.0", - "pnpm": ">=8" - }, "dependencies": { - "@fontsource/fira-mono": "^5.0.13", + "@fontsource/fira-mono": "^5.0.14", + "@hono/swagger-ui": "^0.4.1", + "@hono/zod-openapi": "^0.15.3", + "@hono/zod-validator": "^0.2.2", "@iconify-icons/line-md": "^1.2.30", "@iconify-icons/mdi": "^1.2.48", - "@lucia-auth/adapter-drizzle": "^1.0.7", + "@internationalized/date": "^3.5.5", + "@lucia-auth/adapter-drizzle": "^1.1.0", "@lukeed/uuid": "^2.0.1", - "@neondatabase/serverless": "^0.9.4", + "@neondatabase/serverless": "^0.9.5", "@paralleldrive/cuid2": "^2.2.2", - "@sveltejs/adapter-vercel": "^5.4.1", + "@resvg/resvg-js": "^2.6.2", + "@sveltejs/adapter-node": "^5.2.2", + "@sveltejs/adapter-vercel": "^5.4.3", "@types/feather-icons": "^4.29.4", "@vercel/og": "^0.5.20", - "bits-ui": "^0.21.12", + "arctic": "^1.9.2", + "bits-ui": "^0.21.13", "boardgamegeekclient": "^1.9.1", + "bullmq": "^5.12.13", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "cookie": "^0.6.0", "dotenv": "^16.4.5", "dotenv-expand": "^11.0.6", - "drizzle-orm": "^0.32.0", + "drizzle-orm": "^0.32.2", + "drizzle-zod": "^0.5.1", "feather-icons": "^4.29.2", "formsnap": "^1.0.1", + "handlebars": "^4.7.8", + "hono": "^4.5.11", + "hono-rate-limiter": "^0.4.0", "html-entities": "^2.5.2", "iconify-icon": "^2.1.0", + "ioredis": "^5.4.1", "just-capitalize": "^3.2.0", "just-kebab-case": "^4.2.0", "loader": "^2.1.1", - "lucia": "3.2.0", - "lucide-svelte": "^0.408.0", - "open-props": "^1.7.5", + "open-props": "^1.7.6", "oslo": "^1.2.1", "pg": "^8.12.0", "postgres": "^3.4.4", - "qrcode": "^1.5.3", + "qrcode": "^1.5.4", "radix-svelte": "^0.9.0", + "rate-limit-redis": "^4.2.0", + "reflect-metadata": "^0.2.2", "svelte-french-toast": "^1.2.0", "svelte-lazy-loader": "^1.0.0", - "tailwind-merge": "^2.4.0", + "tailwind-merge": "^2.5.2", "tailwind-variants": "^0.2.1", "tailwindcss-animate": "^1.0.7", - "zod-to-json-schema": "^3.23.1" + "tsyringe": "^4.8.0", + "zod-to-json-schema": "^3.23.2" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 926718a..d6ffa34 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,41 +9,65 @@ importers: .: dependencies: '@fontsource/fira-mono': - specifier: ^5.0.13 - version: 5.0.13 + specifier: ^5.0.14 + version: 5.0.14 + '@hono/swagger-ui': + specifier: ^0.4.1 + version: 0.4.1(hono@4.5.11) + '@hono/zod-openapi': + specifier: ^0.15.3 + version: 0.15.3(hono@4.5.11)(zod@3.23.8) + '@hono/zod-validator': + specifier: ^0.2.2 + version: 0.2.2(hono@4.5.11)(zod@3.23.8) '@iconify-icons/line-md': specifier: ^1.2.30 version: 1.2.30 '@iconify-icons/mdi': specifier: ^1.2.48 version: 1.2.48 + '@internationalized/date': + specifier: ^3.5.5 + version: 3.5.5 '@lucia-auth/adapter-drizzle': - specifier: ^1.0.7 - version: 1.0.7(lucia@3.2.0) + specifier: ^1.1.0 + version: 1.1.0(drizzle-orm@0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4))(lucia@3.2.0) '@lukeed/uuid': specifier: ^2.0.1 version: 2.0.1 '@neondatabase/serverless': - specifier: ^0.9.4 - version: 0.9.4 + specifier: ^0.9.5 + version: 0.9.5 '@paralleldrive/cuid2': specifier: ^2.2.2 version: 2.2.2 + '@resvg/resvg-js': + specifier: ^2.6.2 + version: 2.6.2 + '@sveltejs/adapter-node': + specifier: ^5.2.2 + version: 5.2.2(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))) '@sveltejs/adapter-vercel': - specifier: ^5.4.1 - version: 5.4.1(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8))) + specifier: ^5.4.3 + version: 5.4.3(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))) '@types/feather-icons': specifier: ^4.29.4 version: 4.29.4 '@vercel/og': specifier: ^0.5.20 version: 0.5.20 + arctic: + specifier: ^1.9.2 + version: 1.9.2 bits-ui: - specifier: ^0.21.12 - version: 0.21.12(svelte@5.0.0-next.175) + specifier: ^0.21.13 + version: 0.21.13(svelte@5.0.0-next.175) boardgamegeekclient: specifier: ^1.9.1 version: 1.9.1 + bullmq: + specifier: ^5.12.13 + version: 5.12.13 class-variance-authority: specifier: ^0.7.0 version: 0.7.0 @@ -60,20 +84,35 @@ importers: specifier: ^11.0.6 version: 11.0.6 drizzle-orm: - specifier: ^0.32.0 - version: 0.32.0(@neondatabase/serverless@0.9.4)(@types/pg@8.11.6)(pg@8.12.0)(postgres@3.4.4) + specifier: ^0.32.2 + version: 0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4) + drizzle-zod: + specifier: ^0.5.1 + version: 0.5.1(drizzle-orm@0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4))(zod@3.23.8) feather-icons: specifier: ^4.29.2 version: 4.29.2 formsnap: specifier: ^1.0.1 - version: 1.0.1(svelte@5.0.0-next.175)(sveltekit-superforms@2.16.0(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)) + version: 1.0.1(svelte@5.0.0-next.175)(sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)) + handlebars: + specifier: ^4.7.8 + version: 4.7.8 + hono: + specifier: ^4.5.11 + version: 4.5.11 + hono-rate-limiter: + specifier: ^0.4.0 + version: 0.4.0(hono@4.5.11) html-entities: specifier: ^2.5.2 version: 2.5.2 iconify-icon: specifier: ^2.1.0 version: 2.1.0 + ioredis: + specifier: ^5.4.1 + version: 5.4.1 just-capitalize: specifier: ^3.2.0 version: 3.2.0 @@ -83,15 +122,9 @@ importers: loader: specifier: ^2.1.1 version: 2.1.1 - lucia: - specifier: 3.2.0 - version: 3.2.0 - lucide-svelte: - specifier: ^0.408.0 - version: 0.408.0(svelte@5.0.0-next.175) open-props: - specifier: ^1.7.5 - version: 1.7.5 + specifier: ^1.7.6 + version: 1.7.6 oslo: specifier: ^1.2.1 version: 1.2.1 @@ -102,11 +135,17 @@ importers: specifier: ^3.4.4 version: 3.4.4 qrcode: - specifier: ^1.5.3 - version: 1.5.3 + specifier: ^1.5.4 + version: 1.5.4 radix-svelte: specifier: ^0.9.0 version: 0.9.0(svelte@5.0.0-next.175) + rate-limit-redis: + specifier: ^4.2.0 + version: 4.2.0(express-rate-limit@7.3.1(express@4.19.2)) + reflect-metadata: + specifier: ^0.2.2 + version: 0.2.2 svelte-french-toast: specifier: ^1.2.0 version: 1.2.0(svelte@5.0.0-next.175) @@ -114,18 +153,27 @@ importers: specifier: ^1.0.0 version: 1.0.0 tailwind-merge: - specifier: ^2.4.0 - version: 2.4.0 + specifier: ^2.5.2 + version: 2.5.2 tailwind-variants: specifier: ^0.2.1 - version: 0.2.1(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))) + version: 0.2.1(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4))) tailwindcss-animate: specifier: ^1.0.7 - version: 1.0.7(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))) + version: 1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4))) + tsyringe: + specifier: ^4.8.0 + version: 4.8.0 zod-to-json-schema: - specifier: ^3.23.1 - version: 3.23.1(zod@3.23.8) + specifier: ^3.23.2 + version: 3.23.2(zod@3.23.8) devDependencies: + '@biomejs/biome': + specifier: 1.8.3 + version: 1.8.3 + '@faker-js/faker': + specifier: ^8.4.1 + version: 8.4.1 '@melt-ui/pp': specifier: ^0.3.2 version: 0.3.2(@melt-ui/svelte@0.83.0(svelte@5.0.0-next.175))(svelte@5.0.0-next.175) @@ -133,44 +181,41 @@ importers: specifier: ^0.83.0 version: 0.83.0(svelte@5.0.0-next.175) '@playwright/test': - specifier: ^1.45.1 - version: 1.45.1 - '@resvg/resvg-js': - specifier: ^2.6.2 - version: 2.6.2 + specifier: ^1.46.1 + version: 1.46.1 '@sveltejs/adapter-auto': - specifier: ^3.2.2 - version: 3.2.2(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8))) + specifier: ^3.2.4 + version: 3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))) '@sveltejs/enhanced-img': - specifier: ^0.3.0 - version: 0.3.0(rollup@4.18.1)(svelte@5.0.0-next.175) + specifier: ^0.3.4 + version: 0.3.4(rollup@4.18.1)(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) '@sveltejs/kit': - specifier: ^2.5.18 - version: 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + specifier: ^2.5.25 + version: 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) '@sveltejs/vite-plugin-svelte': - specifier: ^3.1.1 - version: 3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + specifier: ^3.1.2 + version: 3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) '@types/cookie': specifier: ^0.6.0 version: 0.6.0 '@types/node': - specifier: ^20.14.10 - version: 20.14.10 + specifier: ^20.16.3 + version: 20.16.3 '@types/pg': - specifier: ^8.11.6 - version: 8.11.6 + specifier: ^8.11.8 + version: 8.11.8 '@typescript-eslint/eslint-plugin': - specifier: ^7.16.0 - version: 7.16.0(@typescript-eslint/parser@7.16.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3) + specifier: ^7.18.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) '@typescript-eslint/parser': - specifier: ^7.16.0 - version: 7.16.0(eslint@8.57.0)(typescript@5.5.3) + specifier: ^7.18.0 + version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) autoprefixer: - specifier: ^10.4.19 - version: 10.4.19(postcss@8.4.39) + specifier: ^10.4.20 + version: 10.4.20(postcss@8.4.44) drizzle-kit: - specifier: ^0.23.0 - version: 0.23.0 + specifier: ^0.23.2 + version: 0.23.2 eslint: specifier: ^8.57.0 version: 8.57.0 @@ -178,32 +223,41 @@ importers: specifier: ^9.1.0 version: 9.1.0(eslint@8.57.0) eslint-plugin-svelte: - specifier: ^2.42.0 - version: 2.42.0(eslint@8.57.0)(svelte@5.0.0-next.175)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) + specifier: ^2.43.0 + version: 2.43.0(eslint@8.57.0)(svelte@5.0.0-next.175)(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)) just-clone: specifier: ^6.2.0 version: 6.2.0 just-debounce-it: specifier: ^3.2.0 version: 3.2.0 + lucia: + specifier: 3.2.0 + version: 3.2.0 + lucide-svelte: + specifier: ^0.408.0 + version: 0.408.0(svelte@5.0.0-next.175) + nodemailer: + specifier: ^6.9.15 + version: 6.9.15 postcss: - specifier: ^8.4.39 - version: 8.4.39 + specifier: ^8.4.44 + version: 8.4.44 postcss-import: specifier: ^16.1.0 - version: 16.1.0(postcss@8.4.39) + version: 16.1.0(postcss@8.4.44) postcss-load-config: specifier: ^5.1.0 - version: 5.1.0(jiti@1.21.6)(postcss@8.4.39)(tsx@4.16.2) + version: 5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0) postcss-preset-env: specifier: ^9.6.0 - version: 9.6.0(postcss@8.4.39) + version: 9.6.0(postcss@8.4.44) prettier: specifier: ^3.3.3 version: 3.3.3 prettier-plugin-svelte: - specifier: ^3.2.5 - version: 3.2.5(prettier@3.3.3)(svelte@5.0.0-next.175) + specifier: ^3.2.6 + version: 3.2.6(prettier@3.3.3)(svelte@5.0.0-next.175) sass: specifier: ^1.77.8 version: 1.77.8 @@ -217,50 +271,50 @@ importers: specifier: 5.0.0-next.175 version: 5.0.0-next.175 svelte-check: - specifier: ^3.8.4 - version: 3.8.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.39)(tsx@4.16.2))(postcss@8.4.39)(sass@1.77.8)(svelte@5.0.0-next.175) + specifier: ^3.8.6 + version: 3.8.6(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0))(postcss@8.4.44)(sass@1.77.8)(svelte@5.0.0-next.175) svelte-headless-table: specifier: ^0.18.2 version: 0.18.2(svelte@5.0.0-next.175) svelte-meta-tags: - specifier: ^3.1.2 - version: 3.1.2(svelte@5.0.0-next.175)(typescript@5.5.3) + specifier: ^3.1.4 + version: 3.1.4(svelte@5.0.0-next.175)(typescript@5.5.4) svelte-preprocess: specifier: ^6.0.2 - version: 6.0.2(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.39)(tsx@4.16.2))(postcss@8.4.39)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.3) + version: 6.0.2(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0))(postcss@8.4.44)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.4) svelte-sequential-preprocessor: specifier: ^2.0.1 version: 2.0.1 sveltekit-flash-message: specifier: ^2.4.4 - version: 2.4.4(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175) + version: 2.4.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175) sveltekit-rate-limiter: - specifier: ^0.5.1 - version: 0.5.1(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8))) + specifier: ^0.5.2 + version: 0.5.2(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))) sveltekit-superforms: - specifier: ^2.16.0 - version: 2.16.0(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175) + specifier: ^2.17.0 + version: 2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175) tailwindcss: - specifier: ^3.4.4 - version: 3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) + specifier: ^3.4.10 + version: 3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.14.10)(typescript@5.5.3) + version: 10.9.2(@types/node@20.16.3)(typescript@5.5.4) tslib: - specifier: ^2.6.3 - version: 2.6.3 + specifier: ^2.7.0 + version: 2.7.0 tsx: - specifier: ^4.16.2 - version: 4.16.2 + specifier: ^4.19.0 + version: 4.19.0 typescript: - specifier: ^5.5.3 - version: 5.5.3 + specifier: ^5.5.4 + version: 5.5.4 vite: - specifier: ^5.3.3 - version: 5.3.3(@types/node@20.14.10)(sass@1.77.8) + specifier: ^5.4.3 + version: 5.4.3(@types/node@20.16.3)(sass@1.77.8) vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.14.10)(sass@1.77.8) + version: 1.6.0(@types/node@20.16.3)(sass@1.77.8) zod: specifier: ^3.23.8 version: 3.23.8 @@ -275,16 +329,74 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@arktype/schema@0.1.13': - resolution: {integrity: sha512-qZjtCAKrnhsixDWsEGJtosWfi4bLpAg4OnnICVYTer/6v5hwlhsdYpYobTSJUc5eiBoI5Ai/kcNfYaQISshY2g==} + '@ark/schema@0.2.0': + resolution: {integrity: sha512-IkNWCSHdjaoemMXpps4uFHEAQzwJPbTAS8K2vcQpk90sa+eNBuPSVyB/81/Qyl1VYW0iX3ceGC5NL/OznQv1jg==} - '@arktype/util@0.0.48': - resolution: {integrity: sha512-U5FO5EUAJ4LoYtLSyAMmTf6CEVgslObfSQuua2zoK5Tv2FB3aESVQ3rdLfhuz+coRhlzlynbkmimyoQWwQT+aQ==} + '@ark/util@0.1.0': + resolution: {integrity: sha512-qCLYICQoCy3kEKDVwirQp8qvxhY7NJd8BhhoHaj1l3wCFAk9NUbcDsxAkPStZEMdPI/d7NcbGJe8SWZuRG2twQ==} + + '@asteasolutions/zod-to-openapi@7.1.1': + resolution: {integrity: sha512-lF0d1gAc0lYLO9/BAGivwTwE2Sh9h6CHuDcbk5KnGBfIuAsAkDC+Fdat4dkQY3CS/zUWKHRmFEma0B7X132Ymw==} + peerDependencies: + zod: ^3.20.2 '@babel/runtime@7.24.8': resolution: {integrity: sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==} engines: {node: '>=6.9.0'} + '@biomejs/biome@1.8.3': + resolution: {integrity: sha512-/uUV3MV+vyAczO+vKrPdOW0Iaet7UnJMU4bNMinggGJTAnBPjCoLEYcyYtYHNnUNYlv4xZMH6hVIQCAozq8d5w==} + engines: {node: '>=14.21.3'} + hasBin: true + + '@biomejs/cli-darwin-arm64@1.8.3': + resolution: {integrity: sha512-9DYOjclFpKrH/m1Oz75SSExR8VKvNSSsLnVIqdnKexj6NwmiMlKk94Wa1kZEdv6MCOHGHgyyoV57Cw8WzL5n3A==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + + '@biomejs/cli-darwin-x64@1.8.3': + resolution: {integrity: sha512-UeW44L/AtbmOF7KXLCoM+9PSgPo0IDcyEUfIoOXYeANaNXXf9mLUwV1GeF2OWjyic5zj6CnAJ9uzk2LT3v/wAw==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + + '@biomejs/cli-linux-arm64-musl@1.8.3': + resolution: {integrity: sha512-9yjUfOFN7wrYsXt/T/gEWfvVxKlnh3yBpnScw98IF+oOeCYb5/b/+K7YNqKROV2i1DlMjg9g/EcN9wvj+NkMuQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-arm64@1.8.3': + resolution: {integrity: sha512-fed2ji8s+I/m8upWpTJGanqiJ0rnlHOK3DdxsyVLZQ8ClY6qLuPc9uehCREBifRJLl/iJyQpHIRufLDeotsPtw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + + '@biomejs/cli-linux-x64-musl@1.8.3': + resolution: {integrity: sha512-UHrGJX7PrKMKzPGoEsooKC9jXJMa28TUSMjcIlbDnIO4EAavCoVmNQaIuUSH0Ls2mpGMwUIf+aZJv657zfWWjA==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-linux-x64@1.8.3': + resolution: {integrity: sha512-I8G2QmuE1teISyT8ie1HXsjFRz9L1m5n83U1O6m30Kw+kPMPSKjag6QGUn+sXT8V+XWIZxFFBoTDEDZW2KPDDw==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + + '@biomejs/cli-win32-arm64@1.8.3': + resolution: {integrity: sha512-J+Hu9WvrBevfy06eU1Na0lpc7uR9tibm9maHynLIoAjLZpQU3IW+OKHUtyL8p6/3pT2Ju5t5emReeIS2SAxhkQ==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + + '@biomejs/cli-win32-x64@1.8.3': + resolution: {integrity: sha512-/PJ59vA1pnQeKahemaQf4Nyj7IKUvGQSc3Ze1uIGi+Wvr1xF7rGobSrAAG01T/gUDG21vkDsZYM03NAmPiVkqg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -529,6 +641,9 @@ packages: peerDependencies: postcss: ^8.4 + '@drizzle-team/brocli@0.8.2': + resolution: {integrity: sha512-zTrFENsqGvOkBOuHDC1pXCkDXNd2UhP4lI3gYGhQ1R1SPeAAfqzPsV1dcpMy4uNU6kB5VpU5NGhvwxVNETR02A==} + '@emnapi/core@0.45.0': resolution: {integrity: sha512-DPWjcUDQkCeEM4VnljEOEcXdAD7pp8zSZsgOujk/LGIwCXWbXJngin+MO4zbH429lzeC3WbYLGjE2MaUOwzpyw==} @@ -1117,6 +1232,10 @@ packages: '@exodus/schemasafe@1.3.0': resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==} + '@faker-js/faker@8.4.1': + resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} + '@floating-ui/core@1.6.1': resolution: {integrity: sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==} @@ -1138,8 +1257,8 @@ packages: '@floating-ui/utils@0.2.4': resolution: {integrity: sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA==} - '@fontsource/fira-mono@5.0.13': - resolution: {integrity: sha512-fZDjR2BdAqmauEbTjcIT62zYzbOgDa5+IQH34D2k8Pxmy1T815mAqQkZciWZVQ9dc/BgdTtTUV9HJ2ulBNwchg==} + '@fontsource/fira-mono@5.0.14': + resolution: {integrity: sha512-4IKa+cuHipk/vr2frgZh4pyR2XcoQk/j3zmMlo8uuAGUB3IPLpQlgN6Qm5d3RfRZ7dXGlTn/PWiAJeU8bkmD4w==} '@gcornut/valibot-json-schema@0.31.0': resolution: {integrity: sha512-3xGptCurm23e7nuPQkdrE5rEs1FeTPHhAUsBuwwqG4/YeZLwJOoYZv+fmsppUEfo5y9lzUwNQrNqLS/q7HMc7g==} @@ -1151,6 +1270,24 @@ packages: '@hapi/topo@5.1.0': resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@hono/swagger-ui@0.4.1': + resolution: {integrity: sha512-kPaJatHffeYQ3yVkHo878hCqwfapqx54FczJVJ+eRWt8J4biyVVMIdCAJb6MyA8bcnHUoTmUpPc7OJAV1VTg2g==} + peerDependencies: + hono: '*' + + '@hono/zod-openapi@0.15.3': + resolution: {integrity: sha512-9oc4Bbs+L5oGjUOCrApCrx8BSWa5ctOBjRcwxplxkWPYFPhyOhdkMg47QKenGkESfFz0K6zb4F/c0LGPEmR62g==} + engines: {node: '>=16.0.0'} + peerDependencies: + hono: '>=4.3.6' + zod: 3.* + + '@hono/zod-validator@0.2.2': + resolution: {integrity: sha512-dSDxaPV70Py8wuIU2QNpoVEIOSzSXZ/6/B/h4xA7eOMz7+AarKTSGV8E6QwrdcCbBLkpqfJ4Q2TmBO0eP1tCBQ==} + peerDependencies: + hono: '>=3.9.0' + zod: ^3.19.1 + '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} @@ -1284,11 +1421,11 @@ packages: cpu: [x64] os: [win32] - '@internationalized/date@3.5.3': - resolution: {integrity: sha512-X9bi8NAEHAjD8yzmPYT2pdJsbe+tYSEBAfowtlxJVJdZR3aK8Vg7ZUT1Fm5M47KLzp/M1p1VwAaeSma3RT7biw==} + '@internationalized/date@3.5.5': + resolution: {integrity: sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ==} - '@internationalized/date@3.5.4': - resolution: {integrity: sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==} + '@ioredis/commands@1.2.0': + resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -1323,9 +1460,10 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@lucia-auth/adapter-drizzle@1.0.7': - resolution: {integrity: sha512-X/V7fLBca8EC/gPXCntwbQpb0+F9oEuRoHElvsi9rCrdnGhCMNxHgwAvgiQ6pes+rIYpyvx4n3hvjqo/fPo03A==} + '@lucia-auth/adapter-drizzle@1.1.0': + resolution: {integrity: sha512-iCTnZWvfI5lLZOdUHZYiXA1jaspIFEeo2extLxQ3DjP3uOVys7IPwBi7zezLIRu9dhro4H4Kji+7gSYyjcef2A==} peerDependencies: + drizzle-orm: '>= 0.29 <1' lucia: 3.x '@lukeed/csprng@1.1.0': @@ -1356,8 +1494,38 @@ packages: peerDependencies: svelte: ^3.0.0 || ^4.0.0 || ^5.0.0-next.118 - '@neondatabase/serverless@0.9.4': - resolution: {integrity: sha512-D0AXgJh6xkf+XTlsO7iwE2Q1w8981E1cLCPAALMU2YKtkF/1SF6BiAzYARZFYo175ON+b1RNIy9TdSFHm5nteg==} + '@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] + + '@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] + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + cpu: [x64] + os: [win32] + + '@neondatabase/serverless@0.9.5': + resolution: {integrity: sha512-siFas6gItqv6wD/pZnvdu34wEqgG3nSE6zWZdq5j2DEsa+VvX8i/5HXJOo06qrw5axPXn+lGCxeR+NLaSPIXug==} '@noble/hashes@1.4.0': resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} @@ -1556,8 +1724,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.45.1': - resolution: {integrity: sha512-Wo1bWTzQvGA7LyKGIZc8nFSTFf2TkthGIFBR+QVNilvwouGzFd4PYukZe3rvf5PSqjHi1+1NyKSDZKcQWETzaA==} + '@playwright/test@1.46.1': + resolution: {integrity: sha512-Fq6SwLujA/DOIvNC2EL/SojJnkKf/rAwJ//APpJJHRyMi1PdKrY3Az+4XNQ51N4RTbItbIByQ0jgd1tayq1aeA==} engines: {node: '>=18'} hasBin: true @@ -1648,6 +1816,33 @@ packages: resolution: {integrity: sha512-iDkBM6Ivex8nULtBu8cX670/lfsGxq8U1cuqE+qS9xFpPQP1enPdVm/33Kq3+B+bAldA+AHNZnCgpmlHo/fZrQ==} engines: {node: '>= 10'} + '@rollup/plugin-commonjs@26.0.1': + resolution: {integrity: sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-json@6.1.0': + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-node-resolve@15.2.3': + resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/pluginutils@4.2.1': resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} @@ -1661,19 +1856,14 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.17.2': - resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==} - cpu: [arm] - os: [android] - '@rollup/rollup-android-arm-eabi@4.18.1': resolution: {integrity: sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.17.2': - resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==} - cpu: [arm64] + '@rollup/rollup-android-arm-eabi@4.21.0': + resolution: {integrity: sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==} + cpu: [arm] os: [android] '@rollup/rollup-android-arm64@4.18.1': @@ -1681,19 +1871,19 @@ packages: cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.17.2': - resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==} + '@rollup/rollup-android-arm64@4.21.0': + resolution: {integrity: sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==} cpu: [arm64] - os: [darwin] + os: [android] '@rollup/rollup-darwin-arm64@4.18.1': resolution: {integrity: sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.17.2': - resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==} - cpu: [x64] + '@rollup/rollup-darwin-arm64@4.21.0': + resolution: {integrity: sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==} + cpu: [arm64] os: [darwin] '@rollup/rollup-darwin-x64@4.18.1': @@ -1701,18 +1891,18 @@ packages: cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.17.2': - resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==} - cpu: [arm] - os: [linux] + '@rollup/rollup-darwin-x64@4.21.0': + resolution: {integrity: sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==} + cpu: [x64] + os: [darwin] '@rollup/rollup-linux-arm-gnueabihf@4.18.1': resolution: {integrity: sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.17.2': - resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==} + '@rollup/rollup-linux-arm-gnueabihf@4.21.0': + resolution: {integrity: sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==} cpu: [arm] os: [linux] @@ -1721,9 +1911,9 @@ packages: cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.17.2': - resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==} - cpu: [arm64] + '@rollup/rollup-linux-arm-musleabihf@4.21.0': + resolution: {integrity: sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==} + cpu: [arm] os: [linux] '@rollup/rollup-linux-arm64-gnu@4.18.1': @@ -1731,8 +1921,8 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.17.2': - resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==} + '@rollup/rollup-linux-arm64-gnu@4.21.0': + resolution: {integrity: sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==} cpu: [arm64] os: [linux] @@ -1741,9 +1931,9 @@ packages: cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': - resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==} - cpu: [ppc64] + '@rollup/rollup-linux-arm64-musl@4.21.0': + resolution: {integrity: sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==} + cpu: [arm64] os: [linux] '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': @@ -1751,9 +1941,9 @@ packages: cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.17.2': - resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==} - cpu: [riscv64] + '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': + resolution: {integrity: sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==} + cpu: [ppc64] os: [linux] '@rollup/rollup-linux-riscv64-gnu@4.18.1': @@ -1761,9 +1951,9 @@ packages: cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.17.2': - resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==} - cpu: [s390x] + '@rollup/rollup-linux-riscv64-gnu@4.21.0': + resolution: {integrity: sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==} + cpu: [riscv64] os: [linux] '@rollup/rollup-linux-s390x-gnu@4.18.1': @@ -1771,9 +1961,9 @@ packages: cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.17.2': - resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==} - cpu: [x64] + '@rollup/rollup-linux-s390x-gnu@4.21.0': + resolution: {integrity: sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==} + cpu: [s390x] os: [linux] '@rollup/rollup-linux-x64-gnu@4.18.1': @@ -1781,8 +1971,8 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.17.2': - resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==} + '@rollup/rollup-linux-x64-gnu@4.21.0': + resolution: {integrity: sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==} cpu: [x64] os: [linux] @@ -1791,19 +1981,19 @@ packages: cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.17.2': - resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==} - cpu: [arm64] - os: [win32] + '@rollup/rollup-linux-x64-musl@4.21.0': + resolution: {integrity: sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==} + cpu: [x64] + os: [linux] '@rollup/rollup-win32-arm64-msvc@4.18.1': resolution: {integrity: sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.17.2': - resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==} - cpu: [ia32] + '@rollup/rollup-win32-arm64-msvc@4.21.0': + resolution: {integrity: sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==} + cpu: [arm64] os: [win32] '@rollup/rollup-win32-ia32-msvc@4.18.1': @@ -1811,9 +2001,9 @@ packages: cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.17.2': - resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==} - cpu: [x64] + '@rollup/rollup-win32-ia32-msvc@4.21.0': + resolution: {integrity: sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==} + cpu: [ia32] os: [win32] '@rollup/rollup-win32-x64-msvc@4.18.1': @@ -1821,6 +2011,11 @@ packages: cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.21.0': + resolution: {integrity: sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==} + cpu: [x64] + os: [win32] + '@shuding/opentype.js@1.4.0-beta.0': resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==} engines: {node: '>= 8.0.0'} @@ -1838,31 +2033,39 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@sinclair/typebox@0.32.34': - resolution: {integrity: sha512-a3Z3ytYl6R/+7ldxx04PO1semkwWlX/8pTqxsPw4quIcIXDFPZhOc1Wx8azWmkU26ccK3mHwcWenn0avNgAKQg==} + '@sinclair/typebox@0.32.35': + resolution: {integrity: sha512-Ul3YyOTU++to8cgNkttakC0dWvpERr6RYoHO2W47DLbFvrwBDJUY31B1sImH6JZSYc4Kt4PyHtoPNu+vL2r2dA==} '@sodaru/yup-to-json-schema@2.0.1': resolution: {integrity: sha512-lWb0Wiz8KZ9ip/dY1eUqt7fhTPmL24p6Hmv5Fd9pzlzAdw/YNcWZr+tiCT4oZ4Zyxzi9+1X4zv82o7jYvcFxYA==} - '@sveltejs/adapter-auto@3.2.2': - resolution: {integrity: sha512-Mso5xPCA8zgcKrv+QioVlqMZkyUQ5MjDJiEPuG/Z7cV/5tmwV7LmcVWk5tZ+H0NCOV1x12AsoSpt/CwFwuVXMA==} + '@sveltejs/adapter-auto@3.2.4': + resolution: {integrity: sha512-a64AKYbfTUrVwU0xslzv1Jf3M8bj0IwhptaXmhgIkjXspBXhD0od9JiItQHchijpLMGdEDcYBlvqySkEawv6mQ==} peerDependencies: '@sveltejs/kit': ^2.0.0 - '@sveltejs/adapter-vercel@5.4.1': - resolution: {integrity: sha512-JLcD1OgMnu9lQ8EssxVGxv7w0waWuyVzItTT1eqIH98Krufd9qfr1uC9zgo82z3dJ9v1AfPEbvIX5tonceg7XQ==} + '@sveltejs/adapter-node@5.2.2': + resolution: {integrity: sha512-BCX4zP0cf86TXpmvLQTnnT/tp7P12UMezf+5LwljP1MJC1fFzn9XOXpAHQCyP+pyHGy2K7p5gY0LyLcZFAL02w==} peerDependencies: '@sveltejs/kit': ^2.4.0 - '@sveltejs/enhanced-img@0.3.0': - resolution: {integrity: sha512-o8FdEUyJR/+LjUUl4sgB9QeM9rSGpOzTO6/CH0AmO/FgwWkcJdj/MwVNtr2F/AtaPgNfzvRpnExjklmuuDOtPA==} + '@sveltejs/adapter-vercel@5.4.3': + resolution: {integrity: sha512-srZBkMpeaa7lflO1ZGdKTW3jWHscE9rdAkyxgRlVMVyugjcPOZ3dcpEfpoM4wtVCbpEOdHniWqQR9yL+zs4ybA==} + peerDependencies: + '@sveltejs/kit': ^2.4.0 - '@sveltejs/kit@2.5.18': - resolution: {integrity: sha512-+g06hvpVAnH7b4CDjhnTDgFWBKBiQJpuSmQeGYOuzbO3SC3tdYjRNlDCrafvDtKbGiT2uxY5Dn9qdEUGVZdWOQ==} + '@sveltejs/enhanced-img@0.3.4': + resolution: {integrity: sha512-eX+ob5uWr0bTLMKeG9nhhM84aR88hqiLiyEfWZPX7ijhk/wlmYSUX9nOiaVHh2ct1U+Ju9Hhb90Copw+ZNOB8w==} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: '>= 5.0.0' + + '@sveltejs/kit@2.5.25': + resolution: {integrity: sha512-5hBSEN8XEjDZ5+2bHkFh8Z0QyOk0C187cyb12aANe1c8aeKbfu5ZD5XaC2vEH4h0alJFDXPdUkXQBmeeXeMr1A==} engines: {node: '>=18.13'} hasBin: true peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 + '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.3 @@ -1874,8 +2077,8 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 vite: ^5.0.0 - '@sveltejs/vite-plugin-svelte@3.1.1': - resolution: {integrity: sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==} + '@sveltejs/vite-plugin-svelte@3.1.2': + resolution: {integrity: sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==} engines: {node: ^18.0.0 || >=20} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.0 @@ -1911,20 +2114,26 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/node@20.14.10': - resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==} + '@types/node@20.16.3': + resolution: {integrity: sha512-/wdGiWRkMOm53gAsSyFMXFZHbVg7C6CbkrzHNpaHoYfsUWPg7m6ZRKtvQjgvQ9i8WT540a3ydRlRQbxjY30XxQ==} '@types/pg@8.11.6': resolution: {integrity: sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ==} + '@types/pg@8.11.8': + resolution: {integrity: sha512-IqpCf8/569txXN/HoP5i1LjXfKZWL76Yr2R77xgeIICUbAYHeoaEZFhYHo2uDftecLWrTJUq63JvQu8q3lnDyA==} + '@types/pug@2.0.10': resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + '@types/validator@13.12.0': resolution: {integrity: sha512-nH45Lk7oPIJ1RVOF6JgFI6Dy0QpHEzq4QecZhvguxYPDwT8c93prCMqAtiIttm39voZ+DDR+qkNnMpJmMBRqag==} - '@typescript-eslint/eslint-plugin@7.16.0': - resolution: {integrity: sha512-py1miT6iQpJcs1BiJjm54AMzeuMPBSPuKPlnT8HlfudbcS5rYeX5jajpLf3mrdRh9dA/Ec2FVUY0ifeVNDIhZw==} + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -1934,8 +2143,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.16.0': - resolution: {integrity: sha512-ar9E+k7CU8rWi2e5ErzQiC93KKEFAXA2Kky0scAlPcxYblLt8+XZuHUZwlyfXILyQa95P6lQg+eZgh/dDs3+Vw==} + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1944,12 +2153,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.16.0': - resolution: {integrity: sha512-8gVv3kW6n01Q6TrI1cmTZ9YMFi3ucDT7i7aI5lEikk2ebk1AEjrwX8MDTdaX5D7fPXMBLvnsaa0IFTAu+jcfOw==} + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.16.0': - resolution: {integrity: sha512-j0fuUswUjDHfqV/UdW6mLtOQQseORqfdmoBNDFOqs9rvNVR2e+cmu6zJu/Ku4SDuqiJko6YnhwcL8x45r8Oqxg==} + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1958,12 +2167,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@7.16.0': - resolution: {integrity: sha512-fecuH15Y+TzlUutvUl9Cc2XJxqdLr7+93SQIbcZfd4XRGGKoxyljK27b+kxKamjRkU7FYC6RrbSCg0ALcZn/xw==} + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@7.16.0': - resolution: {integrity: sha512-a5NTvk51ZndFuOLCh5OaJBELYc2O3Zqxfl3Js78VFE1zE46J2AaVuW+rEbVkQznjkmlzWsUI15BG5tQMixzZLw==} + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -1971,14 +2180,14 @@ packages: typescript: optional: true - '@typescript-eslint/utils@7.16.0': - resolution: {integrity: sha512-PqP4kP3hb4r7Jav+NiRCntlVzhxBNWq6ZQ+zQwII1y/G/1gdIPeYDCKr2+dH6049yJQsWZiHU6RlwvIFBXXGNA==} + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@7.16.0': - resolution: {integrity: sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg==} + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} '@ungap/structured-clone@1.2.0': @@ -2019,6 +2228,10 @@ packages: abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + acorn-import-attributes@1.9.5: resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: @@ -2085,6 +2298,9 @@ packages: aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + arctic@1.9.2: + resolution: {integrity: sha512-VTnGpYx+ypboJdNrWnK17WeD7zN/xSCHnpecd5QYsBfVZde/5i+7DJ1wrf/ioSDMiEjagXmyNWAE3V2C9f1hNg==} + are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} @@ -2102,8 +2318,11 @@ packages: aria-query@5.3.0: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - arktype@2.0.0-dev.21: - resolution: {integrity: sha512-dgHCjb3FK4BGvG2LuXqgdWXstbFmiYowSy0jiKnyk4KVcMT5DyIJ9d1nbQM3ztiAL3hIPmPdkmpfxUqR+BoOBQ==} + arktype@2.0.0-beta.0: + resolution: {integrity: sha512-fE3ssMiXjr/bLqFPzlDhRlXngdyHQreu7p7i8+dtcY1CA+f8WrVUcue6JxywhnqEJXPG4HOcIwQcC+q4VfeUMQ==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} @@ -2115,8 +2334,8 @@ packages: async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - autoprefixer@10.4.19: - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} + autoprefixer@10.4.20: + resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -2139,8 +2358,8 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - bits-ui@0.21.12: - resolution: {integrity: sha512-Cf0iB+ZKwA0ZjkpixrhrZK9PC6pGPFleW/65Xc/z0lpGvWaFtdOhiYEntCHHxZ0VihP3aJaG0OBhUBIbmAePaA==} + bits-ui@0.21.13: + resolution: {integrity: sha512-7nmOh6Ig7ND4DXZHv1FhNsY9yUGrad0+mf3tc4YN//3MgnJT1LnHtk4HZAKgmxCOe7txSX7/39LtYHbkrXokAQ==} peerDependencies: svelte: ^4.0.0 || ^5.0.0-next.118 @@ -2148,6 +2367,10 @@ packages: resolution: {integrity: sha512-sSL27GGYHBp7PEt/j3NyrCpkMWgtu0I0VxYveveU5l5POnBhlSlyESy3rJe/qvHXx55DSE3VuDNeDzHHuIjLHA==} engines: {node: '>=10'} + body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -2162,13 +2385,13 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + browserslist@4.23.1: + resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - browserslist@4.23.1: - resolution: {integrity: sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==} + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2178,10 +2401,25 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + bullmq@5.12.13: + resolution: {integrity: sha512-bFk0s1U9eQ8vKrhH9zYg/1H0+puSLVXuuq/pIW2jxgUmtLebRUBZr0cHJx35azTf2oPUJ+xXfpfHWaUtm4ZveA==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2201,12 +2439,12 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001616: - resolution: {integrity: sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==} - caniuse-lite@1.0.30001640: resolution: {integrity: sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==} + caniuse-lite@1.0.30001649: + resolution: {integrity: sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ==} + chai@4.4.1: resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} @@ -2243,6 +2481,10 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + cluster-key-slot@1.1.2: + resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} + engines: {node: '>=0.10.0'} + code-red@1.0.4: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} @@ -2268,6 +2510,9 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -2277,6 +2522,17 @@ packages: console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} @@ -2287,6 +2543,10 @@ packages: 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.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -2337,6 +2597,14 @@ packages: dayjs@1.11.11: resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -2355,6 +2623,15 @@ packages: supports-color: optional: true + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} @@ -2370,13 +2647,29 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + 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'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -2421,12 +2714,12 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - drizzle-kit@0.23.0: - resolution: {integrity: sha512-w9jE97z193dd4jzAyj4Uv2SOh8Ydue70Ki6W0awy4bGM1aPXan6zD6Yv+nNTA6oGgNTDl2MJFxutjHG4fden5g==} + drizzle-kit@0.23.2: + resolution: {integrity: sha512-NWkQ7GD2OTbQ7HzcjsaCOf3n0tlFPSEAF38fvDpwDj8jRbGWGFtN2cD8I8wp4lU+5Os/oyP2xycTKGLHdPipUw==} hasBin: true - drizzle-orm@0.32.0: - resolution: {integrity: sha512-99IlfVGPNHzOFEXo9Phyu5At5TALLsY2t6WxFFy68rYd9Ej4cHX/7WjdPOn7JNRW69MNeNtP8XrDQg43SppuAA==} + drizzle-orm@0.32.2: + resolution: {integrity: sha512-3fXKzPzrgZIcnWCSLiERKN5Opf9Iagrag75snfFlKeKSYB1nlgPBshzW3Zn6dQymkyiib+xc4nIz0t8U+Xdpuw==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=3' @@ -2514,15 +2807,24 @@ packages: sqlite3: optional: true + drizzle-zod@0.5.1: + resolution: {integrity: sha512-C/8bvzUH/zSnVfwdSibOgFjLhtDtbKYmkbPbUCq46QZyZCH6kODIMSOgZ8R7rVjoI+tCj3k06MRJMDqsIeoS4A==} + peerDependencies: + drizzle-orm: '>=0.23.13' + zod: '*' + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.4.758: - resolution: {integrity: sha512-/o9x6TCdrYZBMdGeTifAP3wlF/gVT+TtWJe3BSmtNh92Mw81U9hrYwW9OAGUh+sEOX/yz5e34sksqRruZbjYrw==} + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} electron-to-chromium@1.4.818: resolution: {integrity: sha512-eGvIk2V0dGImV9gWLq8fDfTTsCAeMDwZqEPMr+jMInxZdnp9Us8UpovYpRCf9NQ7VOFgrN2doNSgvISbsbNpxA==} + electron-to-chromium@1.5.4: + resolution: {integrity: sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==} + emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} @@ -2532,8 +2834,17 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - encode-utf8@1.0.3: - resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} @@ -2592,12 +2903,12 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-plugin-svelte@2.42.0: - resolution: {integrity: sha512-mHP6z0DWq97KZvoQcApZHdF9m9epcDV/ICKufeEH18Vh+8vl7S+gwt8WdUohEqKNVMuXRkbvy1suMcVvUDiOGw==} + eslint-plugin-svelte@2.43.0: + resolution: {integrity: sha512-REkxQWvg2pp7QVLxQNa+dJ97xUqRe7Y2JJbSWkHSuszu0VcblZtXkPBPckkivk99y5CdLw4slqfPylL2d/X4jQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.181 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.191 peerDependenciesMeta: svelte: optional: true @@ -2647,10 +2958,24 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} + express-rate-limit@7.3.1: + resolution: {integrity: sha512-BbaryvkY4wEgDqLgD18/NSy2lDO2jTuT9Y8c1Mpx0X63Yz0sYd5zN6KPe7UvpuSVvV33T6RaE1o1IVZQjHMYgw==} + engines: {node: '>= 16'} + peerDependencies: + express: 4 || 5 || ^5.0.0-beta.1 + + express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2692,6 +3017,10 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -2720,9 +3049,17 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.1 sveltekit-superforms: ^2.3.0 + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} @@ -2758,6 +3095,10 @@ packages: get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -2795,16 +3136,35 @@ packages: globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} @@ -2816,9 +3176,22 @@ packages: resolution: {integrity: sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==} engines: {node: '>=6'} + hono-rate-limiter@0.4.0: + resolution: {integrity: sha512-7RWU2HZvxPtfBrvjXKDiQ3F6ZH8k49JhxVkHquUz5UZKjauj5PrP29MvISykThtfpy4mGG6kqxFBHW1ed9wwnA==} + peerDependencies: + hono: ^4.1.1 + + hono@4.5.11: + resolution: {integrity: sha512-62FcjLPtjAFwISVBUshryl+vbHOjg8rE4uIK/dxyR8GpLztunZpwFmfEvmJCUI7xoGh/Sr3CGCDPCmYxVw7wUQ==} + engines: {node: '>=16.0.0'} + html-entities@2.5.2: resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -2830,6 +3203,10 @@ packages: iconify-icon@2.1.0: resolution: {integrity: sha512-lto4XU3bwTQnb+D/CsJ4dWAo0aDe+uPMxEtxyOodw9l7R9QnJUUab3GCehlw2M8mDHdeUu/ufx8PvRQiJphhXg==} + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -2858,6 +3235,14 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ioredis@5.4.1: + resolution: {integrity: sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==} + engines: {node: '>=12.22.0'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} @@ -2865,6 +3250,10 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} @@ -2880,6 +3269,9 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2888,6 +3280,9 @@ packages: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} @@ -3003,6 +3398,12 @@ packages: lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + 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==} @@ -3021,6 +3422,10 @@ packages: peerDependencies: svelte: ^3 || ^4 || ^5.0.0-next.42 + luxon@3.4.4: + resolution: {integrity: sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==} + engines: {node: '>=12'} + magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} @@ -3034,6 +3439,10 @@ packages: mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + memfs-browser@3.5.10302: resolution: {integrity: sha512-JJTc/nh3ig05O0gBBGZjTCPOyydaTxNF0uHYBrcc1gHNnO+KIHIvo0Y1FKCJsaei6FCl8C6xfQomXqu+cuzkIw==} @@ -3044,6 +3453,9 @@ packages: memoize-weak@1.0.2: resolution: {integrity: sha512-gj39xkrjEw7nCn4nJ1M5ms6+MyMlyiGmttzsqAUsAKn6bYKwuTHh/AO3cKPF8IBrTIYTxb0wWXFs3E//Y8VoWQ==} + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -3055,6 +3467,10 @@ packages: resolution: {integrity: sha512-D4rT6XIYGqZab0EI/xbihUpwh0WbNRVQ35l2J/5QC2atxaI8h3KvA55DEJLBB/FRdaji7JwkNehfCRjCyjCjqw==} engines: {node: '>=6.0.0'} + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -3063,6 +3479,19 @@ packages: resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -3121,9 +3550,22 @@ packages: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true + + msgpackr@1.11.0: + resolution: {integrity: sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==} + mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -3140,6 +3582,16 @@ 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'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -3149,6 +3601,10 @@ packages: encoding: optional: true + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true + node-gyp-build@4.8.1: resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} hasBin: true @@ -3156,6 +3612,13 @@ packages: node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + nodemailer@6.9.15: + resolution: {integrity: sha512-AHf04ySLC6CIfuRtRiEYtGEXgRfa6INgWGluDhnxTZhHSKvrBu7lc1VVchQ0d8nPc4cFaZoPq8vkyNoZr0TpGQ==} + engines: {node: '>=6.0.0'} + nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -3189,9 +3652,17 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -3199,8 +3670,11 @@ packages: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} - open-props@1.7.5: - resolution: {integrity: sha512-DajjLQDJgIa0i+QdB2q5M8lNLo2ICk+DbDh4TsqNsT1tAO8Zm8F7dndSkLMQkobT98lbvDMMpJWO8NT0ibjrjA==} + open-props@1.7.6: + resolution: {integrity: sha512-fE3E22x8lCf6gJrPO3L54NKrPaqQGxeKoXLz4JIXrhALD3Ua1kkE2kMw8HmlTKYF9BSLLMfoVfsT3UC1PJcaww==} + + openapi3-ts@4.3.3: + resolution: {integrity: sha512-LKkzBGJcZ6wdvkKGMoSvpK+0cbN5Xc3XuYkJskO+vjEQWJgs1kgtyUk0pjf8KwPuysv323Er62F5P17XQl96Qg==} optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} @@ -3246,6 +3720,10 @@ packages: parse-css-color@0.2.1: resolution: {integrity: sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==} + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -3269,6 +3747,9 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -3345,13 +3826,13 @@ packages: pkg-types@1.1.0: resolution: {integrity: sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==} - playwright-core@1.45.1: - resolution: {integrity: sha512-LF4CUUtrUu2TCpDw4mcrAIuYrEjVDfT1cHbJMfwnE2+1b8PZcFzPNgvZCvq2JfQ4aTjRCCHw5EJ2tmr2NSzdPg==} + playwright-core@1.46.1: + resolution: {integrity: sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==} engines: {node: '>=18'} hasBin: true - playwright@1.45.1: - resolution: {integrity: sha512-Hjrgae4kpSQBr98nhCj3IScxVeVUixqj+5oyif8TdIn2opTCPEzqAqNMeK42i3cWDCVu9MI+ZsGWw+gVR4ISBg==} + playwright@1.46.1: + resolution: {integrity: sha512-oPcr1yqoXLCkgKtD5eNUPLiN40rYEM39odNpIb6VE6S7/15gJmA1NzVv6zJYusV0e7tzvkU/utBFNa/Kpxmwng==} engines: {node: '>=18'} hasBin: true @@ -3598,8 +4079,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.39: - resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} + postcss@8.4.44: + resolution: {integrity: sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==} engines: {node: ^10 || ^12 || >=14} postgres-array@2.0.0: @@ -3645,8 +4126,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-plugin-svelte@3.2.5: - resolution: {integrity: sha512-vP/M/Goc8z4iVIvrwXwbrYVjJgA0Hf8PO1G4LBh/ocSt6vUP6sLvyu9F3ABEGr+dbKyxZjEKLkeFsWy/yYl0HQ==} + prettier-plugin-svelte@3.2.6: + resolution: {integrity: sha512-Y1XWLw7vXUQQZmgv1JAEiLcErqUniAF2wO7QJsw8BVMvpLET2dI5WpEIEJx1r11iHVdSMzQxivyfrH9On9t2IQ==} peerDependencies: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 @@ -3663,15 +4144,23 @@ packages: property-expr@2.0.6: resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qrcode@1.5.3: - resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + qrcode@1.5.4: + resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} engines: {node: '>=10.13.0'} hasBin: true + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -3681,6 +4170,20 @@ packages: peerDependencies: svelte: ^4.1.1 + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + rate-limit-redis@4.2.0: + resolution: {integrity: sha512-wV450NQyKC24NmPosJb2131RoczLdfIJdKCReNwtVpm5998U8SgKrAZrIHaN/NfQgqOHaan8Uq++B4sa5REwjA==} + engines: {node: '>= 16'} + peerDependencies: + express-rate-limit: '>= 6' + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} @@ -3695,9 +4198,20 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.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.1.14: resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -3735,13 +4249,13 @@ packages: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true - rollup@4.17.2: - resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==} + rollup@4.18.1: + resolution: {integrity: sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rollup@4.18.1: - resolution: {integrity: sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==} + rollup@4.21.0: + resolution: {integrity: sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3755,6 +4269,9 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sander@0.5.1: resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} @@ -3788,12 +4305,32 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + sharp@0.33.4: resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==} engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -3806,6 +4343,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -3849,6 +4390,13 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + standard-as-callback@2.1.0: + resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} @@ -3909,17 +4457,17 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte-check@3.8.4: - resolution: {integrity: sha512-61aHMkdinWyH8BkkTX9jPLYxYzaAAz/FK/VQqdr2FiCQQ/q04WCwDlpGbHff1GdrMYTmW8chlTFvRWL9k0A8vg==} + svelte-check@3.8.6: + resolution: {integrity: sha512-ij0u4Lw/sOTREP13BdWZjiXD/BlHE6/e2e34XzmVmsp5IN4kVa3PWP65NM32JAgwjZlwBg/+JtiNV1MM8khu0Q==} hasBin: true peerDependencies: svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 - svelte-eslint-parser@0.40.0: - resolution: {integrity: sha512-M+v1HhC5T1WKYVxWexUCS4o6oIBS88XKzOZuhl2ew+eGxol7eC21e+VE8TC4rXJ3iT3iXT0qlZsZcpKjVo5/zQ==} + svelte-eslint-parser@0.41.0: + resolution: {integrity: sha512-L6f4hOL+AbgfBIB52Z310pg1d2QjRqm7wy3kI1W6hhdhX5bvu7+f0R6w4ykp5HoDdzq+vGhIJmsisaiJDGmVfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.181 + svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.191 peerDependenciesMeta: svelte: optional: true @@ -3948,8 +4496,8 @@ packages: svelte-lazy-loader@1.0.0: resolution: {integrity: sha512-AZD6R60vksyojn21FgXLglmBiBB9K5Dkdu0hdGrLbCaRCYT68IsWkZfRUqKhMx1IfzqWcZQ8X9y/f+Ih0oNQkQ==} - svelte-meta-tags@3.1.2: - resolution: {integrity: sha512-zw8xSA10ce7atFO1o0N1x41+qU+HBnpGx8KcVRAWPy5iiRdO6fvUFMg6VwJVgMhLSBEUTZXKAvMALLUssbCoCw==} + svelte-meta-tags@3.1.4: + resolution: {integrity: sha512-TUIfhut0iVeTm7f5v/ZuU/tZ9XsNig9bNN8yK0t2x2WL9qw6AxAVRe9i5XddYJE0SuVwkoDCzjoSg5hXv7oWbQ==} peerDependencies: svelte: ^3.55.0 || ^4.0.0 @@ -4065,13 +4613,13 @@ packages: '@sveltejs/kit': 1.x || 2.x svelte: 3.x || 4.x || >=5.0.0-next.51 - sveltekit-rate-limiter@0.5.1: - resolution: {integrity: sha512-Q2C7mT9PdoL6v3VXgxngyXiEg2i3Dp0iVjVvKi722lroTM7oHxAJsmj66607BiSw8mdQk1Me6nhE6uRXrkDVIg==} + sveltekit-rate-limiter@0.5.2: + resolution: {integrity: sha512-7CELKmTffNjj0i/RUxT9SKYFA9IO/tQabjgT39clOlkKvlcGozNy8nqoIx+24amWfqEqC/WXYMEIek04PiFdyA==} peerDependencies: '@sveltejs/kit': 1.x || 2.x - sveltekit-superforms@2.16.0: - resolution: {integrity: sha512-t5aZyMCXyahgvn7VAJ7l9S+wAv9YyMAZHYQ6gcGVZ6ecr4/DMMD2r3ajGCj1h1dWaMQ3w5zVw+SqHSAkbHsWVQ==} + sveltekit-superforms@2.17.0: + resolution: {integrity: sha512-QrX8pkcmE0XoeVU42zMhsah4FoDrgtPc/4cZEr38rDlgU+DE0xNc5J0E7z1456sUJNbFjaB0+HZwwAkX0vYqaA==} peerDependencies: '@sveltejs/kit': 1.x || 2.x svelte: 3.x || 4.x || >=5.0.0-next.51 @@ -4079,8 +4627,8 @@ packages: tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - tailwind-merge@2.4.0: - resolution: {integrity: sha512-49AwoOQNKdqKPd9CViyH5wJoSKsCDjUlzL8DxuGp3P1FsGY36NJDAa18jLZcaHAUUuTj+JB8IAo8zWgBNvBF7A==} + tailwind-merge@2.5.2: + resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} tailwind-variants@0.2.1: resolution: {integrity: sha512-2xmhAf4UIc3PijOUcJPA1LP4AbxhpcHuHM2C26xM0k81r0maAO6uoUSHl3APmvHZcY5cZCY/bYuJdfFa4eGoaw==} @@ -4093,8 +4641,8 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders' - tailwindcss@3.4.4: - resolution: {integrity: sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==} + tailwindcss@3.4.10: + resolution: {integrity: sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==} engines: {node: '>=14.0.0'} hasBin: true @@ -4136,6 +4684,10 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + toposort@2.0.2: resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} @@ -4155,8 +4707,8 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-deepmerge@7.0.0: - resolution: {integrity: sha512-WZ/iAJrKDhdINv1WG6KZIGHrZDar6VfhftG1QJFpVbOYZMYJLJOvZOo1amictRXVdBXZIgBHKswMTXzElngprA==} + ts-deepmerge@7.0.1: + resolution: {integrity: sha512-JBFCmNenZdUCc+TRNCtXVM6N8y/nDQHAcpj5BlwXG/gnogjam1NunulB9ia68mnqYI446giMfpqeBFFkOleh+g==} engines: {node: '>=14.13.1'} ts-interface-checker@0.1.13: @@ -4176,17 +4728,27 @@ packages: '@swc/wasm': optional: true + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - tsx@4.16.2: - resolution: {integrity: sha512-C1uWweJDgdtX2x600HjaFaucXTilT7tgUZHbOE4+ypskZ1OP8CRCSDkCxG6Vya9EwaFIVagWwpaVAn5wzypaqQ==} + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + tsx@4.19.0: + resolution: {integrity: sha512-bV30kM7bsLZKZIOCHeMNVMJ32/LuJzLVajkQI/qf92J2Qr08ueLQvW00PUZGiuLPP760UINwupgUj8qrSCPUKg==} engines: {node: '>=18.0.0'} hasBin: true + tsyringe@4.8.0: + resolution: {integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==} + engines: {node: '>= 6.0.0'} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -4203,19 +4765,28 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - typescript@5.5.3: - resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} engines: {node: '>=14.17'} hasBin: true ufo@1.5.3: resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} + uglify-js@3.19.1: + resolution: {integrity: sha512-y/2wiW+ceTYR2TSSptAhfnEtpLaQ4Ups5zrjB2d3kuVxHj16j/QJwPl5PvuGy9uARb39J0+iKxcRPvtpsx4A4A==} + engines: {node: '>=0.8.0'} + hasBin: true + ultrahtml@1.5.3: resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.19.6: + resolution: {integrity: sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==} unfetch@4.2.0: resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} @@ -4223,11 +4794,9 @@ packages: unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} - update-browserslist-db@1.0.15: - resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} update-browserslist-db@1.1.0: resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} @@ -4241,6 +4810,14 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -4254,6 +4831,10 @@ packages: resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} engines: {node: '>= 0.10'} + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + vite-imagetools@7.0.2: resolution: {integrity: sha512-sA98fIhfIqPdt5qKAMMrQtBzdqK44dlmv4jEUlJMmn4GzR8CdXjKGiyU/GKUFxjReuPi0fK/dd0JhiZixZt06A==} engines: {node: '>=18.0.0'} @@ -4263,8 +4844,8 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite@5.3.3: - resolution: {integrity: sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==} + vite@5.4.3: + resolution: {integrity: sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -4272,6 +4853,7 @@ packages: less: '*' lightningcss: ^1.21.0 sass: '*' + sass-embedded: '*' stylus: '*' sugarss: '*' terser: ^5.4.0 @@ -4284,6 +4866,8 @@ packages: optional: true sass: optional: true + sass-embedded: + optional: true stylus: optional: true sugarss: @@ -4350,6 +4934,9 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -4389,6 +4976,11 @@ packages: engines: {node: '>= 14'} hasBin: true + yaml@2.5.0: + resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} + engines: {node: '>= 14'} + hasBin: true + yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -4418,8 +5010,8 @@ packages: zimmerframe@1.1.2: resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} - zod-to-json-schema@3.23.1: - resolution: {integrity: sha512-oT9INvydob1XV0v1d2IadrR74rLtDInLvDFfAa1CG0Pmg/vxATk7I2gSelfj271mbzeM4Da0uuDQE/Nkj3DWNw==} + zod-to-json-schema@3.23.2: + resolution: {integrity: sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==} peerDependencies: zod: ^3.23.3 @@ -4435,19 +5027,59 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@arktype/schema@0.1.13': + '@ark/schema@0.2.0': dependencies: - '@arktype/util': 0.0.48 + '@ark/util': 0.1.0 optional: true - '@arktype/util@0.0.48': + '@ark/util@0.1.0': optional: true + '@asteasolutions/zod-to-openapi@7.1.1(zod@3.23.8)': + dependencies: + openapi3-ts: 4.3.3 + zod: 3.23.8 + '@babel/runtime@7.24.8': dependencies: regenerator-runtime: 0.14.1 optional: true + '@biomejs/biome@1.8.3': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.8.3 + '@biomejs/cli-darwin-x64': 1.8.3 + '@biomejs/cli-linux-arm64': 1.8.3 + '@biomejs/cli-linux-arm64-musl': 1.8.3 + '@biomejs/cli-linux-x64': 1.8.3 + '@biomejs/cli-linux-x64-musl': 1.8.3 + '@biomejs/cli-win32-arm64': 1.8.3 + '@biomejs/cli-win32-x64': 1.8.3 + + '@biomejs/cli-darwin-arm64@1.8.3': + optional: true + + '@biomejs/cli-darwin-x64@1.8.3': + optional: true + + '@biomejs/cli-linux-arm64-musl@1.8.3': + optional: true + + '@biomejs/cli-linux-arm64@1.8.3': + optional: true + + '@biomejs/cli-linux-x64-musl@1.8.3': + optional: true + + '@biomejs/cli-linux-x64@1.8.3': + optional: true + + '@biomejs/cli-win32-arm64@1.8.3': + optional: true + + '@biomejs/cli-win32-x64@1.8.3': + optional: true + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 @@ -4482,201 +5114,201 @@ snapshots: '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-cascade-layers@4.0.6(postcss@8.4.39)': + '@csstools/postcss-cascade-layers@4.0.6(postcss@8.4.44)': dependencies: '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0) - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.1.0 - '@csstools/postcss-color-function@3.0.19(postcss@8.4.39)': + '@csstools/postcss-color-function@3.0.19(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.39) - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-color-mix-function@2.0.19(postcss@8.4.39)': + '@csstools/postcss-color-mix-function@2.0.19(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.39) - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-content-alt-text@1.0.0(postcss@8.4.39)': + '@csstools/postcss-content-alt-text@1.0.0(postcss@8.4.44)': dependencies: '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.39) - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-exponential-functions@1.0.9(postcss@8.4.39)': + '@csstools/postcss-exponential-functions@1.0.9(postcss@8.4.44)': dependencies: '@csstools/css-calc': 1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - postcss: 8.4.39 + postcss: 8.4.44 - '@csstools/postcss-font-format-keywords@3.0.2(postcss@8.4.39)': + '@csstools/postcss-font-format-keywords@3.0.2(postcss@8.4.44)': dependencies: - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-gamut-mapping@1.0.11(postcss@8.4.39)': + '@csstools/postcss-gamut-mapping@1.0.11(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - postcss: 8.4.39 + postcss: 8.4.44 - '@csstools/postcss-gradients-interpolation-method@4.0.20(postcss@8.4.39)': + '@csstools/postcss-gradients-interpolation-method@4.0.20(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.39) - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-hwb-function@3.0.18(postcss@8.4.39)': + '@csstools/postcss-hwb-function@3.0.18(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.39) - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-ic-unit@3.0.7(postcss@8.4.39)': + '@csstools/postcss-ic-unit@3.0.7(postcss@8.4.44)': dependencies: - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.39) - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-initial@1.0.1(postcss@8.4.39)': + '@csstools/postcss-initial@1.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.39 + postcss: 8.4.44 - '@csstools/postcss-is-pseudo-class@4.0.8(postcss@8.4.39)': + '@csstools/postcss-is-pseudo-class@4.0.8(postcss@8.4.44)': dependencies: '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0) - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.1.0 - '@csstools/postcss-light-dark-function@1.0.8(postcss@8.4.39)': + '@csstools/postcss-light-dark-function@1.0.8(postcss@8.4.44)': dependencies: '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.39) - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-logical-float-and-clear@2.0.1(postcss@8.4.39)': + '@csstools/postcss-logical-float-and-clear@2.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.39 + postcss: 8.4.44 - '@csstools/postcss-logical-overflow@1.0.1(postcss@8.4.39)': + '@csstools/postcss-logical-overflow@1.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.39 + postcss: 8.4.44 - '@csstools/postcss-logical-overscroll-behavior@1.0.1(postcss@8.4.39)': + '@csstools/postcss-logical-overscroll-behavior@1.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.39 + postcss: 8.4.44 - '@csstools/postcss-logical-resize@2.0.1(postcss@8.4.39)': + '@csstools/postcss-logical-resize@2.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-logical-viewport-units@2.0.11(postcss@8.4.39)': + '@csstools/postcss-logical-viewport-units@2.0.11(postcss@8.4.44)': dependencies: '@csstools/css-tokenizer': 2.4.1 - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-media-minmax@1.1.8(postcss@8.4.39)': + '@csstools/postcss-media-minmax@1.1.8(postcss@8.4.44)': dependencies: '@csstools/css-calc': 1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) - postcss: 8.4.39 + postcss: 8.4.44 - '@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.11(postcss@8.4.39)': + '@csstools/postcss-media-queries-aspect-ratio-number-values@2.0.11(postcss@8.4.44)': dependencies: '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) - postcss: 8.4.39 + postcss: 8.4.44 - '@csstools/postcss-nested-calc@3.0.2(postcss@8.4.39)': + '@csstools/postcss-nested-calc@3.0.2(postcss@8.4.44)': dependencies: - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-normalize-display-values@3.0.2(postcss@8.4.39)': + '@csstools/postcss-normalize-display-values@3.0.2(postcss@8.4.44)': dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-oklab-function@3.0.19(postcss@8.4.39)': + '@csstools/postcss-oklab-function@3.0.19(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.39) - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-progressive-custom-properties@3.3.0(postcss@8.4.39)': + '@csstools/postcss-progressive-custom-properties@3.3.0(postcss@8.4.44)': dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-relative-color-syntax@2.0.19(postcss@8.4.39)': + '@csstools/postcss-relative-color-syntax@2.0.19(postcss@8.4.44)': dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.39) - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - '@csstools/postcss-scope-pseudo-class@3.0.1(postcss@8.4.39)': + '@csstools/postcss-scope-pseudo-class@3.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 - '@csstools/postcss-stepped-value-functions@3.0.10(postcss@8.4.39)': + '@csstools/postcss-stepped-value-functions@3.0.10(postcss@8.4.44)': dependencies: '@csstools/css-calc': 1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - postcss: 8.4.39 + postcss: 8.4.44 - '@csstools/postcss-text-decoration-shorthand@3.0.7(postcss@8.4.39)': + '@csstools/postcss-text-decoration-shorthand@3.0.7(postcss@8.4.44)': dependencies: '@csstools/color-helpers': 4.2.1 - postcss: 8.4.39 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - '@csstools/postcss-trigonometric-functions@3.0.10(postcss@8.4.39)': + '@csstools/postcss-trigonometric-functions@3.0.10(postcss@8.4.44)': dependencies: '@csstools/css-calc': 1.2.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - postcss: 8.4.39 + postcss: 8.4.44 - '@csstools/postcss-unset-value@3.0.1(postcss@8.4.39)': + '@csstools/postcss-unset-value@3.0.1(postcss@8.4.44)': dependencies: - postcss: 8.4.39 + postcss: 8.4.44 '@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.1.0)': dependencies: @@ -4686,23 +5318,25 @@ snapshots: dependencies: postcss-selector-parser: 6.1.0 - '@csstools/utilities@1.0.0(postcss@8.4.39)': + '@csstools/utilities@1.0.0(postcss@8.4.44)': dependencies: - postcss: 8.4.39 + postcss: 8.4.44 + + '@drizzle-team/brocli@0.8.2': {} '@emnapi/core@0.45.0': dependencies: - tslib: 2.6.3 + tslib: 2.7.0 optional: true '@emnapi/runtime@0.45.0': dependencies: - tslib: 2.6.3 + tslib: 2.7.0 optional: true '@emnapi/runtime@1.2.0': dependencies: - tslib: 2.6.3 + tslib: 2.7.0 optional: true '@esbuild-kit/core-utils@3.3.2': @@ -5017,6 +5651,8 @@ snapshots: '@exodus/schemasafe@1.3.0': optional: true + '@faker-js/faker@8.4.1': {} + '@floating-ui/core@1.6.1': dependencies: '@floating-ui/utils': 0.2.2 @@ -5043,7 +5679,7 @@ snapshots: '@floating-ui/utils@0.2.4': {} - '@fontsource/fira-mono@5.0.13': {} + '@fontsource/fira-mono@5.0.14': {} '@gcornut/valibot-json-schema@0.31.0': dependencies: @@ -5062,6 +5698,22 @@ snapshots: '@hapi/hoek': 9.3.0 optional: true + '@hono/swagger-ui@0.4.1(hono@4.5.11)': + dependencies: + hono: 4.5.11 + + '@hono/zod-openapi@0.15.3(hono@4.5.11)(zod@3.23.8)': + dependencies: + '@asteasolutions/zod-to-openapi': 7.1.1(zod@3.23.8) + '@hono/zod-validator': 0.2.2(hono@4.5.11)(zod@3.23.8) + hono: 4.5.11 + zod: 3.23.8 + + '@hono/zod-validator@0.2.2(hono@4.5.11)(zod@3.23.8)': + dependencies: + hono: 4.5.11 + zod: 3.23.8 + '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -5159,13 +5811,11 @@ snapshots: '@img/sharp-win32-x64@0.33.4': optional: true - '@internationalized/date@3.5.3': + '@internationalized/date@3.5.5': dependencies: '@swc/helpers': 0.5.11 - '@internationalized/date@3.5.4': - dependencies: - '@swc/helpers': 0.5.11 + '@ioredis/commands@1.2.0': {} '@isaacs/cliui@8.0.2': dependencies: @@ -5204,8 +5854,9 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@lucia-auth/adapter-drizzle@1.0.7(lucia@3.2.0)': + '@lucia-auth/adapter-drizzle@1.1.0(drizzle-orm@0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4))(lucia@3.2.0)': dependencies: + drizzle-orm: 0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4) lucia: 3.2.0 '@lukeed/csprng@1.1.0': {} @@ -5240,7 +5891,7 @@ snapshots: dependencies: '@floating-ui/core': 1.6.2 '@floating-ui/dom': 1.6.5 - '@internationalized/date': 3.5.3 + '@internationalized/date': 3.5.5 dequal: 2.0.3 focus-trap: 7.5.4 nanoid: 5.0.7 @@ -5250,13 +5901,31 @@ snapshots: dependencies: '@floating-ui/core': 1.6.4 '@floating-ui/dom': 1.6.7 - '@internationalized/date': 3.5.4 + '@internationalized/date': 3.5.5 dequal: 2.0.3 focus-trap: 7.5.4 nanoid: 5.0.7 svelte: 5.0.0-next.175 - '@neondatabase/serverless@0.9.4': + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + optional: true + + '@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 + + '@neondatabase/serverless@0.9.5': dependencies: '@types/pg': 8.11.6 @@ -5409,9 +6078,9 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.45.1': + '@playwright/test@1.46.1': dependencies: - playwright: 1.45.1 + playwright: 1.46.1 '@polka/url@1.0.0-next.25': {} @@ -5471,6 +6140,34 @@ snapshots: '@resvg/resvg-wasm@2.6.0': {} + '@rollup/plugin-commonjs@26.0.1(rollup@4.18.1)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 10.4.1 + is-reference: 1.2.1 + magic-string: 0.30.10 + optionalDependencies: + rollup: 4.18.1 + + '@rollup/plugin-json@6.1.0(rollup@4.18.1)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + optionalDependencies: + rollup: 4.18.1 + + '@rollup/plugin-node-resolve@15.2.3(rollup@4.18.1)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.18.1) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.8 + optionalDependencies: + rollup: 4.18.1 + '@rollup/pluginutils@4.2.1': dependencies: estree-walker: 2.0.2 @@ -5484,102 +6181,102 @@ snapshots: optionalDependencies: rollup: 4.18.1 - '@rollup/rollup-android-arm-eabi@4.17.2': - optional: true - '@rollup/rollup-android-arm-eabi@4.18.1': optional: true - '@rollup/rollup-android-arm64@4.17.2': + '@rollup/rollup-android-arm-eabi@4.21.0': optional: true '@rollup/rollup-android-arm64@4.18.1': optional: true - '@rollup/rollup-darwin-arm64@4.17.2': + '@rollup/rollup-android-arm64@4.21.0': optional: true '@rollup/rollup-darwin-arm64@4.18.1': optional: true - '@rollup/rollup-darwin-x64@4.17.2': + '@rollup/rollup-darwin-arm64@4.21.0': optional: true '@rollup/rollup-darwin-x64@4.18.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.17.2': + '@rollup/rollup-darwin-x64@4.21.0': optional: true '@rollup/rollup-linux-arm-gnueabihf@4.18.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.17.2': + '@rollup/rollup-linux-arm-gnueabihf@4.21.0': optional: true '@rollup/rollup-linux-arm-musleabihf@4.18.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.17.2': + '@rollup/rollup-linux-arm-musleabihf@4.21.0': optional: true '@rollup/rollup-linux-arm64-gnu@4.18.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.17.2': + '@rollup/rollup-linux-arm64-gnu@4.21.0': optional: true '@rollup/rollup-linux-arm64-musl@4.18.1': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.17.2': + '@rollup/rollup-linux-arm64-musl@4.21.0': optional: true '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.17.2': + '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': optional: true '@rollup/rollup-linux-riscv64-gnu@4.18.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.17.2': + '@rollup/rollup-linux-riscv64-gnu@4.21.0': optional: true '@rollup/rollup-linux-s390x-gnu@4.18.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.17.2': + '@rollup/rollup-linux-s390x-gnu@4.21.0': optional: true '@rollup/rollup-linux-x64-gnu@4.18.1': optional: true - '@rollup/rollup-linux-x64-musl@4.17.2': + '@rollup/rollup-linux-x64-gnu@4.21.0': optional: true '@rollup/rollup-linux-x64-musl@4.18.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.17.2': + '@rollup/rollup-linux-x64-musl@4.21.0': optional: true '@rollup/rollup-win32-arm64-msvc@4.18.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.17.2': + '@rollup/rollup-win32-arm64-msvc@4.21.0': optional: true '@rollup/rollup-win32-ia32-msvc@4.18.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.17.2': + '@rollup/rollup-win32-ia32-msvc@4.21.0': optional: true '@rollup/rollup-win32-x64-msvc@4.18.1': optional: true + '@rollup/rollup-win32-x64-msvc@4.21.0': + optional: true + '@shuding/opentype.js@1.4.0-beta.0': dependencies: fflate: 0.7.4 @@ -5598,38 +6295,47 @@ snapshots: '@sinclair/typebox@0.27.8': {} - '@sinclair/typebox@0.32.34': + '@sinclair/typebox@0.32.35': optional: true '@sodaru/yup-to-json-schema@2.0.1': optional: true - '@sveltejs/adapter-auto@3.2.2(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))': + '@sveltejs/adapter-auto@3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))': dependencies: - '@sveltejs/kit': 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) import-meta-resolve: 4.1.0 - '@sveltejs/adapter-vercel@5.4.1(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))': + '@sveltejs/adapter-node@5.2.2(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))': dependencies: - '@sveltejs/kit': 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + '@rollup/plugin-commonjs': 26.0.1(rollup@4.18.1) + '@rollup/plugin-json': 6.1.0(rollup@4.18.1) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.18.1) + '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) + rollup: 4.18.1 + + '@sveltejs/adapter-vercel@5.4.3(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))': + dependencies: + '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) '@vercel/nft': 0.27.2 esbuild: 0.21.5 transitivePeerDependencies: - encoding - supports-color - '@sveltejs/enhanced-img@0.3.0(rollup@4.18.1)(svelte@5.0.0-next.175)': + '@sveltejs/enhanced-img@0.3.4(rollup@4.18.1)(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))': dependencies: magic-string: 0.30.10 + svelte: 5.0.0-next.175 svelte-parse-markup: 0.1.5(svelte@5.0.0-next.175) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) vite-imagetools: 7.0.2(rollup@4.18.1) transitivePeerDependencies: - rollup - - svelte - '@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8))': + '@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.0.0 @@ -5643,34 +6349,34 @@ snapshots: sirv: 2.0.4 svelte: 5.0.0-next.175 tiny-glob: 0.2.9 - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) debug: 4.3.4 svelte: 5.0.0-next.175 - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8))': + '@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.10 svelte: 5.0.0-next.175 svelte-hmr: 0.16.0(svelte@5.0.0-next.175) - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8) - vitefu: 0.2.5(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) + vitefu: 0.2.5(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) transitivePeerDependencies: - supports-color '@swc/helpers@0.5.11': dependencies: - tslib: 2.6.3 + tslib: 2.7.0 '@tsconfig/node10@1.0.11': {} @@ -5682,7 +6388,7 @@ snapshots: '@tybys/wasm-util@0.8.3': dependencies: - tslib: 2.6.3 + tslib: 2.7.0 optional: true '@types/cookie@0.6.0': {} @@ -5694,100 +6400,108 @@ snapshots: '@types/json-schema@7.0.15': optional: true - '@types/node@20.14.10': + '@types/node@20.16.3': dependencies: - undici-types: 5.26.5 + undici-types: 6.19.6 '@types/pg@8.11.6': dependencies: - '@types/node': 20.14.10 + '@types/node': 20.16.3 + pg-protocol: 1.6.1 + pg-types: 4.0.2 + + '@types/pg@8.11.8': + dependencies: + '@types/node': 20.16.3 pg-protocol: 1.6.1 pg-types: 4.0.2 '@types/pug@2.0.10': {} + '@types/resolve@1.20.2': {} + '@types/validator@13.12.0': optional: true - '@typescript-eslint/eslint-plugin@7.16.0(@typescript-eslint/parser@7.16.0(eslint@8.57.0)(typescript@5.5.3))(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.16.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/scope-manager': 7.16.0 - '@typescript-eslint/type-utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3) - '@typescript-eslint/visitor-keys': 7.16.0 + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.5.3) + ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: - typescript: 5.5.3 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.16.0(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/scope-manager': 7.16.0 - '@typescript-eslint/types': 7.16.0 - '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.5.3) - '@typescript-eslint/visitor-keys': 7.16.0 + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.3.4 eslint: 8.57.0 optionalDependencies: - typescript: 5.5.3 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.16.0': + '@typescript-eslint/scope-manager@7.18.0': dependencies: - '@typescript-eslint/types': 7.16.0 - '@typescript-eslint/visitor-keys': 7.16.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/type-utils@7.16.0(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.5.3) - '@typescript-eslint/utils': 7.16.0(eslint@8.57.0)(typescript@5.5.3) - debug: 4.3.5 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + debug: 4.3.6 eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.5.3) + ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: - typescript: 5.5.3 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@7.16.0': {} + '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/typescript-estree@7.16.0(typescript@5.5.3)': + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 7.16.0 - '@typescript-eslint/visitor-keys': 7.16.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.5.3) + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: - typescript: 5.5.3 + typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.16.0(eslint@8.57.0)(typescript@5.5.3)': + '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.16.0 - '@typescript-eslint/types': 7.16.0 - '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.5.3) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) eslint: 8.57.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.16.0': + '@typescript-eslint/visitor-keys@7.18.0': dependencies: - '@typescript-eslint/types': 7.16.0 + '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} @@ -5862,6 +6576,11 @@ snapshots: abbrev@1.1.1: {} + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + acorn-import-attributes@1.9.5(acorn@8.12.0): dependencies: acorn: 8.12.0 @@ -5882,7 +6601,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -5914,6 +6633,10 @@ snapshots: aproba@2.0.0: {} + arctic@1.9.2: + dependencies: + oslo: 1.2.0 + are-we-there-yet@2.0.0: dependencies: delegates: 1.0.0 @@ -5929,26 +6652,28 @@ snapshots: dependencies: dequal: 2.0.3 - arktype@2.0.0-dev.21: + arktype@2.0.0-beta.0: dependencies: - '@arktype/schema': 0.1.13 - '@arktype/util': 0.0.48 + '@ark/schema': 0.2.0 + '@ark/util': 0.1.0 optional: true + array-flatten@1.1.1: {} + array-union@2.1.0: {} assertion-error@1.1.0: {} async-sema@3.1.1: {} - autoprefixer@10.4.19(postcss@8.4.39): + autoprefixer@10.4.20(postcss@8.4.44): dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001616 + browserslist: 4.23.3 + caniuse-lite: 1.0.30001649 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 - postcss: 8.4.39 + picocolors: 1.0.1 + postcss: 8.4.44 postcss-value-parser: 4.2.0 axobject-query@4.0.0: @@ -5965,9 +6690,9 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 - bits-ui@0.21.12(svelte@5.0.0-next.175): + bits-ui@0.21.13(svelte@5.0.0-next.175): dependencies: - '@internationalized/date': 3.5.3 + '@internationalized/date': 3.5.5 '@melt-ui/svelte': 0.76.2(svelte@5.0.0-next.175) nanoid: 5.0.7 svelte: 5.0.0-next.175 @@ -5980,6 +6705,23 @@ snapshots: transitivePeerDependencies: - encoding + body-parser@1.20.2: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -5997,13 +6739,6 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001616 - electron-to-chromium: 1.4.758 - node-releases: 2.0.14 - update-browserslist-db: 1.0.15(browserslist@4.23.0) - browserslist@4.23.1: dependencies: caniuse-lite: 1.0.30001640 @@ -6011,12 +6746,43 @@ snapshots: node-releases: 2.0.14 update-browserslist-db: 1.1.0(browserslist@4.23.1) + browserslist@4.23.3: + dependencies: + caniuse-lite: 1.0.30001649 + electron-to-chromium: 1.5.4 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) + buffer-crc32@0.2.13: {} buffer-from@1.1.2: {} + builtin-modules@3.3.0: {} + + bullmq@5.12.13: + dependencies: + cron-parser: 4.9.0 + ioredis: 5.4.1 + msgpackr: 1.11.0 + node-abort-controller: 3.1.1 + semver: 7.6.3 + tslib: 2.7.0 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + + bytes@3.1.2: {} + cac@6.7.14: {} + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + callsites@3.1.0: {} camelcase-css@2.0.1: {} @@ -6028,10 +6794,10 @@ snapshots: camelize@1.0.1: {} - caniuse-lite@1.0.30001616: {} - caniuse-lite@1.0.30001640: {} + caniuse-lite@1.0.30001649: {} + chai@4.4.1: dependencies: assertion-error: 1.1.0 @@ -6081,6 +6847,8 @@ snapshots: clsx@2.1.1: {} + cluster-key-slot@1.1.2: {} + code-red@1.0.4: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -6109,18 +6877,32 @@ snapshots: commander@4.1.1: {} + commondir@1.0.1: {} + concat-map@0.0.1: {} confbox@0.1.7: {} console-control-strings@1.1.0: {} + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + cookie-signature@1.0.6: {} + cookie@0.6.0: {} core-js@3.37.0: {} create-require@1.1.1: {} + cron-parser@4.9.0: + dependencies: + luxon: 3.4.4 + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 @@ -6129,25 +6911,25 @@ snapshots: css-background-parser@0.1.0: {} - css-blank-pseudo@6.0.2(postcss@8.4.39): + css-blank-pseudo@6.0.2(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 css-box-shadow@1.0.0-3: {} css-color-keywords@1.0.0: {} - css-has-pseudo@6.0.5(postcss@8.4.39): + css-has-pseudo@6.0.5(postcss@8.4.44): dependencies: '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0) - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.1.0 postcss-value-parser: 4.2.0 - css-prefers-color-scheme@9.0.1(postcss@8.4.39): + css-prefers-color-scheme@9.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 css-to-react-native@3.2.0: dependencies: @@ -6167,6 +6949,10 @@ snapshots: dayjs@1.11.11: optional: true + debug@2.6.9: + dependencies: + ms: 2.0.0 + debug@4.3.4: dependencies: ms: 2.1.2 @@ -6175,6 +6961,10 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.3.6: + dependencies: + ms: 2.1.2 + decamelize@1.2.0: {} deep-eql@4.1.3: @@ -6185,10 +6975,22 @@ snapshots: deepmerge@4.3.1: {} + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + delegates@1.0.0: {} + denque@2.1.0: {} + + depd@2.0.0: {} + dequal@2.0.3: {} + destroy@1.2.0: {} + detect-indent@6.1.0: {} detect-libc@2.0.3: {} @@ -6219,34 +7021,48 @@ snapshots: dotenv@16.4.5: {} - drizzle-kit@0.23.0: + drizzle-kit@0.23.2: dependencies: + '@drizzle-team/brocli': 0.8.2 '@esbuild-kit/esm-loader': 2.6.5 esbuild: 0.19.12 esbuild-register: 3.5.0(esbuild@0.19.12) transitivePeerDependencies: - supports-color - drizzle-orm@0.32.0(@neondatabase/serverless@0.9.4)(@types/pg@8.11.6)(pg@8.12.0)(postgres@3.4.4): + drizzle-orm@0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4): optionalDependencies: - '@neondatabase/serverless': 0.9.4 - '@types/pg': 8.11.6 + '@neondatabase/serverless': 0.9.5 + '@types/pg': 8.11.8 pg: 8.12.0 postgres: 3.4.4 + drizzle-zod@0.5.1(drizzle-orm@0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4))(zod@3.23.8): + dependencies: + drizzle-orm: 0.32.2(@neondatabase/serverless@0.9.5)(@types/pg@8.11.8)(pg@8.12.0)(postgres@3.4.4) + zod: 3.23.8 + eastasianwidth@0.2.0: {} - electron-to-chromium@1.4.758: {} + ee-first@1.1.1: {} electron-to-chromium@1.4.818: {} + electron-to-chromium@1.5.4: {} + emoji-regex@10.3.0: {} emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} - encode-utf8@1.0.3: {} + encodeurl@1.0.2: {} + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} es6-promise@3.3.1: {} @@ -6367,7 +7183,6 @@ snapshots: '@esbuild/win32-arm64': 0.23.0 '@esbuild/win32-ia32': 0.23.0 '@esbuild/win32-x64': 0.23.0 - optional: true escalade@3.1.2: {} @@ -6384,7 +7199,7 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-plugin-svelte@2.42.0(eslint@8.57.0)(svelte@5.0.0-next.175)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)): + eslint-plugin-svelte@2.43.0(eslint@8.57.0)(svelte@5.0.0-next.175)(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@jridgewell/sourcemap-codec': 1.4.15 @@ -6392,12 +7207,12 @@ snapshots: eslint-compat-utils: 0.5.1(eslint@8.57.0) esutils: 2.0.3 known-css-properties: 0.34.0 - postcss: 8.4.39 - postcss-load-config: 3.1.4(postcss@8.4.39)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) - postcss-safe-parser: 6.0.0(postcss@8.4.39) + postcss: 8.4.44 + postcss-load-config: 3.1.4(postcss@8.4.44)(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)) + postcss-safe-parser: 6.0.0(postcss@8.4.44) postcss-selector-parser: 6.1.0 semver: 7.6.2 - svelte-eslint-parser: 0.40.0(svelte@5.0.0-next.175) + svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.175) optionalDependencies: svelte: 5.0.0-next.175 transitivePeerDependencies: @@ -6484,6 +7299,8 @@ snapshots: esutils@2.0.3: {} + etag@1.8.1: {} + execa@8.0.1: dependencies: cross-spawn: 7.0.3 @@ -6496,6 +7313,46 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 + express-rate-limit@7.3.1(express@4.19.2): + dependencies: + express: 4.19.2 + + express@4.19.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.6.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + fast-deep-equal@3.1.3: {} fast-glob@3.3.2: @@ -6539,6 +7396,18 @@ snapshots: dependencies: to-regex-range: 5.0.1 + finalhandler@1.2.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -6566,14 +7435,18 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - formsnap@1.0.1(svelte@5.0.0-next.175)(sveltekit-superforms@2.16.0(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)): + formsnap@1.0.1(svelte@5.0.0-next.175)(sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)): dependencies: nanoid: 5.0.7 svelte: 5.0.0-next.175 - sveltekit-superforms: 2.16.0(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175) + sveltekit-superforms: 2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175) + + forwarded@0.2.0: {} fraction.js@4.3.7: {} + fresh@0.5.2: {} + fs-minipass@2.1.0: dependencies: minipass: 3.3.6 @@ -6607,6 +7480,14 @@ snapshots: get-func-name@2.0.2: {} + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + get-stream@8.0.1: {} get-tsconfig@4.7.5: @@ -6655,12 +7536,33 @@ snapshots: globrex@0.1.2: {} + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + graceful-fs@4.2.11: {} graphemer@1.4.0: {} + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.1 + has-flag@4.0.0: {} + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + has-unicode@2.0.1: {} hasown@2.0.2: @@ -6669,12 +7571,26 @@ snapshots: hex-rgb@4.3.0: {} + hono-rate-limiter@0.4.0(hono@4.5.11): + dependencies: + hono: 4.5.11 + + hono@4.5.11: {} + html-entities@2.5.2: {} + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.5 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -6684,6 +7600,10 @@ snapshots: dependencies: '@iconify/types': 2.0.0 + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + ignore@5.3.1: {} imagetools-core@7.0.0: @@ -6708,12 +7628,32 @@ snapshots: inherits@2.0.4: {} + ioredis@5.4.1: + dependencies: + '@ioredis/commands': 1.2.0 + cluster-key-slot: 1.1.2 + debug: 4.3.5 + 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-arrayish@0.3.2: {} is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 + is-builtin-module@3.2.1: + dependencies: + builtin-modules: 3.3.0 + is-core-module@2.13.1: dependencies: hasown: 2.0.2 @@ -6726,10 +7666,16 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-module@1.0.0: {} + is-number@7.0.0: {} is-path-inside@3.0.3: {} + is-reference@1.2.1: + dependencies: + '@types/estree': 1.0.5 + is-reference@3.0.2: dependencies: '@types/estree': 1.0.5 @@ -6843,6 +7789,10 @@ snapshots: lodash.clonedeep@4.5.0: {} + lodash.defaults@4.2.0: {} + + lodash.isarguments@3.1.0: {} + lodash.merge@4.6.2: {} loupe@2.3.7: @@ -6859,6 +7809,8 @@ snapshots: dependencies: svelte: 5.0.0-next.175 + luxon@3.4.4: {} + magic-string@0.30.10: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -6871,6 +7823,8 @@ snapshots: mdn-data@2.0.30: {} + media-typer@0.3.0: {} + memfs-browser@3.5.10302: dependencies: memfs: 3.5.3 @@ -6883,12 +7837,16 @@ snapshots: memoize-weak@1.0.2: {} + merge-descriptors@1.0.1: {} + merge-stream@2.0.0: {} merge2@1.4.1: {} meriyah@1.9.15: {} + methods@1.1.2: {} + micromatch@4.0.5: dependencies: braces: 3.0.2 @@ -6899,6 +7857,14 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + mimic-fn@4.0.0: {} min-indent@1.0.1: {} @@ -6947,8 +7913,28 @@ snapshots: mrmime@2.0.0: {} + ms@2.0.0: {} + ms@2.1.2: {} + ms@2.1.3: {} + + 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.0: + optionalDependencies: + msgpackr-extract: 3.0.3 + mz@2.7.0: dependencies: any-promise: 1.3.0 @@ -6961,14 +7947,29 @@ snapshots: natural-compare@1.4.0: {} + negotiator@0.6.3: {} + + neo-async@2.6.2: {} + + node-abort-controller@3.1.1: {} + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 + node-gyp-build-optional-packages@5.2.2: + dependencies: + detect-libc: 2.0.3 + optional: true + node-gyp-build@4.8.1: {} node-releases@2.0.14: {} + node-releases@2.0.18: {} + + nodemailer@6.9.15: {} + nopt@5.0.0: dependencies: abbrev: 1.1.1 @@ -6995,8 +7996,14 @@ snapshots: object-hash@3.0.0: {} + object-inspect@1.13.2: {} + obuf@1.1.2: {} + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -7005,7 +8012,11 @@ snapshots: dependencies: mimic-fn: 4.0.0 - open-props@1.7.5: {} + open-props@1.7.6: {} + + openapi3-ts@4.3.3: + dependencies: + yaml: 2.5.0 optionator@0.9.4: dependencies: @@ -7059,6 +8070,8 @@ snapshots: color-name: 1.1.4 hex-rgb: 4.3.0 + parseurl@1.3.3: {} + path-exists@4.0.0: {} path-is-absolute@1.0.1: {} @@ -7074,6 +8087,8 @@ snapshots: lru-cache: 10.2.2 minipass: 7.1.2 + path-to-regexp@0.1.7: {} + path-type@4.0.0: {} pathe@1.1.2: {} @@ -7149,281 +8164,281 @@ snapshots: mlly: 1.7.0 pathe: 1.1.2 - playwright-core@1.45.1: {} + playwright-core@1.46.1: {} - playwright@1.45.1: + playwright@1.46.1: dependencies: - playwright-core: 1.45.1 + playwright-core: 1.46.1 optionalDependencies: fsevents: 2.3.2 pngjs@5.0.0: {} - postcss-attribute-case-insensitive@6.0.3(postcss@8.4.39): + postcss-attribute-case-insensitive@6.0.3(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 - postcss-clamp@4.1.0(postcss@8.4.39): + postcss-clamp@4.1.0(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-color-functional-notation@6.0.14(postcss@8.4.39): + postcss-color-functional-notation@6.0.14(postcss@8.4.44): dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.39) - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - postcss-color-hex-alpha@9.0.4(postcss@8.4.39): + postcss-color-hex-alpha@9.0.4(postcss@8.4.44): dependencies: - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-color-rebeccapurple@9.0.3(postcss@8.4.39): + postcss-color-rebeccapurple@9.0.3(postcss@8.4.44): dependencies: - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-custom-media@10.0.8(postcss@8.4.39): + postcss-custom-media@10.0.8(postcss@8.4.44): dependencies: '@csstools/cascade-layer-name-parser': 1.0.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 '@csstools/media-query-list-parser': 2.1.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) - postcss: 8.4.39 + postcss: 8.4.44 - postcss-custom-properties@13.3.12(postcss@8.4.39): + postcss-custom-properties@13.3.12(postcss@8.4.44): dependencies: '@csstools/cascade-layer-name-parser': 1.0.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-custom-selectors@7.1.12(postcss@8.4.39): + postcss-custom-selectors@7.1.12(postcss@8.4.44): dependencies: '@csstools/cascade-layer-name-parser': 1.0.13(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.1.0 - postcss-dir-pseudo-class@8.0.1(postcss@8.4.39): + postcss-dir-pseudo-class@8.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 - postcss-double-position-gradients@5.0.7(postcss@8.4.39): + postcss-double-position-gradients@5.0.7(postcss@8.4.44): dependencies: - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.39) - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-focus-visible@9.0.1(postcss@8.4.39): + postcss-focus-visible@9.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 - postcss-focus-within@8.0.1(postcss@8.4.39): + postcss-focus-within@8.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 - postcss-font-variant@5.0.0(postcss@8.4.39): + postcss-font-variant@5.0.0(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 - postcss-gap-properties@5.0.1(postcss@8.4.39): + postcss-gap-properties@5.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 - postcss-image-set-function@6.0.3(postcss@8.4.39): + postcss-image-set-function@6.0.3(postcss@8.4.44): dependencies: - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-import@15.1.0(postcss@8.4.39): + postcss-import@15.1.0(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-import@16.1.0(postcss@8.4.39): + postcss-import@16.1.0(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.39): + postcss-js@4.0.1(postcss@8.4.44): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.39 + postcss: 8.4.44 - postcss-lab-function@6.0.19(postcss@8.4.39): + postcss-lab-function@6.0.19(postcss@8.4.44): dependencies: '@csstools/css-color-parser': 2.0.4(@csstools/css-parser-algorithms@2.7.1(@csstools/css-tokenizer@2.4.1))(@csstools/css-tokenizer@2.4.1) '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.39) - '@csstools/utilities': 1.0.0(postcss@8.4.39) - postcss: 8.4.39 + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/utilities': 1.0.0(postcss@8.4.44) + postcss: 8.4.44 - postcss-load-config@3.1.4(postcss@8.4.39)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)): + postcss-load-config@3.1.4(postcss@8.4.44)(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: - postcss: 8.4.39 - ts-node: 10.9.2(@types/node@20.14.10)(typescript@5.5.3) + postcss: 8.4.44 + ts-node: 10.9.2(@types/node@20.16.3)(typescript@5.5.4) - postcss-load-config@4.0.2(postcss@8.4.39)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)): + postcss-load-config@4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)): dependencies: lilconfig: 3.1.1 yaml: 2.4.3 optionalDependencies: - postcss: 8.4.39 - ts-node: 10.9.2(@types/node@20.14.10)(typescript@5.5.3) + postcss: 8.4.44 + ts-node: 10.9.2(@types/node@20.16.3)(typescript@5.5.4) - postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.39)(tsx@4.16.2): + postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0): dependencies: lilconfig: 3.1.1 yaml: 2.4.2 optionalDependencies: jiti: 1.21.6 - postcss: 8.4.39 - tsx: 4.16.2 + postcss: 8.4.44 + tsx: 4.19.0 - postcss-logical@7.0.1(postcss@8.4.39): + postcss-logical@7.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-nested@6.0.1(postcss@8.4.39): + postcss-nested@6.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.1.0 - postcss-nesting@12.1.5(postcss@8.4.39): + postcss-nesting@12.1.5(postcss@8.4.44): dependencies: '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.1.0) '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.0) - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.1.0 - postcss-opacity-percentage@2.0.0(postcss@8.4.39): + postcss-opacity-percentage@2.0.0(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 - postcss-overflow-shorthand@5.0.1(postcss@8.4.39): + postcss-overflow-shorthand@5.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-page-break@3.0.4(postcss@8.4.39): + postcss-page-break@3.0.4(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 - postcss-place@9.0.1(postcss@8.4.39): + postcss-place@9.0.1(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-value-parser: 4.2.0 - postcss-preset-env@9.6.0(postcss@8.4.39): + postcss-preset-env@9.6.0(postcss@8.4.44): dependencies: - '@csstools/postcss-cascade-layers': 4.0.6(postcss@8.4.39) - '@csstools/postcss-color-function': 3.0.19(postcss@8.4.39) - '@csstools/postcss-color-mix-function': 2.0.19(postcss@8.4.39) - '@csstools/postcss-content-alt-text': 1.0.0(postcss@8.4.39) - '@csstools/postcss-exponential-functions': 1.0.9(postcss@8.4.39) - '@csstools/postcss-font-format-keywords': 3.0.2(postcss@8.4.39) - '@csstools/postcss-gamut-mapping': 1.0.11(postcss@8.4.39) - '@csstools/postcss-gradients-interpolation-method': 4.0.20(postcss@8.4.39) - '@csstools/postcss-hwb-function': 3.0.18(postcss@8.4.39) - '@csstools/postcss-ic-unit': 3.0.7(postcss@8.4.39) - '@csstools/postcss-initial': 1.0.1(postcss@8.4.39) - '@csstools/postcss-is-pseudo-class': 4.0.8(postcss@8.4.39) - '@csstools/postcss-light-dark-function': 1.0.8(postcss@8.4.39) - '@csstools/postcss-logical-float-and-clear': 2.0.1(postcss@8.4.39) - '@csstools/postcss-logical-overflow': 1.0.1(postcss@8.4.39) - '@csstools/postcss-logical-overscroll-behavior': 1.0.1(postcss@8.4.39) - '@csstools/postcss-logical-resize': 2.0.1(postcss@8.4.39) - '@csstools/postcss-logical-viewport-units': 2.0.11(postcss@8.4.39) - '@csstools/postcss-media-minmax': 1.1.8(postcss@8.4.39) - '@csstools/postcss-media-queries-aspect-ratio-number-values': 2.0.11(postcss@8.4.39) - '@csstools/postcss-nested-calc': 3.0.2(postcss@8.4.39) - '@csstools/postcss-normalize-display-values': 3.0.2(postcss@8.4.39) - '@csstools/postcss-oklab-function': 3.0.19(postcss@8.4.39) - '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.39) - '@csstools/postcss-relative-color-syntax': 2.0.19(postcss@8.4.39) - '@csstools/postcss-scope-pseudo-class': 3.0.1(postcss@8.4.39) - '@csstools/postcss-stepped-value-functions': 3.0.10(postcss@8.4.39) - '@csstools/postcss-text-decoration-shorthand': 3.0.7(postcss@8.4.39) - '@csstools/postcss-trigonometric-functions': 3.0.10(postcss@8.4.39) - '@csstools/postcss-unset-value': 3.0.1(postcss@8.4.39) - autoprefixer: 10.4.19(postcss@8.4.39) + '@csstools/postcss-cascade-layers': 4.0.6(postcss@8.4.44) + '@csstools/postcss-color-function': 3.0.19(postcss@8.4.44) + '@csstools/postcss-color-mix-function': 2.0.19(postcss@8.4.44) + '@csstools/postcss-content-alt-text': 1.0.0(postcss@8.4.44) + '@csstools/postcss-exponential-functions': 1.0.9(postcss@8.4.44) + '@csstools/postcss-font-format-keywords': 3.0.2(postcss@8.4.44) + '@csstools/postcss-gamut-mapping': 1.0.11(postcss@8.4.44) + '@csstools/postcss-gradients-interpolation-method': 4.0.20(postcss@8.4.44) + '@csstools/postcss-hwb-function': 3.0.18(postcss@8.4.44) + '@csstools/postcss-ic-unit': 3.0.7(postcss@8.4.44) + '@csstools/postcss-initial': 1.0.1(postcss@8.4.44) + '@csstools/postcss-is-pseudo-class': 4.0.8(postcss@8.4.44) + '@csstools/postcss-light-dark-function': 1.0.8(postcss@8.4.44) + '@csstools/postcss-logical-float-and-clear': 2.0.1(postcss@8.4.44) + '@csstools/postcss-logical-overflow': 1.0.1(postcss@8.4.44) + '@csstools/postcss-logical-overscroll-behavior': 1.0.1(postcss@8.4.44) + '@csstools/postcss-logical-resize': 2.0.1(postcss@8.4.44) + '@csstools/postcss-logical-viewport-units': 2.0.11(postcss@8.4.44) + '@csstools/postcss-media-minmax': 1.1.8(postcss@8.4.44) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 2.0.11(postcss@8.4.44) + '@csstools/postcss-nested-calc': 3.0.2(postcss@8.4.44) + '@csstools/postcss-normalize-display-values': 3.0.2(postcss@8.4.44) + '@csstools/postcss-oklab-function': 3.0.19(postcss@8.4.44) + '@csstools/postcss-progressive-custom-properties': 3.3.0(postcss@8.4.44) + '@csstools/postcss-relative-color-syntax': 2.0.19(postcss@8.4.44) + '@csstools/postcss-scope-pseudo-class': 3.0.1(postcss@8.4.44) + '@csstools/postcss-stepped-value-functions': 3.0.10(postcss@8.4.44) + '@csstools/postcss-text-decoration-shorthand': 3.0.7(postcss@8.4.44) + '@csstools/postcss-trigonometric-functions': 3.0.10(postcss@8.4.44) + '@csstools/postcss-unset-value': 3.0.1(postcss@8.4.44) + autoprefixer: 10.4.20(postcss@8.4.44) browserslist: 4.23.1 - css-blank-pseudo: 6.0.2(postcss@8.4.39) - css-has-pseudo: 6.0.5(postcss@8.4.39) - css-prefers-color-scheme: 9.0.1(postcss@8.4.39) + css-blank-pseudo: 6.0.2(postcss@8.4.44) + css-has-pseudo: 6.0.5(postcss@8.4.44) + css-prefers-color-scheme: 9.0.1(postcss@8.4.44) cssdb: 8.1.0 - postcss: 8.4.39 - postcss-attribute-case-insensitive: 6.0.3(postcss@8.4.39) - postcss-clamp: 4.1.0(postcss@8.4.39) - postcss-color-functional-notation: 6.0.14(postcss@8.4.39) - postcss-color-hex-alpha: 9.0.4(postcss@8.4.39) - postcss-color-rebeccapurple: 9.0.3(postcss@8.4.39) - postcss-custom-media: 10.0.8(postcss@8.4.39) - postcss-custom-properties: 13.3.12(postcss@8.4.39) - postcss-custom-selectors: 7.1.12(postcss@8.4.39) - postcss-dir-pseudo-class: 8.0.1(postcss@8.4.39) - postcss-double-position-gradients: 5.0.7(postcss@8.4.39) - postcss-focus-visible: 9.0.1(postcss@8.4.39) - postcss-focus-within: 8.0.1(postcss@8.4.39) - postcss-font-variant: 5.0.0(postcss@8.4.39) - postcss-gap-properties: 5.0.1(postcss@8.4.39) - postcss-image-set-function: 6.0.3(postcss@8.4.39) - postcss-lab-function: 6.0.19(postcss@8.4.39) - postcss-logical: 7.0.1(postcss@8.4.39) - postcss-nesting: 12.1.5(postcss@8.4.39) - postcss-opacity-percentage: 2.0.0(postcss@8.4.39) - postcss-overflow-shorthand: 5.0.1(postcss@8.4.39) - postcss-page-break: 3.0.4(postcss@8.4.39) - postcss-place: 9.0.1(postcss@8.4.39) - postcss-pseudo-class-any-link: 9.0.2(postcss@8.4.39) - postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.39) - postcss-selector-not: 7.0.2(postcss@8.4.39) + postcss: 8.4.44 + postcss-attribute-case-insensitive: 6.0.3(postcss@8.4.44) + postcss-clamp: 4.1.0(postcss@8.4.44) + postcss-color-functional-notation: 6.0.14(postcss@8.4.44) + postcss-color-hex-alpha: 9.0.4(postcss@8.4.44) + postcss-color-rebeccapurple: 9.0.3(postcss@8.4.44) + postcss-custom-media: 10.0.8(postcss@8.4.44) + postcss-custom-properties: 13.3.12(postcss@8.4.44) + postcss-custom-selectors: 7.1.12(postcss@8.4.44) + postcss-dir-pseudo-class: 8.0.1(postcss@8.4.44) + postcss-double-position-gradients: 5.0.7(postcss@8.4.44) + postcss-focus-visible: 9.0.1(postcss@8.4.44) + postcss-focus-within: 8.0.1(postcss@8.4.44) + postcss-font-variant: 5.0.0(postcss@8.4.44) + postcss-gap-properties: 5.0.1(postcss@8.4.44) + postcss-image-set-function: 6.0.3(postcss@8.4.44) + postcss-lab-function: 6.0.19(postcss@8.4.44) + postcss-logical: 7.0.1(postcss@8.4.44) + postcss-nesting: 12.1.5(postcss@8.4.44) + postcss-opacity-percentage: 2.0.0(postcss@8.4.44) + postcss-overflow-shorthand: 5.0.1(postcss@8.4.44) + postcss-page-break: 3.0.4(postcss@8.4.44) + postcss-place: 9.0.1(postcss@8.4.44) + postcss-pseudo-class-any-link: 9.0.2(postcss@8.4.44) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.44) + postcss-selector-not: 7.0.2(postcss@8.4.44) - postcss-pseudo-class-any-link@9.0.2(postcss@8.4.39): + postcss-pseudo-class-any-link@9.0.2(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 - postcss-replace-overflow-wrap@4.0.0(postcss@8.4.39): + postcss-replace-overflow-wrap@4.0.0(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 - postcss-safe-parser@6.0.0(postcss@8.4.39): + postcss-safe-parser@6.0.0(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 - postcss-scss@4.0.9(postcss@8.4.39): + postcss-scss@4.0.9(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 - postcss-selector-not@7.0.2(postcss@8.4.39): + postcss-selector-not@7.0.2(postcss@8.4.44): dependencies: - postcss: 8.4.39 + postcss: 8.4.44 postcss-selector-parser: 6.0.16 postcss-selector-parser@6.0.16: @@ -7438,7 +8453,7 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.4.39: + postcss@8.4.44: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 @@ -7470,7 +8485,7 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.2.5(prettier@3.3.3)(svelte@5.0.0-next.175): + prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@5.0.0-next.175): dependencies: prettier: 3.3.3 svelte: 5.0.0-next.175 @@ -7486,15 +8501,23 @@ snapshots: property-expr@2.0.6: optional: true + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + punycode@2.3.1: {} - qrcode@1.5.3: + qrcode@1.5.4: dependencies: dijkstrajs: 1.0.3 - encode-utf8: 1.0.3 pngjs: 5.0.0 yargs: 15.4.1 + qs@6.11.0: + dependencies: + side-channel: 1.0.6 + queue-microtask@1.2.3: {} radix-svelte@0.9.0(svelte@5.0.0-next.175): @@ -7503,6 +8526,19 @@ snapshots: '@floating-ui/dom': 1.6.5 svelte: 5.0.0-next.175 + range-parser@1.2.1: {} + + rate-limit-redis@4.2.0(express-rate-limit@7.3.1(express@4.19.2)): + dependencies: + express-rate-limit: 7.3.1(express@4.19.2) + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + react-is@18.3.1: {} read-cache@1.0.0: @@ -7519,8 +8555,16 @@ snapshots: dependencies: picomatch: 2.3.1 + redis-errors@1.2.0: {} + + redis-parser@3.0.0: + dependencies: + redis-errors: 1.2.0 + reflect-metadata@0.1.14: {} + reflect-metadata@0.2.2: {} + regenerator-runtime@0.14.1: optional: true @@ -7550,28 +8594,6 @@ snapshots: dependencies: glob: 7.2.3 - rollup@4.17.2: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.17.2 - '@rollup/rollup-android-arm64': 4.17.2 - '@rollup/rollup-darwin-arm64': 4.17.2 - '@rollup/rollup-darwin-x64': 4.17.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.17.2 - '@rollup/rollup-linux-arm-musleabihf': 4.17.2 - '@rollup/rollup-linux-arm64-gnu': 4.17.2 - '@rollup/rollup-linux-arm64-musl': 4.17.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.17.2 - '@rollup/rollup-linux-riscv64-gnu': 4.17.2 - '@rollup/rollup-linux-s390x-gnu': 4.17.2 - '@rollup/rollup-linux-x64-gnu': 4.17.2 - '@rollup/rollup-linux-x64-musl': 4.17.2 - '@rollup/rollup-win32-arm64-msvc': 4.17.2 - '@rollup/rollup-win32-ia32-msvc': 4.17.2 - '@rollup/rollup-win32-x64-msvc': 4.17.2 - fsevents: 2.3.3 - rollup@4.18.1: dependencies: '@types/estree': 1.0.5 @@ -7593,7 +8615,28 @@ snapshots: '@rollup/rollup-win32-ia32-msvc': 4.18.1 '@rollup/rollup-win32-x64-msvc': 4.18.1 fsevents: 2.3.3 - optional: true + + rollup@4.21.0: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.21.0 + '@rollup/rollup-android-arm64': 4.21.0 + '@rollup/rollup-darwin-arm64': 4.21.0 + '@rollup/rollup-darwin-x64': 4.21.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.21.0 + '@rollup/rollup-linux-arm-musleabihf': 4.21.0 + '@rollup/rollup-linux-arm64-gnu': 4.21.0 + '@rollup/rollup-linux-arm64-musl': 4.21.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.21.0 + '@rollup/rollup-linux-riscv64-gnu': 4.21.0 + '@rollup/rollup-linux-s390x-gnu': 4.21.0 + '@rollup/rollup-linux-x64-gnu': 4.21.0 + '@rollup/rollup-linux-x64-musl': 4.21.0 + '@rollup/rollup-win32-arm64-msvc': 4.21.0 + '@rollup/rollup-win32-ia32-msvc': 4.21.0 + '@rollup/rollup-win32-x64-msvc': 4.21.0 + fsevents: 2.3.3 run-parallel@1.2.0: dependencies: @@ -7605,6 +8648,8 @@ snapshots: safe-buffer@5.2.1: {} + safer-buffer@2.1.2: {} + sander@0.5.1: dependencies: es6-promise: 3.3.1 @@ -7648,18 +8693,58 @@ snapshots: postcss-value-parser: 4.2.0 yoga-wasm-web: 0.3.3 - schema-dts@1.1.2(typescript@5.5.3): + schema-dts@1.1.2(typescript@5.5.4): dependencies: - typescript: 5.5.3 + typescript: 5.5.4 semver@6.3.1: {} semver@7.6.2: {} + semver@7.6.3: {} + + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + set-blocking@2.0.0: {} set-cookie-parser@2.6.0: {} + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + setprototypeof@1.2.0: {} + sharp@0.33.4: dependencies: color: 4.2.3 @@ -7692,6 +8777,13 @@ snapshots: shebang-regex@3.0.0: {} + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + siginfo@2.0.0: {} signal-exit@3.0.7: {} @@ -7730,6 +8822,10 @@ snapshots: stackback@0.0.2: {} + standard-as-callback@2.1.0: {} + + statuses@2.0.1: {} + std-env@3.7.0: {} string-width@4.2.3: @@ -7791,15 +8887,15 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@3.8.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.39)(tsx@4.16.2))(postcss@8.4.39)(sass@1.77.8)(svelte@5.0.0-next.175): + svelte-check@3.8.6(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0))(postcss@8.4.44)(sass@1.77.8)(svelte@5.0.0-next.175): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 3.6.0 picocolors: 1.0.0 sade: 1.8.1 svelte: 5.0.0-next.175 - svelte-preprocess: 5.1.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.39)(tsx@4.16.2))(postcss@8.4.39)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.3) - typescript: 5.5.3 + svelte-preprocess: 5.1.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0))(postcss@8.4.44)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.4) + typescript: 5.5.4 transitivePeerDependencies: - '@babel/core' - coffeescript @@ -7811,13 +8907,13 @@ snapshots: - stylus - sugarss - svelte-eslint-parser@0.40.0(svelte@5.0.0-next.175): + svelte-eslint-parser@0.41.0(svelte@5.0.0-next.175): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - postcss: 8.4.39 - postcss-scss: 4.0.9(postcss@8.4.39) + postcss: 8.4.44 + postcss-scss: 4.0.9(postcss@8.4.44) optionalDependencies: svelte: 5.0.0-next.175 @@ -7843,9 +8939,9 @@ snapshots: svelte-lazy-loader@1.0.0: {} - svelte-meta-tags@3.1.2(svelte@5.0.0-next.175)(typescript@5.5.3): + svelte-meta-tags@3.1.4(svelte@5.0.0-next.175)(typescript@5.5.4): dependencies: - schema-dts: 1.1.2(typescript@5.5.3) + schema-dts: 1.1.2(typescript@5.5.4) svelte: 5.0.0-next.175 transitivePeerDependencies: - typescript @@ -7854,7 +8950,7 @@ snapshots: dependencies: svelte: 5.0.0-next.175 - svelte-preprocess@5.1.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.39)(tsx@4.16.2))(postcss@8.4.39)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.3): + svelte-preprocess@5.1.4(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0))(postcss@8.4.44)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.4): dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 @@ -7863,19 +8959,19 @@ snapshots: strip-indent: 3.0.0 svelte: 5.0.0-next.175 optionalDependencies: - postcss: 8.4.39 - postcss-load-config: 5.1.0(jiti@1.21.6)(postcss@8.4.39)(tsx@4.16.2) + postcss: 8.4.44 + postcss-load-config: 5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0) sass: 1.77.8 - typescript: 5.5.3 + typescript: 5.5.4 - svelte-preprocess@6.0.2(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.39)(tsx@4.16.2))(postcss@8.4.39)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.3): + svelte-preprocess@6.0.2(postcss-load-config@5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0))(postcss@8.4.44)(sass@1.77.8)(svelte@5.0.0-next.175)(typescript@5.5.4): dependencies: svelte: 5.0.0-next.175 optionalDependencies: - postcss: 8.4.39 - postcss-load-config: 5.1.0(jiti@1.21.6)(postcss@8.4.39)(tsx@4.16.2) + postcss: 8.4.44 + postcss-load-config: 5.1.0(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0) sass: 1.77.8 - typescript: 5.5.3 + typescript: 5.5.4 svelte-render@2.0.1(svelte@5.0.0-next.175): dependencies: @@ -7928,53 +9024,53 @@ snapshots: magic-string: 0.30.10 zimmerframe: 1.1.2 - sveltekit-flash-message@2.4.4(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175): + sveltekit-flash-message@2.4.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175): dependencies: - '@sveltejs/kit': 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) svelte: 5.0.0-next.175 - sveltekit-rate-limiter@0.5.1(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8))): + sveltekit-rate-limiter@0.5.2(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8))): dependencies: '@isaacs/ttlcache': 1.4.1 - '@sveltejs/kit': 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) - sveltekit-superforms@2.16.0(@sveltejs/kit@2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175): + sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175): dependencies: - '@sveltejs/kit': 2.5.18(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)) + '@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)))(svelte@5.0.0-next.175)(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)) devalue: 5.0.0 just-clone: 6.2.0 memoize-weak: 1.0.2 svelte: 5.0.0-next.175 - ts-deepmerge: 7.0.0 + ts-deepmerge: 7.0.1 optionalDependencies: '@exodus/schemasafe': 1.3.0 '@gcornut/valibot-json-schema': 0.31.0 - '@sinclair/typebox': 0.32.34 + '@sinclair/typebox': 0.32.35 '@sodaru/yup-to-json-schema': 2.0.1 '@vinejs/vine': 1.8.0 - arktype: 2.0.0-dev.21 + arktype: 2.0.0-beta.0 joi: 17.13.3 json-schema-to-ts: 3.1.0 superstruct: 2.0.2 valibot: 0.35.0 yup: 1.4.0 zod: 3.23.8 - zod-to-json-schema: 3.23.1(zod@3.23.8) + zod-to-json-schema: 3.23.2(zod@3.23.8) tabbable@6.2.0: {} - tailwind-merge@2.4.0: {} + tailwind-merge@2.5.2: {} - tailwind-variants@0.2.1(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))): + tailwind-variants@0.2.1(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4))): dependencies: - tailwind-merge: 2.4.0 - tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) + tailwind-merge: 2.5.2 + tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)) - tailwindcss-animate@1.0.7(tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3))): + tailwindcss-animate@1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4))): dependencies: - tailwindcss: 3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) + tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)) - tailwindcss@3.4.4(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)): + tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -7990,11 +9086,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.1 - postcss: 8.4.39 - postcss-import: 15.1.0(postcss@8.4.39) - postcss-js: 4.0.1(postcss@8.4.39) - postcss-load-config: 4.0.2(postcss@8.4.39)(ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3)) - postcss-nested: 6.0.1(postcss@8.4.39) + postcss: 8.4.44 + postcss-import: 15.1.0(postcss@8.4.44) + postcss-js: 4.0.1(postcss@8.4.44) + postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)) + postcss-nested: 6.0.1(postcss@8.4.44) postcss-selector-parser: 6.1.0 resolve: 1.22.8 sucrase: 3.35.0 @@ -8040,6 +9136,8 @@ snapshots: dependencies: is-number: 7.0.0 + toidentifier@1.0.1: {} + toposort@2.0.2: optional: true @@ -8050,44 +9148,52 @@ snapshots: ts-algebra@2.0.0: optional: true - ts-api-utils@1.3.0(typescript@5.5.3): + ts-api-utils@1.3.0(typescript@5.5.4): dependencies: - typescript: 5.5.3 + typescript: 5.5.4 - ts-deepmerge@7.0.0: {} + ts-deepmerge@7.0.1: {} ts-interface-checker@0.1.13: {} - ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3): + ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.14.10 + '@types/node': 20.16.3 acorn: 8.11.3 acorn-walk: 8.3.2 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.5.3 + typescript: 5.5.4 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + tslib@1.14.1: {} + tslib@2.4.0: optional: true tslib@2.6.3: {} - tsx@4.16.2: + tslib@2.7.0: {} + + tsx@4.19.0: dependencies: - esbuild: 0.21.5 + esbuild: 0.23.0 get-tsconfig: 4.7.5 optionalDependencies: fsevents: 2.3.3 + tsyringe@4.8.0: + dependencies: + tslib: 1.14.1 + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -8099,13 +9205,21 @@ snapshots: type-fest@2.19.0: optional: true - typescript@5.5.3: {} + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typescript@5.5.4: {} ufo@1.5.3: {} + uglify-js@3.19.1: + optional: true + ultrahtml@1.5.3: {} - undici-types@5.26.5: {} + undici-types@6.19.6: {} unfetch@4.2.0: {} @@ -8114,11 +9228,7 @@ snapshots: pako: 0.2.9 tiny-inflate: 1.0.3 - update-browserslist-db@1.0.15(browserslist@4.23.0): - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.0 + unpipe@1.0.0: {} update-browserslist-db@1.1.0(browserslist@4.23.1): dependencies: @@ -8126,12 +9236,22 @@ snapshots: escalade: 3.1.2 picocolors: 1.0.1 + update-browserslist-db@1.1.0(browserslist@4.23.3): + dependencies: + browserslist: 4.23.3 + escalade: 3.1.2 + picocolors: 1.0.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 util-deprecate@1.0.2: {} + utils-merge@1.0.1: {} + + uuid@9.0.1: {} + v8-compile-cache-lib@3.0.1: {} valibot@0.31.1: @@ -8143,6 +9263,8 @@ snapshots: validator@13.12.0: optional: true + vary@1.1.2: {} + vite-imagetools@7.0.2(rollup@4.18.1): dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.1) @@ -8150,38 +9272,39 @@ snapshots: transitivePeerDependencies: - rollup - vite-node@1.6.0(@types/node@20.14.10)(sass@1.77.8): + vite-node@1.6.0(@types/node@20.16.3)(sass@1.77.8): dependencies: cac: 6.7.14 debug: 4.3.4 pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) transitivePeerDependencies: - '@types/node' - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color - terser - vite@5.3.3(@types/node@20.14.10)(sass@1.77.8): + vite@5.4.3(@types/node@20.16.3)(sass@1.77.8): dependencies: esbuild: 0.21.5 - postcss: 8.4.39 - rollup: 4.17.2 + postcss: 8.4.44 + rollup: 4.21.0 optionalDependencies: - '@types/node': 20.14.10 + '@types/node': 20.16.3 fsevents: 2.3.3 sass: 1.77.8 - vitefu@0.2.5(vite@5.3.3(@types/node@20.14.10)(sass@1.77.8)): + vitefu@0.2.5(vite@5.4.3(@types/node@20.16.3)(sass@1.77.8)): optionalDependencies: - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) - vitest@1.6.0(@types/node@20.14.10)(sass@1.77.8): + vitest@1.6.0(@types/node@20.16.3)(sass@1.77.8): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -8200,15 +9323,16 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.3.3(@types/node@20.14.10)(sass@1.77.8) - vite-node: 1.6.0(@types/node@20.14.10)(sass@1.77.8) + vite: 5.4.3(@types/node@20.16.3)(sass@1.77.8) + vite-node: 1.6.0(@types/node@20.16.3)(sass@1.77.8) why-is-node-running: 2.2.2 optionalDependencies: - '@types/node': 20.14.10 + '@types/node': 20.16.3 transitivePeerDependencies: - less - lightningcss - sass + - sass-embedded - stylus - sugarss - supports-color @@ -8238,6 +9362,8 @@ snapshots: word-wrap@1.2.5: {} + wordwrap@1.0.0: {} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -8270,6 +9396,8 @@ snapshots: yaml@2.4.3: {} + yaml@2.5.0: {} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 @@ -8307,7 +9435,7 @@ snapshots: zimmerframe@1.1.2: {} - zod-to-json-schema@3.23.1(zod@3.23.8): + zod-to-json-schema@3.23.2(zod@3.23.8): dependencies: zod: 3.23.8 diff --git a/policies/.cerbos.yaml b/policies/.cerbos.yaml new file mode 100644 index 0000000..5c29127 --- /dev/null +++ b/policies/.cerbos.yaml @@ -0,0 +1,8 @@ +server: + httpListenAddr: ":3592" + +storage: + driver: "disk" + disk: + directory: /policies + watchForChanges: true diff --git a/policies/ticket.yaml b/policies/ticket.yaml new file mode 100644 index 0000000..9d9c583 --- /dev/null +++ b/policies/ticket.yaml @@ -0,0 +1,26 @@ +apiVersion: api.cerbos.dev/v1 +resourcePolicy: + version: default + resource: ticket + + rules: + - actions: + - "*" + effect: EFFECT_ALLOW + roles: + - admin + - actions: + - read + - update + effect: EFFECT_ALLOW + roles: + - customer + condition: + match: + expr: request.resource.attr.cust_id == request.principal.id + - actions: + - create + - delete + effect: EFFECT_DENY + roles: + - customer diff --git a/policies/ticket_test.yaml b/policies/ticket_test.yaml new file mode 100644 index 0000000..20ac4e5 --- /dev/null +++ b/policies/ticket_test.yaml @@ -0,0 +1,43 @@ +name: test ticket + +principals: + adminOne: + id: admin_1 + roles: + - admin + customerOne: + id: cust_1 + roles: + - customer + +resources: + ticketOne: + kind: ticket + id: ticket_1 + attr: + cust_id: cust_1 + +tests: + - name: test ticket + input: + principals: + - adminOne + - customerOne + resources: + - ticketOne + actions: + - create + - delete + + expected: + - principal: adminOne + resource: ticketOne + actions: + create: EFFECT_ALLOW + delete: EFFECT_ALLOW + + - principal: customerOne + resource: ticketOne + actions: + create: EFFECT_DENY + delete: EFFECT_DENY \ No newline at end of file diff --git a/src/app.d.ts b/src/app.d.ts index b8cb412..6ab483d 100644 --- a/src/app.d.ts +++ b/src/app.d.ts @@ -1,3 +1,7 @@ +import type { User } from 'lucia'; +import type { ApiClient } from '$lib/server/api'; +import type { parseApiResponse } from '$lib/utils/api'; + // See https://kit.svelte.dev/docs/types#app // for information about these interfaces // and what to do when importing types @@ -13,6 +17,10 @@ declare global { }; } interface Locals { + api: ApiClient['api']; + parseApiResponse: typeof parseApiResponse; + getAuthedUser: () => Promise | null>; + getAuthedUserOrThrow: () => Promise>; auth: import('lucia').AuthRequest; user: import('lucia').User | null; session: import('lucia').Session | null; @@ -33,22 +41,12 @@ declare global { interface Document { // eslint-disable-next-line @typescript-eslint/no-explicit-any - startViewTransition: (callback: any) => void; // Add your custom property/method here + // biome-ignore lint/suspicious/noExplicitAny: + startViewTransition: (callback: never) => void; // Add your custom property/method here } } -// interface PageData {} -// interface Error {} -// interface Platform {} - -// /// -// declare global { -// namespace Lucia { -// type Auth = import('$lib/server/lucia').Auth; -// type DatabaseUserAttributes = User; -// type DatabaseSessionAttributes = {}; -// } -// } - // THIS IS IMPORTANT!!! +// biome-ignore lint/complexity/noUselessEmptyExport: +// biome-ignore lint/style/useExportType: export {}; diff --git a/src/db/index.ts b/src/db/index.ts deleted file mode 100644 index 8715a69..0000000 --- a/src/db/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { drizzle } from 'drizzle-orm/node-postgres'; -import pg from 'pg'; -import env from '../env'; -import * as schema from './schema'; - -// create the connection -export const pool = new pg.Pool({ - user: env.DATABASE_USER, - password: env.DATABASE_PASSWORD, - host: env.DATABASE_HOST, - port: Number(env.DATABASE_PORT).valueOf(), - database: env.DATABASE_DB, - ssl: env.DATABASE_HOST !== 'localhost', - max: env.DB_MIGRATING || env.DB_SEEDING ? 1 : undefined, -}); - -export const db = drizzle(pool, { - schema, - logger: env.NODE_ENV === 'development', -}); - -export type db = typeof db; - -export default db; diff --git a/src/db/migrate.ts b/src/db/migrate.ts deleted file mode 100644 index a1198be..0000000 --- a/src/db/migrate.ts +++ /dev/null @@ -1,26 +0,0 @@ -import 'dotenv/config'; -import postgres from 'postgres'; -import { drizzle } from 'drizzle-orm/postgres-js'; -import { migrate } from 'drizzle-orm/postgres-js/migrator'; -import env from '../env'; -import config from '../../drizzle.config'; - -const connection = postgres({ - host: env.DATABASE_HOST || 'localhost', - port: env.DATABASE_PORT, - user: env.DATABASE_USER || 'root', - password: env.DATABASE_PASSWORD || '', - database: env.DATABASE_DB || 'boredgame', - ssl: env.NODE_ENV === 'development' ? false : 'require', - max: 1, -}); -const db = drizzle(connection); - -try { - await migrate(db, { migrationsFolder: config.out! }); - console.log('Migrations complete'); -} catch (e) { - console.error(e); -} - -process.exit(); diff --git a/src/db/schema/categories.ts b/src/db/schema/categories.ts deleted file mode 100644 index 5936858..0000000 --- a/src/db/schema/categories.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { pgTable, text, uuid } from 'drizzle-orm/pg-core'; -import { createId as cuid2 } from '@paralleldrive/cuid2'; -import { type InferSelectModel, relations } from 'drizzle-orm'; -import categoriesToExternalIds from './categoriesToExternalIds'; -import categories_to_games from './categoriesToGames'; -import { timestamps } from '../utils'; - -const categories = pgTable('categories', { - id: uuid('id').primaryKey().defaultRandom(), - cuid: text('cuid') - .unique() - .$defaultFn(() => cuid2()), - name: text('name'), - slug: text('slug'), - ...timestamps, -}); - -export type Categories = InferSelectModel; - -export const categories_relations = relations(categories, ({ many }) => ({ - categories_to_games: many(categories_to_games), - categoriesToExternalIds: many(categoriesToExternalIds), -})); - -export default categories; diff --git a/src/db/schema/categoriesToExternalIds.ts b/src/db/schema/categoriesToExternalIds.ts deleted file mode 100644 index e9e865b..0000000 --- a/src/db/schema/categoriesToExternalIds.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { pgTable, primaryKey, uuid } from 'drizzle-orm/pg-core'; -import categories from './categories'; -import externalIds from './externalIds'; - -const categoriesToExternalIds = pgTable( - 'categories_to_external_ids', - { - categoryId: uuid('category_id') - .notNull() - .references(() => categories.id, { onDelete: 'restrict', onUpdate: 'cascade' }), - externalId: uuid('external_id') - .notNull() - .references(() => externalIds.id, { onDelete: 'restrict', onUpdate: 'cascade' }), - }, - (table) => { - return { - categoriesToExternalIdsPkey: primaryKey({ - columns: [table.categoryId, table.externalId], - }), - }; - }, -); - -export default categoriesToExternalIds; diff --git a/src/db/schema/collections.ts b/src/db/schema/collections.ts deleted file mode 100644 index 6ff9916..0000000 --- a/src/db/schema/collections.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core'; -import { createId as cuid2 } from '@paralleldrive/cuid2'; -import { type InferSelectModel, relations } from 'drizzle-orm'; -import users from './users'; -import { timestamps } from '../utils'; - -const collections = pgTable('collections', { - id: uuid('id').primaryKey().defaultRandom(), - cuid: text('cuid') - .unique() - .$defaultFn(() => cuid2()), - user_id: uuid('user_id') - .notNull() - .references(() => users.id, { onDelete: 'cascade' }), - name: text('name').notNull().default('My Collection'), - ...timestamps, -}); - -export const collection_relations = relations(collections, ({ one }) => ({ - user: one(users, { - fields: [collections.user_id], - references: [users.id], - }), -})); - -export type Collections = InferSelectModel; - -export default collections; diff --git a/src/db/schema/index.ts b/src/db/schema/index.ts deleted file mode 100644 index d755c0d..0000000 --- a/src/db/schema/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -export { default as users, user_relations, type Users } from './users'; -export { default as recoveryCodes, type RecoveryCodes } from './recoveryCodes'; -export { - default as password_reset_tokens, - password_reset_token_relations, - type PasswordResetTokens, -} from './passwordResetTokens'; -export { default as sessions, type Sessions } from './sessions'; -export { default as roles, role_relations, type Roles } from './roles'; -export { default as userRoles, user_role_relations, type UserRoles } from './userRoles'; -export { default as collections, collection_relations, type Collections } from './collections'; -export { - default as collection_items, - collection_item_relations, - type CollectionItems, -} from './collectionItems'; -export { default as wishlists, wishlists_relations, type Wishlists } from './wishlists'; -export { - default as wishlist_items, - wishlist_item_relations, - type WishlistItems, -} from './wishlistItems'; -export { default as externalIds, type ExternalIds, externalIdType } from './externalIds'; -export { default as games, gameRelations, type Games } from './games'; -export { default as gamesToExternalIds } from './gamesToExternalIds'; -export { default as expansions, expansion_relations, type Expansions } from './expansions'; -export { default as publishers, publishers_relations, type Publishers } from './publishers'; -export { default as publishers_to_games, publishers_to_games_relations } from './publishersToGames'; -export { default as publishersToExternalIds } from './publishersToExternalIds'; -export { default as categories, categories_relations, type Categories } from './categories'; -export { default as categoriesToExternalIds } from './categoriesToExternalIds'; -export { default as categories_to_games, categories_to_games_relations } from './categoriesToGames'; -export { default as mechanics, mechanics_relations, type Mechanics } from './mechanics'; -export { default as mechanicsToExternalIds } from './mechanicsToExternalIds'; -export { default as mechanics_to_games, mechanics_to_games_relations } from './mechanicsToGames'; -export { default as twoFactor } from './two-factor.table'; diff --git a/src/db/schema/mechanics.ts b/src/db/schema/mechanics.ts deleted file mode 100644 index 3a80fb0..0000000 --- a/src/db/schema/mechanics.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { pgTable, text, uuid } from 'drizzle-orm/pg-core'; -import { createId as cuid2 } from '@paralleldrive/cuid2'; -import { type InferSelectModel, relations } from 'drizzle-orm'; -import mechanicsToGames from './mechanicsToGames'; -import mechanicsToExternalIds from './mechanicsToExternalIds'; -import { timestamps } from '../utils'; - -const mechanics = pgTable('mechanics', { - id: uuid('id').primaryKey().defaultRandom(), - cuid: text('cuid') - .unique() - .$defaultFn(() => cuid2()), - name: text('name'), - slug: text('slug'), - ...timestamps, -}); - -export type Mechanics = InferSelectModel; - -export const mechanics_relations = relations(mechanics, ({ many }) => ({ - mechanics_to_games: many(mechanicsToGames), - mechanicsToExternalIds: many(mechanicsToExternalIds), -})); - -export default mechanics; diff --git a/src/db/schema/passwordResetTokens.ts b/src/db/schema/passwordResetTokens.ts deleted file mode 100644 index 7d0a18d..0000000 --- a/src/db/schema/passwordResetTokens.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core'; -import { createId as cuid2 } from '@paralleldrive/cuid2'; -import { type InferSelectModel, relations } from 'drizzle-orm'; -import users from './users'; -import { timestamps } from '../utils'; - -const password_reset_tokens = pgTable('password_reset_tokens', { - id: text('id') - .primaryKey() - .$defaultFn(() => cuid2()), - user_id: uuid('user_id') - .notNull() - .references(() => users.id, { onDelete: 'cascade' }), - expires_at: timestamp('expires_at'), - ...timestamps, -}); - -export type PasswordResetTokens = InferSelectModel; - -export const password_reset_token_relations = relations(password_reset_tokens, ({ one }) => ({ - user: one(users, { - fields: [password_reset_tokens.user_id], - references: [users.id], - }), -})); - -export default password_reset_tokens; diff --git a/src/db/schema/publishers.ts b/src/db/schema/publishers.ts deleted file mode 100644 index b83a3ef..0000000 --- a/src/db/schema/publishers.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { pgTable, text, uuid } from 'drizzle-orm/pg-core'; -import { createId as cuid2 } from '@paralleldrive/cuid2'; -import { type InferSelectModel, relations } from 'drizzle-orm'; -import publishers_to_games from './publishersToGames'; -import publishersToExternalIds from './publishersToExternalIds'; -import { timestamps } from '../utils'; - -const publishers = pgTable('publishers', { - id: uuid('id').primaryKey().defaultRandom(), - cuid: text('cuid') - .unique() - .$defaultFn(() => cuid2()), - name: text('name'), - slug: text('slug'), - ...timestamps, -}); - -export type Publishers = InferSelectModel; - -export const publishers_relations = relations(publishers, ({ many }) => ({ - publishers_to_games: many(publishers_to_games), - publishersToExternalIds: many(publishersToExternalIds), -})); - -export default publishers; diff --git a/src/db/schema/recoveryCodes.ts b/src/db/schema/recoveryCodes.ts deleted file mode 100644 index c5433c0..0000000 --- a/src/db/schema/recoveryCodes.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { boolean, pgTable, text, uuid } from 'drizzle-orm/pg-core'; -import type { InferSelectModel } from 'drizzle-orm'; -import users from './users'; -import { timestamps } from '../utils'; - -const recovery_codes = pgTable('recovery_codes', { - id: uuid('id').primaryKey().defaultRandom(), - userId: uuid('user_id') - .notNull() - .references(() => users.id), - code: text('code').notNull(), - used: boolean('used').default(false), - ...timestamps, -}); - -export type RecoveryCodes = InferSelectModel; - -export default recovery_codes; diff --git a/src/db/schema/roles.ts b/src/db/schema/roles.ts deleted file mode 100644 index 43768b0..0000000 --- a/src/db/schema/roles.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { pgTable, text, uuid } from 'drizzle-orm/pg-core'; -import { createId as cuid2 } from '@paralleldrive/cuid2'; -import { type InferSelectModel, relations } from 'drizzle-orm'; -import user_roles from './userRoles'; -import { timestamps } from '../utils'; - -const roles = pgTable('roles', { - id: uuid('id').primaryKey().defaultRandom(), - cuid: text('cuid') - .unique() - .$defaultFn(() => cuid2()) - .notNull(), - name: text('name').unique().notNull(), - ...timestamps, -}); - -export type Roles = InferSelectModel; - -export const role_relations = relations(roles, ({ many }) => ({ - user_roles: many(user_roles), -})); - -export default roles; diff --git a/src/db/schema/wishlists.ts b/src/db/schema/wishlists.ts deleted file mode 100644 index db0c327..0000000 --- a/src/db/schema/wishlists.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { pgTable, text, uuid } from 'drizzle-orm/pg-core'; -import { createId as cuid2 } from '@paralleldrive/cuid2'; -import { type InferSelectModel, relations } from 'drizzle-orm'; -import users from './users'; -import { timestamps } from '../utils'; - -const wishlists = pgTable('wishlists', { - id: uuid('id').primaryKey().defaultRandom(), - cuid: text('cuid') - .unique() - .$defaultFn(() => cuid2()), - user_id: uuid('user_id') - .notNull() - .references(() => users.id, { onDelete: 'cascade' }), - name: text('name').notNull().default('My Wishlist'), - ...timestamps, -}); - -export type Wishlists = InferSelectModel; - -export const wishlists_relations = relations(wishlists, ({ one }) => ({ - user: one(users, { - fields: [wishlists.user_id], - references: [users.id], - }), -})); - -export default wishlists; diff --git a/src/db/seeds/roles.ts b/src/db/seeds/roles.ts deleted file mode 100644 index 04d1724..0000000 --- a/src/db/seeds/roles.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { eq } from 'drizzle-orm'; -import { type db } from '$db'; -import * as schema from '$db/schema'; -import roles from './data/roles.json'; - -export default async function seed(db: db) { - console.log('Creating roles ...'); - for (const role of roles) { - await db.insert(schema.roles).values(role).onConflictDoNothing(); - } - console.log('Roles created.'); -} diff --git a/src/db/seeds/users.ts b/src/db/seeds/users.ts deleted file mode 100644 index 0c8c739..0000000 --- a/src/db/seeds/users.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { eq } from 'drizzle-orm'; -import { Argon2id } from 'oslo/password'; -import { type db } from '$db'; -import * as schema from '$db/schema'; -import users from './data/users.json'; -import env from '../../env'; - -type JsonUser = { - id: string; - username: string; - email: string; - password: string; - roles: { - name: string; - primary: boolean; - }[]; -}; - -type JsonRole = { - name: string; - primary: boolean; -}; - -export default async function seed(db: db) { - const adminRole = await db.select().from(schema.roles).where(eq(schema.roles.name, 'admin')); - const userRole = await db.select().from(schema.roles).where(eq(schema.roles.name, 'user')); - - console.log('Admin Role: ', adminRole); - const adminUser = await db - .insert(schema.users) - .values({ - username: `${env.ADMIN_USERNAME}`, - email: '', - hashed_password: await new Argon2id().hash(`${env.ADMIN_PASSWORD}`), - first_name: 'Brad', - last_name: 'S', - verified: true, - }) - .returning() - .onConflictDoNothing(); - - console.log('Admin user created.', adminUser); - - await db - .insert(schema.collections) - .values({ user_id: adminUser[0].id }) - .onConflictDoNothing(); - - await db - .insert(schema.wishlists) - .values({ user_id: adminUser[0].id }) - .onConflictDoNothing(); - - await db - .insert(schema.userRoles) - .values({ - user_id: adminUser[0].id, - role_id: adminRole[0].id, - }) - .onConflictDoNothing(); - - console.log('Admin user given admin role.'); - - await db - .insert(schema.userRoles) - .values({ - user_id: adminUser[0].id, - role_id: userRole[0].id, - }) - .onConflictDoNothing(); - - console.log('Admin user given user role.'); - await Promise.all( - users.map(async (user) => { - const [insertedUser] = await db - .insert(schema.users) - .values({ - ...user, - hashed_password: await new Argon2id().hash(user.password), - }) - .returning(); - await db.insert(schema.collections).values({ user_id: insertedUser?.id }); - await db.insert(schema.wishlists).values({ user_id: insertedUser?.id }); - await Promise.all( - user.roles.map(async (role: JsonRole) => { - const foundRole = await db.query.roles.findFirst({ - where: eq(schema.roles.name, role.name), - }); - await db.insert(schema.userRoles).values({ - user_id: insertedUser?.id, - role_id: foundRole?.id, - primary: role?.primary, - }); - }), - ); - }), - ); -} diff --git a/src/db/utils.ts b/src/db/utils.ts deleted file mode 100644 index 4d8a66a..0000000 --- a/src/db/utils.ts +++ /dev/null @@ -1,43 +0,0 @@ -// import { HTTPException } from 'hono/http-exception'; -import { timestamp } from 'drizzle-orm/pg-core'; -import { customType } from 'drizzle-orm/pg-core'; - -export const citext = customType<{ data: string }>({ - dataType() { - return 'citext'; - }, -}); - -export const cuid2 = customType<{ data: string }>({ - dataType() { - return 'text'; - }, -}); - -export const takeFirst = (values: T[]): T | null => { - if (values.length === 0) return null; - return values[0]!; -}; - -export const takeFirstOrThrow = (values: T[]): T => { - if (values.length === 0) - // throw new HTTPException(404, { - // message: 'Resource not found', - // }); - return values[0]!; -}; - -export const timestamps = { - createdAt: timestamp('created_at', { - mode: 'date', - withTimezone: true, - }) - .notNull() - .defaultNow(), - updatedAt: timestamp('updated_at', { - mode: 'date', - withTimezone: true, - }) - .notNull() - .defaultNow(), -}; diff --git a/src/env.ts b/src/env.ts index 40a31e9..fd60759 100644 --- a/src/env.ts +++ b/src/env.ts @@ -1,52 +1,52 @@ -import { config } from 'dotenv'; -import { expand } from 'dotenv-expand'; -import { ZodError, z } from 'zod'; +import { config } from 'dotenv' +import { expand } from 'dotenv-expand' +import { ZodError, z } from 'zod' const stringBoolean = z.coerce .string() .transform((val) => { - return val === 'true'; + return val === 'true' }) - .default('false'); + .default('false') const EnvSchema = z.object({ - NODE_ENV: z.string().default('development'), + ADMIN_USERNAME: z.string(), + ADMIN_PASSWORD: z.string(), DATABASE_USER: z.string(), DATABASE_PASSWORD: z.string(), DATABASE_HOST: z.string(), DATABASE_PORT: z.coerce.number(), DATABASE_DB: z.string(), - DATABASE_URL: z.string(), + DB_MIGRATING: stringBoolean, + DB_SEEDING: stringBoolean, + NODE_ENV: z.string().default('development'), + ORIGIN: z.string(), PUBLIC_SITE_NAME: z.string(), PUBLIC_SITE_URL: z.string(), PUBLIC_UMAMI_DO_NOT_TRACK: z.string(), PUBLIC_UMAMI_ID: z.string(), PUBLIC_UMAMI_URL: z.string(), - DB_MIGRATING: stringBoolean, - DB_SEEDING: stringBoolean, - ADMIN_USERNAME: z.string(), - ADMIN_PASSWORD: z.string(), + REDIS_URL: z.string(), TWO_FACTOR_TIMEOUT: z.coerce.number().default(300000), -}); +}) -export type EnvSchema = z.infer; +export type EnvSchema = z.infer -expand(config()); +expand(config()) try { - EnvSchema.parse(process.env); + EnvSchema.parse(process.env) } catch (error) { if (error instanceof ZodError) { - let message = 'Missing required values in .env:\n'; - error.issues.forEach((issue) => { - message += issue.path[0] + '\n'; - }); - const e = new Error(message); - e.stack = ''; - throw e; - } else { - console.error(error); + let message = 'Missing required values in .env:\n' + for (const issue of error.issues) { + message += `${issue.path[0]}\n` + } + const e = new Error(message) + e.stack = '' + throw e } + console.error(error) } -export default EnvSchema.parse(process.env); +export default EnvSchema.parse(process.env) diff --git a/src/hooks.server.ts b/src/hooks.server.ts index f07cc18..6b9521d 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -1,59 +1,42 @@ -// import * as Sentry from '@sentry/sveltekit'; -import { sequence } from '@sveltejs/kit/hooks'; -import type { Handle } from '@sveltejs/kit'; -import { dev } from '$app/environment'; -import { lucia } from '$lib/server/auth'; +import 'reflect-metadata' +import { StatusCodes } from '$lib/constants/status-codes' +import type { ApiRoutes } from '$lib/server/api' +import { parseApiResponse } from '$lib/utils/api' +import { type Handle, redirect } from '@sveltejs/kit' +import { sequence } from '@sveltejs/kit/hooks' +import { hc } from 'hono/client' -// TODO: Fix Sentry as it is not working on SvelteKit v2 -// Sentry.init({ -// dsn: 'https://742e43279df93a3c4a4a78c12eb1f879@o4506057768632320.ingest.sentry.io/4506057770401792', -// tracesSampleRate: 1, -// environment: dev ? 'development' : 'production', -// enabled: !dev -// }); +const apiClient: Handle = async ({ event, resolve }) => { + /* ------------------------------ Register api ------------------------------ */ + const { api } = hc('/', { + fetch: event.fetch, + headers: { + 'x-forwarded-for': event.url.host.includes('sveltekit-prerender') ? '127.0.0.1' : event.getClientAddress(), + host: event.request.headers.get('host') || '', + }, + }) -export const authentication: Handle = async function ({ event, resolve }) { - event.locals.startTimer = Date.now(); - - const ip = event.request.headers.get('x-forwarded-for') as string; - const country = event.request.headers.get('x-vercel-ip-country') as string; - event.locals.ip = dev ? '127.0.0.1' : ip; // || event.getClientAddress(); - event.locals.country = dev ? 'us' : country; - - const sessionId = event.cookies.get(lucia.sessionCookieName); - if (!sessionId) { - event.locals.user = null; - event.locals.session = null; - return resolve(event); + /* ----------------------------- Auth functions ----------------------------- */ + async function getAuthedUser() { + const { data } = await api.user.$get().then(parseApiResponse) + return data?.user } - const { session, user } = await lucia.validateSession(sessionId); - if (session && session.fresh) { - const sessionCookie = lucia.createSessionCookie(session.id); - console.log('sessionCookie', JSON.stringify(sessionCookie, null, 2)); - // sveltekit types deviates from the de-facto standard, you can use 'as any' too - event.cookies.set(sessionCookie.name, sessionCookie.value, { - path: '.', - ...sessionCookie.attributes, - }); + async function getAuthedUserOrThrow() { + const { data } = await api.user.$get().then(parseApiResponse) + if (!data || !data.user) throw redirect(StatusCodes.TEMPORARY_REDIRECT, '/') + return data?.user } - console.log('session from hooks', JSON.stringify(session, null, 2)); - if (!session) { - const sessionCookie = lucia.createBlankSessionCookie(); - console.log('blank sessionCookie', JSON.stringify(sessionCookie, null, 2)); - event.cookies.set(sessionCookie.name, sessionCookie.value, { - path: '.', - ...sessionCookie.attributes, - }); - } - event.locals.user = user; - event.locals.session = session; - return resolve(event); -}; + /* ------------------------------ Set contexts ------------------------------ */ + event.locals.api = api + event.locals.parseApiResponse = parseApiResponse + event.locals.getAuthedUser = getAuthedUser + event.locals.getAuthedUserOrThrow = getAuthedUserOrThrow -export const handle: Handle = sequence( - // Sentry.sentryHandle(), - authentication, -); -// export const handleError = Sentry.handleErrorWithSentry(); + /* ----------------------------- Return response ---------------------------- */ + const response = await resolve(event) + return response +} + +export const handle: Handle = sequence(apiClient) diff --git a/src/lib/components/Header.svelte b/src/lib/components/Header.svelte index d632423..5768ad5 100644 --- a/src/lib/components/Header.svelte +++ b/src/lib/components/Header.svelte @@ -92,7 +92,7 @@ {:else} Login - Sign Up + Sign Up {/if} diff --git a/src/lib/components/LeftNav.svelte b/src/lib/components/LeftNav.svelte new file mode 100644 index 0000000..40f2ac0 --- /dev/null +++ b/src/lib/components/LeftNav.svelte @@ -0,0 +1,77 @@ + + +
+ +
+ {@render children()} +
+
+ + \ No newline at end of file diff --git a/src/lib/components/pin-input.svelte b/src/lib/components/pin-input.svelte index c44b9f0..774c5f9 100644 --- a/src/lib/components/pin-input.svelte +++ b/src/lib/components/pin-input.svelte @@ -21,7 +21,7 @@ bind:value={pin} class={cn('flex items-center gap-2', rest.class)} type="text" - placeholder="" + placeholder="0" > {#each inputs as _} ; -
+

Signup user