@telefonica/markdown-confluence-sync
Version:
Creates/updates/deletes Confluence pages based on markdown files in a directory. Supports Mermaid diagrams and per-page configuration using frontmatter metadata. Works great with Docusaurus
32 lines (31 loc) • 1.07 kB
JavaScript
// SPDX-FileCopyrightText: 2024 Telefónica Innovación Digital
// SPDX-License-Identifier: Apache-2.0
import { ZodError } from "zod";
/**
* UnifiedPlugin to validate FrontMatter metadata with given schema.
*
* @throws {Error} if the admonitions is not well constructed.
*
* @see {@link https://docusaurus.io/docs/markdown-features/admonitions | Docusaurus Admonitions}
*/
const remarkValidateFrontmatter = function remarkRemoveAdmonitions(schema) {
return function (_tree, file) {
try {
if (!file.data.frontmatter) {
file.data.frontmatter = {};
return;
}
file.data.frontmatter = schema.parse(file.data.frontmatter);
}
catch (e) {
if (e instanceof ZodError) {
const message = e.errors.map((error) => error.message).join("\n");
file.fail(message, undefined, "remark-validate-frontmatter");
}
else {
throw e;
}
}
};
};
export default remarkValidateFrontmatter;