mirror of
https://github.com/ferrous-systems/embedded-trainings-2020.git
synced 2024-05-18 16:28:22 +00:00
a4ee38540d
We bundle markdown-it-kroki, which can add mermaid diagrams to marp slides using https://kroki.io.
28 lines
1,022 B
JavaScript
28 lines
1,022 B
JavaScript
'use strict';
|
|
|
|
const { deflateSync } = require('zlib');
|
|
const contract = require('./contract');
|
|
const support = require('./support');
|
|
|
|
function encode(diagram) {
|
|
return deflateSync(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
|
|
};
|