{"record":{"id":"42f8e31392de65e6","repo":"toeverything/AFFiNE","slug":"preview-renderer-returned-invalid-svg","errorCode":null,"errorMessage":"Preview renderer returned invalid SVG.","messagePattern":"Preview renderer returned invalid SVG\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/frontend/core/src/modules/code-block-preview-renderer/bridge.ts","lineNumber":26,"sourceCode":"} from '@affine/core/modules/mermaid/renderer';\nimport type {\n  TypstRenderRequest,\n  TypstRenderResult,\n} from '@affine/core/modules/typst/renderer';\nimport { sanitizeSvg as sanitizeSvgDocument } from '@blocksuite/affine-shared/utils';\n\nexport function sanitizeSvg(svg: string): string {\n  return sanitizeSvgDocument(svg);\n}\n\nexport async function renderMermaidSvg(\n  request: MermaidRenderRequest\n): Promise<MermaidRenderResult> {\n  const rendered = await renderMermaidSvgBackend(request);\n\n  const sanitizedSvg = sanitizeSvg(rendered.svg);\n  if (!sanitizedSvg) {\n    throw new Error('Preview renderer returned invalid SVG.');\n  }\n  return { svg: sanitizedSvg };\n}\n\nexport async function renderTypstSvg(\n  request: TypstRenderRequest\n): Promise<TypstRenderResult> {\n  const rendered = await renderTypstSvgBackend(request);\n\n  const sanitizedSvg = sanitizeSvgDocument(rendered.svg);\n  if (!sanitizedSvg) {\n    throw new Error('Preview renderer returned invalid SVG.');\n  }\n  return { svg: sanitizedSvg };\n}\n","sourceCodeStart":8,"sourceCodeEnd":42,"githubUrl":"https://github.com/toeverything/AFFiNE/blob/b4c8548c09da21b2898443559a5b846f0ccf5dd8/packages/frontend/core/src/modules/code-block-preview-renderer/bridge.ts#L8-L42","documentation":"renderMermaidSvg throws when sanitizing the backend-rendered Mermaid SVG yields an empty string, meaning the sanitizer rejected the markup and no safe preview SVG can be returned to the code-block renderer.","triggerScenarios":"Thrown in renderMermaidSvg when the backend-rendered SVG is empty after sanitizeSvg processing, so no valid SVG preview can be returned.","commonSituations":"Occurs when a Mermaid (or code block) preview fails to render or the SVG is stripped by sanitization. Check the diagram syntax and retry rendering.","solutions":["Check the preview renderer output; ensure it returns well-formed SVG.","Update the renderer or the preview handler to produce valid markup."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b4c8548c09da21b2898443559a5b846f0ccf5dd8","analyzedAt":"2026-08-18T21:16:52.546Z","contentChangedAt":"2026-08-18T21:16:52.546Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}