53 lines
1.2 KiB
TypeScript
53 lines
1.2 KiB
TypeScript
import { z } from 'zod';
|
|
|
|
export interface Account {
|
|
id: string; // UUID
|
|
name: string;
|
|
email: string;
|
|
backup_file?: string;
|
|
avatar_url?: string;
|
|
created_at: string;
|
|
last_used: string;
|
|
}
|
|
|
|
export interface AccountBackupData {
|
|
version: string; // Backup format version
|
|
account: Account;
|
|
data: {
|
|
// Key-value pairs from Antigravity database
|
|
antigravityAuthStatus?: string;
|
|
'jetskiStateSync.agentManagerInitState'?: string;
|
|
[key: string]: unknown;
|
|
};
|
|
}
|
|
|
|
export interface AccountInfo {
|
|
email: string;
|
|
name?: string;
|
|
isAuthenticated: boolean;
|
|
}
|
|
|
|
// Zod Schemas for validation
|
|
|
|
export const AccountSchema = z.object({
|
|
id: z.string(), // Relaxed from .uuid()
|
|
name: z.string(), // Relaxed from .min(1)
|
|
email: z.string(), // Relaxed from .email()
|
|
backup_file: z.string().optional(),
|
|
avatar_url: z.string().optional(),
|
|
created_at: z.string(),
|
|
last_used: z.string(),
|
|
});
|
|
|
|
export const AccountBackupDataSchema = z.object({
|
|
version: z.string(),
|
|
account: AccountSchema,
|
|
data: z.record(z.string(), z.any()),
|
|
});
|
|
|
|
export const AccountInfoSchema = z.object({
|
|
email: z.string(), // Allow empty string for unauthenticated state
|
|
name: z.string().optional(),
|
|
isAuthenticated: z.boolean(),
|
|
});
|