export interface TodoEntry { description: string; checked: boolean; } export type TodoList = TodoEntry[]; export class TodoClient { api: string; constructor(api: string) { this.api = api; } async addTodo(t: TodoEntry) { return await fetch(`${this.api}/todo`, { method: 'POST', credentials: 'include', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(t) }); } async listTodos() { return await fetch(`${this.api}/todo`, { credentials: 'include', }) } async patchTodo(id: number, checked: boolean) { return await fetch(`${this.api}/todo/${id}`, { method: 'PATCH', credentials: 'include', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({checked}) }) } async deleteTodo(id: number) { return await fetch(`${this.api}/todo/${id}`, { method: 'DELETE', credentials: 'include', }) } async logout() { return await fetch(`${this.api}/logout`, { credentials: 'include', }) } }