Format using Biome

This commit is contained in:
SKBotNL committed 2026-06-01 00:15:17 +02:00
1 parent 66a9d8d261
commit 12ba17d062
38 files changed
+205 -93

No files matched your search

+21
View File
@@ -0,0 +1,21 @@
{
"$schema": "https://biomejs.dev/schemas/2.4.16/schema.json",
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2,
"lineWidth": 80
},
"javascript": {
"formatter": {
"quoteStyle": "double",
"semicolons": "always"
}
}
}
+1
View File
@@ -11,6 +11,7 @@
},
"license": "MIT",
"devDependencies": {
"@biomejs/biome": "^2.4.16",
"@tailwindcss/postcss": "^4.1.13",
"baseline-browser-mapping": "^2.10.29",
"daisyui": "^5.5.19",
+91
View File
@@ -24,6 +24,9 @@ importers:
specifier: ^1.9.5
version: 1.9.9
devDependencies:
'@biomejs/biome':
specifier: ^2.4.16
version: 2.4.16
'@tailwindcss/postcss':
specifier: ^4.1.13
version: 4.1.13
@@ -145,6 +148,59 @@ packages:
resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==}
engines: {node: '>=6.9.0'}
'@biomejs/biome@2.4.16':
resolution: {integrity: sha512-x9ajFh1zChVybCiM3TN6OD4phAqLgtPZjFrZF+aTMYCPjwBO+k529TX7PPsAqtGNLeV4UgzwQnowEgS7bGmzcA==}
engines: {node: '>=14.21.3'}
hasBin: true
'@biomejs/cli-darwin-arm64@2.4.16':
resolution: {integrity: sha512-wxPvu4XOA85YJk9ixSWUmq/QBHbid85BISbOAqqBM/5xQpPk9ayjk5375tOlSC0BeCwNSbPFafQBm+vBumXq0A==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [darwin]
'@biomejs/cli-darwin-x64@2.4.16':
resolution: {integrity: sha512-xFCqGPwYusQJp4N4NJLi1XJiZqjwFdjhT+KqtNy+Ug3qgfczqnTa6MSDvxJF6TkuDLoYJItMapz6tAf7kCekFw==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [darwin]
'@biomejs/cli-linux-arm64-musl@2.4.16':
resolution: {integrity: sha512-oYxnW0ARfJkr72ezzF2OR8N/rtkgLUQeYtF8cFhVswbknHxtTcmzSsanVJP8yQKnGpGpc2ck6c5zLvHahL6Cbg==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
'@biomejs/cli-linux-arm64@2.4.16':
resolution: {integrity: sha512-2kFb4//jxfZaP6D+Rj5VkHkxgyD9EoRAVBEQb8PKRv+s4NO2zYNJKXFaJmK1CmhufJOWEfpHKaRbOja7qjmdhQ==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [linux]
'@biomejs/cli-linux-x64-musl@2.4.16':
resolution: {integrity: sha512-iHDS+MCM65DPqWGu+ECC3uoALyj2H7F4nVUPxIPjz/PIl94EUu+EDfGZDzFP+NY1EOPVt9NQvwFqq7HdMmowdg==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
'@biomejs/cli-linux-x64@2.4.16':
resolution: {integrity: sha512-NbcBbi/nJqn5baae6wqRXdS7Gadf2uRpehSh6vMSYpG8OhkXl/Xg8aorWrJ+9VWqAT5ml90alLvorkpMW0nBwQ==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [linux]
'@biomejs/cli-win32-arm64@2.4.16':
resolution: {integrity: sha512-0rgImMsNb5v/chhkIFe3wu7PEFClS6RBAYUijGL9UsYN3PanSaoK24HSSuSJb1pYbYYVjzAyZTl3gtjJ84BM8A==}
engines: {node: '>=14.21.3'}
cpu: [arm64]
os: [win32]
'@biomejs/cli-win32-x64@2.4.16':
resolution: {integrity: sha512-Kp85jgoBHa05gix6UIRjfCDiUV3w/8VIdZ247VyyO2gEjaw12WEVhdIjlxp/AMzXxqxQwbxNTDVZ3Mwd2RG5rw==}
engines: {node: '>=14.21.3'}
cpu: [x64]
os: [win32]
'@esbuild/aix-ppc64@0.25.11':
resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==}
engines: {node: '>=18'}
@@ -1294,6 +1350,41 @@ snapshots:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
'@biomejs/biome@2.4.16':
optionalDependencies:
'@biomejs/cli-darwin-arm64': 2.4.16
'@biomejs/cli-darwin-x64': 2.4.16
'@biomejs/cli-linux-arm64': 2.4.16
'@biomejs/cli-linux-arm64-musl': 2.4.16
'@biomejs/cli-linux-x64': 2.4.16
'@biomejs/cli-linux-x64-musl': 2.4.16
'@biomejs/cli-win32-arm64': 2.4.16
'@biomejs/cli-win32-x64': 2.4.16
'@biomejs/cli-darwin-arm64@2.4.16':
optional: true
'@biomejs/cli-darwin-x64@2.4.16':
optional: true
'@biomejs/cli-linux-arm64-musl@2.4.16':
optional: true
'@biomejs/cli-linux-arm64@2.4.16':
optional: true
'@biomejs/cli-linux-x64-musl@2.4.16':
optional: true
'@biomejs/cli-linux-x64@2.4.16':
optional: true
'@biomejs/cli-win32-arm64@2.4.16':
optional: true
'@biomejs/cli-win32-x64@2.4.16':
optional: true
'@esbuild/aix-ppc64@0.25.11':
optional: true
+1 -1
View File
@@ -1,5 +1,5 @@
export default {
plugins: {
'@tailwindcss/postcss': {},
"@tailwindcss/postcss": {},
},
};
+1 -1
View File
@@ -1,4 +1,4 @@
import { JSX, Suspense, type Component } from "solid-js";
import { type Component, type JSX, Suspense } from "solid-js";
const App: Component<{ children: JSX.Element }> = (props) => {
return (
+2 -2
View File
@@ -1,6 +1,6 @@
import { JSX, ErrorBoundary } from "solid-js";
import { AppError } from "../types/api";
import { ErrorBoundary, type JSX } from "solid-js";
import { t } from "../lib/i18n";
import { AppError } from "../types/api";
import Error from "./Error";
export default function AppErrorBoundaryComponent(props: {
+7 -7
View File
@@ -1,21 +1,21 @@
import { FiMenu, FiHome, FiUsers, FiUserPlus, FiLogOut } from "solid-icons/fi";
import { A } from "@solidjs/router";
import type { IconTypes } from "solid-icons";
import { FiHome, FiLogOut, FiMenu, FiUserPlus, FiUsers } from "solid-icons/fi";
import {
createEffect,
createMemo,
createSignal,
For,
ParentProps,
type ParentProps,
Show,
Suspense,
} from "solid-js";
import { A } from "@solidjs/router";
import { BASE_URL } from "../lib/api";
import { useUser } from "../store/auth";
import { dict, t } from "../lib/i18n";
import Loader from "./Loader";
import { throwIfFatal } from "../lib/error";
import { dict, t } from "../lib/i18n";
import { useUser } from "../store/auth";
import AppErrorBoundary from "./AppErrorBoundary";
import { IconTypes } from "solid-icons";
import Loader from "./Loader";
function App(props: ParentProps) {
const { user, error } = useUser();
+1 -1
View File
@@ -1,4 +1,4 @@
import { ParentProps, Show } from "solid-js";
import { type ParentProps, Show } from "solid-js";
import { dict, t } from "../lib/i18n";
import AppErrorBoundary from "./AppErrorBoundary";
+3 -3
View File
@@ -1,7 +1,7 @@
import { FiXCircle } from "solid-icons/fi";
import { t } from "../lib/i18n";
import { Show } from "solid-js";
import { useNavigate } from "@solidjs/router";
import { FiXCircle } from "solid-icons/fi";
import { Show } from "solid-js";
import { t } from "../lib/i18n";
export default function ErrorComponent({
text,
+2 -2
View File
@@ -1,6 +1,6 @@
import { Accessor, Setter } from "solid-js";
import { Role } from "../types/user";
import type { Accessor, Setter } from "solid-js";
import { t } from "../lib/i18n";
import type { Role } from "../types/user";
export default function RolePickerComponent({
role,
+1 -1
View File
@@ -1,8 +1,8 @@
import { createSignal } from "solid-js";
import { throwIfFatal } from "../../lib/error";
import { t } from "../../lib/i18n";
import { loginApi } from "../../lib/login";
import { AppError } from "../../types/api";
import { throwIfFatal } from "../../lib/error";
export default function CredentialsComponent({
loginChallenge,
+1 -1
View File
@@ -1,8 +1,8 @@
import { createSignal, onMount } from "solid-js";
import { throwIfFatal } from "../../lib/error";
import { t } from "../../lib/i18n";
import { loginApi } from "../../lib/login";
import { AppError } from "../../types/api";
import { throwIfFatal } from "../../lib/error";
export default function MinecraftCheckComponent({
loginChallenge,
+1 -1
View File
@@ -1,8 +1,8 @@
import { createSignal } from "solid-js";
import { throwIfFatal } from "../../lib/error";
import { t } from "../../lib/i18n";
import { loginApi } from "../../lib/login";
import { AppError } from "../../types/api";
import { throwIfFatal } from "../../lib/error";
export default function TotpComponent({
loginChallenge,
+3 -3
View File
@@ -1,8 +1,8 @@
import { createSignal } from "solid-js";
import { t } from "../../lib/i18n";
import { AppError } from "../../types/api";
import { setupApi } from "../../lib/setup";
import { throwIfFatal } from "../../lib/error";
import { t } from "../../lib/i18n";
import { setupApi } from "../../lib/setup";
import { AppError } from "../../types/api";
export default function DetailsComponent({
token,
+1 -1
View File
@@ -1,8 +1,8 @@
import { createSignal, onMount } from "solid-js";
import { throwIfFatal } from "../../lib/error";
import { t } from "../../lib/i18n";
import { setupApi } from "../../lib/setup";
import { AppError } from "../../types/api";
import { throwIfFatal } from "../../lib/error";
export default function MinecraftCheckComponent({
token,
+3 -3
View File
@@ -1,10 +1,10 @@
import { createAsync, useNavigate } from "@solidjs/router";
import { createSignal, Suspense } from "solid-js";
import { throwIfFatal } from "../../lib/error";
import { t } from "../../lib/i18n";
import { setupApi } from "../../lib/setup";
import { createSignal, Suspense } from "solid-js";
import Loader from "../Loader";
import { AppError } from "../../types/api";
import { throwIfFatal } from "../../lib/error";
import Loader from "../Loader";
function TotpSetup({ token }: { token: string }) {
const navigate = useNavigate();
+2 -3
View File
@@ -2,10 +2,9 @@
import "solid-devtools";
import "./index.css";
import { render } from "solid-js/web";
import App from "./app";
import { Router } from "@solidjs/router";
import { render } from "solid-js/web";
import App from "./app";
import { routes } from "./routes";
const root = document.getElementById("root");
+1 -1
View File
@@ -1,5 +1,5 @@
import { ApiError, AppError, MeData } from "../types/api";
import { t } from "../lib/i18n";
import { type ApiError, AppError, type MeData } from "../types/api";
export const BASE_URL = import.meta.env.VITE_API_URL;
if (!BASE_URL) throw new Error("VITE_API_URL not set");
+3 -3
View File
@@ -1,7 +1,7 @@
import { ApiError, AppError } from "../types/api";
import { ConsentData } from "../types/consent";
import { BASE_URL, isApiError } from "./api";
import { t } from "../lib/i18n";
import { type ApiError, AppError } from "../types/api";
import type { ConsentData } from "../types/consent";
import { BASE_URL, isApiError } from "./api";
export const consentApi = {
consentData: async (consentChallenge: string): Promise<ConsentData> => {
+1 -1
View File
@@ -1,4 +1,4 @@
import { Accessor } from "solid-js";
import type { Accessor } from "solid-js";
export function throwIfFatal(err: Accessor<Error | null>, clear: () => void) {
return () => {
+2 -2
View File
@@ -1,6 +1,6 @@
import { createSignal } from "solid-js";
import { createAsync } from "@solidjs/router";
import * as i18n from "@solid-primitives/i18n";
import { createAsync } from "@solidjs/router";
import { createSignal } from "solid-js";
/*
Assuming the dictionaries are in the following structure:
+3 -3
View File
@@ -1,7 +1,7 @@
import { ApiError, AppError } from "../types/api";
import { CreateInviteData, InviteData } from "../types/invite";
import { BASE_URL, isApiError, LOGIN_URL } from "./api";
import { t } from "../lib/i18n";
import { type ApiError, AppError } from "../types/api";
import type { CreateInviteData, InviteData } from "../types/invite";
import { BASE_URL, isApiError, LOGIN_URL } from "./api";
export const inviteApi = {
getAll: async (): Promise<InviteData[]> => {
+3 -3
View File
@@ -1,7 +1,7 @@
import { ApiError, AppError } from "../types/api";
import { BASE_URL, isApiError } from "./api";
import { t } from "../lib/i18n";
import { LoginData, LoginStage } from "../types/login";
import { type ApiError, AppError } from "../types/api";
import type { LoginData, LoginStage } from "../types/login";
import { BASE_URL, isApiError } from "./api";
export const loginApi = {
loginData: async (loginChallenge: string): Promise<LoginData> => {
+3 -3
View File
@@ -1,7 +1,7 @@
import { ApiError, AppError } from "../types/api";
import { BASE_URL, isApiError } from "./api";
import { t } from "../lib/i18n";
import { SetupStage, TotpData } from "../types/setup";
import { type ApiError, AppError } from "../types/api";
import type { SetupStage, TotpData } from "../types/setup";
import { BASE_URL, isApiError } from "./api";
export const setupApi = {
currentStage: async (token: string): Promise<SetupStage> => {
+3 -3
View File
@@ -1,7 +1,7 @@
import { ApiError, AppError } from "../types/api";
import { CreateUserData, UpdateUserData, UserData } from "../types/user";
import { BASE_URL, isApiError, LOGIN_URL } from "./api";
import { t } from "../lib/i18n";
import { type ApiError, AppError } from "../types/api";
import type { CreateUserData, UpdateUserData, UserData } from "../types/user";
import { BASE_URL, isApiError, LOGIN_URL } from "./api";
export const userApi = {
getAll: async (): Promise<UserData[]> => {
+2 -2
View File
@@ -1,7 +1,7 @@
import { query } from "@solidjs/router";
import { AppError } from "../types/api";
import { t } from "../lib/i18n";
import { consentApi } from "../lib/consent";
import { t } from "../lib/i18n";
import { AppError } from "../types/api";
export const getConsentData = query(
async (consentChallenge: string | string[] | undefined) => {
+4 -4
View File
@@ -1,9 +1,9 @@
import { createEffect, For, Show, Suspense } from "solid-js";
import { t } from "../lib/i18n";
import { createAsync, useSearchParams } from "@solidjs/router";
import { consentApi } from "../lib/consent";
import { getConsentData } from "./consent.data";
import { createEffect, For, Show, Suspense } from "solid-js";
import Loader from "../components/Loader";
import { consentApi } from "../lib/consent";
import { t } from "../lib/i18n";
import { getConsentData } from "./consent.data";
const scopeMap = new Map<string, () => string>([
["email", () => t("consent.scopes.emailRead")],
+10 -10
View File
@@ -1,16 +1,16 @@
import { FiPlus, FiX, FiCopy } from "solid-icons/fi";
import { createAsync, revalidate } from "@solidjs/router";
import { getInvites } from "./invites.data";
import { FiCopy, FiPlus, FiX } from "solid-icons/fi";
import { createSignal, For, Suspense } from "solid-js";
import { t } from "../lib/i18n";
import Loader from "../components/Loader";
import { inviteApi } from "../lib/invite";
import { AppError } from "../types/api";
import { getUsers } from "./user/users.data";
import { userApi } from "../lib/user";
import { InviteData } from "../types/invite";
import { throwIfFatal } from "../lib/error";
import AppErrorBoundary from "../components/AppErrorBoundary";
import Loader from "../components/Loader";
import { throwIfFatal } from "../lib/error";
import { t } from "../lib/i18n";
import { inviteApi } from "../lib/invite";
import { userApi } from "../lib/user";
import { AppError } from "../types/api";
import type { InviteData } from "../types/invite";
import { getInvites } from "./invites.data";
import { getUsers } from "./user/users.data";
function InviteRow({ invite }: { invite: InviteData }) {
const user = createAsync(() => userApi.get(invite.invitedUserId));
+2 -2
View File
@@ -1,7 +1,7 @@
import { query } from "@solidjs/router";
import { AppError } from "../types/api";
import { loginApi } from "../lib/login";
import { t } from "../lib/i18n";
import { loginApi } from "../lib/login";
import { AppError } from "../types/api";
export const getLoginData = query(
async (loginChallenge: string | string[] | undefined) => {
+4 -4
View File
@@ -1,4 +1,4 @@
import Credentials from "../components/login/Credentials";
import { createAsync, revalidate, useSearchParams } from "@solidjs/router";
import {
createEffect,
createMemo,
@@ -7,14 +7,14 @@ import {
Suspense,
Switch,
} from "solid-js";
import { createAsync, revalidate, useSearchParams } from "@solidjs/router";
import Loader from "../components/Loader";
import Credentials from "../components/login/Credentials";
import MinecraftCheck from "../components/login/MinecraftCheck";
import Totp from "../components/login/Totp";
import { t } from "../lib/i18n";
import { getLoginData } from "./login.data";
import Loader from "../components/Loader";
import { getStage } from "../lib/login";
import { AppError } from "../types/api";
import { getLoginData } from "./login.data";
export default function LoginPage() {
const [params] = useSearchParams();
+2 -2
View File
@@ -1,7 +1,7 @@
import { query } from "@solidjs/router";
import { AppError } from "../types/api";
import { setupApi } from "../lib/setup";
import { t } from "../lib/i18n";
import { setupApi } from "../lib/setup";
import { AppError } from "../types/api";
export const getSetupStage = query(
async (token: string | string[] | undefined) => {
+3 -3
View File
@@ -1,11 +1,11 @@
import { Match, Suspense, Switch } from "solid-js";
import { createAsync, revalidate, useSearchParams } from "@solidjs/router";
import { t } from "../lib/i18n";
import { Match, Suspense, Switch } from "solid-js";
import Loader from "../components/Loader";
import { getSetupStage } from "./setup.data";
import Details from "../components/setup/Details";
import MinecraftCheck from "../components/setup/MinecraftCheck";
import TotpSetup from "../components/setup/TotpSetup";
import { t } from "../lib/i18n";
import { getSetupStage } from "./setup.data";
export default function SetupPage() {
const [params] = useSearchParams();
+8 -8
View File
@@ -1,21 +1,21 @@
import { FiChevronLeft } from "solid-icons/fi";
import {
createAsync,
revalidate,
useNavigate,
useParams,
} from "@solidjs/router";
import { FiChevronLeft } from "solid-icons/fi";
import { createEffect, createSignal, Suspense } from "solid-js";
import { getUser } from "./user.data";
import AppErrorBoundary from "../../components/AppErrorBoundary";
import Loader from "../../components/Loader";
import RolePicker from "../../components/RolePicker";
import { throwIfFatal } from "../../lib/error";
import { t } from "../../lib/i18n";
import { userApi } from "../../lib/user";
import { Role } from "../../types/user";
import Loader from "../../components/Loader";
import { AppError } from "../../types/api";
import { throwIfFatal } from "../../lib/error";
import { useUser } from "../../store/auth";
import AppErrorBoundary from "../../components/AppErrorBoundary";
import RolePicker from "../../components/RolePicker";
import { AppError } from "../../types/api";
import type { Role } from "../../types/user";
import { getUser } from "./user.data";
function User() {
const authUser = useUser();
+1 -1
View File
@@ -8,7 +8,7 @@ import { throwIfFatal } from "../../lib/error";
import { t } from "../../lib/i18n";
import { userApi } from "../../lib/user";
import { AppError } from "../../types/api";
import { Role } from "../../types/user";
import type { Role } from "../../types/user";
import { getUsers } from "./users.data";
function Users() {
+3 -3
View File
@@ -1,11 +1,11 @@
import { lazy } from "solid-js";
import type { RouteDefinition } from "@solidjs/router";
import { lazy } from "solid-js";
import AppLayout from "./components/AppLayout";
import BasicLayout from "./components/BasicLayout";
import { preloadUsers } from "./pages/user/users.data";
import { preloadUser } from "./pages/user/user.data";
import { preloadInvites } from "./pages/invites.data";
import { preloadUser } from "./pages/user/user.data";
import { preloadUsers } from "./pages/user/users.data";
const Login = lazy(() => import("./pages/login"));
const Consent = lazy(() => import("./pages/consent"));
+1 -1
View File
@@ -1,6 +1,6 @@
import { createSignal } from "solid-js";
import { api } from "../lib/api";
import { AppError, MeData } from "../types/api";
import { AppError, type MeData } from "../types/api";
const [user, setUser] = createSignal<MeData | null>(null);
const [error, setError] = createSignal<Error | null>(null);
+2 -2
View File
@@ -15,6 +15,6 @@
// Type Checking & Safety
"strict": true,
"types": ["vite/client"],
},
"types": ["vite/client"]
}
}
+2 -2
View File
@@ -1,7 +1,7 @@
import { defineConfig } from "vite";
import tailwindcss from "@tailwindcss/vite";
import solidPlugin from "vite-plugin-solid";
import devtools from "solid-devtools/vite";
import { defineConfig } from "vite";
import solidPlugin from "vite-plugin-solid";
export default defineConfig({
plugins: [tailwindcss(), devtools(), solidPlugin()],