From acdfbc5d4d3a1c0b562e19144377f96c59f7f93b Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Sun, 16 Aug 2026 12:11:21 +0300 Subject: [PATCH] Exclude the Svelte workspaces from Biome; formatting pass apps/web and packages/components get the Prettier+ESLint stack later per svelte-big-bang.md; Biome stays scoped to the React app and tooling. --- apps/web/scripts/build-with-all-locales.ts | 5 +- apps/web/scripts/combine-locales.ts | 5 +- apps/web/src/app.d.ts | 2 - apps/web/src/hooks.server.ts | 2 +- apps/web/src/lib/components/Avatar.svelte | 154 +++--- apps/web/src/lib/components/Flag.svelte | 14 +- .../components/HydrationTestIndicator.svelte | 48 +- apps/web/src/lib/components/Image.svelte | 60 +-- .../web/src/lib/components/InfoPopover.svelte | 16 +- apps/web/src/lib/components/Main.svelte | 38 +- apps/web/src/lib/components/MetaTags.svelte | 40 +- apps/web/src/lib/components/ModeImage.svelte | 30 +- .../src/lib/components/NotificationDot.svelte | 10 +- apps/web/src/lib/components/Placement.svelte | 84 ++-- apps/web/src/lib/components/PwaLinks.svelte | 10 +- apps/web/src/lib/components/TierImage.svelte | 22 +- apps/web/src/lib/components/TierPill.svelte | 46 +- .../web/src/lib/components/WeaponImage.svelte | 104 ++-- .../src/lib/components/WeaponSelect.svelte | 184 +++---- .../lib/components/icons/DiscordIcon.svelte | 2 +- .../lib/components/icons/GitHubIcon.svelte | 2 +- .../lib/components/icons/PatreonIcon.svelte | 2 +- .../lib/components/icons/TwitchIcon.svelte | 2 +- .../components/layout/AnythingAdder.svelte | 66 +-- .../lib/components/layout/EventsList.svelte | 110 ++-- .../src/lib/components/layout/Footer.svelte | 58 +-- .../lib/components/layout/FriendMenu.svelte | 95 ++-- .../lib/components/layout/GhostTabBar.svelte | 10 +- .../src/lib/components/layout/Layout.svelte | 403 ++++++++------- .../lib/components/layout/ListButton.svelte | 52 +- .../src/lib/components/layout/ListLink.svelte | 60 +-- .../layout/LogInButtonContainer.svelte | 12 +- .../lib/components/layout/MobileNav.svelte | 151 +++--- .../layout/MobileNavMenuOverlay.svelte | 106 ++-- .../lib/components/layout/MobilePanel.svelte | 42 +- .../lib/components/layout/MobileTab.svelte | 46 +- .../src/lib/components/layout/SideNav.svelte | 34 +- .../components/layout/SideNavFooter.svelte | 10 +- .../components/layout/SideNavHeader.svelte | 14 +- .../components/layout/SideNavUserPanel.svelte | 34 +- .../components/layout/StreamListItems.svelte | 110 ++-- .../lib/components/layout/TopNavMenus.svelte | 90 ++-- .../components/layout/TopRightButtons.svelte | 52 +- .../src/lib/components/pwa-splash-screens.ts | 138 +++-- .../src/lib/features/auth/session.server.ts | 2 +- apps/web/src/lib/features/auth/user-state.ts | 2 +- .../features/core-streams/streams.server.ts | 2 +- .../friends/FriendRepository.server.ts | 2 +- .../features/friends/friends-utils.server.ts | 2 +- .../front-page/ShowcaseTournaments.server.ts | 4 +- .../features/front-page/front-page.remote.ts | 2 +- .../LeaderboardRepository.server.ts | 2 +- .../features/leaderboards/TopTenPlayer.svelte | 71 ++- .../components/Leaderboards.svelte | 132 ++--- .../components/OwnEntryPeek.svelte | 24 +- .../components/PlayersTable.svelte | 32 +- .../components/TeamStaffMenu.svelte | 30 +- .../leaderboards/components/TeamTable.svelte | 56 +-- .../leaderboards/components/XPTable.svelte | 16 +- .../leaderboards/leaderboards-core.server.ts | 2 +- .../leaderboards-search-params.test.ts | 10 +- .../leaderboards/leaderboards.remote.ts | 7 +- .../src/lib/features/mmr/SeasonSelect.svelte | 44 +- .../components/NotificationContent.svelte | 32 +- .../components/NotificationItem.svelte | 44 +- .../notifications/notifications-utils.ts | 7 +- .../notifications/notifications.remote.ts | 2 +- .../sendouq-streams/streams.server.ts | 8 +- .../lib/features/sidebar/sidebar.server.ts | 2 +- .../src/lib/features/theme/ThemeHead.svelte | 24 +- .../SavedCalendarEventRepository.server.ts | 2 +- .../tournament/TournamentRepository.server.ts | 2 +- .../search-params/search-params.test.ts | 2 +- .../modules/search-params/search-params.ts | 7 +- apps/web/src/lib/server/db/tables.ts | 21 +- apps/web/src/lib/utils/e2e.ts | 3 +- apps/web/src/routes/+error.svelte | 2 +- apps/web/src/routes/+layout.svelte | 52 +- .../src/routes/auth/impersonate/+server.ts | 15 +- .../routes/auth/impersonate/stop/+server.ts | 8 +- apps/web/src/routes/end-season/+server.ts | 2 +- apps/web/src/routes/leaderboards/+page.svelte | 4 +- apps/web/src/routes/refresh-caches/+server.ts | 2 +- apps/web/src/routes/run-routine/+server.ts | 2 +- apps/web/src/routes/sidenav/+server.ts | 5 +- apps/web/src/routes/theme/+server.ts | 2 +- apps/web/vite.config.ts | 3 +- biome.json | 2 + packages/components/src/Button.svelte | 62 +-- packages/components/src/ChipRadio.svelte | 20 +- packages/components/src/ChipRadioGroup.svelte | 26 +- packages/components/src/Menu.svelte | 216 ++++---- packages/components/src/MenuItem.svelte | 52 +- packages/components/src/Popover.svelte | 154 +++--- packages/components/src/Select.svelte | 471 +++++++++--------- packages/components/src/SelectItem.svelte | 36 +- .../components/src/SelectItemSection.svelte | 16 +- packages/components/src/Tab.svelte | 68 ++- packages/components/src/TabList.svelte | 27 +- packages/components/src/TabPanel.svelte | 20 +- packages/components/src/Tabs.svelte | 176 ++++--- packages/components/src/tabs-context.ts | 5 +- 102 files changed, 2328 insertions(+), 2293 deletions(-) diff --git a/apps/web/scripts/build-with-all-locales.ts b/apps/web/scripts/build-with-all-locales.ts index f602f3ad6..67209a4b5 100644 --- a/apps/web/scripts/build-with-all-locales.ts +++ b/apps/web/scripts/build-with-all-locales.ts @@ -3,7 +3,10 @@ import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; -const WEB_DIR = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); +const WEB_DIR = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "..", +); const SETTINGS_PATH = path.join(WEB_DIR, "project.inlang/settings.json"); const LOCALES_DIR = path.resolve(WEB_DIR, "../web-react/locales"); diff --git a/apps/web/scripts/combine-locales.ts b/apps/web/scripts/combine-locales.ts index 350673e71..8f7c4ac26 100644 --- a/apps/web/scripts/combine-locales.ts +++ b/apps/web/scripts/combine-locales.ts @@ -2,7 +2,10 @@ import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; -const WEB_DIR = path.resolve(path.dirname(fileURLToPath(import.meta.url)), ".."); +const WEB_DIR = path.resolve( + path.dirname(fileURLToPath(import.meta.url)), + "..", +); const LOCALES_DIR = path.resolve(WEB_DIR, "../web-react/locales"); const OUTPUT_DIR = path.join(WEB_DIR, "messages"); diff --git a/apps/web/src/app.d.ts b/apps/web/src/app.d.ts index 279455a72..f8a52a9b0 100644 --- a/apps/web/src/app.d.ts +++ b/apps/web/src/app.d.ts @@ -11,5 +11,3 @@ declare global { // interface Platform {} } } - -export {}; diff --git a/apps/web/src/hooks.server.ts b/apps/web/src/hooks.server.ts index 9978adaaa..0458a9c6b 100644 --- a/apps/web/src/hooks.server.ts +++ b/apps/web/src/hooks.server.ts @@ -1,10 +1,10 @@ import type { Handle } from "@sveltejs/kit/hooks"; -import { userIsBanned } from "#lib/features/ban/banned.server.ts"; import { AUTH_COOKIE_NAME, readSessionCookie, sessionUserId, } from "#lib/features/auth/session.server.ts"; +import { userIsBanned } from "#lib/features/ban/banned.server.ts"; import { getTheme } from "#lib/features/theme/theme.server.ts"; import * as UserRepository from "#lib/features/user-page/UserRepository.server.ts"; import { paraglideMiddleware } from "#lib/paraglide/server.js"; diff --git a/apps/web/src/lib/components/Avatar.svelte b/apps/web/src/lib/components/Avatar.svelte index 3c4213648..165d6f48c 100644 --- a/apps/web/src/lib/components/Avatar.svelte +++ b/apps/web/src/lib/components/Avatar.svelte @@ -1,102 +1,102 @@ - let pendingRemoteRequests = $state(0); - let fetchPatched = false; +let pendingRemoteRequests = $state(0); +let fetchPatched = false; - // remote function calls go over plain fetch; counting the in-flight ones is - // what lets e2e (and the differ) wait for "router idle" after interactions - function patchFetchOnce() { - if (fetchPatched || typeof window === "undefined") return; - fetchPatched = true; +// remote function calls go over plain fetch; counting the in-flight ones is +// what lets e2e (and the differ) wait for "router idle" after interactions +function patchFetchOnce() { + if (fetchPatched || typeof window === "undefined") return; + fetchPatched = true; - const originalFetch = window.fetch.bind(window); - window.fetch = async (input, init) => { - const url = - typeof input === "string" - ? input - : input instanceof URL - ? input.href - : input.url; - const isAppRequest = url.includes("/_app/") || url.startsWith("/"); - if (isAppRequest) pendingRemoteRequests++; - try { - return await originalFetch(input, init); - } finally { - if (isAppRequest) pendingRemoteRequests--; - } - }; - } + const originalFetch = window.fetch.bind(window); + window.fetch = async (input, init) => { + const url = + typeof input === "string" + ? input + : input instanceof URL + ? input.href + : input.url; + const isAppRequest = url.includes("/_app/") || url.startsWith("/"); + if (isAppRequest) pendingRemoteRequests++; + try { + return await originalFetch(input, init); + } finally { + if (isAppRequest) pendingRemoteRequests--; + } + }; +} diff --git a/apps/web/src/lib/components/InfoPopover.svelte b/apps/web/src/lib/components/InfoPopover.svelte index abf074f44..2d8a3e9bd 100644 --- a/apps/web/src/lib/components/InfoPopover.svelte +++ b/apps/web/src/lib/components/InfoPopover.svelte @@ -1,14 +1,14 @@ diff --git a/apps/web/src/lib/components/Main.svelte b/apps/web/src/lib/components/Main.svelte index 26f043cea..b60c165b5 100644 --- a/apps/web/src/lib/components/Main.svelte +++ b/apps/web/src/lib/components/Main.svelte @@ -1,25 +1,25 @@
- import { page } from "$app/state"; - import { Config } from "#lib/config.ts"; - import { truncateBySentence } from "#lib/utils/strings.ts"; +import { Config } from "#lib/config.ts"; +import { truncateBySentence } from "#lib/utils/strings.ts"; +import { page } from "$app/state"; - interface Props { - title: string; - ogTitle?: string; - description?: string; - url?: string; - image?: { url: string; dimensions?: { width: number; height: number } }; - } +interface Props { + title: string; + ogTitle?: string; + description?: string; + url?: string; + image?: { url: string; dimensions?: { width: number; height: number } }; +} - let { title, ogTitle, description, url, image }: Props = $props(); +let { title, ogTitle, description, url, image }: Props = $props(); - const ROOT_URL = "https://sendou.ink"; - const COMMON_PREVIEW_IMAGE = `${Config.staticAssetsUrl}/img/layout/common-preview.png`; +const ROOT_URL = "https://sendou.ink"; +const COMMON_PREVIEW_IMAGE = `${Config.staticAssetsUrl}/img/layout/common-preview.png`; - const fullTitle = $derived( - title === "sendou.ink" ? title : `${title} | sendou.ink`, - ); - const truncatedDescription = $derived( - description ? truncateBySentence(description, 300) : null, - ); - const ogUrl = $derived(`${ROOT_URL}${url ?? page.url.pathname}`); +const fullTitle = $derived( + title === "sendou.ink" ? title : `${title} | sendou.ink`, +); +const truncatedDescription = $derived( + description ? truncateBySentence(description, 300) : null, +); +const ogUrl = $derived(`${ROOT_URL}${url ?? page.url.pathname}`); diff --git a/apps/web/src/lib/components/ModeImage.svelte b/apps/web/src/lib/components/ModeImage.svelte index ddaf7979e..57b675761 100644 --- a/apps/web/src/lib/components/ModeImage.svelte +++ b/apps/web/src/lib/components/ModeImage.svelte @@ -1,22 +1,22 @@ {label} diff --git a/apps/web/src/lib/components/NotificationDot.svelte b/apps/web/src/lib/components/NotificationDot.svelte index 70f53f802..de88581ff 100644 --- a/apps/web/src/lib/components/NotificationDot.svelte +++ b/apps/web/src/lib/components/NotificationDot.svelte @@ -1,10 +1,10 @@ diff --git a/apps/web/src/lib/components/Placement.svelte b/apps/web/src/lib/components/Placement.svelte index e4b75538a..57e032fd8 100644 --- a/apps/web/src/lib/components/Placement.svelte +++ b/apps/web/src/lib/components/Placement.svelte @@ -1,49 +1,49 @@ {#if !iconPath} diff --git a/apps/web/src/lib/components/PwaLinks.svelte b/apps/web/src/lib/components/PwaLinks.svelte index b80f97171..6de082577 100644 --- a/apps/web/src/lib/components/PwaLinks.svelte +++ b/apps/web/src/lib/components/PwaLinks.svelte @@ -1,10 +1,10 @@ diff --git a/apps/web/src/lib/components/TierImage.svelte b/apps/web/src/lib/components/TierImage.svelte index f87913e0e..72db1f20e 100644 --- a/apps/web/src/lib/components/TierImage.svelte +++ b/apps/web/src/lib/components/TierImage.svelte @@ -1,18 +1,18 @@
diff --git a/apps/web/src/lib/components/TierPill.svelte b/apps/web/src/lib/components/TierPill.svelte index 822ff726a..55d864046 100644 --- a/apps/web/src/lib/components/TierPill.svelte +++ b/apps/web/src/lib/components/TierPill.svelte @@ -1,29 +1,29 @@ {label} diff --git a/apps/web/src/lib/components/WeaponSelect.svelte b/apps/web/src/lib/components/WeaponSelect.svelte index 13bc5da92..2845f52a0 100644 --- a/apps/web/src/lib/components/WeaponSelect.svelte +++ b/apps/web/src/lib/components/WeaponSelect.svelte @@ -1,106 +1,106 @@ - import { Bell, ChevronRight } from "@lucide/svelte"; - import type { NotificationRow } from "#lib/components/layout/layout-types.ts"; - import { m } from "#lib/paraglide/messages.js"; - import { NOTIFICATIONS_URL } from "#lib/utils/urls.ts"; - import NotificationItem from "./NotificationItem.svelte"; +import { Bell, ChevronRight } from "@lucide/svelte"; +import type { NotificationRow } from "#lib/components/layout/layout-types.ts"; +import { m } from "#lib/paraglide/messages.js"; +import { NOTIFICATIONS_URL } from "#lib/utils/urls.ts"; +import NotificationItem from "./NotificationItem.svelte"; - const PEEK_COUNT = 6; +const PEEK_COUNT = 6; - interface Props { - notifications: NotificationRow[]; - unseenIds: number[]; - onClose?: () => void; - } +interface Props { + notifications: NotificationRow[]; + unseenIds: number[]; + onClose?: () => void; +} - let { notifications, unseenIds, onClose }: Props = $props(); +let { notifications, unseenIds, onClose }: Props = $props(); - // unseen highlights stay visible while the popover is open even though the - // rows get marked seen server-side the moment it opens - // svelte-ignore state_referenced_locally -- capturing the initial value is the point - const stickyUnseenIds = new Set(unseenIds); +// unseen highlights stay visible while the popover is open even though the +// rows get marked seen server-side the moment it opens +// svelte-ignore state_referenced_locally -- capturing the initial value is the point +const stickyUnseenIds = new Set(unseenIds);

diff --git a/apps/web/src/lib/features/notifications/components/NotificationItem.svelte b/apps/web/src/lib/features/notifications/components/NotificationItem.svelte index 07272b5b6..b9f8cc1f9 100644 --- a/apps/web/src/lib/features/notifications/components/NotificationItem.svelte +++ b/apps/web/src/lib/features/notifications/components/NotificationItem.svelte @@ -1,28 +1,28 @@ - import type { Theme } from "./theme.server.ts"; +import type { Theme } from "./theme.server.ts"; - interface Props { - /** The user's explicitly chosen theme from the theme cookie, `null` when following the system theme. */ - theme: Theme | null; - } +interface Props { + /** The user's explicitly chosen theme from the theme cookie, `null` when following the system theme. */ + theme: Theme | null; +} - let { theme }: Props = $props(); +let { theme }: Props = $props(); - const metaColorScheme = $derived( - theme === "light" ? "light dark" : "dark light", - ); +const metaColorScheme = $derived( + theme === "light" ? "light dark" : "dark light", +); - // applied before first paint when no explicit theme is set, so the page - // never flashes the wrong theme; the html class is otherwise SSR'd - const CLIENT_THEME_SCRIPT = ` +// applied before first paint when no explicit theme is set, so the page +// never flashes the wrong theme; the html class is otherwise SSR'd +const CLIENT_THEME_SCRIPT = ` ;(() => { const theme = window.matchMedia("(prefers-color-scheme: light)").matches ? 'light' diff --git a/apps/web/src/lib/features/tournament/SavedCalendarEventRepository.server.ts b/apps/web/src/lib/features/tournament/SavedCalendarEventRepository.server.ts index e2eb583ad..04865c8db 100644 --- a/apps/web/src/lib/features/tournament/SavedCalendarEventRepository.server.ts +++ b/apps/web/src/lib/features/tournament/SavedCalendarEventRepository.server.ts @@ -1,6 +1,6 @@ -import { db } from "#lib/server/db/sql.ts"; import type { ShowcaseCalendarEvent } from "#lib/features/calendar/calendar-types.ts"; import * as ShowcaseTournaments from "#lib/features/front-page/ShowcaseTournaments.server.ts"; +import { db } from "#lib/server/db/sql.ts"; async function findCalendarEventIdsByUserId(userId: number): Promise { const rows = await db diff --git a/apps/web/src/lib/features/tournament/TournamentRepository.server.ts b/apps/web/src/lib/features/tournament/TournamentRepository.server.ts index 41591a6d4..017244544 100644 --- a/apps/web/src/lib/features/tournament/TournamentRepository.server.ts +++ b/apps/web/src/lib/features/tournament/TournamentRepository.server.ts @@ -1,5 +1,5 @@ -import type { NotNull } from "kysely"; import type { Unwrapped } from "@sendou/utils/types"; +import type { NotNull } from "kysely"; import { db } from "#lib/server/db/sql.ts"; import { commonUserSelect, diff --git a/apps/web/src/lib/modules/search-params/search-params.test.ts b/apps/web/src/lib/modules/search-params/search-params.test.ts index 88cb5e43c..2bdd7cc8e 100644 --- a/apps/web/src/lib/modules/search-params/search-params.test.ts +++ b/apps/web/src/lib/modules/search-params/search-params.test.ts @@ -1,5 +1,5 @@ -import { describe, expect, test } from "vitest"; import * as v from "valibot"; +import { describe, expect, test } from "vitest"; import * as SearchParams from "./search-params.ts"; import { SP } from "./search-params.ts"; import { diff --git a/apps/web/src/lib/modules/search-params/search-params.ts b/apps/web/src/lib/modules/search-params/search-params.ts index 0708e302c..7c3a45fae 100644 --- a/apps/web/src/lib/modules/search-params/search-params.ts +++ b/apps/web/src/lib/modules/search-params/search-params.ts @@ -484,16 +484,13 @@ function deriveScalarBase(schema: AnyValiSchema): ScalarBase | null { if (schema.type === "boolean") return "boolean"; if (schema.type === "picklist" || schema.type === "enum") { - return uniformTypeOf( - (schema as unknown as { options: unknown[] }).options, - ); + return uniformTypeOf((schema as unknown as { options: unknown[] }).options); } if (schema.type === "literal") { return uniformTypeOf([(schema as unknown as { literal: unknown }).literal]); } if (schema.type === "union") { - const options = (schema as unknown as { options: AnyValiSchema[] }) - .options; + const options = (schema as unknown as { options: AnyValiSchema[] }).options; const bases = options.map(deriveScalarBase); if (bases[0] && bases.every((base) => base === bases[0])) { return bases[0]; diff --git a/apps/web/src/lib/server/db/tables.ts b/apps/web/src/lib/server/db/tables.ts index 4e5b734bd..ae59fadf6 100644 --- a/apps/web/src/lib/server/db/tables.ts +++ b/apps/web/src/lib/server/db/tables.ts @@ -1,7 +1,4 @@ -import type { - MainWeaponId, - ModeShort, -} from "@sendou/in-game-lists/types"; +import type { MainWeaponId, ModeShort } from "@sendou/in-game-lists/types"; import type { ColumnType, GeneratedAlways, @@ -9,20 +6,20 @@ import type { JSONColumnType, Selectable, } from "kysely"; -import type { AssociationVisibility } from "#lib/features/associations/associations-types.ts"; -import type { Notification as NotificationValue } from "#lib/features/notifications/notifications-types.ts"; -import type { - TournamentSettingsLite, - TournamentStaffRole, - TournamentTierNumber, -} from "#lib/features/tournament/tournament-types.ts"; import type { PeakXP, UserPreferences, XRankPlacementRegion, } from "#lib/db/tables-json.ts"; -import type { CustomTheme } from "#lib/features/theme/theme-types.ts"; +import type { AssociationVisibility } from "#lib/features/associations/associations-types.ts"; import type { SkillTeamIdentifier } from "#lib/features/mmr/mmr-utils.ts"; +import type { Notification as NotificationValue } from "#lib/features/notifications/notifications-types.ts"; +import type { CustomTheme } from "#lib/features/theme/theme-types.ts"; +import type { + TournamentSettingsLite, + TournamentStaffRole, + TournamentTierNumber, +} from "#lib/features/tournament/tournament-types.ts"; import type { UnifiedLanguageCode } from "#lib/modules/i18n/languages.ts"; /** diff --git a/apps/web/src/lib/utils/e2e.ts b/apps/web/src/lib/utils/e2e.ts index b562b7f2e..c427b29ca 100644 --- a/apps/web/src/lib/utils/e2e.ts +++ b/apps/web/src/lib/utils/e2e.ts @@ -1,5 +1,4 @@ export const IS_E2E_TEST_RUN = (typeof import.meta.env !== "undefined" && import.meta.env.VITE_E2E_TEST_RUN === "true") || - (typeof process !== "undefined" && - process.env.VITE_E2E_TEST_RUN === "true"); + (typeof process !== "undefined" && process.env.VITE_E2E_TEST_RUN === "true"); diff --git a/apps/web/src/routes/+error.svelte b/apps/web/src/routes/+error.svelte index 4cca49657..9fe6b2039 100644 --- a/apps/web/src/routes/+error.svelte +++ b/apps/web/src/routes/+error.svelte @@ -1,5 +1,5 @@
diff --git a/apps/web/src/routes/+layout.svelte b/apps/web/src/routes/+layout.svelte index 368e96eb3..f596f2ce6 100644 --- a/apps/web/src/routes/+layout.svelte +++ b/apps/web/src/routes/+layout.svelte @@ -1,35 +1,35 @@ diff --git a/apps/web/src/routes/auth/impersonate/+server.ts b/apps/web/src/routes/auth/impersonate/+server.ts index 010e835c9..44853ef35 100644 --- a/apps/web/src/routes/auth/impersonate/+server.ts +++ b/apps/web/src/routes/auth/impersonate/+server.ts @@ -1,5 +1,4 @@ import { error, redirect } from "@sveltejs/kit"; -import type { RequestHandler } from "./$types"; import { DANGEROUS_CAN_ACCESS_DEV_CONTROLS } from "#lib/features/admin/dev-controls.server.ts"; import { AUTH_COOKIE_NAME, @@ -8,8 +7,14 @@ import { readSessionCookie, writeSessionCookie, } from "#lib/features/auth/session.server.ts"; +import type { RequestHandler } from "./$types"; -export const POST: RequestHandler = async ({ request, url, cookies, locals }) => { +export const POST: RequestHandler = async ({ + request, + url, + cookies, + locals, +}) => { if (!DANGEROUS_CAN_ACCESS_DEV_CONTROLS) { const user = locals.user; const canImpersonate = @@ -27,11 +32,7 @@ export const POST: RequestHandler = async ({ request, url, cookies, locals }) => const session = readSessionCookie(cookies.get(AUTH_COOKIE_NAME)) ?? {}; session[IMPERSONATED_SESSION_KEY] = userId; - cookies.set( - AUTH_COOKIE_NAME, - writeSessionCookie(session), - authCookieOptions, - ); + cookies.set(AUTH_COOKIE_NAME, writeSessionCookie(session), authCookieOptions); const formData = await request.formData().catch(() => null); const returnTo = formData?.get("returnTo"); diff --git a/apps/web/src/routes/auth/impersonate/stop/+server.ts b/apps/web/src/routes/auth/impersonate/stop/+server.ts index 6f64e0d4b..5dcda5e10 100644 --- a/apps/web/src/routes/auth/impersonate/stop/+server.ts +++ b/apps/web/src/routes/auth/impersonate/stop/+server.ts @@ -1,5 +1,4 @@ import { redirect } from "@sveltejs/kit"; -import type { RequestHandler } from "./$types"; import { AUTH_COOKIE_NAME, authCookieOptions, @@ -7,15 +6,12 @@ import { readSessionCookie, writeSessionCookie, } from "#lib/features/auth/session.server.ts"; +import type { RequestHandler } from "./$types"; export const POST: RequestHandler = ({ cookies }) => { const session = readSessionCookie(cookies.get(AUTH_COOKIE_NAME)) ?? {}; delete session[IMPERSONATED_SESSION_KEY]; - cookies.set( - AUTH_COOKIE_NAME, - writeSessionCookie(session), - authCookieOptions, - ); + cookies.set(AUTH_COOKIE_NAME, writeSessionCookie(session), authCookieOptions); redirect(303, "/admin"); }; diff --git a/apps/web/src/routes/end-season/+server.ts b/apps/web/src/routes/end-season/+server.ts index f21379474..afafb3219 100644 --- a/apps/web/src/routes/end-season/+server.ts +++ b/apps/web/src/routes/end-season/+server.ts @@ -1,7 +1,7 @@ import { error, json } from "@sveltejs/kit"; -import type { RequestHandler } from "./$types"; import { DANGEROUS_CAN_ACCESS_DEV_CONTROLS } from "#lib/features/admin/dev-controls.server.ts"; import * as Seasons from "#lib/features/mmr/Seasons.ts"; +import type { RequestHandler } from "./$types"; export const POST: RequestHandler = () => { if (!DANGEROUS_CAN_ACCESS_DEV_CONTROLS) { diff --git a/apps/web/src/routes/leaderboards/+page.svelte b/apps/web/src/routes/leaderboards/+page.svelte index 7159a8ae6..b228fafae 100644 --- a/apps/web/src/routes/leaderboards/+page.svelte +++ b/apps/web/src/routes/leaderboards/+page.svelte @@ -1,6 +1,6 @@ { if (!DANGEROUS_CAN_ACCESS_DEV_CONTROLS) { diff --git a/apps/web/src/routes/run-routine/+server.ts b/apps/web/src/routes/run-routine/+server.ts index 0cd9e48e4..ef48b0b4e 100644 --- a/apps/web/src/routes/run-routine/+server.ts +++ b/apps/web/src/routes/run-routine/+server.ts @@ -1,6 +1,6 @@ import { error, json } from "@sveltejs/kit"; -import type { RequestHandler } from "./$types"; import { DANGEROUS_CAN_ACCESS_DEV_CONTROLS } from "#lib/features/admin/dev-controls.server.ts"; +import type { RequestHandler } from "./$types"; // grows as routines are ported with their features (svelte-big-bang.md phase 4+) const routines = new Map Promise>(); diff --git a/apps/web/src/routes/sidenav/+server.ts b/apps/web/src/routes/sidenav/+server.ts index ef9c00c21..c2c08907e 100644 --- a/apps/web/src/routes/sidenav/+server.ts +++ b/apps/web/src/routes/sidenav/+server.ts @@ -1,11 +1,11 @@ import { json } from "@sveltejs/kit"; -import type { RequestHandler } from "./$types"; import { readSessionCookie, writeSessionCookie, } from "#lib/features/auth/session.server.ts"; import { ServerConfig } from "#lib/server/config.ts"; import { IS_E2E_TEST_RUN } from "#lib/utils/e2e.ts"; +import type { RequestHandler } from "./$types"; const SIDENAV_COOKIE_NAME = "sidenav"; const TEN_YEARS_IN_SECONDS = 315_360_000; @@ -14,8 +14,7 @@ export const POST: RequestHandler = async ({ request, cookies }) => { const form = new URLSearchParams(await request.text()); const collapsed = form.get("collapsed") === "true"; - const session = - readSessionCookie(cookies.get(SIDENAV_COOKIE_NAME)) ?? {}; + const session = readSessionCookie(cookies.get(SIDENAV_COOKIE_NAME)) ?? {}; session.collapsed = collapsed; cookies.set(SIDENAV_COOKIE_NAME, writeSessionCookie(session), { secure: ServerConfig.isProduction && !IS_E2E_TEST_RUN, diff --git a/apps/web/src/routes/theme/+server.ts b/apps/web/src/routes/theme/+server.ts index 58cdd1a5b..4793f28e9 100644 --- a/apps/web/src/routes/theme/+server.ts +++ b/apps/web/src/routes/theme/+server.ts @@ -1,10 +1,10 @@ import { json } from "@sveltejs/kit"; -import type { RequestHandler } from "./$types"; import { clearTheme, isTheme, setTheme, } from "#lib/features/theme/theme.server.ts"; +import type { RequestHandler } from "./$types"; export const POST: RequestHandler = async ({ request, cookies }) => { const form = new URLSearchParams(await request.text()); diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index a97001178..31a21840b 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -12,7 +12,8 @@ export default defineConfig(({ mode }) => ({ project: "./project.inlang", outdir: "./src/lib/paraglide", strategy: ["cookie", "preferredLanguage", "baseLocale"], - outputStructure: mode === "production" ? "message-modules" : "locale-modules", + outputStructure: + mode === "production" ? "message-modules" : "locale-modules", }), sveltekit({ adapter: adapter(), diff --git a/biome.json b/biome.json index 34f9e6f40..05a6ee36b 100644 --- a/biome.json +++ b/biome.json @@ -8,6 +8,8 @@ "!apps/web-react/app/db/seed/data/placements.json", "!apps/web-react/app/features/scanner/tests/fixtures", "!apps/web-react/public/scanner/**/*", + "!apps/web/**/*", + "!packages/components/**/*", "!**/build/**/*", "!**/test-results/**/*", "!**/playwright-report/**/*", diff --git a/packages/components/src/Button.svelte b/packages/components/src/Button.svelte index e153abd23..14c1369c2 100644 --- a/packages/components/src/Button.svelte +++ b/packages/components/src/Button.svelte @@ -1,38 +1,38 @@