mermaid-server/simple_post_fix.js

37 lines
1.1 KiB
JavaScript
Raw Permalink Normal View History

2025-05-24 11:59:34 +02:00
// Simple POST fix - back to basics with proper headers
export const code = async (inputs) => {
const { diagram, format } = inputs;
if (!diagram || !diagram.trim()) {
throw new Error("No Mermaid input provided");
}
// Ensure proper line endings (just normalize, don't over-process)
const cleanDiagram = diagram.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
console.log("Sending diagram (length: " + cleanDiagram.length + "):");
console.log(JSON.stringify(cleanDiagram));
const url = `https://diagrams.starbit.cloud/generate?type=${format}`;
const resp = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "text/plain",
"Content-Length": cleanDiagram.length.toString()
},
body: cleanDiagram
});
if (!resp.ok) {
const txt = await resp.text();
throw new Error(`Mermaid-server error ${resp.status}: ${txt}`);
}
const buffer = Buffer.from(await resp.arrayBuffer());
const mime = format === "png" ? "image/png" : "image/svg+xml";
const file = `data:${mime};base64,${buffer.toString("base64")}`;
return { file };
};