fix: resolve all 47 svelte-check errors and 10 a11y warnings
Root cause 1 — OpenAPI types: add @Schema(requiredMode=REQUIRED) to
non-nullable fields on Person, Tag, Document, AppUser, UserGroup;
regenerate api.ts so required fields are no longer optional.
Root cause 2 — Stale types: api.ts regenerated, picking up the Tag
endpoint fix from commit 62189d8 (List<Tag> instead of List<String>).
Root cause 3 — openapi-fetch error pattern: replace `if (apiError)`
(broken when error type is never/undefined) with `if (!result.response.ok)`
across all +page.server.ts files. Cast error via `unknown` to satisfy TS.
Root cause 4 — FormData casts: add `as string` / `as string[]` to
FormData.get() / FormData.getAll() calls in admin/+page.server.ts.
Standalone fixes:
- +page.server.ts: return error field so home page template compiles
- documents/[id]/+page.svelte: type loadFile param, remove invalid iframe `type`
- conversations: type documents as Document[] instead of unknown[]
- persons/[id]: non-null assert person data after ok-check
a11y: aria-label on all icon-only buttons in TagInput and admin page,
replace invalid <label> with <p> for compound controls, remove autofocus.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -282,14 +282,14 @@ export interface components {
|
||||
schemas: {
|
||||
Tag: {
|
||||
/** Format: uuid */
|
||||
id?: string;
|
||||
name?: string;
|
||||
id: string;
|
||||
name: string;
|
||||
};
|
||||
Person: {
|
||||
/** Format: uuid */
|
||||
id?: string;
|
||||
firstName?: string;
|
||||
lastName?: string;
|
||||
id: string;
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
alias?: string;
|
||||
};
|
||||
DocumentUpdateDTO: {
|
||||
@@ -307,13 +307,13 @@ export interface components {
|
||||
};
|
||||
Document: {
|
||||
/** Format: uuid */
|
||||
id?: string;
|
||||
title?: string;
|
||||
id: string;
|
||||
title: string;
|
||||
filePath?: string;
|
||||
contentType?: string;
|
||||
originalFilename?: string;
|
||||
originalFilename: string;
|
||||
/** @enum {string} */
|
||||
status?: "PLACEHOLDER" | "UPLOADED" | "TRANSCRIBED" | "REVIEWED" | "ARCHIVED";
|
||||
status: "PLACEHOLDER" | "UPLOADED" | "TRANSCRIBED" | "REVIEWED" | "ARCHIVED";
|
||||
/** Format: date */
|
||||
documentDate?: string;
|
||||
location?: string;
|
||||
@@ -323,9 +323,9 @@ export interface components {
|
||||
transcription?: string;
|
||||
summary?: string;
|
||||
/** Format: date-time */
|
||||
createdAt?: string;
|
||||
createdAt: string;
|
||||
/** Format: date-time */
|
||||
updatedAt?: string;
|
||||
updatedAt: string;
|
||||
receivers?: components["schemas"]["Person"][];
|
||||
sender?: components["schemas"]["Person"];
|
||||
tags?: components["schemas"]["Tag"][];
|
||||
@@ -338,20 +338,20 @@ export interface components {
|
||||
};
|
||||
AppUser: {
|
||||
/** Format: uuid */
|
||||
id?: string;
|
||||
username?: string;
|
||||
id: string;
|
||||
username: string;
|
||||
password?: string;
|
||||
email?: string;
|
||||
enabled?: boolean;
|
||||
groups?: components["schemas"]["UserGroup"][];
|
||||
enabled: boolean;
|
||||
groups: components["schemas"]["UserGroup"][];
|
||||
/** Format: date-time */
|
||||
createdAt?: string;
|
||||
createdAt: string;
|
||||
};
|
||||
UserGroup: {
|
||||
/** Format: uuid */
|
||||
id?: string;
|
||||
name?: string;
|
||||
permissions?: string[];
|
||||
id: string;
|
||||
name: string;
|
||||
permissions: string[];
|
||||
};
|
||||
GroupDTO: {
|
||||
name?: string;
|
||||
@@ -738,7 +738,7 @@ export interface operations {
|
||||
[name: string]: unknown;
|
||||
};
|
||||
content: {
|
||||
"*/*": string[];
|
||||
"*/*": components["schemas"]["Tag"][];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user