feat: move from gray-matter to front-matter

This commit is contained in:
2026-07-13 07:31:37 +05:00
parent 62862beb06
commit c8c9ed5f39
3 changed files with 70 additions and 96 deletions
+16 -14
View File
@@ -1,5 +1,6 @@
import matter from "gray-matter";
import { Task } from "@/model/task";
import fm from "front-matter";
import * as yaml from "js-yaml";
import { Task, TaskPriority, TaskStatus } from "@/model/task";
function toISO(value: unknown): string {
if (value instanceof Date) return value.toISOString();
@@ -8,17 +9,18 @@ function toISO(value: unknown): string {
}
export function parseTaskFile(content: string): Task {
const parsed = matter(content);
const parsed = fm<Record<string, unknown>>(content);
const data = parsed.attributes;
return {
id: parsed.data.id,
title: parsed.data.title,
description: parsed.content.trim(),
status: parsed.data.status ?? "todo",
priority: parsed.data.priority ?? "medium",
tags: parsed.data.tags ?? [],
assignee: parsed.data.assignee ?? "",
created: toISO(parsed.data.created),
updated: toISO(parsed.data.updated),
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",
tags: (data.tags as string[]) ?? [],
assignee: (data.assignee as string) ?? "",
created: toISO(data.created),
updated: toISO(data.updated),
};
}
@@ -34,6 +36,6 @@ export function serializeTask(task: Task): string {
updated: task.updated,
};
const content = matter.stringify(task.description, frontmatter);
return content;
const yamlStr = yaml.dump(frontmatter).trim();
return `---\n${yamlStr}\n---\n${task.description}`;
}