@kazumatu981/markdown-it-kroki
Version:
markdown-it kroki plugin.
28 lines (21 loc) • 1.03 kB
JavaScript
;
const { deflateSync } = require('zlib');
const contract = require('./contract');
const support = require('./support');
function encode(diagram) {
return deflateSync(Buffer.from(diagram), { level: 9 }).toString('base64url');
}
function generateUrl(entrypoint, lang, imgType, diagram) {
contract.toNonEmptyString(entrypoint, '\'entrypoint\' must be non-empty string.');
contract.toNonEmptyString(lang, '\'lang\' must be non-empty string.');
contract.toNonEmptyString(imgType, '\'imgType\' must be non-empty string.');
contract.toNonEmptyString(diagram, '\'diagram\' must be non-empty string.');
contract.toTrue(support.languageSupports(lang), 'Not Supported Diagram Language.');
contract.toTrue(support.imageFormatSupports(imgType), 'Not Supported Image Type.');
const api = `${lang}/${imgType}/${encode(diagram)}`;
return entrypoint.endsWith('/') ?
`${entrypoint}${api}` : `${entrypoint}/${api}`;
}
module.exports = {
encode, generateUrl
};