fixtures/flight-parcel/src/actions.ts TYPESCRIPT 76 lines View on github.com → Search inside
1'use server';23import fs from 'fs/promises';45export interface Todo {6  id: number;7  title: string;8  description: string;9  dueDate: string;10  isComplete: boolean;11}1213export async function getTodos(): Promise<Todo[]> {14  try {15    let contents = await fs.readFile('todos.json', 'utf8');16    return JSON.parse(contents);17  } catch {18    await fs.writeFile('todos.json', '[]');19    return [];20  }21}2223export async function getTodo(id: number): Promise<Todo | undefined> {24  let todos = await getTodos();25  return todos.find(todo => todo.id === id);26}2728export async function createTodo(formData: FormData) {29  let todos = await getTodos();30  let title = formData.get('title');31  let description = formData.get('description');32  let dueDate = formData.get('dueDate');33  let id = todos.length > 0 ? Math.max(...todos.map(todo => todo.id)) + 1 : 0;34  todos.push({35    id,36    title: typeof title === 'string' ? title : '',37    description: typeof description === 'string' ? description : '',38    dueDate: typeof dueDate === 'string' ? dueDate : new Date().toISOString(),39    isComplete: false,40  });41  await fs.writeFile('todos.json', JSON.stringify(todos));42}4344export async function updateTodo(id: number, formData: FormData) {45  let todos = await getTodos();46  let title = formData.get('title');47  let description = formData.get('description');48  let dueDate = formData.get('dueDate');49  let todo = todos.find(todo => todo.id === id);50  if (todo) {51    todo.title = typeof title === 'string' ? title : '';52    todo.description = typeof description === 'string' ? description : '';53    todo.dueDate =54      typeof dueDate === 'string' ? dueDate : new Date().toISOString();55    await fs.writeFile('todos.json', JSON.stringify(todos));56  }57}5859export async function setTodoComplete(id: number, isComplete: boolean) {60  let todos = await getTodos();61  let todo = todos.find(todo => todo.id === id);62  if (todo) {63    todo.isComplete = isComplete;64    await fs.writeFile('todos.json', JSON.stringify(todos));65  }66}6768export async function deleteTodo(id: number) {69  let todos = await getTodos();70  let index = todos.findIndex(todo => todo.id === id);71  if (index >= 0) {72    todos.splice(index, 1);73    await fs.writeFile('todos.json', JSON.stringify(todos));74  }75}

Findings

✓ No findings reported for this file.

Get this view in your editor

Same data, no extra tab — call code_get_file + code_get_findings over MCP from Claude/Cursor/Copilot.