package mermaidcdp ¶
import "go.abhg.dev/goldmark/mermaid/mermaidcdp"
Package mermaidcdp implements a server-side compiler for Mermaid diagrams that uses a headless Chromium-based browser to render the diagrams.
It's recommended to use this compiler instead of the CLI compiler for processes that render many diagrams.
Usage ¶
Build the compiler with New, and be sure to [Close] it when you're done.
compiler, err := mermaidcdp.New(&mermaidcdp.Config{ // ... }) if err != nil { // handle error } defer compiler.Close()
Install the compiler into your server-side renderer. Do this by setting the 'Compiler' field on mermaid.Extender or mermaid.ServerRenderer.
mermaid.Extender{ Compiler: compiler, // ... }
MermaidJS source code ¶
Compiler expects the MermaidJS source code supplied to it. This will typically be a minified version of the source code. You can download it from the MermaidJS GitHub repository or a CDN. For example, https://cdn.jsdelivr.net/npm/mermaid@10.6.0/dist/mermaid.min.js.
It is recommended that you download this once, and embed it into your program with go:embed.
import "embed" // for go:embed //go:embed mermaid.min.js var mermaidJSSource string
Then set it on the Config object you pass to New.
mermaidcdp.New(&mermaidcdp.Config{ JSSource: mermaidJSSource, })
Downloading MermaidJS source code ¶
As a convenience, you can use DownloadJSSource to download a minified copy of MermaidJS from a CDN programmatically.
mermaidcdp.DownloadJSSource(ctx, "10.6.0")
This is useful if you can't embed it into your program. For most users, embedding it is recommended.
Index ¶
- func DownloadJSSource(ctx context.Context, version string) (string, error)
- type Compiler
- type Config
Functions ¶
func DownloadJSSource ¶
func DownloadJSSource(ctx context.Context, version string) (string, error)
DownloadJSSource downloads and returns the specified version of MermaidJS from a CDN. Use this if you cannot bundle MermaidJS with your application.
version is the version of MermaidJS to download, without a "v" prefix. Example values are "10", "10.3.0".
Types ¶
type Compiler ¶
type Compiler struct { // contains filtered or unexported fields }
Compiler compiles Mermaid diagrams into SVGs.
func New ¶
func New(cfg *Config) (_ *Compiler, err error)
New builds a new Compiler with the provided configuration.
The returned Compiler must be closed with [Close] when it is no longer needed.
func (*Compiler) Close ¶
func (c *Compiler) Close() error
Close stops the compiler and releases any resources it holds. This method must be called when the compiler is no longer needed.
func (*Compiler) Compile ¶
func (c *Compiler) Compile(ctx context.Context, req *mermaid.CompileRequest) (*mermaid.CompileResponse, error)
Compile renders a Mermaid diagram into an SVG. The context controls how long the rendering is allowed to take.
Panics if the Compiler has already been closed.
type Config ¶
type Config struct { // JSSource is JavaScript code for MermaidJS as a string. // // This will normally be the contents of the mermaid.min.js file // acquired from https://mermaid.js.org/intro/#cdn. // // You can use DownloadJSSource if you don't haev it available. JSSource string // Theme to use for rendering. // // Values include "dark", "default", "forest", and "neutral". // See MermaidJS documentation for a full list. Theme string }
Config specifies the configuration for a Compiler.