quickchart / lib /graphviz.js
glutamatt's picture
glutamatt HF Staff
Initial deployment of QuickChart service
ecdd7f6 verified
raw
history blame contribute delete
844 Bytes
const Viz = require('viz.js');
const { Module, render } = require('viz.js/full.render.js');
async function renderGraphviz(graphStr, opts) {
const { format, engine, width, height } = opts || {};
const viz = new Viz({ Module, render });
const result = await viz.renderString(graphStr, {
// Built-in format options don't work great. Hardcode to svg and convert it
// to other supported formats later.
format: 'svg',
engine,
});
if (format === 'png') {
// Defer require of sharp as it is not supported by docker container.
const sharp = require('sharp');
const img = sharp(Buffer.from(result));
if (width && height) {
img.resize({
width,
height,
fit: 'contain',
});
}
return img.png().toBuffer();
}
return result;
}
module.exports = {
renderGraphviz,
};