From 9060291475aaadb5be2149213cfb647bb8381247 Mon Sep 17 00:00:00 2001 From: Elias Schneider Date: Tue, 28 Jul 2026 23:51:16 +0200 Subject: [PATCH] refactor: enforce eslint rules --- frontend/eslint.config.js | 6 +- frontend/package.json | 131 +++++++++--------- .../src/lib/components/audit-log-list.svelte | 10 +- .../src/lib/components/fade-wrapper.svelte | 2 +- .../form/auto-complete-input.svelte | 2 +- .../form/custom-claims-input.svelte | 6 +- .../lib/components/form/multi-select.svelte | 4 +- .../form/searchable-multi-select.svelte | 4 +- .../components/form/searchable-select.svelte | 2 +- .../lib/components/formatted-message.svelte | 2 +- frontend/src/lib/components/image-box.svelte | 2 +- .../lib/components/one-time-link-modal.svelte | 2 +- frontend/src/lib/components/scope-list.svelte | 2 +- frontend/src/lib/components/sidebar.svelte | 4 +- .../lib/components/signup/signup-form.svelte | 14 +- .../signup/signup-token-list-modal.svelte | 2 +- .../signup/signup-token-modal.svelte | 2 +- .../table/advanced-table-filter.svelte | 4 +- .../table/advanced-table-toolbar.svelte | 2 +- .../components/table/advanced-table.svelte | 12 +- .../src/lib/components/ui/tabs/tabs.svelte | 2 +- .../src/lib/services/app-config-service.ts | 4 +- frontend/src/lib/utils/style.ts | 2 - frontend/src/routes/device/+page.svelte | 4 +- .../src/routes/interaction/error/+page.svelte | 6 - .../src/routes/login/alternative/+page.svelte | 2 +- .../login/alternative/code/+page.svelte | 4 +- frontend/src/routes/settings/+layout.svelte | 5 +- frontend/src/routes/settings/+layout.ts | 2 +- .../src/routes/settings/account/+page.svelte | 2 +- .../settings/account/locale-picker.svelte | 2 +- .../settings/account/passkey-list.svelte | 2 +- .../admin/api-keys/api-key-form.svelte | 3 +- .../apis/[id]/api-permissions-input.svelte | 8 +- .../settings/admin/apis/api-list.svelte | 2 +- .../forms/accent-color-picker.svelte | 2 +- .../forms/app-config-email-form.svelte | 10 +- .../forms/app-config-general-form.svelte | 2 +- .../admin/oidc-clients/[id]/+page.svelte | 2 +- .../oidc-clients/[id]/api-access-card.svelte | 2 +- .../[id]/scim-resource-provider-form.svelte | 7 +- .../federated-identities-input.svelte | 6 +- .../oidc-callback-url-input.svelte | 2 +- .../oidc-clients/oidc-client-form.svelte | 13 +- .../oidc-clients/oidc-client-list.svelte | 2 +- .../oidc-client-preview-modal.svelte | 2 +- .../admin/user-groups/user-group-form.svelte | 2 +- .../users/[id]/admin-passkey-list.svelte | 2 +- .../src/routes/settings/apps/+page.svelte | 2 +- frontend/src/routes/signup/+page.svelte | 7 +- frontend/src/routes/signup/setup/+page.svelte | 8 +- pnpm-lock.yaml | 16 +++ 52 files changed, 174 insertions(+), 178 deletions(-) diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js index 6a416796..e79ee029 100644 --- a/frontend/eslint.config.js +++ b/frontend/eslint.config.js @@ -28,11 +28,13 @@ export default [ } }, { - ignores: ['build/', '.svelte-kit/', 'dist/'] + ignores: ['build/', '.svelte-kit/', 'dist/', 'src/lib/paraglide/', 'src/paraglide/'] }, { rules: { - '@typescript-eslint/no-explicit-any': 'off' + '@typescript-eslint/no-explicit-any': 'off', + // Pocket ID does not support deployments under a SvelteKit base path + 'svelte/no-navigation-without-resolve': 'off' } } ]; diff --git a/frontend/package.json b/frontend/package.json index 509d2c76..bcffc0d7 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,67 +1,68 @@ { - "name": "pocket-id-frontend", - "version": "2.11.0", - "private": true, - "type": "module", - "scripts": { - "preinstall": "npx only-allow pnpm", - "dev": "vite dev --port 3000", - "build": "vite build", - "preview": "vite preview --port 3000", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", - "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", - "lint": "prettier --check . && eslint .", - "format": "prettier --write ." - }, - "dependencies": { - "@opentelemetry/api": "^1.9.1", - "@opentelemetry/exporter-trace-otlp-http": "^0.220.0", - "@opentelemetry/resources": "^2.8.0", - "@opentelemetry/sdk-trace-web": "^2.8.0", - "@opentelemetry/semantic-conventions": "^1.41.1", - "@simplewebauthn/browser": "^13.3.0", - "@tailwindcss/vite": "^4.3.0", - "axios": "^1.16.1", - "clsx": "^2.1.1", - "date-fns": "^4.2.1", - "qrcode": "^1.5.4", - "runed": "^0.37.1", - "sveltekit-superforms": "^2.30.1", - "tailwind-merge": "^3.6.0", - "zod": "^4.4.3" - }, - "devDependencies": { - "@inlang/paraglide-js": "^2.18.0", - "@inlang/plugin-m-function-matcher": "^2.2.6", - "@inlang/plugin-message-format": "^4.4.0", - "@internationalized/date": "^3.12.1", - "@lucide/svelte": "^1.16.0", - "@sveltejs/adapter-static": "^3.0.10", - "@sveltejs/kit": "^2.60.1", - "@sveltejs/vite-plugin-svelte": "^7.1.2", - "@types/node": "^25.9.0", - "@types/qrcode": "^1.5.6", - "bits-ui": "^2.18.1", - "eslint": "^10.4.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-svelte": "^3.17.1", - "formsnap": "^2.0.1", - "globals": "^17.6.0", - "mode-watcher": "^1.1.0", - "prettier": "^3.8.3", - "prettier-plugin-svelte": "^3.5.2", - "prettier-plugin-tailwindcss": "^0.8.0", - "shadcn-svelte": "^1.3.0", - "svelte": "^5.55.8", - "svelte-check": "^4.4.8", - "svelte-sonner": "^1.1.1", - "tailwind-variants": "^3.2.2", - "tailwindcss": "^4.3.0", - "tslib": "^2.8.1", - "tw-animate-css": "^1.4.0", - "typescript": "^6.0.3", - "typescript-eslint": "^8.59.4", - "vite": "^8.0.16", - "vite-plugin-compression": "^0.5.1" - } + "name": "pocket-id-frontend", + "version": "2.11.0", + "private": true, + "type": "module", + "scripts": { + "preinstall": "npx only-allow pnpm", + "dev": "vite dev --port 3000", + "build": "vite build", + "preview": "vite preview --port 3000", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --check . && eslint .", + "format": "prettier --write ." + }, + "dependencies": { + "@opentelemetry/api": "^1.9.1", + "@opentelemetry/exporter-trace-otlp-http": "^0.220.0", + "@opentelemetry/resources": "^2.8.0", + "@opentelemetry/sdk-trace-web": "^2.8.0", + "@opentelemetry/semantic-conventions": "^1.41.1", + "@simplewebauthn/browser": "^13.3.0", + "@tailwindcss/vite": "^4.3.0", + "axios": "^1.16.1", + "clsx": "^2.1.1", + "date-fns": "^4.2.1", + "qrcode": "^1.5.4", + "runed": "^0.37.1", + "sveltekit-superforms": "^2.30.1", + "tailwind-merge": "^3.6.0", + "zod": "^4.4.3" + }, + "devDependencies": { + "@eslint/js": "^10.0.1", + "@inlang/paraglide-js": "^2.18.0", + "@inlang/plugin-m-function-matcher": "^2.2.6", + "@inlang/plugin-message-format": "^4.4.0", + "@internationalized/date": "^3.12.1", + "@lucide/svelte": "^1.16.0", + "@sveltejs/adapter-static": "^3.0.10", + "@sveltejs/kit": "^2.60.1", + "@sveltejs/vite-plugin-svelte": "^7.1.2", + "@types/node": "^25.9.0", + "@types/qrcode": "^1.5.6", + "bits-ui": "^2.18.1", + "eslint": "^10.4.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-svelte": "^3.17.1", + "formsnap": "^2.0.1", + "globals": "^17.6.0", + "mode-watcher": "^1.1.0", + "prettier": "^3.8.3", + "prettier-plugin-svelte": "^3.5.2", + "prettier-plugin-tailwindcss": "^0.8.0", + "shadcn-svelte": "^1.3.0", + "svelte": "^5.55.8", + "svelte-check": "^4.4.8", + "svelte-sonner": "^1.1.1", + "tailwind-variants": "^3.2.2", + "tailwindcss": "^4.3.0", + "tslib": "^2.8.1", + "tw-animate-css": "^1.4.0", + "typescript": "^6.0.3", + "typescript-eslint": "^8.59.4", + "vite": "^8.0.16", + "vite-plugin-compression": "^0.5.1" + } } diff --git a/frontend/src/lib/components/audit-log-list.svelte b/frontend/src/lib/components/audit-log-list.svelte index 1f33d6d4..30507cab 100644 --- a/frontend/src/lib/components/audit-log-list.svelte +++ b/frontend/src/lib/components/audit-log-list.svelte @@ -68,10 +68,10 @@ $effect(() => { if (filters) { - filters.userID; - filters.event; - filters.location; - filters.clientName; + void filters.userID; + void filters.event; + void filters.location; + void filters.clientName; untrack(() => tableRef?.refresh()); } }); @@ -94,7 +94,7 @@ if (!filters) return undefined; return Object.fromEntries( Object.entries(filters) - .filter(([_, value]) => value !== undefined && value !== null && value !== '') + .filter(([, value]) => value !== undefined && value !== null && value !== '') .map(([key, value]) => [key, [value]]) ); } diff --git a/frontend/src/lib/components/fade-wrapper.svelte b/frontend/src/lib/components/fade-wrapper.svelte index 63347b61..1e7ffc1f 100644 --- a/frontend/src/lib/components/fade-wrapper.svelte +++ b/frontend/src/lib/components/fade-wrapper.svelte @@ -16,7 +16,7 @@ let containerNode: HTMLElement | null = $state(null); $effect(() => { - page.route; + void page.route; applyAnimationDelays(); }); diff --git a/frontend/src/lib/components/form/auto-complete-input.svelte b/frontend/src/lib/components/form/auto-complete-input.svelte index 4d72ca7f..ccfd43a6 100644 --- a/frontend/src/lib/components/form/auto-complete-input.svelte +++ b/frontend/src/lib/components/form/auto-complete-input.svelte @@ -91,7 +91,7 @@ avoidCollisions={false} strategy="absolute" > - {#each filteredSuggestions as suggestion, index} + {#each filteredSuggestions as suggestion, index (suggestion)}
- {#each customClaims as _, i} + {#each customClaims as customClaim, i (customClaim)}
- + =24} + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + '@eslint/object-schema@3.0.5': resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} @@ -3366,6 +3378,10 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/js@10.0.1(eslint@10.7.0(jiti@2.7.0))': + optionalDependencies: + eslint: 10.7.0(jiti@2.7.0) + '@eslint/object-schema@3.0.5': {} '@eslint/plugin-kit@0.7.2':