fix(frontend): resolve svelte-check type errors

- vite-mock-plugin: define the missing MockFile type and annotate the
  MOCK_FILES / MOCK_TRASH arrays so restore (unshift) type-checks.
- categories/[id], tags/[id]: page.params.id is string | undefined under
  noUncheckedIndexedAccess — guard loadTags and default the TagRuleEditor
  tagId so the routes type-check.

svelte-check now reports 0 errors.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-10 14:49:17 +03:00
parent bcbe0b5e8c
commit 5b973cf534
3 changed files with 22 additions and 3 deletions
@@ -48,7 +48,8 @@
void loadTags(id, 0);
});
async function loadTags(id: string, startOffset: number) {
async function loadTags(id: string | undefined, startOffset: number) {
if (!id) return;
tagsLoading = true;
try {
const params = new URLSearchParams({
+1 -1
View File
@@ -172,7 +172,7 @@
<!-- Tag rules -->
<section class="section">
<h2 class="section-title">Implied tags</h2>
<TagRuleEditor {tagId} {rules} onRulesChange={(r) => (rules = r)} />
<TagRuleEditor tagId={tagId ?? ''} {rules} onRulesChange={(r) => (rules = r)} />
</section>
{/if}
+19 -1
View File
@@ -114,6 +114,24 @@ function mockThumbSvg(id: string): string {
</svg>`;
}
type MockFile = {
id: string;
original_name: string;
mime_type: string;
mime_extension: string;
content_datetime: string;
notes: string | null;
metadata: unknown;
exif: Record<string, unknown>;
phash: number | null;
creator_id: number;
creator_name: string;
is_public: boolean;
is_deleted: boolean;
created_at: string;
position?: number;
};
// Trash — pre-seeded with a few deleted files
const MOCK_TRASH: MockFile[] = Array.from({ length: 6 }, (_, i) => {
const mimes = ['image/jpeg', 'image/png', 'image/webp'];
@@ -139,7 +157,7 @@ const MOCK_TRASH: MockFile[] = Array.from({ length: 6 }, (_, i) => {
};
});
const MOCK_FILES = Array.from({ length: 75 }, (_, i) => {
const MOCK_FILES: MockFile[] = Array.from({ length: 75 }, (_, i) => {
const mimes = ['image/jpeg', 'image/png', 'image/webp', 'video/mp4'];
const exts = ['jpg', 'png', 'webp', 'mp4' ];
const mi = i % mimes.length;