39 lines
1.0 KiB
TypeScript
39 lines
1.0 KiB
TypeScript
// server/api/markdown2html.post.ts
|
|
import { defineEventHandler, readBody } from "h3";
|
|
import MarkdownIt from "markdown-it";
|
|
import type { NodeOutput } from "~/composables/worklfow/node/node.interface";
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
try {
|
|
// 获取请求体
|
|
const body = await readBody<{ markdown: string }>(event);
|
|
|
|
if (!body?.markdown) {
|
|
return { error: "Missing markdown content" };
|
|
}
|
|
|
|
// 初始化 Markdown-it
|
|
const md = new MarkdownIt({
|
|
html: true, // 支持 HTML 标签
|
|
linkify: true, // 自动识别 URL
|
|
typographer: true // 美化引号、破折号等
|
|
});
|
|
|
|
// 转换
|
|
const html = md.render(body.markdown);
|
|
|
|
/**
|
|
* 节点输出类型标准数据结构
|
|
*/
|
|
return {
|
|
output_content: [{
|
|
type: "text",
|
|
content: html
|
|
}]
|
|
} as NodeOutput;
|
|
} catch (err) {
|
|
console.error("Markdown to HTML conversion failed:", err);
|
|
return { error: "Conversion failed", details: err.message };
|
|
}
|
|
});
|