1import { erdToDot, ErdSyntaxError, parseErd } from '../languages/erd'2import { RenderError } from '../runtime/errors'3import type { RendererAdapter } from '../runtime/types'4import { renderGraphvizSource } from './graphviz'5import { edgeResult } from './types'67const VERSION = 'erd@0.2.1.0+graphviz@15.1.1'89export const erdAdapter: RendererAdapter = {10 id: 'erd',11 runtime: 'edge-wasm',12 version: VERSION,13 async render(request, signal) {14 if (signal.aborted) throw signal.reason15 if (Object.keys(request.options).length > 0) {16 throw new RenderError(400, 'invalid_options', 'ERD does not accept renderer options.')17 }18 try {19 const dot = erdToDot(parseErd(request.source))20 if (signal.aborted) throw signal.reason21 return edgeResult('erd', VERSION, await renderGraphvizSource(dot), 'edge-wasm')22 } catch (error) {23 if (error instanceof RenderError) throw error24 if (error instanceof ErdSyntaxError) throw new RenderError(422, 'render_failed', error.message)25 const message = error instanceof Error ? error.message : String(error)26 throw new RenderError(422, 'render_failed', message.slice(0, 500) || 'ERD could not render this source.')27 }28 },29}