feat: add shared @sexy.pivoine.art/types package and fix type safety across frontend/backend
- Create packages/types with shared TypeScript domain model interfaces (User, Video, Model, Article, Comment, Recording, etc.) - Wire both frontend and backend packages to use @sexy.pivoine.art/types via workspace:* - Update backend Pothos objectRef types to use shared interfaces instead of inline types - Update frontend $lib/types.ts to re-export from shared package - Fix all type errors introduced by more accurate nullable types (avatar/banner as string|null UUIDs, author nullable, events/device_info as object[]) - Add artist_name to comment user select in backend resolver - Widen utility function signatures (getAssetUrl, getUserInitials, calcReadingTime) to accept null/undefined Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -510,7 +510,7 @@ const UPDATE_PROFILE_MUTATION = gql`
|
||||
}
|
||||
`;
|
||||
|
||||
export async function updateProfile(user: Partial<User>) {
|
||||
export async function updateProfile(user: Partial<User> & { password?: string }) {
|
||||
return loggedApiCall(
|
||||
"updateProfile",
|
||||
async () => {
|
||||
@@ -551,7 +551,7 @@ export async function getStats(fetchFn?: typeof globalThis.fetch) {
|
||||
|
||||
// Stub — Directus folder concept dropped
|
||||
export async function getFolders(_fetchFn?: typeof globalThis.fetch) {
|
||||
return loggedApiCall("getFolders", async () => []);
|
||||
return loggedApiCall("getFolders", async () => [] as { id: string; name: string }[]);
|
||||
}
|
||||
|
||||
// ─── Files ───────────────────────────────────────────────────────────────────
|
||||
@@ -618,6 +618,7 @@ export async function getCommentsForVideo(item: string, fetchFn?: typeof globalT
|
||||
id: string;
|
||||
first_name: string | null;
|
||||
last_name: string | null;
|
||||
artist_name: string | null;
|
||||
avatar: string | null;
|
||||
} | null;
|
||||
}[];
|
||||
|
||||
Reference in New Issue
Block a user