refactor: move from union type to object enum

This commit is contained in:
2026-07-15 02:41:17 +05:00
parent 35465f581f
commit 84f64af62d
30 changed files with 490 additions and 193 deletions
+3 -7
View File
@@ -37,13 +37,9 @@ describe("markdown", () => {
});
it("fills defaults for missing fields", () => {
const content = [
"---",
'id: "abc"',
'title: "Minimal"',
"---",
"",
].join("\n");
const content = ["---", 'id: "abc"', 'title: "Minimal"', "---", ""].join(
"\n",
);
const task = parseTaskFile(content);
expect(task.id).toBe("abc");
+7 -3
View File
@@ -1,6 +1,8 @@
import fm from "front-matter";
import * as yaml from "js-yaml";
import { Task, TaskPriority, TaskStatus } from "@/model/task";
import { Task } from "@/model/task";
import { isTaskPriority, TaskPriority } from "@/model/taskPriority";
import { isTaskStatus, TaskStatus } from "@/model/taskStatus";
function toISO(value: unknown): string {
if (value instanceof Date) return value.toISOString();
@@ -15,8 +17,10 @@ export function parseTaskFile(content: string): Task {
id: data.id as string,
title: data.title as string,
description: parsed.body.trim(),
status: (data.status as TaskStatus) ?? "todo",
priority: (data.priority as TaskPriority) ?? "medium",
status: isTaskStatus(data.status) ? data.status : TaskStatus.TODO,
priority: isTaskPriority(data.priority)
? data.priority
: TaskPriority.MEDIUM,
tags: (data.tags as string[]) ?? [],
assignee: (data.assignee as string) ?? "",
created: toISO(data.created),