From ac02f4e913ae0c7822ccc19468816f274f21e1f6 Mon Sep 17 00:00:00 2001 From: Stan Runge Date: Sun, 1 Mar 2026 18:30:13 +0100 Subject: [PATCH] chore: untrack .svelte-kit generated files from git Co-Authored-By: Claude Sonnet 4.6 --- .svelte-kit/ambient.d.ts | 334 ------------------ .svelte-kit/types/route_meta_data.json | 101 ------ .svelte-kit/types/src/routes/$types.d.ts | 20 -- .../types/src/routes/(app)/$types.d.ts | 34 -- .../types/src/routes/(app)/admin/$types.d.ts | 31 -- .../routes/(app)/admin/proxy+page.server.ts | 66 ---- .../src/routes/(app)/mappools/$types.d.ts | 31 -- .../routes/(app)/mappools/[id]/$types.d.ts | 32 -- .../(app)/mappools/[id]/proxy+page.server.ts | 146 -------- .../(app)/mappools/proxy+page.server.ts | 34 -- .../src/routes/(app)/matches/$types.d.ts | 31 -- .../src/routes/(app)/matches/[id]/$types.d.ts | 32 -- .../(app)/matches/[id]/proxy+page.server.ts | 202 ----------- .../routes/(app)/matches/proxy+page.server.ts | 78 ---- .../src/routes/(app)/proxy+layout.server.ts | 42 --- .../src/routes/(app)/proxy+page.server.ts | 50 --- .../src/routes/(app)/settings/$types.d.ts | 31 -- .../(app)/settings/proxy+page.server.ts | 48 --- .../types/src/routes/(app)/teams/$types.d.ts | 31 -- .../routes/(app)/teams/proxy+page.server.ts | 153 -------- .../types/src/routes/api/health/$types.d.ts | 10 - .../types/src/routes/api/mappools/$types.d.ts | 10 - .../src/routes/api/mappools/[id]/$types.d.ts | 11 - .../api/mappools/[id]/slots/$types.d.ts | 11 - .../mappools/[id]/slots/[slotId]/$types.d.ts | 11 - .../types/src/routes/api/matches/$types.d.ts | 10 - .../src/routes/api/matches/[id]/$types.d.ts | 11 - .../routes/api/matches/[id]/lobby/$types.d.ts | 11 - .../routes/api/matches/[id]/pick/$types.d.ts | 11 - .../routes/api/matches/[id]/roll/$types.d.ts | 11 - .../api/matches/[id]/rolling/$types.d.ts | 11 - .../routes/api/matches/[id]/score/$types.d.ts | 11 - .../routes/api/osu/beatmap/[id]/$types.d.ts | 11 - .../types/src/routes/api/queue/$types.d.ts | 10 - .svelte-kit/types/src/routes/demo/$types.d.ts | 18 - .../src/routes/demo/better-auth/$types.d.ts | 31 -- .../routes/demo/better-auth/login/$types.d.ts | 31 -- .../better-auth/login/proxy+page.server.ts | 80 ----- .../demo/better-auth/proxy+page.server.ts | 22 -- .../types/src/routes/login/$types.d.ts | 25 -- .../src/routes/login/proxy+page.server.ts | 19 - 41 files changed, 1903 deletions(-) delete mode 100644 .svelte-kit/ambient.d.ts delete mode 100644 .svelte-kit/types/route_meta_data.json delete mode 100644 .svelte-kit/types/src/routes/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/admin/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/admin/proxy+page.server.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/mappools/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/mappools/[id]/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/mappools/[id]/proxy+page.server.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/mappools/proxy+page.server.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/matches/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/matches/[id]/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/matches/[id]/proxy+page.server.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/matches/proxy+page.server.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/proxy+layout.server.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/proxy+page.server.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/settings/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/settings/proxy+page.server.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/teams/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/(app)/teams/proxy+page.server.ts delete mode 100644 .svelte-kit/types/src/routes/api/health/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/api/mappools/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/api/mappools/[id]/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/api/mappools/[id]/slots/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/api/mappools/[id]/slots/[slotId]/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/api/matches/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/api/matches/[id]/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/api/matches/[id]/lobby/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/api/matches/[id]/pick/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/api/matches/[id]/roll/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/api/matches/[id]/rolling/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/api/matches/[id]/score/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/api/osu/beatmap/[id]/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/api/queue/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/demo/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/demo/better-auth/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/demo/better-auth/login/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/demo/better-auth/login/proxy+page.server.ts delete mode 100644 .svelte-kit/types/src/routes/demo/better-auth/proxy+page.server.ts delete mode 100644 .svelte-kit/types/src/routes/login/$types.d.ts delete mode 100644 .svelte-kit/types/src/routes/login/proxy+page.server.ts diff --git a/.svelte-kit/ambient.d.ts b/.svelte-kit/ambient.d.ts deleted file mode 100644 index a5cad36..0000000 --- a/.svelte-kit/ambient.d.ts +++ /dev/null @@ -1,334 +0,0 @@ - -// this file is generated — do not edit it - - -/// - -/** - * This module provides access to environment variables that are injected _statically_ into your bundle at build time and are limited to _private_ access. - * - * | | Runtime | Build time | - * | ------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------ | - * | Private | [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private) | [`$env/static/private`](https://svelte.dev/docs/kit/$env-static-private) | - * | Public | [`$env/dynamic/public`](https://svelte.dev/docs/kit/$env-dynamic-public) | [`$env/static/public`](https://svelte.dev/docs/kit/$env-static-public) | - * - * Static environment variables are [loaded by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files) from `.env` files and `process.env` at build time and then statically injected into your bundle at build time, enabling optimisations like dead code elimination. - * - * **_Private_ access:** - * - * - This module cannot be imported into client-side code - * - This module only includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://svelte.dev/docs/kit/configuration#env) (if configured) - * - * For example, given the following build time environment: - * - * ```env - * ENVIRONMENT=production - * PUBLIC_BASE_URL=http://site.com - * ``` - * - * With the default `publicPrefix` and `privatePrefix`: - * - * ```ts - * import { ENVIRONMENT, PUBLIC_BASE_URL } from '$env/static/private'; - * - * console.log(ENVIRONMENT); // => "production" - * console.log(PUBLIC_BASE_URL); // => throws error during build - * ``` - * - * The above values will be the same _even if_ different values for `ENVIRONMENT` or `PUBLIC_BASE_URL` are set at runtime, as they are statically replaced in your code with their build time values. - */ -declare module '$env/static/private' { - export const ROOT_ADMIN_EMAIL: string; - export const DATABASE_URL: string; - export const ORIGIN: string; - export const BETTER_AUTH_SECRET: string; - export const OSU_CLIENT_ID: string; - export const OSU_CLIENT_SECRET: string; - export const OSU_IRC_USERNAME: string; - export const OSU_IRC_PASSWORD: string; - export const NVM_INC: string; - export const TERM_PROGRAM: string; - export const NODE: string; - export const NVM_CD_FLAGS: string; - export const TERM: string; - export const SHELL: string; - export const HOMEBREW_REPOSITORY: string; - export const TMPDIR: string; - export const VSCODE_PYTHON_AUTOACTIVATE_GUARD: string; - export const TERM_PROGRAM_VERSION: string; - export const ZDOTDIR: string; - export const MallocNanoZone: string; - export const npm_config_local_prefix: string; - export const LC_ALL: string; - export const ZSH: string; - export const NVM_DIR: string; - export const USER: string; - export const LS_COLORS: string; - export const COMMAND_MODE: string; - export const CLAUDE_CODE_SSE_PORT: string; - export const SSH_AUTH_SOCK: string; - export const VSCODE_PROFILE_INITIALIZED: string; - export const __CF_USER_TEXT_ENCODING: string; - export const npm_execpath: string; - export const PAGER: string; - export const LSCOLORS: string; - export const PATH: string; - export const npm_package_json: string; - export const _: string; - export const LaunchInstanceID: string; - export const USER_ZDOTDIR: string; - export const __CFBundleIdentifier: string; - export const npm_command: string; - export const PWD: string; - export const npm_lifecycle_event: string; - export const EDITOR: string; - export const npm_package_name: string; - export const LANG: string; - export const PYTHONSTARTUP: string; - export const AWS_REGION: string; - export const BUN_INSPECT_CONNECT_TO: string; - export const VSCODE_GIT_ASKPASS_EXTRA_ARGS: string; - export const XPC_FLAGS: string; - export const npm_package_version: string; - export const XPC_SERVICE_NAME: string; - export const VSCODE_INJECTION: string; - export const SHLVL: string; - export const HOME: string; - export const VSCODE_GIT_ASKPASS_MAIN: string; - export const PYTHON_BASIC_REPL: string; - export const HOMEBREW_PREFIX: string; - export const LESS: string; - export const LOGNAME: string; - export const npm_lifecycle_script: string; - export const VSCODE_GIT_IPC_HANDLE: string; - export const NVM_BIN: string; - export const npm_config_user_agent: string; - export const INFOPATH: string; - export const HOMEBREW_CELLAR: string; - export const VSCODE_GIT_ASKPASS_NODE: string; - export const GIT_ASKPASS: string; - export const OSLogRateLimit: string; - export const SECURITYSESSIONID: string; - export const npm_node_execpath: string; - export const COLORTERM: string; - export const NODE_ENV: string; - export const PW_EXPERIMENTAL_SERVICE_WORKER_NETWORK_EVENTS: string; -} - -/** - * This module provides access to environment variables that are injected _statically_ into your bundle at build time and are _publicly_ accessible. - * - * | | Runtime | Build time | - * | ------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------ | - * | Private | [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private) | [`$env/static/private`](https://svelte.dev/docs/kit/$env-static-private) | - * | Public | [`$env/dynamic/public`](https://svelte.dev/docs/kit/$env-dynamic-public) | [`$env/static/public`](https://svelte.dev/docs/kit/$env-static-public) | - * - * Static environment variables are [loaded by Vite](https://vitejs.dev/guide/env-and-mode.html#env-files) from `.env` files and `process.env` at build time and then statically injected into your bundle at build time, enabling optimisations like dead code elimination. - * - * **_Public_ access:** - * - * - This module _can_ be imported into client-side code - * - **Only** variables that begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) (which defaults to `PUBLIC_`) are included - * - * For example, given the following build time environment: - * - * ```env - * ENVIRONMENT=production - * PUBLIC_BASE_URL=http://site.com - * ``` - * - * With the default `publicPrefix` and `privatePrefix`: - * - * ```ts - * import { ENVIRONMENT, PUBLIC_BASE_URL } from '$env/static/public'; - * - * console.log(ENVIRONMENT); // => throws error during build - * console.log(PUBLIC_BASE_URL); // => "http://site.com" - * ``` - * - * The above values will be the same _even if_ different values for `ENVIRONMENT` or `PUBLIC_BASE_URL` are set at runtime, as they are statically replaced in your code with their build time values. - */ -declare module '$env/static/public' { - -} - -/** - * This module provides access to environment variables set _dynamically_ at runtime and that are limited to _private_ access. - * - * | | Runtime | Build time | - * | ------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------ | - * | Private | [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private) | [`$env/static/private`](https://svelte.dev/docs/kit/$env-static-private) | - * | Public | [`$env/dynamic/public`](https://svelte.dev/docs/kit/$env-dynamic-public) | [`$env/static/public`](https://svelte.dev/docs/kit/$env-static-public) | - * - * Dynamic environment variables are defined by the platform you're running on. For example if you're using [`adapter-node`](https://github.com/sveltejs/kit/tree/main/packages/adapter-node) (or running [`vite preview`](https://svelte.dev/docs/kit/cli)), this is equivalent to `process.env`. - * - * **_Private_ access:** - * - * - This module cannot be imported into client-side code - * - This module includes variables that _do not_ begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) _and do_ start with [`config.kit.env.privatePrefix`](https://svelte.dev/docs/kit/configuration#env) (if configured) - * - * > [!NOTE] In `dev`, `$env/dynamic` includes environment variables from `.env`. In `prod`, this behavior will depend on your adapter. - * - * > [!NOTE] To get correct types, environment variables referenced in your code should be declared (for example in an `.env` file), even if they don't have a value until the app is deployed: - * > - * > ```env - * > MY_FEATURE_FLAG= - * > ``` - * > - * > You can override `.env` values from the command line like so: - * > - * > ```sh - * > MY_FEATURE_FLAG="enabled" npm run dev - * > ``` - * - * For example, given the following runtime environment: - * - * ```env - * ENVIRONMENT=production - * PUBLIC_BASE_URL=http://site.com - * ``` - * - * With the default `publicPrefix` and `privatePrefix`: - * - * ```ts - * import { env } from '$env/dynamic/private'; - * - * console.log(env.ENVIRONMENT); // => "production" - * console.log(env.PUBLIC_BASE_URL); // => undefined - * ``` - */ -declare module '$env/dynamic/private' { - export const env: { - ROOT_ADMIN_EMAIL: string; - DATABASE_URL: string; - ORIGIN: string; - BETTER_AUTH_SECRET: string; - OSU_CLIENT_ID: string; - OSU_CLIENT_SECRET: string; - OSU_IRC_USERNAME: string; - OSU_IRC_PASSWORD: string; - NVM_INC: string; - TERM_PROGRAM: string; - NODE: string; - NVM_CD_FLAGS: string; - TERM: string; - SHELL: string; - HOMEBREW_REPOSITORY: string; - TMPDIR: string; - VSCODE_PYTHON_AUTOACTIVATE_GUARD: string; - TERM_PROGRAM_VERSION: string; - ZDOTDIR: string; - MallocNanoZone: string; - npm_config_local_prefix: string; - LC_ALL: string; - ZSH: string; - NVM_DIR: string; - USER: string; - LS_COLORS: string; - COMMAND_MODE: string; - CLAUDE_CODE_SSE_PORT: string; - SSH_AUTH_SOCK: string; - VSCODE_PROFILE_INITIALIZED: string; - __CF_USER_TEXT_ENCODING: string; - npm_execpath: string; - PAGER: string; - LSCOLORS: string; - PATH: string; - npm_package_json: string; - _: string; - LaunchInstanceID: string; - USER_ZDOTDIR: string; - __CFBundleIdentifier: string; - npm_command: string; - PWD: string; - npm_lifecycle_event: string; - EDITOR: string; - npm_package_name: string; - LANG: string; - PYTHONSTARTUP: string; - AWS_REGION: string; - BUN_INSPECT_CONNECT_TO: string; - VSCODE_GIT_ASKPASS_EXTRA_ARGS: string; - XPC_FLAGS: string; - npm_package_version: string; - XPC_SERVICE_NAME: string; - VSCODE_INJECTION: string; - SHLVL: string; - HOME: string; - VSCODE_GIT_ASKPASS_MAIN: string; - PYTHON_BASIC_REPL: string; - HOMEBREW_PREFIX: string; - LESS: string; - LOGNAME: string; - npm_lifecycle_script: string; - VSCODE_GIT_IPC_HANDLE: string; - NVM_BIN: string; - npm_config_user_agent: string; - INFOPATH: string; - HOMEBREW_CELLAR: string; - VSCODE_GIT_ASKPASS_NODE: string; - GIT_ASKPASS: string; - OSLogRateLimit: string; - SECURITYSESSIONID: string; - npm_node_execpath: string; - COLORTERM: string; - NODE_ENV: string; - PW_EXPERIMENTAL_SERVICE_WORKER_NETWORK_EVENTS: string; - [key: `PUBLIC_${string}`]: undefined; - [key: `${string}`]: string | undefined; - } -} - -/** - * This module provides access to environment variables set _dynamically_ at runtime and that are _publicly_ accessible. - * - * | | Runtime | Build time | - * | ------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------ | - * | Private | [`$env/dynamic/private`](https://svelte.dev/docs/kit/$env-dynamic-private) | [`$env/static/private`](https://svelte.dev/docs/kit/$env-static-private) | - * | Public | [`$env/dynamic/public`](https://svelte.dev/docs/kit/$env-dynamic-public) | [`$env/static/public`](https://svelte.dev/docs/kit/$env-static-public) | - * - * Dynamic environment variables are defined by the platform you're running on. For example if you're using [`adapter-node`](https://github.com/sveltejs/kit/tree/main/packages/adapter-node) (or running [`vite preview`](https://svelte.dev/docs/kit/cli)), this is equivalent to `process.env`. - * - * **_Public_ access:** - * - * - This module _can_ be imported into client-side code - * - **Only** variables that begin with [`config.kit.env.publicPrefix`](https://svelte.dev/docs/kit/configuration#env) (which defaults to `PUBLIC_`) are included - * - * > [!NOTE] In `dev`, `$env/dynamic` includes environment variables from `.env`. In `prod`, this behavior will depend on your adapter. - * - * > [!NOTE] To get correct types, environment variables referenced in your code should be declared (for example in an `.env` file), even if they don't have a value until the app is deployed: - * > - * > ```env - * > MY_FEATURE_FLAG= - * > ``` - * > - * > You can override `.env` values from the command line like so: - * > - * > ```sh - * > MY_FEATURE_FLAG="enabled" npm run dev - * > ``` - * - * For example, given the following runtime environment: - * - * ```env - * ENVIRONMENT=production - * PUBLIC_BASE_URL=http://example.com - * ``` - * - * With the default `publicPrefix` and `privatePrefix`: - * - * ```ts - * import { env } from '$env/dynamic/public'; - * console.log(env.ENVIRONMENT); // => undefined, not public - * console.log(env.PUBLIC_BASE_URL); // => "http://example.com" - * ``` - * - * ``` - * - * ``` - */ -declare module '$env/dynamic/public' { - export const env: { - [key: `PUBLIC_${string}`]: string | undefined; - } -} diff --git a/.svelte-kit/types/route_meta_data.json b/.svelte-kit/types/route_meta_data.json deleted file mode 100644 index 054fee4..0000000 --- a/.svelte-kit/types/route_meta_data.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "/(app)": [ - "src/routes/(app)/+page.server.ts", - "src/routes/(app)/+layout.server.ts", - "src/routes/(app)/+layout.server.ts" - ], - "/": [], - "/(app)/admin": [ - "src/routes/(app)/admin/+page.server.ts", - "src/routes/(app)/+layout.server.ts" - ], - "/api/health": [ - "src/routes/api/health/+server.ts" - ], - "/api/mappools": [ - "src/routes/api/mappools/+server.ts" - ], - "/api/mappools/[id]": [ - "src/routes/api/mappools/[id]/+server.ts" - ], - "/api/mappools/[id]/slots": [ - "src/routes/api/mappools/[id]/slots/+server.ts" - ], - "/api/mappools/[id]/slots/[slotId]": [ - "src/routes/api/mappools/[id]/slots/[slotId]/+server.ts" - ], - "/api/matches": [ - "src/routes/api/matches/+server.ts" - ], - "/api/matches/[id]": [ - "src/routes/api/matches/[id]/+server.ts" - ], - "/api/matches/[id]/lobby": [ - "src/routes/api/matches/[id]/lobby/+server.ts" - ], - "/api/matches/[id]/pick": [ - "src/routes/api/matches/[id]/pick/+server.ts" - ], - "/api/matches/[id]/rolling": [ - "src/routes/api/matches/[id]/rolling/+server.ts" - ], - "/api/matches/[id]/roll": [ - "src/routes/api/matches/[id]/roll/+server.ts" - ], - "/api/matches/[id]/score": [ - "src/routes/api/matches/[id]/score/+server.ts" - ], - "/api/osu/beatmap/[id]": [ - "src/routes/api/osu/beatmap/[id]/+server.ts" - ], - "/api/queue": [ - "src/routes/api/queue/+server.ts" - ], - "/demo": [], - "/demo/better-auth": [ - "src/routes/demo/better-auth/+page.server.ts" - ], - "/demo/better-auth/login": [ - "src/routes/demo/better-auth/login/+page.server.ts" - ], - "/(app)/leaderboard": [ - "src/routes/(app)/leaderboard/+page.server.ts", - "src/routes/(app)/+layout.server.ts" - ], - "/login": [ - "src/routes/login/+page.server.ts" - ], - "/(app)/mappools": [ - "src/routes/(app)/mappools/+page.server.ts", - "src/routes/(app)/+layout.server.ts" - ], - "/(app)/mappools/[id]": [ - "src/routes/(app)/mappools/[id]/+page.server.ts", - "src/routes/(app)/+layout.server.ts" - ], - "/(app)/matches": [ - "src/routes/(app)/matches/+page.server.ts", - "src/routes/(app)/+layout.server.ts" - ], - "/(app)/matches/[id]": [ - "src/routes/(app)/matches/[id]/+page.server.ts", - "src/routes/(app)/+layout.server.ts" - ], - "/(app)/privacy": [ - "src/routes/(app)/+layout.server.ts" - ], - "/(app)/settings": [ - "src/routes/(app)/settings/+page.server.ts", - "src/routes/(app)/+layout.server.ts" - ], - "/sitemap.xml": [ - "src/routes/sitemap.xml/+server.ts" - ], - "/(app)/teams": [ - "src/routes/(app)/teams/+page.server.ts", - "src/routes/(app)/+layout.server.ts" - ], - "/(app)/terms": [ - "src/routes/(app)/+layout.server.ts" - ] -} \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/$types.d.ts b/.svelte-kit/types/src/routes/$types.d.ts deleted file mode 100644 index 9856c17..0000000 --- a/.svelte-kit/types/src/routes/$types.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type LayoutRouteId = RouteId | "/(app)" | "/(app)/admin" | "/(app)/leaderboard" | "/(app)/mappools" | "/(app)/mappools/[id]" | "/(app)/matches" | "/(app)/matches/[id]" | "/(app)/privacy" | "/(app)/settings" | "/(app)/teams" | "/(app)/terms" | "/demo" | "/demo/better-auth" | "/demo/better-auth/login" | "/login" | null -type LayoutParams = RouteParams & { id?: string } -type LayoutParentData = EnsureDefined<{}>; - -export type LayoutServerData = null; -export type LayoutData = Expand; -export type LayoutProps = { params: LayoutParams; data: LayoutData; children: import("svelte").Snippet } \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/$types.d.ts b/.svelte-kit/types/src/routes/(app)/$types.d.ts deleted file mode 100644 index b123a2a..0000000 --- a/.svelte-kit/types/src/routes/(app)/$types.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/(app)'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageServerParentData = Omit, keyof LayoutServerData> & EnsureDefined; -type PageParentData = Omit, keyof LayoutData> & EnsureDefined; -type LayoutRouteId = RouteId | "/(app)" | "/(app)/admin" | "/(app)/leaderboard" | "/(app)/mappools" | "/(app)/mappools/[id]" | "/(app)/matches" | "/(app)/matches/[id]" | "/(app)/privacy" | "/(app)/settings" | "/(app)/teams" | "/(app)/terms" -type LayoutParams = RouteParams & { id?: string } -type LayoutServerParentData = EnsureDefined; -type LayoutParentData = EnsureDefined; - -export type PageServerLoad = OutputDataShape> = Kit.ServerLoad; -export type PageServerLoadEvent = Parameters[0]; -export type ActionData = unknown; -export type PageServerData = Expand>>>>>; -export type PageData = Expand & EnsureDefined>; -export type Action | void = Record | void> = Kit.Action -export type Actions | void = Record | void> = Kit.Actions -export type PageProps = { params: RouteParams; data: PageData; form: ActionData } -export type LayoutServerLoad = OutputDataShape> = Kit.ServerLoad; -export type LayoutServerLoadEvent = Parameters[0]; -export type LayoutServerData = Expand>>>>>; -export type LayoutData = Expand & EnsureDefined>; -export type LayoutProps = { params: LayoutParams; data: LayoutData; children: import("svelte").Snippet } -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/admin/$types.d.ts b/.svelte-kit/types/src/routes/(app)/admin/$types.d.ts deleted file mode 100644 index 87ce2c6..0000000 --- a/.svelte-kit/types/src/routes/(app)/admin/$types.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/(app)/admin'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageServerParentData = Omit, keyof import('../$types.js').LayoutServerData> & EnsureDefined; -type PageParentData = Omit, keyof import('../$types.js').LayoutData> & EnsureDefined; - -export type PageServerLoad = OutputDataShape> = Kit.ServerLoad; -export type PageServerLoadEvent = Parameters[0]; -type ExcludeActionFailure = T extends Kit.ActionFailure ? never : T extends void ? never : T; -type ActionsSuccess any>> = { [Key in keyof T]: ExcludeActionFailure>>; }[keyof T]; -type ExtractActionFailure = T extends Kit.ActionFailure ? X extends void ? never : X : never; -type ActionsFailure any>> = { [Key in keyof T]: Exclude>>, void>; }[keyof T]; -type ActionsExport = typeof import('./proxy+page.server.js').actions -export type SubmitFunction = Kit.SubmitFunction>, Expand>> -export type ActionData = Expand> | null; -export type PageServerData = Expand>>>>>; -export type PageData = Expand & EnsureDefined>; -export type Action | void = Record | void> = Kit.Action -export type Actions | void = Record | void> = Kit.Actions -export type PageProps = { params: RouteParams; data: PageData; form: ActionData } -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/admin/proxy+page.server.ts b/.svelte-kit/types/src/routes/(app)/admin/proxy+page.server.ts deleted file mode 100644 index f88aca3..0000000 --- a/.svelte-kit/types/src/routes/(app)/admin/proxy+page.server.ts +++ /dev/null @@ -1,66 +0,0 @@ -// @ts-nocheck -// src/routes/(app)/admin/+page.server.ts -import { db } from '$lib/server/db'; -import { user } from '$lib/server/db/auth.schema'; -import { playerRating } from '$lib/server/db/schema'; -import { eq, desc } from 'drizzle-orm'; -import { requireRole, setUserRole, isRootAdmin } from '$lib/server/permissions'; -import type { PageServerLoad, Actions } from './$types'; - -export const load = async ({ locals }: Parameters[0]) => { - requireRole(locals, 'admin'); - - const users = await db.query.user.findMany({ - orderBy: desc(user.createdAt) - }); - - const usersWithRatings = await Promise.all( - users.map(async (u) => { - const rating = await db.query.playerRating.findFirst({ - where: eq(playerRating.userId, u.id) - }); - return { - id: u.id, - name: u.name, - email: u.email, - image: u.image, - role: u.role ?? 'player', - createdAt: u.createdAt, - elo: rating?.elo ?? 1000, - wins: rating?.wins ?? 0, - losses: rating?.losses ?? 0, - isRootAdmin: isRootAdmin(u.email) - }; - }) - ); - - return { - users: usersWithRatings, - actorIsRootAdmin: isRootAdmin(locals.user!.email) - }; -}; - -export const actions = { - setRole: async ({ request, locals }: import('./$types').RequestEvent) => { - requireRole(locals, 'admin'); - - const form = await request.formData(); - const userId = form.get('userId')?.toString(); - const role = form.get('role')?.toString(); - - if (!userId || !role) return { error: 'User ID and role are required' }; - if (!['player', 'referee', 'admin'].includes(role)) { - return { error: 'Invalid role' }; - } - - try { - await setUserRole(locals, userId, role as any); - } catch (e: any) { - // setUserRole throws SvelteKit errors; extract the message - return { error: e.body?.message ?? e.message ?? 'Failed to update role' }; - } - - return { success: true }; - } -}; -;null as any as Actions; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/mappools/$types.d.ts b/.svelte-kit/types/src/routes/(app)/mappools/$types.d.ts deleted file mode 100644 index d32009b..0000000 --- a/.svelte-kit/types/src/routes/(app)/mappools/$types.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/(app)/mappools'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageServerParentData = Omit, keyof import('../$types.js').LayoutServerData> & EnsureDefined; -type PageParentData = Omit, keyof import('../$types.js').LayoutData> & EnsureDefined; - -export type PageServerLoad = OutputDataShape> = Kit.ServerLoad; -export type PageServerLoadEvent = Parameters[0]; -type ExcludeActionFailure = T extends Kit.ActionFailure ? never : T extends void ? never : T; -type ActionsSuccess any>> = { [Key in keyof T]: ExcludeActionFailure>>; }[keyof T]; -type ExtractActionFailure = T extends Kit.ActionFailure ? X extends void ? never : X : never; -type ActionsFailure any>> = { [Key in keyof T]: Exclude>>, void>; }[keyof T]; -type ActionsExport = typeof import('./proxy+page.server.js').actions -export type SubmitFunction = Kit.SubmitFunction>, Expand>> -export type ActionData = Expand> | null; -export type PageServerData = Expand>>>>>; -export type PageData = Expand & EnsureDefined>; -export type Action | void = Record | void> = Kit.Action -export type Actions | void = Record | void> = Kit.Actions -export type PageProps = { params: RouteParams; data: PageData; form: ActionData } -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/mappools/[id]/$types.d.ts b/.svelte-kit/types/src/routes/(app)/mappools/[id]/$types.d.ts deleted file mode 100644 index 9d04193..0000000 --- a/.svelte-kit/types/src/routes/(app)/mappools/[id]/$types.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { id: string }; -type RouteId = '/(app)/mappools/[id]'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageServerParentData = Omit, keyof import('../../$types.js').LayoutServerData> & EnsureDefined; -type PageParentData = Omit, keyof import('../../$types.js').LayoutData> & EnsureDefined; - -export type EntryGenerator = () => Promise> | Array; -export type PageServerLoad = OutputDataShape> = Kit.ServerLoad; -export type PageServerLoadEvent = Parameters[0]; -type ExcludeActionFailure = T extends Kit.ActionFailure ? never : T extends void ? never : T; -type ActionsSuccess any>> = { [Key in keyof T]: ExcludeActionFailure>>; }[keyof T]; -type ExtractActionFailure = T extends Kit.ActionFailure ? X extends void ? never : X : never; -type ActionsFailure any>> = { [Key in keyof T]: Exclude>>, void>; }[keyof T]; -type ActionsExport = typeof import('./proxy+page.server.js').actions -export type SubmitFunction = Kit.SubmitFunction>, Expand>> -export type ActionData = Expand> | null; -export type PageServerData = Expand>>>>>; -export type PageData = Expand & EnsureDefined>; -export type Action | void = Record | void> = Kit.Action -export type Actions | void = Record | void> = Kit.Actions -export type PageProps = { params: RouteParams; data: PageData; form: ActionData } -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/mappools/[id]/proxy+page.server.ts b/.svelte-kit/types/src/routes/(app)/mappools/[id]/proxy+page.server.ts deleted file mode 100644 index 0077870..0000000 --- a/.svelte-kit/types/src/routes/(app)/mappools/[id]/proxy+page.server.ts +++ /dev/null @@ -1,146 +0,0 @@ -// @ts-nocheck -import { db } from '$lib/server/db'; -import { mappool, mappoolSlot } from '$lib/server/db/schema'; -import { eq, and } from 'drizzle-orm'; -import { error, redirect } from '@sveltejs/kit'; -import { getBeatmap } from '$lib/server/osu/api'; -import { requireAuth, requireOwnerOrAdmin } from '$lib/server/permissions'; -import type { PageServerLoad, Actions } from './$types'; - -export const load = async ({ params, locals }: Parameters[0]) => { - requireAuth(locals); - - const pool = await db.query.mappool.findFirst({ - where: eq(mappool.id, params.id), - with: { - slots: { - orderBy: (s, { asc }) => [asc(s.category), asc(s.orderInCategory)] - } - } - }); - - if (!pool) error(404, 'Mappool not found'); - - // Fetch beatmap metadata for all slots - const slotsWithBeatmaps = await Promise.all( - pool.slots.map(async (slot) => { - try { - const beatmap = await getBeatmap(slot.beatmapId); - return { - ...slot, - beatmap: { - title: beatmap.beatmapset.title, - artist: beatmap.beatmapset.artist, - version: beatmap.version, - starRating: beatmap.difficulty_rating, - bpm: beatmap.bpm, - totalLength: beatmap.total_length, - coverUrl: beatmap.beatmapset.covers['card@2x'], - url: beatmap.url - } - }; - } catch { - return { ...slot, beatmap: null }; - } - }) - ); - - const isOwner = pool.createdBy === locals.user!.id; - const isAdmin = locals.user!.role === 'admin'; - - return { - pool: { ...pool, slots: slotsWithBeatmaps }, - canEdit: isOwner || isAdmin - }; -}; - -export const actions = { - rename: async ({ params, request, locals }: import('./$types').RequestEvent) => { - const pool = await db.query.mappool.findFirst({ - where: eq(mappool.id, params.id) - }); - if (!pool) error(404, 'Mappool not found'); - requireOwnerOrAdmin(locals, pool.createdBy); - - const form = await request.formData(); - const name = form.get('name')?.toString()?.trim(); - if (!name) return { error: 'Name is required' }; - - await db.update(mappool).set({ name }).where(eq(mappool.id, params.id)); - return { success: true }; - }, - - addSlot: async ({ params, request, locals }: import('./$types').RequestEvent) => { - const pool = await db.query.mappool.findFirst({ - where: eq(mappool.id, params.id) - }); - if (!pool) error(404, 'Mappool not found'); - requireOwnerOrAdmin(locals, pool.createdBy); - - const form = await request.formData(); - let beatmapId = form.get('beatmapId')?.toString()?.trim(); - const category = form.get('category')?.toString()?.trim()?.toUpperCase(); - - if (!beatmapId || !category) { - return { error: 'Beatmap ID and category are required' }; - } - - const urlMatch = beatmapId.match(/beatmaps\/(\d+)/); - const setMatch = beatmapId.match(/beatmapsets\/\d+#\w+\/(\d+)/); - if (urlMatch) beatmapId = urlMatch[1]; - else if (setMatch) beatmapId = setMatch[1]; - - if (!/^\d+$/.test(beatmapId)) { - return { error: 'Invalid beatmap ID' }; - } - - let beatmap; - try { - beatmap = await getBeatmap(beatmapId); - } catch { - return { error: 'Beatmap not found on osu!' }; - } - - const existing = await db.query.mappoolSlot.findMany({ - where: and(eq(mappoolSlot.mappoolId, params.id), eq(mappoolSlot.category, category)) - }); - - await db.insert(mappoolSlot).values({ - mappoolId: params.id, - beatmapId, - category, - orderInCategory: existing.length + 1, - starRating: beatmap.difficulty_rating, - mods: category === 'NM' || category === 'TB' || category === 'FM' ? [] : [category] - }); - - return { success: true }; - }, - - removeSlot: async ({ params, request, locals }: import('./$types').RequestEvent) => { - const pool = await db.query.mappool.findFirst({ - where: eq(mappool.id, params.id) - }); - if (!pool) error(404, 'Mappool not found'); - requireOwnerOrAdmin(locals, pool.createdBy); - - const form = await request.formData(); - const slotId = form.get('slotId')?.toString(); - if (!slotId) return { error: 'Missing slot ID' }; - - await db.delete(mappoolSlot).where(eq(mappoolSlot.id, slotId)); - return { success: true }; - }, - - deletePool: async ({ params, locals }: import('./$types').RequestEvent) => { - const pool = await db.query.mappool.findFirst({ - where: eq(mappool.id, params.id) - }); - if (!pool) error(404, 'Mappool not found'); - requireOwnerOrAdmin(locals, pool.createdBy); - - await db.delete(mappool).where(eq(mappool.id, params.id)); - redirect(303, '/mappools'); - } -}; -;null as any as Actions; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/mappools/proxy+page.server.ts b/.svelte-kit/types/src/routes/(app)/mappools/proxy+page.server.ts deleted file mode 100644 index 94976e2..0000000 --- a/.svelte-kit/types/src/routes/(app)/mappools/proxy+page.server.ts +++ /dev/null @@ -1,34 +0,0 @@ -// @ts-nocheck -import { db } from '$lib/server/db'; -import { redirect } from '@sveltejs/kit'; -import type { PageServerLoad, Actions } from './$types'; -import { mappool } from '$lib/server/db/schema'; - -export const load = async ({ locals }: Parameters[0]) => { - if (!locals.user) redirect(302, '/'); - - const mappools = await db.query.mappool.findMany({ - with: { slots: true }, - orderBy: (m, { desc }) => [desc(m.createdAt)] - }); - - return { mappools }; -}; - -export const actions = { - create: async ({ request, locals }: import('./$types').RequestEvent) => { - if (!locals.user) redirect(302, '/'); - - const form = await request.formData(); - const name = form.get('name')?.toString()?.trim(); - if (!name) return { error: 'Name is required' }; - - const [created] = await db - .insert(mappool) - .values({ name, createdBy: locals.user.id }) - .returning(); - - redirect(303, `/mappools/${created.id}`); - } -}; -;null as any as Actions; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/matches/$types.d.ts b/.svelte-kit/types/src/routes/(app)/matches/$types.d.ts deleted file mode 100644 index 9681896..0000000 --- a/.svelte-kit/types/src/routes/(app)/matches/$types.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/(app)/matches'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageServerParentData = Omit, keyof import('../$types.js').LayoutServerData> & EnsureDefined; -type PageParentData = Omit, keyof import('../$types.js').LayoutData> & EnsureDefined; - -export type PageServerLoad = OutputDataShape> = Kit.ServerLoad; -export type PageServerLoadEvent = Parameters[0]; -type ExcludeActionFailure = T extends Kit.ActionFailure ? never : T extends void ? never : T; -type ActionsSuccess any>> = { [Key in keyof T]: ExcludeActionFailure>>; }[keyof T]; -type ExtractActionFailure = T extends Kit.ActionFailure ? X extends void ? never : X : never; -type ActionsFailure any>> = { [Key in keyof T]: Exclude>>, void>; }[keyof T]; -type ActionsExport = typeof import('./proxy+page.server.js').actions -export type SubmitFunction = Kit.SubmitFunction>, Expand>> -export type ActionData = Expand> | null; -export type PageServerData = Expand>>>>>; -export type PageData = Expand & EnsureDefined>; -export type Action | void = Record | void> = Kit.Action -export type Actions | void = Record | void> = Kit.Actions -export type PageProps = { params: RouteParams; data: PageData; form: ActionData } -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/matches/[id]/$types.d.ts b/.svelte-kit/types/src/routes/(app)/matches/[id]/$types.d.ts deleted file mode 100644 index 7316760..0000000 --- a/.svelte-kit/types/src/routes/(app)/matches/[id]/$types.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { id: string }; -type RouteId = '/(app)/matches/[id]'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageServerParentData = Omit, keyof import('../../$types.js').LayoutServerData> & EnsureDefined; -type PageParentData = Omit, keyof import('../../$types.js').LayoutData> & EnsureDefined; - -export type EntryGenerator = () => Promise> | Array; -export type PageServerLoad = OutputDataShape> = Kit.ServerLoad; -export type PageServerLoadEvent = Parameters[0]; -type ExcludeActionFailure = T extends Kit.ActionFailure ? never : T extends void ? never : T; -type ActionsSuccess any>> = { [Key in keyof T]: ExcludeActionFailure>>; }[keyof T]; -type ExtractActionFailure = T extends Kit.ActionFailure ? X extends void ? never : X : never; -type ActionsFailure any>> = { [Key in keyof T]: Exclude>>, void>; }[keyof T]; -type ActionsExport = typeof import('./proxy+page.server.js').actions -export type SubmitFunction = Kit.SubmitFunction>, Expand>> -export type ActionData = Expand> | null; -export type PageServerData = Expand>>>>>; -export type PageData = Expand & EnsureDefined>; -export type Action | void = Record | void> = Kit.Action -export type Actions | void = Record | void> = Kit.Actions -export type PageProps = { params: RouteParams; data: PageData; form: ActionData } -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/matches/[id]/proxy+page.server.ts b/.svelte-kit/types/src/routes/(app)/matches/[id]/proxy+page.server.ts deleted file mode 100644 index 7b5b145..0000000 --- a/.svelte-kit/types/src/routes/(app)/matches/[id]/proxy+page.server.ts +++ /dev/null @@ -1,202 +0,0 @@ -// @ts-nocheck -import { user } from '$lib/server/db/schema'; -import { db } from '$lib/server/db'; -import { getMatchFull, submitRoll, pickMap, cancelMatch } from '$lib/server/match/engine'; -import { playPickedMap, closeLobby, forceStartGame } from '$lib/server/match/orchestrator'; -import { getLobby, getLobbyStatus } from '$lib/server/bancho/client'; -import { error, redirect } from '@sveltejs/kit'; -import { getBeatmap } from '$lib/server/osu/api'; -import { hasRole } from '$lib/server/permissions'; -import type { PageServerLoad, Actions } from './$types'; -import { eq } from 'drizzle-orm'; -import type { MatchConfig } from '$lib/server/match/types'; - - -export const load = async ({ params, locals }: Parameters[0]) => { - if (!locals.user) redirect(302, '/'); - - let m; - try { - m = await getMatchFull(params.id); - } catch { - error(404, 'Match not found'); - } - - // Build beatmap metadata cache for all slots in the mappool - const beatmapCache: Record = {}; - if (m.mappool?.slots) { - await Promise.allSettled( - m.mappool.slots.map(async (slot) => { - try { - const bm = await getBeatmap(slot.beatmapId); - beatmapCache[slot.beatmapId] = { - title: bm.beatmapset.title, - artist: bm.beatmapset.artist, - version: bm.version, - starRating: bm.difficulty_rating, - bpm: bm.bpm, - totalLength: bm.total_length, - coverUrl: bm.beatmapset.covers['card@2x'], - listCoverUrl: bm.beatmapset.covers['list@2x'] - }; - } catch { /* skip */ } - }) - ); - } - - const isStaff = hasRole(locals.user.role, 'referee'); - - // Fetch player usernames for lobby status display - const playerNames: Record = {}; - for (const p of m.participants) { - for (const pl of p.players) { - const u = await db.query.user.findFirst({ where: eq(user.id, pl.userId) }); - if (u?.name) playerNames[pl.userId] = u.name; - } - } - - const lobbyStatus = getLobbyStatus(params.id); - - return { match: m, beatmapCache, userId: locals.user.id, isStaff, lobbyStatus, playerNames }; -}; - -export const actions = { - reinvite: async ({ params, locals }: import('./$types').RequestEvent) => { - if (!locals.user) redirect(302, '/'); - - const lobby = getLobby(params.id); - if (!lobby) return { error: 'No active IRC lobby for this match' }; - - // Only invite the currently logged-in user - const u = await db.query.user.findFirst({ where: eq(user.id, locals.user.id) }); - if (u?.name) { - await lobby.invite(u.name); - return { reinvited: [u.name] }; - } - - return { error: 'Could not find your username' }; - }, - - roll: async ({ params, locals }: import('./$types').RequestEvent) => { - if (!locals.user) redirect(302, '/'); - - const m = await getMatchFull(params.id); - - // Find the participant linked to the current user - let myParticipant = m.participants.find((p) => - p.players.some((pl) => pl.userId === locals.user!.id) - ); - - if (!myParticipant) { - return { error: 'You are not in this match' }; - } - - // For same-team testing: if user is on both sides, pick the one that hasn't rolled yet - if (myParticipant.rollValue !== null) { - const unrolled = m.participants.find((p) => p.rollValue === null); - if (unrolled) { - myParticipant = unrolled; - } else { - return { error: 'All participants have already rolled' }; - } - } - - const value = Math.floor(Math.random() * 100) + 1; - await submitRoll(params.id, myParticipant.id, value); - - // Announce in IRC lobby - const lobby = getLobby(params.id); - if (lobby) { - lobby.chat(`${myParticipant.team?.name ?? 'Player'} rolled ${value} (via web)`).catch(() => {}); - - // Check if all rolled → announce pick order - const updated = await getMatchFull(params.id); - if (updated.state === 'PICKING') { - const sorted = [...updated.participants].sort( - (a: any, b: any) => (a.pickOrder ?? 99) - (b.pickOrder ?? 99) - ); - lobby.chat( - `Rolls complete! ${sorted[0]?.team.name} picks first. Use !pick (e.g. !pick NM1) or pick in web UI.` - ).catch(() => {}); - } - } - - return { rolled: value, participantId: myParticipant.id }; - }, - - pick: async ({ params, request, locals }: import('./$types').RequestEvent) => { - if (!locals.user) redirect(302, '/'); - - const form = await request.formData(); - const slotId = form.get('slotId')?.toString(); - if (!slotId) return { error: 'No map selected' }; - - const m = await getMatchFull(params.id); - - // Find the expected picker based on pick order and game count - const sorted = [...m.participants].sort( - (a, b) => (a.pickOrder ?? 99) - (b.pickOrder ?? 99) - ); - const expectedIdx = m.games.length % sorted.length; - const expectedPicker = sorted[expectedIdx]; - - if (!expectedPicker) return { error: 'Cannot determine picker' }; - - // ── Verify the logged-in user is on the expected picker's team ── - // No staff bypass here — even admins can't pick for another team - const isOnPickerTeam = expectedPicker.players.some( - (pl) => pl.userId === locals.user!.id - ); - if (!isOnPickerTeam) { - return { error: "It's not your turn to pick" }; - } - - // ── Tiebreaker restriction ── - // TB maps can only be picked when both teams are at match point (e.g. 2-2 in BO5) - const config = m.config as MatchConfig; - const winsNeeded = Math.ceil(config.bestOf / 2); - const slot = m.mappool?.slots?.find((s) => s.id === slotId); - if (slot?.category === 'TB') { - const allAtMatchPoint = m.participants.every((p) => p.score === winsNeeded - 1); - if (!allAtMatchPoint) { - return { error: 'Tiebreaker can only be picked when both teams are at match point' }; - } - } - - try { - const game = await pickMap(params.id, expectedPicker.id, slotId); - - // Set map + mods in IRC lobby and start game (background) - playPickedMap(params.id, game.id).catch((err) => - console.error('[Match] IRC play failed:', err.message) - ); - - return { picked: true, gameId: game.id }; - } catch (e: any) { - return { error: e.message }; - } - }, - - forceStart: async ({ params, locals }: import('./$types').RequestEvent) => { - if (!locals.user) redirect(302, '/'); - // Only staff can force start - if (!hasRole(locals.user.role, 'referee')) { - return { error: 'Only referees and admins can force start' }; - } - await forceStartGame(params.id); - return { started: true }; - }, - - cancel: async ({ params, locals }: import('./$types').RequestEvent) => { - if (!locals.user) redirect(302, '/'); - // Only staff can cancel matches - if (!hasRole(locals.user.role, 'referee')) { - return { error: 'Only referees and admins can cancel matches' }; - } - - await cancelMatch(params.id); - await closeLobby(params.id); - redirect(303, '/matches'); - } -}; -;null as any as Actions; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/matches/proxy+page.server.ts b/.svelte-kit/types/src/routes/(app)/matches/proxy+page.server.ts deleted file mode 100644 index e35659e..0000000 --- a/.svelte-kit/types/src/routes/(app)/matches/proxy+page.server.ts +++ /dev/null @@ -1,78 +0,0 @@ -// @ts-nocheck -import { db } from '$lib/server/db'; -import { match } from '$lib/server/db/schema'; -import { redirect } from '@sveltejs/kit'; -import { desc } from 'drizzle-orm'; -import { createMatch } from '$lib/server/match/engine'; -import { initMatchLobby } from '$lib/server/match/orchestrator'; -import { requireAuth, requireRole, hasRole } from '$lib/server/permissions'; -import type { PageServerLoad, Actions } from './$types'; - -export const load = async ({ locals }: Parameters[0]) => { - requireAuth(locals); - - const matches = await db.query.match.findMany({ - with: { participants: { with: { team: true } } }, - orderBy: desc(match.createdAt), - limit: 50 - }); - - const teams = await db.query.team.findMany({ - orderBy: (t, { asc }) => [asc(t.name)] - }); - - const mappools = await db.query.mappool.findMany({ - with: { slots: true }, - orderBy: (m, { desc }) => [desc(m.createdAt)] - }); - - return { - matches, - teams, - mappools, - canCreateMatch: hasRole(locals.user!.role, 'referee') - }; -}; - -export const actions = { - createMatch: async ({ request, locals }: import('./$types').RequestEvent) => { - // Only referees and admins can create matches manually - requireRole(locals, 'referee', 'Only referees and admins can create matches'); - - const form = await request.formData(); - const name = form.get('name')?.toString()?.trim() || 'Custom Match'; - const team1Id = form.get('team1')?.toString(); - const team2Id = form.get('team2')?.toString(); - const mappoolId = form.get('mappool')?.toString(); - const bestOf = parseInt(form.get('bestOf')?.toString() ?? '7'); - - console.log('[Matches] CREATE:', { name, team1Id, team2Id, mappoolId, bestOf }); - - if (!team1Id || !team2Id || !mappoolId) { - return { error: 'All fields are required' }; - } - - let result; - try { - result = await createMatch({ - name, - config: { bestOf, teamSize: 1, scoringType: 'score' }, - mappoolId, - teams: [team1Id, team2Id], - createdBy: locals.user!.id - }); - console.log('[Matches] Created:', result.id); - } catch (e: any) { - console.error('[Matches] Error:', e); - return { error: e.message }; - } - - // Create IRC lobby in background - initMatchLobby(result.id).catch((err) => { - console.error('[Matches] IRC lobby failed:', err.message); - }); - - redirect(303, `/matches/${result.id}`); - } -}; -;null as any as Actions; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/proxy+layout.server.ts b/.svelte-kit/types/src/routes/(app)/proxy+layout.server.ts deleted file mode 100644 index 55d5e7d..0000000 --- a/.svelte-kit/types/src/routes/(app)/proxy+layout.server.ts +++ /dev/null @@ -1,42 +0,0 @@ -// @ts-nocheck -// src/routes/(app)/+layout.server.ts -import type { LayoutServerLoad } from './$types'; -import { isRootAdmin } from '$lib/server/permissions'; -import { db } from '$lib/server/db'; -import { match, matchParticipant, matchParticipantPlayer } from '$lib/server/db/schema'; -import { eq, and, inArray } from 'drizzle-orm'; - -export const load = async ({ locals }: Parameters[0]) => { - let activeMatch: { id: string; name: string | null; state: string } | null = null; - - if (locals.user) { - const rows = await db - .select({ id: match.id, name: match.name, state: match.state }) - .from(matchParticipantPlayer) - .innerJoin(matchParticipant, eq(matchParticipantPlayer.participantId, matchParticipant.id)) - .innerJoin(match, eq(matchParticipant.matchId, match.id)) - .where( - and( - eq(matchParticipantPlayer.userId, locals.user.id), - inArray(match.state, ['CREATED', 'LOBBY', 'ROLLING', 'PICKING', 'PLAYING']) - ) - ) - .limit(1); - - activeMatch = rows[0] ?? null; - } - - return { - user: locals.user - ? { - id: locals.user.id, - name: locals.user.name, - email: locals.user.email, - image: locals.user.image, - role: locals.user.role ?? 'player', - isRootAdmin: isRootAdmin(locals.user.email) - } - : null, - activeMatch - }; -}; diff --git a/.svelte-kit/types/src/routes/(app)/proxy+page.server.ts b/.svelte-kit/types/src/routes/(app)/proxy+page.server.ts deleted file mode 100644 index 39db26b..0000000 --- a/.svelte-kit/types/src/routes/(app)/proxy+page.server.ts +++ /dev/null @@ -1,50 +0,0 @@ -// @ts-nocheck -// src/routes/(app)/+page.server.ts -import { db } from '$lib/server/db'; -import { match, team, mappool } from '$lib/server/db/schema'; -import { eq, desc, count, inArray } from 'drizzle-orm'; -import type { PageServerLoad } from './$types'; - -export const load = async ({ locals }: Parameters[0]) => { - // ── NOT LOGGED IN → landing page (no redirect loop!) ── - if (!locals.user) { - return { - authenticated: false as const, - recentMatches: [], - liveMatches: [], - stats: { matches: 0, finished: 0, teams: 0, mappools: 0 } - }; - } - - // ── LOGGED IN → dashboard data ── - const recentMatches = await db.query.match.findMany({ - with: { participants: { with: { team: true } } }, - orderBy: desc(match.createdAt), - limit: 5 - }); - - const liveMatches = await db.query.match.findMany({ - with: { participants: { with: { team: true } } }, - where: inArray(match.state, ['LOBBY', 'ROLLING', 'PICKING', 'PLAYING']) - }); - - const [matchCount] = await db.select({ count: count() }).from(match); - const [teamCount] = await db.select({ count: count() }).from(team); - const [poolCount] = await db.select({ count: count() }).from(mappool); - const [finishedCount] = await db - .select({ count: count() }) - .from(match) - .where(eq(match.state, 'FINISHED')); - - return { - authenticated: true as const, - recentMatches, - liveMatches, - stats: { - matches: matchCount.count, - finished: finishedCount.count, - teams: teamCount.count, - mappools: poolCount.count - } - }; -}; diff --git a/.svelte-kit/types/src/routes/(app)/settings/$types.d.ts b/.svelte-kit/types/src/routes/(app)/settings/$types.d.ts deleted file mode 100644 index a755813..0000000 --- a/.svelte-kit/types/src/routes/(app)/settings/$types.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/(app)/settings'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageServerParentData = Omit, keyof import('../$types.js').LayoutServerData> & EnsureDefined; -type PageParentData = Omit, keyof import('../$types.js').LayoutData> & EnsureDefined; - -export type PageServerLoad = OutputDataShape> = Kit.ServerLoad; -export type PageServerLoadEvent = Parameters[0]; -type ExcludeActionFailure = T extends Kit.ActionFailure ? never : T extends void ? never : T; -type ActionsSuccess any>> = { [Key in keyof T]: ExcludeActionFailure>>; }[keyof T]; -type ExtractActionFailure = T extends Kit.ActionFailure ? X extends void ? never : X : never; -type ActionsFailure any>> = { [Key in keyof T]: Exclude>>, void>; }[keyof T]; -type ActionsExport = typeof import('./proxy+page.server.js').actions -export type SubmitFunction = Kit.SubmitFunction>, Expand>> -export type ActionData = Expand> | null; -export type PageServerData = Expand>>>>>; -export type PageData = Expand & EnsureDefined>; -export type Action | void = Record | void> = Kit.Action -export type Actions | void = Record | void> = Kit.Actions -export type PageProps = { params: RouteParams; data: PageData; form: ActionData } -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/settings/proxy+page.server.ts b/.svelte-kit/types/src/routes/(app)/settings/proxy+page.server.ts deleted file mode 100644 index 680d938..0000000 --- a/.svelte-kit/types/src/routes/(app)/settings/proxy+page.server.ts +++ /dev/null @@ -1,48 +0,0 @@ -// @ts-nocheck -// src/routes/(app)/settings/+page.server.ts -import { redirect } from '@sveltejs/kit'; -import { auth } from '$lib/server/auth'; -import { db } from '$lib/server/db'; -import { playerRating } from '$lib/server/db/schema'; -import { account } from '$lib/server/db/auth.schema'; -import { eq, and } from 'drizzle-orm'; -import type { PageServerLoad, Actions } from './$types'; - -export const load = async ({ locals }: Parameters[0]) => { - if (!locals.user) redirect(302, '/'); - - // Get player rating - const rating = await db.query.playerRating.findFirst({ - where: eq(playerRating.userId, locals.user.id) - }); - - // Get linked osu! account info - const osuAccount = await db.query.account.findFirst({ - where: and(eq(account.userId, locals.user.id), eq(account.providerId, 'osu')) - }); - - return { - profile: { - id: locals.user.id, - name: locals.user.name, - email: locals.user.email, - image: locals.user.image, - role: locals.user.role ?? 'player', - createdAt: locals.user.createdAt - }, - rating: rating - ? { elo: rating.elo, wins: rating.wins, losses: rating.losses } - : { elo: 1000, wins: 0, losses: 0 }, - hasOsuLinked: !!osuAccount - }; -}; - -export const actions = { - logout: async (event: import('./$types').RequestEvent) => { - await auth.api.signOut({ - headers: event.request.headers - }); - redirect(302, '/'); - } -}; -;null as any as Actions; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/teams/$types.d.ts b/.svelte-kit/types/src/routes/(app)/teams/$types.d.ts deleted file mode 100644 index a0ce573..0000000 --- a/.svelte-kit/types/src/routes/(app)/teams/$types.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/(app)/teams'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageServerParentData = Omit, keyof import('../$types.js').LayoutServerData> & EnsureDefined; -type PageParentData = Omit, keyof import('../$types.js').LayoutData> & EnsureDefined; - -export type PageServerLoad = OutputDataShape> = Kit.ServerLoad; -export type PageServerLoadEvent = Parameters[0]; -type ExcludeActionFailure = T extends Kit.ActionFailure ? never : T extends void ? never : T; -type ActionsSuccess any>> = { [Key in keyof T]: ExcludeActionFailure>>; }[keyof T]; -type ExtractActionFailure = T extends Kit.ActionFailure ? X extends void ? never : X : never; -type ActionsFailure any>> = { [Key in keyof T]: Exclude>>, void>; }[keyof T]; -type ActionsExport = typeof import('./proxy+page.server.js').actions -export type SubmitFunction = Kit.SubmitFunction>, Expand>> -export type ActionData = Expand> | null; -export type PageServerData = Expand>>>>>; -export type PageData = Expand & EnsureDefined>; -export type Action | void = Record | void> = Kit.Action -export type Actions | void = Record | void> = Kit.Actions -export type PageProps = { params: RouteParams; data: PageData; form: ActionData } -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/(app)/teams/proxy+page.server.ts b/.svelte-kit/types/src/routes/(app)/teams/proxy+page.server.ts deleted file mode 100644 index 6fd7ffb..0000000 --- a/.svelte-kit/types/src/routes/(app)/teams/proxy+page.server.ts +++ /dev/null @@ -1,153 +0,0 @@ -// @ts-nocheck -import { db } from '$lib/server/db'; -import { team, teamMember, user } from '$lib/server/db/schema'; -import { eq } from 'drizzle-orm'; -import { redirect } from '@sveltejs/kit'; -import { requireAuth, requireOwnerOrAdmin } from '$lib/server/permissions'; -import type { PageServerLoad, Actions } from './$types'; - -export const load = async ({ locals }: Parameters[0]) => { - const u = requireAuth(locals); - - const teams = await db.query.team.findMany({ - with: { - members: true - }, - orderBy: (t, { desc }) => [desc(t.createdAt)] - }); - - // Fetch member user details - const teamsWithUsers = await Promise.all( - teams.map(async (t) => { - const membersWithUsers = await Promise.all( - t.members.map(async (m) => { - const usr = await db.query.user.findFirst({ - where: eq(user.id, m.userId) - }); - return { ...m, user: usr ? { id: usr.id, name: usr.name, image: usr.image } : null }; - }) - ); - return { ...t, members: membersWithUsers }; - }) - ); - - return { teams: teamsWithUsers, userId: u.id }; -}; - -export const actions = { - create: async ({ request, locals }: import('./$types').RequestEvent) => { - const u = requireAuth(locals); - - const form = await request.formData(); - const name = form.get('name')?.toString()?.trim(); - - if (!name) return { error: 'Team name is required' }; - - const [created] = await db - .insert(team) - .values({ - name, - ownerId: u.id, - isPersonal: false - }) - .returning(); - - // Add creator as captain - await db.insert(teamMember).values({ - teamId: created.id, - userId: u.id, - role: 'captain' - }); - - return { success: true }; - }, - - rename: async ({ request, locals }: import('./$types').RequestEvent) => { - const form = await request.formData(); - const teamId = form.get('teamId')?.toString(); - const name = form.get('name')?.toString()?.trim(); - - if (!teamId || !name) return { error: 'Team ID and name are required' }; - - const t = await db.query.team.findFirst({ where: eq(team.id, teamId) }); - if (!t) return { error: 'Team not found' }; - if (t.isPersonal) return { error: 'Cannot rename personal team' }; - - requireOwnerOrAdmin(locals, t.ownerId); - - await db.update(team).set({ name }).where(eq(team.id, teamId)); - return { success: true }; - }, - - addMember: async ({ request, locals }: import('./$types').RequestEvent) => { - requireAuth(locals); - - const form = await request.formData(); - const teamId = form.get('teamId')?.toString(); - const username = form.get('username')?.toString()?.trim(); - - if (!teamId || !username) return { error: 'Team and username are required' }; - - // Only owner or admin can add members - const t = await db.query.team.findFirst({ where: eq(team.id, teamId) }); - if (!t) return { error: 'Team not found' }; - requireOwnerOrAdmin(locals, t.ownerId); - - // Find user by osu! username - const u = await db.query.user.findFirst({ - where: eq(user.name, username) - }); - - if (!u) return { error: `User "${username}" not found. They need to log in first.` }; - - // Check not already member - const existing = await db.query.teamMember.findFirst({ - where: (m, { and, eq }) => and(eq(m.teamId, teamId), eq(m.userId, u.id)) - }); - - if (existing) return { error: `${username} is already on this team` }; - - await db.insert(teamMember).values({ - teamId, - userId: u.id, - role: 'member' - }); - - return { success: true }; - }, - - removeMember: async ({ request, locals }: import('./$types').RequestEvent) => { - requireAuth(locals); - - const form = await request.formData(); - const memberId = form.get('memberId')?.toString(); - if (!memberId) return { error: 'Missing member ID' }; - - // Look up the member to find the team, then check ownership - const member = await db.query.teamMember.findFirst({ - where: eq(teamMember.id, memberId), - with: { team: true } - }); - if (!member) return { error: 'Member not found' }; - requireOwnerOrAdmin(locals, member.team.ownerId); - - await db.delete(teamMember).where(eq(teamMember.id, memberId)); - return { success: true }; - }, - - deleteTeam: async ({ request, locals }: import('./$types').RequestEvent) => { - const form = await request.formData(); - const teamId = form.get('teamId')?.toString(); - if (!teamId) return { error: 'Missing team ID' }; - - const t = await db.query.team.findFirst({ where: eq(team.id, teamId) }); - if (!t) return { error: 'Team not found' }; - if (t.isPersonal) return { error: 'Cannot delete personal team' }; - - requireOwnerOrAdmin(locals, t.ownerId); - - await db.delete(team).where(eq(team.id, teamId)); - return { success: true }; - } -}; -;null as any as Actions; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/health/$types.d.ts b/.svelte-kit/types/src/routes/api/health/$types.d.ts deleted file mode 100644 index 2d1b6b5..0000000 --- a/.svelte-kit/types/src/routes/api/health/$types.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/api/health'; - -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/mappools/$types.d.ts b/.svelte-kit/types/src/routes/api/mappools/$types.d.ts deleted file mode 100644 index 13ec1ce..0000000 --- a/.svelte-kit/types/src/routes/api/mappools/$types.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/api/mappools'; - -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/mappools/[id]/$types.d.ts b/.svelte-kit/types/src/routes/api/mappools/[id]/$types.d.ts deleted file mode 100644 index 9a9b6f0..0000000 --- a/.svelte-kit/types/src/routes/api/mappools/[id]/$types.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { id: string }; -type RouteId = '/api/mappools/[id]'; - -export type EntryGenerator = () => Promise> | Array; -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/mappools/[id]/slots/$types.d.ts b/.svelte-kit/types/src/routes/api/mappools/[id]/slots/$types.d.ts deleted file mode 100644 index 4d708dc..0000000 --- a/.svelte-kit/types/src/routes/api/mappools/[id]/slots/$types.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { id: string }; -type RouteId = '/api/mappools/[id]/slots'; - -export type EntryGenerator = () => Promise> | Array; -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/mappools/[id]/slots/[slotId]/$types.d.ts b/.svelte-kit/types/src/routes/api/mappools/[id]/slots/[slotId]/$types.d.ts deleted file mode 100644 index 310a165..0000000 --- a/.svelte-kit/types/src/routes/api/mappools/[id]/slots/[slotId]/$types.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { id: string; slotId: string }; -type RouteId = '/api/mappools/[id]/slots/[slotId]'; - -export type EntryGenerator = () => Promise> | Array; -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/matches/$types.d.ts b/.svelte-kit/types/src/routes/api/matches/$types.d.ts deleted file mode 100644 index 2568711..0000000 --- a/.svelte-kit/types/src/routes/api/matches/$types.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/api/matches'; - -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/matches/[id]/$types.d.ts b/.svelte-kit/types/src/routes/api/matches/[id]/$types.d.ts deleted file mode 100644 index cd77085..0000000 --- a/.svelte-kit/types/src/routes/api/matches/[id]/$types.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { id: string }; -type RouteId = '/api/matches/[id]'; - -export type EntryGenerator = () => Promise> | Array; -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/matches/[id]/lobby/$types.d.ts b/.svelte-kit/types/src/routes/api/matches/[id]/lobby/$types.d.ts deleted file mode 100644 index 8fc5bc0..0000000 --- a/.svelte-kit/types/src/routes/api/matches/[id]/lobby/$types.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { id: string }; -type RouteId = '/api/matches/[id]/lobby'; - -export type EntryGenerator = () => Promise> | Array; -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/matches/[id]/pick/$types.d.ts b/.svelte-kit/types/src/routes/api/matches/[id]/pick/$types.d.ts deleted file mode 100644 index c5ec69b..0000000 --- a/.svelte-kit/types/src/routes/api/matches/[id]/pick/$types.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { id: string }; -type RouteId = '/api/matches/[id]/pick'; - -export type EntryGenerator = () => Promise> | Array; -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/matches/[id]/roll/$types.d.ts b/.svelte-kit/types/src/routes/api/matches/[id]/roll/$types.d.ts deleted file mode 100644 index 106ee11..0000000 --- a/.svelte-kit/types/src/routes/api/matches/[id]/roll/$types.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { id: string }; -type RouteId = '/api/matches/[id]/roll'; - -export type EntryGenerator = () => Promise> | Array; -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/matches/[id]/rolling/$types.d.ts b/.svelte-kit/types/src/routes/api/matches/[id]/rolling/$types.d.ts deleted file mode 100644 index 0a3d3e1..0000000 --- a/.svelte-kit/types/src/routes/api/matches/[id]/rolling/$types.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { id: string }; -type RouteId = '/api/matches/[id]/rolling'; - -export type EntryGenerator = () => Promise> | Array; -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/matches/[id]/score/$types.d.ts b/.svelte-kit/types/src/routes/api/matches/[id]/score/$types.d.ts deleted file mode 100644 index 2ce9814..0000000 --- a/.svelte-kit/types/src/routes/api/matches/[id]/score/$types.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { id: string }; -type RouteId = '/api/matches/[id]/score'; - -export type EntryGenerator = () => Promise> | Array; -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/osu/beatmap/[id]/$types.d.ts b/.svelte-kit/types/src/routes/api/osu/beatmap/[id]/$types.d.ts deleted file mode 100644 index d16ac95..0000000 --- a/.svelte-kit/types/src/routes/api/osu/beatmap/[id]/$types.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { id: string }; -type RouteId = '/api/osu/beatmap/[id]'; - -export type EntryGenerator = () => Promise> | Array; -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/api/queue/$types.d.ts b/.svelte-kit/types/src/routes/api/queue/$types.d.ts deleted file mode 100644 index 033b7ae..0000000 --- a/.svelte-kit/types/src/routes/api/queue/$types.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/api/queue'; - -export type RequestHandler = Kit.RequestHandler; -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/demo/$types.d.ts b/.svelte-kit/types/src/routes/demo/$types.d.ts deleted file mode 100644 index 745d053..0000000 --- a/.svelte-kit/types/src/routes/demo/$types.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/demo'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageParentData = EnsureDefined; - -export type PageServerData = null; -export type PageData = Expand; -export type PageProps = { params: RouteParams; data: PageData } \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/demo/better-auth/$types.d.ts b/.svelte-kit/types/src/routes/demo/better-auth/$types.d.ts deleted file mode 100644 index 000a790..0000000 --- a/.svelte-kit/types/src/routes/demo/better-auth/$types.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/demo/better-auth'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageServerParentData = EnsureDefined; -type PageParentData = EnsureDefined; - -export type PageServerLoad = OutputDataShape> = Kit.ServerLoad; -export type PageServerLoadEvent = Parameters[0]; -type ExcludeActionFailure = T extends Kit.ActionFailure ? never : T extends void ? never : T; -type ActionsSuccess any>> = { [Key in keyof T]: ExcludeActionFailure>>; }[keyof T]; -type ExtractActionFailure = T extends Kit.ActionFailure ? X extends void ? never : X : never; -type ActionsFailure any>> = { [Key in keyof T]: Exclude>>, void>; }[keyof T]; -type ActionsExport = typeof import('./proxy+page.server.js').actions -export type SubmitFunction = Kit.SubmitFunction>, Expand>> -export type ActionData = Expand> | null; -export type PageServerData = Expand>>>>>; -export type PageData = Expand & EnsureDefined>; -export type Action | void = Record | void> = Kit.Action -export type Actions | void = Record | void> = Kit.Actions -export type PageProps = { params: RouteParams; data: PageData; form: ActionData } -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/demo/better-auth/login/$types.d.ts b/.svelte-kit/types/src/routes/demo/better-auth/login/$types.d.ts deleted file mode 100644 index 2495da3..0000000 --- a/.svelte-kit/types/src/routes/demo/better-auth/login/$types.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/demo/better-auth/login'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageServerParentData = EnsureDefined; -type PageParentData = EnsureDefined; - -export type PageServerLoad = OutputDataShape> = Kit.ServerLoad; -export type PageServerLoadEvent = Parameters[0]; -type ExcludeActionFailure = T extends Kit.ActionFailure ? never : T extends void ? never : T; -type ActionsSuccess any>> = { [Key in keyof T]: ExcludeActionFailure>>; }[keyof T]; -type ExtractActionFailure = T extends Kit.ActionFailure ? X extends void ? never : X : never; -type ActionsFailure any>> = { [Key in keyof T]: Exclude>>, void>; }[keyof T]; -type ActionsExport = typeof import('./proxy+page.server.js').actions -export type SubmitFunction = Kit.SubmitFunction>, Expand>> -export type ActionData = Expand> | null; -export type PageServerData = Expand>>>>>; -export type PageData = Expand & EnsureDefined>; -export type Action | void = Record | void> = Kit.Action -export type Actions | void = Record | void> = Kit.Actions -export type PageProps = { params: RouteParams; data: PageData; form: ActionData } -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/demo/better-auth/login/proxy+page.server.ts b/.svelte-kit/types/src/routes/demo/better-auth/login/proxy+page.server.ts deleted file mode 100644 index 189ea2a..0000000 --- a/.svelte-kit/types/src/routes/demo/better-auth/login/proxy+page.server.ts +++ /dev/null @@ -1,80 +0,0 @@ -// @ts-nocheck -import { fail, redirect } from '@sveltejs/kit'; -import type { Actions } from './$types'; -import type { PageServerLoad } from './$types'; -import { auth } from '$lib/server/auth'; -import { APIError } from 'better-auth/api'; - -export const load = async (event: Parameters[0]) => { - if (event.locals.user) { - return redirect(302, '/demo/better-auth'); - } - return {}; -}; - -export const actions = { - signInEmail: async (event: import('./$types').RequestEvent) => { - const formData = await event.request.formData(); - const email = formData.get('email')?.toString() ?? ''; - const password = formData.get('password')?.toString() ?? ''; - - try { - await auth.api.signInEmail({ - body: { - email, - password, - callbackURL: '/auth/verification-success' - } - }); - } catch (error) { - if (error instanceof APIError) { - return fail(400, { message: error.message || 'Signin failed' }); - } - return fail(500, { message: 'Unexpected error' }); - } - - return redirect(302, '/demo/better-auth'); - }, - signUpEmail: async (event: import('./$types').RequestEvent) => { - const formData = await event.request.formData(); - const email = formData.get('email')?.toString() ?? ''; - const password = formData.get('password')?.toString() ?? ''; - const name = formData.get('name')?.toString() ?? ''; - - try { - await auth.api.signUpEmail({ - body: { - email, - password, - name, - callbackURL: '/auth/verification-success' - } - }); - } catch (error) { - if (error instanceof APIError) { - return fail(400, { message: error.message || 'Registration failed' }); - } - return fail(500, { message: 'Unexpected error' }); - } - - return redirect(302, '/demo/better-auth'); - }, - signInSocial: async (event: import('./$types').RequestEvent) => { - const formData = await event.request.formData(); - const provider = formData.get('provider')?.toString() ?? 'osu'; - const callbackURL = formData.get('callbackURL')?.toString() ?? '/demo/better-auth'; - - const result = await auth.api.signInSocial({ - body: { - provider: provider as 'osu', - callbackURL - } - }); - - if (result.url) { - return redirect(302, result.url); - } - return fail(400, { message: 'Social sign-in failed' }); - } -}; -;null as any as Actions; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/demo/better-auth/proxy+page.server.ts b/.svelte-kit/types/src/routes/demo/better-auth/proxy+page.server.ts deleted file mode 100644 index 33435cd..0000000 --- a/.svelte-kit/types/src/routes/demo/better-auth/proxy+page.server.ts +++ /dev/null @@ -1,22 +0,0 @@ -// @ts-nocheck -import { redirect } from '@sveltejs/kit'; -import type { Actions } from './$types'; -import type { PageServerLoad } from './$types'; -import { auth } from '$lib/server/auth'; - -export const load = async (event: Parameters[0]) => { - if (!event.locals.user) { - return redirect(302, '/demo/better-auth/login'); - } - return { user: event.locals.user }; -}; - -export const actions = { - signOut: async (event: import('./$types').RequestEvent) => { - await auth.api.signOut({ - headers: event.request.headers - }); - return redirect(302, '/demo/better-auth/login'); - } -}; -;null as any as Actions; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/login/$types.d.ts b/.svelte-kit/types/src/routes/login/$types.d.ts deleted file mode 100644 index e43c439..0000000 --- a/.svelte-kit/types/src/routes/login/$types.d.ts +++ /dev/null @@ -1,25 +0,0 @@ -import type * as Kit from '@sveltejs/kit'; - -type Expand = T extends infer O ? { [K in keyof O]: O[K] } : never; -// @ts-ignore -type MatcherParam = M extends (param : string) => param is infer U ? U extends string ? U : string : string; -type RouteParams = { }; -type RouteId = '/login'; -type MaybeWithVoid = {} extends T ? T | void : T; -export type RequiredKeys = { [K in keyof T]-?: {} extends { [P in K]: T[K] } ? never : K; }[keyof T]; -type OutputDataShape = MaybeWithVoid> & Partial> & Record> -type EnsureDefined = T extends null | undefined ? {} : T; -type OptionalUnion, A extends keyof U = U extends U ? keyof U : never> = U extends unknown ? { [P in Exclude]?: never } & U : never; -export type Snapshot = Kit.Snapshot; -type PageServerParentData = EnsureDefined; -type PageParentData = EnsureDefined; - -export type PageServerLoad = OutputDataShape> = Kit.ServerLoad; -export type PageServerLoadEvent = Parameters[0]; -export type ActionData = unknown; -export type PageServerData = Expand>>>>>; -export type PageData = Expand & EnsureDefined>; -export type Action | void = Record | void> = Kit.Action -export type Actions | void = Record | void> = Kit.Actions -export type PageProps = { params: RouteParams; data: PageData; form: ActionData } -export type RequestEvent = Kit.RequestEvent; \ No newline at end of file diff --git a/.svelte-kit/types/src/routes/login/proxy+page.server.ts b/.svelte-kit/types/src/routes/login/proxy+page.server.ts deleted file mode 100644 index 381125c..0000000 --- a/.svelte-kit/types/src/routes/login/proxy+page.server.ts +++ /dev/null @@ -1,19 +0,0 @@ -// @ts-nocheck -import { redirect } from '@sveltejs/kit'; -import { auth } from '$lib/server/auth'; -import type { PageServerLoad } from './$types'; - -export const load = async (event: Parameters[0]) => { - if (event.locals.user) redirect(302, '/'); - - const result = await auth.api.signInSocial({ - body: { - provider: 'osu', - callbackURL: '/' - } - }); - - if (result.url) redirect(302, result.url); - - return {}; -};